Type WAYPOINT_Init’s packet input as bytes
Ghidra v1797 · 3bccb89
ECX pPacket is a raw byte-buffer address. The sole 0x63 adapter copies five DWORDs plus one BYTE into a 24-byte scratch block, initializes bytes 0..20, then LEAs its base into ECX. The complete 124-byte target reads unaligned DWORD[base+1] and passes base+5 to CopyWaypointBits. The complete copy helper reads exactly 16 source bytes (four DWORDs), so every consumed byte is initialized by the adapter. Full adapter, target, copy-helper and final WAYPOINT_PopulateList tail-callee ranges match the original Windows PE. Retype only existing pPacket int32_t to uint8_t*, preserving its chosen name, ECX storage, fastcall and void return. The success path pops ESI then tail-jumps to the zero-argument list helper; both of its exits are bare RET, and the early target exit is also bare RET. No fixed array extent, new packet layout or runtime/byte-match benefit is claimed.
Changes 1, applied together
Retype variable
win 0x0049cf90 ECXtypeint32_t→uint8_t *