Mac SStrTokenize cursor and output are character pointers
Ghidra vmac 105 · 3bccb89
The complete Mac body independently proves two pointer contracts. Stack[4] is a char** cursor: 0001cda9/0001cdac dereference it to obtain a byte-scanned source address, and 0001ce90/0001ce93 store the advanced source pointer back. Stack[8] is a char* output: 0001ce5e/0001ce61 write bytes at base+length, and 0001ce89/0001ce8c write a NUL there. All three direct callers pass addresses of cursor variables, plus NULL/capacity 0 or separate character buffers/capacity 256. Retype only these two arguments, preserving names, five stack slots, cdecl, uint capacity and undefined return. DATA ref 006163bc is nonexecutable __LINKEDIT metadata. Static Ghidra memory was independently decoded on Windows; the Mac game was not executed.
Changes 2, applied together
Retype variable
mac 0x0001cd8c Stack[0x4]typeundefined4 *→char **Retype variable
mac 0x0001cd8c Stack[0x8]typeint→char *