REDIVIVUS

Proposals / #623

Mac SStrTokenize cursor and output are character pointers

applied · by Commit-Will · submitted 2026-11-01, applied 2026-11-01

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

  1. Retype variable mac 0x0001cd8c Stack[0x4]

    typeundefined4 *→char **
  2. Retype variable mac 0x0001cd8c Stack[0x8]

    typeint→char *