mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-09-27 14:02:04 -04:00
phase-36: S104 d2 — func_80166F58 (ov_MAIN_012 class) at 0 levers (was 5): the banked SC04_011 header ported (return type from the TU's extern, table symbol renamed) + a re-extended short copy with a second use (combine.c:7926-7942, local-alloc.c:700); 8 bodies, gate IDENTICAL each
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# func_80166F58 (ov_MAIN_012_jr_8015A3C8.c) — P36 S104 agent d2
|
||||
|
||||
**Result: score 0 in plain C on the first `--try`** (69/69 ins; no pin, no asm, no volatile, no do-while). Levers 5 → 0.
|
||||
The same text (only the `D_801xxxxx` table symbol substituted) also scores 0 in all 7 other TUs that carry the lever
|
||||
spelling: ov_SC07_007, ov_SC02_037, ov_SC03_107, ov_SC07_010, ov_SC07_006, ov_SC01_077, ov_SC07_011
|
||||
(`scratch/port_<sym>.c`, each `--try` printed `score 0 … MATCH`).
|
||||
|
||||
## (a) The residual in one sentence
|
||||
The target sign-extends each parameter in place (`sll/sra a1,a1,16`) and then copies it into its callee-saved home
|
||||
(`move s4,a1`, the same for `a2`/`s1`); the lever-free body writes the `sra` straight into `s4`/`s1`, so it is 2 instructions
|
||||
short per parameter (COUNT, 67 vs 69). Instructions are missing; the registers are not wrong.
|
||||
|
||||
## (b) The passes and decisions (all read in the dumps `scratch/dumps_match/`, `scratch/dumps_free/`)
|
||||
- **expand / cse.** `p2 = (short)t2`, where `t2` already holds `(short)param_2`, expands to a SECOND `ashift/ashiftrt 16`
|
||||
pair into `p2` (insns 25/26 in `.rtl`). That is a shift, not a `(set REG0 REG1)`, so cse's register-copy folding
|
||||
(`cse.c:7440-7474`) never sees a copy, and nothing merges `t2` and `p2` (the pair is still there in `.cse`, `.cse2`).
|
||||
In the free body `p2 = t2` IS a REG copy and cse folds it: one pseudo, written directly by the `sra`, lives in `$s4`.
|
||||
- **combine.** `simplify_shift_const`, `combine.c:7926-7942` ("(ashiftrt (ashift foo C1) C2) and FOO has more than C1
|
||||
high-order bits equal to the sign bit"): `t2` has 17 sign-bit copies (recorded by `set_nonzero_bits_and_sign_copies`,
|
||||
`combine.c:779`), so the pair collapses to `count = 0`, i.e. the plain copy `(set (reg 78 p2) (reg 76 t2))` (`.combine`
|
||||
insn 26). combine does it AFTER cse, so no pass folds that copy any more. `t2` has a second use (`eq = (t2 == t3)`,
|
||||
the `xor` insn 35) so combine cannot instead fold the `sra` into `p2`.
|
||||
- **local-alloc.** `update_equiv_regs` → `optimize_reg_copy_1` (`local-alloc.c:700`, called at `:1007`): the copy's source
|
||||
`t2` dies later in the same block, so the later reader (the `xor`) is rewritten to read `p2`/`p3` and `t2` dies at the
|
||||
copy (`.lreg` insn 35 reads `(reg 78)`,`(reg 79)`; insn 26 carries `REG_DEAD 76`). `t2` is now a two-insn local
|
||||
quantity and gets the dying `$a1` of its own `sll`; `p2` crosses the calls and goes global to `$s4`. Hence
|
||||
`sll a1; sra a1; move s4,a1` — exactly the target (and the `xor s4,s1` the target shows).
|
||||
|
||||
The tree's levers faked exactly this: the pins put `t2` in `$5` and `p2` in `$20`, and the SHB launders stopped cse from
|
||||
seeing `p2 = t2` as a copy.
|
||||
|
||||
## (c) The move that closed it (R71 port of the banked ov_SC04_011 header `src/shared/ov/func_80166F58__3728db8a.h`)
|
||||
1. `p2 = t2;` → `p2 = (short)t2;` and `p3 = t3;` → `p3 = (short)t3;` (re-extend the already-short value into the home).
|
||||
2. `eq = (p2 == p3);` → `eq = (t2 == t3);` (compare the pre-copy temps: the second use of `t2` is what keeps combine
|
||||
from merging the `sra` into `p2`).
|
||||
Both are load-bearing, proved on bytes: only the `p3` copy plain → score 2 (`scratch/v_p3plain.c`); `eq = (p2 == p3)` with
|
||||
both re-extensions → score 4 (`scratch/v_eqp.c`); `short t2, t3` locals with plain copies → 4 (`scratch/v_shortlocals.c`).
|
||||
Declaration order was reordered to the header's (`t2,t3,p2,p3`) but it is not what closed it (the extension statements are).
|
||||
|
||||
**Why the naive splice was a COMPILE-ERROR:** the header defines `s32 func_80166F58(...)` and the table `D_8018E9E0`;
|
||||
ov_MAIN_012 declares `extern void func_80166F58(s32, s32, s32, s32);` later in the same TU (lines 7932, 7980 —
|
||||
"conflicting types"), and its record table is `D_80184418`. The function has no `return` statement, so `void` vs `s32`
|
||||
is byte-neutral. Those two renames are the ENTIRE port.
|
||||
|
||||
## (d) Generator proposal
|
||||
When a lever class has a lever-free banked twin of the same function name and size in another overlay (`related.txt`
|
||||
already finds them), port the twin's body mechanically: substitute every extern symbol that differs by position in the
|
||||
disassembly (here only the `%hi/%lo` table `D_8018E9E0`→`D_80184418`, found by pairing relocations of the two target
|
||||
objects) and take the return type from the target TU's own later `extern` prototype — then `--try`. For the residual
|
||||
class itself: **"when the target shows `sra aN,aN,16; move sK,aN` and mine shows `sra sK,aN,16`, spell the home as a
|
||||
re-extension of a named short temp (`t = (short)arg; home = (short)t;`) and give the temp one more later use"**.
|
||||
|
||||
## (e) What did not work (byte evidence)
|
||||
The mechanical search (`history.txt`, 2,292 compiles across R2/R4/R7/R9/R10/R18) and the free sweep's `free_016.c`
|
||||
("swap-stmts") all stayed at 4: none of those generators writes a redundant `(short)` re-extension, and none moves a
|
||||
use from the home back to the temp. Single variants above: 2, 4, 4.
|
||||
|
||||
## (f) Where the method fell short
|
||||
Nothing needed beyond the brief's R71 lead: the port closed on the first `--try`. The one gap is tooling: the splice that
|
||||
produced the COMPILE-ERROR should have been retried with the TU's own return type and its own table symbol — both are
|
||||
readable from the target TU (a later `extern` prototype; the pack's own `body_tree.c` names `D_80184418`). A generator that
|
||||
does that substitution would have closed this class (8 TUs) with zero agent time.
|
||||
|
||||
## (g) Structs question
|
||||
**No — structs are not the missing piece here.** The residual is scalar: two parameter sign-extensions and the copies
|
||||
into their call-crossing homes (expand → combine `combine.c:7926-7942` → local-alloc `local-alloc.c:700`). No memory
|
||||
access is involved, so the aggregate-vs-scalar channel (`expr.c:4568-4577`, `sched.c`/`cse.c` alias decisions) cannot
|
||||
touch it. Tested on bytes with a body-local `typedef struct { u16 kind; u8 pad[0x2A]; s32 owner; u8 pad2[0x28]; } Ent;`
|
||||
for the 0x58-byte records at `D_8011D030` (`e->kind`, `e->owner`, `e + 1`): with the port → score 0
|
||||
(`scratch/v_struct.c`); with the free body's plain copies → score 4 (`scratch/v_struct_free.c`). The struct is
|
||||
byte-neutral and a readability option for the structs phase (fields: `+0x00 u16 kind`, `+0x2C s32 owner`, stride 0x58).
|
||||
+183
-183
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"head": "16411105e",
|
||||
"head": "7db8372ae",
|
||||
"stamp": "15956e4a96c4",
|
||||
"generated": "2026-09-10 21:00",
|
||||
"generated": "2026-09-10 21:05",
|
||||
"aliases": [
|
||||
"main",
|
||||
"ov_SC03_014",
|
||||
@@ -21,207 +21,207 @@
|
||||
"main": {
|
||||
"objects": 85,
|
||||
"identical": 85,
|
||||
"seconds": 11.418,
|
||||
"mean_s": 0.134
|
||||
"seconds": 10.652000000000003,
|
||||
"mean_s": 0.125
|
||||
},
|
||||
"ov_SC03_014": {
|
||||
"objects": 32,
|
||||
"identical": 32,
|
||||
"seconds": 7.175,
|
||||
"mean_s": 0.224
|
||||
"seconds": 6.837999999999999,
|
||||
"mean_s": 0.214
|
||||
},
|
||||
"ov_SC03_015": {
|
||||
"objects": 32,
|
||||
"identical": 32,
|
||||
"seconds": 7.3950000000000005,
|
||||
"mean_s": 0.231
|
||||
"seconds": 6.721,
|
||||
"mean_s": 0.21
|
||||
},
|
||||
"ov_SC04_011": {
|
||||
"objects": 28,
|
||||
"identical": 28,
|
||||
"seconds": 7.131,
|
||||
"mean_s": 0.255
|
||||
"seconds": 6.3050000000000015,
|
||||
"mean_s": 0.225
|
||||
}
|
||||
},
|
||||
"per_object_seconds": {
|
||||
"build/src/800.o": 1.124,
|
||||
"build/src/800_b.o": 0.121,
|
||||
"build/src/800_b_2.o": 0.416,
|
||||
"build/src/800_b_o0a.o": 0.121,
|
||||
"build/src/800_c.o": 0.273,
|
||||
"build/src/800b2.o": 0.142,
|
||||
"build/src/apicard1.o": 0.092,
|
||||
"build/src/apicard2.o": 0.151,
|
||||
"build/src/apicard3.o": 0.092,
|
||||
"build/src/apicard4.o": 0.092,
|
||||
"build/src/apicard5.o": 0.117,
|
||||
"build/src/apicard6.o": 0.153,
|
||||
"build/src/apicard7.o": 0.101,
|
||||
"build/src/boot.o": 0.118,
|
||||
"build/src/gap.o": 0.106,
|
||||
"build/src/libapi1.o": 0.121,
|
||||
"build/src/libapi2.o": 0.137,
|
||||
"build/src/libc2_1.o": 0.146,
|
||||
"build/src/libc2_2.o": 0.093,
|
||||
"build/src/libcd1.o": 0.138,
|
||||
"build/src/libcd2.o": 0.153,
|
||||
"build/src/libetc.o": 0.179,
|
||||
"build/src/libgpu.o": 0.111,
|
||||
"build/src/libgpu2.o": 0.123,
|
||||
"build/src/libgs1.o": 0.131,
|
||||
"build/src/libgs2.o": 0.099,
|
||||
"build/src/libgs3.o": 0.096,
|
||||
"build/src/libgs4.o": 0.128,
|
||||
"build/src/libgs5.o": 0.091,
|
||||
"build/src/libgs6.o": 0.154,
|
||||
"build/src/libgs7.o": 0.111,
|
||||
"build/src/libgs8.o": 0.113,
|
||||
"build/src/libgte1.o": 0.096,
|
||||
"build/src/libgte10.o": 0.088,
|
||||
"build/src/libgte11.o": 0.108,
|
||||
"build/src/libgte12.o": 0.097,
|
||||
"build/src/libgte13.o": 0.125,
|
||||
"build/src/libgte14.o": 0.139,
|
||||
"build/src/libgte15.o": 0.134,
|
||||
"build/src/libgte16.o": 0.098,
|
||||
"build/src/libgte17.o": 0.119,
|
||||
"build/src/libgte18.o": 0.087,
|
||||
"build/src/libgte19.o": 0.151,
|
||||
"build/src/libgte2.o": 0.088,
|
||||
"build/src/libgte20.o": 0.161,
|
||||
"build/src/libgte21.o": 0.104,
|
||||
"build/src/libgte22.o": 0.092,
|
||||
"build/src/libgte23.o": 0.088,
|
||||
"build/src/libgte24.o": 0.122,
|
||||
"build/src/libgte25.o": 0.102,
|
||||
"build/src/libgte26.o": 0.155,
|
||||
"build/src/libgte27.o": 0.092,
|
||||
"build/src/libgte28.o": 0.122,
|
||||
"build/src/libgte29.o": 0.093,
|
||||
"build/src/libgte3.o": 0.135,
|
||||
"build/src/libgte30.o": 0.128,
|
||||
"build/src/libgte4.o": 0.119,
|
||||
"build/src/libgte5.o": 0.076,
|
||||
"build/src/libgte6.o": 0.131,
|
||||
"build/src/libgte7.o": 0.079,
|
||||
"build/src/800.o": 0.998,
|
||||
"build/src/800_b.o": 0.195,
|
||||
"build/src/800_b_2.o": 0.436,
|
||||
"build/src/800_b_o0a.o": 0.091,
|
||||
"build/src/800_c.o": 0.278,
|
||||
"build/src/800b2.o": 0.191,
|
||||
"build/src/apicard1.o": 0.144,
|
||||
"build/src/apicard2.o": 0.093,
|
||||
"build/src/apicard3.o": 0.077,
|
||||
"build/src/apicard4.o": 0.122,
|
||||
"build/src/apicard5.o": 0.112,
|
||||
"build/src/apicard6.o": 0.128,
|
||||
"build/src/apicard7.o": 0.142,
|
||||
"build/src/boot.o": 0.116,
|
||||
"build/src/gap.o": 0.085,
|
||||
"build/src/libapi1.o": 0.082,
|
||||
"build/src/libapi2.o": 0.085,
|
||||
"build/src/libc2_1.o": 0.091,
|
||||
"build/src/libc2_2.o": 0.084,
|
||||
"build/src/libcd1.o": 0.118,
|
||||
"build/src/libcd2.o": 0.108,
|
||||
"build/src/libetc.o": 0.144,
|
||||
"build/src/libgpu.o": 0.138,
|
||||
"build/src/libgpu2.o": 0.097,
|
||||
"build/src/libgs1.o": 0.085,
|
||||
"build/src/libgs2.o": 0.102,
|
||||
"build/src/libgs3.o": 0.084,
|
||||
"build/src/libgs4.o": 0.082,
|
||||
"build/src/libgs5.o": 0.105,
|
||||
"build/src/libgs6.o": 0.153,
|
||||
"build/src/libgs7.o": 0.136,
|
||||
"build/src/libgs8.o": 0.081,
|
||||
"build/src/libgte1.o": 0.077,
|
||||
"build/src/libgte10.o": 0.101,
|
||||
"build/src/libgte11.o": 0.096,
|
||||
"build/src/libgte12.o": 0.106,
|
||||
"build/src/libgte13.o": 0.084,
|
||||
"build/src/libgte14.o": 0.081,
|
||||
"build/src/libgte15.o": 0.126,
|
||||
"build/src/libgte16.o": 0.099,
|
||||
"build/src/libgte17.o": 0.194,
|
||||
"build/src/libgte18.o": 0.08,
|
||||
"build/src/libgte19.o": 0.116,
|
||||
"build/src/libgte2.o": 0.117,
|
||||
"build/src/libgte20.o": 0.079,
|
||||
"build/src/libgte21.o": 0.159,
|
||||
"build/src/libgte22.o": 0.111,
|
||||
"build/src/libgte23.o": 0.084,
|
||||
"build/src/libgte24.o": 0.164,
|
||||
"build/src/libgte25.o": 0.106,
|
||||
"build/src/libgte26.o": 0.093,
|
||||
"build/src/libgte27.o": 0.131,
|
||||
"build/src/libgte28.o": 0.117,
|
||||
"build/src/libgte29.o": 0.125,
|
||||
"build/src/libgte3.o": 0.117,
|
||||
"build/src/libgte30.o": 0.091,
|
||||
"build/src/libgte4.o": 0.079,
|
||||
"build/src/libgte5.o": 0.078,
|
||||
"build/src/libgte6.o": 0.084,
|
||||
"build/src/libgte7.o": 0.109,
|
||||
"build/src/libgte8.o": 0.092,
|
||||
"build/src/libgte9.o": 0.08,
|
||||
"build/src/libmcrd1.o": 0.182,
|
||||
"build/src/libmcrd2.o": 0.112,
|
||||
"build/src/libpad1.o": 0.151,
|
||||
"build/src/libpad2.o": 0.133,
|
||||
"build/src/sgap.o": 0.105,
|
||||
"build/src/sgap_2.o": 0.138,
|
||||
"build/src/sgap_3.o": 0.157,
|
||||
"build/src/sgap_4.o": 0.164,
|
||||
"build/src/sgap_5.o": 0.084,
|
||||
"build/src/sgap_6.o": 0.087,
|
||||
"build/src/sgap_8.o": 0.087,
|
||||
"build/src/snd1.o": 0.141,
|
||||
"build/src/snd10.o": 0.093,
|
||||
"build/src/snd11.o": 0.087,
|
||||
"build/src/snd12.o": 0.089,
|
||||
"build/src/snd2.o": 0.136,
|
||||
"build/src/snd3.o": 0.1,
|
||||
"build/src/snd4.o": 0.117,
|
||||
"build/src/snd5.o": 0.088,
|
||||
"build/src/snd6.o": 0.197,
|
||||
"build/src/snd7.o": 0.106,
|
||||
"build/src/snd8.o": 0.079,
|
||||
"build/src/snd9.o": 0.141,
|
||||
"build/src/ov_SC03_014/ov_SC03_014.o": 0.18,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_after.o": 0.861,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.637,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.095,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.099,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.174,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.213,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.16,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.119,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.111,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.238,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.116,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.261,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.143,
|
||||
"build/src/libgte9.o": 0.087,
|
||||
"build/src/libmcrd1.o": 0.148,
|
||||
"build/src/libmcrd2.o": 0.125,
|
||||
"build/src/libpad1.o": 0.093,
|
||||
"build/src/libpad2.o": 0.128,
|
||||
"build/src/sgap.o": 0.103,
|
||||
"build/src/sgap_2.o": 0.083,
|
||||
"build/src/sgap_3.o": 0.094,
|
||||
"build/src/sgap_4.o": 0.096,
|
||||
"build/src/sgap_5.o": 0.098,
|
||||
"build/src/sgap_6.o": 0.08,
|
||||
"build/src/sgap_8.o": 0.08,
|
||||
"build/src/snd1.o": 0.11,
|
||||
"build/src/snd10.o": 0.127,
|
||||
"build/src/snd11.o": 0.095,
|
||||
"build/src/snd12.o": 0.114,
|
||||
"build/src/snd2.o": 0.15,
|
||||
"build/src/snd3.o": 0.113,
|
||||
"build/src/snd4.o": 0.111,
|
||||
"build/src/snd5.o": 0.083,
|
||||
"build/src/snd6.o": 0.122,
|
||||
"build/src/snd7.o": 0.102,
|
||||
"build/src/snd8.o": 0.082,
|
||||
"build/src/snd9.o": 0.149,
|
||||
"build/src/ov_SC03_014/ov_SC03_014.o": 0.215,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_after.o": 0.692,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.599,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.106,
|
||||
"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.208,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.21,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.132,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.086,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.121,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.286,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.114,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.254,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.155,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.104,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.136,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.121,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.635,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.481,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.157,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.312,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.096,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.148,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.122,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.316,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.273,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.07,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.394,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.077,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.095,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.107,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.124,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.112,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.147,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.692,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.381,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.153,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.28,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.103,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.13,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.128,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.241,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.275,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.084,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.368,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.098,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.092,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.094,
|
||||
"build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.104,
|
||||
"build/src/ov_SC03_015/ov_SC03_015.o": 0.174,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.815,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.556,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.072,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.126,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.207,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.241,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.221,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.125,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.086,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.303,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.627,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.533,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.086,
|
||||
"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.186,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.224,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.154,
|
||||
"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.078,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.22,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.1,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.231,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.178,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.164,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.166,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.118,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.696,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.435,
|
||||
"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.36,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.123,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.3,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.159,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.113,
|
||||
"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.134,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.65,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.391,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.199,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.275,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.083,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.144,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.126,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.237,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.319,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.078,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.38,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.077,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.159,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.11,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.132,
|
||||
"build/src/ov_SC04_011/ov_SC04_011.o": 0.207,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.713,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.548,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.072,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.114,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.199,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.205,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.184,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.145,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.118,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.367,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.17,
|
||||
"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.124,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.151,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.127,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.182,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.674,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.42,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.163,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.323,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.121,
|
||||
"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.124,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.203,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.839,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.124,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.11
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.127,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.248,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.295,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.081,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.449,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.074,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.124,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.098,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.099,
|
||||
"build/src/ov_SC04_011/ov_SC04_011.o": 0.198,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.648,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.519,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.102,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.074,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.161,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.264,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.166,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.138,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.086,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.294,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.169,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.243,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.118,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.095,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.112,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.18,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.578,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.33,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.149,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.261,
|
||||
"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.141,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.11,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.147,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.76,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.081,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.098
|
||||
},
|
||||
"ok": true,
|
||||
"seconds": 4.1
|
||||
"seconds": 3.8
|
||||
}
|
||||
|
||||
@@ -29033,3 +29033,11 @@
|
||||
{"ts": "2026-09-10 21:03:40", "label": "s104_all_part1", "rung": "E", "calib": {"head": "16411105e", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC06_024/ov_SC06_024_jr_80186F00.c", "fn": "func_8018D674", "addr": 2149111412, "aliases": null, "header": false, "includers": 0, "nhash_before": "c99c649701624a044920722762a5f401f3e4b405", "nhash_after": "aee8e9a3f683903af9df42c8f292d8ad61aea70c", "source": "delever_regen R19 argrestore func_8012B370 +a0 @15", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.44, "objects": ["build/src/ov_SC06_024/ov_SC06_024_jr_80186F00.o"], "before_text": "void func_8018D674(s32 a0)\n{\n s32 t;\n register s32 *a1 asm(\"$5\"); // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n u32 v0;\n\n t = *(s32 *)(a0 + 0x1C) - 1;\n *(s32 *)(a0 + 0x1C) = t;\n\n if (t != 0) {\n a1 = *(s32 **)(a0 + 0x20);\n v0 = *(u32 *)(a1 + 0x1);\n v0 ^= 0x80000000;\n *(u32 *)(a1 + 0x1) = v0;\n ((void (*)(void))func_8012B370)();\n\n t = *(s32 *)(a0 + 0x1C);\n if ((t & 0x3) != 0) {\n s32 s0 = func_8012C588(0x281, a0);\n if (s0 != 0) {\n *(s32 *)(s0 + 0x1C) = 2;\n *(s16 *)(s0 + 0x12) = (rand() & 0x1F) - 0x10;\n *(s16 *)(s0 + 0x16) = -((rand() & 0xF) + 0x10);\n *(s16 *)(s0 + 0x1A) = (rand() & 0x1F) - 0x10;\n }\n }\n return;\n }\n\n ((void (*)(void *))func_8012C218)((void *)a0);\n}\n", "after_text": "void func_8018D674(s32 a0)\n{\n s32 t;\n s32 *a1;\n u32 v0;\n\n t = *(s32 *)(a0 + 0x1C) - 1;\n *(s32 *)(a0 + 0x1C) = t;\n\n if (t != 0) {\n a1 = *(s32 **)(a0 + 0x20);\n v0 = *(u32 *)(a1 + 0x1);\n v0 ^= 0x80000000;\n *(u32 *)(a1 + 0x1) = v0;\n ((void (*)(int a0))func_8012B370)(a0);\n\n t = *(s32 *)(a0 + 0x1C);\n if ((t & 0x3) != 0) {\n s32 s0 = func_8012C588(0x281, a0);\n if (s0 != 0) {\n *(s32 *)(s0 + 0x1C) = 2;\n *(s16 *)(s0 + 0x12) = (rand() & 0x1F) - 0x10;\n *(s16 *)(s0 + 0x16) = -((rand() & 0xF) + 0x10);\n *(s16 *)(s0 + 0x1A) = (rand() & 0x1F) - 0x10;\n }\n }\n return;\n }\n\n ((void (*)(void *))func_8012C218)((void *)a0);\n}\n"}
|
||||
{"ts": "2026-09-10 21:04:10", "label": "s104_all_part1p", "rung": "E", "calib": {"head": "16411105e", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC06_024/ov_SC06_024_jr_80186F00.c", "fn": "func_8018D9B8", "addr": 2149112248, "aliases": null, "header": false, "includers": 0, "nhash_before": "c99c649701624a044920722762a5f401f3e4b405", "nhash_after": "aee8e9a3f683903af9df42c8f292d8ad61aea70c", "source": "propagate:src/ov_SC06_024/ov_SC06_024_jr_80186F00.c:func_8018D674", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.404, "objects": ["build/src/ov_SC06_024/ov_SC06_024_jr_80186F00.o"], "before_text": "void func_8018D9B8(s32 a0)\n{\n s32 t;\n register s32 *a1 asm(\"$5\"); // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n u32 v0;\n\n t = *(s32 *)(a0 + 0x1C) - 1;\n *(s32 *)(a0 + 0x1C) = t;\n\n if (t != 0) {\n a1 = *(s32 **)(a0 + 0x20);\n v0 = *(u32 *)(a1 + 0x1);\n v0 ^= 0x80000000;\n *(u32 *)(a1 + 0x1) = v0;\n ((void (*)(void))func_8012B370)();\n\n t = *(s32 *)(a0 + 0x1C);\n if ((t & 0x3) != 0) {\n s32 s0 = func_8012C588(0x281, a0);\n if (s0 != 0) {\n *(s32 *)(s0 + 0x1C) = 2;\n *(s16 *)(s0 + 0x12) = (rand() & 0x1F) - 0x10;\n *(s16 *)(s0 + 0x16) = -((rand() & 0xF) + 0x10);\n *(s16 *)(s0 + 0x1A) = (rand() & 0x1F) - 0x10;\n }\n }\n return;\n }\n\n ((void (*)(void *))func_8012C218)((void *)a0);\n}\n", "after_text": "void func_8018D9B8(s32 a0)\n{\n s32 t;\n s32 *a1;\n u32 v0;\n\n t = *(s32 *)(a0 + 0x1C) - 1;\n *(s32 *)(a0 + 0x1C) = t;\n\n if (t != 0) {\n a1 = *(s32 **)(a0 + 0x20);\n v0 = *(u32 *)(a1 + 0x1);\n v0 ^= 0x80000000;\n *(u32 *)(a1 + 0x1) = v0;\n ((void (*)(int a0))func_8012B370)(a0);\n\n t = *(s32 *)(a0 + 0x1C);\n if ((t & 0x3) != 0) {\n s32 s0 = func_8012C588(0x281, a0);\n if (s0 != 0) {\n *(s32 *)(s0 + 0x1C) = 2;\n *(s16 *)(s0 + 0x12) = (rand() & 0x1F) - 0x10;\n *(s16 *)(s0 + 0x16) = -((rand() & 0xF) + 0x10);\n *(s16 *)(s0 + 0x1A) = (rand() & 0x1F) - 0x10;\n }\n }\n return;\n }\n\n ((void (*)(void *))func_8012C218)((void *)a0);\n}\n"}
|
||||
{"ts": "2026-09-10 21:04:11", "label": "s104_all_part1p", "rung": "E", "calib": {"head": "16411105e", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC06_024/ov_SC06_024_jr_80186F00.c", "fn": "func_8018DCA8", "addr": 2149113000, "aliases": null, "header": false, "includers": 0, "nhash_before": "c99c649701624a044920722762a5f401f3e4b405", "nhash_after": "aee8e9a3f683903af9df42c8f292d8ad61aea70c", "source": "propagate:src/ov_SC06_024/ov_SC06_024_jr_80186F00.c:func_8018D674", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.378, "objects": ["build/src/ov_SC06_024/ov_SC06_024_jr_80186F00.o"], "before_text": "void func_8018DCA8(s32 a0)\n{\n s32 t;\n register s32 *a1 asm(\"$5\"); // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus9)\n u32 v0;\n\n t = *(s32 *)(a0 + 0x1C) - 1;\n *(s32 *)(a0 + 0x1C) = t;\n\n if (t != 0) {\n a1 = *(s32 **)(a0 + 0x20);\n v0 = *(u32 *)(a1 + 0x1);\n v0 ^= 0x80000000;\n *(u32 *)(a1 + 0x1) = v0;\n ((void (*)(void))func_8012B370)();\n\n t = *(s32 *)(a0 + 0x1C);\n if ((t & 0x3) != 0) {\n s32 s0 = func_8012C588(0x281, a0);\n if (s0 != 0) {\n *(s32 *)(s0 + 0x1C) = 2;\n *(s16 *)(s0 + 0x12) = (rand() & 0x1F) - 0x10;\n *(s16 *)(s0 + 0x16) = -((rand() & 0xF) + 0x10);\n *(s16 *)(s0 + 0x1A) = (rand() & 0x1F) - 0x10;\n }\n }\n return;\n }\n\n ((void (*)(void *))func_8012C218)((void *)a0);\n}\n", "after_text": "void func_8018DCA8(s32 a0)\n{\n s32 t;\n s32 *a1;\n u32 v0;\n\n t = *(s32 *)(a0 + 0x1C) - 1;\n *(s32 *)(a0 + 0x1C) = t;\n\n if (t != 0) {\n a1 = *(s32 **)(a0 + 0x20);\n v0 = *(u32 *)(a1 + 0x1);\n v0 ^= 0x80000000;\n *(u32 *)(a1 + 0x1) = v0;\n ((void (*)(int a0))func_8012B370)(a0);\n\n t = *(s32 *)(a0 + 0x1C);\n if ((t & 0x3) != 0) {\n s32 s0 = func_8012C588(0x281, a0);\n if (s0 != 0) {\n *(s32 *)(s0 + 0x1C) = 2;\n *(s16 *)(s0 + 0x12) = (rand() & 0x1F) - 0x10;\n *(s16 *)(s0 + 0x16) = -((rand() & 0xF) + 0x10);\n *(s16 *)(s0 + 0x1A) = (rand() & 0x1F) - 0x10;\n }\n }\n return;\n }\n\n ((void (*)(void *))func_8012C218)((void *)a0);\n}\n"}
|
||||
{"ts": "2026-09-10 21:06:06", "label": "s104_d2", "rung": "E", "calib": {"head": "7db8372ae", "stamp": "15956e4a96c4"}, "tu": "src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c", "fn": "func_80166F58", "addr": 2148953944, "aliases": null, "header": false, "includers": 0, "nhash_before": "657f8158c460c66661fb30c81fd4ac31df15d05d", "nhash_after": "b65050511788dfc5a92aafbb5656ae915f2cd697", "source": ".run/P36/agents/ov_MAIN_012__func_80166F58/body.c", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.596, "objects": ["build/src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.o"], "before_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n\n extern s32 D_8011D030;\n extern unsigned char D_80184418[];\n\n register int p2 __asm__(\"$20\"); /* $s4 */ // !FAKE: pin $20 \u2014 NEEDED DIFFERS (P36 rung B tus2)\n int p3; /* $s1 */\n register int t2 __asm__(\"$5\"); /* a1 */ // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus2)\n int t3; /* a2 */\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB \u2014 NEEDED DIFFERS; launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus2)\n t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus2)\n eq = (p2 == p3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_80184418[((short)param_4) * 0xc4], 0xc4);\n}\n", "after_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern s32 D_8011D030;\n extern unsigned char D_80184418[];\n\n int t2;\n int t3;\n int p2;\n int p3;\n\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = (short)param_2;\n p2 = (short)t2;\n t3 = (short)param_3;\n p3 = (short)t3;\n eq = (t2 == t3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_80184418[((short)param_4) * 0xc4], 0xc4);\n}\n"}
|
||||
{"ts": "2026-09-10 21:06:39", "label": "s104_d2", "rung": "E", "calib": {"head": "7db8372ae", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC02_037/ov_SC02_037_jr_8015A3C8.c", "fn": "func_80166F58", "addr": 2148953944, "aliases": null, "header": false, "includers": 0, "nhash_before": "657f8158c460c66661fb30c81fd4ac31df15d05d", "nhash_after": "b65050511788dfc5a92aafbb5656ae915f2cd697", "source": "propagate:src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:func_80166F58", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.408, "objects": ["build/src/ov_SC02_037/ov_SC02_037_jr_8015A3C8.o"], "before_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n\n extern s32 D_8011D030;\n extern unsigned char D_801C8710[];\n\n register int p2 __asm__(\"$20\"); /* $s4 */ // !FAKE: pin $20 \u2014 NEEDED DIFFERS (P36 rung B tus2)\n int p3; /* $s1 */\n register int t2 __asm__(\"$5\"); /* a1 */ // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus2)\n int t3; /* a2 */\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB \u2014 NEEDED DIFFERS; launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus2)\n t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus2)\n eq = (p2 == p3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801C8710[((short)param_4) * 0xc4], 0xc4);\n}\n", "after_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern s32 D_8011D030;\n extern unsigned char D_801C8710[];\n\n int t2;\n int t3;\n int p2;\n int p3;\n\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = (short)param_2;\n p2 = (short)t2;\n t3 = (short)param_3;\n p3 = (short)t3;\n eq = (t2 == t3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801C8710[((short)param_4) * 0xc4], 0xc4);\n}\n"}
|
||||
{"ts": "2026-09-10 21:06:49", "label": "s104_d2", "rung": "E", "calib": {"head": "7db8372ae", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC03_107/ov_SC03_107_jr_8015A3C8.c", "fn": "func_80166F58", "addr": 2148953944, "aliases": null, "header": false, "includers": 0, "nhash_before": "657f8158c460c66661fb30c81fd4ac31df15d05d", "nhash_after": "b65050511788dfc5a92aafbb5656ae915f2cd697", "source": "propagate:src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:func_80166F58", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 1.627, "objects": ["build/src/ov_SC03_107/ov_SC03_107_jr_8015A3C8.o"], "before_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n\n extern s32 D_8011D030;\n extern unsigned char D_8019AA70[];\n\n register int p2 __asm__(\"$20\"); /* $s4 */ // !FAKE: pin $20 \u2014 NEEDED DIFFERS (P36 rung B tus3)\n int p3; /* $s1 */\n register int t2 __asm__(\"$5\"); /* a1 */ // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus3)\n int t3; /* a2 */\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB \u2014 NEEDED DIFFERS; launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus3)\n t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus3)\n eq = (p2 == p3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_8019AA70[((short)param_4) * 0xc4], 0xc4);\n}\n", "after_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern s32 D_8011D030;\n extern unsigned char D_8019AA70[];\n\n int t2;\n int t3;\n int p2;\n int p3;\n\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = (short)param_2;\n p2 = (short)t2;\n t3 = (short)param_3;\n p3 = (short)t3;\n eq = (t2 == t3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_8019AA70[((short)param_4) * 0xc4], 0xc4);\n}\n"}
|
||||
{"ts": "2026-09-10 21:06:53", "label": "s104_d2", "rung": "E", "calib": {"head": "7db8372ae", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC07_010/ov_SC07_010_jr_8015C32C.c", "fn": "func_80166F58", "addr": 2148953944, "aliases": null, "header": false, "includers": 0, "nhash_before": "657f8158c460c66661fb30c81fd4ac31df15d05d", "nhash_after": "b65050511788dfc5a92aafbb5656ae915f2cd697", "source": "propagate:src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:func_80166F58", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.53, "objects": ["build/src/ov_SC07_010/ov_SC07_010_jr_8015C32C.o"], "before_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n\n extern s32 D_8011D030;\n extern unsigned char D_801A6D20[];\n\n register int p2 __asm__(\"$20\"); /* $s4 */ // !FAKE: pin $20 \u2014 NEEDED DIFFERS (P36 rung B tus4)\n int p3; /* $s1 */\n register int t2 __asm__(\"$5\"); /* a1 */ // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus4)\n int t3; /* a2 */\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB \u2014 NEEDED DIFFERS; launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus4)\n t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus4)\n eq = (p2 == p3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801A6D20[((short)param_4) * 0xc4], 0xc4);\n}\n", "after_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern s32 D_8011D030;\n extern unsigned char D_801A6D20[];\n\n int t2;\n int t3;\n int p2;\n int p3;\n\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = (short)param_2;\n p2 = (short)t2;\n t3 = (short)param_3;\n p3 = (short)t3;\n eq = (t2 == t3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801A6D20[((short)param_4) * 0xc4], 0xc4);\n}\n"}
|
||||
{"ts": "2026-09-10 21:06:54", "label": "s104_d2", "rung": "E", "calib": {"head": "7db8372ae", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC07_007/ov_SC07_007_jr_8015C32C.c", "fn": "func_80166F58", "addr": 2148953944, "aliases": null, "header": false, "includers": 0, "nhash_before": "657f8158c460c66661fb30c81fd4ac31df15d05d", "nhash_after": "b65050511788dfc5a92aafbb5656ae915f2cd697", "source": "propagate:src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:func_80166F58", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.532, "objects": ["build/src/ov_SC07_007/ov_SC07_007_jr_8015C32C.o"], "before_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n\n extern s32 D_8011D030;\n extern unsigned char D_801C6828[];\n\n register int p2 __asm__(\"$20\"); /* $s4 */ // !FAKE: pin $20 \u2014 NEEDED DIFFERS (P36 rung B tus4)\n int p3; /* $s1 */\n register int t2 __asm__(\"$5\"); /* a1 */ // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus4)\n int t3; /* a2 */\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB \u2014 NEEDED DIFFERS; launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus4)\n t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus4)\n eq = (p2 == p3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801C6828[((short)param_4) * 0xc4], 0xc4);\n}\n", "after_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern s32 D_8011D030;\n extern unsigned char D_801C6828[];\n\n int t2;\n int t3;\n int p2;\n int p3;\n\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = (short)param_2;\n p2 = (short)t2;\n t3 = (short)param_3;\n p3 = (short)t3;\n eq = (t2 == t3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801C6828[((short)param_4) * 0xc4], 0xc4);\n}\n"}
|
||||
{"ts": "2026-09-10 21:06:55", "label": "s104_d2", "rung": "E", "calib": {"head": "7db8372ae", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC07_011/ov_SC07_011_jr_8015C32C.c", "fn": "func_80166F58", "addr": 2148953944, "aliases": null, "header": false, "includers": 0, "nhash_before": "657f8158c460c66661fb30c81fd4ac31df15d05d", "nhash_after": "b65050511788dfc5a92aafbb5656ae915f2cd697", "source": "propagate:src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:func_80166F58", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.523, "objects": ["build/src/ov_SC07_011/ov_SC07_011_jr_8015C32C.o"], "before_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n\n extern s32 D_8011D030;\n extern unsigned char D_8018F3B8[];\n\n register int p2 __asm__(\"$20\"); /* $s4 */ // !FAKE: pin $20 \u2014 NEEDED DIFFERS (P36 rung B tus4)\n int p3; /* $s1 */\n register int t2 __asm__(\"$5\"); /* a1 */ // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus4)\n int t3; /* a2 */\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB \u2014 NEEDED DIFFERS; launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus4)\n t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus4)\n eq = (p2 == p3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_8018F3B8[((short)param_4) * 0xc4], 0xc4);\n}\n", "after_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern s32 D_8011D030;\n extern unsigned char D_8018F3B8[];\n\n int t2;\n int t3;\n int p2;\n int p3;\n\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = (short)param_2;\n p2 = (short)t2;\n t3 = (short)param_3;\n p3 = (short)t3;\n eq = (t2 == t3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_8018F3B8[((short)param_4) * 0xc4], 0xc4);\n}\n"}
|
||||
{"ts": "2026-09-10 21:06:56", "label": "s104_d2", "rung": "E", "calib": {"head": "7db8372ae", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC01_077/ov_SC01_077_jr_8015C32C.c", "fn": "func_80166F58", "addr": 2148953944, "aliases": null, "header": false, "includers": 0, "nhash_before": "a5f96d7298b7249241533d514c54995f2a44d535", "nhash_after": "b65050511788dfc5a92aafbb5656ae915f2cd697", "source": "propagate:src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:func_80166F58", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.518, "objects": ["build/src/ov_SC01_077/ov_SC01_077_jr_8015C32C.o"], "before_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern unsigned char D_801D97E8[];\n\n register int p2 __asm__(\"$20\"); /* $s4 */ // !FAKE: pin $20 \u2014 NEEDED DIFFERS (P36 rung B tus2)\n int p3; /* $s1 */\n register int t2 __asm__(\"$5\"); /* a1 */ // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus2)\n int t3; /* a2 */\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB \u2014 NEEDED DIFFERS; launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus2)\n t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus2)\n eq = (p2 == p3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801D97E8[((short)param_4) * 0xc4], 0xc4);\n}\n", "after_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern s32 D_8011D030;\n extern unsigned char D_801D97E8[];\n\n int t2;\n int t3;\n int p2;\n int p3;\n\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = (short)param_2;\n p2 = (short)t2;\n t3 = (short)param_3;\n p3 = (short)t3;\n eq = (t2 == t3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801D97E8[((short)param_4) * 0xc4], 0xc4);\n}\n"}
|
||||
{"ts": "2026-09-10 21:06:57", "label": "s104_d2", "rung": "E", "calib": {"head": "7db8372ae", "stamp": "15956e4a96c4"}, "tu": "src/ov_SC07_006/ov_SC07_006_jr_8015C32C.c", "fn": "func_80166F58", "addr": 2148953944, "aliases": null, "header": false, "includers": 0, "nhash_before": "a5f96d7298b7249241533d514c54995f2a44d535", "nhash_after": "b65050511788dfc5a92aafbb5656ae915f2cd697", "source": "propagate:src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c:func_80166F58", "verdict": "LEVER-FREE", "sites": [], "compiles": 1, "seconds": 0.656, "objects": ["build/src/ov_SC07_006/ov_SC07_006_jr_8015C32C.o"], "before_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern unsigned char D_801F50C0[];\n\n register int p2 __asm__(\"$20\"); /* $s4 */ // !FAKE: pin $20 \u2014 NEEDED DIFFERS (P36 rung B tus4)\n int p3; /* $s1 */\n register int t2 __asm__(\"$5\"); /* a1 */ // !FAKE: pin $5 \u2014 NEEDED DIFFERS (P36 rung B tus4)\n int t3; /* a2 */\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB \u2014 NEEDED DIFFERS; launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus4)\n t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB \u2014 NEEDED DIFFERS (P36 rung B tus4)\n eq = (p2 == p3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801F50C0[((short)param_4) * 0xc4], 0xc4);\n}\n", "after_text": "void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)\n{\n extern s32 D_8011D030;\n extern unsigned char D_801F50C0[];\n\n int t2;\n int t3;\n int p2;\n int p3;\n\n unsigned short *puVar1;\n short iVar2;\n int eq;\n\n iVar2 = 0;\n puVar1 = ((unsigned short *)&D_8011D030);\n t2 = (short)param_2;\n p2 = (short)t2;\n t3 = (short)param_3;\n p3 = (short)t3;\n eq = (t2 == t3);\n do {\n if ((puVar1 != ((unsigned short *)param_1)) &&\n ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&\n (!eq ||\n *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) {\n ((void(*)(unsigned short *))func_80146C3C)(puVar1);\n }\n iVar2 = iVar2 + 1;\n puVar1 = puVar1 + 0x2c;\n } while (iVar2 < 0x1e);\n ((void(*)(void *, int))func_80016714)(&D_801F50C0[((short)param_4) * 0xc4], 0xc4);\n}\n"}
|
||||
|
||||
@@ -7438,23 +7438,25 @@ extern void func_80146C3C(u8*);
|
||||
|
||||
void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)
|
||||
{
|
||||
|
||||
extern s32 D_8011D030;
|
||||
extern unsigned char D_80184418[];
|
||||
|
||||
register int p2 __asm__("$20"); /* $s4 */ // !FAKE: pin $20 — NEEDED DIFFERS (P36 rung B tus2)
|
||||
int p3; /* $s1 */
|
||||
register int t2 __asm__("$5"); /* a1 */ // !FAKE: pin $5 — NEEDED DIFFERS (P36 rung B tus2)
|
||||
int t3; /* a2 */
|
||||
int t2;
|
||||
int t3;
|
||||
int p2;
|
||||
int p3;
|
||||
|
||||
unsigned short *puVar1;
|
||||
short iVar2;
|
||||
int eq;
|
||||
|
||||
iVar2 = 0;
|
||||
puVar1 = ((unsigned short *)&D_8011D030);
|
||||
t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB — NEEDED DIFFERS; launder via SHB — NEEDED DIFFERS (P36 rung B tus2)
|
||||
t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB — NEEDED DIFFERS (P36 rung B tus2)
|
||||
eq = (p2 == p3);
|
||||
t2 = (short)param_2;
|
||||
p2 = (short)t2;
|
||||
t3 = (short)param_3;
|
||||
p3 = (short)t3;
|
||||
eq = (t2 == t3);
|
||||
do {
|
||||
if ((puVar1 != ((unsigned short *)param_1)) &&
|
||||
((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&
|
||||
|
||||
@@ -5339,21 +5339,25 @@ s32 func_80166994(param_1, param_2, param_3, param_4)
|
||||
|
||||
void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)
|
||||
{
|
||||
extern s32 D_8011D030;
|
||||
extern unsigned char D_801D97E8[];
|
||||
|
||||
register int p2 __asm__("$20"); /* $s4 */ // !FAKE: pin $20 — NEEDED DIFFERS (P36 rung B tus2)
|
||||
int p3; /* $s1 */
|
||||
register int t2 __asm__("$5"); /* a1 */ // !FAKE: pin $5 — NEEDED DIFFERS (P36 rung B tus2)
|
||||
int t3; /* a2 */
|
||||
int t2;
|
||||
int t3;
|
||||
int p2;
|
||||
int p3;
|
||||
|
||||
unsigned short *puVar1;
|
||||
short iVar2;
|
||||
int eq;
|
||||
|
||||
iVar2 = 0;
|
||||
puVar1 = ((unsigned short *)&D_8011D030);
|
||||
t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB — NEEDED DIFFERS; launder via SHB — NEEDED DIFFERS (P36 rung B tus2)
|
||||
t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB — NEEDED DIFFERS (P36 rung B tus2)
|
||||
eq = (p2 == p3);
|
||||
t2 = (short)param_2;
|
||||
p2 = (short)t2;
|
||||
t3 = (short)param_3;
|
||||
p3 = (short)t3;
|
||||
eq = (t2 == t3);
|
||||
do {
|
||||
if ((puVar1 != ((unsigned short *)param_1)) &&
|
||||
((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&
|
||||
|
||||
@@ -7497,23 +7497,25 @@ extern void func_80146C3C(u8*);
|
||||
|
||||
void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)
|
||||
{
|
||||
|
||||
extern s32 D_8011D030;
|
||||
extern unsigned char D_801C8710[];
|
||||
|
||||
register int p2 __asm__("$20"); /* $s4 */ // !FAKE: pin $20 — NEEDED DIFFERS (P36 rung B tus2)
|
||||
int p3; /* $s1 */
|
||||
register int t2 __asm__("$5"); /* a1 */ // !FAKE: pin $5 — NEEDED DIFFERS (P36 rung B tus2)
|
||||
int t3; /* a2 */
|
||||
int t2;
|
||||
int t3;
|
||||
int p2;
|
||||
int p3;
|
||||
|
||||
unsigned short *puVar1;
|
||||
short iVar2;
|
||||
int eq;
|
||||
|
||||
iVar2 = 0;
|
||||
puVar1 = ((unsigned short *)&D_8011D030);
|
||||
t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB — NEEDED DIFFERS; launder via SHB — NEEDED DIFFERS (P36 rung B tus2)
|
||||
t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB — NEEDED DIFFERS (P36 rung B tus2)
|
||||
eq = (p2 == p3);
|
||||
t2 = (short)param_2;
|
||||
p2 = (short)t2;
|
||||
t3 = (short)param_3;
|
||||
p3 = (short)t3;
|
||||
eq = (t2 == t3);
|
||||
do {
|
||||
if ((puVar1 != ((unsigned short *)param_1)) &&
|
||||
((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&
|
||||
|
||||
@@ -7472,23 +7472,25 @@ extern void func_80146C3C(u8*);
|
||||
|
||||
void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)
|
||||
{
|
||||
|
||||
extern s32 D_8011D030;
|
||||
extern unsigned char D_8019AA70[];
|
||||
|
||||
register int p2 __asm__("$20"); /* $s4 */ // !FAKE: pin $20 — NEEDED DIFFERS (P36 rung B tus3)
|
||||
int p3; /* $s1 */
|
||||
register int t2 __asm__("$5"); /* a1 */ // !FAKE: pin $5 — NEEDED DIFFERS (P36 rung B tus3)
|
||||
int t3; /* a2 */
|
||||
int t2;
|
||||
int t3;
|
||||
int p2;
|
||||
int p3;
|
||||
|
||||
unsigned short *puVar1;
|
||||
short iVar2;
|
||||
int eq;
|
||||
|
||||
iVar2 = 0;
|
||||
puVar1 = ((unsigned short *)&D_8011D030);
|
||||
t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB — NEEDED DIFFERS; launder via SHB — NEEDED DIFFERS (P36 rung B tus3)
|
||||
t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB — NEEDED DIFFERS (P36 rung B tus3)
|
||||
eq = (p2 == p3);
|
||||
t2 = (short)param_2;
|
||||
p2 = (short)t2;
|
||||
t3 = (short)param_3;
|
||||
p3 = (short)t3;
|
||||
eq = (t2 == t3);
|
||||
do {
|
||||
if ((puVar1 != ((unsigned short *)param_1)) &&
|
||||
((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&
|
||||
|
||||
@@ -6282,21 +6282,25 @@ extern void func_80146C3C(u8*);
|
||||
|
||||
void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)
|
||||
{
|
||||
extern s32 D_8011D030;
|
||||
extern unsigned char D_801F50C0[];
|
||||
|
||||
register int p2 __asm__("$20"); /* $s4 */ // !FAKE: pin $20 — NEEDED DIFFERS (P36 rung B tus4)
|
||||
int p3; /* $s1 */
|
||||
register int t2 __asm__("$5"); /* a1 */ // !FAKE: pin $5 — NEEDED DIFFERS (P36 rung B tus4)
|
||||
int t3; /* a2 */
|
||||
int t2;
|
||||
int t3;
|
||||
int p2;
|
||||
int p3;
|
||||
|
||||
unsigned short *puVar1;
|
||||
short iVar2;
|
||||
int eq;
|
||||
|
||||
iVar2 = 0;
|
||||
puVar1 = ((unsigned short *)&D_8011D030);
|
||||
t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB — NEEDED DIFFERS; launder via SHB — NEEDED DIFFERS (P36 rung B tus4)
|
||||
t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB — NEEDED DIFFERS (P36 rung B tus4)
|
||||
eq = (p2 == p3);
|
||||
t2 = (short)param_2;
|
||||
p2 = (short)t2;
|
||||
t3 = (short)param_3;
|
||||
p3 = (short)t3;
|
||||
eq = (t2 == t3);
|
||||
do {
|
||||
if ((puVar1 != ((unsigned short *)param_1)) &&
|
||||
((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&
|
||||
|
||||
@@ -6248,23 +6248,25 @@ extern void func_80146C3C(u8*);
|
||||
|
||||
void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)
|
||||
{
|
||||
|
||||
extern s32 D_8011D030;
|
||||
extern unsigned char D_801C6828[];
|
||||
|
||||
register int p2 __asm__("$20"); /* $s4 */ // !FAKE: pin $20 — NEEDED DIFFERS (P36 rung B tus4)
|
||||
int p3; /* $s1 */
|
||||
register int t2 __asm__("$5"); /* a1 */ // !FAKE: pin $5 — NEEDED DIFFERS (P36 rung B tus4)
|
||||
int t3; /* a2 */
|
||||
int t2;
|
||||
int t3;
|
||||
int p2;
|
||||
int p3;
|
||||
|
||||
unsigned short *puVar1;
|
||||
short iVar2;
|
||||
int eq;
|
||||
|
||||
iVar2 = 0;
|
||||
puVar1 = ((unsigned short *)&D_8011D030);
|
||||
t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB — NEEDED DIFFERS; launder via SHB — NEEDED DIFFERS (P36 rung B tus4)
|
||||
t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB — NEEDED DIFFERS (P36 rung B tus4)
|
||||
eq = (p2 == p3);
|
||||
t2 = (short)param_2;
|
||||
p2 = (short)t2;
|
||||
t3 = (short)param_3;
|
||||
p3 = (short)t3;
|
||||
eq = (t2 == t3);
|
||||
do {
|
||||
if ((puVar1 != ((unsigned short *)param_1)) &&
|
||||
((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&
|
||||
|
||||
@@ -5663,23 +5663,25 @@ extern void func_80146C3C(u8*);
|
||||
|
||||
void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)
|
||||
{
|
||||
|
||||
extern s32 D_8011D030;
|
||||
extern unsigned char D_801A6D20[];
|
||||
|
||||
register int p2 __asm__("$20"); /* $s4 */ // !FAKE: pin $20 — NEEDED DIFFERS (P36 rung B tus4)
|
||||
int p3; /* $s1 */
|
||||
register int t2 __asm__("$5"); /* a1 */ // !FAKE: pin $5 — NEEDED DIFFERS (P36 rung B tus4)
|
||||
int t3; /* a2 */
|
||||
int t2;
|
||||
int t3;
|
||||
int p2;
|
||||
int p3;
|
||||
|
||||
unsigned short *puVar1;
|
||||
short iVar2;
|
||||
int eq;
|
||||
|
||||
iVar2 = 0;
|
||||
puVar1 = ((unsigned short *)&D_8011D030);
|
||||
t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB — NEEDED DIFFERS; launder via SHB — NEEDED DIFFERS (P36 rung B tus4)
|
||||
t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB — NEEDED DIFFERS (P36 rung B tus4)
|
||||
eq = (p2 == p3);
|
||||
t2 = (short)param_2;
|
||||
p2 = (short)t2;
|
||||
t3 = (short)param_3;
|
||||
p3 = (short)t3;
|
||||
eq = (t2 == t3);
|
||||
do {
|
||||
if ((puVar1 != ((unsigned short *)param_1)) &&
|
||||
((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&
|
||||
|
||||
@@ -6249,23 +6249,25 @@ extern void func_80146C3C(u8*);
|
||||
|
||||
void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4)
|
||||
{
|
||||
|
||||
extern s32 D_8011D030;
|
||||
extern unsigned char D_8018F3B8[];
|
||||
|
||||
register int p2 __asm__("$20"); /* $s4 */ // !FAKE: pin $20 — NEEDED DIFFERS (P36 rung B tus4)
|
||||
int p3; /* $s1 */
|
||||
register int t2 __asm__("$5"); /* a1 */ // !FAKE: pin $5 — NEEDED DIFFERS (P36 rung B tus4)
|
||||
int t3; /* a2 */
|
||||
int t2;
|
||||
int t3;
|
||||
int p2;
|
||||
int p3;
|
||||
|
||||
unsigned short *puVar1;
|
||||
short iVar2;
|
||||
int eq;
|
||||
|
||||
iVar2 = 0;
|
||||
puVar1 = ((unsigned short *)&D_8011D030);
|
||||
t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); // !FAKE: launder via SHB — NEEDED DIFFERS; launder via SHB — NEEDED DIFFERS (P36 rung B tus4)
|
||||
t3 = ((short)param_3); SHB(t3); p3 = t3; // !FAKE: launder via SHB — NEEDED DIFFERS (P36 rung B tus4)
|
||||
eq = (p2 == p3);
|
||||
t2 = (short)param_2;
|
||||
p2 = (short)t2;
|
||||
t3 = (short)param_3;
|
||||
p3 = (short)t3;
|
||||
eq = (t2 == t3);
|
||||
do {
|
||||
if ((puVar1 != ((unsigned short *)param_1)) &&
|
||||
((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) &&
|
||||
|
||||
Reference in New Issue
Block a user