Files
BFM-decomp/docs/worklist.md
T
Drew T 8f3e4a12ba docs(phase-26): T7 re-baseline + §52 walker-family regalloc idiom (func_80178004 wall)
- re-baseline the target frontier from the fixed tools (R14): 228 ov077 stubs
  (broken manifest saw 30); worklist/family-hseq regenerated. 68.6% instr / 49.2% distinct.
- R14 corrections to the audit handoff: the '~1,200 type-heavy' was already banked by A3h
  (+2,675); the real remaining lever is 128 matched-sib families (~2.64M templ ins), and
  register pins are NOT a banking blocker (func_8017A4AC banked ×134 with pins).
- Task 7 is near-miss CLOSING (close 1-5 re-gate = 0/13 through the fixed pipeline), not fresh crack.
- §52: single Fable5 on func_80178004 (regalloc-order class exemplar) = honest wall (P9),
  structure-exact 163/165, residual = 3 compiler-internal register-alloc integers, likely
  intrinsic; byte-verified 126/165. Correction: the 'pinned MATCH' was a myth (never matched).
  6 byte-proven walker-family levers + the skeleton idiom transfer to the 11 regalloc-order
  siblings (Fable5 discovers, cheap-Opus applies). decision-log entry (R31).
2026-07-15 11:15:54 -06:00

27 KiB
Raw Blame History

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 ×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: 228 · total remaining gain: 884,130 ins (3,536,520 bytes ×-fleet)

Idiom-class summary (the groups)

class count gain_ins % of remaining
GIANT 2 48,642 5.5%
STRUCT 59 36,125 4.1%
PINS 20 63,536 7.2%
WAVE 131 688,362 77.9%
O0 7 4,704 0.5%
O1 1 4,556 0.5%
STUB 8 38,205 4.3%

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 134 198 26532 3.00 3.0 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 134 165 22110 2.50 5.5 Y jr_801734BC 0 none — MATCH (full register pins per sibling func_80177EA4; running-ptr $s2 to stop unroll-rebase; .run/backlog_drafts/func_80178004.c
3 func_8014F4C0 WAVE 134 141 18894 2.14 7.6 Y after 127 residual: 127 mismatch .run/backlog_drafts/func_8014F4C0.c
4 func_8014ADE0 WAVE 134 139 18626 2.11 9.7 Y after 19 16 ins off — all compiler-internal ties: (1) 0xAAA8 const lands $v0 vs target $v1; .run/backlog_drafts/func_8014ADE0.c
5 func_80137DD4 STRUCT 134 129 17286 1.96 11.7 Y jr_8012ACE0 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
6 func_80174CB0 WAVE 134 123 16482 1.86 13.6 Y jr_801734BC 0 close=0 match_one MATCH but its anon typedef is named 'Buf' which COLLIDES with the existing 'Buf' (s16 h[8],… .run/backlog_drafts/func_80174CB0.c
7 func_801325B8 WAVE 134 113 15142 1.71 15.3 Y jr_8012ACE0 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_801330E0 STUB 134 110 14740 1.67 16.9 Y jr_8012ACE0 7 STUB: 7 mismatch .run/backlog_drafts/func_801330E0.c
9 func_8014E284 WAVE 134 108 14472 1.64 18.6 Y after 83 WAVE: 83 mismatch .run/backlog_drafts/func_8014E284.c
10 func_8012CC88 WAVE 134 105 14070 1.59 20.2 Y jr_8012ACE0 0 none — MATCH (105 ins, relocation-masked) .run/backlog_drafts/func_8012CC88.c
11 func_80169228 WAVE 134 105 14070 1.59 21.8 Y jr_8015AE2C 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 1.58 23.3 Y jr_8015AE2C 0 none — MATCH (104 ins) .run/backlog_drafts/func_80167714.c
13 func_801463A0 WAVE 134 101 13534 1.53 24.9 Y after 0 none — MATCH (101 ins, match_one); real symbol names; misaligned 8B copy + s16 stores + masked B9C last .run/backlog_drafts/func_801463A0.c
14 func_80177940 WAVE 134 101 13534 1.53 26.4 Y jr_801734BC 65 prologue+setup (35 ins) byte-match exactly; loop body diverges on gcc loop-invariant hoist ORDERING (schedule… .run/backlog_drafts/func_80177940.c
15 func_801387B8 WAVE 134 100 13400 1.52 27.9 Y jr_801380E0 50 the two scanned bytes land in $a0/$a1 not $a1/$a2 (gcc-2.7.2 grabs the freed incoming-arg $a0 for the first l… .run/backlog_drafts/func_801387B8.c
16 func_801379FC WAVE 134 97 12998 1.47 29.4 Y jr_8012ACE0 0 none — MATCH (match_one 97/97) .run/backlog_drafts/func_801379FC.c
17 func_8014CD80 WAVE 134 97 12998 1.47 30.9 Y after 63 WAVE: 63 mismatch .run/backlog_drafts/func_8014CD80.c
18 func_80150170 WAVE 134 95 12730 1.44 32.3 Y after 88 WAVE: 88 mismatch .run/backlog_drafts/func_80150170.c
19 func_8014D12C WAVE 134 93 12462 1.41 33.7 Y after 53 WAVE: 53 mismatch .run/backlog_drafts/func_8014D12C.c
20 func_8014FFDC WAVE 134 93 12462 1.41 35.1 Y after 1 none — MATCH .run/backlog_drafts/func_8014FFDC.c
21 func_801502EC WAVE 134 93 12462 1.41 36.5 Y after 78 WAVE: 78 mismatch .run/backlog_drafts/func_801502EC.c
22 func_8014C6F4 WAVE 134 91 12194 1.38 37.9 Y after 14 WAVE: 14 mismatch .run/backlog_drafts/func_8014C6F4.c
23 func_80158638 STUB 134 87 11658 1.32 39.2 Y jr_8015444C 1 STUB: 1 mismatch .run/backlog_drafts/func_80158638.c
24 func_8012B4B8 WAVE 134 84 11256 1.27 40.5 Y jr_8012ACE0 0 none — MATCH .run/backlog_drafts/func_8012B4B8.c
25 func_8014D4C0 WAVE 134 84 11256 1.27 41.8 Y after 44 WAVE: 44 mismatch .run/backlog_drafts/func_8014D4C0.c
26 func_80156670 WAVE 134 83 11122 1.26 43.0 Y jr_8015444C none — MATCH (83 ins). Key: hoist iVar1 = uVar3*4; as its OWN statement before the if so gcc schedules `sll… .run/backlog_drafts/func_80156670.c
27 func_8014CF04 WAVE 134 82 10988 1.24 44.3 Y after 27 WAVE: 27 mismatch .run/backlog_drafts/func_8014CF04.c
28 func_8012E138 WAVE 134 81 10854 1.23 45.5 Y jr_8012ACE0 0 none — MATCH (81/81 ins, match_one proxy); reloaded ptr pinned to $a0 .run/backlog_drafts/func_8012E138.c
29 func_8014D2A0 WAVE 134 80 10720 1.21 46.7 Y after 27 none — MATCH (80 ins, relocation-masked); loop-guard idiom per engine_core DEFINE_func_80164ACC .run/backlog_drafts/func_8014D2A0.c
30 func_8012A1BC WAVE 134 78 10452 1.18 47.9 Y a 42 42/78 — block-copy bytes correct (char[8] => lwl/lwr/swl/swr); residual is gcc's load-hoist split. Target hoi… .run/backlog_drafts/func_8012A1BC.c
31 func_80137178 WAVE 134 78 10452 1.18 49.1 Y jr_8012ACE0 15 reg values all correct; prologue independent-addiu order + lazy sw placement differ .run/backlog_drafts/func_80137178.c
32 func_8016163C WAVE 134 78 10452 1.18 50.3 Y jr_8015AE2C 50 none — MATCH (78 ins). First arm calls func_801599A4 with NO arg (asm nop delay slot) via fn-ptr cast ((void(… .run/backlog_drafts/func_8016163C.c
33 func_80163534 WAVE 134 76 10184 1.15 51.4 Y jr_8015AE2C mismatch=13, a single 1-position scheduling tie. Instrs 1-30 byte-perfect; all registers correct .run/backlog_drafts/func_80163534.c
34 func_8014D610 WAVE 134 74 9916 1.12 52.5 Y after 60 WAVE: 60 mismatch .run/backlog_drafts/func_8014D610.c
35 func_8012E014 WAVE 134 73 9782 1.11 53.6 Y jr_8012ACE0 0 none — MATCH (expected; straightforward struct-field + global-copy body) .run/backlog_drafts/func_8012E014.c
36 func_80132F40 STRUCT 134 72 9648 1.09 54.7 Y jr_8012ACE0 59 STRUCT: 59 mismatch .run/backlog_drafts/func_80132F40.c
37 func_80164418 WAVE 134 70 9380 1.06 55.8 Y jr_8015AE2C 0 none — MATCH (s16 stack array forces the spill; 2nd ratan2 reuses /dy/ in $a1) .run/backlog_drafts/func_80164418.c
38 func_80161774 WAVE 134 69 9246 1.05 56.8 Y jr_8015AE2C 53 none — MATCH (69 ins, match_one verified; clean nested-if; param_1 -> $s0 call-crossing) .run/backlog_drafts/func_80161774.c
39 func_80175308 WAVE 134 67 8978 1.02 57.9 Y jr_801734BC 41 WAVE: 41 mismatch .run/backlog_drafts/func_80175308.c
40 func_801775E0 WAVE 134 67 8978 1.02 58.9 Y jr_801734BC 1 1 ins — target sb $v0,0x6($s0) vs mine sb $v0,26($s1) (same store P1+0x1a; gcc address-CSE picks $s1 base… .run/backlog_drafts/func_801775E0.c

GIANT hand-decomp queue — 2 fns, 5.5% of all remaining gain

# name class reach nins gain_ins %rem cached region close where it stuck best draft
1 func_801412A8 GIANT 134 198 26532 3.00 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 134 165 22110 2.50 Y jr_801734BC 0 none — MATCH (full register pins per sibling func_80177EA4; running-ptr $s2 to stop unroll-rebase; .run/backlog_drafts/func_80178004.c

Idiom-group tables

STRUCT — 59 fns, 4.1% 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 1.96 Y jr_8012ACE0 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 1.09 Y jr_8012ACE0 59 STRUCT: 59 mismatch .run/backlog_drafts/func_80132F40.c
3 func_8017C974 STRUCT 1 947 947 0.11 Y jr_8017A4AC
4 func_8018103C STRUCT 1 579 579 0.07 Y jr_8017A4AC 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_8018103C.c
5 func_8013F350 STRUCT 1 490 490 0.06 Y main
6 func_80131340 STRUCT 1 424 424 0.05 n jr_8012ACE0
7 func_80159C84 STRUCT 1 337 337 0.04 Y jr_8015444C
8 func_80183324 STRUCT 1 324 324 0.04 Y jr_80182268
9 func_80135EB0 STRUCT 1 289 289 0.03 n jr_8012ACE0
10 func_8015B950 STRUCT 1 271 271 0.03 Y jr_8015AE2C
11 func_8017FD14 STRUCT 1 249 249 0.03 Y jr_8017A4AC
12 func_8015C32C STRUCT 1 222 222 0.03 Y jr_8015AE2C
13 func_8015EA3C STRUCT 1 204 204 0.02 Y jr_8015AE2C
14 func_8015D738 STRUCT 1 201 201 0.02 Y jr_8015AE2C
15 func_80181BE4 STRUCT 1 201 201 0.02 Y jr_8017A4AC
16 func_8015F448 STRUCT 1 188 188 0.02 Y jr_8015AE2C
17 func_8014032C STRUCT 1 183 183 0.02 Y main
18 func_80135A4C STRUCT 1 181 181 0.02 n jr_8012ACE0
19 func_8017AE2C STRUCT 1 174 174 0.02 Y jr_8017A4AC
20 func_80154C24 STRUCT 1 173 173 0.02 Y jr_8015444C
21 func_8018308C STRUCT 1 166 166 0.02 Y jr_80182268
22 func_80160534 STRUCT 1 161 161 0.02 Y jr_8015AE2C
23 func_80180C90 STRUCT 1 160 160 0.02 Y jr_8017A4AC
24 func_801299C8 STRUCT 1 158 158 0.02 n a
25 func_80135260 STRUCT 1 136 136 0.02 n jr_8012ACE0
26 func_80183834 STRUCT 1 135 135 0.02 Y jr_80182268
27 func_80181948 STRUCT 1 132 132 0.01 Y jr_8017A4AC
28 func_80185E68 STRUCT 1 132 132 0.01 Y jr_80182268 131 STRUCT: 131 mismatch .run/backlog_drafts/func_80185E68.c
29 func_801555F4 STRUCT 1 131 131 0.01 Y jr_8015444C
30 func_8015CD20 STRUCT 1 129 129 0.01 Y jr_8015AE2C
31 func_8012AAAC STRUCT 1 125 125 0.01 n a
32 func_80140608 STRUCT 1 123 123 0.01 Y main
33 func_801588CC STRUCT 1 122 122 0.01 Y jr_8015444C
34 func_80181F08 STRUCT 1 117 117 0.01 Y jr_8017A4AC
35 func_80135888 STRUCT 1 113 113 0.01 n jr_8012ACE0
36 func_80179B74 STRUCT 1 111 111 0.01 Y jr_80178D40
37 func_801594E8 STRUCT 1 108 108 0.01 Y jr_8015444C
38 func_80182C9C STRUCT 1 101 101 0.01 Y jr_80182268 none — MATCH (101 ins). Inner-switch break-to-shared-tail must be written as .run/backlog_drafts/func_80182C9C.c
39 func_80135D20 STRUCT 1 100 100 0.01 n jr_8012ACE0
40 func_801820DC STRUCT 1 94 94 0.01 Y jr_8017A4AC 0 none — MATCH (switch on entity state at 0x34, inner jtbl on (s8)(u70>>8)) .run/backlog_drafts/func_801820DC.c

(+19 more STRUCT fns — see .run/worklist.json)

PINS — 20 fns, 7.2% 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.89 Y after 23 none — MATCH .run/backlog_drafts/func_8014E5B4.c
2 func_80151C54 PINS 134 52 6968 0.79 Y after 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_80151C54.c
3 func_80151B98 PINS 134 47 6298 0.71 Y after 15 PINS: 15 mismatch .run/backlog_drafts/func_80151B98.c
4 func_80163764 PINS 134 42 5628 0.64 Y jr_8015AE2C 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 134 40 5360 0.61 Y after 13 none — MATCH .run/backlog_drafts/func_80146AFC.c
6 func_80131A34 PINS 134 37 4958 0.56 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 134 35 4690 0.53 Y after 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_80151664.c
8 func_80170CF0 PINS 134 30 4020 0.45 Y jr_8016AB6C 17 PINS: 17 mismatch .run/backlog_drafts/func_80170CF0.c
9 func_80141B90 PINS 134 29 3886 0.44 Y main 4 PINS: 4 mismatch .run/backlog_drafts/func_80141B90.c
10 func_8016F0E4 PINS 134 26 3484 0.39 Y jr_8016AB6C 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_8016F0E4.c
11 func_801733FC PINS 134 25 3350 0.38 Y jr_8016AB6C 0 none — modeled on sibling func_80173460 (packed 8-byte struct copy + two s16=1 stores) .run/backlog_drafts/func_801733FC.c
12 func_80131CA8 PINS 134 19 2546 0.29 Y jr_8012ACE0 0 none — MATCH (call-through-fnptr dispatcher: explicit return 1/return 0) .run/backlog_drafts/func_80131CA8.c
13 func_80156600 PINS 134 18 2412 0.27 Y jr_8015444C none — MATCH (simple counted scan, do-while form per Ghidra-C) .run/backlog_drafts/func_80156600.c
14 func_80161208 PINS 134 14 1876 0.21 Y jr_8015AE2C 0 none — MATCH expected (param saved across call → natural $s0, no pin needed) .run/backlog_drafts/func_80161208.c
15 func_80184C0C PINS 1 48 48 0.01 Y jr_80182268 1 none — MATCH (array-of-struct %lo-fold for &D_8018AEB8[idx], stride 0x34) .run/backlog_drafts/func_80184C0C.c
16 func_80161C24 PINS 1 29 29 0.00 Y jr_8015AE2C 1 none — MATCH (array-of-struct %lo-fold; even/odd u16 fields at off 0/2, stride 4) .run/backlog_drafts/func_80161C24.c
17 func_80182988 PINS 1 22 22 0.00 Y jr_80182268 6 none — MATCH (0x5c store must be unsigned short so 0xaa10 stays +43536 → ori, not addiu/sign-extend) .run/backlog_drafts/func_80182988.c
18 func_80157D20 PINS 1 21 21 0.00 Y jr_8015444C 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
19 func_80161CD0 PINS 1 20 20 0.00 Y jr_8015AE2C 14 param_2 must survive the call in $s0; try plain C first then pin to $16 .run/backlog_drafts/func_80161CD0.c
20 func_80161D20 PINS 1 14 14 0.00 Y jr_8015AE2C 1 none — MATCH (array-of-u16 %lo-fold, §18) .run/backlog_drafts/func_80161D20.c

WAVE — 131 fns, 77.9% of remaining gain

# name class reach nins gain_ins %rem cached region close where it stuck best draft
1 func_8014F4C0 WAVE 134 141 18894 2.14 Y after 127 residual: 127 mismatch .run/backlog_drafts/func_8014F4C0.c
2 func_8014ADE0 WAVE 134 139 18626 2.11 Y after 19 16 ins off — all compiler-internal ties: (1) 0xAAA8 const lands $v0 vs target $v1; .run/backlog_drafts/func_8014ADE0.c
3 func_80174CB0 WAVE 134 123 16482 1.86 Y jr_801734BC 0 close=0 match_one MATCH but its anon typedef is named 'Buf' which COLLIDES with the existing 'Buf' (s16 h[8],… .run/backlog_drafts/func_80174CB0.c
4 func_801325B8 WAVE 134 113 15142 1.71 Y jr_8012ACE0 4 4/113 — prologue save-order of the $s0(cur/p3) vs $s5(p1) pair; gcc emits .run/backlog_drafts/func_801325B8.c
5 func_8014E284 WAVE 134 108 14472 1.64 Y after 83 WAVE: 83 mismatch .run/backlog_drafts/func_8014E284.c
6 func_8012CC88 WAVE 134 105 14070 1.59 Y jr_8012ACE0 0 none — MATCH (105 ins, relocation-masked) .run/backlog_drafts/func_8012CC88.c
7 func_80169228 WAVE 134 105 14070 1.59 Y jr_8015AE2C 0 none — MATCH (105 ins, relocation-masked). Key levers: arg0/p pinned $s1/$s0, .run/backlog_drafts/func_80169228.c
8 func_80167714 WAVE 134 104 13936 1.58 Y jr_8015AE2C 0 none — MATCH (104 ins) .run/backlog_drafts/func_80167714.c
9 func_801463A0 WAVE 134 101 13534 1.53 Y after 0 none — MATCH (101 ins, match_one); real symbol names; misaligned 8B copy + s16 stores + masked B9C last .run/backlog_drafts/func_801463A0.c
10 func_80177940 WAVE 134 101 13534 1.53 Y jr_801734BC 65 prologue+setup (35 ins) byte-match exactly; loop body diverges on gcc loop-invariant hoist ORDERING (schedule… .run/backlog_drafts/func_80177940.c
11 func_801387B8 WAVE 134 100 13400 1.52 Y jr_801380E0 50 the two scanned bytes land in $a0/$a1 not $a1/$a2 (gcc-2.7.2 grabs the freed incoming-arg $a0 for the first l… .run/backlog_drafts/func_801387B8.c
12 func_801379FC WAVE 134 97 12998 1.47 Y jr_8012ACE0 0 none — MATCH (match_one 97/97) .run/backlog_drafts/func_801379FC.c
13 func_8014CD80 WAVE 134 97 12998 1.47 Y after 63 WAVE: 63 mismatch .run/backlog_drafts/func_8014CD80.c
14 func_80150170 WAVE 134 95 12730 1.44 Y after 88 WAVE: 88 mismatch .run/backlog_drafts/func_80150170.c
15 func_8014D12C WAVE 134 93 12462 1.41 Y after 53 WAVE: 53 mismatch .run/backlog_drafts/func_8014D12C.c
16 func_8014FFDC WAVE 134 93 12462 1.41 Y after 1 none — MATCH .run/backlog_drafts/func_8014FFDC.c
17 func_801502EC WAVE 134 93 12462 1.41 Y after 78 WAVE: 78 mismatch .run/backlog_drafts/func_801502EC.c
18 func_8014C6F4 WAVE 134 91 12194 1.38 Y after 14 WAVE: 14 mismatch .run/backlog_drafts/func_8014C6F4.c
19 func_8012B4B8 WAVE 134 84 11256 1.27 Y jr_8012ACE0 0 none — MATCH .run/backlog_drafts/func_8012B4B8.c
20 func_8014D4C0 WAVE 134 84 11256 1.27 Y after 44 WAVE: 44 mismatch .run/backlog_drafts/func_8014D4C0.c
21 func_80156670 WAVE 134 83 11122 1.26 Y jr_8015444C none — MATCH (83 ins). Key: hoist iVar1 = uVar3*4; as its OWN statement before the if so gcc schedules `sll… .run/backlog_drafts/func_80156670.c
22 func_8014CF04 WAVE 134 82 10988 1.24 Y after 27 WAVE: 27 mismatch .run/backlog_drafts/func_8014CF04.c
23 func_8012E138 WAVE 134 81 10854 1.23 Y jr_8012ACE0 0 none — MATCH (81/81 ins, match_one proxy); reloaded ptr pinned to $a0 .run/backlog_drafts/func_8012E138.c
24 func_8014D2A0 WAVE 134 80 10720 1.21 Y after 27 none — MATCH (80 ins, relocation-masked); loop-guard idiom per engine_core DEFINE_func_80164ACC .run/backlog_drafts/func_8014D2A0.c
25 func_8012A1BC WAVE 134 78 10452 1.18 Y a 42 42/78 — block-copy bytes correct (char[8] => lwl/lwr/swl/swr); residual is gcc's load-hoist split. Target hoi… .run/backlog_drafts/func_8012A1BC.c
26 func_80137178 WAVE 134 78 10452 1.18 Y jr_8012ACE0 15 reg values all correct; prologue independent-addiu order + lazy sw placement differ .run/backlog_drafts/func_80137178.c
27 func_8016163C WAVE 134 78 10452 1.18 Y jr_8015AE2C 50 none — MATCH (78 ins). First arm calls func_801599A4 with NO arg (asm nop delay slot) via fn-ptr cast ((void(… .run/backlog_drafts/func_8016163C.c
28 func_80163534 WAVE 134 76 10184 1.15 Y jr_8015AE2C mismatch=13, a single 1-position scheduling tie. Instrs 1-30 byte-perfect; all registers correct .run/backlog_drafts/func_80163534.c
29 func_8014D610 WAVE 134 74 9916 1.12 Y after 60 WAVE: 60 mismatch .run/backlog_drafts/func_8014D610.c
30 func_8012E014 WAVE 134 73 9782 1.11 Y jr_8012ACE0 0 none — MATCH (expected; straightforward struct-field + global-copy body) .run/backlog_drafts/func_8012E014.c
31 func_80164418 WAVE 134 70 9380 1.06 Y jr_8015AE2C 0 none — MATCH (s16 stack array forces the spill; 2nd ratan2 reuses /dy/ in $a1) .run/backlog_drafts/func_80164418.c
32 func_80161774 WAVE 134 69 9246 1.05 Y jr_8015AE2C 53 none — MATCH (69 ins, match_one verified; clean nested-if; param_1 -> $s0 call-crossing) .run/backlog_drafts/func_80161774.c
33 func_80175308 WAVE 134 67 8978 1.02 Y jr_801734BC 41 WAVE: 41 mismatch .run/backlog_drafts/func_80175308.c
34 func_801775E0 WAVE 134 67 8978 1.02 Y jr_801734BC 1 1 ins — target sb $v0,0x6($s0) vs mine sb $v0,26($s1) (same store P1+0x1a; gcc address-CSE picks $s1 base… .run/backlog_drafts/func_801775E0.c
35 func_80130C08 WAVE 134 65 8710 0.99 Y jr_8012ACE0 5 tail shares one jal func_80131CA8 between the a1=5 and a1=0x38 arms via j .L80130CEC with a DUPLICATED `mov… .run/backlog_drafts/func_80130C08.c
36 func_80133298 WAVE 134 65 8710 0.99 Y jr_8012ACE0 0 none — MATCH (65 ins, relocation-masked) .run/backlog_drafts/func_80133298.c
37 func_80140D68 WAVE 134 65 8710 0.99 Y main 5 5-ins near-miss — gcc hoists lui 0xff00 (the 0xFF000000 mask) one slot too early in the first AddPrim block… .run/backlog_drafts/func_80140D68.c
38 func_8014A738 WAVE 134 62 8308 0.94 Y after 46 WAVE: 46 mismatch .run/backlog_drafts/func_8014A738.c
39 func_80136F3C WAVE 134 61 8174 0.92 Y jr_8012ACE0 10 10/61 — regalloc EXACT (param-copy + corner register-pins). residual = gcc list-scheduler permutation of the … .run/backlog_drafts/func_80136F3C.c
40 func_8012A328 WAVE 134 60 8040 0.91 Y a 0 none — MATCH (60 ins, relocation-masked) .run/backlog_drafts/func_8012A328.c

(+91 more WAVE fns — see .run/worklist.json)

O0 — 7 fns, 0.5% 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.41 Y o0 26 WAVE: 26 mismatch .run/backlog_drafts/func_8013C08C.c
2 func_8013C414 O0 1 329 329 0.04 Y o0 322 none — MATCH (329 ins, relocation-masked) .run/backlog_drafts/func_8013C414.c
3 func_8013B83C O0 1 272 272 0.03 Y o0
4 func_8013BD74 O0 1 198 198 0.02 Y o0 192 none — MATCH .run/backlog_drafts/func_8013BD74.c
5 func_8013C0F8 O0 1 154 154 0.02 Y o0 153 none — MATCH (154 ins). Levers: (1) local_c/local_10 = STRUCT pointers so field offsets FOLD into lw/lbu off(… .run/backlog_drafts/func_8013C0F8.c
6 func_8013B6A0 O0 1 67 67 0.01 Y o0
7 func_8013B598 O0 1 66 66 0.01 Y o0 66 WAVE: 66 mismatch .run/backlog_drafts/func_8013B598.c

O1 — 1 fns, 0.5% 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.52 Y jr_8015AE2C 26 WAVE: 26 mismatch .run/backlog_drafts/func_80161A90.c

STUB — 8 fns, 4.3% 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 1.67 Y jr_8012ACE0 7 STUB: 7 mismatch .run/backlog_drafts/func_801330E0.c
2 func_80158638 STUB 134 87 11658 1.32 Y jr_8015444C 1 STUB: 1 mismatch .run/backlog_drafts/func_80158638.c
3 func_8012EFB8 STUB 134 32 4288 0.48 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
4 func_8016BA68 STUB 134 29 3886 0.44 Y jr_8016AB6C 1 STUB: 1 mismatch .run/backlog_drafts/func_8016BA68.c
5 func_80162CCC STUB 134 23 3082 0.35 Y jr_8015AE2C 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_80162CCC.c
6 func_8013CB84 STUB 1 249 249 0.03 Y main
7 func_8013D53C STUB 1 240 240 0.03 Y main
8 func_80138C60 STUB 1 62 62 0.01 n jr_801380E0