Name item, object and shop parameters from their callees, and type two quest init arguments
Ghidra v1799 · 2663303
Most names come from the callee parameter the value reaches, counted from pushes and registers. Three need a note. INV_HandleShopAction: ShopAction's _2 is nonzero for a 500 ms click throttle and an immediate transaction, zero for the confirm path, so bSkipConfirm. Q04_InitializeCainGibbetObject and Q11_OnViperAmuletInit: Objects_InitFn07 and Objects_InitFn20 move their D2ObjectInitFnArg * from ECX to EDX and tail JMP in, so EDX is pInitArg, not D2UnitStrc **. MONSTER_SetAlignmentCallback: [EBP+8]+0x60 is the unit's inventory. Chosen names that look wrong: MONSTER_SetAlignmentCallback sets no alignment, it returns 3 unless the value is 4 or 5, then whether that inventory slot is empty; INV_HandleShopAction's nAction reaches ShopAction's dwItemCost. Left out: PLAYER_InteractWithUnit (callee name is a GUID-or-Y union), OrficeStaffCheck, INV_HandleShopAction's dwParam2.
Changes 20, applied together
Rename variable
win 0x004c2540 Stack[0x4]namenParam1→nAnimModeRename variable
win 0x004c2540 BXnamenParam12→nXRename variable
win 0x004c2540 DInamenParam22→nYRename variable
win 0x0055c9a0 Stack[0x4]namenParam→nUpdateTypeRename variable
win 0x00582420 EDInamedwParam→nClassIdRename variable
win 0x00582280 EDInamenParam→nMonsterIdRename variable
win 0x0058bec0 EDInamedwParam→nUnitGUIDRename variable
win 0x004db1e0 Stack[0x4]namebParam→nDirectionRename variable
win 0x00487ba0 Stack[0x8]namedwParam1→dwSellRename variable
win 0x00487ba0 ESInamedwParam3→bSkipConfirmRename variable
win 0x00487ba0 EAXnamedwParam4→dwModeRename variable
win 0x005492c0 Stack[0x4]namenParam1→pUnitRetype variable
win 0x005492c0 Stack[0x4]typeint32_t→D2UnitStrc *Rename variable
win 0x005492c0 EAXnamenParam2→nGridOffsetRename variable
win 0x0059a3f0 EDXnamenParam→pInitArgRetype variable
win 0x0059a3f0 EDXtypeD2UnitStrc * *→D2ObjectInitFnArg *Rename variable
win 0x00594060 EDXnamenParam2→pInitArgRetype variable
win 0x00594060 EDXtypeD2UnitStrc * *→D2ObjectInitFnArg *Rename variable
win 0x0065f6a0 Stack[0x8]namenParam1→pPropertyRename variable
win 0x0065f470 Stack[0x8]namenParam1→pProperty