- R14 corrects cookbook §26 ('close=0 recovery exhausted'): recover_giant + the
whole-binary gate still banks a ~15-20%% tail. Banked 7 close=0 reach-134 fns
(func_80156ECC/80147E44/8015ADB0/801661CC/80166054/8012CFA8/8012A62C); dedup_propagate
--auto-from swept those + 7 pre-existing inline-matched bonus fns ×134 (14 total)
- the other ~33 close=0 are the genuine DEF-side loose-typing / masked-residual wall
- func_80132784 HARD-DEFER (hoist-vs-remat + register-lifetime-reuse not C-expressible)
- §28c distilled: close=0-not-exhausted recipe + the dedup_propagate registry-skip
recovery (register via append_groups; bytes were already check-all-correct)
- make check-all 136/136 byte-identical (R22); dedup 1619->1633 validated/0 failed;
0 NON_MATCHING (G4)
18 KiB
Worklist — remaining functions ranked by byte-weighted project gain
Generated by
tools/worklist.pyfrom.run/fuel_manifest.json+.run/backlog.jsonl. Ranked by byte-weighted gaingain_ins = reach × nins(fleet instructions made byte-identical once matched and propagated ×134 — the decomp.dev-comparable metric the giants move, NOT function-count).%rem= share of ALL remaining gain;cum%= running total (shows how few giants capture most of it).close= backlog match_one mismatch count (lower = nearer; blank = not yet attempted). Byte-gate (harvest_verify) is the sole arbiter (G3/P9).
Live stubs: 448 · total remaining gain: 1,764,334 ins (7,057,336 bytes ×-fleet)
Idiom-class summary (the groups)
| class | count | gain_ins | % of remaining |
|---|---|---|---|
| GIANT | 20 | 603,268 | 34.2% |
| STRUCT | 89 | 44,240 | 2.5% |
| PINS | 38 | 94,641 | 5.4% |
| WAVE | 256 | 927,207 | 52.6% |
| O0 | 9 | 4,750 | 0.3% |
| O1 | 1 | 4,556 | 0.3% |
| STUB | 35 | 85,672 | 4.9% |
Top 12 remaining gains (all classes)
| # | name | class | reach | nins | gain_ins | %rem | cum% | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_80144B9C | GIANT | 134 | 770 | 103180 | 5.85 | 5.8 | Y | main | -O0 cluster fn (prologue 21F0A003, fp-frame, all locals spilled+reloaded, load-delay nops). match_one compile… | .run/backlog_drafts/func_80144B9C.c |
|
| 2 | func_80132784 | GIANT | 134 | 400 | 53600 | 3.04 | 8.9 | Y | a | 240 | 240/400 — prologue+frame+Blk16+both GTE pipelines match through idx114; residual is else-branch pu pointer ($… | .run/backlog_drafts/func_80132784.c |
| 3 | func_8014EE14 | GIANT | 134 | 248 | 33232 | 1.88 | 10.8 | Y | main | 6 | §20 store-vs-load tie-break (x2 loops); frame/regalloc/control-flow/constants byte-exact; no pins/asm -> perm… | .run/backlog_drafts/func_8014EE14.c |
| 4 | func_80148094 | GIANT | 134 | 213 | 28542 | 1.62 | 12.4 | Y | main | 107 | ~39/213 residual (LCS), all in the sVar1>=0x201 clamp blocks: $v0/$v1 mflo regalloc swap + coupled branch-pol… | .run/backlog_drafts/func_80148094.c |
| 5 | func_801372B0 | GIANT | 134 | 207 | 27738 | 1.57 | 14.0 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 6 | func_8013A530 | GIANT | 134 | 204 | 27336 | 1.55 | 15.5 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 7 | func_801412A8 | GIANT | 134 | 198 | 26532 | 1.50 | 17.0 | Y | main | 154 | 154-mismatch near-miss (198/198 ins, structure+branches exact). Two irreducible gcc residuals: (1) HEAD: held… | .run/backlog_drafts/func_801412A8.c |
| 8 | func_801571C4 | GIANT | 134 | 198 | 26532 | 1.50 | 18.5 | Y | main | 24 | body byte-perfect + 9 callee-reg maps + frame 0x60; residual = prologue schedule order + local_40/38 slot swa… | .run/backlog_drafts/func_801571C4.c |
| 9 | func_80129CF8 | GIANT | 134 | 191 | 25594 | 1.45 | 20.0 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 10 | func_8012D098 | GIANT | 134 | 189 | 25326 | 1.44 | 21.4 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 11 | func_8013AF20 | GIANT | 134 | 185 | 24790 | 1.41 | 22.8 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 12 | func_8014EA4C | GIANT | 134 | 183 | 24522 | 1.39 | 24.2 | Y | main | 6 | raw close=6: D_801150D8=0 store between a0/a1 loads + abs($v1 move vs in-place negu) pressure-locked by buf[1… | .run/drafts-giants/func_8014EA4C.c |
GIANT hand-decomp queue — 20 fns, 34.2% of all remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_80144B9C | GIANT | 134 | 770 | 103180 | 5.85 | Y | main | -O0 cluster fn (prologue 21F0A003, fp-frame, all locals spilled+reloaded, load-delay nops). match_one compile… | .run/backlog_drafts/func_80144B9C.c |
|
| 2 | func_80132784 | GIANT | 134 | 400 | 53600 | 3.04 | Y | a | 240 | 240/400 — prologue+frame+Blk16+both GTE pipelines match through idx114; residual is else-branch pu pointer ($… | .run/backlog_drafts/func_80132784.c |
| 3 | func_8014EE14 | GIANT | 134 | 248 | 33232 | 1.88 | Y | main | 6 | §20 store-vs-load tie-break (x2 loops); frame/regalloc/control-flow/constants byte-exact; no pins/asm -> perm… | .run/backlog_drafts/func_8014EE14.c |
| 4 | func_80148094 | GIANT | 134 | 213 | 28542 | 1.62 | Y | main | 107 | ~39/213 residual (LCS), all in the sVar1>=0x201 clamp blocks: $v0/$v1 mflo regalloc swap + coupled branch-pol… | .run/backlog_drafts/func_80148094.c |
| 5 | func_801372B0 | GIANT | 134 | 207 | 27738 | 1.57 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 6 | func_8013A530 | GIANT | 134 | 204 | 27336 | 1.55 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 7 | func_801412A8 | GIANT | 134 | 198 | 26532 | 1.50 | Y | main | 154 | 154-mismatch near-miss (198/198 ins, structure+branches exact). Two irreducible gcc residuals: (1) HEAD: held… | .run/backlog_drafts/func_801412A8.c |
| 8 | func_801571C4 | GIANT | 134 | 198 | 26532 | 1.50 | Y | main | 24 | body byte-perfect + 9 callee-reg maps + frame 0x60; residual = prologue schedule order + local_40/38 slot swa… | .run/backlog_drafts/func_801571C4.c |
| 9 | func_80129CF8 | GIANT | 134 | 191 | 25594 | 1.45 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 10 | func_8012D098 | GIANT | 134 | 189 | 25326 | 1.44 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 11 | func_8013AF20 | GIANT | 134 | 185 | 24790 | 1.41 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 12 | func_8014EA4C | GIANT | 134 | 183 | 24522 | 1.39 | Y | main | 6 | raw close=6: D_801150D8=0 store between a0/a1 loads + abs($v1 move vs in-place negu) pressure-locked by buf[1… | .run/drafts-giants/func_8014EA4C.c |
| 13 | func_801392FC | GIANT | 134 | 182 | 24388 | 1.38 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 14 | func_8012EC04 | GIANT | 134 | 178 | 23852 | 1.35 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 15 | func_8014F74C | GIANT | 134 | 174 | 23316 | 1.32 | Y | main | 0 | none — MATCH (174 ins). Last mile: §5a volatile barrier blocked gcc jump-threading | .run/backlog_drafts/func_8014F74C.c |
| 16 | func_80178004 | GIANT | 134 | 165 | 22110 | 1.25 | Y | main | 0 | none — MATCH (full register pins per sibling func_80177EA4; running-ptr $s2 to stop unroll-rebase; | .run/backlog_drafts/func_80178004.c |
| 17 | func_80138ED0 | GIANT | 134 | 159 | 21306 | 1.21 | Y | a | won't compile standalone (loose-typing / missing decl) | ||
| 18 | func_80144090 | GIANT | 134 | 154 | 20636 | 1.17 | Y | main | 25 | raw close=25: caller-saved temp-reg coalescing in final ring-vertex block (iVar4 mflo->$a3 vs $v0; subu reuse… | .run/drafts-giants/func_80144090.c |
| 19 | func_80176D94 | GIANT | 134 | 152 | 20368 | 1.15 | Y | main | 63 | 63/152 — frame+prologue+4 calls+2x(801783D0/801777BC) MATCH (pins $s0=uVar2/$s2=param_2 + CSE-break barrier);… | .run/backlog_drafts/func_80176D94.c |
| 20 | func_801770E0 | GIANT | 134 | 152 | 20368 | 1.15 | Y | main | 53 | callee-saved regalloc EXACT (param_2->$s2, iVar6->$s1, uVar5/spill->$s0, consts 3/0xB8/0xFF->$s5/$s4/$s3). | .run/backlog_drafts/func_801770E0.c |
Idiom-group tables
STRUCT — 89 fns, 2.5% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_80137DD4 | STRUCT | 134 | 129 | 17286 | 0.98 | Y | a | 107 | regalloc fully matches (frame -0x30; s4/s3/s5=params, s2=mask, s1=ptr w/ in-place +0x24 reuse, s0=acc+reused … | .run/backlog_drafts/func_80137DD4.c |
| 2 | func_80132F40 | STRUCT | 134 | 72 | 9648 | 0.55 | Y | a | gcc gives src (sp+0x10) a 5th saved reg ($s3, frame 0x38 not 0x40); target rematerializes | .run/backlog_drafts/func_80132F40.c |
|
| 3 | func_801719A4 | STRUCT | 134 | 24 | 3216 | 0.18 | Y | main | 25 | none — MATCH (24 ins, relocation-masked) | .run/backlog_drafts/func_801719A4.c |
| 4 | func_8017C974 | STRUCT | 1 | 947 | 947 | 0.05 | Y | main | |||
| 5 | func_80178D40 | STRUCT | 1 | 890 | 890 | 0.05 | Y | main | |||
| 6 | func_8018103C | STRUCT | 1 | 579 | 579 | 0.03 | Y | main | |||
| 7 | func_8015AE2C | STRUCT | 1 | 562 | 562 | 0.03 | Y | main | |||
| 8 | func_8017A4AC | STRUCT | 1 | 536 | 536 | 0.03 | Y | main | |||
| 9 | func_8015A3C8 | STRUCT | 1 | 493 | 493 | 0.03 | Y | main | |||
| 10 | func_8013F350 | STRUCT | 1 | 490 | 490 | 0.03 | Y | main | |||
| 11 | func_801380E0 | STRUCT | 1 | 438 | 438 | 0.02 | n | a | |||
| 12 | func_80131340 | STRUCT | 1 | 424 | 424 | 0.02 | n | a |
(+77 more STRUCT fns — see .run/worklist.json)
PINS — 38 fns, 5.4% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_8014E5B4 | PINS | 134 | 59 | 7906 | 0.45 | Y | main | 23 | none — MATCH | .run/backlog_drafts/func_8014E5B4.c |
| 2 | func_80151C54 | PINS | 134 | 52 | 6968 | 0.39 | Y | main | none — MATCH (52 ins). Branch-polarity §3-T4: BD60 arm is fall-through (if !=1 && ==0x11), BC44 is else. | .run/backlog_drafts/func_80151C54.c |
|
| 3 | func_80136DFC | PINS | 134 | 50 | 6700 | 0.38 | Y | a | 0 | none — MATCH | .run/backlog_drafts/func_80136DFC.c |
| 4 | func_8015F380 | PINS | 134 | 50 | 6700 | 0.38 | Y | main | 0 | none — expect MATCH (single call-crossing local pinned to $s0) | .run/backlog_drafts/func_8015F380.c |
| 5 | func_80151B98 | PINS | 134 | 47 | 6298 | 0.36 | Y | main | none — MATCH | .run/backlog_drafts/func_80151B98.c |
|
| 6 | func_80129C40 | PINS | 134 | 46 | 6164 | 0.35 | Y | a | 0 | none — MATCH (array-of-struct %lo-fold for the two 3-element 0xA4-stride bases) | .run/backlog_drafts/func_80129C40.c |
| 7 | func_80163764 | PINS | 134 | 42 | 5628 | 0.32 | Y | main | 10 | none — MATCH (42 ins). pins $s2/$s1/$s0/$s3 + u32 counter (sltiu) + init order s2,s3,i,p | .run/backlog_drafts/func_80163764.c |
| 8 | func_801522CC | PINS | 134 | 41 | 5494 | 0.31 | Y | main | 0 | TBD — first compile; func_80153C18 canonical is (void) but target sets $a0=$s0 in its delay slot (call-site c… | .run/backlog_drafts/func_801522CC.c |
| 9 | func_80152C80 | PINS | 134 | 41 | 5494 | 0.31 | Y | main | none — MATCH expected (linear call/store sequence, no regalloc tension) | .run/backlog_drafts/func_80152C80.c |
|
| 10 | func_80146AFC | PINS | 134 | 40 | 5360 | 0.30 | Y | main | 13 | none — MATCH | .run/backlog_drafts/func_80146AFC.c |
| 11 | func_80131A34 | PINS | 134 | 37 | 4958 | 0.28 | Y | a | 3 | 3-off — (a) prologue saves $ra before $s0 (target: $s0 then $ra) and (b) return-0 path reuses $a1's proven-ze… | .run/backlog_drafts/func_80131A34.c |
| 12 | func_80151664 | PINS | 134 | 35 | 4690 | 0.27 | Y | main | 0 | none — MATCH (35 ins, relocation-masked); canonical externs kept, call-site casts only | .run/backlog_drafts/func_80151664.c |
(+26 more PINS fns — see .run/worklist.json)
WAVE — 256 fns, 52.6% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_80155800 | WAVE | 134 | 145 | 19430 | 1.10 | Y | main | won't compile standalone (loose-typing / missing decl) | .run/backlog_drafts/func_80155800.c |
|
| 2 | func_8014E048 | WAVE | 134 | 143 | 19162 | 1.09 | Y | main | won't compile standalone (loose-typing / missing decl) | .run/backlog_drafts/func_8014E048.c |
|
| 3 | func_8014F4C0 | WAVE | 134 | 141 | 18894 | 1.07 | Y | main | won't compile standalone (loose-typing / missing decl) | .run/backlog_drafts/func_8014F4C0.c |
|
| 4 | func_8014ADE0 | WAVE | 134 | 139 | 18626 | 1.06 | Y | main | 19 | 16 ins off — all compiler-internal ties: (1) 0xAAA8 const lands $v0 vs target $v1; | .run/backlog_drafts/func_8014ADE0.c |
| 5 | func_80174CB0 | WAVE | 134 | 123 | 16482 | 0.93 | Y | main | 0 | none — MATCH (match_one 123/123). Levers: (1) §21 one combined stack struct {s32 a[5]; ...} | .run/backlog_drafts/func_80174CB0.c |
| 6 | func_80167540 | WAVE | 134 | 117 | 15678 | 0.89 | Y | main | won't compile standalone (loose-typing / missing decl) | .run/backlog_drafts/func_80167540.c |
|
| 7 | func_801325B8 | WAVE | 134 | 113 | 15142 | 0.86 | Y | a | 4 | 4/113 — prologue save-order of the $s0(cur/p3) vs $s5(p1) pair; gcc emits | .run/backlog_drafts/func_801325B8.c |
| 8 | func_8014DD8C | WAVE | 134 | 108 | 14472 | 0.82 | Y | main | 83 | WAVE: 83 mismatch | .run/backlog_drafts/func_8014DD8C.c |
| 9 | func_8014E284 | WAVE | 134 | 108 | 14472 | 0.82 | Y | main | won't compile standalone (loose-typing / missing decl) | .run/backlog_drafts/func_8014E284.c |
|
| 10 | func_8012CC88 | WAVE | 134 | 105 | 14070 | 0.80 | Y | a | 0 | none — MATCH (105 ins, relocation-masked) | .run/backlog_drafts/func_8012CC88.c |
| 11 | func_80169228 | WAVE | 134 | 105 | 14070 | 0.80 | Y | main | 0 | none — MATCH (105 ins, relocation-masked). Key levers: arg0/p pinned $s1/$s0, | .run/backlog_drafts/func_80169228.c |
| 12 | func_80167714 | WAVE | 134 | 104 | 13936 | 0.79 | Y | main | 0 | none — MATCH (104 ins) | .run/backlog_drafts/func_80167714.c |
(+244 more WAVE fns — see .run/worklist.json)
O0 — 9 fns, 0.3% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_8013C08C | O0 | 134 | 27 | 3618 | 0.21 | Y | o0 | |||
| 2 | func_8013C414 | O0 | 1 | 329 | 329 | 0.02 | Y | o0 | |||
| 3 | func_8013B83C | O0 | 1 | 272 | 272 | 0.02 | Y | o0 | |||
| 4 | func_8013BD74 | O0 | 1 | 198 | 198 | 0.01 | Y | o0 | |||
| 5 | func_8013C0F8 | O0 | 1 | 154 | 154 | 0.01 | Y | o0 | |||
| 6 | func_8013B6A0 | O0 | 1 | 67 | 67 | 0.00 | Y | o0 | |||
| 7 | func_8013B598 | O0 | 1 | 66 | 66 | 0.00 | Y | o0 | |||
| 8 | func_8013BC7C | O0 | 1 | 24 | 24 | 0.00 | Y | o0 | |||
| 9 | func_8013BCDC | O0 | 1 | 22 | 22 | 0.00 | Y | o0 |
O1 — 1 fns, 0.3% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_80161A90 | O1 | 134 | 34 | 4556 | 0.26 | Y | main | none — MATCH (34 ins) at the overlay's STANDARD -O2 (match_one reports MATCH). NO -O1 split needed. | .run/backlog_drafts/func_80161A90.c |
STUB — 35 fns, 4.9% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_801330E0 | STUB | 134 | 110 | 14740 | 0.84 | Y | a | 79 | none — MATCH (110/110 words byte-identical via objcopy raw .text, reloc-masked on jal+%hi/%lo(D_800AF648)). m… | .run/backlog_drafts/func_801330E0.c |
| 2 | func_80158638 | STUB | 134 | 87 | 11658 | 0.66 | Y | main | 2 | none — MATCH (proxy); callee externs are plain func_, gate's canon/cast passes own them | .run/backlog_drafts/func_80158638.c |
| 3 | func_80173BC0 | STUB | 134 | 41 | 5494 | 0.31 | Y | main | none — MATCH. Keys: invert mask branch (else-block = 80174650 path so func_8013E588 | .run/backlog_drafts/func_80173BC0.c |
|
| 4 | func_8012A6D0 | STUB | 134 | 34 | 4556 | 0.26 | Y | a | 0 | none — MATCH (sum order p[2]^2 + p[0]^2, then ratan2(p1[1]-p2[1], (s16)dist)) | .run/backlog_drafts/func_8012A6D0.c |
| 5 | func_8012EFB8 | STUB | 134 | 32 | 4288 | 0.24 | Y | a | 11 | none — MATCH (32 ins, byte-verified via objdump -dz; match_one's default objdump elides the 2 consecutive rtp… | .run/backlog_drafts/func_8012EFB8.c |
| 6 | func_8015ADB0 | STUB | 134 | 31 | 4154 | 0.24 | Y | main | 0 | none — MATCH (simple straight-line: clamp byte field, 4 calls in order, global OR) | .run/backlog_drafts/func_8015ADB0.c |
| 7 | func_801661CC | STUB | 134 | 30 | 4020 | 0.23 | Y | main | 0 | none — MATCH (branch-polarity §3-T4: beqz fall-through = func_80146C3C arm; if(!=0){func_80146C3C}else{func_8… | .run/backlog_drafts/func_801661CC.c |
| 8 | func_8016BA68 | STUB | 134 | 29 | 3886 | 0.22 | Y | main | none — MATCH (29 ins, straight-line; lh narrow loads at call site) | .run/backlog_drafts/func_8016BA68.c |
|
| 9 | func_80160F00 | STUB | 134 | 28 | 3752 | 0.21 | Y | main | 0 | none — MATCH (straight-line STUB; $s0 holds param_1 across calls naturally) | .run/backlog_drafts/func_80160F00.c |
| 10 | func_80146C3C | STUB | 134 | 23 | 3082 | 0.17 | Y | main | 0 | none — MATCH | .run/backlog_drafts/func_80146C3C.c |
| 11 | func_80162CCC | STUB | 134 | 23 | 3082 | 0.17 | Y | main | 0 | none — MATCH expected; direct translation, psVar1 as u16* gives lhu, $s0=param_1 survives both calls | .run/backlog_drafts/func_80162CCC.c |
| 12 | func_80166244 | STUB | 134 | 22 | 2948 | 0.17 | Y | main | 0 | none — MATCH expected (single tail-call STUB) | .run/backlog_drafts/func_80166244.c |
(+23 more STUB fns — see .run/worklist.json)