Type 32 S2C client handlers' packet argument as the D2GSPacketSrv struct for their opcode
These client handlers take the packet as char * pBytes, so the source reads *(uint16_t*)(pBytes + 6), although each opcode already has a D2GSPacketSrv struct. This is the typing asked for in the review of 655 and applied for 0x65 and 0x8D in 797. Each handler is the slot for its opcode in the client handler table (007114d0, 12 bytes per entry: the opcode times 12 gives the entry, and the xrefs below check 19 of them). The dispatcher passes the packet bytes in ECX. Every offset each body reads was checked against the struct and lands on a field of the width used (for 0x11: dwUnitGUID at 2, the overlay id word at 6; for 0xA3: 13 reads, all fields). 0x27, 0x29 and 0x7E only pass the pointer on. The name pBytes is chosen, so it stays; pPacket would match 797. Left out: 0x5E and 0x8F, whose table slots point to other functions, and 0x9C and 0x9D, which share ECX with a second variable.
Changes 32, applied together
Retype variable
win 0x0045c8b0 ECXtypechar *→D2GSPacketSrv0x01 *Retype variable
win 0x0045cb90 ECXtypechar *→D2GSPacketSrv0x09 *Retype variable
win 0x0045cc10 ECXtypechar *→D2GSPacketSrv0x0A *Retype variable
win 0x0045d0f0 ECXtypechar *→D2GSPacketSrv0x11 *Retype variable
win 0x0045d160 ECXtypechar *→D2GSPacketSrv0x15 *Retype variable
win 0x0045d880 ECXtypechar *→D2GSPacketSrv0x20 *Retype variable
win 0x0045ddb0 ECXtypechar *→D2GSPacketSrv0x22_0x23 *Retype variable
win 0x0045de10 ECXtypechar *→D2GSPacketSrv0x23 *Retype variable
win 0x0045dfc0 ECXtypechar *→D2GSPacketSrv0x26 *Retype variable
win 0x0045e0a0 ECXtypechar *→D2GSPacketSrv0x27 *Retype variable
win 0x0045d3a0 ECXtypechar *→D2GSPacketSrv0x29 *Retype variable
win 0x0045e110 ECXtypechar *→D2GSPacketSrv0x2C *Retype variable
win 0x0045cbd0 ECXtypechar *→D2GSPacketSrv0x51 *Retype variable
win 0x0045e300 ECXtypechar *→D2GSPacketSrv0x53 *Retype variable
win 0x0045e400 ECXtypechar *→D2GSPacketSrv0x57 *Retype variable
win 0x0045e530 ECXtypechar *→D2GSPacketSrv0x5C *Retype variable
win 0x0045e540 ECXtypechar *→D2GSPacketSrv0x5D *Retype variable
win 0x0045e5d0 ECXtypechar *→D2GSPacketSrv0x5F *Retype variable
win 0x0045d390 ECXtypechar *→D2GSPacketSrv0x62 *Retype variable
win 0x0045e850 ECXtypechar *→D2GSPacketSrv0x79 *Retype variable
win 0x0045e8d0 ECXtypechar *→D2GSPacketSrv0x7B *Retype variable
win 0x0045e970 ECXtypechar *→D2GSPacketSrv0x7E *Retype variable
win 0x0045ea70 ECXtypechar *→D2GSPacketSrv0x8C *Retype variable
win 0x0045e580 ECXtypechar *→D2GSPacketSrv0x91 *Retype variable
win 0x0045d5e0 ECXtypechar *→D2GSPacketSrv0xA3 *Retype variable
win 0x0045d6a0 ECXtypechar *→D2GSPacketSrv0xA5 *Retype variable
win 0x0045ede0 ECXtypechar *→D2GSPacketSrv0xA7 *Retype variable
win 0x0045ee20 ECXtypechar *→D2GSPacketSrv0xA8 *Retype variable
win 0x0045ef60 ECXtypechar *→D2GSPacketSrv0xA9 *Retype variable
win 0x0045efa0 ECXtypechar *→D2GSPacketSrv0xAA *Retype variable
win 0x0045f120 ECXtypechar *→D2GSPacketSrv0xAB *Retype variable
win 0x0045f5f0 ECXtypechar *→D2GSPacketSrv0xAE *