Files
BFM-decomp/docs/worklist.md
T
Drew T 1004668405 chore(phase-29): regenerate the fuel manifest + worklist — the decision spine was 9 days stale
- Stale spine claimed 223 live stubs / 870,668 ins and ranked 3 already-banked fns in its top 7
  (func_801325B8, func_8014ADE0, func_8012CC88-in-077 verified 0-live in src).
- TRUE state: 160 live stubs / 583,077 ins remaining gain.
- SHARP EDGE (R35): worklist.py --assert-partition exits at the assertion and does NOT rewrite the
  doc, so 'regenerating' with it leaves the stale file in place and still exits 0. Run it bare to write.
2026-07-24 19:38:31 -06:00

28 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 ×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: 160 · total remaining gain: 583,077 ins (2,332,308 bytes ×-fleet)

Idiom-class summary (the groups)

class count gain_ins % of remaining
GIANT 2 50,094 8.6%
STRUCT 36 15,274 2.6%
PINS 19 61,426 10.5%
WAVE 91 408,422 70.0%
O0 5 4,329 0.7%
O1 1 4,692 0.8%
STUB 6 38,840 6.7%

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 4.69 4.7 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 3.91 8.6 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_80174CB0 WAVE 138 123 16974 2.91 11.5 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_801330E0 STUB 138 110 15180 2.60 14.1 Y jr_8012ACE0 7 STUB: 7 mismatch .run/backlog_drafts/func_801330E0.c
5 func_8012CC88 WAVE 138 105 14490 2.49 16.6 Y jr_8012ACE0 0 none — MATCH (105 ins, relocation-masked) .run/backlog_drafts/func_8012CC88.c
6 func_80169228 WAVE 138 105 14490 2.49 19.1 Y jr_8015C32C 0 none — MATCH (105 ins, relocation-masked). Key levers: arg0/p pinned $s1/$s0, .run/backlog_drafts/func_80169228.c
7 func_801463A0 WAVE 138 101 13938 2.39 21.5 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
8 func_8014D12C WAVE 138 93 12834 2.20 23.7 Y after 53 WAVE: 53 mismatch .run/backlog_drafts/func_8014D12C.c
9 func_8014C6F4 WAVE 138 91 12558 2.15 25.8 Y after 14 WAVE: 14 mismatch .run/backlog_drafts/func_8014C6F4.c
10 func_80158638 STUB 138 87 12006 2.06 27.9 Y jr_80154C24 1 STUB: 1 mismatch .run/backlog_drafts/func_80158638.c
11 func_8012B4B8 WAVE 138 84 11592 1.99 29.9 Y jr_8012ACE0 0 none — MATCH .run/backlog_drafts/func_8012B4B8.c
12 func_8014D4C0 WAVE 138 84 11592 1.99 31.9 Y after 15 initial draft — modeled on the byte-matched sibling DEFINE_func_8014CD80 (engine_core.h) .run/backlog_drafts/func_8014D4C0.c
13 func_80156670 WAVE 138 83 11454 1.96 33.8 Y jr_80154C24 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
14 func_8014CF04 WAVE 138 82 11316 1.94 35.8 Y after 27 WAVE: 27 mismatch .run/backlog_drafts/func_8014CF04.c
15 func_8014D2A0 WAVE 138 80 11040 1.89 37.7 Y after 2 first draft — u8* IV walk over D_801202A0 with 0x10C stride, sibling-shaped after DEFINE_func_80163950() .run/backlog_drafts/func_8014D2A0.c
16 func_8012A1BC WAVE 138 78 10764 1.85 39.5 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
17 func_8016163C WAVE 138 78 10764 1.85 41.3 Y jr_8015C32C 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
18 func_80163534 WAVE 138 76 10488 1.80 43.1 Y jr_8015C32C 0 none — MATCH (76 ins, relocation-masked) .run/backlog_drafts/func_80163534.c
19 func_8014D610 WAVE 138 74 10212 1.75 44.9 Y after 60 WAVE: 60 mismatch .run/backlog_drafts/func_8014D610.c
20 func_8012E014 WAVE 138 73 10074 1.73 46.6 Y jr_8012ACE0 0 none — MATCH (expected; straightforward struct-field + global-copy body) .run/backlog_drafts/func_8012E014.c
21 func_80132F40 STRUCT 138 72 9936 1.70 48.3 Y jr_8012ACE0 59 STRUCT: 59 mismatch .run/backlog_drafts/func_80132F40.c
22 func_80161774 WAVE 138 69 9522 1.63 50.0 Y jr_8015C32C 53 none — MATCH (69 ins, match_one verified; clean nested-if; param_1 -> $s0 call-crossing) .run/backlog_drafts/func_80161774.c
23 func_80133298 WAVE 138 65 8970 1.54 51.5 Y jr_8012ACE0 0 none — MATCH (65 ins, relocation-masked) .run/backlog_drafts/func_80133298.c
24 func_80140D68 WAVE 138 65 8970 1.54 53.0 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
25 func_8014A738 WAVE 138 62 8556 1.47 54.5 Y after 11 wip .run/backlog_drafts/func_8014A738.c
26 func_8012A328 WAVE 138 60 8280 1.42 55.9 Y a 0 none — MATCH (60 ins, relocation-masked) .run/backlog_drafts/func_8012A328.c
27 func_80138DE0 WAVE 138 60 8280 1.42 57.3 Y jr_801380E0 0 none — MATCH (60 ins) .run/backlog_drafts/func_80138DE0.c
28 func_8014E5B4 PINS 138 59 8142 1.40 58.7 Y after 23 none — MATCH .run/backlog_drafts/func_8014E5B4.c
29 func_801777BC WAVE 138 59 8142 1.40 60.1 Y jr_801734BC 29 body byte-matches; residual ~3 ins = prologue instruction-scheduling (final sll t8,16 / lw param_7 / `add… .run/backlog_drafts/func_801777BC.c
30 func_8012B77C WAVE 138 58 8004 1.37 61.5 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
31 func_801759D8 WAVE 138 56 7728 1.33 62.8 Y jr_801734BC 0 none — MATCH (56 ins) .run/backlog_drafts/func_801759D8.c
32 func_80175820 WAVE 138 55 7590 1.30 64.1 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
33 func_801758FC WAVE 138 55 7590 1.30 65.4 Y jr_801734BC 0 none — MATCH (55 ins) .run/backlog_drafts/func_801758FC.c
34 func_80176144 WAVE 138 53 7314 1.25 66.7 Y jr_801734BC 0 none — MATCH .run/backlog_drafts/func_80176144.c
35 func_80151C54 PINS 138 52 7176 1.23 67.9 Y after 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_80151C54.c
36 func_8012F49C WAVE 138 51 7038 1.21 69.1 Y jr_8012ACE0 0 none — MATCH (51 ins, relocation-masked) .run/backlog_drafts/func_8012F49C.c
37 func_801376E8 WAVE 138 51 7038 1.21 70.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
38 func_80146750 WAVE 138 47 6486 1.11 71.5 Y after 45 WAVE: 45 mismatch .run/backlog_drafts/func_80146750.c
39 func_8014C4AC WAVE 138 47 6486 1.11 72.6 Y after 0 none — MATCH .run/backlog_drafts/func_8014C4AC.c
40 func_80151B98 PINS 138 47 6486 1.11 73.7 Y after 15 PINS: 15 mismatch .run/backlog_drafts/func_80151B98.c

GIANT hand-decomp queue — 2 fns, 8.6% 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 4.69 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 3.91 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 — 36 fns, 2.6% of remaining gain

# name class reach nins gain_ins %rem cached region close where it stuck best draft
1 func_80132F40 STRUCT 138 72 9936 1.70 Y jr_8012ACE0 59 STRUCT: 59 mismatch .run/backlog_drafts/func_80132F40.c
2 func_8017C974 STRUCT 1 947 947 0.16 Y jr_8017AE2C
3 func_8018103C STRUCT 1 579 579 0.10 Y jr_8017AE2C 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_8018103C.c
4 func_80183324 STRUCT 1 324 324 0.06 Y jr_80182268
5 func_80135EB0 STRUCT 1 289 289 0.05 Y jr_80135D20
6 func_8015B950 STRUCT 1 271 271 0.05 Y jr_8015AE2C
7 func_8017FD14 STRUCT 1 249 249 0.04 Y jr_8017AE2C
8 func_80181BE4 STRUCT 1 201 201 0.03 Y jr_8017AE2C
9 func_8018308C STRUCT 1 166 166 0.03 Y jr_80182268
10 func_80180C90 STRUCT 1 160 160 0.03 Y jr_8017AE2C
11 func_80135260 STRUCT 1 136 136 0.02 Y jr_8012ACE0 5 none — MATCH .run/backlog_drafts/func_80135260.c
12 func_80183834 STRUCT 1 135 135 0.02 Y jr_80182268
13 func_80181948 STRUCT 1 132 132 0.02 Y jr_8017AE2C
14 func_80185E68 STRUCT 1 132 132 0.02 Y jr_80182268 131 STRUCT: 131 mismatch .run/backlog_drafts/func_80185E68.c
15 func_8015CD20 STRUCT 1 129 129 0.02 Y jr_8015C32C
16 func_8012AAAC STRUCT 1 125 125 0.02 Y a 0 none — MATCH (125 ins, relocation-masked) .run/backlog_drafts/func_8012AAAC.c
17 func_80181F08 STRUCT 1 117 117 0.02 Y jr_8017AE2C
18 func_80179B74 STRUCT 1 111 111 0.02 Y jr_80178D40
19 func_80182C9C STRUCT 1 101 101 0.02 Y jr_80182268 none — MATCH (101 ins). Inner-switch break-to-shared-tail must be written as .run/backlog_drafts/func_80182C9C.c
20 func_801820DC STRUCT 1 94 94 0.02 Y jr_8017AE2C 0 none — MATCH (switch on entity state at 0x34, inner jtbl on (s8)(u70>>8)) .run/backlog_drafts/func_801820DC.c
21 func_801789AC STRUCT 1 91 91 0.02 Y jr_801734BC none — MATCH (91 ins, relocation-masked) .run/backlog_drafts/func_801789AC.c
22 func_8016AE5C STRUCT 1 85 85 0.01 Y jr_8016AB6C 0 none — MATCH (85 ins, match_one). switch/jtbl STRUCT fn. The tail's .run/backlog_drafts/func_8016AE5C.c
23 func_80182E7C STRUCT 1 85 85 0.01 Y jr_80182268 0 none — MATCH (85 ins, relocation-masked). Two switch-codegen levers: .run/backlog_drafts/func_80182E7C.c
24 func_8018281C STRUCT 1 76 76 0.01 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
25 func_80180B64 STRUCT 1 75 75 0.01 Y jr_8017AE2C none — MATCH (75 ins, relocation-masked) .run/backlog_drafts/func_80180B64.c
26 func_80171B4C STRUCT 1 70 70 0.01 Y jr_8016AB6C 3 3-off in the tail only (body+prologue MATCH via $s1 pin on arg1). gcc fills the .run/backlog_drafts/func_80171B4C.c
27 func_80151944 STRUCT 4 15 60 0.01 Y after 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_80151944.c
28 func_80159A20 STRUCT 1 58 58 0.01 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
29 func_8015FBE0 STRUCT 1 58 58 0.01 Y jr_8015C32C 1 none — MATCH .run/backlog_drafts/func_8015FBE0.c
30 func_80183CF4 STRUCT 1 57 57 0.01 Y jr_80182268 0 none — MATCH (clean switch + jtbl; orchestrator owns jtbl/rodata migration) .run/backlog_drafts/func_80183CF4.c
31 func_80183AF0 STRUCT 1 47 47 0.01 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
32 func_80183BAC STRUCT 1 41 41 0.01 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
33 func_80183C50 STRUCT 1 41 41 0.01 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
34 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
35 func_801549F8 STRUCT 1 31 31 0.01 Y jr_8015444C 3 3-off at -O2 (match_one + gate flags). The n=byte keep-alive copy (addu $a3,$v0,$zero) emits BEFORE the hoist… .run/backlog_drafts/func_801549F8.c
36 func_80142A10 STRUCT 1 28 28 0.00 Y main 1 none — MATCH (pending byte-gate) .run/backlog_drafts/func_80142A10.c

PINS — 19 fns, 10.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 1.40 Y after 23 none — MATCH .run/backlog_drafts/func_8014E5B4.c
2 func_80151C54 PINS 138 52 7176 1.23 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 1.11 Y after 15 PINS: 15 mismatch .run/backlog_drafts/func_80151B98.c
4 func_80163764 PINS 138 42 5796 0.99 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 0.95 Y after 13 none — MATCH .run/backlog_drafts/func_80146AFC.c
6 func_80131A34 PINS 138 37 5106 0.88 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 0.83 Y after 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_80151664.c
8 func_80170CF0 PINS 138 30 4140 0.71 Y jr_8016AB6C 17 PINS: 17 mismatch .run/backlog_drafts/func_80170CF0.c
9 func_8016F0E4 PINS 138 26 3588 0.62 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 0.59 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
11 func_80131CA8 PINS 138 19 2622 0.45 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.43 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.33 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.01 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.00 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.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
17 func_80157D20 PINS 1 21 21 0.00 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.00 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
19 func_80161D20 PINS 1 14 14 0.00 Y jr_8015C32C 1 none — MATCH (array-of-u16 %lo-fold, §18) .run/backlog_drafts/func_80161D20.c

WAVE — 91 fns, 70.0% of remaining gain

# name class reach nins gain_ins %rem cached region close where it stuck best draft
1 func_80174CB0 WAVE 138 123 16974 2.91 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
2 func_8012CC88 WAVE 138 105 14490 2.49 Y jr_8012ACE0 0 none — MATCH (105 ins, relocation-masked) .run/backlog_drafts/func_8012CC88.c
3 func_80169228 WAVE 138 105 14490 2.49 Y jr_8015C32C 0 none — MATCH (105 ins, relocation-masked). Key levers: arg0/p pinned $s1/$s0, .run/backlog_drafts/func_80169228.c
4 func_801463A0 WAVE 138 101 13938 2.39 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
5 func_8014D12C WAVE 138 93 12834 2.20 Y after 53 WAVE: 53 mismatch .run/backlog_drafts/func_8014D12C.c
6 func_8014C6F4 WAVE 138 91 12558 2.15 Y after 14 WAVE: 14 mismatch .run/backlog_drafts/func_8014C6F4.c
7 func_8012B4B8 WAVE 138 84 11592 1.99 Y jr_8012ACE0 0 none — MATCH .run/backlog_drafts/func_8012B4B8.c
8 func_8014D4C0 WAVE 138 84 11592 1.99 Y after 15 initial draft — modeled on the byte-matched sibling DEFINE_func_8014CD80 (engine_core.h) .run/backlog_drafts/func_8014D4C0.c
9 func_80156670 WAVE 138 83 11454 1.96 Y jr_80154C24 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
10 func_8014CF04 WAVE 138 82 11316 1.94 Y after 27 WAVE: 27 mismatch .run/backlog_drafts/func_8014CF04.c
11 func_8014D2A0 WAVE 138 80 11040 1.89 Y after 2 first draft — u8* IV walk over D_801202A0 with 0x10C stride, sibling-shaped after DEFINE_func_80163950() .run/backlog_drafts/func_8014D2A0.c
12 func_8012A1BC WAVE 138 78 10764 1.85 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
13 func_8016163C WAVE 138 78 10764 1.85 Y jr_8015C32C 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
14 func_80163534 WAVE 138 76 10488 1.80 Y jr_8015C32C 0 none — MATCH (76 ins, relocation-masked) .run/backlog_drafts/func_80163534.c
15 func_8014D610 WAVE 138 74 10212 1.75 Y after 60 WAVE: 60 mismatch .run/backlog_drafts/func_8014D610.c
16 func_8012E014 WAVE 138 73 10074 1.73 Y jr_8012ACE0 0 none — MATCH (expected; straightforward struct-field + global-copy body) .run/backlog_drafts/func_8012E014.c
17 func_80161774 WAVE 138 69 9522 1.63 Y jr_8015C32C 53 none — MATCH (69 ins, match_one verified; clean nested-if; param_1 -> $s0 call-crossing) .run/backlog_drafts/func_80161774.c
18 func_80133298 WAVE 138 65 8970 1.54 Y jr_8012ACE0 0 none — MATCH (65 ins, relocation-masked) .run/backlog_drafts/func_80133298.c
19 func_80140D68 WAVE 138 65 8970 1.54 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
20 func_8014A738 WAVE 138 62 8556 1.47 Y after 11 wip .run/backlog_drafts/func_8014A738.c
21 func_8012A328 WAVE 138 60 8280 1.42 Y a 0 none — MATCH (60 ins, relocation-masked) .run/backlog_drafts/func_8012A328.c
22 func_80138DE0 WAVE 138 60 8280 1.42 Y jr_801380E0 0 none — MATCH (60 ins) .run/backlog_drafts/func_80138DE0.c
23 func_801777BC WAVE 138 59 8142 1.40 Y jr_801734BC 29 body byte-matches; residual ~3 ins = prologue instruction-scheduling (final sll t8,16 / lw param_7 / `add… .run/backlog_drafts/func_801777BC.c
24 func_8012B77C WAVE 138 58 8004 1.37 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
25 func_801759D8 WAVE 138 56 7728 1.33 Y jr_801734BC 0 none — MATCH (56 ins) .run/backlog_drafts/func_801759D8.c
26 func_80175820 WAVE 138 55 7590 1.30 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
27 func_801758FC WAVE 138 55 7590 1.30 Y jr_801734BC 0 none — MATCH (55 ins) .run/backlog_drafts/func_801758FC.c
28 func_80176144 WAVE 138 53 7314 1.25 Y jr_801734BC 0 none — MATCH .run/backlog_drafts/func_80176144.c
29 func_8012F49C WAVE 138 51 7038 1.21 Y jr_8012ACE0 0 none — MATCH (51 ins, relocation-masked) .run/backlog_drafts/func_8012F49C.c
30 func_801376E8 WAVE 138 51 7038 1.21 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
31 func_80146750 WAVE 138 47 6486 1.11 Y after 45 WAVE: 45 mismatch .run/backlog_drafts/func_80146750.c
32 func_8014C4AC WAVE 138 47 6486 1.11 Y after 0 none — MATCH .run/backlog_drafts/func_8014C4AC.c
33 func_80161374 WAVE 138 41 5658 0.97 Y jr_8015C32C 10 none — MATCH (41/41 relocation-masked) .run/backlog_drafts/func_80161374.c
34 func_801778A8 WAVE 138 38 5244 0.90 Y jr_801734BC 36 WAVE: 36 mismatch .run/backlog_drafts/func_801778A8.c
35 func_80161888 WAVE 138 37 5106 0.88 Y jr_8015C32C 30 none — MATCH (proxy verified) .run/backlog_drafts/func_80161888.c
36 func_8012F40C WAVE 138 36 4968 0.85 Y jr_8012ACE0 0 none — MATCH (address rematerialized per call via caller-saved $a0 pin) .run/backlog_drafts/func_8012F40C.c
37 func_80144B14 WAVE 138 34 4692 0.80 Y main 31 none — MATCH (34 ins). Two stack structs (s16[3] each) passed by addr to .run/backlog_drafts/func_80144B14.c
38 func_8014F3E8 WAVE 138 32 4416 0.76 Y after 0 none — MATCH .run/backlog_drafts/func_8014F3E8.c
39 func_80147364 WAVE 138 30 4140 0.71 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
40 func_8016706C WAVE 138 30 4140 0.71 Y jr_8015C32C 0 none — MATCH (pending gate) .run/backlog_drafts/func_8016706C.c

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

O0 — 5 fns, 0.7% 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 0.64 Y o0 26 WAVE: 26 mismatch .run/backlog_drafts/func_8013C08C.c
2 func_8013B83C O0 1 272 272 0.05 Y o0
3 func_8013BD74 O0 1 198 198 0.03 Y o0 192 none — MATCH .run/backlog_drafts/func_8013BD74.c
4 func_8013B6A0 O0 1 67 67 0.01 Y o0
5 func_8013B598 O0 1 66 66 0.01 Y o0 66 WAVE: 66 mismatch .run/backlog_drafts/func_8013B598.c

O1 — 1 fns, 0.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 0.80 Y jr_8015C32C 26 WAVE: 26 mismatch .run/backlog_drafts/func_80161A90.c

STUB — 6 fns, 6.7% of remaining gain

# name class reach nins gain_ins %rem cached region close where it stuck best draft
1 func_801330E0 STUB 138 110 15180 2.60 Y jr_8012ACE0 7 STUB: 7 mismatch .run/backlog_drafts/func_801330E0.c
2 func_80158638 STUB 138 87 12006 2.06 Y jr_80154C24 1 STUB: 1 mismatch .run/backlog_drafts/func_80158638.c
3 func_8012EFB8 STUB 138 32 4416 0.76 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 138 29 4002 0.69 Y jr_8016AB6C 1 STUB: 1 mismatch .run/backlog_drafts/func_8016BA68.c
5 func_80162CCC STUB 138 23 3174 0.54 Y jr_8015C32C 0 match_one MATCH but gate rejected (declaration/TU plumbing) .run/backlog_drafts/func_80162CCC.c
6 func_80138C60 STUB 1 62 62 0.01 n jr_801380E0