mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 15:43:06 -04:00
src(phase-36): T6 rung D banked — the four exemplars the permuter closed, tidied and byte-judged (R22 218/218)
- delever_permute --bank: 4 winners applied through delever --apply-body, each IDENTICAL on its own object; the winner is now TIDIED first (pycparser reprints a body it parsed: two-space indent and a corpse `;` where a statement was inlined away) and the tidy is judged like any other candidate, so the source keeps the tree's shape; parenthesisation and brace style are deliberately left to the formatting phase, over the whole tree at once - a slip, named: --bank re-applied a permuter body over the ONE-LINE version rung R had already banked for func_80135D20; the clean text was restored through the oracle (label d1fix) and --bank now skips any body the ledger already calls LEVER-FREE - --recipes is killable now: the oracle writes the candidate into the tree to compile it, so the original goes into inflight.json first (P35's rule: a tool restores from its own snapshot) — a killed run had left a candidate in src/ - rung R's R6 generalised from "assigned once, read once" to "dead after one read" (the lever rung D actually found: uVar5 is assigned in two branches and only one was inlined); it still does not reproduce that class's win, which is recorded as an open item rather than papered over - lever_census: 33,953 sites (was 33,957), 0 UNMARKED; lever_progress snapshot "T6 d1"; R22 218 passed, 0 failed of 218
This commit is contained in:
@@ -72,15 +72,15 @@
|
||||
"binaries": 218,
|
||||
"classes": {
|
||||
"A": {
|
||||
"bodies": 10195,
|
||||
"bodies": 10191,
|
||||
"distinct_bodies": 1330,
|
||||
"file_scope": 0,
|
||||
"in_bodies": 20512,
|
||||
"in_bodies": 20508,
|
||||
"kinds": {
|
||||
"pin": 20512
|
||||
"pin": 20508
|
||||
},
|
||||
"marked": 20512,
|
||||
"sites": 20512,
|
||||
"marked": 20508,
|
||||
"sites": 20508,
|
||||
"tus": 2577,
|
||||
"unmarked": 0
|
||||
},
|
||||
@@ -207,9 +207,9 @@
|
||||
"coverage": {
|
||||
"asm": {
|
||||
"comment_dead": 6792,
|
||||
"live": 43864,
|
||||
"live": 43860,
|
||||
"macro_block": 194,
|
||||
"raw": 50850
|
||||
"raw": 50846
|
||||
},
|
||||
"attribute": {
|
||||
"comment_dead": 0,
|
||||
@@ -225,9 +225,9 @@
|
||||
},
|
||||
"register": {
|
||||
"comment_dead": 8587,
|
||||
"live": 20562,
|
||||
"live": 20558,
|
||||
"macro_block": 18,
|
||||
"raw": 29167
|
||||
"raw": 29163
|
||||
},
|
||||
"volatile": {
|
||||
"comment_dead": 2607,
|
||||
@@ -237,7 +237,7 @@
|
||||
}
|
||||
},
|
||||
"coverage_ok": true,
|
||||
"elapsed_s": 35.5,
|
||||
"elapsed_s": 36.4,
|
||||
"generated": "2026-09-09",
|
||||
"gte_levers": {
|
||||
"direct": 362,
|
||||
@@ -248,15 +248,15 @@
|
||||
"via_macro": 100,
|
||||
"what": "GTE ops whose clobbers exceed the canonical macro's (a scheduling steer): class-B levers INSIDE the headline number since T5 (2026-09-09), marked, 0 at the close"
|
||||
},
|
||||
"head": "1761a3125",
|
||||
"head": "8fac96651",
|
||||
"headers": 3181,
|
||||
"levers_AB": {
|
||||
"asm": 13445,
|
||||
"bodies": 12578,
|
||||
"bodies": 12574,
|
||||
"distinct_bodies": 1758,
|
||||
"marked": 33957,
|
||||
"pins": 20512,
|
||||
"sites": 33957,
|
||||
"marked": 33953,
|
||||
"pins": 20508,
|
||||
"sites": 33953,
|
||||
"unmarked": 0,
|
||||
"what": "register pins + asm statements excluding GTE ops: the classes the phase drives to 0"
|
||||
},
|
||||
@@ -399,11 +399,11 @@
|
||||
"$13": 6,
|
||||
"$14": 139,
|
||||
"$15": 1,
|
||||
"$16": 1764,
|
||||
"$17": 1358,
|
||||
"$16": 1763,
|
||||
"$17": 1357,
|
||||
"$18": 464,
|
||||
"$19": 588,
|
||||
"$2": 3834,
|
||||
"$2": 3832,
|
||||
"$20": 286,
|
||||
"$21": 408,
|
||||
"$22": 7,
|
||||
@@ -424,28 +424,28 @@
|
||||
"v0": 2,
|
||||
"v1": 5
|
||||
},
|
||||
"sites": 20512,
|
||||
"sites": 20508,
|
||||
"sp": 13,
|
||||
"spelling": {
|
||||
"__asm__": 20410,
|
||||
"__asm__": 20406,
|
||||
"asm": 102
|
||||
},
|
||||
"volatile_qualified": 134,
|
||||
"zero": 1321
|
||||
},
|
||||
"src_stamp": "08cc85e727e5882a",
|
||||
"src_stamp": "60ed465042fd2475",
|
||||
"tus": 4121,
|
||||
"unclassified": 0,
|
||||
"union_AD": {
|
||||
"bodies": 15827,
|
||||
"bodies": 15823,
|
||||
"by_kind": {
|
||||
"main": 180,
|
||||
"md": 182,
|
||||
"ov": 15125,
|
||||
"ov": 15121,
|
||||
"resident": 12,
|
||||
"shared": 328
|
||||
},
|
||||
"copies_in_multi": 14197,
|
||||
"copies_in_multi": 14193,
|
||||
"distinct_bodies": 2030,
|
||||
"multi_copy_classes": 400
|
||||
},
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclassified 0 · verbatim excluded 13 fn / 14 sites (manifest 13)
|
||||
coverage asm raw 50850 = live 43864 + macro-block 194 + comment/dead 6792
|
||||
coverage register raw 29167 = live 20562 + macro-block 18 + comment/dead 8587
|
||||
coverage asm raw 50846 = live 43860 + macro-block 194 + comment/dead 6792
|
||||
coverage register raw 29163 = live 20558 + macro-block 18 + comment/dead 8587
|
||||
coverage volatile raw 4858 = live 2169 + macro-block 82 + comment/dead 2607
|
||||
coverage builtin raw 599 = live 445 + macro-block 0 + comment/dead 154
|
||||
coverage attribute raw 76 = live 76 + macro-block 0 + comment/dead 0
|
||||
class sites in-bodies file-scope bodies distinct TUs marked unmarked kinds
|
||||
A pins 20512 20512 0 10195 1330 2577 20512 0 {'pin': 20512}
|
||||
B asm 22988 22975 13 9766 1063 2297 13711 9277 {'barrier': 4578, 'instruction': 1712, 'launder': 4680, 'keepalive': 2000, 'gte': 6858, 'gte-lever': 462, 'gte-unsigned': 3, 'asm-body': 13, 'verbatim-body': 2682}
|
||||
C volatile 1722 1570 152 628 97 612 14 1708 {'decl-body': 58, 'decl-file': 152, 'cast': 1510, 'param': 2}
|
||||
A pins 20508 20508 0 10191 1330 2577 20508 0 {'pin': 20508}
|
||||
B asm 22988 22975 13 9766 1063 2297 13711 9277 {'barrier': 4578, 'launder': 4680, 'keepalive': 2000, 'instruction': 1712, 'gte': 6858, 'gte-lever': 462, 'gte-unsigned': 3, 'asm-body': 13, 'verbatim-body': 2682}
|
||||
C volatile 1722 1570 152 628 97 612 14 1708 {'cast': 1510, 'decl-body': 58, 'decl-file': 152, 'param': 2}
|
||||
D register 50 50 0 47 47 6 0 50 {'register': 50}
|
||||
E asm-label 7428 1005 6423 737 117 2080 0 7428 {'asm-label': 7428}
|
||||
F builtin 445 445 0 428 27 302 0 445 {'builtin': 445}
|
||||
G attribute 76 1 75 1 1 40 0 76 {'attribute': 76}
|
||||
UNION A–D: 15,827 bodies · 2,030 distinct (addresses normalized) · 400 multi-copy classes holding 14,197 bodies · by kind {'ov': 15125, 'main': 180, 'md': 182, 'shared': 328, 'resident': 12}
|
||||
THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,957 sites in 12,578 bodies (1,758 distinct) · marked !FAKE 33,957 · UNMARKED 0
|
||||
UNION A–D: 15,823 bodies · 2,030 distinct (addresses normalized) · 400 multi-copy classes holding 14,193 bodies · by kind {'ov': 15121, 'main': 180, 'shared': 328, 'md': 182, 'resident': 12}
|
||||
THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 33,953 sites in 12,574 bodies (1,758 distinct) · marked !FAKE 33,953 · UNMARKED 0
|
||||
orphan !FAKE markers (no pin/asm site on the line nor below): 0
|
||||
GTE levers (clobbers beyond the canonical macro's): 462 sites (100 via a variant macro, 362 direct) · marked 462 · UNMARKED 0 · unsigned GTE statements 3
|
||||
per-TU asm macro definitions outside the GTE header: 314 {'gte': 150, 'launder': 154, 'instruction': 9, 'barrier': 1} (GTE variants 64)
|
||||
pins: 20,512 · $0 1,321 · $sp 13 · with initializer 2,776 · volatile-qualified 134 · bare-name 25 · spellings {'__asm__': 20410, 'asm': 102}
|
||||
per-TU asm macro definitions outside the GTE header: 314 {'launder': 154, 'gte': 150, 'instruction': 9, 'barrier': 1} (GTE variants 64)
|
||||
pins: 20,508 · $0 1,321 · $sp 13 · with initializer 2,776 · volatile-qualified 134 · bare-name 25 · spellings {'__asm__': 20406, 'asm': 102}
|
||||
whole-body asm routines in C shells, manifest PERMANENT (hand asm, NOT levers): 22 routines · 2,682 sites (2,660 private copies + 22 shared headers); asm-bodies NOT permanent (levers): 13 site(s) ['func_8001E378:DECOMPILE-NOW', 'func_80020F34:DECOMPILE-NOW', 'func_800249F0:DECOMPILE-NOW', 'func_80025CBC:DECOMPILE-NOW', 'func_80026514:UNCERTAIN', 'func_800268D0:UNCERTAIN', 'func_80027058:DECOMPILE-NOW', 'func_80027200:DECOMPILE-NOW', 'func_800CBA44:DECOMPILE-NOW', 'func_8017D810:DECOMPILE-NOW', 'func_8017E26C:UNCERTAIN', 'func_80184440:DECOMPILE-NOW', 'func_801A3BCC:DECOMPILE-NOW']
|
||||
asm kinds: {'asm-body/direct': 13, 'barrier/direct': 4576, 'barrier/via-macro': 2, 'gte/direct': 200, 'gte/via-macro': 6658, 'gte-lever/direct': 362, 'gte-lever/via-macro': 100, 'gte-unsigned/direct': 3, 'instruction/direct': 1690, 'instruction/via-macro': 22, 'keepalive/direct': 2000, 'launder/direct': 4236, 'launder/via-macro': 444, 'verbatim-body/direct': 2682}
|
||||
instruction mnemonics: {'addu': 966, 'move': 406, 'la': 142, 'lh': 134, 'addiu': 22, 'RTP_SND': 22, '.section': 7, 'lui': 4, 'and': 2, 'mult': 1, 'mfhi': 1, 'sll': 1, 'li': 1, 'lw': 1, 'nop': 1, 'srl': 1}
|
||||
gte mnemonics: {'gte_ldv0': 757, 'gte_stlvnl': 593, 'gte_stsxy': 447, 'gte_rtps': 437, 'gte_stflg': 415, 'gte_rtpt': 352, 'gte_SetRotMatrix': 246, 'gte_stsxy3': 236, 'gte_rtv0tr': 228, 'gte_SetTransMatrix': 226, 'gte_ldv3c': 184, 'gte_ldv3': 177, 'gte_ldrgb': 164, 'gte_stsv': 161, 'lwc2': 159, 'gte_stsz4': 149, 'gte_stsz3': 147, 'gte_stszotz': 134, 'gte_ldIR0z': 134, 'gte_ldIRGB': 134, 'gte_dpcl': 134, 'gte_stORGB': 134, 'gte_stsxy3_f3': 111, 'gte_stclmv': 108, 'gte_nclip': 108, 'gte_stopz': 108, 'gte_stsxy3c': 108, 'gte_stsxy3_ft3': 79, 'gte_rtir': 75, 'gte_ldclmv': 72}
|
||||
asm-bearing macro definitions: 314 (20 names, 3 with >1 text) kinds {'gte': 150, 'launder': 154, 'instruction': 9, 'barrier': 1}
|
||||
gte mnemonics: {'gte_ldv0': 757, 'gte_stlvnl': 593, 'gte_stsxy': 447, 'gte_rtps': 437, 'gte_stflg': 415, 'gte_rtpt': 352, 'gte_SetRotMatrix': 246, 'gte_stsxy3': 236, 'gte_rtv0tr': 228, 'gte_SetTransMatrix': 226, 'gte_ldv3c': 184, 'gte_ldv3': 177, 'gte_ldrgb': 164, 'gte_stsv': 161, 'lwc2': 159, 'gte_stsz4': 149, 'gte_stsz3': 147, 'gte_ldIR0z': 134, 'gte_ldIRGB': 134, 'gte_dpcl': 134, 'gte_stORGB': 134, 'gte_stszotz': 134, 'gte_stsxy3_f3': 111, 'gte_stclmv': 108, 'gte_nclip': 108, 'gte_stopz': 108, 'gte_stsxy3c': 108, 'gte_stsxy3_ft3': 79, 'gte_rtir': 75, 'gte_ldclmv': 72}
|
||||
asm-bearing macro definitions: 314 (20 names, 3 with >1 text) kinds {'launder': 154, 'gte': 150, 'instruction': 9, 'barrier': 1}
|
||||
controls (R39):
|
||||
src/800.c func_800226C0 pins got 14 expected 45 N-A
|
||||
src/shared/ov/func_80178004.h pins got 8 expected 26 N-A
|
||||
ov_SC03_006 func_80184034 bare-name pins got 0 expected 3 N-A
|
||||
engine_prelude.h asm sites (a macro definition only) got 0 expected 0 OK
|
||||
elapsed 35.5 s
|
||||
elapsed 36.4 s
|
||||
|
||||
+185
-185
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"head": "1761a3125",
|
||||
"head": "8fac96651",
|
||||
"stamp": "b44c5a8a3423",
|
||||
"generated": "2026-09-09 11:47",
|
||||
"generated": "2026-09-09 12:11",
|
||||
"aliases": [
|
||||
"main",
|
||||
"ov_SC03_014",
|
||||
@@ -21,207 +21,207 @@
|
||||
"main": {
|
||||
"objects": 85,
|
||||
"identical": 85,
|
||||
"seconds": 14.902999999999997,
|
||||
"mean_s": 0.175
|
||||
"seconds": 10.007000000000005,
|
||||
"mean_s": 0.118
|
||||
},
|
||||
"ov_SC03_014": {
|
||||
"objects": 32,
|
||||
"identical": 32,
|
||||
"seconds": 8.385,
|
||||
"mean_s": 0.262
|
||||
"seconds": 6.2040000000000015,
|
||||
"mean_s": 0.194
|
||||
},
|
||||
"ov_SC03_015": {
|
||||
"objects": 32,
|
||||
"identical": 32,
|
||||
"seconds": 8.013,
|
||||
"mean_s": 0.25
|
||||
"seconds": 6.201999999999998,
|
||||
"mean_s": 0.194
|
||||
},
|
||||
"ov_SC04_011": {
|
||||
"objects": 28,
|
||||
"identical": 28,
|
||||
"seconds": 7.434,
|
||||
"mean_s": 0.266
|
||||
"seconds": 5.154,
|
||||
"mean_s": 0.184
|
||||
}
|
||||
},
|
||||
"per_object_seconds": {
|
||||
"build/src/800.o": 1.453,
|
||||
"build/src/800_b.o": 0.227,
|
||||
"build/src/800_b_2.o": 0.481,
|
||||
"build/src/800_b_o0a.o": 0.155,
|
||||
"build/src/800_c.o": 0.422,
|
||||
"build/src/800b2.o": 0.178,
|
||||
"build/src/apicard1.o": 0.134,
|
||||
"build/src/apicard2.o": 0.282,
|
||||
"build/src/apicard3.o": 0.147,
|
||||
"build/src/apicard4.o": 0.15,
|
||||
"build/src/apicard5.o": 0.155,
|
||||
"build/src/apicard6.o": 0.175,
|
||||
"build/src/apicard7.o": 0.14,
|
||||
"build/src/boot.o": 0.174,
|
||||
"build/src/gap.o": 0.175,
|
||||
"build/src/libapi1.o": 0.133,
|
||||
"build/src/libapi2.o": 0.078,
|
||||
"build/src/libc2_1.o": 0.242,
|
||||
"build/src/libc2_2.o": 0.084,
|
||||
"build/src/libcd1.o": 0.109,
|
||||
"build/src/libcd2.o": 0.244,
|
||||
"build/src/libetc.o": 0.218,
|
||||
"build/src/libgpu.o": 0.08,
|
||||
"build/src/libgpu2.o": 0.213,
|
||||
"build/src/libgs1.o": 0.088,
|
||||
"build/src/libgs2.o": 0.086,
|
||||
"build/src/libgs3.o": 0.096,
|
||||
"build/src/libgs4.o": 0.088,
|
||||
"build/src/libgs5.o": 0.152,
|
||||
"build/src/libgs6.o": 0.14,
|
||||
"build/src/libgs7.o": 0.082,
|
||||
"build/src/libgs8.o": 0.11,
|
||||
"build/src/libgte1.o": 0.11,
|
||||
"build/src/libgte10.o": 0.131,
|
||||
"build/src/libgte11.o": 0.129,
|
||||
"build/src/libgte12.o": 0.107,
|
||||
"build/src/libgte13.o": 0.1,
|
||||
"build/src/libgte14.o": 0.119,
|
||||
"build/src/libgte15.o": 0.08,
|
||||
"build/src/libgte16.o": 0.174,
|
||||
"build/src/libgte17.o": 0.132,
|
||||
"build/src/libgte18.o": 0.151,
|
||||
"build/src/libgte19.o": 0.084,
|
||||
"build/src/libgte2.o": 0.287,
|
||||
"build/src/libgte20.o": 0.102,
|
||||
"build/src/libgte21.o": 0.12,
|
||||
"build/src/libgte22.o": 0.091,
|
||||
"build/src/libgte23.o": 0.279,
|
||||
"build/src/libgte24.o": 0.142,
|
||||
"build/src/libgte25.o": 0.204,
|
||||
"build/src/libgte26.o": 0.121,
|
||||
"build/src/libgte27.o": 0.112,
|
||||
"build/src/libgte28.o": 0.089,
|
||||
"build/src/libgte29.o": 0.132,
|
||||
"build/src/libgte3.o": 0.145,
|
||||
"build/src/libgte30.o": 0.114,
|
||||
"build/src/libgte4.o": 0.123,
|
||||
"build/src/libgte5.o": 0.09,
|
||||
"build/src/libgte6.o": 0.218,
|
||||
"build/src/libgte7.o": 0.09,
|
||||
"build/src/libgte8.o": 0.278,
|
||||
"build/src/libgte9.o": 0.104,
|
||||
"build/src/libmcrd1.o": 0.201,
|
||||
"build/src/libmcrd2.o": 0.101,
|
||||
"build/src/libpad1.o": 0.134,
|
||||
"build/src/libpad2.o": 0.187,
|
||||
"build/src/sgap.o": 0.116,
|
||||
"build/src/sgap_2.o": 0.105,
|
||||
"build/src/sgap_3.o": 0.298,
|
||||
"build/src/sgap_4.o": 0.277,
|
||||
"build/src/sgap_5.o": 0.11,
|
||||
"build/src/sgap_6.o": 0.107,
|
||||
"build/src/sgap_8.o": 0.161,
|
||||
"build/src/snd1.o": 0.125,
|
||||
"build/src/snd10.o": 0.185,
|
||||
"build/src/snd11.o": 0.348,
|
||||
"build/src/snd12.o": 0.177,
|
||||
"build/src/snd2.o": 0.157,
|
||||
"build/src/snd3.o": 0.245,
|
||||
"build/src/snd4.o": 0.159,
|
||||
"build/src/snd5.o": 0.2,
|
||||
"build/src/snd6.o": 0.17,
|
||||
"build/src/snd7.o": 0.138,
|
||||
"build/src/snd8.o": 0.118,
|
||||
"build/src/snd9.o": 0.235,
|
||||
"build/src/ov_SC03_014/ov_SC03_014.o": 0.207,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_after.o": 1.037,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 1.11,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.118,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.09,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.398,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.355,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.247,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.184,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.18,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.264,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.157,
|
||||
"build/src/800.o": 0.93,
|
||||
"build/src/800_b.o": 0.094,
|
||||
"build/src/800_b_2.o": 0.49,
|
||||
"build/src/800_b_o0a.o": 0.105,
|
||||
"build/src/800_c.o": 0.239,
|
||||
"build/src/800b2.o": 0.117,
|
||||
"build/src/apicard1.o": 0.079,
|
||||
"build/src/apicard2.o": 0.128,
|
||||
"build/src/apicard3.o": 0.093,
|
||||
"build/src/apicard4.o": 0.106,
|
||||
"build/src/apicard5.o": 0.092,
|
||||
"build/src/apicard6.o": 0.083,
|
||||
"build/src/apicard7.o": 0.161,
|
||||
"build/src/boot.o": 0.159,
|
||||
"build/src/gap.o": 0.082,
|
||||
"build/src/libapi1.o": 0.091,
|
||||
"build/src/libapi2.o": 0.066,
|
||||
"build/src/libc2_1.o": 0.076,
|
||||
"build/src/libc2_2.o": 0.063,
|
||||
"build/src/libcd1.o": 0.09,
|
||||
"build/src/libcd2.o": 0.087,
|
||||
"build/src/libetc.o": 0.11,
|
||||
"build/src/libgpu.o": 0.111,
|
||||
"build/src/libgpu2.o": 0.174,
|
||||
"build/src/libgs1.o": 0.133,
|
||||
"build/src/libgs2.o": 0.065,
|
||||
"build/src/libgs3.o": 0.069,
|
||||
"build/src/libgs4.o": 0.114,
|
||||
"build/src/libgs5.o": 0.065,
|
||||
"build/src/libgs6.o": 0.086,
|
||||
"build/src/libgs7.o": 0.076,
|
||||
"build/src/libgs8.o": 0.153,
|
||||
"build/src/libgte1.o": 0.082,
|
||||
"build/src/libgte10.o": 0.073,
|
||||
"build/src/libgte11.o": 0.07,
|
||||
"build/src/libgte12.o": 0.077,
|
||||
"build/src/libgte13.o": 0.156,
|
||||
"build/src/libgte14.o": 0.091,
|
||||
"build/src/libgte15.o": 0.062,
|
||||
"build/src/libgte16.o": 0.078,
|
||||
"build/src/libgte17.o": 0.067,
|
||||
"build/src/libgte18.o": 0.157,
|
||||
"build/src/libgte19.o": 0.1,
|
||||
"build/src/libgte2.o": 0.097,
|
||||
"build/src/libgte20.o": 0.066,
|
||||
"build/src/libgte21.o": 0.069,
|
||||
"build/src/libgte22.o": 0.071,
|
||||
"build/src/libgte23.o": 0.073,
|
||||
"build/src/libgte24.o": 0.09,
|
||||
"build/src/libgte25.o": 0.14,
|
||||
"build/src/libgte26.o": 0.096,
|
||||
"build/src/libgte27.o": 0.12,
|
||||
"build/src/libgte28.o": 0.092,
|
||||
"build/src/libgte29.o": 0.14,
|
||||
"build/src/libgte3.o": 0.118,
|
||||
"build/src/libgte30.o": 0.107,
|
||||
"build/src/libgte4.o": 0.188,
|
||||
"build/src/libgte5.o": 0.199,
|
||||
"build/src/libgte6.o": 0.182,
|
||||
"build/src/libgte7.o": 0.106,
|
||||
"build/src/libgte8.o": 0.09,
|
||||
"build/src/libgte9.o": 0.111,
|
||||
"build/src/libmcrd1.o": 0.104,
|
||||
"build/src/libmcrd2.o": 0.109,
|
||||
"build/src/libpad1.o": 0.088,
|
||||
"build/src/libpad2.o": 0.077,
|
||||
"build/src/sgap.o": 0.065,
|
||||
"build/src/sgap_2.o": 0.101,
|
||||
"build/src/sgap_3.o": 0.105,
|
||||
"build/src/sgap_4.o": 0.085,
|
||||
"build/src/sgap_5.o": 0.085,
|
||||
"build/src/sgap_6.o": 0.109,
|
||||
"build/src/sgap_8.o": 0.115,
|
||||
"build/src/snd1.o": 0.077,
|
||||
"build/src/snd10.o": 0.083,
|
||||
"build/src/snd11.o": 0.086,
|
||||
"build/src/snd12.o": 0.08,
|
||||
"build/src/snd2.o": 0.08,
|
||||
"build/src/snd3.o": 0.07,
|
||||
"build/src/snd4.o": 0.154,
|
||||
"build/src/snd5.o": 0.125,
|
||||
"build/src/snd6.o": 0.082,
|
||||
"build/src/snd7.o": 0.076,
|
||||
"build/src/snd8.o": 0.129,
|
||||
"build/src/snd9.o": 0.167,
|
||||
"build/src/ov_SC03_014/ov_SC03_014.o": 0.153,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_after.o": 0.606,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.529,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.124,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.084,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.141,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.194,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.13,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.101,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.1,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.233,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.082,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.22,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.197,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.121,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.265,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.117,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.573,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.473,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.17,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.256,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.075,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.143,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.089,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.223,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.311,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.068,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.381,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.073,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.072,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.122,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.089,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.151,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.14,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.088,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.155,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.613,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.388,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.187,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.238,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.096,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.138,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.086,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.208,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.219,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.085,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.337,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.078,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.086,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.117,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.097,
|
||||
"build/src/ov_SC03_015/ov_SC03_015.o": 0.195,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.723,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.563,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.068,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.076,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.151,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.417,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.288,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.087,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.216,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.309,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.138,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.244,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.117,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.091,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.084,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.131,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.712,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.617,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.623,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.47,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.083,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.074,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.15,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.194,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.127,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.107,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.107,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.203,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.088,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.249,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.129,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.142,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.093,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.163,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.607,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.484,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.135,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.323,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.161,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.146,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.084,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.314,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.329,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.137,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.442,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.135,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.134,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.115,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.331,
|
||||
"build/src/ov_SC04_011/ov_SC04_011.o": 0.248,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.666,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.559,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.109,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.077,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.171,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.439,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.259,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.161,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.19,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.256,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.166,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.26,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.155,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.162,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.271,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.161,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.523,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.358,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.223,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.291,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.115,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.229,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.198,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.194,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.803,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.089,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.101
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.228,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.07,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.115,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.076,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.233,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.225,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.09,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.361,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.09,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.084,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.098,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.109,
|
||||
"build/src/ov_SC04_011/ov_SC04_011.o": 0.139,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.511,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.437,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.058,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.073,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.131,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.177,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.184,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.135,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.092,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.247,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.097,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.185,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.179,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.095,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.098,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.101,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.439,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.29,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.121,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.235,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.08,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.107,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.098,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.121,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.569,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.077,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.078
|
||||
},
|
||||
"ok": true,
|
||||
"seconds": 4.4
|
||||
"seconds": 3.3
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
|
||||
delever --recipes: control 2/2 — the identity splice reproduces its text and the untouched file its object
|
||||
delever --recipes: 533 RESIDUE bodies
|
||||
@@ -14,3 +14,8 @@
|
||||
{"kind": "attempt", "ts": "2026-09-09 11:30:22", "nhash": "fd0a0a6776804081a0e67021650cf9edae8d224d", "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "fn": "func_80148D44", "alias": "ov_SC04_011", "copies": 132, "needed": 2, "kinds": ["keepalive", "pin"], "regs": ["$4"], "secs": 240, "cycles": 3, "j": 4, "levered": 0, "free": 52, "levered_line": "MATCH (68 ins) func_80148D44", "free_line": "DIFF func_80148D44 mine=67 ins, target=68 ins, 52 mismatched", "klass": "cse", "cmd": "/home/musashi/bfm-decomp/.venv/bin/python tools/permuter_ils.py func_80148D44 --draft .run/P36/permuter/ov_SC04_011__func_80148D44/draft.c --asm-subdir .run/P36/permuter/ov_SC04_011__func_80148D44/gas --klass cse --cycles 3 --secs 240 --j 4 --winners .run/P36/permuter/ov_SC04_011__func_80148D44 --pd .run/P36/permuter/ov_SC04_011__func_80148D44/pd --target-o .run/P36/permuter/ov_SC04_011__func_80148D44/target.o", "best": 3, "seconds": 721.9, "rc": 0, "winner": null, "verdict": "NO-MATCH"}
|
||||
{"kind": "attempt", "ts": "2026-09-09 11:30:25", "nhash": "c7541dad40d8b360d4733a5ebe605d560bd28f07", "tu": "src/ov_SC04_011/ov_SC04_011_after.c", "fn": "func_80148E54", "alias": "ov_SC04_011", "copies": 132, "needed": 2, "kinds": ["launder", "pin"], "regs": ["$4"], "secs": 240, "cycles": 3, "j": 4, "levered": 0, "free": 50, "levered_line": "MATCH (67 ins) func_80148E54", "free_line": "DIFF func_80148E54 mine=66 ins, target=67 ins, 50 mismatched", "klass": "cse", "cmd": "/home/musashi/bfm-decomp/.venv/bin/python tools/permuter_ils.py func_80148E54 --draft .run/P36/permuter/ov_SC04_011__func_80148E54/draft.c --asm-subdir .run/P36/permuter/ov_SC04_011__func_80148E54/gas --klass cse --cycles 3 --secs 240 --j 4 --winners .run/P36/permuter/ov_SC04_011__func_80148E54 --pd .run/P36/permuter/ov_SC04_011__func_80148E54/pd --target-o .run/P36/permuter/ov_SC04_011__func_80148E54/target.o", "best": 3, "seconds": 722.0, "rc": 0, "winner": null, "verdict": "NO-MATCH"}
|
||||
{"kind": "attempt", "ts": "2026-09-09 11:35:29", "nhash": "baf2a68c3d1443c2c17776905597b6f64e8f853e", "tu": "src/ov_SC04_011/ov_SC04_011_jr_80140608.c", "fn": "func_801424E4", "alias": "ov_SC04_011", "copies": 132, "needed": 2, "kinds": ["cast", "keepalive"], "regs": [], "secs": 240, "cycles": 3, "j": 4, "levered": 0, "free": 37, "levered_line": "MATCH (58 ins) func_801424E4", "free_line": "DIFF func_801424E4 mine=62 ins, target=58 ins, 37 mismatched", "klass": "regalloc", "cmd": "/home/musashi/bfm-decomp/.venv/bin/python tools/permuter_ils.py func_801424E4 --draft .run/P36/permuter/ov_SC04_011__func_801424E4/draft.c --asm-subdir .run/P36/permuter/ov_SC04_011__func_801424E4/gas --klass regalloc --cycles 3 --secs 240 --j 4 --winners .run/P36/permuter/ov_SC04_011__func_801424E4 --pd .run/P36/permuter/ov_SC04_011__func_801424E4/pd --target-o .run/P36/permuter/ov_SC04_011__func_801424E4/target.o", "best": 2, "seconds": 721.6, "rc": 0, "winner": null, "verdict": "NO-MATCH"}
|
||||
{"kind": "bank", "ts": "2026-09-09 12:16:21", "nhash": "f291a077544a77707d70d488891fbed3b1d7d6b4", "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "fn": "func_80163EC8", "alias": "ov_SC04_011", "label": "d1", "applied": true, "apply_out": "delever --apply-body: src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c:func_80163EC8 IDENTICAL on 1 object(s) (0.43 s) \u2014 KEPT, ledgered (rung D, d1)", "gte_refold": "gte_consolidate --apply: src/ is dirty \u2014 commit or tools/delever.py --restore first:\n M src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c"}
|
||||
{"kind": "bank", "ts": "2026-09-09 12:17:42", "nhash": "716cc05fc1252ab66107d25423410f6a2a0d167e", "tu": "src/ov_SC04_011/ov_SC04_011_jr_80135D20.c", "fn": "func_80135D20", "alias": "ov_SC04_011", "label": "d1", "applied": true, "apply_out": "delever --apply-body: src/ov_SC04_011/ov_SC04_011_jr_80135D20.c:func_80135D20 IDENTICAL on 1 object(s) (0.10 s) \u2014 KEPT, ledgered (rung D, d1)", "gte_refold": "gte_consolidate --apply: src/ is dirty \u2014 commit or tools/delever.py --restore first:\n M src/ov_SC04_011/ov_SC04_011_jr_80135D20.c\n M src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c"}
|
||||
{"kind": "bank", "ts": "2026-09-09 12:17:44", "nhash": "4ea6e9f0cbcdd496c2fa7dcf4e6f501660f64ad5", "tu": "src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c", "fn": "func_8015D01C", "alias": "ov_SC04_011", "label": "d1", "applied": true, "apply_out": "delever --apply-body: src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c:func_8015D01C IDENTICAL on 1 object(s) (0.39 s) \u2014 KEPT, ledgered (rung D, d1)", "gte_refold": "gte_consolidate --apply: src/ is dirty \u2014 commit or tools/delever.py --restore first:\n M src/ov_SC04_011/ov_SC04_011_jr_80135D20.c\n M src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c"}
|
||||
{"kind": "bank", "ts": "2026-09-09 12:17:45", "nhash": "f30b00e65b50254377a932e5191337cb4d5242b0", "tu": "src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c", "fn": "func_8013E5E8", "alias": "ov_SC04_011", "label": "d1", "applied": true, "apply_out": "delever --apply-body: src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c:func_8013E5E8 IDENTICAL on 1 object(s) (0.10 s) \u2014 KEPT, ledgered (rung D, d1)", "gte_refold": "gte_consolidate --apply: src/ is dirty \u2014 commit or tools/delever.py --restore first:\n M src/ov_SC04_011/ov_SC04_011_jr_80135D20.c\n M src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c\n M src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c"}
|
||||
{"kind": "bank", "ts": "2026-09-09 12:17:46", "nhash": "e2e0dc0103e0b8dca1527caa55e9e47dc0ceac01", "tu": "src/ov_SC04_011/ov_SC04_011_jr_801734BC.c", "fn": "func_80178840", "alias": "ov_SC04_011", "label": "d1", "applied": true, "apply_out": "delever --apply-body: src/ov_SC04_011/ov_SC04_011_jr_801734BC.c:func_80178840 IDENTICAL on 1 object(s) (0.18 s) \u2014 KEPT, ledgered (rung D, d1)", "gte_refold": "gte_consolidate --apply: src/ is dirty \u2014 commit or tools/delever.py --restore first:\n M src/ov_SC04_011/ov_SC04_011_jr_80135D20.c\n M src/ov_SC04_011/ov_SC04_011_jr_8013C98C.c\n M src/ov_SC04_011/ov_SC04_011_jr_8015C32C.c\n M src/ov_SC04_011/ov_SC04_011_jr_801734BC.c"}
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
date milestone head sites_AB pins asm bodies_AB distinct_AB marked unmarked gte_levers per_tu_asm_macros class_C class_D class_E class_F class_G
|
||||
2026-09-09 T6 r1 (rung R's first class) 1761a3125 33957 20512 13445 12578 1758 33957 0 462 314 1722 50 7428 445 76
|
||||
2026-09-09 T6 d1 (rung D's four exemplars) 8fac96651 33953 20508 13445 12574 1758 33953 0 462 314 1722 50 7428 445 76
|
||||
|
||||
|
+3
-1
@@ -46,6 +46,7 @@ counted, not marked). E, F and G belong to the canonical type layer and are the
|
||||
| date | milestone | pins | asm | **class A+B sites** | bodies | distinct | GTE levers | per-TU asm macros | C | D | E | F | G | HEAD |
|
||||
|---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|
|
||||
| 2026-09-09 | T6 r1 (rung R's first class) | 20512 | 13445 | **33957** | 12578 | 1758 | 462 | 314 | 1722 | 50 | 7428 | 445 | 76 | `1761a3125` |
|
||||
| 2026-09-09 | T6 d1 (rung D's four exemplars) | 20508 | 13445 | **33953** | 12574 | 1758 | 462 | 314 | 1722 | 50 | 7428 | 445 | 76 | `8fac96651` |
|
||||
|
||||
### The campaign — every batch, from the ledger (derived on every render)
|
||||
|
||||
@@ -71,7 +72,8 @@ counted, not marked). E, F and G belong to the canonical type layer and are the
|
||||
| `sweep2` | 2026-09-09 | sweep | 3 | 0 | 0 | 0 | 0 |
|
||||
| `sweep3` | 2026-09-09 | sweep | 134 | 0 | 0 | 0 | 0 |
|
||||
| `r1` | 2026-09-09 | R | 0 | 0 | 0 | 134 | 134 |
|
||||
| **total** | | | **17,119** | **20,778** | **283** | **134** | **134** |
|
||||
| `d1` | 2026-09-09 | D | 0 | 0 | 0 | 4 | 4 |
|
||||
| **total** | | | **17,119** | **20,778** | **283** | **138** | **138** |
|
||||
|
||||
*Generated by `tools/lever_progress.py --render` from `.run/P36/census/lever_census.json` and `.run/P36/delever/ledger.jsonl`; the series lives in `docs/lever-progress.tsv` (R75: published numbers are generated, never typed).*
|
||||
|
||||
|
||||
@@ -1796,18 +1796,19 @@ extern void func_80141C04(void);
|
||||
|
||||
void func_8013E5E8(void)
|
||||
{
|
||||
|
||||
extern u16 D_8011511E;
|
||||
extern u16 D_8011511C;
|
||||
extern unsigned short D_80115112;
|
||||
extern u16 D_80115116;
|
||||
extern void (*D_801917E0[])(void);
|
||||
register void (*fp)(void) __asm__("$2"); /* pin fn-ptr to $v0 -> store retires early */ // !FAKE: pin $2 — NEEDED DIFFERS (P36 rung B t3_tus1)
|
||||
void (**new_var)(void);
|
||||
void (*fp)(void);
|
||||
func_80029444();
|
||||
func_801754A8();
|
||||
D_8011511E = func_80014ED4(0);
|
||||
D_8011511C = func_80015018(0);
|
||||
fp = D_801917E0[D_80115112];
|
||||
new_var = &D_801917E0[D_80115112];
|
||||
fp = *new_var;
|
||||
fp();
|
||||
func_800190AC();
|
||||
func_80141C04();
|
||||
|
||||
@@ -1636,32 +1636,38 @@ void func_8015CFC0(s32 *a0) {
|
||||
// @stuck: none — MATCH (uVar1 pinned $s3, uVar5 pinned $s1; param_1->s2, iVar4->s0 fall out)
|
||||
|
||||
|
||||
void func_8015D01C(int param_1) {
|
||||
void func_8015D01C(int param_1)
|
||||
{
|
||||
extern s32 func_801725F4(u8 *a0);
|
||||
extern int D_800D550C;
|
||||
short new_var2;
|
||||
unsigned short new_var;
|
||||
extern int D_80192C8C;
|
||||
|
||||
short sVar2;
|
||||
int iVar4;
|
||||
unsigned short uVar1;
|
||||
register unsigned short uVar5 __asm__("$17"); // !FAKE: pin $17 — NEEDED DIFFERS (P36 rung B t3_tus1)
|
||||
short sVar2;
|
||||
unsigned short uVar5;
|
||||
short sVar3;
|
||||
|
||||
((void (*)(int, void *))func_80154274)(param_1, &D_800D550C);
|
||||
*(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0;
|
||||
iVar4 = *(short *)(*(int *)(param_1 + 0x20) + 0x12);
|
||||
uVar1 = *(unsigned short *)(*(int *)(*(int *)(param_1 + 0x180) + 0x20) + 0x12);
|
||||
((void (*)(int, void *)) func_80154274)(param_1, &D_800D550C);
|
||||
*((short *) ((*((int *) (param_1 + 0x20))) + 0x10)) = 0;
|
||||
iVar4 = *((short *) ((*((int *) (param_1 + 0x20))) + 0x12));
|
||||
uVar1 = *((unsigned short *) ((*((int *) ((*((int *) (param_1 + 0x180))) + 0x20))) + 0x12));
|
||||
uVar5 = (uVar1 + 0x800) & 0xfff;
|
||||
sVar2 = func_80012A60(iVar4, (short)uVar1);
|
||||
sVar3 = func_80012A60(iVar4, uVar5);
|
||||
if (sVar2 < sVar3) {
|
||||
*(short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar1;
|
||||
} else {
|
||||
*(unsigned short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar5;
|
||||
new_var = uVar5;
|
||||
new_var2 = new_var;
|
||||
sVar2 = func_80012A60(iVar4, (short) uVar1);
|
||||
sVar3 = func_80012A60(iVar4, new_var2);
|
||||
if (sVar2 < sVar3)
|
||||
{
|
||||
*((short *) ((*((int *) (param_1 + 0x20))) + 0x12)) = uVar1;
|
||||
}
|
||||
*(int *)(param_1 + 0x38) = (int)&D_80192C8C | 0x40000000;
|
||||
((void (*)(int))func_801725F4)(param_1);
|
||||
((void (*)(int))func_80146CA0)(param_1);
|
||||
else
|
||||
{
|
||||
*((unsigned short *) ((*((int *) (param_1 + 0x20))) + 0x12)) = new_var;
|
||||
}
|
||||
*((int *) (param_1 + 0x38)) = ((int) (&D_80192C8C)) | 0x40000000;
|
||||
((void (*)(int)) func_801725F4)(param_1);
|
||||
((void (*)(int)) func_80146CA0)(param_1);
|
||||
}
|
||||
|
||||
|
||||
@@ -4097,129 +4103,139 @@ void func_80163A58(void *a0) {
|
||||
#include "../shared/ov/func_80163C2C.h"
|
||||
|
||||
|
||||
void func_80163EC8(s32 param_1) {
|
||||
void func_80163EC8(s32 param_1)
|
||||
{
|
||||
extern Blk8 D_801ED2B0;
|
||||
extern u16 D_800B99DA;
|
||||
extern u8 func_801656D0(s32 a0, s32 a1);
|
||||
extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3);
|
||||
extern void func_80015978(s32 a0, s32 *a1);
|
||||
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4);
|
||||
|
||||
Blk8 in;
|
||||
u16 out[4];
|
||||
s16 buf[4];
|
||||
s32 psVar6;
|
||||
s32 iVar8;
|
||||
s32 iVar7;
|
||||
register s32 uVar5 __asm__("$2"); /* PIN (flagged): uVar5 -> $v0 */ // !FAKE: pin $2 — NEEDED DIFFERS (P36 rung B t3_tus1)
|
||||
s32 uVar5;
|
||||
u16 uVar4;
|
||||
u8 uVar3;
|
||||
|
||||
in = D_801ED2B0;
|
||||
psVar6 = *(s32 *)(param_1 + 0x4c);
|
||||
iVar8 = *(s32 *)(param_1 + 0x20);
|
||||
func_80162D88((s32 *)param_1);
|
||||
|
||||
if (*(s32 *)(psVar6 + 0x184) == 0) {
|
||||
uVar5 = *(s32 *)(psVar6 + 0x44);
|
||||
*(s16 *)(psVar6 + 0x18a) = 0;
|
||||
*(s16 *)(psVar6 + 0x188) = 0;
|
||||
*(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20;
|
||||
func_80146CA0((void *)param_1);
|
||||
func_80146CA0((void *)param_1);
|
||||
psVar6 = *((s32 *) (param_1 + 0x4c));
|
||||
iVar8 = *((s32 *) (param_1 + 0x20));
|
||||
func_80162D88((s32 *) param_1);
|
||||
if ((*((s32 *) (psVar6 + 0x184))) == 0)
|
||||
{
|
||||
*((s16 *) (psVar6 + 0x18a)) = 0;
|
||||
*((s16 *) (psVar6 + 0x188)) = 0;
|
||||
*((s32 *) (psVar6 + 0x44)) = (*((s32 *) (psVar6 + 0x44))) & (~0x20);
|
||||
func_80146CA0((void *) param_1);
|
||||
func_80146CA0((void *) param_1);
|
||||
return;
|
||||
}
|
||||
if (*(s16 *)(*(s32 *)(psVar6 + 0x184) + 0x36) == *(u16 *)(psVar6 + 0x194)) {
|
||||
if ((*((s16 *) ((*((s32 *) (psVar6 + 0x184))) + 0x36))) == (*((u16 *) (psVar6 + 0x194))))
|
||||
{
|
||||
goto LAB_matched;
|
||||
}
|
||||
*(s32 *)(psVar6 + 0x184) = 0;
|
||||
uVar5 = *(s32 *)(psVar6 + 0x44);
|
||||
*(s16 *)(psVar6 + 0x18a) = 0;
|
||||
*(s16 *)(psVar6 + 0x188) = 0;
|
||||
*(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20;
|
||||
func_80146CA0((void *)param_1);
|
||||
func_80146CA0((void *)param_1);
|
||||
*((s32 *) (psVar6 + 0x184)) = 0;
|
||||
*((s16 *) (psVar6 + 0x18a)) = 0;
|
||||
*((s16 *) (psVar6 + 0x188)) = 0;
|
||||
*((s32 *) (psVar6 + 0x44)) = (*((s32 *) (psVar6 + 0x44))) & (~0x20);
|
||||
func_80146CA0((void *) param_1);
|
||||
func_80146CA0((void *) param_1);
|
||||
return;
|
||||
LAB_matched:
|
||||
*((s16 *) (psVar6 + 0x18a)) = (*((u16 *) (psVar6 + 0x18a))) + 1;
|
||||
|
||||
LAB_matched:
|
||||
*(s16 *)(psVar6 + 0x18a) = *(u16 *)(psVar6 + 0x18a) + 1;
|
||||
if ((D_800B99DA & 3) == 0) {
|
||||
if (*(s16 *)(psVar6 + 0x188) >= *(u8 *)(param_1 + 0x67)) {
|
||||
*(s16 *)(psVar6 + 0x188) = *(s16 *)(psVar6 + 0x188) - *(u8 *)(param_1 + 0x67);
|
||||
} else {
|
||||
*(s16 *)(psVar6 + 0x188) = 0;
|
||||
if ((D_800B99DA & 3) == 0)
|
||||
{
|
||||
if ((*((s16 *) (psVar6 + 0x188))) >= (*((u8 *) (param_1 + 0x67))))
|
||||
{
|
||||
*((s16 *) (psVar6 + 0x188)) = (*((s16 *) (psVar6 + 0x188))) - (*((u8 *) (param_1 + 0x67)));
|
||||
}
|
||||
if (*(s16 *)(psVar6 + 0x188) < 0) {
|
||||
*(s16 *)(psVar6 + 0x188) = 0;
|
||||
else
|
||||
{
|
||||
*((s16 *) (psVar6 + 0x188)) = 0;
|
||||
}
|
||||
if ((*((s16 *) (psVar6 + 0x188))) < 0)
|
||||
{
|
||||
*((s16 *) (psVar6 + 0x188)) = 0;
|
||||
}
|
||||
}
|
||||
|
||||
*(s16 *)(param_1 + 0x66) = *(u16 *)(param_1 + 0x66) + 0x40;
|
||||
uVar5 = func_80148800((s32 *)psVar6);
|
||||
if ((uVar5 & 0x80) != 0) {
|
||||
*(s16 *)(param_1 + 0x66) = 0;
|
||||
uVar3 = func_801656D0(psVar6, func_8014CA00(*(s32 *)(psVar6 + 0x184)) & 0xff);
|
||||
*(s16 *)(psVar6 + 0x188) = *(u16 *)(psVar6 + 0x188) + uVar3;
|
||||
*(s16 *)(iVar8 + 0x1a) = 0x4000;
|
||||
*(s16 *)(iVar8 + 0x18) = 0x4000;
|
||||
*(s32 *)(iVar8 + 0x48) = *(s16 *)(param_1 + 0x58);
|
||||
*(s32 *)(iVar8 + 0x4c) = *(s16 *)(param_1 + 0x5a);
|
||||
*(s32 *)(iVar8 + 0x50) = *(s16 *)(param_1 + 0x5c);
|
||||
((void (*)(s32, s32, s32))func_80149350)(param_1, (s32)&in, (s32)out);
|
||||
*(s16 *)(param_1 + 0x6) = out[0];
|
||||
*(s16 *)(param_1 + 0xa) = out[1];
|
||||
*(s16 *)(param_1 + 0xe) = out[2];
|
||||
*((s16 *) (param_1 + 0x66)) = (*((u16 *) (param_1 + 0x66))) + 0x40;
|
||||
uVar5 = func_80148800((s32 *) psVar6);
|
||||
if ((uVar5 & 0x80) != 0)
|
||||
{
|
||||
*((s16 *) (param_1 + 0x66)) = 0;
|
||||
uVar3 = func_801656D0(psVar6, func_8014CA00(*((s32 *) (psVar6 + 0x184))) & 0xff);
|
||||
*((s16 *) (psVar6 + 0x188)) = (*((u16 *) (psVar6 + 0x188))) + uVar3;
|
||||
*((s16 *) (iVar8 + 0x1a)) = 0x4000;
|
||||
*((s16 *) (iVar8 + 0x18)) = 0x4000;
|
||||
*((s32 *) (iVar8 + 0x48)) = *((s16 *) (param_1 + 0x58));
|
||||
*((s32 *) (iVar8 + 0x4c)) = *((s16 *) (param_1 + 0x5a));
|
||||
*((s32 *) (iVar8 + 0x50)) = *((s16 *) (param_1 + 0x5c));
|
||||
((void (*)(s32, s32, s32)) func_80149350)(param_1, (s32) (&in), (s32) out);
|
||||
*((s16 *) (param_1 + 0x6)) = out[0];
|
||||
*((s16 *) (param_1 + 0xa)) = out[1];
|
||||
*((s16 *) (param_1 + 0xe)) = out[2];
|
||||
}
|
||||
|
||||
if (0x80 < *(s16 *)(psVar6 + 0x188)) {
|
||||
*(s16 *)(psVar6 + 0x188) = 0x80;
|
||||
if (0x80 < (*((s16 *) (psVar6 + 0x188))))
|
||||
{
|
||||
*((s16 *) (psVar6 + 0x188)) = 0x80;
|
||||
}
|
||||
if (*(s16 *)(psVar6 + 0x188) >= 0x80) {
|
||||
iVar7 = *(s32 *)(psVar6 + 0x184);
|
||||
if (iVar7 != 0) {
|
||||
func_80015978(iVar7 + 4, (s32 *)buf);
|
||||
if ((*((s16 *) (psVar6 + 0x188))) >= 0x80)
|
||||
{
|
||||
iVar7 = *((s32 *) (psVar6 + 0x184));
|
||||
if (iVar7 != 0)
|
||||
{
|
||||
func_80015978(iVar7 + 4, (s32 *) buf);
|
||||
buf[3] = 0;
|
||||
uVar4 = func_80156370(0xe);
|
||||
func_8014C4AC(iVar7, 0xe, uVar4, buf, *(s16 *)(iVar8 + 0x12));
|
||||
func_8014C4AC(iVar7, 0xe, uVar4, buf, *((s16 *) (iVar8 + 0x12)));
|
||||
func_80146994(0x33, param_1, 0, iVar7);
|
||||
}
|
||||
} else {
|
||||
if (*(s16 *)(psVar6 + 0x18a) < 0x80 && *(u16 *)psVar6 != 0x19) {
|
||||
}
|
||||
else
|
||||
{
|
||||
if (((*((s16 *) (psVar6 + 0x18a))) < 0x80) && ((*((u16 *) psVar6)) != 0x19))
|
||||
{
|
||||
goto LAB_end;
|
||||
}
|
||||
iVar7 = *(s32 *)(psVar6 + 0x184);
|
||||
if (iVar7 != 0) {
|
||||
func_80015978(iVar7 + 4, (s32 *)buf);
|
||||
iVar7 = *((s32 *) (psVar6 + 0x184));
|
||||
if (iVar7 != 0)
|
||||
{
|
||||
func_80015978(iVar7 + 4, (s32 *) buf);
|
||||
buf[3] = 0;
|
||||
uVar4 = func_80156370(0x21);
|
||||
func_8014C4AC(iVar7, 0x21, uVar4, buf, *(s16 *)(iVar8 + 0x12));
|
||||
if ((*(s32 *)(iVar7 + 0xb4) & 0x40000) != 0) {
|
||||
func_8014AD30(param_1, (u16 *)buf, 0, *(s16 *)(iVar7 + 0x60));
|
||||
func_8014C4AC(iVar7, 0x21, uVar4, buf, *((s16 *) (iVar8 + 0x12)));
|
||||
if (((*((s32 *) (iVar7 + 0xb4))) & 0x40000) != 0)
|
||||
{
|
||||
func_8014AD30(param_1, (u16 *) buf, 0, *((s16 *) (iVar7 + 0x60)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uVar5 = func_8014CA00(iVar7);
|
||||
*(s32 *)(psVar6 + 0x184) = uVar5;
|
||||
if (0x1e < (u32)uVar5) {
|
||||
*(s32 *)(psVar6 + 0x184) = 0;
|
||||
*((s32 *) (psVar6 + 0x184)) = uVar5;
|
||||
if (0x1e < ((u32) uVar5))
|
||||
{
|
||||
*((s32 *) (psVar6 + 0x184)) = 0;
|
||||
}
|
||||
func_80146E90((s32 *)param_1, 0x20);
|
||||
*(s32 *)(psVar6 + 0x44) = *(s32 *)(psVar6 + 0x44) & ~0x20;
|
||||
func_80146E90((s32 *) param_1, 0x20);
|
||||
*((s32 *) (psVar6 + 0x44)) = (*((s32 *) (psVar6 + 0x44))) & (~0x20);
|
||||
func_80147324(0x449);
|
||||
func_80146CA0((void *)param_1);
|
||||
func_80146CA0((void *)param_1);
|
||||
func_80146CA0((void *) param_1);
|
||||
func_80146CA0((void *) param_1);
|
||||
LAB_end:
|
||||
uVar4 = func_80012F74(*((s16 *) (iVar8 + 0x1a)), 0x1800, 3, 1);
|
||||
|
||||
LAB_end:
|
||||
uVar4 = func_80012F74(*(s16 *)(iVar8 + 0x1a), 0x1800, 3, 1);
|
||||
*(s16 *)(iVar8 + 0x1a) = uVar4;
|
||||
*(s16 *)(iVar8 + 0x18) = uVar4;
|
||||
uVar4 = func_80012F74(*(s16 *)(param_1 + 0x6), *(s16 *)(param_1 + 0x58), 8, 1);
|
||||
*(s16 *)(param_1 + 0x6) = uVar4;
|
||||
uVar4 = func_80012F74(*(s16 *)(param_1 + 0xa), *(s16 *)(param_1 + 0x5a), 8, 1);
|
||||
*(s16 *)(param_1 + 0xa) = uVar4;
|
||||
uVar4 = func_80012F74(*(s16 *)(param_1 + 0xe), *(s16 *)(param_1 + 0x5c), 8, 1);
|
||||
*(s16 *)(param_1 + 0xe) = uVar4;
|
||||
*((s16 *) (iVar8 + 0x1a)) = uVar4;
|
||||
*((s16 *) (iVar8 + 0x18)) = uVar4;
|
||||
uVar4 = func_80012F74(*((s16 *) (param_1 + 0x6)), *((s16 *) (param_1 + 0x58)), 8, 1);
|
||||
*((s16 *) (param_1 + 0x6)) = uVar4;
|
||||
uVar4 = func_80012F74(*((s16 *) (param_1 + 0xa)), *((s16 *) (param_1 + 0x5a)), 8, 1);
|
||||
*((s16 *) (param_1 + 0xa)) = uVar4;
|
||||
uVar4 = func_80012F74(*((s16 *) (param_1 + 0xe)), *((s16 *) (param_1 + 0x5c)), 8, 1);
|
||||
*((s16 *) (param_1 + 0xe)) = uVar4;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3856,19 +3856,22 @@ extern void func_80019064(void *a0);
|
||||
extern void func_80131E00(struct S80131E00 *a0, s32 a1);
|
||||
|
||||
|
||||
void func_80178840(int param_1) {
|
||||
|
||||
void func_80178840(int param_1)
|
||||
{
|
||||
extern int D_80193C70;
|
||||
extern int D_80193C7C[];
|
||||
register int p __asm__("$16"); // !FAKE: pin $16 — NEEDED DIFFERS (P36 rung B t3_tus1)
|
||||
int p;
|
||||
int s1byte;
|
||||
p = param_1;
|
||||
if ((*(unsigned short *)(p + 0x5c) & 1) != 0) {
|
||||
s1byte = *(unsigned char *)(p + 0x5e);
|
||||
if (s1byte == 0xc) {
|
||||
((void (*)(int))func_80019064)((int)&D_80193C70);
|
||||
if (((*((unsigned short *) (p + 0x5c))) & 1) != 0)
|
||||
{
|
||||
s1byte = *((unsigned char *) (p + 0x5e));
|
||||
if (s1byte == 0xc)
|
||||
{
|
||||
((void (*)(int)) func_80019064)((int) (&D_80193C70));
|
||||
}
|
||||
((void (*)(int, int))func_80131E00)(p, D_80193C7C[s1byte]);
|
||||
((void (*)(int, int)) func_80131E00)(p, D_80193C7C[s1byte]);
|
||||
p = param_1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+38
-17
@@ -1406,23 +1406,34 @@ def inline_single_set_temps(text, tu, fn, d_):
|
||||
decls.append(p)
|
||||
else:
|
||||
uses.append(p)
|
||||
if len(asgs) != 1 or len(uses) != 1 or len(decls) > 1:
|
||||
if not asgs or not uses or len(decls) > 1:
|
||||
continue
|
||||
ai = asgs[0][0]
|
||||
ui, u0, u1 = uses[0]
|
||||
if ai >= ui:
|
||||
continue
|
||||
mm = re.match(ASG % re.escape(v), masked[ai].strip())
|
||||
raw_stripped = lines[ai].strip()
|
||||
expr = raw_stripped[mm.start(1):mm.end(1)]
|
||||
if not expr.strip():
|
||||
continue
|
||||
cand = list(lines)
|
||||
cand[ui] = lines[ui][:u0] + f"({expr})" + lines[ui][u1:]
|
||||
cand[ai] = None # the assignment goes (with its declaration when they are one)
|
||||
if decls: # form B: the separate `T v;` is dead now
|
||||
cand[decls[0][0]] = None
|
||||
out.append((f"inline {v} @{ai + 1}", "\n".join(l for l in cand if l is not None)))
|
||||
# ONE ASSIGNMENT AT A TIME, not one per variable. The single-set case is the easy half; the lever rung D actually
|
||||
# found is narrower: `uVar5` is assigned in TWO branches of func_80163EC8, and the winning move inlined ONE of them.
|
||||
# An assignment is inlinable when its value is read exactly once before the variable is written again — the classic
|
||||
# def-with-one-use — so the assignment can go and the read can carry the expression.
|
||||
order = sorted(places)
|
||||
for ai, _, _ in asgs:
|
||||
after = [p for p in order if p[0] > ai]
|
||||
reads = [p for p in after if p not in [(x, y, z) for x, y, z in asgs] and not is_decl_line(masked[p[0]].strip())]
|
||||
if not reads:
|
||||
continue
|
||||
ui, u0, u1 = reads[0]
|
||||
nxt = [p for p in after if p[0] > ui]
|
||||
if nxt and (nxt[0][0], nxt[0][1], nxt[0][2]) not in [(x, y, z) for x, y, z in asgs]:
|
||||
continue # read again before it is rewritten: the assignment is not dead
|
||||
mm = re.match(ASG % re.escape(v), masked[ai].strip())
|
||||
if not mm:
|
||||
continue
|
||||
expr = lines[ai].strip()[mm.start(1):mm.end(1)]
|
||||
if not expr.strip():
|
||||
continue
|
||||
cand = list(lines)
|
||||
cand[ui] = lines[ui][:u0] + f"({expr})" + lines[ui][u1:]
|
||||
cand[ai] = None # the assignment goes (with its declaration when they are one)
|
||||
if decls and len(asgs) == 1: # the separate `T v;` is dead only when nothing else writes v
|
||||
cand[decls[0][0]] = None
|
||||
out.append((f"inline {v} @{ai + 1}", "\n".join(l for l in cand if l is not None)))
|
||||
return out
|
||||
|
||||
|
||||
@@ -1559,12 +1570,19 @@ def recipes(a):
|
||||
return [r for t_ in inc.get(tu, []) for r in by_src.get(t_, [])] if tu.endswith(".h") else by_src.get(tu, [])
|
||||
|
||||
def judge(tu, cand):
|
||||
"""judge one candidate, and be killable: the oracle writes the candidate into the tree to compile it, so a SIGTERM
|
||||
between the write and the restore leaves a candidate in `src/`. The original text goes into inflight.json first, the
|
||||
same file `--restore` reads (P35's rule: a tool restores from its OWN snapshot, never `git checkout`) — S99 killed a
|
||||
run mid-judge and found exactly that leftover."""
|
||||
path = REPO / tu
|
||||
raw, st = path.read_text(errors="surrogateescape"), path.stat()
|
||||
RUN.mkdir(parents=True, exist_ok=True)
|
||||
INFLIGHT.write_text(json.dumps({tu: raw}))
|
||||
try:
|
||||
return oracle.judge_all(recs_for(tu), cand, tag="rec", write_path=(tu if tu.endswith(".h") else None))
|
||||
finally:
|
||||
restore_file(path, raw, st)
|
||||
INFLIGHT.unlink(missing_ok=True)
|
||||
|
||||
def lever_free(tu, raw, fn):
|
||||
m, ls = same_len_mask(raw), line_starts(raw)
|
||||
@@ -1613,7 +1631,7 @@ def recipes(a):
|
||||
print(f"delever --recipes: {len(todo)} RESIDUE bodies", flush=True)
|
||||
rows, won, tried, compiles = [], 0, 0, 0
|
||||
t0 = time.time()
|
||||
for (tu, fn), r in todo:
|
||||
for n_body, ((tu, fn), r) in enumerate(todo, 1):
|
||||
path = REPO / tu
|
||||
raw = path.read_text(errors="surrogateescape")
|
||||
names = pin_names(sites_by[(tu, fn)]) # may be empty: R5 needs no pinned declaration
|
||||
@@ -1632,6 +1650,9 @@ def recipes(a):
|
||||
if v == "IDENTICAL":
|
||||
hit = (rec, desc, cand)
|
||||
break
|
||||
if n_body % 10 == 0 or hit: # R55: a lane that runs unattended leaves evidence
|
||||
print(f" [{n_body}/{len(todo)}] {won} closed · {compiles} compiles · {(time.time() - t0) / 60:.1f} min",
|
||||
flush=True)
|
||||
row = dict(ts=time.strftime("%Y-%m-%d %H:%M:%S"), label=a.label, rung="R", calib=dict(head=oracle.head(), stamp=oracle.config_stamp()),
|
||||
tu=tu, fn=fn, addr=fn_addr(fn, tu), aliases=r.get("aliases"), header=tu.endswith(".h"),
|
||||
nhash_before=r.get("nhash_after"), nhash_after=None, candidates=len(cands), pins=len(names),
|
||||
|
||||
@@ -572,10 +572,34 @@ def winner_body(winner_c, fn, tu):
|
||||
return None
|
||||
|
||||
|
||||
def tidy_body(body):
|
||||
"""the permuter's winner, made to read like the tree it lands in — or None when there is nothing to tidy.
|
||||
|
||||
pycparser reprints a body it has parsed: two-space indent where this tree uses four, and an empty statement `;` left
|
||||
where a statement was inlined away. Neither generates code, and the object oracle judges the tidied text before it is
|
||||
kept, so this can only ever improve the source. What it deliberately does NOT touch is the parenthesisation
|
||||
(`*((s32 *) (p + 4))`) or the brace style — that is the formatting phase's job, with clang-format, over the whole tree
|
||||
at once (`decomp-architect/templates/.clang-format`); a per-bank reformat would make this phase's diffs unreadable."""
|
||||
lines = [l for l in body.split("\n") if l.strip() != ";"]
|
||||
indents = [len(l) - len(l.lstrip(" ")) for l in lines if l.strip() and l.startswith(" ")]
|
||||
if indents and min(indents) == 2: # a two-space body: double every leading run
|
||||
lines = [(" " * (2 * (len(l) - len(l.lstrip(" ")))) + l.lstrip(" ")) if l.startswith(" ") else l for l in lines]
|
||||
out = "\n".join(lines)
|
||||
return out if out != body else None
|
||||
|
||||
|
||||
def bank(a):
|
||||
outs = load_outcomes()
|
||||
banked = {(o["alias"], o["fn"], o["nhash"]) for o in outs if o.get("kind") == "bank" and o.get("applied")}
|
||||
# a body ANOTHER rung already closed is not banked again (S99: --bank re-applied the permuter's reprinted body over the
|
||||
# one-line version rung R had banked for the same function, and the tree lost a clean diff for a byte-identical one)
|
||||
cur = {}
|
||||
for r in dl.load_ledger():
|
||||
if r.get("tu") and r.get("fn"):
|
||||
cur[(r["tu"], r["fn"])] = r
|
||||
already = {(k[0], k[1]) for k, r in cur.items() if r.get("verdict") == "LEVER-FREE"}
|
||||
todo = [o for o in outs if o.get("kind") == "attempt" and o.get("verdict") == "MATCH"
|
||||
and (o["tu"], o["fn"]) not in already
|
||||
and (o["alias"], o["fn"], o["nhash"]) not in banked
|
||||
and (not a.only or any(x in (o["fn"], o["tu"], o["alias"]) or o["nhash"].startswith(x) for x in a.only))]
|
||||
if not todo:
|
||||
@@ -590,11 +614,17 @@ def bank(a):
|
||||
bad += 1
|
||||
continue
|
||||
bf = d / "body.c"
|
||||
bf.write_text(body, errors="surrogateescape")
|
||||
cmd = [PY, "tools/delever.py", "--apply-body", o["tu"], o["fn"], bf.relative_to(REPO).as_posix(),
|
||||
"--label", a.label, "--rung", "D"] + (["--dirty-ok"] if a.dirty_ok else [])
|
||||
r = subprocess.run(cmd, cwd=REPO, capture_output=True, text=True)
|
||||
print(" " + (r.stdout or r.stderr).strip().splitlines()[-1][:220], flush=True)
|
||||
# the tidied body FIRST (the oracle judges it like any other candidate); the winner verbatim only if it is refused
|
||||
forms = [(t_, "tidied") for t_ in [tidy_body(body)] if t_] + [(body, "verbatim")]
|
||||
r = None
|
||||
for text_, how in forms:
|
||||
bf.write_text(text_, errors="surrogateescape")
|
||||
cmd = [PY, "tools/delever.py", "--apply-body", o["tu"], o["fn"], bf.relative_to(REPO).as_posix(),
|
||||
"--label", a.label, "--rung", "D"] + (["--dirty-ok"] if a.dirty_ok else [])
|
||||
r = subprocess.run(cmd, cwd=REPO, capture_output=True, text=True)
|
||||
print(f" [{how}] " + (r.stdout or r.stderr).strip().splitlines()[-1][:210], flush=True)
|
||||
if r.returncode == 0:
|
||||
break
|
||||
row = dict(kind="bank", ts=time.strftime("%Y-%m-%d %H:%M:%S"), nhash=o["nhash"], tu=o["tu"], fn=o["fn"],
|
||||
alias=o["alias"], label=a.label, applied=(r.returncode == 0),
|
||||
apply_out=(r.stdout or r.stderr).strip()[-400:])
|
||||
|
||||
Reference in New Issue
Block a user