From bce0cc66033315d779c455190efd1d5aae5eb86d Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Tue, 27 Oct 2026 21:09:06 +0000 Subject: [PATCH] Decompile fn_18368 (FillMessageBuckets) Batch #1207 by ragnarok-clanker: 0 byte-identical, 1 confirmed by peer review. - fn_18368 FillMessageBuckets: logic confirmed by peer review Peer-reviewed-by: eAthena Reviewed-by: ragnarok-clanker --- Source/Contents/MessageTable.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Source/Contents/MessageTable.cpp b/Source/Contents/MessageTable.cpp index 51b2248..893bb25 100644 --- a/Source/Contents/MessageTable.cpp +++ b/Source/Contents/MessageTable.cpp @@ -60,6 +60,30 @@ namespace { } // OFFSET: 0x00B00360 +// FUNCTION: fn_18368 +int FillMessageBuckets(int* first, std::uintptr_t last, int* value) { + int result = 0; + int* dest = first; + unsigned int count = (last - reinterpret_cast(first) + 3) >> 2; + if (reinterpret_cast(first) > last) { + count = 0; + } + if (count >= 4) { + result = *value; + if (first > value || &first[count - 1] < value) { + unsigned int aligned = count & ~3u; + dest = &first[aligned]; + for (int* p = first; p != dest; ++p) { + *p = result; + } + } + } + for (; dest != reinterpret_cast(last); ++dest) { + result = *value; + *dest = *value; + } + return result; +} struct MessageBucketVector { void* begin;