Files
BFM-decomp/docs/worklist.md
T
Drew T b234130666 chore(phase-22): session checkpoint — reports regen + resume pointer (fleet 63.22%, grinder stopped)
- docs/{worklist,backlog,progress.fleet}.md regenerated after the func_8015126C x134 bank
- CURRENT_PHASE.md: RESUME HERE block (T2 giant queue + levers + op gotchas) for a fresh session
- grinder stopped (STOP sentinel set); tree clean except R23 db churn
2026-06-26 03:16:39 -06:00

12 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: 450 · total remaining gain: 1,815,388 ins (7,261,552 bytes ×-fleet)

Idiom-class summary (the groups)

class count gain_ins % of remaining
GIANT 22 654,322 36.0%
STRUCT 89 44,240 2.4%
PINS 38 94,641 5.2%
WAVE 256 927,207 51.1%
O0 9 4,750 0.3%
O1 1 4,556 0.3%
STUB 35 85,672 4.7%

Top 5 remaining gains (all classes)

# name class reach nins gain_ins %rem cum% cached region close where it stuck best draft
1 func_80144B9C GIANT 134 770 103180 5.68 5.7 Y main -O0 cluster fn (prologue 21F0A003, fp-frame, all locals spilled+reloaded, load-delay nops). match_one compile… .run/backlog_drafts/func_80144B9C.c
2 func_80132784 GIANT 134 400 53600 2.95 8.6 Y a 240 240/400 — prologue+frame+Blk16+both GTE pipelines match through idx114; residual is else-branch pu pointer ($… .run/backlog_drafts/func_80132784.c
3 func_8014EE14 GIANT 134 248 33232 1.83 10.5 Y main 6 §20 store-vs-load tie-break (x2 loops); frame/regalloc/control-flow/constants byte-exact; no pins/asm -> perm… .run/backlog_drafts/func_8014EE14.c
4 func_80156B74 GIANT 134 214 28676 1.58 12.0 Y main 0 none — MATCH (214 ins). Keys: (1) S8 struct-array idiom for D_80126AF0 (8-byte .run/backlog_drafts/func_80156B74.c
5 func_80148094 GIANT 134 213 28542 1.57 13.6 Y main 107 ~39/213 residual (LCS), all in the sVar1>=0x201 clamp blocks: $v0/$v1 mflo regalloc swap + coupled branch-pol… .run/backlog_drafts/func_80148094.c

GIANT hand-decomp queue — 22 fns, 36.0% of all remaining gain

# name class reach nins gain_ins %rem cached region close where it stuck best draft
1 func_80144B9C GIANT 134 770 103180 5.68 Y main -O0 cluster fn (prologue 21F0A003, fp-frame, all locals spilled+reloaded, load-delay nops). match_one compile… .run/backlog_drafts/func_80144B9C.c
2 func_80132784 GIANT 134 400 53600 2.95 Y a 240 240/400 — prologue+frame+Blk16+both GTE pipelines match through idx114; residual is else-branch pu pointer ($… .run/backlog_drafts/func_80132784.c
3 func_8014EE14 GIANT 134 248 33232 1.83 Y main 6 §20 store-vs-load tie-break (x2 loops); frame/regalloc/control-flow/constants byte-exact; no pins/asm -> perm… .run/backlog_drafts/func_8014EE14.c
4 func_80156B74 GIANT 134 214 28676 1.58 Y main 0 none — MATCH (214 ins). Keys: (1) S8 struct-array idiom for D_80126AF0 (8-byte .run/backlog_drafts/func_80156B74.c
5 func_80148094 GIANT 134 213 28542 1.57 Y main 107 ~39/213 residual (LCS), all in the sVar1>=0x201 clamp blocks: $v0/$v1 mflo regalloc swap + coupled branch-pol… .run/backlog_drafts/func_80148094.c
6 func_801372B0 GIANT 134 207 27738 1.53 Y a won't compile standalone (loose-typing / missing decl)
7 func_8013A530 GIANT 134 204 27336 1.51 Y a won't compile standalone (loose-typing / missing decl)
8 func_801412A8 GIANT 134 198 26532 1.46 Y main 154 154-mismatch near-miss (198/198 ins, structure+branches exact). Two irreducible gcc residuals: (1) HEAD: held… .run/backlog_drafts/func_801412A8.c
9 func_801571C4 GIANT 134 198 26532 1.46 Y main 24 body byte-perfect + 9 callee-reg maps + frame 0x60; residual = prologue schedule order + local_40/38 slot swa… .run/backlog_drafts/func_801571C4.c
10 func_80129CF8 GIANT 134 191 25594 1.41 Y a won't compile standalone (loose-typing / missing decl)
11 func_8012D098 GIANT 134 189 25326 1.40 Y a won't compile standalone (loose-typing / missing decl)
12 func_8013AF20 GIANT 134 185 24790 1.37 Y a won't compile standalone (loose-typing / missing decl)
13 func_8014EA4C GIANT 134 183 24522 1.35 Y main 6 raw close=6: D_801150D8=0 store between a0/a1 loads + abs($v1 move vs in-place negu) pressure-locked by buf[1… .run/drafts-giants/func_8014EA4C.c
14 func_801392FC GIANT 134 182 24388 1.34 Y a won't compile standalone (loose-typing / missing decl)
15 func_8012EC04 GIANT 134 178 23852 1.31 Y a won't compile standalone (loose-typing / missing decl)
16 func_8014F74C GIANT 134 174 23316 1.28 Y main 0 none — MATCH (174 ins). Last mile: §5a volatile barrier blocked gcc jump-threading .run/backlog_drafts/func_8014F74C.c
17 func_80163C2C GIANT 134 167 22378 1.23 Y main 0 none — MATCH (167 ins) .run/backlog_drafts/func_80163C2C.c
18 func_80178004 GIANT 134 165 22110 1.22 Y main 0 none — MATCH (full register pins per sibling func_80177EA4; running-ptr $s2 to stop unroll-rebase; .run/backlog_drafts/func_80178004.c
19 func_80138ED0 GIANT 134 159 21306 1.17 Y a won't compile standalone (loose-typing / missing decl)
20 func_80144090 GIANT 134 154 20636 1.14 Y main 25 raw close=25: caller-saved temp-reg coalescing in final ring-vertex block (iVar4 mflo->$a3 vs $v0; subu reuse… .run/drafts-giants/func_80144090.c
21 func_80176D94 GIANT 134 152 20368 1.12 Y main 63 63/152 — frame+prologue+4 calls+2x(801783D0/801777BC) MATCH (pins $s0=uVar2/$s2=param_2 + CSE-break barrier);… .run/backlog_drafts/func_80176D94.c
22 func_801770E0 GIANT 134 152 20368 1.12 Y main 53 callee-saved regalloc EXACT (param_2->$s2, iVar6->$s1, uVar5/spill->$s0, consts 3/0xB8/0xFF->$s5/$s4/$s3). .run/backlog_drafts/func_801770E0.c

Idiom-group tables

STRUCT — 89 fns, 2.4% 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 0.95 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 0.53 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_801719A4 STRUCT 134 24 3216 0.18 Y main 25 none — MATCH (24 ins, relocation-masked) .run/backlog_drafts/func_801719A4.c
4 func_8017C974 STRUCT 1 947 947 0.05 Y main
5 func_80178D40 STRUCT 1 890 890 0.05 Y main

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

PINS — 38 fns, 5.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.44 Y main 23 none — MATCH .run/backlog_drafts/func_8014E5B4.c
2 func_80151C54 PINS 134 52 6968 0.38 Y main none — MATCH (52 ins). Branch-polarity §3-T4: BD60 arm is fall-through (if !=1 && ==0x11), BC44 is else. .run/backlog_drafts/func_80151C54.c
3 func_80136DFC PINS 134 50 6700 0.37 Y a 0 none — MATCH .run/backlog_drafts/func_80136DFC.c
4 func_8015F380 PINS 134 50 6700 0.37 Y main 0 none — expect MATCH (single call-crossing local pinned to $s0) .run/backlog_drafts/func_8015F380.c
5 func_80151B98 PINS 134 47 6298 0.35 Y main none — MATCH .run/backlog_drafts/func_80151B98.c

(+33 more PINS fns — see .run/worklist.json)

WAVE — 256 fns, 51.1% of remaining gain

# name class reach nins gain_ins %rem cached region close where it stuck best draft
1 func_80155800 WAVE 134 145 19430 1.07 Y main won't compile standalone (loose-typing / missing decl) .run/backlog_drafts/func_80155800.c
2 func_8014E048 WAVE 134 143 19162 1.06 Y main won't compile standalone (loose-typing / missing decl) .run/backlog_drafts/func_8014E048.c
3 func_8014F4C0 WAVE 134 141 18894 1.04 Y main won't compile standalone (loose-typing / missing decl) .run/backlog_drafts/func_8014F4C0.c
4 func_8014ADE0 WAVE 134 139 18626 1.03 Y main 19 16 ins off — all compiler-internal ties: (1) 0xAAA8 const lands $v0 vs target $v1; .run/backlog_drafts/func_8014ADE0.c
5 func_80174CB0 WAVE 134 123 16482 0.91 Y main 0 none — MATCH (match_one 123/123). Levers: (1) §21 one combined stack struct {s32 a[5]; ...} .run/backlog_drafts/func_80174CB0.c

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

O0 — 9 fns, 0.3% 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.20 Y o0
2 func_8013C414 O0 1 329 329 0.02 Y o0
3 func_8013B83C O0 1 272 272 0.01 Y o0
4 func_8013BD74 O0 1 198 198 0.01 Y o0
5 func_8013C0F8 O0 1 154 154 0.01 Y o0

(+4 more O0 fns — see .run/worklist.json)

O1 — 1 fns, 0.3% 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.25 Y main none — MATCH (34 ins) at the overlay's STANDARD -O2 (match_one reports MATCH). NO -O1 split needed. .run/backlog_drafts/func_80161A90.c

STUB — 35 fns, 4.7% 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 0.81 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_80158638 STUB 134 87 11658 0.64 Y main 2 none — MATCH (proxy); callee externs are plain func_, gate's canon/cast passes own them .run/backlog_drafts/func_80158638.c
3 func_80173BC0 STUB 134 41 5494 0.30 Y main none — MATCH. Keys: invert mask branch (else-block = 80174650 path so func_8013E588 .run/backlog_drafts/func_80173BC0.c
4 func_8012A6D0 STUB 134 34 4556 0.25 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
5 func_8012EFB8 STUB 134 32 4288 0.24 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

(+30 more STUB fns — see .run/worklist.json)