Files
BFM-decomp/cookbook/C0416.md
T

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.)