phase-36: S104 s104_d25 — func_8017E060 banked at 0 through the whole-object gate + propagated — $4 pin → 0: the twice-set pointer as one expression (combine leaves reg_n_refs on a folded pseudo, combine.c:2305-2337 → alter_reg gives it a slot, reload1.c:2327-2352)

This commit is contained in:
Drew T
2026-09-10 23:03:03 -06:00
parent 0ab2802e20
commit 53d158ba03
6 changed files with 279 additions and 206 deletions
@@ -0,0 +1,7 @@
void func_8017E060(s32 *param_1)
{
extern s8 D_80191C70;
*(&D_80191C70 + param_1[0x34 / 4]) = 0;
func_801292C8((u8 *)param_1);
}
@@ -0,0 +1,77 @@
# func_8017E060 (ov_SC04_012) — mechanism (P36 T7 S104, agent d25)
**Final: score 0, plain C, ZERO levers (1 pin → 0).** Copies of the class also closed at 0 with the same text (table at the end).
```c
void func_8017E060(s32 *param_1)
{
extern s8 D_80191C70;
*(&D_80191C70 + param_1[0x34 / 4]) = 0;
func_801292C8((u8 *)param_1);
}
```
## (a) The residual in one sentence
All 12 instructions are identical; only the FRAME differs — mine `addiu sp,-32 / sw ra,24(sp)`, target `-24 / 16(sp)`: the
lever-free body allocates one unused 4-byte stack slot (rounded to 8) for a pseudo that no longer appears in any insn.
## (b) The pass and the decision (read in the dumps, proven on bytes)
- The decompiler text sets `p` TWICE: `p = (s32)&D_80191C70; … p += new_var;` → pseudo 74, `reg_n_sets = 2`, `reg_n_refs = 4`
(flow dump: "Register 74 used 4 times across 5 insns").
- combine merges insns 11 (`p = sym`, i1), 20 (`p = r + p`, i2) and 23 (`*(s8*)p = 0`, i3) into one
`(set (mem:QI (plus r75 sym)) 0)` — p vanishes from every insn. But the ref-count bookkeeping at `combine.c:2305-2314`
(i2) and `:2327-2337` (i1) only zeroes `reg_n_refs` when `reg_n_sets` reaches 0: i2's branch is skipped because
`i2dest_in_i2src` (`combine.c:1394`, `p = p + r` reads p), and i1's decrement takes `reg_n_sets` 2 → 1 only. So pseudo 74
keeps `reg_n_refs = 4` with no insn referencing it (the known exception documented at `combine.c:56-57`).
- regclass sees no uses → prefers `ST_REGS or none` (.lreg dump); global lists "1 regs to allocate: 74" but gives it no
hard register (.greg dispositions: only `75 in 2`).
- reload `alter_reg` (`reload1.c:2327-2352`): `reg_renumber < 0 && reg_n_refs > 0` and no equivalence → `assign_stack_local`
→ a 4-byte slot → `compute_frame_size` rounds the frame 24 → 32. That is the whole residual.
- Byte evidence: `scratch/b1.c` (`p = &D; p += x; *(s8*)p = 0;`) scores 4 (the residual reproduced), `scratch/b2.c`
(`p = &D + x;` — ONE set) scores 0, `body.c` (no temp at all) scores 0. In b2's dumps the combined-away pseudos 73/75
drop out of the .lreg register list (refs zeroed, set count 1 → 0). Dumps: `scratch/dumps_free/`, `scratch/dumps_b2/`.
- Why the tree's `$4` pin worked: a hard register is never given a stack slot by alter_reg (only pseudos), so the stale
count did nothing.
## (c) The move that closed it
Delete the twice-set temp: write the store as one expression, `*(&D_80191C70 + param_1[0x34 / 4]) = 0;` (the sibling
functions func_8017D99C/func_8017DAE4 in the same TU spell the same global exactly this way), and pass `param_1` to
func_801292C8 as the file-scope prototype `(u8 *a0)` says (same bytes as the void(void) cast — a0 already holds param_1).
`D_80191C70[param_1[0x34/4]] = 0` with a body-local `extern s8 D_80191C70[]` also scores 0 (`scratch/a1.c`), but the TU's
other functions declare the scalar `extern s8 D_80191C70;`, so body.c keeps that.
## (d) GENERATOR PROPOSAL
When the residual is FRAME-ONLY (identical instruction mnemonics/operands except the `addiu sp` / `sw|lw ra` offsets, mine
larger by 8), look in `.lreg` for a pseudo with refs > 0 that appears in NO insn ("ST_REGS or none") — a local set more than
once whose every set combine folded into an address — and rewrite its `x = A; x += B;` (or `x = A; … x = x op B;`) chain
into a single initialisation `x = A + B;` or inline it into its one use; mechanically: "merge consecutive sets of the same
local into one expression when the later set reads the local".
## (e) What did not work (byte evidence)
- The mechanical sweep (R2–R34, 190+ compiles, history.txt): swaps, widths, inlining `r`/`new_var`, blocks, do-while, param
copy — best 2, never 0, because every candidate kept `p = &D; p += …` (two sets of p). Re-scored here: the regen's
`free_000.c` (`new_var` inlined, `p += r`) is still 4 with the identical frame diff. (The sweep's "2" came from a
statement swap, not examined further — it cannot fix the frame while p is set twice.)
- `s8 *p; p = &D; p += x; *p = 0;` (`scratch/b3.c`): still 4 — the pointer type does not matter, the SET COUNT does.
## (f) Where the method fell short
- The residual class printed as `OTHER` and the brief's pointers (allocation table, register levers) aim at register or
order residuals; a frame-size-only diff is a different class — stale `reg_n_refs` → reload stack slot — and it is not
in `residual_moves.md` as far as this pack shows. The .lreg line "used N times … ST_REGS or none" for a pseudo absent from
every insn is the tell; worth a row in residual_moves.md and a check in `--explain`.
- The first `--try` of the most natural reading of the function closed it: with a 12-instruction body, trying the plain
idiomatic spelling BEFORE the generators would have saved the whole sweep.
## (g) The structs question
No. The lever holds a stale reference count in combine's bookkeeping (`combine.c:2305-2337`) for a local set twice; a struct
type changes which insns reference memory, not how many times `p` is set. `param_1` is an entity whose 0x34 field is the
slot index into the `D_80191C70` byte table (func_8017D99C/func_8017DAE4 write `*(s32 *)(obj + 0x34) = slot`), so a struct
with `s32 slot` at 0x34 would read better; it is not needed for the bytes (this body closes with the cast form).
## Copies table (each `--try` at 0)
| function | TU | file |
|---|---|---|
| func_8017E060 | src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c | PACK/body.c |
| func_801846EC | src/ov_SC03_007/ov_SC03_007_jr_80183894.c | PACK/scratch/copy_ov_SC03_007_func_801846EC.c |
| func_8017DE40 | src/ov_SC04_008/ov_SC04_008_jr_8017AE2C.c | PACK/scratch/copy_ov_SC04_008_func_8017DE40.c (file-scope prototype there is `func_801292C8(void)`, so the call is cast `((void (*)(u8 *))func_801292C8)((u8 *)param_1)`; `..._noarg.c` with a plain `func_801292C8();` also scores 0) |
+186 -186
View File
@@ -1,7 +1,7 @@
{
"head": "6d923ea83",
"head": "0ab2802e2",
"stamp": "15956e4a96c4",
"generated": "2026-09-10 23:00",
"generated": "2026-09-10 23:02",
"aliases": [
"main",
"ov_SC03_014",
@@ -21,206 +21,206 @@
"main": {
"objects": 85,
"identical": 85,
"seconds": 11.269000000000002,
"mean_s": 0.133
"seconds": 10.208000000000006,
"mean_s": 0.12
},
"ov_SC03_014": {
"objects": 32,
"identical": 32,
"seconds": 6.7330000000000005,
"mean_s": 0.21
"seconds": 6.918,
"mean_s": 0.216
},
"ov_SC03_015": {
"objects": 32,
"identical": 32,
"seconds": 6.734,
"mean_s": 0.21
"seconds": 6.473000000000002,
"mean_s": 0.202
},
"ov_SC04_011": {
"objects": 28,
"identical": 28,
"seconds": 6.180000000000001,
"mean_s": 0.221
"seconds": 6.083000000000001,
"mean_s": 0.217
}
},
"per_object_seconds": {
"build/src/800.o": 0.944,
"build/src/800_b.o": 0.107,
"build/src/800_b_2.o": 0.401,
"build/src/800_b_o0a.o": 0.142,
"build/src/800_c.o": 0.312,
"build/src/800b2.o": 0.157,
"build/src/apicard1.o": 0.12,
"build/src/apicard2.o": 0.143,
"build/src/apicard3.o": 0.128,
"build/src/apicard4.o": 0.091,
"build/src/apicard5.o": 0.115,
"build/src/apicard6.o": 0.161,
"build/src/apicard7.o": 0.079,
"build/src/boot.o": 0.233,
"build/src/gap.o": 0.091,
"build/src/libapi1.o": 0.09,
"build/src/libapi2.o": 0.107,
"build/src/libc2_1.o": 0.105,
"build/src/libc2_2.o": 0.113,
"build/src/libcd1.o": 0.14,
"build/src/libcd2.o": 0.087,
"build/src/libetc.o": 0.112,
"build/src/libgpu.o": 0.083,
"build/src/libgpu2.o": 0.113,
"build/src/libgs1.o": 0.075,
"build/src/libgs2.o": 0.105,
"build/src/libgs3.o": 0.077,
"build/src/libgs4.o": 0.134,
"build/src/libgs5.o": 0.094,
"build/src/libgs6.o": 0.126,
"build/src/libgs7.o": 0.105,
"build/src/libgs8.o": 0.126,
"build/src/libgte1.o": 0.106,
"build/src/libgte10.o": 0.123,
"build/src/libgte11.o": 0.093,
"build/src/libgte12.o": 0.127,
"build/src/libgte13.o": 0.086,
"build/src/libgte14.o": 0.078,
"build/src/libgte15.o": 0.102,
"build/src/libgte16.o": 0.114,
"build/src/libgte17.o": 0.094,
"build/src/libgte18.o": 0.098,
"build/src/libgte19.o": 0.127,
"build/src/libgte2.o": 0.115,
"build/src/libgte20.o": 0.08,
"build/src/libgte21.o": 0.087,
"build/src/libgte22.o": 0.101,
"build/src/libgte23.o": 0.121,
"build/src/libgte24.o": 0.163,
"build/src/libgte25.o": 0.079,
"build/src/libgte26.o": 0.112,
"build/src/libgte27.o": 0.09,
"build/src/libgte28.o": 0.159,
"build/src/libgte29.o": 0.146,
"build/src/libgte3.o": 0.148,
"build/src/libgte30.o": 0.138,
"build/src/libgte4.o": 0.117,
"build/src/libgte5.o": 0.153,
"build/src/libgte6.o": 0.09,
"build/src/libgte7.o": 0.1,
"build/src/libgte8.o": 0.095,
"build/src/libgte9.o": 0.11,
"build/src/libmcrd1.o": 0.092,
"build/src/libmcrd2.o": 0.156,
"build/src/libpad1.o": 0.11,
"build/src/libpad2.o": 0.149,
"build/src/sgap.o": 0.165,
"build/src/sgap_2.o": 0.177,
"build/src/800.o": 1.11,
"build/src/800_b.o": 0.112,
"build/src/800_b_2.o": 0.488,
"build/src/800_b_o0a.o": 0.112,
"build/src/800_c.o": 0.285,
"build/src/800b2.o": 0.1,
"build/src/apicard1.o": 0.132,
"build/src/apicard2.o": 0.095,
"build/src/apicard3.o": 0.084,
"build/src/apicard4.o": 0.083,
"build/src/apicard5.o": 0.114,
"build/src/apicard6.o": 0.112,
"build/src/apicard7.o": 0.136,
"build/src/boot.o": 0.138,
"build/src/gap.o": 0.163,
"build/src/libapi1.o": 0.082,
"build/src/libapi2.o": 0.1,
"build/src/libc2_1.o": 0.088,
"build/src/libc2_2.o": 0.074,
"build/src/libcd1.o": 0.096,
"build/src/libcd2.o": 0.074,
"build/src/libetc.o": 0.106,
"build/src/libgpu.o": 0.11,
"build/src/libgpu2.o": 0.123,
"build/src/libgs1.o": 0.082,
"build/src/libgs2.o": 0.091,
"build/src/libgs3.o": 0.162,
"build/src/libgs4.o": 0.109,
"build/src/libgs5.o": 0.108,
"build/src/libgs6.o": 0.104,
"build/src/libgs7.o": 0.096,
"build/src/libgs8.o": 0.089,
"build/src/libgte1.o": 0.121,
"build/src/libgte10.o": 0.094,
"build/src/libgte11.o": 0.13,
"build/src/libgte12.o": 0.085,
"build/src/libgte13.o": 0.113,
"build/src/libgte14.o": 0.081,
"build/src/libgte15.o": 0.129,
"build/src/libgte16.o": 0.096,
"build/src/libgte17.o": 0.137,
"build/src/libgte18.o": 0.131,
"build/src/libgte19.o": 0.095,
"build/src/libgte2.o": 0.093,
"build/src/libgte20.o": 0.086,
"build/src/libgte21.o": 0.095,
"build/src/libgte22.o": 0.117,
"build/src/libgte23.o": 0.08,
"build/src/libgte24.o": 0.071,
"build/src/libgte25.o": 0.089,
"build/src/libgte26.o": 0.073,
"build/src/libgte27.o": 0.068,
"build/src/libgte28.o": 0.08,
"build/src/libgte29.o": 0.083,
"build/src/libgte3.o": 0.105,
"build/src/libgte30.o": 0.133,
"build/src/libgte4.o": 0.079,
"build/src/libgte5.o": 0.085,
"build/src/libgte6.o": 0.109,
"build/src/libgte7.o": 0.083,
"build/src/libgte8.o": 0.142,
"build/src/libgte9.o": 0.102,
"build/src/libmcrd1.o": 0.125,
"build/src/libmcrd2.o": 0.078,
"build/src/libpad1.o": 0.081,
"build/src/libpad2.o": 0.087,
"build/src/sgap.o": 0.118,
"build/src/sgap_2.o": 0.117,
"build/src/sgap_3.o": 0.12,
"build/src/sgap_4.o": 0.146,
"build/src/sgap_5.o": 0.184,
"build/src/sgap_6.o": 0.169,
"build/src/sgap_8.o": 0.093,
"build/src/snd1.o": 0.112,
"build/src/snd10.o": 0.128,
"build/src/snd11.o": 0.106,
"build/src/snd12.o": 0.091,
"build/src/snd2.o": 0.121,
"build/src/snd3.o": 0.086,
"build/src/snd4.o": 0.09,
"build/src/snd5.o": 0.125,
"build/src/snd6.o": 0.156,
"build/src/snd7.o": 0.097,
"build/src/snd8.o": 0.087,
"build/src/snd9.o": 0.141,
"build/src/ov_SC03_014/ov_SC03_014.o": 0.194,
"build/src/ov_SC03_014/ov_SC03_014_after.o": 0.697,
"build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.541,
"build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.096,
"build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.109,
"build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.167,
"build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.196,
"build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.171,
"build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.116,
"build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.086,
"build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.263,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.125,
"build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.234,
"build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.163,
"build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.119,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.096,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.154,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.681,
"build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.404,
"build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.151,
"build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.288,
"build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.093,
"build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.139,
"build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.099,
"build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.269,
"build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.296,
"build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.076,
"build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.334,
"build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.107,
"build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.099,
"build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.081,
"build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.089,
"build/src/ov_SC03_015/ov_SC03_015.o": 0.19,
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.651,
"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.126,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.096,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.159,
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.204,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.152,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.136,
"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.271,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.157,
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.245,
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.131,
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.108,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.144,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.159,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.625,
"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.136,
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.305,
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.082,
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.208,
"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.211,
"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.085,
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.369,
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.107,
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.082,
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.082,
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.123,
"build/src/ov_SC04_011/ov_SC04_011.o": 0.17,
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.606,
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.482,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.106,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.127,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.204,
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.223,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.163,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.098,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.091,
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.239,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.105,
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.242,
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.126,
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.14,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.089,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.156,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.636,
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.338,
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.125,
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.252,
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.091,
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.154,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.115,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.179,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.744,
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.082,
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.097
"build/src/sgap_4.o": 0.084,
"build/src/sgap_5.o": 0.117,
"build/src/sgap_6.o": 0.12,
"build/src/sgap_8.o": 0.092,
"build/src/snd1.o": 0.134,
"build/src/snd10.o": 0.091,
"build/src/snd11.o": 0.098,
"build/src/snd12.o": 0.108,
"build/src/snd2.o": 0.077,
"build/src/snd3.o": 0.078,
"build/src/snd4.o": 0.08,
"build/src/snd5.o": 0.077,
"build/src/snd6.o": 0.099,
"build/src/snd7.o": 0.106,
"build/src/snd8.o": 0.095,
"build/src/snd9.o": 0.083,
"build/src/ov_SC03_014/ov_SC03_014.o": 0.171,
"build/src/ov_SC03_014/ov_SC03_014_after.o": 0.722,
"build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.539,
"build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.07,
"build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.087,
"build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.182,
"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.144,
"build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.18,
"build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.128,
"build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.3,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.133,
"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.126,
"build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.11,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.103,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.153,
"build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.721,
"build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.4,
"build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.164,
"build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.264,
"build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.15,
"build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.15,
"build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.103,
"build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.196,
"build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.248,
"build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.074,
"build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.483,
"build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.074,
"build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.104,
"build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.101,
"build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.101,
"build/src/ov_SC03_015/ov_SC03_015.o": 0.216,
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.642,
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.529,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.081,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.065,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.147,
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.221,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.144,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.097,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.112,
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.246,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.155,
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.205,
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.11,
"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.108,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.134,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.634,
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.413,
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.128,
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.254,
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.094,
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.163,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.092,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.235,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.286,
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.08,
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.368,
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.099,
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.089,
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.126,
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.113,
"build/src/ov_SC04_011/ov_SC04_011.o": 0.235,
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.651,
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.54,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.074,
"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.159,
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.207,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.17,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.145,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.09,
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.232,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.113,
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.249,
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.109,
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.084,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.081,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.139,
"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.344,
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.126,
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.249,
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.083,
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.162,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.103,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.155,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.771,
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.084,
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.094
},
"ok": true,
"seconds": 3.8
File diff suppressed because one or more lines are too long
+3 -10
View File
@@ -3756,17 +3756,10 @@ void func_80184560(s32 param_1)
extern void func_801292C8(u8*);
void func_801846EC(s32 *param_1)
{
extern s8 D_801E9CE0;
int new_var;
register s32 p __asm__("$4"); // !FAKE: pin $4 — NEEDED DIFFERS (P36 rung B tus9)
s32 r;
p = (s32) (&D_801E9CE0);
r = param_1[0x34 / 4];
new_var = r;
p += new_var;
*((s8 *) p) = 0;
((void (*)(void)) func_801292C8)();
*(&D_801E9CE0 + param_1[0x34 / 4]) = 0;
func_801292C8((u8 *)param_1);
}
+3 -10
View File
@@ -4151,17 +4151,10 @@ void func_8017DED4(s32 param_1)
extern void func_801292C8(u8 *a0);
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)();
*(&D_80191C70 + param_1[0x34 / 4]) = 0;
func_801292C8((u8 *)param_1);
}