Files
BFM-decomp/docs/worklist.md
T
Drew T e64b3cbe41 docs(phase-30): T6 approved — P30 stays open; the measured-frontier continuation (S1-S5)
Drew's call (2026-08-01, P5d in-phase re-plan): gate 2 was reached and deliberately NOT taken —
closing now would strand roadmap-v2 bucket W3 (the overlay family mass) with no owner phase
(P31 = scope-complete/main/resident, P32 = walls/behemoths).

Order derived from the S29 frontier regen, ranked by TEMPLATABLE weight:
  S1 zero-crack propagation (29 families / 67,470 ins, ~0 agent tokens)
  S2 the LAST two reach-138 fresh cracks (func_80176734 51,198 + func_8016EC0C 12,144)
  S3 close=0 stored drafts as a DIAGNOSTIC pass (not a blind re-sweep)
  S4 PINS bounded wave (14 fns / 44,279 ins)
  S5 the x10-133 mid-multiplicity families (142,527 ins)
Excluded: the 2 GIANT walls (P32), the x2-9 mass, the x1 singleton residue.

THE PRICING FINDING (R14/R35): worklist.md ranks by h_exact reach, so a per-location PURE family
is priced x1 — under-pricing the frontier head by up to 138x. Byte-proof: S29's pair was priced
272 and 198 ins and delivered 37,536 + 27,324. func_80176734 (the single largest item on the
board) sits at rank ~50 in worklist.md. Rank family work by .run/family_hseq.json.

THE STRUCTURAL SIGNAL: after S2 the x138 era ENDS (last two crackable fleet-wide families);
everything after is <=133 members and mostly <=9. That cost-per-point rise, not a session count,
is P30's honest ROI floor and T5's trigger.
2026-08-01 08:20:41 -06:00

174 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Worklist — remaining functions ranked by byte-weighted project gain
> Generated by `tools/worklist.py` from `.run/fuel_manifest.json` + `.run/backlog.jsonl`. Ranked by **byte-weighted gain** `gain_ins = reach × nins` (fleet instructions made byte-identical once matched **and** propagated ×138 — 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:** 79 · **total remaining gain:** 187,366 ins (749,464 bytes ×-fleet)
## Idiom-class summary (the groups)
| class | count | gain_ins | % of remaining |
|-------|------:|---------:|---------------:|
| GIANT | 2 | 50,094 | 26.7% |
| STRUCT | 24 | 3,913 | 2.1% |
| PINS | 14 | 44,279 | 23.6% |
| WAVE | 35 | 72,796 | 38.9% |
| O1 | 1 | 4,692 | 2.5% |
| STUB | 3 | 11,592 | 6.2% |
## Top 40 remaining gains (all classes)
| # | name | class | reach | nins | gain_ins | %rem | cum% | cached | region | close | where it stuck | best draft |
|--:|------|-------|------:|-----:|---------:|-----:|-----:|--------|--------|------:|----------------|------------|
| 1 | func_801412A8 | GIANT | 138 | 198 | 27324 | 14.58 | 14.6 | Y | main | 110 | 110 mismatch (count-exact 198/198). S11 LUID(x)alloc: register-assignment permutation + prim2 store-schedule.… | `.run/backlog_drafts/func_801412A8.c` |
| 2 | func_80178004 | GIANT | 138 | 165 | 22770 | 12.15 | 26.7 | Y | jr_801734BC | 91 | [Phase-27 T8 corrected] close=91 pure local-alloc regalloc wall (§52 flagship; the 'MATCH' claim was a retrac… | `.run/backlog_drafts/func_80178004.c` |
| 3 | func_8014E5B4 | PINS | 138 | 59 | 8142 | 4.35 | 31.1 | Y | after | 23 | none — MATCH | `.run/backlog_drafts/func_8014E5B4.c` |
| 4 | func_8012B77C | WAVE | 138 | 58 | 8004 | 4.27 | 35.4 | Y | jr_8012ACE0 | 33 | gcc instruction-scheduler load-ordering + 1st-ratan2 delay-slot fill differ (s2 subtraction lands early inste… | `.run/backlog_drafts/func_8012B77C.c` |
| 5 | func_801758FC | WAVE | 138 | 55 | 7590 | 4.05 | 39.4 | Y | jr_801734BC | 0 | none — MATCH (55 ins) | `.run/backlog_drafts/func_801758FC.c` |
| 6 | func_80176144 | WAVE | 138 | 53 | 7314 | 3.90 | 43.3 | Y | jr_801734BC | 0 | none — MATCH | `.run/backlog_drafts/func_80176144.c` |
| 7 | func_801376E8 | WAVE | 138 | 51 | 7038 | 3.76 | 47.1 | Y | jr_80135D20 | 0 | none — MATCH (51 ins). 3 levers: (1) adjacent-field array u16 D_80126A14[] for A14/A16 | `.run/backlog_drafts/func_801376E8.c` |
| 8 | func_8014C4AC | WAVE | 138 | 47 | 6486 | 3.46 | 50.5 | Y | after | 0 | none — MATCH | `.run/backlog_drafts/func_8014C4AC.c` |
| 9 | func_80163764 | PINS | 138 | 42 | 5796 | 3.09 | 53.6 | Y | jr_8015C32C | 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` |
| 10 | func_80146AFC | PINS | 138 | 40 | 5520 | 2.95 | 56.6 | Y | after | 13 | none — MATCH | `.run/backlog_drafts/func_80146AFC.c` |
| 11 | func_80131A34 | PINS | 138 | 37 | 5106 | 2.73 | 59.3 | Y | jr_8012ACE0 | 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 | 138 | 35 | 4830 | 2.58 | 61.9 | Y | after | 0 | none — MATCH (35 ins, relocation-masked); canonical externs kept, call-site casts only | `.run/backlog_drafts/func_80151664.c` |
| 13 | func_80161A90 | O1 | 138 | 34 | 4692 | 2.50 | 64.4 | Y | jr_8015C32C | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_80161A90.c` |
| 14 | func_8012EFB8 | STUB | 138 | 32 | 4416 | 2.36 | 66.7 | Y | jr_8012ACE0 | 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` |
| 15 | func_80147364 | WAVE | 138 | 30 | 4140 | 2.21 | 68.9 | Y | after | 4 | none — MATCH (30 ins). Lever: hoist &D_80126B58 into a local ptr `u8 *p=&D_80126B58;` so gcc | `.run/backlog_drafts/func_80147364.c` |
| 16 | func_8016706C | WAVE | 138 | 30 | 4140 | 2.21 | 71.1 | Y | jr_8015C32C | 0 | none — MATCH (pending gate) | `.run/backlog_drafts/func_8016706C.c` |
| 17 | func_801708B0 | WAVE | 138 | 30 | 4140 | 2.21 | 73.4 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_801708B0.c` |
| 18 | func_80170CF0 | PINS | 138 | 30 | 4140 | 2.21 | 75.6 | Y | jr_8016AB6C | 17 | PINS: 17 mismatch | `.run/backlog_drafts/func_80170CF0.c` |
| 19 | func_8012F274 | WAVE | 138 | 29 | 4002 | 2.14 | 77.7 | Y | jr_8012ACE0 | 0 | none — MATCH (29 ins, match_one byte-clean via relocation-masked pipeline) | `.run/backlog_drafts/func_8012F274.c` |
| 20 | func_80131CF4 | WAVE | 138 | 29 | 4002 | 2.14 | 79.8 | Y | jr_8012ACE0 | 15 | 15 mismatches cascade from a 2-instruction gap — target reloads *param_1 (lw v0,0(a0)) into v0 before the loo… | `.run/backlog_drafts/func_80131CF4.c` |
| 21 | func_8016BA68 | STUB | 138 | 29 | 4002 | 2.14 | 82.0 | Y | jr_8016AB6C | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_8016BA68.c` |
| 22 | func_80168B70 | WAVE | 138 | 27 | 3726 | 1.99 | 84.0 | Y | jr_8015C32C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80168B70.c` |
| 23 | func_80137614 | WAVE | 138 | 26 | 3588 | 1.91 | 85.9 | Y | jr_80135D20 | 0 | none — MATCH (sibling func_8013767C pattern; all 3 params live across the call) | `.run/backlog_drafts/func_80137614.c` |
| 24 | func_8016130C | WAVE | 138 | 26 | 3588 | 1.91 | 87.8 | Y | jr_8015C32C | 9 | WAVE: 9 mismatch | `.run/backlog_drafts/func_8016130C.c` |
| 25 | func_8016F0E4 | PINS | 138 | 26 | 3588 | 1.91 | 89.7 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_8016F0E4.c` |
| 26 | func_80162CCC | STUB | 138 | 23 | 3174 | 1.69 | 91.4 | Y | jr_8015C32C | 0 | none — MATCH expected; direct translation, psVar1 as u16* gives lhu, $s0=param_1 survives both calls | `.run/backlog_drafts/func_80162CCC.c` |
| 27 | func_80131CA8 | PINS | 138 | 19 | 2622 | 1.40 | 92.8 | Y | jr_8012ACE0 | 0 | none — MATCH (call-through-fnptr dispatcher: explicit return 1/return 0) | `.run/backlog_drafts/func_80131CA8.c` |
| 28 | func_80146A6C | WAVE | 138 | 18 | 2484 | 1.33 | 94.1 | Y | after | 5 | none — MATCH | `.run/backlog_drafts/func_80146A6C.c` |
| 29 | func_80156600 | PINS | 138 | 18 | 2484 | 1.33 | 95.5 | Y | jr_80154C24 | | none — MATCH (simple counted scan, do-while form per Ghidra-C) | `.run/backlog_drafts/func_80156600.c` |
| 30 | func_80161208 | PINS | 138 | 14 | 1932 | 1.03 | 96.5 | Y | jr_8015C32C | 0 | none — MATCH expected (param saved across call → natural $s0, no pin needed) | `.run/backlog_drafts/func_80161208.c` |
| 31 | func_8017C974 | STRUCT | 1 | 947 | 947 | 0.51 | 97.0 | Y | jr_8017AE2C | | | |
| 32 | func_8018103C | STRUCT | 1 | 579 | 579 | 0.31 | 97.3 | Y | jr_8017AE2C | | | |
| 33 | func_8017C294 | WAVE | 2 | 246 | 492 | 0.26 | 97.6 | Y | jr_8017AE2C | 230 | structurally matched (246 ins, param_3 in $fp, spurious psVar7[1] giv killed via | `.run/backlog_drafts/func_8017C294.c` |
| 34 | func_80176734 | WAVE | 1 | 371 | 371 | 0.20 | 97.8 | Y | jr_801734BC | | | |
| 35 | func_80183324 | STRUCT | 1 | 324 | 324 | 0.17 | 97.9 | Y | jr_80182268 | | | |
| 36 | func_8017FD14 | STRUCT | 1 | 249 | 249 | 0.13 | 98.1 | Y | jr_8017AE2C | | | |
| 37 | func_80181BE4 | STRUCT | 1 | 201 | 201 | 0.11 | 98.2 | Y | jr_8017AE2C | | | |
| 38 | func_8017F7E8 | WAVE | 1 | 177 | 177 | 0.09 | 98.3 | Y | jr_8017AE2C | 11 | WAVE: 11 mismatch | `.run/backlog_drafts/func_8017F7E8.c` |
| 39 | func_80185BA4 | WAVE | 1 | 177 | 177 | 0.09 | 98.4 | Y | jr_80182268 | | won't compile standalone (loose-typing / missing decl) | |
| 40 | func_80186078 | WAVE | 1 | 174 | 174 | 0.09 | 98.5 | Y | jr_80182268 | | | |
## GIANT hand-decomp queue — 2 fns, 26.7% of all remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------|
| 1 | func_801412A8 | GIANT | 138 | 198 | 27324 | 14.58 | Y | main | 110 | 110 mismatch (count-exact 198/198). S11 LUID(x)alloc: register-assignment permutation + prim2 store-schedule.… | `.run/backlog_drafts/func_801412A8.c` |
| 2 | func_80178004 | GIANT | 138 | 165 | 22770 | 12.15 | Y | jr_801734BC | 91 | [Phase-27 T8 corrected] close=91 pure local-alloc regalloc wall (§52 flagship; the 'MATCH' claim was a retrac… | `.run/backlog_drafts/func_80178004.c` |
## Idiom-group tables
### STRUCT — 24 fns, 2.1% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------|
| 1 | func_8017C974 | STRUCT | 1 | 947 | 947 | 0.51 | Y | jr_8017AE2C | | | |
| 2 | func_8018103C | STRUCT | 1 | 579 | 579 | 0.31 | Y | jr_8017AE2C | | | |
| 3 | func_80183324 | STRUCT | 1 | 324 | 324 | 0.17 | Y | jr_80182268 | | | |
| 4 | func_8017FD14 | STRUCT | 1 | 249 | 249 | 0.13 | Y | jr_8017AE2C | | | |
| 5 | func_80181BE4 | STRUCT | 1 | 201 | 201 | 0.11 | Y | jr_8017AE2C | | | |
| 6 | func_8018308C | STRUCT | 1 | 166 | 166 | 0.09 | Y | jr_80182268 | | | |
| 7 | func_80180C90 | STRUCT | 1 | 160 | 160 | 0.09 | Y | jr_8017AE2C | | | |
| 8 | func_80183834 | STRUCT | 1 | 135 | 135 | 0.07 | Y | jr_80182268 | | | |
| 9 | func_80181948 | STRUCT | 1 | 132 | 132 | 0.07 | Y | jr_8017AE2C | | | |
| 10 | func_80185E68 | STRUCT | 1 | 132 | 132 | 0.07 | Y | jr_80182268 | 131 | STRUCT: 131 mismatch | `.run/backlog_drafts/func_80185E68.c` |
| 11 | func_80181F08 | STRUCT | 1 | 117 | 117 | 0.06 | Y | jr_8017AE2C | | | |
| 12 | func_80182C9C | STRUCT | 1 | 101 | 101 | 0.05 | Y | jr_80182268 | | none — MATCH (101 ins). Inner-switch break-to-shared-tail must be written as | `.run/backlog_drafts/func_80182C9C.c` |
| 13 | func_801820DC | STRUCT | 1 | 94 | 94 | 0.05 | Y | jr_8017AE2C | 0 | none — MATCH (switch on entity state at 0x34, inner jtbl on (s8)(u70>>8)) | `.run/backlog_drafts/func_801820DC.c` |
| 14 | func_80182E7C | STRUCT | 1 | 85 | 85 | 0.05 | Y | jr_80182268 | 0 | none — MATCH (85 ins, relocation-masked). Two switch-codegen levers: | `.run/backlog_drafts/func_80182E7C.c` |
| 15 | func_8018281C | STRUCT | 1 | 76 | 76 | 0.04 | Y | jr_80182268 | 0 | none — MATCH (76 ins). jtbl forced via explicit case 4/6 (count>=5 over MIPS tablejump threshold); case-5 blo… | `.run/backlog_drafts/func_8018281C.c` |
| 16 | func_80180B64 | STRUCT | 1 | 75 | 75 | 0.04 | Y | jr_8017AE2C | | none — MATCH (75 ins, relocation-masked) | `.run/backlog_drafts/func_80180B64.c` |
| 17 | func_80159A20 | STRUCT | 1 | 58 | 58 | 0.03 | Y | jr_801588CC | | none — MATCH. Key lever: block tail-MERGE (gcc shared `bne ...,$L1` cross-jump) by making the two return-test… | `.run/backlog_drafts/func_80159A20.c` |
| 18 | func_80183CF4 | STRUCT | 1 | 57 | 57 | 0.03 | Y | jr_80182268 | 0 | none — MATCH (clean switch + jtbl; orchestrator owns jtbl/rodata migration) | `.run/backlog_drafts/func_80183CF4.c` |
| 19 | func_80183AF0 | STRUCT | 1 | 47 | 47 | 0.03 | Y | jr_80182268 | 0 | none — MATCH (mask pinned $a1/$5 + p pinned $v0/$2; switch w/ distributed func_8012C218 tail via dup calls + … | `.run/backlog_drafts/func_80183AF0.c` |
| 20 | func_80183BAC | STRUCT | 1 | 41 | 41 | 0.02 | Y | jr_80182268 | 0 | switch jump-table dispatch (jtbl_801D9420); verifying case grouping 0,1,2,5,6/3,7/4 emits the target table + … | `.run/backlog_drafts/func_80183BAC.c` |
| 21 | func_80183C50 | STRUCT | 1 | 41 | 41 | 0.02 | Y | jr_80182268 | 0 | none — MATCH (cross-jump exploit §cookbook L1543: dup func_8012C218 into case3/7 + case4 → merged jal;nop) | `.run/backlog_drafts/func_80183C50.c` |
| 22 | func_801754A8 | STRUCT | 1 | 37 | 37 | 0.02 | Y | jr_801734BC | 0 | none — MATCH (37 ins, relocation-masked proxy) | `.run/backlog_drafts/func_801754A8.c` |
| 23 | func_801549F8 | STRUCT | 1 | 31 | 31 | 0.02 | Y | jr_8015444C | 0 | none — MATCH (31 ins). Re-tie barrier on the index defeats gcc's pointer-giv | `.run/backlog_drafts/func_801549F8.c` |
| 24 | func_80142A10 | STRUCT | 1 | 28 | 28 | 0.01 | Y | main | 1 | none — MATCH (pending byte-gate) | `.run/backlog_drafts/func_80142A10.c` |
### PINS — 14 fns, 23.6% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------|
| 1 | func_8014E5B4 | PINS | 138 | 59 | 8142 | 4.35 | Y | after | 23 | none — MATCH | `.run/backlog_drafts/func_8014E5B4.c` |
| 2 | func_80163764 | PINS | 138 | 42 | 5796 | 3.09 | Y | jr_8015C32C | 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` |
| 3 | func_80146AFC | PINS | 138 | 40 | 5520 | 2.95 | Y | after | 13 | none — MATCH | `.run/backlog_drafts/func_80146AFC.c` |
| 4 | func_80131A34 | PINS | 138 | 37 | 5106 | 2.73 | Y | jr_8012ACE0 | 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` |
| 5 | func_80151664 | PINS | 138 | 35 | 4830 | 2.58 | Y | after | 0 | none — MATCH (35 ins, relocation-masked); canonical externs kept, call-site casts only | `.run/backlog_drafts/func_80151664.c` |
| 6 | func_80170CF0 | PINS | 138 | 30 | 4140 | 2.21 | Y | jr_8016AB6C | 17 | PINS: 17 mismatch | `.run/backlog_drafts/func_80170CF0.c` |
| 7 | func_8016F0E4 | PINS | 138 | 26 | 3588 | 1.91 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_8016F0E4.c` |
| 8 | func_80131CA8 | PINS | 138 | 19 | 2622 | 1.40 | Y | jr_8012ACE0 | 0 | none — MATCH (call-through-fnptr dispatcher: explicit return 1/return 0) | `.run/backlog_drafts/func_80131CA8.c` |
| 9 | func_80156600 | PINS | 138 | 18 | 2484 | 1.33 | Y | jr_80154C24 | | none — MATCH (simple counted scan, do-while form per Ghidra-C) | `.run/backlog_drafts/func_80156600.c` |
| 10 | func_80161208 | PINS | 138 | 14 | 1932 | 1.03 | Y | jr_8015C32C | 0 | none — MATCH expected (param saved across call → natural $s0, no pin needed) | `.run/backlog_drafts/func_80161208.c` |
| 11 | func_80184C0C | PINS | 1 | 48 | 48 | 0.03 | Y | jr_80182268 | 1 | none — MATCH (array-of-struct %lo-fold for &D_8018AEB8[idx], stride 0x34) | `.run/backlog_drafts/func_80184C0C.c` |
| 12 | func_80161C24 | PINS | 1 | 29 | 29 | 0.02 | Y | jr_8015C32C | 1 | none — MATCH (array-of-struct %lo-fold; even/odd u16 fields at off 0/2, stride 4) | `.run/backlog_drafts/func_80161C24.c` |
| 13 | func_80182988 | PINS | 1 | 22 | 22 | 0.01 | Y | jr_80182268 | 0 | none — MATCH (u16 store of 0xAA10 forces ori, not sign-extended addiu) | `.run/backlog_drafts/func_80182988.c` |
| 14 | func_80161CD0 | PINS | 1 | 20 | 20 | 0.01 | Y | jr_8015C32C | 14 | param_2 must survive the call in $s0; try plain C first then pin to $16 | `.run/backlog_drafts/func_80161CD0.c` |
### WAVE — 35 fns, 38.9% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------|
| 1 | func_8012B77C | WAVE | 138 | 58 | 8004 | 4.27 | Y | jr_8012ACE0 | 33 | gcc instruction-scheduler load-ordering + 1st-ratan2 delay-slot fill differ (s2 subtraction lands early inste… | `.run/backlog_drafts/func_8012B77C.c` |
| 2 | func_801758FC | WAVE | 138 | 55 | 7590 | 4.05 | Y | jr_801734BC | 0 | none — MATCH (55 ins) | `.run/backlog_drafts/func_801758FC.c` |
| 3 | func_80176144 | WAVE | 138 | 53 | 7314 | 3.90 | Y | jr_801734BC | 0 | none — MATCH | `.run/backlog_drafts/func_80176144.c` |
| 4 | func_801376E8 | WAVE | 138 | 51 | 7038 | 3.76 | Y | jr_80135D20 | 0 | none — MATCH (51 ins). 3 levers: (1) adjacent-field array u16 D_80126A14[] for A14/A16 | `.run/backlog_drafts/func_801376E8.c` |
| 5 | func_8014C4AC | WAVE | 138 | 47 | 6486 | 3.46 | Y | after | 0 | none — MATCH | `.run/backlog_drafts/func_8014C4AC.c` |
| 6 | func_80147364 | WAVE | 138 | 30 | 4140 | 2.21 | Y | after | 4 | none — MATCH (30 ins). Lever: hoist &D_80126B58 into a local ptr `u8 *p=&D_80126B58;` so gcc | `.run/backlog_drafts/func_80147364.c` |
| 7 | func_8016706C | WAVE | 138 | 30 | 4140 | 2.21 | Y | jr_8015C32C | 0 | none — MATCH (pending gate) | `.run/backlog_drafts/func_8016706C.c` |
| 8 | func_801708B0 | WAVE | 138 | 30 | 4140 | 2.21 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_801708B0.c` |
| 9 | func_8012F274 | WAVE | 138 | 29 | 4002 | 2.14 | Y | jr_8012ACE0 | 0 | none — MATCH (29 ins, match_one byte-clean via relocation-masked pipeline) | `.run/backlog_drafts/func_8012F274.c` |
| 10 | func_80131CF4 | WAVE | 138 | 29 | 4002 | 2.14 | Y | jr_8012ACE0 | 15 | 15 mismatches cascade from a 2-instruction gap — target reloads *param_1 (lw v0,0(a0)) into v0 before the loo… | `.run/backlog_drafts/func_80131CF4.c` |
| 11 | func_80168B70 | WAVE | 138 | 27 | 3726 | 1.99 | Y | jr_8015C32C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80168B70.c` |
| 12 | func_80137614 | WAVE | 138 | 26 | 3588 | 1.91 | Y | jr_80135D20 | 0 | none — MATCH (sibling func_8013767C pattern; all 3 params live across the call) | `.run/backlog_drafts/func_80137614.c` |
| 13 | func_8016130C | WAVE | 138 | 26 | 3588 | 1.91 | Y | jr_8015C32C | 9 | WAVE: 9 mismatch | `.run/backlog_drafts/func_8016130C.c` |
| 14 | func_80146A6C | WAVE | 138 | 18 | 2484 | 1.33 | Y | after | 5 | none — MATCH | `.run/backlog_drafts/func_80146A6C.c` |
| 15 | func_8017C294 | WAVE | 2 | 246 | 492 | 0.26 | Y | jr_8017AE2C | 230 | structurally matched (246 ins, param_3 in $fp, spurious psVar7[1] giv killed via | `.run/backlog_drafts/func_8017C294.c` |
| 16 | func_80176734 | WAVE | 1 | 371 | 371 | 0.20 | Y | jr_801734BC | | | |
| 17 | func_8017F7E8 | WAVE | 1 | 177 | 177 | 0.09 | Y | jr_8017AE2C | 11 | WAVE: 11 mismatch | `.run/backlog_drafts/func_8017F7E8.c` |
| 18 | func_80185BA4 | WAVE | 1 | 177 | 177 | 0.09 | Y | jr_80182268 | | won't compile standalone (loose-typing / missing decl) | |
| 19 | func_80186078 | WAVE | 1 | 174 | 174 | 0.09 | Y | jr_80182268 | | | |
| 20 | func_8017FAAC | WAVE | 1 | 154 | 154 | 0.08 | Y | jr_8017AE2C | | | |
| 21 | func_801865EC | WAVE | 1 | 125 | 125 | 0.07 | Y | jr_80182268 | | | |
| 22 | func_8017DAEC | WAVE | 1 | 113 | 113 | 0.06 | Y | jr_8017AE2C | | | |
| 23 | func_80183FB8 | WAVE | 1 | 101 | 101 | 0.05 | Y | jr_80182268 | | none — MATCH (relocation-masked match_one, 101/101 ins) | `.run/backlog_drafts/func_80183FB8.c` |
| 24 | func_80184D50 | WAVE | 1 | 98 | 98 | 0.05 | Y | jr_80182268 | 0 | none — MATCH (98 ins, relocation-masked) | `.run/backlog_drafts/func_80184D50.c` |
| 25 | func_80183DE0 | WAVE | 1 | 91 | 91 | 0.05 | Y | jr_80182268 | | testing if(!=1) layout + counter-before-pointer init order | `.run/backlog_drafts/func_80183DE0.c` |
| 26 | func_8016EC0C | WAVE | 1 | 88 | 88 | 0.05 | Y | jr_8016AB6C | 2 | none — MATCH (88 ins). Sparse switch(uVar2) = gcc's beq-pivot+slti comparison | `.run/backlog_drafts/func_8016EC0C.c` |
| 27 | func_8017F114 | WAVE | 1 | 75 | 75 | 0.04 | Y | jr_8017AE2C | 1 | none — MATCH | `.run/backlog_drafts/func_8017F114.c` |
| 28 | func_801842C8 | WAVE | 1 | 62 | 62 | 0.03 | Y | jr_80182268 | 0 | none — MATCH | `.run/backlog_drafts/func_801842C8.c` |
| 29 | func_8017EC7C | WAVE | 1 | 52 | 52 | 0.03 | Y | jr_8017AE2C | 0 | none — MATCH (52 ins, relocation-masked) | `.run/backlog_drafts/func_8017EC7C.c` |
| 30 | func_801803B0 | WAVE | 1 | 51 | 51 | 0.03 | Y | jr_8017AE2C | 1 | none — MATCH expected; simple if/else, no call-crossing locals beyond param in $s0 | `.run/backlog_drafts/func_801803B0.c` |
| 31 | func_80139BE0 | WAVE | 1 | 39 | 39 | 0.02 | Y | jr_801380E0 | 32 | target has redundant andi a1,v0,0xff (uchar zero-extend) gcc proves away; else identical | `.run/backlog_drafts/func_80139BE0.c` |
| 32 | func_80184A68 | WAVE | 1 | 33 | 33 | 0.02 | Y | jr_80182268 | | none — MATCH | `.run/backlog_drafts/func_80184A68.c` |
| 33 | func_8017E224 | WAVE | 1 | 29 | 29 | 0.02 | Y | jr_8017AE2C | 0 | none — MATCH (unaligned 8-byte memcpy of global onto stack + cond byte incr) | `.run/backlog_drafts/func_8017E224.c` |
| 34 | func_8017F714 | WAVE | 1 | 27 | 27 | 0.01 | Y | jr_8017AE2C | 1 | none — MATCH (27/27 ins, match_one verified) | `.run/backlog_drafts/func_8017F714.c` |
| 35 | func_80128CFC | WAVE | 1 | 25 | 25 | 0.01 | n | a | | | |
### O1 — 1 fns, 2.5% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------|
| 1 | func_80161A90 | O1 | 138 | 34 | 4692 | 2.50 | Y | jr_8015C32C | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_80161A90.c` |
### STUB — 3 fns, 6.2% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------|
| 1 | func_8012EFB8 | STUB | 138 | 32 | 4416 | 2.36 | Y | jr_8012ACE0 | 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` |
| 2 | func_8016BA68 | STUB | 138 | 29 | 4002 | 2.14 | Y | jr_8016AB6C | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_8016BA68.c` |
| 3 | func_80162CCC | STUB | 138 | 23 | 3174 | 1.69 | Y | jr_8015C32C | 0 | none — MATCH expected; direct translation, psVar1 as u16* gives lhu, $s0=param_1 survives both calls | `.run/backlog_drafts/func_80162CCC.c` |