Files
BFM-decomp/docs/worklist.md
T
Drew T 93d2851ab2 feat(phase-30): T0e2+T0f — autopsy refreshed (108 stranded MATCHes); frontier regenerated; the three populations PINNED (docs/frontier-p30.md)
- Autopsy 1,349 rows: 1,178 near / 63 nobuild / 108 match_one-MATCH (T1 fuel, 3x the S16 sample);
  0 classifier errors; second-oracle agree.
- THE -O0 PIN: 18 fam / 2,192 open members = 2,131 o0b-route-eligible + 61 SC07-only; 15/18
  exemplar-matched. The 'WALLED ~1,287' framing dissolves — T2 generalizes rollout_801457a4_o0.py
  (proven 130/130); jr+o0 composites (0x8013c414, 0x8013c0f8) probe x1 first.
- Zero-crack: 114 fam / 3,166 members / ~204k w-ins (28 substantial). Concentration top-20 24.0% /
  top-100 44.8%. Worklist fresh: 101 live / 261,789 gain-ins (stale 160/583k gone).
- T0 COMPLETE (a-f) — report point #1 = docs/frontier-p30.md
2026-07-30 16:45:09 -06:00

195 lines
25 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:** 101 · **total remaining gain:** 261,789 ins (1,047,156 bytes ×-fleet)
## Idiom-class summary (the groups)
| class | count | gain_ins | % of remaining |
|-------|------:|---------:|---------------:|
| GIANT | 2 | 50,094 | 19.1% |
| STRUCT | 25 | 3,971 | 1.5% |
| PINS | 18 | 61,412 | 23.5% |
| WAVE | 49 | 125,832 | 48.1% |
| O0 | 3 | 4,196 | 1.6% |
| O1 | 1 | 4,692 | 1.8% |
| STUB | 3 | 11,592 | 4.4% |
## 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 | 10.44 | 10.4 | 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 | 8.70 | 19.1 | 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_8012E014 | WAVE | 138 | 73 | 10074 | 3.85 | 23.0 | Y | jr_8012ACE0 | 0 | none — MATCH (expected; straightforward struct-field + global-copy body) | `.run/backlog_drafts/func_8012E014.c` |
| 4 | func_80133298 | WAVE | 138 | 65 | 8970 | 3.43 | 26.4 | Y | jr_8012ACE0 | 0 | none — MATCH (65 ins, relocation-masked) | `.run/backlog_drafts/func_80133298.c` |
| 5 | func_8014E5B4 | PINS | 138 | 59 | 8142 | 3.11 | 29.5 | Y | after | 23 | none — MATCH | `.run/backlog_drafts/func_8014E5B4.c` |
| 6 | func_8012B77C | WAVE | 138 | 58 | 8004 | 3.06 | 32.6 | 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` |
| 7 | func_80175820 | WAVE | 138 | 55 | 7590 | 2.90 | 35.5 | Y | jr_801734BC | 4 | body BYTE-EXACT (52 ins match); only residual is target's phantom 0x10 stack frame (args_size=16 from an elim… | `.run/backlog_drafts/func_80175820.c` |
| 8 | func_801758FC | WAVE | 138 | 55 | 7590 | 2.90 | 38.4 | Y | jr_801734BC | 0 | none — MATCH (55 ins) | `.run/backlog_drafts/func_801758FC.c` |
| 9 | func_80176144 | WAVE | 138 | 53 | 7314 | 2.79 | 41.2 | Y | jr_801734BC | 0 | none — MATCH | `.run/backlog_drafts/func_80176144.c` |
| 10 | func_80151C54 | PINS | 138 | 52 | 7176 | 2.74 | 43.9 | Y | after | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80151C54.c` |
| 11 | func_8012F49C | WAVE | 138 | 51 | 7038 | 2.69 | 46.6 | Y | jr_8012ACE0 | 0 | none — MATCH (51 ins, relocation-masked) | `.run/backlog_drafts/func_8012F49C.c` |
| 12 | func_801376E8 | WAVE | 138 | 51 | 7038 | 2.69 | 49.3 | 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` |
| 13 | func_8014C4AC | WAVE | 138 | 47 | 6486 | 2.48 | 51.8 | Y | after | 0 | none — MATCH | `.run/backlog_drafts/func_8014C4AC.c` |
| 14 | func_80151B98 | PINS | 138 | 47 | 6486 | 2.48 | 54.2 | Y | after | 15 | PINS: 15 mismatch | `.run/backlog_drafts/func_80151B98.c` |
| 15 | func_80163764 | PINS | 138 | 42 | 5796 | 2.21 | 56.5 | 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` |
| 16 | func_80146AFC | PINS | 138 | 40 | 5520 | 2.11 | 58.6 | Y | after | 13 | none — MATCH | `.run/backlog_drafts/func_80146AFC.c` |
| 17 | func_80131A34 | PINS | 138 | 37 | 5106 | 1.95 | 60.5 | 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` |
| 18 | func_80151664 | PINS | 138 | 35 | 4830 | 1.84 | 62.4 | Y | after | 0 | none — MATCH (35 ins, relocation-masked); canonical externs kept, call-site casts only | `.run/backlog_drafts/func_80151664.c` |
| 19 | func_80161A90 | O1 | 138 | 34 | 4692 | 1.79 | 64.2 | Y | jr_8015C32C | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_80161A90.c` |
| 20 | func_8012EFB8 | STUB | 138 | 32 | 4416 | 1.69 | 65.8 | 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` |
| 21 | func_80147364 | WAVE | 138 | 30 | 4140 | 1.58 | 67.4 | 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` |
| 22 | func_8016706C | WAVE | 138 | 30 | 4140 | 1.58 | 69.0 | Y | jr_8015C32C | 0 | none — MATCH (pending gate) | `.run/backlog_drafts/func_8016706C.c` |
| 23 | func_801708B0 | WAVE | 138 | 30 | 4140 | 1.58 | 70.6 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_801708B0.c` |
| 24 | func_80170CF0 | PINS | 138 | 30 | 4140 | 1.58 | 72.2 | Y | jr_8016AB6C | 17 | PINS: 17 mismatch | `.run/backlog_drafts/func_80170CF0.c` |
| 25 | func_8012F274 | WAVE | 138 | 29 | 4002 | 1.53 | 73.7 | Y | jr_8012ACE0 | 0 | none — MATCH (29 ins, match_one byte-clean via relocation-masked pipeline) | `.run/backlog_drafts/func_8012F274.c` |
| 26 | func_80131CF4 | WAVE | 138 | 29 | 4002 | 1.53 | 75.2 | 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` |
| 27 | func_8016BA68 | STUB | 138 | 29 | 4002 | 1.53 | 76.8 | Y | jr_8016AB6C | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_8016BA68.c` |
| 28 | func_8013C08C | O0 | 138 | 27 | 3726 | 1.42 | 78.2 | Y | o0 | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_8013C08C.c` |
| 29 | func_80168B70 | WAVE | 138 | 27 | 3726 | 1.42 | 79.6 | Y | jr_8015C32C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80168B70.c` |
| 30 | func_80137614 | WAVE | 138 | 26 | 3588 | 1.37 | 81.0 | Y | jr_80135D20 | 0 | none — MATCH (sibling func_8013767C pattern; all 3 params live across the call) | `.run/backlog_drafts/func_80137614.c` |
| 31 | func_8016130C | WAVE | 138 | 26 | 3588 | 1.37 | 82.3 | Y | jr_8015C32C | 9 | WAVE: 9 mismatch | `.run/backlog_drafts/func_8016130C.c` |
| 32 | func_8016F0E4 | PINS | 138 | 26 | 3588 | 1.37 | 83.7 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_8016F0E4.c` |
| 33 | func_801733FC | PINS | 138 | 25 | 3450 | 1.32 | 85.0 | Y | jr_80171B4C | 0 | none — modeled on sibling func_80173460 (packed 8-byte struct copy + two s16=1 stores) | `.run/backlog_drafts/func_801733FC.c` |
| 34 | func_8012A598 | WAVE | 138 | 24 | 3312 | 1.27 | 86.3 | Y | a | 0 | none — MATCH (24 ins, relocation-masked) | `.run/backlog_drafts/func_8012A598.c` |
| 35 | func_801466F0 | WAVE | 138 | 24 | 3312 | 1.27 | 87.6 | Y | after | 4 | none — MATCH (struct param-spill + branch-polarity) | `.run/backlog_drafts/func_801466F0.c` |
| 36 | func_8016191C | WAVE | 138 | 24 | 3312 | 1.27 | 88.8 | Y | jr_8015C32C | 20 | none — MATCH (24 ins). early-return-per-arm: each arm sets $v0 directly + j-tail merges | `.run/backlog_drafts/func_8016191C.c` |
| 37 | func_8015C030 | WAVE | 138 | 23 | 3174 | 1.21 | 90.0 | Y | jr_8015AE2C | 17 | WAVE: 17 mismatch | `.run/backlog_drafts/func_8015C030.c` |
| 38 | func_80162CCC | STUB | 138 | 23 | 3174 | 1.21 | 91.2 | 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` |
| 39 | func_8016BF50 | WAVE | 138 | 22 | 3036 | 1.16 | 92.4 | Y | jr_8016AB6C | 0 | none — MATCH; short buf[3] keeps all 3 stores live + hoisting *(int*)(p+0x34) into a local | `.run/backlog_drafts/func_8016BF50.c` |
| 40 | func_801718AC | WAVE | 138 | 22 | 3036 | 1.16 | 93.6 | Y | jr_8016AB6C | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801718AC.c` |
## GIANT hand-decomp queue — 2 fns, 19.1% 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 | 10.44 | 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 | 8.70 | 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 — 25 fns, 1.5% 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.36 | Y | jr_8017AE2C | | | |
| 2 | func_8018103C | STRUCT | 1 | 579 | 579 | 0.22 | Y | jr_8017AE2C | | | |
| 3 | func_80183324 | STRUCT | 1 | 324 | 324 | 0.12 | Y | jr_80182268 | | | |
| 4 | func_8017FD14 | STRUCT | 1 | 249 | 249 | 0.10 | Y | jr_8017AE2C | | | |
| 5 | func_80181BE4 | STRUCT | 1 | 201 | 201 | 0.08 | Y | jr_8017AE2C | | | |
| 6 | func_8018308C | STRUCT | 1 | 166 | 166 | 0.06 | Y | jr_80182268 | | | |
| 7 | func_80180C90 | STRUCT | 1 | 160 | 160 | 0.06 | Y | jr_8017AE2C | | | |
| 8 | func_80183834 | STRUCT | 1 | 135 | 135 | 0.05 | Y | jr_80182268 | | | |
| 9 | func_80181948 | STRUCT | 1 | 132 | 132 | 0.05 | Y | jr_8017AE2C | | | |
| 10 | func_80185E68 | STRUCT | 1 | 132 | 132 | 0.05 | Y | jr_80182268 | 131 | STRUCT: 131 mismatch | `.run/backlog_drafts/func_80185E68.c` |
| 11 | func_80181F08 | STRUCT | 1 | 117 | 117 | 0.04 | Y | jr_8017AE2C | | | |
| 12 | func_80182C9C | STRUCT | 1 | 101 | 101 | 0.04 | 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.04 | 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.03 | 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.03 | 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.03 | Y | jr_8017AE2C | | none — MATCH (75 ins, relocation-masked) | `.run/backlog_drafts/func_80180B64.c` |
| 17 | func_80159A20 | STRUCT | 1 | 58 | 58 | 0.02 | 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_8015FBE0 | STRUCT | 1 | 58 | 58 | 0.02 | Y | jr_8015C32C | 1 | none — MATCH | `.run/backlog_drafts/func_8015FBE0.c` |
| 19 | func_80183CF4 | STRUCT | 1 | 57 | 57 | 0.02 | Y | jr_80182268 | 0 | none — MATCH (clean switch + jtbl; orchestrator owns jtbl/rodata migration) | `.run/backlog_drafts/func_80183CF4.c` |
| 20 | func_80183AF0 | STRUCT | 1 | 47 | 47 | 0.02 | 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` |
| 21 | 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` |
| 22 | 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` |
| 23 | func_801754A8 | STRUCT | 1 | 37 | 37 | 0.01 | Y | jr_801734BC | 0 | none — MATCH (37 ins, relocation-masked proxy) | `.run/backlog_drafts/func_801754A8.c` |
| 24 | func_801549F8 | STRUCT | 1 | 31 | 31 | 0.01 | 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` |
| 25 | func_80142A10 | STRUCT | 1 | 28 | 28 | 0.01 | Y | main | 1 | none — MATCH (pending byte-gate) | `.run/backlog_drafts/func_80142A10.c` |
### PINS — 18 fns, 23.5% 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 | 3.11 | Y | after | 23 | none — MATCH | `.run/backlog_drafts/func_8014E5B4.c` |
| 2 | func_80151C54 | PINS | 138 | 52 | 7176 | 2.74 | Y | after | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80151C54.c` |
| 3 | func_80151B98 | PINS | 138 | 47 | 6486 | 2.48 | Y | after | 15 | PINS: 15 mismatch | `.run/backlog_drafts/func_80151B98.c` |
| 4 | func_80163764 | PINS | 138 | 42 | 5796 | 2.21 | 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` |
| 5 | func_80146AFC | PINS | 138 | 40 | 5520 | 2.11 | Y | after | 13 | none — MATCH | `.run/backlog_drafts/func_80146AFC.c` |
| 6 | func_80131A34 | PINS | 138 | 37 | 5106 | 1.95 | 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` |
| 7 | func_80151664 | PINS | 138 | 35 | 4830 | 1.84 | Y | after | 0 | none — MATCH (35 ins, relocation-masked); canonical externs kept, call-site casts only | `.run/backlog_drafts/func_80151664.c` |
| 8 | func_80170CF0 | PINS | 138 | 30 | 4140 | 1.58 | Y | jr_8016AB6C | 17 | PINS: 17 mismatch | `.run/backlog_drafts/func_80170CF0.c` |
| 9 | func_8016F0E4 | PINS | 138 | 26 | 3588 | 1.37 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_8016F0E4.c` |
| 10 | func_801733FC | PINS | 138 | 25 | 3450 | 1.32 | Y | jr_80171B4C | 0 | none — modeled on sibling func_80173460 (packed 8-byte struct copy + two s16=1 stores) | `.run/backlog_drafts/func_801733FC.c` |
| 11 | func_80131CA8 | PINS | 138 | 19 | 2622 | 1.00 | Y | jr_8012ACE0 | 0 | none — MATCH (call-through-fnptr dispatcher: explicit return 1/return 0) | `.run/backlog_drafts/func_80131CA8.c` |
| 12 | func_80156600 | PINS | 138 | 18 | 2484 | 0.95 | Y | jr_80154C24 | | none — MATCH (simple counted scan, do-while form per Ghidra-C) | `.run/backlog_drafts/func_80156600.c` |
| 13 | func_80161208 | PINS | 138 | 14 | 1932 | 0.74 | Y | jr_8015C32C | 0 | none — MATCH expected (param saved across call → natural $s0, no pin needed) | `.run/backlog_drafts/func_80161208.c` |
| 14 | func_80184C0C | PINS | 1 | 48 | 48 | 0.02 | Y | jr_80182268 | 1 | none — MATCH (array-of-struct %lo-fold for &D_8018AEB8[idx], stride 0x34) | `.run/backlog_drafts/func_80184C0C.c` |
| 15 | func_80161C24 | PINS | 1 | 29 | 29 | 0.01 | 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` |
| 16 | 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` |
| 17 | func_80157D20 | PINS | 1 | 21 | 21 | 0.01 | Y | jr_80154C24 | 0 | none — MATCH expected (call, indexed u16-global load as 2nd arg, then call; param_1 saved across all three ca… | `.run/backlog_drafts/func_80157D20.c` |
| 18 | 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 — 49 fns, 48.1% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------|
| 1 | func_8012E014 | WAVE | 138 | 73 | 10074 | 3.85 | Y | jr_8012ACE0 | 0 | none — MATCH (expected; straightforward struct-field + global-copy body) | `.run/backlog_drafts/func_8012E014.c` |
| 2 | func_80133298 | WAVE | 138 | 65 | 8970 | 3.43 | Y | jr_8012ACE0 | 0 | none — MATCH (65 ins, relocation-masked) | `.run/backlog_drafts/func_80133298.c` |
| 3 | func_8012B77C | WAVE | 138 | 58 | 8004 | 3.06 | 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` |
| 4 | func_80175820 | WAVE | 138 | 55 | 7590 | 2.90 | Y | jr_801734BC | 4 | body BYTE-EXACT (52 ins match); only residual is target's phantom 0x10 stack frame (args_size=16 from an elim… | `.run/backlog_drafts/func_80175820.c` |
| 5 | func_801758FC | WAVE | 138 | 55 | 7590 | 2.90 | Y | jr_801734BC | 0 | none — MATCH (55 ins) | `.run/backlog_drafts/func_801758FC.c` |
| 6 | func_80176144 | WAVE | 138 | 53 | 7314 | 2.79 | Y | jr_801734BC | 0 | none — MATCH | `.run/backlog_drafts/func_80176144.c` |
| 7 | func_8012F49C | WAVE | 138 | 51 | 7038 | 2.69 | Y | jr_8012ACE0 | 0 | none — MATCH (51 ins, relocation-masked) | `.run/backlog_drafts/func_8012F49C.c` |
| 8 | func_801376E8 | WAVE | 138 | 51 | 7038 | 2.69 | 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` |
| 9 | func_8014C4AC | WAVE | 138 | 47 | 6486 | 2.48 | Y | after | 0 | none — MATCH | `.run/backlog_drafts/func_8014C4AC.c` |
| 10 | func_80147364 | WAVE | 138 | 30 | 4140 | 1.58 | 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` |
| 11 | func_8016706C | WAVE | 138 | 30 | 4140 | 1.58 | Y | jr_8015C32C | 0 | none — MATCH (pending gate) | `.run/backlog_drafts/func_8016706C.c` |
| 12 | func_801708B0 | WAVE | 138 | 30 | 4140 | 1.58 | Y | jr_8016AB6C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_801708B0.c` |
| 13 | func_8012F274 | WAVE | 138 | 29 | 4002 | 1.53 | Y | jr_8012ACE0 | 0 | none — MATCH (29 ins, match_one byte-clean via relocation-masked pipeline) | `.run/backlog_drafts/func_8012F274.c` |
| 14 | func_80131CF4 | WAVE | 138 | 29 | 4002 | 1.53 | 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` |
| 15 | func_80168B70 | WAVE | 138 | 27 | 3726 | 1.42 | Y | jr_8015C32C | 0 | match_one MATCH but gate rejected (declaration/TU plumbing) | `.run/backlog_drafts/func_80168B70.c` |
| 16 | func_80137614 | WAVE | 138 | 26 | 3588 | 1.37 | Y | jr_80135D20 | 0 | none — MATCH (sibling func_8013767C pattern; all 3 params live across the call) | `.run/backlog_drafts/func_80137614.c` |
| 17 | func_8016130C | WAVE | 138 | 26 | 3588 | 1.37 | Y | jr_8015C32C | 9 | WAVE: 9 mismatch | `.run/backlog_drafts/func_8016130C.c` |
| 18 | func_8012A598 | WAVE | 138 | 24 | 3312 | 1.27 | Y | a | 0 | none — MATCH (24 ins, relocation-masked) | `.run/backlog_drafts/func_8012A598.c` |
| 19 | func_801466F0 | WAVE | 138 | 24 | 3312 | 1.27 | Y | after | 4 | none — MATCH (struct param-spill + branch-polarity) | `.run/backlog_drafts/func_801466F0.c` |
| 20 | func_8016191C | WAVE | 138 | 24 | 3312 | 1.27 | Y | jr_8015C32C | 20 | none — MATCH (24 ins). early-return-per-arm: each arm sets $v0 directly + j-tail merges | `.run/backlog_drafts/func_8016191C.c` |
| 21 | func_8015C030 | WAVE | 138 | 23 | 3174 | 1.21 | Y | jr_8015AE2C | 17 | WAVE: 17 mismatch | `.run/backlog_drafts/func_8015C030.c` |
| 22 | func_8016BF50 | WAVE | 138 | 22 | 3036 | 1.16 | Y | jr_8016AB6C | 0 | none — MATCH; short buf[3] keeps all 3 stores live + hoisting *(int*)(p+0x34) into a local | `.run/backlog_drafts/func_8016BF50.c` |
| 23 | func_801718AC | WAVE | 138 | 22 | 3036 | 1.16 | Y | jr_8016AB6C | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801718AC.c` |
| 24 | func_80146A6C | WAVE | 138 | 18 | 2484 | 0.95 | Y | after | 5 | none — MATCH | `.run/backlog_drafts/func_80146A6C.c` |
| 25 | func_8017C294 | WAVE | 2 | 246 | 492 | 0.19 | Y | jr_8017AE2C | 230 | structurally matched (246 ins, param_3 in $fp, spurious psVar7[1] giv killed via | `.run/backlog_drafts/func_8017C294.c` |
| 26 | func_80176734 | WAVE | 1 | 371 | 371 | 0.14 | Y | jr_801734BC | | | |
| 27 | func_8017F7E8 | WAVE | 1 | 177 | 177 | 0.07 | Y | jr_8017AE2C | 11 | WAVE: 11 mismatch | `.run/backlog_drafts/func_8017F7E8.c` |
| 28 | func_80185BA4 | WAVE | 1 | 177 | 177 | 0.07 | Y | jr_80182268 | | won't compile standalone (loose-typing / missing decl) | |
| 29 | func_80186078 | WAVE | 1 | 174 | 174 | 0.07 | Y | jr_80182268 | | | |
| 30 | func_8017FAAC | WAVE | 1 | 154 | 154 | 0.06 | Y | jr_8017AE2C | | | |
| 31 | func_801865EC | WAVE | 1 | 125 | 125 | 0.05 | Y | jr_80182268 | | | |
| 32 | func_8017DAEC | WAVE | 1 | 113 | 113 | 0.04 | Y | jr_8017AE2C | | | |
| 33 | func_80183FB8 | WAVE | 1 | 101 | 101 | 0.04 | Y | jr_80182268 | | none — MATCH (relocation-masked match_one, 101/101 ins) | `.run/backlog_drafts/func_80183FB8.c` |
| 34 | func_80184D50 | WAVE | 1 | 98 | 98 | 0.04 | Y | jr_80182268 | 0 | none — MATCH (98 ins, relocation-masked) | `.run/backlog_drafts/func_80184D50.c` |
| 35 | func_80183DE0 | WAVE | 1 | 91 | 91 | 0.03 | Y | jr_80182268 | | testing if(!=1) layout + counter-before-pointer init order | `.run/backlog_drafts/func_80183DE0.c` |
| 36 | func_8016EC0C | WAVE | 1 | 88 | 88 | 0.03 | Y | jr_8016AB6C | 2 | none — MATCH (88 ins). Sparse switch(uVar2) = gcc's beq-pivot+slti comparison | `.run/backlog_drafts/func_8016EC0C.c` |
| 37 | func_8017F114 | WAVE | 1 | 75 | 75 | 0.03 | Y | jr_8017AE2C | 1 | none — MATCH | `.run/backlog_drafts/func_8017F114.c` |
| 38 | func_801842C8 | WAVE | 1 | 62 | 62 | 0.02 | Y | jr_80182268 | 0 | none — MATCH | `.run/backlog_drafts/func_801842C8.c` |
| 39 | func_801378F0 | WAVE | 1 | 58 | 58 | 0.02 | n | jr_80135D20 | | | |
| 40 | func_8016E9EC | WAVE | 1 | 53 | 53 | 0.02 | Y | jr_8016AB6C | 11 | 11 left — all GNU scheduler/canon tie-breaks (regs all match via pins): (a) prologue hoists `addiu a1,0x1C` i… | `.run/backlog_drafts/func_8016E9EC.c` |
*(+9 more WAVE fns — see `.run/worklist.json`)*
### O0 — 3 fns, 1.6% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|--:|------|-------|------:|-----:|---------:|-----:|--------|--------|------:|----------------|------------|
| 1 | func_8013C08C | O0 | 138 | 27 | 3726 | 1.42 | Y | o0 | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_8013C08C.c` |
| 2 | func_8013B83C | O0 | 1 | 272 | 272 | 0.10 | Y | o0 | | | |
| 3 | func_8013BD74 | O0 | 1 | 198 | 198 | 0.08 | Y | o0 | 192 | none — MATCH | `.run/backlog_drafts/func_8013BD74.c` |
### O1 — 1 fns, 1.8% 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 | 1.79 | Y | jr_8015C32C | 26 | WAVE: 26 mismatch | `.run/backlog_drafts/func_80161A90.c` |
### STUB — 3 fns, 4.4% 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 | 1.69 | 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 | 1.53 | Y | jr_8016AB6C | 1 | STUB: 1 mismatch | `.run/backlog_drafts/func_8016BA68.c` |
| 3 | func_80162CCC | STUB | 138 | 23 | 3174 | 1.21 | 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` |