Restore the Mac arrow-modifier lookup's signed numeric return
Ghidra vmac 105 · 3bccb89
Mac 0018984c returns a signed 32-bit numeric selection ID, currently undefined4. Its complete 209-byte body explicitly defines full EAX as -1, 0, 27, 31 or 41 on every returning path; conservative CFG propagation yields no unknown value at its sole plain RET. All four callers pass a unit pointer and an integer output address. Two callers preserve the result unchanged through TEST EAX,EAX and JS before signed table bounds, independently proving signed interpretation; another checks the full -1 sentinel. Restore int, retaining the existing two stack arguments, names and cdecl ABI. The complete 164-byte Windows counterpart independently has the same stat selectors, output stores and return values under its existing int contract. All four Mac caller bodies and target bytes are independently decoded; original Windows bytes match the user-owned 1.14d executable. No enum identity, original typedef spelling or runtime behavior claim.
Changes 1, applied together
Set prototype
mac 0x0018984csignatureundefined4 SKILL_GetArrowModifierSkill(D2UnitStrc * pUnit, int * pnParam)→int SKILL_GetArrowModifierSkill(D2UnitStrc * pUnit, int * pnParam)convention__cdecl