mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-26 13:33:34 -04:00
93d2851ab2
- 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
25 KiB
25 KiB
Worklist — remaining functions ranked by byte-weighted project gain
Generated by
tools/worklist.pyfrom.run/fuel_manifest.json+.run/backlog.jsonl. Ranked by byte-weighted gaingain_ins = reach × nins(fleet instructions made byte-identical once matched and propagated ×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 |