mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 05:56:00 -04:00
41e454ec1f
- housekeeping: deleted stale root gccdump.lreg (gcc default -da RTL dump, dumpbase "gccdump"; a one-off RTL-inspection run at root CWD, NOT a committed tool). Practice: RTL dumps go to a .run/ CWD or -dumpbase .run/gccdump (R12) - make sig-overlays (134 sigs); worklist.py --refresh -> build_fuel_manifest + backlog render: docs/worklist.md + docs/backlog.md regenerated (stale Jun-26 ranking killed; the banked whale func_80144B9C dropped from backlog, P9) - fix tools/sig_image.py docstring: h_norm is the live norm_stream normalizer, not a "T5 placeholder" (R21/R30) - CURRENT_PHASE.md: Phase-25 plan-of-record + T0 frontier survey (R14): h_norm 2,764 multi-member families / 11.1 MB; 46% of large solo monsters (3,989/8,670) are family members; reach-134 h_exact warm-up = 130 classes / 4.11 MB
22 KiB
22 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 ×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: 130 · total remaining gain: 339,070 ins (1,356,280 bytes ×-fleet)
Idiom-class summary (the groups)
| class | count | gain_ins | % of remaining |
|---|---|---|---|
| GIANT | 1 | 26,532 | 7.8% |
| STRUCT | 20 | 30,501 | 9.0% |
| PINS | 8 | 24,438 | 7.2% |
| WAVE | 80 | 227,714 | 67.2% |
| O0 | 9 | 4,750 | 1.4% |
| STUB | 12 | 25,135 | 7.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 | 134 | 198 | 26532 | 7.82 | 7.8 | 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_80137DD4 | STRUCT | 134 | 129 | 17286 | 5.10 | 12.9 | Y | a | 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 |
| 3 | func_801325B8 | WAVE | 134 | 113 | 15142 | 4.47 | 17.4 | Y | a | 4 | 4/113 — prologue save-order of the $s0(cur/p3) vs $s5(p1) pair; gcc emits | .run/backlog_drafts/func_801325B8.c |
| 4 | func_801330E0 | STUB | 134 | 110 | 14740 | 4.35 | 21.7 | Y | a | 79 | none — MATCH (110/110 words byte-identical via objcopy raw .text, reloc-masked on jal+%hi/%lo(D_800AF648)). m… | .run/backlog_drafts/func_801330E0.c |
| 5 | func_8012CC88 | WAVE | 134 | 105 | 14070 | 4.15 | 25.9 | Y | a | 0 | none — MATCH (105 ins, relocation-masked) | .run/backlog_drafts/func_8012CC88.c |
| 6 | func_801387B8 | WAVE | 134 | 100 | 13400 | 3.95 | 29.8 | Y | a | 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 |
| 7 | func_801379FC | WAVE | 134 | 97 | 12998 | 3.83 | 33.7 | Y | a | 0 | none — MATCH (match_one 97/97) | .run/backlog_drafts/func_801379FC.c |
| 8 | func_8012B4B8 | WAVE | 134 | 84 | 11256 | 3.32 | 37.0 | Y | a | 0 | none — MATCH | .run/backlog_drafts/func_8012B4B8.c |
| 9 | func_8012E138 | WAVE | 134 | 81 | 10854 | 3.20 | 40.2 | Y | a | 0 | none — MATCH (81/81 ins, match_one proxy); reloaded ptr pinned to $a0 | .run/backlog_drafts/func_8012E138.c |
| 10 | func_8012A1BC | WAVE | 134 | 78 | 10452 | 3.08 | 43.3 | 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 |
| 11 | func_80137178 | WAVE | 134 | 78 | 10452 | 3.08 | 46.4 | Y | a | 15 | reg values all correct; prologue independent-addiu order + lazy sw placement differ | .run/backlog_drafts/func_80137178.c |
| 12 | func_8012E014 | WAVE | 134 | 73 | 9782 | 2.88 | 49.2 | Y | a | 0 | none — MATCH (expected; straightforward struct-field + global-copy body) | .run/backlog_drafts/func_8012E014.c |
| 13 | func_80132F40 | STRUCT | 134 | 72 | 9648 | 2.85 | 52.1 | Y | a | gcc gives src (sp+0x10) a 5th saved reg ($s3, frame 0x38 not 0x40); target rematerializes | .run/backlog_drafts/func_80132F40.c |
|
| 14 | func_80130C08 | WAVE | 134 | 65 | 8710 | 2.57 | 54.7 | Y | a | 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 |
| 15 | func_80133298 | WAVE | 134 | 65 | 8710 | 2.57 | 57.2 | Y | a | 0 | none — MATCH (65 ins, relocation-masked) | .run/backlog_drafts/func_80133298.c |
| 16 | func_80140D68 | WAVE | 134 | 65 | 8710 | 2.57 | 59.8 | 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 |
| 17 | func_80136F3C | WAVE | 134 | 61 | 8174 | 2.41 | 62.2 | Y | a | 10 | 10/61 — regalloc EXACT (param-copy + corner register-pins). residual = gcc list-scheduler permutation of the … | .run/backlog_drafts/func_80136F3C.c |
| 18 | func_8012A328 | WAVE | 134 | 60 | 8040 | 2.37 | 64.6 | Y | a | 0 | none — MATCH (60 ins, relocation-masked) | .run/backlog_drafts/func_8012A328.c |
| 19 | func_80130650 | WAVE | 134 | 60 | 8040 | 2.37 | 66.9 | Y | a | none — MATCH (60 ins). ((void (*)(void))func_801319E0)() called with NO arg in the >=0x10 branch (target jal+… | .run/backlog_drafts/func_80130650.c |
|
| 20 | func_80138DE0 | WAVE | 134 | 60 | 8040 | 2.37 | 69.3 | Y | a | 0 | none — MATCH (60 ins) | .run/backlog_drafts/func_80138DE0.c |
| 21 | func_8012B77C | WAVE | 134 | 58 | 7772 | 2.29 | 71.6 | Y | a | 33 | gcc instruction-scheduler load-ordering + 1st-ratan2 delay-slot fill differ (s2 subtraction lands early inste… | .run/backlog_drafts/func_8012B77C.c |
| 22 | func_8012F49C | WAVE | 134 | 51 | 6834 | 2.02 | 73.6 | Y | a | 29 | gcc CSEs the two &D_800AF648 into one call-crossing pseudo and allocates it the | .run/backlog_drafts/func_8012F49C.c |
| 23 | func_801376E8 | WAVE | 134 | 51 | 6834 | 2.02 | 75.6 | Y | a | 0 | none — MATCH (51 ins). 3 levers: (1) adjacent-field array u16 D_80126A14[] for A14/A16 | .run/backlog_drafts/func_801376E8.c |
| 24 | func_80136DFC | PINS | 134 | 50 | 6700 | 1.98 | 77.6 | Y | a | 0 | none — MATCH | .run/backlog_drafts/func_80136DFC.c |
| 25 | func_80129C40 | PINS | 134 | 46 | 6164 | 1.82 | 79.4 | Y | a | 0 | none — MATCH (array-of-struct %lo-fold for the two 3-element 0xA4-stride bases) | .run/backlog_drafts/func_80129C40.c |
| 26 | func_80130A18 | WAVE | 134 | 43 | 5762 | 1.70 | 81.1 | Y | a | none — MATCH (two separate Vec3s locals give the 8-byte-spaced sp+0x10/sp+0x18 blocks) | .run/backlog_drafts/func_80130A18.c |
|
| 27 | func_80131D68 | WAVE | 134 | 38 | 5092 | 1.50 | 82.6 | Y | a | 0 | return value held in $v0 per-path (no $s1 frame); using explicit returns | .run/backlog_drafts/func_80131D68.c |
| 28 | func_80131A34 | PINS | 134 | 37 | 4958 | 1.46 | 84.1 | Y | a | 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 |
| 29 | func_8012F40C | WAVE | 134 | 36 | 4824 | 1.42 | 85.5 | Y | a | 0 | none — MATCH (address rematerialized per call via caller-saved $a0 pin) | .run/backlog_drafts/func_8012F40C.c |
| 30 | func_8012A6D0 | STUB | 134 | 34 | 4556 | 1.34 | 86.9 | Y | a | 0 | none — MATCH (sum order p[2]^2 + p[0]^2, then ratan2(p1[1]-p2[1], (s16)dist)) | .run/backlog_drafts/func_8012A6D0.c |
| 31 | func_80144B14 | WAVE | 134 | 34 | 4556 | 1.34 | 88.2 | Y | main | 31 | none — MATCH (34 ins). Two stack structs (s16[3] each) passed by addr to | .run/backlog_drafts/func_80144B14.c |
| 32 | func_8012EFB8 | STUB | 134 | 32 | 4288 | 1.26 | 89.5 | Y | a | 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 |
| 33 | func_8012F274 | WAVE | 134 | 29 | 3886 | 1.15 | 90.6 | Y | a | 0 | none — MATCH (29 ins, match_one byte-clean via relocation-masked pipeline) | .run/backlog_drafts/func_8012F274.c |
| 34 | func_80131CF4 | WAVE | 134 | 29 | 3886 | 1.15 | 91.8 | Y | a | 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 |
| 35 | func_80141B90 | PINS | 134 | 29 | 3886 | 1.15 | 92.9 | Y | main | 24 | none — MATCH (29 ins); array-of-int %lo-fold + call + u16 if-block; volatile-double reserves the target's 8-b… | .run/backlog_drafts/func_80141B90.c |
| 36 | func_8013C08C | O0 | 134 | 27 | 3618 | 1.07 | 94.0 | Y | o0 | |||
| 37 | func_80137614 | WAVE | 134 | 26 | 3484 | 1.03 | 95.0 | Y | a | 0 | none — MATCH (sibling func_8013767C pattern; all 3 params live across the call) | .run/backlog_drafts/func_80137614.c |
| 38 | func_8012A598 | WAVE | 134 | 24 | 3216 | 0.95 | 96.0 | Y | a | 0 | none — MATCH (24 ins, relocation-masked) | .run/backlog_drafts/func_8012A598.c |
| 39 | func_80131CA8 | PINS | 134 | 19 | 2546 | 0.75 | 96.7 | Y | a | 0 | none — MATCH (call-through-fnptr dispatcher: explicit return 1/return 0) | .run/backlog_drafts/func_80131CA8.c |
| 40 | func_8013F350 | STRUCT | 1 | 490 | 490 | 0.14 | 96.8 | Y | main |
GIANT hand-decomp queue — 1 fns, 7.8% 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 | 7.82 | 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 |
Idiom-group tables
STRUCT — 20 fns, 9.0% 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 | 5.10 | Y | a | 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 | 2.85 | Y | a | gcc gives src (sp+0x10) a 5th saved reg ($s3, frame 0x38 not 0x40); target rematerializes | .run/backlog_drafts/func_80132F40.c |
|
| 3 | func_8013F350 | STRUCT | 1 | 490 | 490 | 0.14 | Y | main | |||
| 4 | func_801380E0 | STRUCT | 1 | 438 | 438 | 0.13 | n | a | |||
| 5 | func_80131340 | STRUCT | 1 | 424 | 424 | 0.13 | n | a | |||
| 6 | func_80135EB0 | STRUCT | 1 | 289 | 289 | 0.09 | n | a | |||
| 7 | func_80134C20 | STRUCT | 1 | 230 | 230 | 0.07 | n | a | |||
| 8 | func_8013FFD8 | STRUCT | 1 | 213 | 213 | 0.06 | Y | main | |||
| 9 | func_8014032C | STRUCT | 1 | 183 | 183 | 0.05 | Y | main | |||
| 10 | func_80135A4C | STRUCT | 1 | 181 | 181 | 0.05 | n | a | |||
| 11 | func_801347A0 | STRUCT | 1 | 162 | 162 | 0.05 | n | a | |||
| 12 | func_801299C8 | STRUCT | 1 | 158 | 158 | 0.05 | n | a | |||
| 13 | func_8012C890 | STRUCT | 1 | 149 | 149 | 0.04 | n | a | |||
| 14 | func_80135260 | STRUCT | 1 | 136 | 136 | 0.04 | n | a | |||
| 15 | func_8012AAAC | STRUCT | 1 | 125 | 125 | 0.04 | n | a | |||
| 16 | func_80140608 | STRUCT | 1 | 123 | 123 | 0.04 | Y | main | |||
| 17 | func_80135888 | STRUCT | 1 | 113 | 113 | 0.03 | n | a | |||
| 18 | func_80135D20 | STRUCT | 1 | 100 | 100 | 0.03 | n | a | |||
| 19 | func_80142A10 | STRUCT | 1 | 28 | 28 | 0.01 | Y | main | 1 | none — MATCH (pending byte-gate) | .run/backlog_drafts/func_80142A10.c |
| 20 | func_8012ACE0 | STRUCT | 1 | 25 | 25 | 0.01 | n | a | 21 | STRUCT: 21 mismatch | .run/backlog_drafts/func_8012ACE0.c |
PINS — 8 fns, 7.2% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_80136DFC | PINS | 134 | 50 | 6700 | 1.98 | Y | a | 0 | none — MATCH | .run/backlog_drafts/func_80136DFC.c |
| 2 | func_80129C40 | PINS | 134 | 46 | 6164 | 1.82 | Y | a | 0 | none — MATCH (array-of-struct %lo-fold for the two 3-element 0xA4-stride bases) | .run/backlog_drafts/func_80129C40.c |
| 3 | func_80131A34 | PINS | 134 | 37 | 4958 | 1.46 | Y | a | 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 |
| 4 | func_80141B90 | PINS | 134 | 29 | 3886 | 1.15 | Y | main | 24 | none — MATCH (29 ins); array-of-int %lo-fold + call + u16 if-block; volatile-double reserves the target's 8-b… | .run/backlog_drafts/func_80141B90.c |
| 5 | func_80131CA8 | PINS | 134 | 19 | 2546 | 0.75 | Y | a | 0 | none — MATCH (call-through-fnptr dispatcher: explicit return 1/return 0) | .run/backlog_drafts/func_80131CA8.c |
| 6 | func_80141A60 | PINS | 1 | 76 | 76 | 0.02 | Y | main | 63 | none — MATCH (76 ins, relocation-masked). Body byte-identical; target reserves an 8-byte | .run/backlog_drafts/func_80141A60.c |
| 7 | func_8013E83C | PINS | 1 | 71 | 71 | 0.02 | Y | main | none — MATCH (scalar global stores + 2 conditional calls; §3-T4 branch-polarity invert on the &0xFF test) | .run/backlog_drafts/func_8013E83C.c |
|
| 8 | func_80140E6C | PINS | 1 | 37 | 37 | 0.01 | Y | main | 4 | 4 ins — each save-across-call copy (move s1,v0 / move s0,v0) should fill the NEXT jal's delay slot (target) b… | .run/backlog_drafts/func_80140E6C.c |
WAVE — 80 fns, 67.2% of remaining gain
| # | name | class | reach | nins | gain_ins | %rem | cached | region | close | where it stuck | best draft |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | func_801325B8 | WAVE | 134 | 113 | 15142 | 4.47 | Y | a | 4 | 4/113 — prologue save-order of the $s0(cur/p3) vs $s5(p1) pair; gcc emits | .run/backlog_drafts/func_801325B8.c |
| 2 | func_8012CC88 | WAVE | 134 | 105 | 14070 | 4.15 | Y | a | 0 | none — MATCH (105 ins, relocation-masked) | .run/backlog_drafts/func_8012CC88.c |
| 3 | func_801387B8 | WAVE | 134 | 100 | 13400 | 3.95 | Y | a | 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 |
| 4 | func_801379FC | WAVE | 134 | 97 | 12998 | 3.83 | Y | a | 0 | none — MATCH (match_one 97/97) | .run/backlog_drafts/func_801379FC.c |
| 5 | func_8012B4B8 | WAVE | 134 | 84 | 11256 | 3.32 | Y | a | 0 | none — MATCH | .run/backlog_drafts/func_8012B4B8.c |
| 6 | func_8012E138 | WAVE | 134 | 81 | 10854 | 3.20 | Y | a | 0 | none — MATCH (81/81 ins, match_one proxy); reloaded ptr pinned to $a0 | .run/backlog_drafts/func_8012E138.c |
| 7 | func_8012A1BC | WAVE | 134 | 78 | 10452 | 3.08 | 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 |
| 8 | func_80137178 | WAVE | 134 | 78 | 10452 | 3.08 | Y | a | 15 | reg values all correct; prologue independent-addiu order + lazy sw placement differ | .run/backlog_drafts/func_80137178.c |
| 9 | func_8012E014 | WAVE | 134 | 73 | 9782 | 2.88 | Y | a | 0 | none — MATCH (expected; straightforward struct-field + global-copy body) | .run/backlog_drafts/func_8012E014.c |
| 10 | func_80130C08 | WAVE | 134 | 65 | 8710 | 2.57 | Y | a | 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 |
| 11 | func_80133298 | WAVE | 134 | 65 | 8710 | 2.57 | Y | a | 0 | none — MATCH (65 ins, relocation-masked) | .run/backlog_drafts/func_80133298.c |
| 12 | func_80140D68 | WAVE | 134 | 65 | 8710 | 2.57 | 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 |
| 13 | func_80136F3C | WAVE | 134 | 61 | 8174 | 2.41 | Y | a | 10 | 10/61 — regalloc EXACT (param-copy + corner register-pins). residual = gcc list-scheduler permutation of the … | .run/backlog_drafts/func_80136F3C.c |
| 14 | func_8012A328 | WAVE | 134 | 60 | 8040 | 2.37 | Y | a | 0 | none — MATCH (60 ins, relocation-masked) | .run/backlog_drafts/func_8012A328.c |
| 15 | func_80130650 | WAVE | 134 | 60 | 8040 | 2.37 | Y | a | none — MATCH (60 ins). ((void (*)(void))func_801319E0)() called with NO arg in the >=0x10 branch (target jal+… | .run/backlog_drafts/func_80130650.c |
|
| 16 | func_80138DE0 | WAVE | 134 | 60 | 8040 | 2.37 | Y | a | 0 | none — MATCH (60 ins) | .run/backlog_drafts/func_80138DE0.c |
| 17 | func_8012B77C | WAVE | 134 | 58 | 7772 | 2.29 | Y | a | 33 | gcc instruction-scheduler load-ordering + 1st-ratan2 delay-slot fill differ (s2 subtraction lands early inste… | .run/backlog_drafts/func_8012B77C.c |
| 18 | func_8012F49C | WAVE | 134 | 51 | 6834 | 2.02 | Y | a | 29 | gcc CSEs the two &D_800AF648 into one call-crossing pseudo and allocates it the | .run/backlog_drafts/func_8012F49C.c |
| 19 | func_801376E8 | WAVE | 134 | 51 | 6834 | 2.02 | Y | a | 0 | none — MATCH (51 ins). 3 levers: (1) adjacent-field array u16 D_80126A14[] for A14/A16 | .run/backlog_drafts/func_801376E8.c |
| 20 | func_80130A18 | WAVE | 134 | 43 | 5762 | 1.70 | Y | a | none — MATCH (two separate Vec3s locals give the 8-byte-spaced sp+0x10/sp+0x18 blocks) | .run/backlog_drafts/func_80130A18.c |
|
| 21 | func_80131D68 | WAVE | 134 | 38 | 5092 | 1.50 | Y | a | 0 | return value held in $v0 per-path (no $s1 frame); using explicit returns | .run/backlog_drafts/func_80131D68.c |
| 22 | func_8012F40C | WAVE | 134 | 36 | 4824 | 1.42 | Y | a | 0 | none — MATCH (address rematerialized per call via caller-saved $a0 pin) | .run/backlog_drafts/func_8012F40C.c |
| 23 | func_80144B14 | WAVE | 134 | 34 | 4556 | 1.34 | Y | main | 31 | none — MATCH (34 ins). Two stack structs (s16[3] each) passed by addr to | .run/backlog_drafts/func_80144B14.c |
| 24 | func_8012F274 | WAVE | 134 | 29 | 3886 | 1.15 | Y | a | 0 | none — MATCH (29 ins, match_one byte-clean via relocation-masked pipeline) | .run/backlog_drafts/func_8012F274.c |
| 25 | func_80131CF4 | WAVE | 134 | 29 | 3886 | 1.15 | Y | a | 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 |
| 26 | func_80137614 | WAVE | 134 | 26 | 3484 | 1.03 | Y | a | 0 | none — MATCH (sibling func_8013767C pattern; all 3 params live across the call) | .run/backlog_drafts/func_80137614.c |
| 27 | func_8012A598 | WAVE | 134 | 24 | 3216 | 0.95 | Y | a | 0 | none — MATCH (24 ins, relocation-masked) | .run/backlog_drafts/func_8012A598.c |
| 28 | func_8013FAF8 | WAVE | 1 | 312 | 312 | 0.09 | Y | main | |||
| 29 | func_80130D48 | WAVE | 1 | 266 | 266 | 0.08 | n | a | |||
| 30 | func_80140958 | WAVE | 1 | 260 | 260 | 0.08 | Y | main | |||
| 31 | func_80135480 | WAVE | 1 | 258 | 258 | 0.08 | n | a | |||
| 32 | func_8012956C | WAVE | 1 | 226 | 226 | 0.07 | n | a | |||
| 33 | func_80133784 | WAVE | 1 | 203 | 203 | 0.06 | n | a | |||
| 34 | func_8013DD68 | WAVE | 1 | 187 | 187 | 0.06 | Y | main | |||
| 35 | func_80136334 | WAVE | 1 | 161 | 161 | 0.05 | n | a | |||
| 36 | func_80136824 | WAVE | 1 | 156 | 156 | 0.05 | n | a | |||
| 37 | func_801365B8 | WAVE | 1 | 155 | 155 | 0.05 | n | a | |||
| 38 | func_80133AB0 | WAVE | 1 | 137 | 137 | 0.04 | n | a | |||
| 39 | func_8013EB7C | WAVE | 1 | 124 | 124 | 0.04 | Y | main | |||
| 40 | func_8013D178 | WAVE | 1 | 110 | 110 | 0.03 | Y | main |
(+40 more WAVE fns — see .run/worklist.json)
O0 — 9 fns, 1.4% 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 | 1.07 | Y | o0 | |||
| 2 | func_8013C414 | O0 | 1 | 329 | 329 | 0.10 | Y | o0 | |||
| 3 | func_8013B83C | O0 | 1 | 272 | 272 | 0.08 | Y | o0 | |||
| 4 | func_8013BD74 | O0 | 1 | 198 | 198 | 0.06 | Y | o0 | |||
| 5 | func_8013C0F8 | O0 | 1 | 154 | 154 | 0.05 | Y | o0 | |||
| 6 | func_8013B6A0 | O0 | 1 | 67 | 67 | 0.02 | Y | o0 | |||
| 7 | func_8013B598 | O0 | 1 | 66 | 66 | 0.02 | Y | o0 | |||
| 8 | func_8013BC7C | O0 | 1 | 24 | 24 | 0.01 | Y | o0 | |||
| 9 | func_8013BCDC | O0 | 1 | 22 | 22 | 0.01 | Y | o0 |
STUB — 12 fns, 7.4% 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 | 4.35 | Y | a | 79 | none — MATCH (110/110 words byte-identical via objcopy raw .text, reloc-masked on jal+%hi/%lo(D_800AF648)). m… | .run/backlog_drafts/func_801330E0.c |
| 2 | func_8012A6D0 | STUB | 134 | 34 | 4556 | 1.34 | Y | a | 0 | none — MATCH (sum order p[2]^2 + p[0]^2, then ratan2(p1[1]-p2[1], (s16)dist)) | .run/backlog_drafts/func_8012A6D0.c |
| 3 | func_8012EFB8 | STUB | 134 | 32 | 4288 | 1.26 | Y | a | 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_80133CD4 | STUB | 1 | 399 | 399 | 0.12 | n | a | |||
| 5 | func_8013CB84 | STUB | 1 | 249 | 249 | 0.07 | Y | main | |||
| 6 | func_8013D53C | STUB | 1 | 240 | 240 | 0.07 | Y | main | |||
| 7 | func_8013B274 | STUB | 1 | 189 | 189 | 0.06 | n | a | |||
| 8 | func_8013D9B0 | STUB | 1 | 141 | 141 | 0.04 | Y | main | |||
| 9 | func_80140F00 | STUB | 1 | 128 | 128 | 0.04 | Y | main | |||
| 10 | func_8013AD38 | STUB | 1 | 122 | 122 | 0.04 | n | a | |||
| 11 | func_80138C60 | STUB | 1 | 62 | 62 | 0.02 | n | a | |||
| 12 | func_801336E8 | STUB | 1 | 21 | 21 | 0.01 | n | a | won't compile standalone (loose-typing / missing decl) |