Mac SERVERUNIT_GoldAmmountForDeadBody: void __cdecl (pGame, pDeadBody, pUnit, nGoldAmmount)
Mac 0x001fc5c9 is "undefined (void)", convention unknown. Stack reads are exactly [EBP+8]..[EBP+0x14]: [EBP+0x14] gold amount (tested >0), then ITEMDROP_DropGoldPiles (0x001c5d78, (D2GameStrc* pGame, D2UnitStrc* unit, uint nGoldAmount, items, int* pCount, nMaxCount)) is called with pGame=[EBP+8], unit=[EBP+0x10], amount=[EBP+0x14], max 0x20 (0x001fc5ec-0x001fc62e); the resulting piles are then handled against [EBP+0xc] (0x001fc63c). No ECX/EDX on entry; plain RET 0x001fc6b8. Caller PLRMODES_CreateDeadBody stores four dwords [ESP]..[ESP+0xc] (0x001fcfa7-0x001fcfb6). Windows twin 0x0057f390 carries the same values (pGame, pUnit, pDeadBody, nGoldAmmount, nGoldPileCount); the Mac build passes four.
Changes 1, applied together
Set prototype
mac 0x001fc5c9signatureundefined SERVERUNIT_GoldAmmountForDeadBody(void)→void SERVERUNIT_GoldAmmountForDeadBody(D2GameStrc * pGame, D2UnitStrc * pDeadBody, D2UnitStrc * pUnit, uint32_t nGoldAmmount)conventionunknown→__cdecl