mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-05 08:57:59 -04:00
884 B
884 B
§375 — AN $a0-$a3 PIN USED LATE RELOCATES AN EARLIER OUTGOING-CALL USE OF THAT REGISTER (P31 S68; main/func_8005F0C8, 88 ins)
The loop body is oracle-proven byte-exact once the base is fenced and p is pinned to $4. But that
pin hoists the earlier func_8005C2C8 argument copy ~26 slots early, identically across three
structural variants — block scope and declaration order make no difference.
The rule: a hard-register pin on an ARGUMENT register used LATE relocates any EARLIER outgoing-call
use of that same register to the earliest legal point. Argument-register pins are not local the way
$s-register pins are; they reach backwards past unrelated calls.
(The other residual on that function is §188's epilogue and is toolchain-unfixable — it is now in the
walls ledger. See the playbook §1b: check wall_sweep BEFORE escalating anything.)