mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-06 09:06:04 -04:00
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:
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user