mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
fd2433b6d2
The first agent of the one-at-a-time T7 loop, on the rank-1 head class (130 copies, two NEEDED pins $2/$3). Six mechanical rung-G runs had been stuck at best 1 on this body; the agent closed it at 0. - the move is not a dial: the iVar3/puVar2 pair that every arm of the if/else chain set is deleted, and each arm gets the whole address expression (puVar4 = &D_80192454 + (((u32)param_2) & 0xffff) * 0x14). Two locals fewer than the levered text — shorter AND byte-identical, which is what this phase is for. - mechanism, read from gcc 2.7.2's own source and confirmed in the .lreg/.greg dumps: scoping the base into the arm makes the block hold THREE local quantities instead of two, and block_alloc's unrolled case 3 (local-alloc.c:1491-1496) falls through into case 2 and applies qty_compare(0,1) a second time, undoing its own exchange — so the $2/$3 assignment flips (density formula local-alloc.c:1578-1596); deleting the cross-block variable also takes it out of global.c, where set_preference (global.c:1535+) had given it a copy preference for $5 through puVar4's argument copy, merged by expand_preferences (global.c:781-825) and overriding first-fit at global.c:1034-1067. - why the engine could not find it: the u16-width move six runs found is a local optimum that IMITATES the fix by manufacturing the third quantity while paying an andi. No generator in the registry deletes a variable, so the search could not leave that basin. That is the toolify target and it follows in its own commit (R16). - verified before banking (--try: score 0, mine 74 ins, target 74 — MATCH), then delever --apply-body: ... IDENTICAL on 1 object(s) (0.11 s) — KEPT, ledgered (rung E, a1) delever --propagate: 129 of 129 sibling(s) banked, 0 refused check-all: 218 passed, 0 failed of 218 lever_census --check: 30,098 pin/asm sites, 30,098 marked !FAKE, 0 UNMARKED — OK audit_public: OK — 0 offenders among 11445 tracked paths - snapshot row 10; the agent's body.c and mechanism.md kept in the pack as the reading behind the generator.