diff --git a/.run/P36/agents/ov_SC03_091__func_801861FC/body.c b/.run/P36/agents/ov_SC03_091__func_801861FC/body.c index b6e8d8c60..3bd959804 100644 --- a/.run/P36/agents/ov_SC03_091__func_801861FC/body.c +++ b/.run/P36/agents/ov_SC03_091__func_801861FC/body.c @@ -1,38 +1,30 @@ -void func_801861FC(s32 a0) { - s32 ent = a0; - s32 state = *(u16 *)(ent + 0x34); - s32 sub; +void func_801861FC(s32 ent) { + s32 t; s32 cnt; - switch (state) { - case 0: { - s32 t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); + switch (*(u16 *)(ent + 0x34)) { + case 0: + t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = t << 1; cnt = *(s32 *)(ent + 0x1C) + 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt < 0x10) { break; } - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x7000; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x2000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x7000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x2000; *(s32 *)(ent + 0x1C) = 0x40; *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1; break; - } case 1: if (func_8012BEE8(ent) != 0) { *(s32 *)(ent + 0x1C) = 0x10; *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1; } break; - case 2: { - s32 t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + case 2: + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = func_8004787C(*(s32 *)(ent + 0x1C) << 6) << 1; cnt = *(s32 *)(ent + 0x1C) - 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt == 0) { @@ -41,7 +33,6 @@ void func_801861FC(s32 a0) { } break; } - } func_8018632C(ent); } diff --git a/.run/P36/agents/ov_SC03_091__func_801861FC/mechanism.md b/.run/P36/agents/ov_SC03_091__func_801861FC/mechanism.md new file mode 100644 index 000000000..4305e174b --- /dev/null +++ b/.run/P36/agents/ov_SC03_091__func_801861FC/mechanism.md @@ -0,0 +1,56 @@ +# func_801861FC (ov_SC03_091_jr_8018326C.c) — P36 S104 agent d22 + +**Result: score 0 in plain C, zero levers** (was 1 NEEDED lever: `register s32 t __asm__("$2")`). Levers 1 → 0. +Closed on the FIRST `--try`. Best body: `PACK/body.c` (76/76 ins, MATCH). It also closes the class's three other copies +(`scratch/copies.md`): func_80185678 (ov_SC03_089), func_80185354 (ov_SC03_090), func_801831E8 (ov_SC03_104) — all 0. + +## (a) The residual +Counted first: mine 77, target 76 — ONE extra instruction, `move a0,v0` after the case-0 `jal func_8004787C`; the target +computes `t*7` (`sll v1,v0,3; subu v1,v1,v0`) and `t<<1` straight out of `$v0`. Every other hunk is a branch offset +shifted by that one instruction. So: a call-result copy that should have been tied to `$2` and was not. + +## (b) The pass and the decision (read in the dumps, proven on bytes) +The lever-free body reuses ONE `t` for the call result in case 0 and in case 2 — two basic blocks. flow marks it +`REG_BLOCK_GLOBAL` (`flow.c:2058-2061`, the second block that sets it), so local-alloc never sees it (block_alloc takes only +pseudos local to the block) and cannot tie it to the dying `$2` with `combine_regs` (`local-alloc.c:1722`). Local-alloc +first gives case 0's block-local temps (`t<<3`, the `ent+0x20` loads) `$2`/`$3`; global allocation then records those hard +registers as conflicts of `t` (`global.c:1428` via the locals' `reg_renumber`) — `.greg`, free body: +`;; 77 conflicts: 73 76 77 2 3 29` — so `find_reg` (`global.c:904`) hands `t` `$4` and the copy `move a0,v0` survives. +With one `t` per case, case 0's `t` is local to block 6 (`.lreg`: "Register 78 used 4 times across 7 insns in block 6", +"Register 78 in 2.") and is tied to `$2`; the copy becomes `move v0,v0` and is deleted. Dumps: +`scratch/dumps_free/free.i.{lreg,greg}` vs `scratch/dumps_body/body.i.{lreg,greg}`. + +## (c) The move that closed it +One name per value for the call result: the case-2 `t` is either inlined into its single use +(`*(s16 *)(sub + 0x1A) = func_8004787C(...) << 1;`, the shipped body) or declared in its own case block. Byte-proven +equivalent spellings, all 0: `{ s32 t = …; }` inside BOTH cases (`scratch/c1.c`); two function-scope names `t`, `t2` +(`scratch/vA.c`); only case 0 block-scoped (`vB.c`); only case 2 block-scoped (`vC.c`). The shipped body also drops the +decompiler's `ent = a0` / `state` / `sub` temps (readability; they were not the defect — r2 = 0). + +## (d) Generator proposal +R23 (split a reused local) already covers this move but REFUSED `t`: its definition test requires the text before +`v = E;` to end in `;`/`{`/`}` (`tools/delever.py` `split_reused_locals`, the `before.endswith((";", "{", "}"))` check), +and case 2's `t = func_8004787C(...)` follows `case 2:` — so the sweep split `sub` and `cnt` (free_115/116, best 9) but +never `t`. Rule: **accept a `case K:` / `default:` label (a `:` that closes a case label) as a statement boundary in R23** +— the definition is the first statement of the case, so every later use in that segment is dominated by it whether the +case is entered by dispatch or by fall-through. Also offer "declare the value inside the case's own `{ }`" as the R23 +spelling when the segments are switch cases (d7's per-arm local). + +## (e) What did not work (byte evidence) +- `scratch/r1.c` (case-2 call inlined but `sub = *(s32 *)(ent + 0x20);` left ABOVE the call): wrong — `sub` then lives across + the call and takes `$s1` (frame 32, +1 callee-saved). The `ent+0x20` load must stay after the call, as in the target. +- The history's 9–12 candidates: they split/inlined `sub`/`cnt` and swapped statements — none separated the two `t`s. +- Struct accesses with the reused `t` (`scratch/st_reused.c`): 15, unchanged. + +## (f) Where the method fell short +Nothing structural — count (1 extra `move`) → "a call-result copy not tied to `$2`" → the only non-local pseudo in the +case → the `.greg` conflict line. This is the S103 c1/c8 "local reused across statement groups → one name per value" move; +the sweep's generator for it had a text-shape gap at a `case` label, not a compiler-model gap. The pin was faking exactly +the `$2` tie that a block-local pseudo gets for free. + +## (g) Structs question +Neutral. Tested on bytes with body-local `struct Ent { u8 pad0[0x1C]; s32 timer; struct Sub *sub; u8 pad24[0x10]; u16 state; }` +/ `struct Sub { u8 pad0[0x18]; s16 sx; s16 sy; }` and `e->state++`: reused `t` = 15 (`scratch/st_reused.c`), split `t` = 0 +(`scratch/st_split.c`). The decision is flow's block-global marking of one pseudo set in two cases; aggregate vs scalar +MEM flags (`expr.c:4568-4577`) never enter it. The struct would read better (timer +0x1C, sub-object +0x20 with s16 +0x18/+0x1A, +state u16 +0x34) but does not close the bytes. diff --git a/.run/P36/agents/ov_SC04_012__func_8017E060/body_free.c b/.run/P36/agents/ov_SC04_012__func_8017E060/body_free.c new file mode 100644 index 000000000..0bb29d285 --- /dev/null +++ b/.run/P36/agents/ov_SC04_012__func_8017E060/body_free.c @@ -0,0 +1,14 @@ +void func_8017E060(s32 *param_1) +{ + + extern s8 D_80191C70; + int new_var; +s32 p; +s32 r; + p = (s32) (&D_80191C70); + r = param_1[0x34 / 4]; + new_var = r; + p += new_var; + *((s8 *) p) = 0; + ((void (*)(void)) func_801292C8)(); +} diff --git a/.run/P36/agents/ov_SC04_012__func_8017E060/body_tree.c b/.run/P36/agents/ov_SC04_012__func_8017E060/body_tree.c new file mode 100644 index 000000000..3d5642212 --- /dev/null +++ b/.run/P36/agents/ov_SC04_012__func_8017E060/body_tree.c @@ -0,0 +1,14 @@ +void func_8017E060(s32 *param_1) +{ + + extern s8 D_80191C70; + int new_var; +register s32 p __asm__("$4"); // !FAKE: pin $4 — NEEDED DIFFERS (P36 rung B tus7) +s32 r; + p = (s32) (&D_80191C70); + r = param_1[0x34 / 4]; + new_var = r; + p += new_var; + *((s8 *) p) = 0; + ((void (*)(void)) func_801292C8)(); +} diff --git a/.run/P36/agents/ov_SC04_012__func_8017E060/history.txt b/.run/P36/agents/ov_SC04_012__func_8017E060/history.txt new file mode 100644 index 000000000..f67bb5927 --- /dev/null +++ b/.run/P36/agents/ov_SC04_012__func_8017E060/history.txt @@ -0,0 +1,14 @@ +g6b: verdict NO-MATCH start 4 best 2 compiles 190 path R9 swap-stmts @4172 +best-scoring single candidates of the last trace (move -> score [residual class]): + R9 swap-stmts @4172 -> 2 [COUNT] (from 4) + R12 width new_var int->u16 @4166 -> 2 [COUNT] (from 2) + R6 inline r @4170 -> 2 [COUNT] (from 2) + R7 block @4169 -> 2 [COUNT] (from 2) + R9 swap-stmts @4169 -> 2 [COUNT] (from 2) + R10 param-copy param_1 @4169 -> 2 [COUNT] (from 2) + R4 decl-move p 2->0 -> 2 [COUNT] (from 2) + R12 width new_var int->s16 @4166 -> 2 [COUNT] (from 2) + R6 inline new_var @4171 -> 2 [COUNT] (from 2) + R7 do-while @4169 -> 2 [COUNT] (from 2) + R9 swap-stmts @4170 -> 2 [COUNT] (from 2) + R4 decl-move p 2->1 -> 2 [COUNT] (from 2) diff --git a/.run/P36/agents/ov_SC04_012__func_8017E060/neighbours.txt b/.run/P36/agents/ov_SC04_012__func_8017E060/neighbours.txt new file mode 100644 index 000000000..93729a40a --- /dev/null +++ b/.run/P36/agents/ov_SC04_012__func_8017E060/neighbours.txt @@ -0,0 +1,31 @@ +--- every @class/@stuck/@crack note in this translation unit --- +// @class: plumbing +// @stuck: none — MATCH +// @class: regalloc-order — simplified sibling of matched func_8017B614. +// @stuck: none. Block-moves are align-1 struct-assigns (u8[8]) -> emit_block_move +// @class: struct +// @stuck: none — MATCH (74 ins) +// @class: regalloc-order + T1 memcpy-builtin→call re-crack +// @stuck: 0 (iso). Register lever = $16 pin + in-place re-tie on the memcpy-branch src (keeps +// @class: plumbing +// @stuck: none — MATCH +// @class: schedule +// @stuck: none — MATCH +// @class: struct +// @stuck: none — MATCH +// @class: struct +// @stuck: none — MATCH (63 ins) +// @class: struct +// @stuck: none — MATCH (62 ins) +// @class: struct +// @stuck: none — MATCH (65 ins) +// @class: regalloc-order +// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 +// @class: plumbing +// @stuck: none — MATCH (expected); short-typed global increment + signed compare, store-2 on overflow +// @class: plumbing +// @stuck: none — MATCH expected (simple short-increment + guarded call) +// @class: regalloc-order +// @stuck: none — MATCH (branch-polarity invert: fn-ptr non-zero call is the fall-through arm) +// @class: schedule +// @stuck: none — MATCH (102 ins). MATRIX(0x20:m@0,t@0x14)+SVECTOR in/out stack layout; the only diff --git a/.run/P36/agents/ov_SC04_012__func_8017E060/related.txt b/.run/P36/agents/ov_SC04_012__func_8017E060/related.txt new file mode 100644 index 000000000..468c4b875 --- /dev/null +++ b/.run/P36/agents/ov_SC04_012__func_8017E060/related.txt @@ -0,0 +1,155 @@ +=== lever-free bodies in ov_SC04_012 sharing a callee or global with func_8017E060 (6 found; top 6 by shared symbols) — read them for the SHAPE === +--- func_8012927C (src/shared/ov/func_8012927C.h:5) shares 1: func_801292C8 --- +void func_8012927C(void) { + s32 i; + u8 *p = (u8 *)&D_8011DB30; + for (i = 0; i < 0x80; i++) { + func_801292C8(p); + p += 0x38; + } +} + +--- func_801433F0 (src/shared/ov/func_801433F0.h:7) shares 1: func_801292C8 --- +void func_801433F0(s32 a0) { + if (*(u16 *)(a0 + 2) == 0) { + func_80143458(); + } else { + func_8012931C((struct vec *)a0); + if (func_80128ED8(*(void **)(a0 + 0x20), (u8 *)a0 + 0x24) != 0) { + func_801292C8((u8 *)a0); + } + } +} + +--- func_8014350C (src/shared/ov/func_8014350C.h:7) shares 1: func_801292C8 --- +void func_8014350C(s32 *a0) { + if (*(u16 *)((u8 *)a0 + 2) == 0) { + func_8014358C(); + return; + } + func_8012931C((struct vec *)a0); + if (func_80128ED8((void *)a0[0x20 / 4], (void *)((u8 *)a0 + 0x24)) != 0) { + func_801292C8((u8 *)a0); + return; + } + *(u8 *)(a0[0x20 / 4] + 0x27) = *(u8 *)((u8 *)a0 + 0x28) - 0x70; +} + +--- func_8017DAE4 (src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c:3916) shares 1: D_80191C70 --- +void func_8017DAE4(s32 a0) { + extern u8 D_80126B5C; + extern s32 D_801930C0; + extern s8 D_80191C70; + + s16 buf[4]; + s32 i; + s32 j; + s32 slot; + u8 *obj; + + slot = -1; + func_80015978((s32)&D_80126B5C, (s32 *)buf); + buf[1] = *(u16 *)(a0 + 0xA); + + for (j = 0, i = 0; j < D_801930C0; j++, i++) { + if (slot != -1) { + break; + } + if (*((u8 *)&D_80191C70 + i) == 0) { + slot = i; + } + } + + if (slot != -1) { + obj = func_801290DC(0x61, (u8 *)buf); + if (obj != 0) { + *(&D_80191C70 + slot) = 1; + *(s32 *)(obj + 0x34) = slot; + } + } +} + +--- func_8017E4C8 (src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c:4400) shares 1: func_801292C8 --- +void func_8017E4C8(int param_1) +{ + UVec_8017EA1C_8017E4C8 v; + int p; + short ang; + int siz; + int wid; + int col; + + p = *(int *)(param_1 + 0x20); + ang = *(unsigned short *)(param_1 + 0x2c) + 0x40; + *(unsigned short *)(param_1 + 0x2c) = ang; + v.vz = func_8004787C(ang) / 256; + v.vy = 0; + v.vx = 0; + func_800139C8(*(short *)(p + 0x12), &v, &v); + + *(unsigned short *)(param_1 + 6) = *(unsigned short *)(param_1 + 0x12) + v.vx; + *(unsigned short *)(param_1 + 0xe) = *(unsigned short *)(param_1 + 0x1a) + v.vz; + *(unsigned short *)(param_1 + 0xa) = *(unsigned short *)(param_1 + 0xa) - *(unsigned short *)(param_1 + 0x30); + siz = *(unsigned short *)(param_1 + 0x2e) + 0x10; + *(unsigned short *)(param_1 + 0x2e) = siz; + + wid = *(unsigned short *)(p + 0x1a) + siz; + *(unsigned short *)(p + 0x1a) = wid; + *(unsigned short *)(p + 0x18) = wid; + + col = *(unsigned char *)(p + 0x26) - 4; + *(unsigned char *)(p + 0x26) = col; + *(unsigned char *)(p + 0x25) = col; + *(unsigned char *)(p + 0x24) = col; + + if (func_80146E98(param_1) != 0) { + ((void (*)(int))func_801292C8)(param_1); + } +} + +--- func_8017D99C (src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c:3867) shares 1: D_80191C70 --- +void func_8017D99C(s32 a0) { + + extern u8 D_80126B5C; + extern s32 D_801930C0; + extern s16 D_801930C4; + extern s32 D_801930C8; + extern s32 D_801930CC; + extern u8 D_80182290[]; + extern u8 D_80182298[]; + extern s8 D_80191C70; + extern s8 D_80191CBF; + + s16 buf[4]; + s32 i; + s8 *p; + u8 *obj; + + /* [] form (not *(T *)(a0 + K)) -- see the MEM_IN_STRUCT_P note above. */ + D_801930C0 = ((s16 *)a0)[0xFC / 2]; + D_801930C4 = ((s32 *)a0)[0xDC / 4]; + D_801930C8 = (s32)(D_80182290 + ((s16 *)a0)[0x70 / 2] * 4); + D_801930CC = (s32)(D_80182298 + ((s16 *)a0)[0x70 / 2] * 8); + + func_80015978((s32)&D_80126B5C, (s32 *)buf); + buf[1] = *(u16 *)(a0 + 0xA); + + p = &D_80191CBF; + for (i = 0x4F; i >= 0; i--) { + *p = 0; + p--; + } + + for (i = 0; i < D_801930C0; i++) { + obj = func_801290DC(0x61, (u8 *)buf); + if (obj != 0) { + *(&D_80191C70 + i) = 1; + *(s32 *)(obj + 0x34) = i; + func_8017DED4((s32)obj); + *(u16 *)(obj + 0xA) += (rand() & 0xF) * 3 * 16; + } + } + + func_8012AD50((void *)a0); +} + diff --git a/.run/P36/agents/ov_SC04_012__func_8017E060/residual.txt b/.run/P36/agents/ov_SC04_012__func_8017E060/residual.txt new file mode 100644 index 000000000..17a98f1a2 --- /dev/null +++ b/.run/P36/agents/ov_SC04_012__func_8017E060/residual.txt @@ -0,0 +1,7 @@ +src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c:func_8017E060: score 4 (OTHER; mine 12 ins, target 12) — not yet + replace mine[0:2] target[0:2] + 0 addiu sp,sp,-32 | addiu sp,sp,-24 + 1 sw ra,24(sp) | sw ra,16(sp) + replace mine[8:10] target[8:10] + 8 lw ra,24(sp) | lw ra,16(sp) + 9 addiu sp,sp,32 | addiu sp,sp,24 diff --git a/.run/P36/agents/ov_SC04_012__func_8017E060/sites.txt b/.run/P36/agents/ov_SC04_012__func_8017E060/sites.txt new file mode 100644 index 000000000..0dd4541b6 --- /dev/null +++ b/.run/P36/agents/ov_SC04_012__func_8017E060/sites.txt @@ -0,0 +1,2 @@ +NEEDED pin $4 line 4262 +REMOVED pin $3 line 4263 diff --git a/.run/P36/agents/ov_SC04_012__func_8017E060/tu.txt b/.run/P36/agents/ov_SC04_012__func_8017E060/tu.txt new file mode 100644 index 000000000..8afd4b2dc --- /dev/null +++ b/.run/P36/agents/ov_SC04_012__func_8017E060/tu.txt @@ -0,0 +1,2 @@ +src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c +func_8017E060 diff --git a/.run/P36/delever/calibration.json b/.run/P36/delever/calibration.json index 928676377..19f700cdf 100644 --- a/.run/P36/delever/calibration.json +++ b/.run/P36/delever/calibration.json @@ -1,7 +1,7 @@ { - "head": "954e06093", + "head": "eadfa5977", "stamp": "15956e4a96c4", - "generated": "2026-09-10 22:38", + "generated": "2026-09-10 22:54", "aliases": [ "main", "ov_SC03_014", @@ -21,207 +21,207 @@ "main": { "objects": 85, "identical": 85, - "seconds": 10.036000000000001, + "seconds": 10.013999999999996, "mean_s": 0.118 }, "ov_SC03_014": { "objects": 32, "identical": 32, - "seconds": 6.339, - "mean_s": 0.198 + "seconds": 6.761, + "mean_s": 0.211 }, "ov_SC03_015": { "objects": 32, "identical": 32, - "seconds": 6.549000000000002, - "mean_s": 0.205 + "seconds": 6.607, + "mean_s": 0.206 }, "ov_SC04_011": { "objects": 28, "identical": 28, - "seconds": 6.021999999999999, - "mean_s": 0.215 + "seconds": 6.0649999999999995, + "mean_s": 0.217 } }, "per_object_seconds": { - "build/src/800.o": 0.981, - "build/src/800_b.o": 0.132, - "build/src/800_b_2.o": 0.482, - "build/src/800_b_o0a.o": 0.129, - "build/src/800_c.o": 0.288, - "build/src/800b2.o": 0.091, - "build/src/apicard1.o": 0.14, - "build/src/apicard2.o": 0.149, - "build/src/apicard3.o": 0.108, - "build/src/apicard4.o": 0.073, - "build/src/apicard5.o": 0.148, - "build/src/apicard6.o": 0.091, - "build/src/apicard7.o": 0.15, - "build/src/boot.o": 0.179, - "build/src/gap.o": 0.103, - "build/src/libapi1.o": 0.13, - "build/src/libapi2.o": 0.084, - "build/src/libc2_1.o": 0.112, - "build/src/libc2_2.o": 0.085, - "build/src/libcd1.o": 0.085, - "build/src/libcd2.o": 0.093, - "build/src/libetc.o": 0.072, + "build/src/800.o": 0.971, + "build/src/800_b.o": 0.107, + "build/src/800_b_2.o": 0.498, + "build/src/800_b_o0a.o": 0.139, + "build/src/800_c.o": 0.306, + "build/src/800b2.o": 0.085, + "build/src/apicard1.o": 0.076, + "build/src/apicard2.o": 0.099, + "build/src/apicard3.o": 0.085, + "build/src/apicard4.o": 0.102, + "build/src/apicard5.o": 0.136, + "build/src/apicard6.o": 0.084, + "build/src/apicard7.o": 0.097, + "build/src/boot.o": 0.2, + "build/src/gap.o": 0.082, + "build/src/libapi1.o": 0.127, + "build/src/libapi2.o": 0.086, + "build/src/libc2_1.o": 0.099, + "build/src/libc2_2.o": 0.125, + "build/src/libcd1.o": 0.1, + "build/src/libcd2.o": 0.08, + "build/src/libetc.o": 0.089, "build/src/libgpu.o": 0.087, - "build/src/libgpu2.o": 0.086, - "build/src/libgs1.o": 0.073, - "build/src/libgs2.o": 0.124, - "build/src/libgs3.o": 0.064, - "build/src/libgs4.o": 0.072, - "build/src/libgs5.o": 0.106, - "build/src/libgs6.o": 0.141, - "build/src/libgs7.o": 0.088, - "build/src/libgs8.o": 0.082, - "build/src/libgte1.o": 0.123, - "build/src/libgte10.o": 0.093, - "build/src/libgte11.o": 0.071, - "build/src/libgte12.o": 0.087, - "build/src/libgte13.o": 0.085, - "build/src/libgte14.o": 0.087, - "build/src/libgte15.o": 0.124, - "build/src/libgte16.o": 0.108, - "build/src/libgte17.o": 0.074, - "build/src/libgte18.o": 0.077, - "build/src/libgte19.o": 0.091, - "build/src/libgte2.o": 0.084, - "build/src/libgte20.o": 0.099, - "build/src/libgte21.o": 0.065, - "build/src/libgte22.o": 0.078, - "build/src/libgte23.o": 0.078, - "build/src/libgte24.o": 0.132, - "build/src/libgte25.o": 0.13, - "build/src/libgte26.o": 0.08, - "build/src/libgte27.o": 0.076, - "build/src/libgte28.o": 0.073, - "build/src/libgte29.o": 0.086, - "build/src/libgte3.o": 0.104, - "build/src/libgte30.o": 0.088, - "build/src/libgte4.o": 0.088, - "build/src/libgte5.o": 0.115, - "build/src/libgte6.o": 0.092, - "build/src/libgte7.o": 0.102, - "build/src/libgte8.o": 0.126, - "build/src/libgte9.o": 0.075, - "build/src/libmcrd1.o": 0.186, - "build/src/libmcrd2.o": 0.093, - "build/src/libpad1.o": 0.101, - "build/src/libpad2.o": 0.098, - "build/src/sgap.o": 0.146, - "build/src/sgap_2.o": 0.089, - "build/src/sgap_3.o": 0.081, - "build/src/sgap_4.o": 0.124, - "build/src/sgap_5.o": 0.091, - "build/src/sgap_6.o": 0.114, - "build/src/sgap_8.o": 0.097, - "build/src/snd1.o": 0.122, - "build/src/snd10.o": 0.1, - "build/src/snd11.o": 0.111, - "build/src/snd12.o": 0.068, - "build/src/snd2.o": 0.119, - "build/src/snd3.o": 0.13, - "build/src/snd4.o": 0.084, - "build/src/snd5.o": 0.072, - "build/src/snd6.o": 0.096, - "build/src/snd7.o": 0.093, - "build/src/snd8.o": 0.094, - "build/src/snd9.o": 0.108, - "build/src/ov_SC03_014/ov_SC03_014.o": 0.146, - "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.597, - "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.551, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.077, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.069, + "build/src/libgpu2.o": 0.171, + "build/src/libgs1.o": 0.091, + "build/src/libgs2.o": 0.078, + "build/src/libgs3.o": 0.078, + "build/src/libgs4.o": 0.098, + "build/src/libgs5.o": 0.063, + "build/src/libgs6.o": 0.136, + "build/src/libgs7.o": 0.079, + "build/src/libgs8.o": 0.088, + "build/src/libgte1.o": 0.115, + "build/src/libgte10.o": 0.091, + "build/src/libgte11.o": 0.101, + "build/src/libgte12.o": 0.079, + "build/src/libgte13.o": 0.084, + "build/src/libgte14.o": 0.111, + "build/src/libgte15.o": 0.068, + "build/src/libgte16.o": 0.112, + "build/src/libgte17.o": 0.115, + "build/src/libgte18.o": 0.085, + "build/src/libgte19.o": 0.079, + "build/src/libgte2.o": 0.111, + "build/src/libgte20.o": 0.068, + "build/src/libgte21.o": 0.128, + "build/src/libgte22.o": 0.069, + "build/src/libgte23.o": 0.112, + "build/src/libgte24.o": 0.079, + "build/src/libgte25.o": 0.075, + "build/src/libgte26.o": 0.095, + "build/src/libgte27.o": 0.095, + "build/src/libgte28.o": 0.092, + "build/src/libgte29.o": 0.093, + "build/src/libgte3.o": 0.108, + "build/src/libgte30.o": 0.094, + "build/src/libgte4.o": 0.09, + "build/src/libgte5.o": 0.085, + "build/src/libgte6.o": 0.074, + "build/src/libgte7.o": 0.099, + "build/src/libgte8.o": 0.072, + "build/src/libgte9.o": 0.125, + "build/src/libmcrd1.o": 0.151, + "build/src/libmcrd2.o": 0.12, + "build/src/libpad1.o": 0.127, + "build/src/libpad2.o": 0.092, + "build/src/sgap.o": 0.127, + "build/src/sgap_2.o": 0.099, + "build/src/sgap_3.o": 0.072, + "build/src/sgap_4.o": 0.106, + "build/src/sgap_5.o": 0.144, + "build/src/sgap_6.o": 0.142, + "build/src/sgap_8.o": 0.129, + "build/src/snd1.o": 0.09, + "build/src/snd10.o": 0.075, + "build/src/snd11.o": 0.081, + "build/src/snd12.o": 0.077, + "build/src/snd2.o": 0.138, + "build/src/snd3.o": 0.113, + "build/src/snd4.o": 0.117, + "build/src/snd5.o": 0.076, + "build/src/snd6.o": 0.083, + "build/src/snd7.o": 0.084, + "build/src/snd8.o": 0.1, + "build/src/snd9.o": 0.125, + "build/src/ov_SC03_014/ov_SC03_014.o": 0.211, + "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.684, + "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.543, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.099, + "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.074, "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.196, - "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.208, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.141, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.142, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.082, - "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.226, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.098, - "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.229, - "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.154, - "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.08, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.084, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.134, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.631, - "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.407, - "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.118, - "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.24, - "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.079, - "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.179, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.095, + "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.205, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.19, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.108, + "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.11, + "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.236, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.11, + "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.282, + "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.114, + "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.124, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.099, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.128, + "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.615, + "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.421, + "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.172, + "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.26, + "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.119, + "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.174, + "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.22, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.244, - "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.077, - "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.445, - "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.073, - "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.104, - "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.078, - "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.135, - "build/src/ov_SC03_015/ov_SC03_015.o": 0.164, - "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.683, - "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.528, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.091, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.102, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.165, - "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.186, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.187, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.102, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.145, - "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.266, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.098, - "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.232, - "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.132, - "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.087, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.098, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.153, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.651, - "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.471, - "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.131, - "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.281, - "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.073, - "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.139, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.091, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.2, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.26, - "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.073, - "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.368, + "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.294, + "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.083, + "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.349, + "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.083, + "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.136, + "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.106, + "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.127, + "build/src/ov_SC03_015/ov_SC03_015.o": 0.268, + "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.61, + "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.458, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.089, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.116, + "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.172, + "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.189, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.164, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.1, + "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.119, + "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.268, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.121, + "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.212, + "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.138, + "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.11, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.111, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.136, + "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.708, + "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.392, + "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.166, + "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.302, + "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.08, + "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.103, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.225, + "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.256, + "build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.083, + "build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.347, "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.077, - "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.105, - "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.106, - "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.104, - "build/src/ov_SC04_011/ov_SC04_011.o": 0.217, - "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.611, + "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.096, + "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.122, + "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.123, + "build/src/ov_SC04_011/ov_SC04_011.o": 0.174, + "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.587, "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.511, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.112, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.092, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.158, - "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.213, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.142, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.109, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.114, - "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.227, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.125, - "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.202, - "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.117, - "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.114, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.09, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.113, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.575, - "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.328, - "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.177, - "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.258, - "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.086, - "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.153, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.122, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.142, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.747, - "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.074, - "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.093 + "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.067, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.108, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.165, + "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.189, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.127, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.091, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.107, + "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.274, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.119, + "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.226, + "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.177, + "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.125, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.157, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.131, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.561, + "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.343, + "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.174, + "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.262, + "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.076, + "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.145, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.094, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.183, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.726, + "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.076, + "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.09 }, "ok": true, - "seconds": 4.0 + "seconds": 3.7 } diff --git a/.run/P36/delever/ledger.jsonl b/.run/P36/delever/ledger.jsonl index fd5709d44..ff8b16d96 100644 --- a/.run/P36/delever/ledger.jsonl +++ b/.run/P36/delever/ledger.jsonl @@ -29226,3 +29226,7 @@ {"ts": "2026-09-10 22:42:18", "label": "s104_r27", "rung": "E", "calib": {"head": "954e06093", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC05_008/ov_SC05_008_jr_8013C98C.c", "fn": "func_8013D53C", "addr": 2148783420, "aliases": null, "header": false, "includers": 0, "nhash_before": "803f7562678945c40efa3f454b84c3ea5a7cdef3", "nhash_after": "235c641f975bbe1c7e0270e512c6a10cd8ee7bc2", "source": "delever_regen R27 port ov_SC01_000_jr_8013C98C.c reloc", "verdict": "BODY-DIFFERS", "sites": [], "compiles": 1, "seconds": 0.12, "objects": ["build/src/ov_SC05_008/ov_SC05_008_jr_8013C98C.o"], "before_text": "void func_8013D53C(void *arg0v) {\n\n extern Rec9 D_801832E4[];\n extern Rec12 D_8018331C[];\n extern u8 D_80078EAF;\n extern u8 D_801A1230;\n extern s32 D_8019FE54;\n Cmd_8013D53C *arg0 = arg0v;\n\n extern u8 D_80183320[];\n extern u8 D_80183324[];\n extern unsigned char D_801A1190;\n extern s16 *D_8019FE3C;\n extern s32 D_8019FE6C;\n extern s32 D_8019FE70;\n extern s32 D_8019FE74;\n s32 s0v;\n s32 t9v;\n s32 t8v;\n u8 b0, b1, b2;\n u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */\n\n if (!(D_8019FE60 & 1)) {\n D_8019FE48 = 1;\n } else {\n D_8019FE48 = D_80078EAF;\n }\n\n b0 = ((u8 *)D_8018331C)[D_8019FE48 * 12];\n D_801A1272 = b0;\n D_801A12EA = b0;\n b1 = D_80183320[D_8019FE48 * 12];\n D_801A119A = b1;\n D_801A1254 = b1;\n b2 = D_80183324[D_8019FE48 * 12];\n D_801A1148 = b2;\n D_801A1199 = b2;\n\n (*(S9 *)&D_801A1190) = ((S9 *)D_801832E4)[D_8019FE48];\n (*(S9 *)&D_801A1230) = *(S9 *)(&D_801A1148 + 0x48); /* same addr as (*(S9 *)&D_801A1190); distinct sym defeats cse, keeps %hi/%lo */\n\n D_801A1258 = 1;\n D_8019FE5C = -1;\n D_8019FE58 = 0;\n D_8019FE54 = -1;\n D_8019FE40 = 0;\n D_8019FE4C = 0;\n D_8019FE50 = 0;\n\n if ((D_8019FE60 & 2) && (D_8019FE48 == 4)) {\n s0v = (*(s32 * *)&D_8019FE30)[18];\n t9v = (*(s32 * *)&D_8019FE30)[19];\n t8v = (*(s32 * *)&D_8019FE30)[20];\n } else {\n s32 *p = (s32 *)(D_8019FE48 * 12 + (s32) (*(s32 * *)&D_8019FE30)); /* block-local: local-alloc ties sum into mul chain */\n s0v = p[0];\n t9v = p[1];\n t8v = p[2];\n }\n\n (*(Cmd_8013D53C * *)&D_8019FE3C) = arg0;\n if (arg0 != 0) {\n if (D_8019FE68 != 0) {\n s32 *p = (s32 *)(D_8019FE48 * 12 + (s32) (*(s32 * *)&D_8019FE38));\n D_8019FE6C = p[0];\n D_8019FE70 = p[1];\n D_8019FE74 = p[2];\n } else {\n while ((arg0->cmd & 0xFFFF) != 0xFF) {\n if ((arg0->cmd & 0xFFFF) == 9) {\n s32 n;\n s32 i;\n u16 *src;\n u16 *dst;\n n = arg0->w * arg0->h;\n i = 0;\n src = arg0->data;\n __asm__(\"\" :: \"r\"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */ // !FAKE: keepalive \u2014 NEEDED DIFFERS (P36 rung B tus3)\n dst = src + n;\n if (n > 0) {\n do {\n u16 px;\n s32 r, g, b, out;\n __asm__(\"\" :: \"r\"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */ // !FAKE: keepalive \u2014 NEEDED DIFFERS (P36 rung B tus3)\n px = *src;\n r = ((px & 0x1F) * s0v) / 2560;\n g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;\n b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;\n out = r | g | b | (px & 0x8000);\n if (out == 0 && px != 0) {\n out = 0x8000;\n }\n *dst = out;\n dst++;\n i++;\n src++;\n } while (i < n);\n }\n }\n arg0++;\n }\n }\n }\n}\n", "after_text": "void func_8013D53C(void *arg0v) {\n\n extern Rec9 D_801832E4[];\n extern Rec12 D_8018331C[];\n extern u8 D_80078EAF;\n extern u8 D_801A1230;\n extern s32 D_8019FE54;\n Cmd_8013D53C *arg0 = arg0v;\n\n extern u8 D_80183320[];\n extern u8 D_80183324[];\n extern unsigned char D_801A1190;\n extern s16 *D_8019FE3C;\n extern s32 D_8019FE6C;\n extern s32 D_8019FE70;\n extern s32 D_8019FE74;\n s32 s0v;\n s32 t9v;\n s32 t8v;\n u8 b0, b1, b2;\n u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */\n\n if (!(D_8019FE60 & 1)) {\n D_8019FE48 = 1;\n } else {\n D_8019FE48 = D_80078EAF;\n }\n\n b0 = ((u8 *)D_8018331C)[D_8019FE48 * 12];\n D_801A1272 = b0;\n D_801A12EA = b0;\n b1 = D_80183320[D_8019FE48 * 12];\n D_801A119A = b1;\n D_801A1254 = b1;\n b2 = D_80183324[D_8019FE48 * 12];\n D_801A1148 = b2;\n D_801A1199 = b2;\n\n (*(S9 *)&D_801A1190) = ((S9 *)D_801832E4)[D_8019FE48];\n (*(S9 *)&D_801A1230) = *(S9 *)(&D_801A1148 + 0x18); /* same addr as (*(S9 *)&D_801A1190); distinct sym defeats cse, keeps %hi/%lo */\n\n D_801A1258 = 1;\n D_8019FE5C = -1;\n D_8019FE58 = 0;\n D_8019FE54 = -1;\n D_8019FE40 = 0;\n D_8019FE4C = 0;\n D_8019FE50 = 0;\n\n if ((D_8019FE60 & 2) && (D_8019FE48 == 4)) {\n s0v = (*(s32 * *)&D_8019FE30)[18];\n t9v = (*(s32 * *)&D_8019FE30)[19];\n t8v = (*(s32 * *)&D_8019FE30)[20];\n } else {\n s32 *p = (s32 *)(D_8019FE48 * 12 + (s32) (*(s32 * *)&D_8019FE30)); /* block-local: local-alloc ties sum into mul chain */\n s0v = p[0];\n t9v = p[1];\n t8v = p[2];\n }\n\n (*(Cmd_8013D53C * *)&D_8019FE3C) = arg0;\n if (arg0 != 0) {\n if (D_8019FE68 != 0) {\n s32 *p = (s32 *)(D_8019FE48 * 12 + (s32) (*(s32 * *)&D_8019FE38));\n D_8019FE6C = p[0];\n D_8019FE70 = p[1];\n D_8019FE74 = p[2];\n } else {\n while ((arg0->cmd & 0xFFFF) != 0xFF) {\n if ((arg0->cmd & 0xFFFF) == 9) {\n s32 n;\n s32 i;\n u16 *src;\n u16 *dst;\n n = arg0->w * arg0->h;\n i = 0;\n src = arg0->data;\n dst = src + n;\n if (n > 0) {\n do {\n u16 px;\n s32 r, g, b, out;\n px = *src;\n r = ((px & 0x1F) * s0v) / 2560;\n g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0;\n b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00;\n out = r | g | b | (px & 0x8000);\n if (out == 0 && px != 0) {\n out = 0x8000;\n }\n *dst = out;\n dst++;\n do { i++; } while (0);\n src++;\n } while (i < n);\n }\n }\n arg0++;\n }\n }\n }\n}\n"} {"ts": "2026-09-10 22:43:55", "label": "s104_r27", "rung": "E", "calib": {"head": "954e06093", "stamp": "15956e4a96c4"}, "tu": "src/shared/ov/func_80169058.h", "fn": "func_80169058", "addr": 2148962392, "aliases": null, "header": true, "includers": 130, "nhash_before": "6d80b059df14e74b7d7b90ab29d2cde9a023276e", "nhash_after": "31aa44fb808d349a18a73ab43b236c4e7b025318", "source": "delever_regen R27 port ov_MAIN_012_jr_8015A3C8.c reloc", "verdict": "LEVER-FREE", "sites": [], "compiles": 135, "seconds": 67.235, "objects": ["build/src/ov_SC01_000/ov_SC01_000_jr_8015C32C.o", "build/src/ov_SC01_001/ov_SC01_001_jr_8015C32C.o", "build/src/ov_SC01_004/ov_SC01_004_jr_8015C32C.o", "build/src/ov_SC01_005/ov_SC01_005_jr_8015C32C.o", "build/src/ov_SC01_006/ov_SC01_006_jr_8015C32C.o", "build/src/ov_SC01_008/ov_SC01_008_jr_8015C32C.o", "build/src/ov_SC01_009/ov_SC01_009_jr_8015C32C.o", "build/src/ov_SC01_074/ov_SC01_074_jr_8015C32C.o", "build/src/ov_SC01_077/ov_SC01_077_jr_8015C32C.o", "build/src/ov_SC01_080/ov_SC01_080_jr_8015C32C.o", "build/src/ov_SC01_084/ov_SC01_084_jr_8015C32C.o", "build/src/ov_SC02_000/ov_SC02_000_jr_8015C32C.o", "build/src/ov_SC02_003/ov_SC02_003_jr_8015C32C.o", "build/src/ov_SC02_004/ov_SC02_004_jr_8015C32C.o", "build/src/ov_SC02_005/ov_SC02_005_jr_8015C32C.o", "build/src/ov_SC02_011/ov_SC02_011_jr_8015C32C.o", "build/src/ov_SC02_015/ov_SC02_015_jr_8015C32C.o", "build/src/ov_SC02_016/ov_SC02_016_jr_8015C32C.o", "build/src/ov_SC02_017/ov_SC02_017_jr_8015C32C.o", "build/src/ov_SC02_021/ov_SC02_021_jr_8015C32C.o", "build/src/ov_SC02_026/ov_SC02_026_jr_8015C32C.o", "build/src/ov_SC02_027/ov_SC02_027_jr_8015C32C.o", "build/src/ov_SC02_028/ov_SC02_028_jr_8015C32C.o", "build/src/ov_SC02_031/ov_SC02_031_jr_8015C32C.o", "build/src/ov_SC02_035/ov_SC02_035_jr_8015C32C.o", "build/src/ov_SC02_039/ov_SC02_039_jr_8015C32C.o", "build/src/ov_SC02_041/ov_SC02_041_jr_8015C32C.o", "build/src/ov_SC03_001/ov_SC03_001_jr_8015C32C.o", "build/src/ov_SC03_002/ov_SC03_002_jr_8015C32C.o", "build/src/ov_SC03_003/ov_SC03_003_jr_8015C32C.o", "build/src/ov_SC03_006/ov_SC03_006_jr_8015C32C.o", "build/src/ov_SC03_007/ov_SC03_007_jr_8015C32C.o", "build/src/ov_SC03_010/ov_SC03_010_jr_8015C32C.o", "build/src/ov_SC03_011/ov_SC03_011_jr_8015C32C.o", "build/src/ov_SC03_012/ov_SC03_012_jr_8015C32C.o", "build/src/ov_SC03_013/ov_SC03_013_jr_8015C32C.o", "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o", "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o", "build/src/ov_SC03_023/ov_SC03_023_jr_8015C32C.o", "build/src/ov_SC03_024/ov_SC03_024_jr_8015C32C.o", "build/src/ov_SC03_028/ov_SC03_028_jr_8015C32C.o", "build/src/ov_SC03_029/ov_SC03_029_jr_8015C32C.o", "build/src/ov_SC03_030/ov_SC03_030_jr_8015C32C.o", "build/src/ov_SC03_031/ov_SC03_031_jr_8015C32C.o", "build/src/ov_SC03_089/ov_SC03_089_jr_8015C32C.o", "build/src/ov_SC03_090/ov_SC03_090_jr_8015C32C.o", "build/src/ov_SC03_091/ov_SC03_091_jr_8015C32C.o", "build/src/ov_SC03_092/ov_SC03_092_jr_8015C32C.o", "build/src/ov_SC03_093/ov_SC03_093_jr_8015C32C.o", "build/src/ov_SC03_094/ov_SC03_094_jr_8015C32C.o", "build/src/ov_SC03_095/ov_SC03_095_jr_8015C32C.o", "build/src/ov_SC03_096/ov_SC03_096_jr_8015C32C.o", "build/src/ov_SC03_097/ov_SC03_097_jr_8015C32C.o", "build/src/ov_SC03_098/ov_SC03_098_jr_8015C32C.o", "build/src/ov_SC03_099/ov_SC03_099_jr_8015C32C.o", "build/src/ov_SC03_100/ov_SC03_100_jr_8015C32C.o", "build/src/ov_SC03_101/ov_SC03_101_jr_8015C32C.o", "build/src/ov_SC03_102/ov_SC03_102_jr_8015C32C.o", "build/src/ov_SC03_103/ov_SC03_103_jr_8015C32C.o", "build/src/ov_SC03_104/ov_SC03_104_jr_8015C32C.o", "build/src/ov_SC03_105/ov_SC03_105_jr_8015C32C.o", "build/src/ov_SC03_108/ov_SC03_108_jr_8015C32C.o", "build/src/ov_SC03_109/ov_SC03_109_jr_8015C32C.o", "build/src/ov_SC03_110/ov_SC03_110_jr_8015C32C.o", "build/src/ov_SC03_111/ov_SC03_111_jr_8015C32C.o", "build/src/ov_SC03_112/ov_SC03_112_jr_8015C32C.o", "build/src/ov_SC03_113/ov_SC03_113_jr_8015C32C.o", "build/src/ov_SC03_114/ov_SC03_114_jr_8015C32C.o", "build/src/ov_SC03_115/ov_SC03_115_jr_8015C32C.o", "build/src/ov_SC03_116/ov_SC03_116_jr_8015C32C.o", "build/src/ov_SC03_117/ov_SC03_117_jr_8015C32C.o", "build/src/ov_SC03_118/ov_SC03_118_jr_8015C32C.o", "build/src/ov_SC03_119/ov_SC03_119_jr_8015C32C.o", "build/src/ov_SC03_121/ov_SC03_121_jr_8015C32C.o", "build/src/ov_SC03_124/ov_SC03_124_jr_8015C32C.o", "build/src/ov_SC03_125/ov_SC03_125_jr_8015C32C.o", "build/src/ov_SC03_126/ov_SC03_126_jr_8015C32C.o", "build/src/ov_SC04_000/ov_SC04_000_jr_8015C32C.o", "build/src/ov_SC04_002/ov_SC04_002_jr_8015C32C.o", "build/src/ov_SC04_003/ov_SC04_003_jr_8015C32C.o", "build/src/ov_SC04_004/ov_SC04_004_jr_8015C32C.o", "build/src/ov_SC04_005/ov_SC04_005_jr_8015C32C.o", "build/src/ov_SC04_006/ov_SC04_006_jr_8015C32C.o", "build/src/ov_SC04_007/ov_SC04_007_jr_8015C32C.o", "build/src/ov_SC04_008/ov_SC04_008_jr_8015C32C.o", "build/src/ov_SC04_009/ov_SC04_009_jr_8015C32C.o", "build/src/ov_SC04_010/ov_SC04_010_jr_8015C32C.o", "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o", "build/src/ov_SC04_012/ov_SC04_012_jr_8015C32C.o", "build/src/ov_SC04_015/ov_SC04_015_jr_8015C32C.o", "build/src/ov_SC04_016/ov_SC04_016_jr_8015C32C.o", "build/src/ov_SC04_018/ov_SC04_018_jr_8015C32C.o", "build/src/ov_SC04_019/ov_SC04_019_jr_8015C32C.o", "build/src/ov_SC04_020/ov_SC04_020_jr_8015C32C.o", "build/src/ov_SC04_021/ov_SC04_021_jr_8015C32C.o", "build/src/ov_SC05_000/ov_SC05_000_jr_8015C32C.o", "build/src/ov_SC05_001/ov_SC05_001_jr_8015C32C.o", "build/src/ov_SC05_002/ov_SC05_002_jr_8015C32C.o", "build/src/ov_SC05_003/ov_SC05_003_jr_8015C32C.o", "build/src/ov_SC05_004/ov_SC05_004_jr_8015C32C.o", "build/src/ov_SC05_005/ov_SC05_005_jr_8015C32C.o", "build/src/ov_SC05_006/ov_SC05_006_jr_8015C32C.o", "build/src/ov_SC05_007/ov_SC05_007_jr_8015C32C.o", "build/src/ov_SC05_008/ov_SC05_008_jr_8015C32C.o", "build/src/ov_SC05_009/ov_SC05_009_jr_8015C32C.o", "build/src/ov_SC05_010/ov_SC05_010_jr_8015C32C.o", "build/src/ov_SC05_011/ov_SC05_011_jr_8015C32C.o", "build/src/ov_SC05_017/ov_SC05_017_jr_8015C32C.o", "build/src/ov_SC05_018/ov_SC05_018_jr_8015C32C.o", "build/src/ov_SC05_019/ov_SC05_019_jr_8015C32C.o", "build/src/ov_SC06_000/ov_SC06_000_jr_8015C32C.o", "build/src/ov_SC06_006/ov_SC06_006_jr_8015C32C.o", "build/src/ov_SC06_008/ov_SC06_008_jr_8015C32C.o", "build/src/ov_SC06_010/ov_SC06_010_jr_8015C32C.o", "build/src/ov_SC06_011/ov_SC06_011_jr_8015C32C.o", "build/src/ov_SC06_013/ov_SC06_013_jr_8015C32C.o", "build/src/ov_SC06_014/ov_SC06_014_jr_8015C32C.o", "build/src/ov_SC06_015/ov_SC06_015_jr_8015C32C.o", "build/src/ov_SC06_016/ov_SC06_016_jr_8015C32C.o", "build/src/ov_SC06_018/ov_SC06_018_jr_8015C32C.o", "build/src/ov_SC06_020/ov_SC06_020_jr_8015C32C.o", "build/src/ov_SC06_022/ov_SC06_022_jr_8015C32C.o", "build/src/ov_SC06_024/ov_SC06_024_jr_8015C32C.o", "build/src/ov_SC06_025/ov_SC06_025_jr_8015C32C.o", "build/src/ov_SC06_027/ov_SC06_027_jr_8015C32C.o", "build/src/ov_SC06_029/ov_SC06_029_jr_8015C32C.o", "build/src/ov_SC06_030/ov_SC06_030_jr_8015C32C.o", "build/src/ov_SC06_032/ov_SC06_032_jr_8015C32C.o", "build/src/ov_SC06_033/ov_SC06_033_jr_8015C32C.o", "build/src/ov_SC07_000/ov_SC07_000_jr_8015C32C.o", "build/src/ov_SC07_001/ov_SC07_001_jr_8015C32C.o", "build/src/ov_SC07_002/ov_SC07_002_jr_8015C32C.o", "build/src/ov_SC07_008/ov_SC07_008_jr_8015C32C.o", "build/src/ov_SC07_009/ov_SC07_009_jr_8015C32C.o", "build/src/ov_SC07_010/ov_SC07_010_jr_8015C32C.o"], "before_text": "void func_80169058(s32 a0) {\n s32 s1 = a0;\n s16 v10[4]; /* sp+0x10 SVECTOR */\n s16 v18[4]; /* sp+0x18 SVECTOR */\n s16 v20[16]; /* sp+0x20 MATRIX_L48 */\n s16 v40[16]; /* sp+0x40 MATRIX_L48 */\n s32 v1;\n register s32 v0 __asm__(\"$2\"); // !FAKE: pin $2 \u2014 NEEDED DIFFERS (P36 rung B headers1)\n v10[0] = *(u16 *)(s1 + 0x6);\n v10[1] = *(u16 *)(s1 + 0xA);\n v10[2] = *(u16 *)(s1 + 0xE);\n func_800D20C0(v10, v18, 1);\n func_800D23D0(v18);\n RotMatrixYXZ(v18, (void *)(s1 + 0x38));\n v10[0] = *(u16 *)(s1 + 0x12);\n v10[1] = *(u16 *)(s1 + 0x16);\n v10[2] = *(u16 *)(s1 + 0x1A);\n RotMatrixYXZ(v10, v40);\n if ((*(s32 *)(s1 + 0x2C) & 0x2) == 0) {\n v0 = rand();\n v1 = (v0 & 0x7F) << 3;\n v0 = ((u32)(v0 & 0x7F00)) >> 5;\n __asm__ __volatile__(\"\" : \"=r\"(v0) : \"0\"(v0)); // !FAKE: launder \u2014 NEEDED DIFFERS (P36 rung B headers1)\n v0 = v0 + 0xC00;\n } else {\n v0 = rand();\n v1 = ((v0 & 0x7F) << 3) + 0xE40;\n v0 = (((u32)(v0 & 0x7F00)) >> 5) + 0xE00;\n }\n v10[0] = v1;\n v10[1] = v0;\n __asm__ __volatile__(\"\" : : \"r\"(v1), \"r\"(v0)); // !FAKE: keepalive \u2014 NEEDED DIFFERS (P36 rung B headers1)\n v10[2] = 0;\n RotMatrixYXZ(v10, v20);\n func_80048EAC(v40, v20);\n v10[0] = 0;\n v10[1] = 0;\n v10[2] = 0xA;\n ApplyMatrixSV(v20, v10, v10);\n *(u16 *)(s1 + 0x12) = v10[0];\n *(u16 *)(s1 + 0x16) = v10[1];\n {\n s32 c = *(u16 *)(s1 + 0x2);\n s32 z = (u16)v10[2];\n *(s32 *)(s1 + 0x1C) = 0;\n *(u16 *)(s1 + 0x2) = c + 1;\n *(u16 *)(s1 + 0x1A) = z;\n }\n}\n", "after_text": "void func_80169058(s32 a0) {\n s32 s1 = a0;\n s16 v10[4]; /* sp+0x10 SVECTOR */\n s16 v18[4]; /* sp+0x18 SVECTOR */\n s16 v20[16]; /* sp+0x20 MATRIX_L48 */\n s16 v40[16]; /* sp+0x40 MATRIX_L48 */\n v10[0] = *(u16 *)(s1 + 0x6);\n v10[1] = *(u16 *)(s1 + 0xA);\n v10[2] = *(u16 *)(s1 + 0xE);\n func_800D20C0(v10, v18, 1);\n func_800D23D0(v18);\n RotMatrixYXZ(v18, (void *)(s1 + 0x38));\n v10[0] = *(u16 *)(s1 + 0x12);\n v10[1] = *(u16 *)(s1 + 0x16);\n v10[2] = *(u16 *)(s1 + 0x1A);\n RotMatrixYXZ(v10, v40);\n if ((*(s32 *)(s1 + 0x2C) & 0x2) == 0) {\n s32 r = rand();\n v10[0] = (r & 0x7F) << 3;\n v10[1] = (((u32)(r & 0x7F00)) >> 5) + 0xC00;\n } else {\n s32 r = rand();\n v10[0] = ((r & 0x7F) << 3) + 0xE40;\n v10[1] = (((u32)(r & 0x7F00)) >> 5) + 0xE00;\n }\n v10[2] = 0;\n RotMatrixYXZ(v10, v20);\n func_80048EAC(v40, v20);\n v10[0] = 0;\n v10[1] = 0;\n v10[2] = 0xA;\n ((void (*)(void *, void *, void *))ApplyMatrixSV)(v20, v10, v10);\n *(u16 *)(s1 + 0x12) = v10[0];\n *(u16 *)(s1 + 0x16) = v10[1];\n {\n s32 c = *(u16 *)(s1 + 0x2);\n s32 z = (u16)v10[2];\n *(s32 *)(s1 + 0x1C) = 0;\n *(u16 *)(s1 + 0x2) = c + 1;\n *(u16 *)(s1 + 0x1A) = z;\n }\n}\n"} {"ts": "2026-09-10 22:45:34", "label": "s104_r27", "rung": "E", "calib": {"head": "954e06093", "stamp": "15956e4a96c4"}, "tu": "src/shared/ov/func_80168D94.h", "fn": "func_80168D94", "addr": 2148961684, "aliases": null, "header": true, "includers": 130, "nhash_before": "2f05f3455f32858ba91272fa69c21c61c2188ae5", "nhash_after": "c1e8da1469619484f96d6073fa85383b6721702d", "source": "delever_regen R27 port ov_MAIN_012_jr_8015A3C8.c reloc", "verdict": "LEVER-FREE", "sites": [], "compiles": 135, "seconds": 67.143, "objects": ["build/src/ov_SC01_000/ov_SC01_000_jr_8015C32C.o", "build/src/ov_SC01_001/ov_SC01_001_jr_8015C32C.o", "build/src/ov_SC01_004/ov_SC01_004_jr_8015C32C.o", "build/src/ov_SC01_005/ov_SC01_005_jr_8015C32C.o", "build/src/ov_SC01_006/ov_SC01_006_jr_8015C32C.o", "build/src/ov_SC01_008/ov_SC01_008_jr_8015C32C.o", "build/src/ov_SC01_009/ov_SC01_009_jr_8015C32C.o", "build/src/ov_SC01_074/ov_SC01_074_jr_8015C32C.o", "build/src/ov_SC01_077/ov_SC01_077_jr_8015C32C.o", "build/src/ov_SC01_080/ov_SC01_080_jr_8015C32C.o", "build/src/ov_SC01_084/ov_SC01_084_jr_8015C32C.o", "build/src/ov_SC02_000/ov_SC02_000_jr_8015C32C.o", "build/src/ov_SC02_003/ov_SC02_003_jr_8015C32C.o", "build/src/ov_SC02_004/ov_SC02_004_jr_8015C32C.o", "build/src/ov_SC02_005/ov_SC02_005_jr_8015C32C.o", "build/src/ov_SC02_011/ov_SC02_011_jr_8015C32C.o", "build/src/ov_SC02_015/ov_SC02_015_jr_8015C32C.o", "build/src/ov_SC02_016/ov_SC02_016_jr_8015C32C.o", "build/src/ov_SC02_017/ov_SC02_017_jr_8015C32C.o", "build/src/ov_SC02_021/ov_SC02_021_jr_8015C32C.o", "build/src/ov_SC02_026/ov_SC02_026_jr_8015C32C.o", "build/src/ov_SC02_027/ov_SC02_027_jr_8015C32C.o", "build/src/ov_SC02_028/ov_SC02_028_jr_8015C32C.o", "build/src/ov_SC02_031/ov_SC02_031_jr_8015C32C.o", "build/src/ov_SC02_035/ov_SC02_035_jr_8015C32C.o", "build/src/ov_SC02_039/ov_SC02_039_jr_8015C32C.o", "build/src/ov_SC02_041/ov_SC02_041_jr_8015C32C.o", "build/src/ov_SC03_001/ov_SC03_001_jr_8015C32C.o", "build/src/ov_SC03_002/ov_SC03_002_jr_8015C32C.o", "build/src/ov_SC03_003/ov_SC03_003_jr_8015C32C.o", "build/src/ov_SC03_006/ov_SC03_006_jr_8015C32C.o", "build/src/ov_SC03_007/ov_SC03_007_jr_8015C32C.o", "build/src/ov_SC03_010/ov_SC03_010_jr_8015C32C.o", "build/src/ov_SC03_011/ov_SC03_011_jr_8015C32C.o", "build/src/ov_SC03_012/ov_SC03_012_jr_8015C32C.o", "build/src/ov_SC03_013/ov_SC03_013_jr_8015C32C.o", "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o", "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o", "build/src/ov_SC03_023/ov_SC03_023_jr_8015C32C.o", "build/src/ov_SC03_024/ov_SC03_024_jr_8015C32C.o", "build/src/ov_SC03_028/ov_SC03_028_jr_8015C32C.o", "build/src/ov_SC03_029/ov_SC03_029_jr_8015C32C.o", "build/src/ov_SC03_030/ov_SC03_030_jr_8015C32C.o", "build/src/ov_SC03_031/ov_SC03_031_jr_8015C32C.o", "build/src/ov_SC03_089/ov_SC03_089_jr_8015C32C.o", "build/src/ov_SC03_090/ov_SC03_090_jr_8015C32C.o", "build/src/ov_SC03_091/ov_SC03_091_jr_8015C32C.o", "build/src/ov_SC03_092/ov_SC03_092_jr_8015C32C.o", "build/src/ov_SC03_093/ov_SC03_093_jr_8015C32C.o", "build/src/ov_SC03_094/ov_SC03_094_jr_8015C32C.o", "build/src/ov_SC03_095/ov_SC03_095_jr_8015C32C.o", "build/src/ov_SC03_096/ov_SC03_096_jr_8015C32C.o", "build/src/ov_SC03_097/ov_SC03_097_jr_8015C32C.o", "build/src/ov_SC03_098/ov_SC03_098_jr_8015C32C.o", "build/src/ov_SC03_099/ov_SC03_099_jr_8015C32C.o", "build/src/ov_SC03_100/ov_SC03_100_jr_8015C32C.o", "build/src/ov_SC03_101/ov_SC03_101_jr_8015C32C.o", "build/src/ov_SC03_102/ov_SC03_102_jr_8015C32C.o", "build/src/ov_SC03_103/ov_SC03_103_jr_8015C32C.o", "build/src/ov_SC03_104/ov_SC03_104_jr_8015C32C.o", "build/src/ov_SC03_105/ov_SC03_105_jr_8015C32C.o", "build/src/ov_SC03_108/ov_SC03_108_jr_8015C32C.o", "build/src/ov_SC03_109/ov_SC03_109_jr_8015C32C.o", "build/src/ov_SC03_110/ov_SC03_110_jr_8015C32C.o", "build/src/ov_SC03_111/ov_SC03_111_jr_8015C32C.o", "build/src/ov_SC03_112/ov_SC03_112_jr_8015C32C.o", "build/src/ov_SC03_113/ov_SC03_113_jr_8015C32C.o", "build/src/ov_SC03_114/ov_SC03_114_jr_8015C32C.o", "build/src/ov_SC03_115/ov_SC03_115_jr_8015C32C.o", "build/src/ov_SC03_116/ov_SC03_116_jr_8015C32C.o", "build/src/ov_SC03_117/ov_SC03_117_jr_8015C32C.o", "build/src/ov_SC03_118/ov_SC03_118_jr_8015C32C.o", "build/src/ov_SC03_119/ov_SC03_119_jr_8015C32C.o", "build/src/ov_SC03_121/ov_SC03_121_jr_8015C32C.o", "build/src/ov_SC03_124/ov_SC03_124_jr_8015C32C.o", "build/src/ov_SC03_125/ov_SC03_125_jr_8015C32C.o", "build/src/ov_SC03_126/ov_SC03_126_jr_8015C32C.o", "build/src/ov_SC04_000/ov_SC04_000_jr_8015C32C.o", "build/src/ov_SC04_002/ov_SC04_002_jr_8015C32C.o", "build/src/ov_SC04_003/ov_SC04_003_jr_8015C32C.o", "build/src/ov_SC04_004/ov_SC04_004_jr_8015C32C.o", "build/src/ov_SC04_005/ov_SC04_005_jr_8015C32C.o", "build/src/ov_SC04_006/ov_SC04_006_jr_8015C32C.o", "build/src/ov_SC04_007/ov_SC04_007_jr_8015C32C.o", "build/src/ov_SC04_008/ov_SC04_008_jr_8015C32C.o", "build/src/ov_SC04_009/ov_SC04_009_jr_8015C32C.o", "build/src/ov_SC04_010/ov_SC04_010_jr_8015C32C.o", "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o", "build/src/ov_SC04_012/ov_SC04_012_jr_8015C32C.o", "build/src/ov_SC04_015/ov_SC04_015_jr_8015C32C.o", "build/src/ov_SC04_016/ov_SC04_016_jr_8015C32C.o", "build/src/ov_SC04_018/ov_SC04_018_jr_8015C32C.o", "build/src/ov_SC04_019/ov_SC04_019_jr_8015C32C.o", "build/src/ov_SC04_020/ov_SC04_020_jr_8015C32C.o", "build/src/ov_SC04_021/ov_SC04_021_jr_8015C32C.o", "build/src/ov_SC05_000/ov_SC05_000_jr_8015C32C.o", "build/src/ov_SC05_001/ov_SC05_001_jr_8015C32C.o", "build/src/ov_SC05_002/ov_SC05_002_jr_8015C32C.o", "build/src/ov_SC05_003/ov_SC05_003_jr_8015C32C.o", "build/src/ov_SC05_004/ov_SC05_004_jr_8015C32C.o", "build/src/ov_SC05_005/ov_SC05_005_jr_8015C32C.o", "build/src/ov_SC05_006/ov_SC05_006_jr_8015C32C.o", "build/src/ov_SC05_007/ov_SC05_007_jr_8015C32C.o", "build/src/ov_SC05_008/ov_SC05_008_jr_8015C32C.o", "build/src/ov_SC05_009/ov_SC05_009_jr_8015C32C.o", "build/src/ov_SC05_010/ov_SC05_010_jr_8015C32C.o", "build/src/ov_SC05_011/ov_SC05_011_jr_8015C32C.o", "build/src/ov_SC05_017/ov_SC05_017_jr_8015C32C.o", "build/src/ov_SC05_018/ov_SC05_018_jr_8015C32C.o", "build/src/ov_SC05_019/ov_SC05_019_jr_8015C32C.o", "build/src/ov_SC06_000/ov_SC06_000_jr_8015C32C.o", "build/src/ov_SC06_006/ov_SC06_006_jr_8015C32C.o", "build/src/ov_SC06_008/ov_SC06_008_jr_8015C32C.o", "build/src/ov_SC06_010/ov_SC06_010_jr_8015C32C.o", "build/src/ov_SC06_011/ov_SC06_011_jr_8015C32C.o", "build/src/ov_SC06_013/ov_SC06_013_jr_8015C32C.o", "build/src/ov_SC06_014/ov_SC06_014_jr_8015C32C.o", "build/src/ov_SC06_015/ov_SC06_015_jr_8015C32C.o", "build/src/ov_SC06_016/ov_SC06_016_jr_8015C32C.o", "build/src/ov_SC06_018/ov_SC06_018_jr_8015C32C.o", "build/src/ov_SC06_020/ov_SC06_020_jr_8015C32C.o", "build/src/ov_SC06_022/ov_SC06_022_jr_8015C32C.o", "build/src/ov_SC06_024/ov_SC06_024_jr_8015C32C.o", "build/src/ov_SC06_025/ov_SC06_025_jr_8015C32C.o", "build/src/ov_SC06_027/ov_SC06_027_jr_8015C32C.o", "build/src/ov_SC06_029/ov_SC06_029_jr_8015C32C.o", "build/src/ov_SC06_030/ov_SC06_030_jr_8015C32C.o", "build/src/ov_SC06_032/ov_SC06_032_jr_8015C32C.o", "build/src/ov_SC06_033/ov_SC06_033_jr_8015C32C.o", "build/src/ov_SC07_000/ov_SC07_000_jr_8015C32C.o", "build/src/ov_SC07_001/ov_SC07_001_jr_8015C32C.o", "build/src/ov_SC07_002/ov_SC07_002_jr_8015C32C.o", "build/src/ov_SC07_008/ov_SC07_008_jr_8015C32C.o", "build/src/ov_SC07_009/ov_SC07_009_jr_8015C32C.o", "build/src/ov_SC07_010/ov_SC07_010_jr_8015C32C.o"], "before_text": "void func_80168D94(int a0) {\n int s1 = a0;\n short v10[4]; /* sp+0x10 SVECTOR */\n short v18[16]; /* sp+0x18 MATRIX_L48 */\n short v38[16]; /* sp+0x38 MATRIX_L48 */\n int v1;\n register int v0 __asm__(\"$2\"); // !FAKE: pin $2 \u2014 NEEDED DIFFERS (P36 rung B headers1)\n v10[0] = *(unsigned short *)(s1 + 0x12);\n v10[1] = *(unsigned short *)(s1 + 0x16);\n v10[2] = *(unsigned short *)(s1 + 0x1A);\n RotMatrixYXZ(v10, v38);\n if (*(int *)(s1 + 0x2C) == 0) {\n v0 = rand();\n v1 = (v0 & 0x7F) << 3;\n v0 = (int)((unsigned int)(v0 & 0x7F00) >> 5);\n __asm__(\"\" : \"=r\"(v0) : \"0\"(v0)); // !FAKE: launder \u2014 NEEDED DIFFERS (P36 rung B headers1)\n v0 += 0xC00;\n } else {\n v0 = rand();\n v1 = ((v0 & 0x7F) << 3) + 0xE00;\n v0 = (int)((unsigned int)(v0 & 0x7F00) >> 5) + 0xE00;\n }\n v10[0] = v1;\n v10[1] = v0;\n __asm__ __volatile__(\"\" ::: \"memory\"); // !FAKE: barrier memory \u2014 NEEDED DIFFERS (P36 rung B headers1)\n v10[2] = 0;\n RotMatrixYXZ(v10, v18);\n func_80048EAC(v38, v18);\n v10[0] = 0;\n v10[1] = 0;\n v10[2] = 0x24;\n ApplyMatrixSV(v18, v10, v10);\n {\n register s32 a __asm__(\"$4\") = *(unsigned short *)(s1 + 0x6); // !FAKE: pin $4 \u2014 NEEDED DIFFERS (P36 rung B headers1)\n s32 b = *(unsigned short *)(s1 + 0xA);\n register s32 c __asm__(\"$3\") = *(unsigned short *)(s1 + 0xE); // !FAKE: pin $3 \u2014 NEEDED DIFFERS (P36 rung B headers1)\n *(unsigned short *)(s1 + 0x12) = v10[0];\n *(unsigned short *)(s1 + 0x16) = v10[1];\n {\n s32 z = (unsigned short)v10[2];\n s32 t = *(unsigned short *)(s1 + 0x2);\n *(unsigned short *)(s1 + 0x10) = a;\n *(unsigned short *)(s1 + 0x14) = b;\n *(unsigned short *)(s1 + 0x18) = c;\n *(int *)(s1 + 0x1C) = 0;\n *(unsigned short *)(s1 + 0x2) = t + 1;\n *(unsigned short *)(s1 + 0x1A) = z;\n }\n }\n}\n", "after_text": "void func_80168D94(int a0) {\n int s1 = a0;\n short v10[4]; /* sp+0x10 SVECTOR */\n short v18[16]; /* sp+0x18 MATRIX_L48 */\n short v38[16]; /* sp+0x38 MATRIX_L48 */\n v10[0] = *(unsigned short *)(s1 + 0x12);\n v10[1] = *(unsigned short *)(s1 + 0x16);\n v10[2] = *(unsigned short *)(s1 + 0x1A);\n RotMatrixYXZ(v10, v38);\n if (*(int *)(s1 + 0x2C) == 0) {\n int r = rand();\n v10[0] = (r & 0x7F) << 3;\n v10[1] = (int)((unsigned int)(r & 0x7F00) >> 5) + 0xC00;\n } else {\n int r = rand();\n v10[0] = ((r & 0x7F) << 3) + 0xE00;\n v10[1] = (int)((unsigned int)(r & 0x7F00) >> 5) + 0xE00;\n }\n v10[2] = 0;\n RotMatrixYXZ(v10, v18);\n func_80048EAC(v38, v18);\n v10[0] = 0;\n v10[1] = 0;\n v10[2] = 0x24;\n ((void (*)(void *, void *, void *))ApplyMatrixSV)(v18, v10, v10);\n {\n s32 a = *(unsigned short *)(s1 + 0x6);\n s32 b = *(unsigned short *)(s1 + 0xA);\n *(unsigned short *)(s1 + 0x12) = v10[0];\n *(unsigned short *)(s1 + 0x16) = v10[1];\n {\n s32 z = (unsigned short)v10[2];\n s32 t = *(unsigned short *)(s1 + 0x2);\n *(unsigned short *)(s1 + 0x10) = a;\n *(unsigned short *)(s1 + 0x14) = b;\n *(unsigned short *)(s1 + 0x18) = *(unsigned short *)(s1 + 0xE);\n *(int *)(s1 + 0x1C) = 0;\n *(unsigned short *)(s1 + 0x2) = t + 1;\n *(unsigned short *)(s1 + 0x1A) = z;\n }\n }\n}\n"} +{"ts": "2026-09-10 22:55:03", "label": "s104_d22", "rung": "E", "calib": {"head": "eadfa5977", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC03_091/ov_SC03_091_jr_8018326C.c", "fn": "func_801861FC", "addr": 2149081596, "aliases": null, "header": false, "includers": 0, "nhash_before": "bd8eed80e5f9e7b97af46c88db18bb78087841d3", "nhash_after": "1c686ae06032aece6dc3c3ac82135933793e7540", "source": ".run/P36/agents/ov_SC03_091__func_801861FC/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.282, "objects": ["build/src/ov_SC03_091/ov_SC03_091_jr_8018326C.o"], "before_text": "void func_801861FC(s32 a0) {\n s32 ent = a0;\n s32 state = *(u16 *)(ent + 0x34);\n s32 sub;\n register s32 t __asm__(\"$2\"); // !FAKE: pin $2 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n s32 cnt;\n\n switch (state) {\n case 0:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7;\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) + 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt < 0x10) {\n break;\n }\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = 0x7000;\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = 0x2000;\n *(s32 *)(ent + 0x1C) = 0x40;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n break;\n case 1:\n if (func_8012BEE8(ent) != 0) {\n *(s32 *)(ent + 0x1C) = 0x10;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n }\n break;\n case 2:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) - 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt == 0) {\n func_8012C218((void *)ent);\n return;\n }\n break;\n }\n\n func_8018632C(ent);\n}\n", "after_text": "void func_801861FC(s32 ent) {\n s32 t;\n s32 cnt;\n\n switch (*(u16 *)(ent + 0x34)) {\n case 0:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7;\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) + 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt < 0x10) {\n break;\n }\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x7000;\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x2000;\n *(s32 *)(ent + 0x1C) = 0x40;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n break;\n case 1:\n if (func_8012BEE8(ent) != 0) {\n *(s32 *)(ent + 0x1C) = 0x10;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n }\n break;\n case 2:\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = func_8004787C(*(s32 *)(ent + 0x1C) << 6) << 1;\n cnt = *(s32 *)(ent + 0x1C) - 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt == 0) {\n func_8012C218((void *)ent);\n return;\n }\n break;\n }\n\n func_8018632C(ent);\n}\n"} +{"ts": "2026-09-10 22:55:24", "label": "s104_d22", "rung": "E", "calib": {"head": "eadfa5977", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c", "fn": "func_80185354", "addr": 2149077844, "aliases": null, "header": false, "includers": 0, "nhash_before": "bd8eed80e5f9e7b97af46c88db18bb78087841d3", "nhash_after": "1c686ae06032aece6dc3c3ac82135933793e7540", "source": "propagate:src/ov_SC03_091/ov_SC03_091_jr_8018326C.c:func_801861FC", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.339, "objects": ["build/src/ov_SC03_090/ov_SC03_090_jr_8017CA80.o"], "before_text": "void func_80185354(s32 a0) {\n s32 ent = a0;\n s32 state = *(u16 *)(ent + 0x34);\n s32 sub;\n register s32 t __asm__(\"$2\"); // !FAKE: pin $2 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n s32 cnt;\n\n switch (state) {\n case 0:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7;\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) + 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt < 0x10) {\n break;\n }\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = 0x7000;\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = 0x2000;\n *(s32 *)(ent + 0x1C) = 0x40;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n break;\n case 1:\n if (func_8012BEE8(ent) != 0) {\n *(s32 *)(ent + 0x1C) = 0x10;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n }\n break;\n case 2:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) - 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt == 0) {\n func_8012C218((void *)ent);\n return;\n }\n break;\n }\n\n func_80185484(ent);\n}\n", "after_text": "void func_80185354(s32 ent) {\n s32 t;\n s32 cnt;\n\n switch (*(u16 *)(ent + 0x34)) {\n case 0:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7;\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) + 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt < 0x10) {\n break;\n }\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x7000;\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x2000;\n *(s32 *)(ent + 0x1C) = 0x40;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n break;\n case 1:\n if (func_8012BEE8(ent) != 0) {\n *(s32 *)(ent + 0x1C) = 0x10;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n }\n break;\n case 2:\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = func_8004787C(*(s32 *)(ent + 0x1C) << 6) << 1;\n cnt = *(s32 *)(ent + 0x1C) - 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt == 0) {\n func_8012C218((void *)ent);\n return;\n }\n break;\n }\n\n func_80185484(ent);\n}\n"} +{"ts": "2026-09-10 22:55:33", "label": "s104_d22", "rung": "E", "calib": {"head": "eadfa5977", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC03_104/ov_SC03_104_jr_80182038.c", "fn": "func_801831E8", "addr": 2149069288, "aliases": null, "header": false, "includers": 0, "nhash_before": "bd8eed80e5f9e7b97af46c88db18bb78087841d3", "nhash_after": "1c686ae06032aece6dc3c3ac82135933793e7540", "source": "propagate:src/ov_SC03_091/ov_SC03_091_jr_8018326C.c:func_801861FC", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.175, "objects": ["build/src/ov_SC03_104/ov_SC03_104_jr_80182038.o"], "before_text": "void func_801831E8(s32 a0) {\n s32 ent = a0;\n s32 state = *(u16 *)(ent + 0x34);\n s32 sub;\n register s32 t __asm__(\"$2\"); // !FAKE: pin $2 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n s32 cnt;\n\n switch (state) {\n case 0:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7;\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) + 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt < 0x10) {\n break;\n }\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = 0x7000;\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = 0x2000;\n *(s32 *)(ent + 0x1C) = 0x40;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n break;\n case 1:\n if (func_8012BEE8(ent) != 0) {\n *(s32 *)(ent + 0x1C) = 0x10;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n }\n break;\n case 2:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) - 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt == 0) {\n func_8012C218((void *)ent);\n return;\n }\n break;\n }\n\n func_80183318(ent);\n}\n", "after_text": "void func_801831E8(s32 ent) {\n s32 t;\n s32 cnt;\n\n switch (*(u16 *)(ent + 0x34)) {\n case 0:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7;\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) + 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt < 0x10) {\n break;\n }\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x7000;\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x2000;\n *(s32 *)(ent + 0x1C) = 0x40;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n break;\n case 1:\n if (func_8012BEE8(ent) != 0) {\n *(s32 *)(ent + 0x1C) = 0x10;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n }\n break;\n case 2:\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = func_8004787C(*(s32 *)(ent + 0x1C) << 6) << 1;\n cnt = *(s32 *)(ent + 0x1C) - 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt == 0) {\n func_8012C218((void *)ent);\n return;\n }\n break;\n }\n\n func_80183318(ent);\n}\n"} +{"ts": "2026-09-10 22:55:38", "label": "s104_d22", "rung": "E", "calib": {"head": "eadfa5977", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c", "fn": "func_80185678", "addr": 2149078648, "aliases": null, "header": false, "includers": 0, "nhash_before": "bd8eed80e5f9e7b97af46c88db18bb78087841d3", "nhash_after": "1c686ae06032aece6dc3c3ac82135933793e7540", "source": "propagate:src/ov_SC03_091/ov_SC03_091_jr_8018326C.c:func_801861FC", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.473, "objects": ["build/src/ov_SC03_089/ov_SC03_089_jr_8017CA80.o"], "before_text": "void func_80185678(s32 a0) {\n s32 ent = a0;\n s32 state = *(u16 *)(ent + 0x34);\n s32 sub;\n register s32 t __asm__(\"$2\"); // !FAKE: pin $2 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n s32 cnt;\n\n switch (state) {\n case 0:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7;\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) + 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt < 0x10) {\n break;\n }\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = 0x7000;\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = 0x2000;\n *(s32 *)(ent + 0x1C) = 0x40;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n break;\n case 1:\n if (func_8012BEE8(ent) != 0) {\n *(s32 *)(ent + 0x1C) = 0x10;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n }\n break;\n case 2:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n sub = *(s32 *)(ent + 0x20);\n *(s16 *)(sub + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) - 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt == 0) {\n func_8012C218((void *)ent);\n return;\n }\n break;\n }\n\n func_801857A8(ent);\n}\n", "after_text": "void func_80185678(s32 ent) {\n s32 t;\n s32 cnt;\n\n switch (*(u16 *)(ent + 0x34)) {\n case 0:\n t = func_8004787C(*(s32 *)(ent + 0x1C) << 6);\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7;\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = t << 1;\n cnt = *(s32 *)(ent + 0x1C) + 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt < 0x10) {\n break;\n }\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x7000;\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x2000;\n *(s32 *)(ent + 0x1C) = 0x40;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n break;\n case 1:\n if (func_8012BEE8(ent) != 0) {\n *(s32 *)(ent + 0x1C) = 0x10;\n *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1;\n }\n break;\n case 2:\n *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = func_8004787C(*(s32 *)(ent + 0x1C) << 6) << 1;\n cnt = *(s32 *)(ent + 0x1C) - 1;\n *(s32 *)(ent + 0x1C) = cnt;\n if (cnt == 0) {\n func_8012C218((void *)ent);\n return;\n }\n break;\n }\n\n func_801857A8(ent);\n}\n"} diff --git a/src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c b/src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c index 23ae4192f..84e21c8e8 100644 --- a/src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c +++ b/src/ov_SC03_089/ov_SC03_089_jr_8017CA80.c @@ -6411,28 +6411,22 @@ extern s32 func_8004787C(s32 a0); extern void func_8012C218(void *a0); extern void func_801857A8(s32 a0); -void func_80185678(s32 a0) { - s32 ent = a0; - s32 state = *(u16 *)(ent + 0x34); - s32 sub; - register s32 t __asm__("$2"); // !FAKE: pin $2 — NEEDED DIFFERS (P36 rung B tus9) +void func_80185678(s32 ent) { + s32 t; s32 cnt; - switch (state) { + switch (*(u16 *)(ent + 0x34)) { case 0: t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = t << 1; cnt = *(s32 *)(ent + 0x1C) + 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt < 0x10) { break; } - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x7000; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x2000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x7000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x2000; *(s32 *)(ent + 0x1C) = 0x40; *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1; break; @@ -6443,9 +6437,7 @@ void func_80185678(s32 a0) { } break; case 2: - t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = func_8004787C(*(s32 *)(ent + 0x1C) << 6) << 1; cnt = *(s32 *)(ent + 0x1C) - 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt == 0) { diff --git a/src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c b/src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c index d2ba07c45..2a026b222 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_8017CA80.c @@ -6380,28 +6380,22 @@ extern s32 func_8012BEE8(s32 a0); extern void func_8012C218(void *a0); extern void func_80185484(s32 a0); -void func_80185354(s32 a0) { - s32 ent = a0; - s32 state = *(u16 *)(ent + 0x34); - s32 sub; - register s32 t __asm__("$2"); // !FAKE: pin $2 — NEEDED DIFFERS (P36 rung B tus9) +void func_80185354(s32 ent) { + s32 t; s32 cnt; - switch (state) { + switch (*(u16 *)(ent + 0x34)) { case 0: t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = t << 1; cnt = *(s32 *)(ent + 0x1C) + 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt < 0x10) { break; } - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x7000; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x2000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x7000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x2000; *(s32 *)(ent + 0x1C) = 0x40; *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1; break; @@ -6412,9 +6406,7 @@ void func_80185354(s32 a0) { } break; case 2: - t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = func_8004787C(*(s32 *)(ent + 0x1C) << 6) << 1; cnt = *(s32 *)(ent + 0x1C) - 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt == 0) { diff --git a/src/ov_SC03_091/ov_SC03_091_jr_8018326C.c b/src/ov_SC03_091/ov_SC03_091_jr_8018326C.c index b4dc89546..c7ff2505d 100644 --- a/src/ov_SC03_091/ov_SC03_091_jr_8018326C.c +++ b/src/ov_SC03_091/ov_SC03_091_jr_8018326C.c @@ -4711,28 +4711,22 @@ extern s32 func_8004787C(s32 a0); extern void func_8012C218(void *a0); extern void func_8018632C(s32 a0); -void func_801861FC(s32 a0) { - s32 ent = a0; - s32 state = *(u16 *)(ent + 0x34); - s32 sub; - register s32 t __asm__("$2"); // !FAKE: pin $2 — NEEDED DIFFERS (P36 rung B tus9) +void func_801861FC(s32 ent) { + s32 t; s32 cnt; - switch (state) { + switch (*(u16 *)(ent + 0x34)) { case 0: t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = t << 1; cnt = *(s32 *)(ent + 0x1C) + 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt < 0x10) { break; } - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x7000; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x2000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x7000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x2000; *(s32 *)(ent + 0x1C) = 0x40; *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1; break; @@ -4743,9 +4737,7 @@ void func_801861FC(s32 a0) { } break; case 2: - t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = func_8004787C(*(s32 *)(ent + 0x1C) << 6) << 1; cnt = *(s32 *)(ent + 0x1C) - 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt == 0) { diff --git a/src/ov_SC03_104/ov_SC03_104_jr_80182038.c b/src/ov_SC03_104/ov_SC03_104_jr_80182038.c index b315fa180..b89a7677d 100644 --- a/src/ov_SC03_104/ov_SC03_104_jr_80182038.c +++ b/src/ov_SC03_104/ov_SC03_104_jr_80182038.c @@ -3598,28 +3598,22 @@ extern s32 func_8004787C(s32 a0); extern void func_8012C218(void *a0); extern void func_80183318(s32 a0); -void func_801831E8(s32 a0) { - s32 ent = a0; - s32 state = *(u16 *)(ent + 0x34); - s32 sub; - register s32 t __asm__("$2"); // !FAKE: pin $2 — NEEDED DIFFERS (P36 rung B tus9) +void func_801831E8(s32 ent) { + s32 t; s32 cnt; - switch (state) { + switch (*(u16 *)(ent + 0x34)) { case 0: t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); *(s16 *)(*(s32 *)(ent + 0x20) + 0x18) = t * 7; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = t << 1; cnt = *(s32 *)(ent + 0x1C) + 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt < 0x10) { break; } - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x7000; - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = 0x2000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x7000; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = 0x2000; *(s32 *)(ent + 0x1C) = 0x40; *(u16 *)(ent + 0x34) = *(u16 *)(ent + 0x34) + 1; break; @@ -3630,9 +3624,7 @@ void func_801831E8(s32 a0) { } break; case 2: - t = func_8004787C(*(s32 *)(ent + 0x1C) << 6); - sub = *(s32 *)(ent + 0x20); - *(s16 *)(sub + 0x1A) = t << 1; + *(s16 *)(*(s32 *)(ent + 0x20) + 0x1A) = func_8004787C(*(s32 *)(ent + 0x1C) << 6) << 1; cnt = *(s32 *)(ent + 0x1C) - 1; *(s32 *)(ent + 0x1C) = cnt; if (cnt == 0) {