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>