Recover the least-recently-allocated cache primitive from the January
object: 0x3c-byte lra_cache ('lrac' signature, name, size,
base_address, malloced flag, last_block, update/delete procs) and
0x10-byte in-buffer lra_block headers ('Ablh' signature with locked
and deleted flag bits, user address pointer, size, forward chain).
Seven of fourteen functions are proven exact: lra_full, lra_new,
lra_dispose, lra_flush, the default update/delete callbacks and the
block-invalidate helper code_0010ba10 with its ESI/ECX register
convention. The remaining seven are byte-complete reconstructions
blocked on a single interlocked register-allocation choice (cache in
EBX versus EDI) shared by the verify helpers and their callers, plus
one callee-saved-count difference in lra_allocate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reconstruct three bounded functions in network_messages.obj against the
January target object:
initialize_network_game_packets 0x10 padded, 2 relocations
network_event 0x60 padded, 8 relocations
decode_network_game_message 0xa0 padded, 8 relocations
All three are proven exact by coff_compare.py: padded size, normalized
hash, and every relocation offset, type, resolved target and addend.
Parameter names and assert expressions are recovered from the target's
own assert strings. data_0030aa68 is declared with a named container
type following the initialize_key_agreement_packets convention, placing
the packet group at +0x830; its definition is deferred with the packet
definition table.
data_packet_group_decode_packet is declared in data_packet_groups.h,
whose parameter names come from the callee's assert strings.
data_packet_groups.h now includes cseries.h so it is self-sufficient for
translation units that include it without cseries.h first.
code_0011af00 (encode_network_game_message) is left dormant: it takes
message_struct, encoded_message and encoded_message_size in edi/ebx/esi
without saving them, so it uses a private register calling convention
that MSVC only selects with its sole caller, create_network_game_message,
present in the same translation unit.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>