Recover Mac roster getter pointer and scalar return contracts
Ghidra vmac 109 · 39698f0
Three Mac roster getters have complete19/20/19-byte bodies but undefined returns and int pRoster inputs. Each already has one cdecl Stack4 pRoster formal; preserve that name, slot, arity and convention while typing D2RosterStrc*. Class reads DWORD+0x1c or returns0; GUID reads DWORD+0x10 or returns-1; level reads DWORD+0x24 or returns0. Every path defines full EAX, and all8 direct caller sites consume its32-bit value. Returns match existing Mac field types: int32_t class/GUID and eD2LevelId level. Complete raw Mac database bytes were independently decoded and matched to separate assembly for all targets, four callers and three producers; all41 PIC switch entries and all caller input/output dataflows were verified. Inputs resolve only to the typed roster head/next or GUID lookup. Additional xrefs are nonexecuting LINKEDIT ULEB metadata. No selected name, unused formal, shared layout or Windows ABI change; static proof only, no Mac runtime/build claim.
Changes 3, applied together
Set prototype
mac 0x0007556csignatureundefined ROSTER_GetClassId(int pRoster)→int32_t ROSTER_GetClassId(D2RosterStrc * pRoster)convention__cdeclSet prototype
mac 0x00075bdfsignatureundefined ROSTER_GetUnitId(int pRoster)→int32_t ROSTER_GetUnitId(D2RosterStrc * pRoster)convention__cdeclSet prototype
mac 0x00075cbfsignatureundefined ROSTER_GetLevelId(int pRoster)→eD2LevelId ROSTER_GetLevelId(D2RosterStrc * pRoster)convention__cdecl