feat(phase-17): guided hand-matching demo — GO; 4/5 close-rate; loose-typing wall breakable

Pivot from the failed brute-force to the Ghidra-driven hand-match loop (Drew's steer).
DEMO sampled 5 residuals; 4 reached full whole-binary byte-matches:
- func_8012D3B4 (PERMUTER_CLASS) — closed + propagated x134 (DEFINE_func_8012D3B4)
- func_8012832C (STRUCTURAL_MISS switch) — closed
- func_8015F89C (fnptr-call, §15-S2) — closed
- func_80147B5C (pure struct) — closed (first try)
- func_8012A328 (STRUCTURAL_MISS) — 60/60 structure + correct regs, 1-instr gcc
  placement quirk (the §10 hard-tail minority; permuter floor-polluted)

KEY FINDING: the Phase-16 "loose-typing wall" is a signature-CONSISTENCY problem, not
fundamental — resolved by a 5-move playbook (return-widening void->s32; sign cast (u16);
arity cast — refines the §14e arity dead-end; param-canonical-matching; fn-ptr-table
typing), all byte-neutral.

- canonical-widenings (byte-neutral, fleet re-verified): engine_core.h RotTransPers +
  func_80029504 -> s32; ov_SC01_077.c func_801288B0/801289F0 -> s32
- docs/hand-matching-process.md (NEW): full replicable process + idioms + the §3a
  playbook + current banked state + automation roadmap (fresh-session-safe)
- fleet: make check-all 136/136 byte-identical (R22); 55.00% -> 55.04%; dedup-check 1409/0
- config/dedup.us.yaml: +1 group (func_8012D3B4, 134 members)
- CURRENT_PHASE.md progress log updated
This commit is contained in:
Drew T
2026-06-19 18:03:49 -06:00
parent fa925913e3
commit 19f005ea11
138 changed files with 486 additions and 141 deletions
+7
View File
@@ -9977,3 +9977,10 @@ groups:
func: DEFINE_func_8014E790
vram: 0x8014E790
binaries: [ov_SC01_077, ov_SC01_005, ov_SC01_006, ov_SC03_001, ov_SC01_000, ov_SC01_001, ov_SC02_000, ov_SC02_003, ov_SC03_002, ov_SC03_006, ov_SC04_000, ov_SC04_018, ov_SC04_019, ov_SC05_000, ov_SC06_000, ov_SC07_000, ov_SC01_004, ov_SC01_008, ov_SC01_009, ov_SC01_074, ov_SC01_080, ov_SC01_084, ov_SC02_004, ov_SC02_005, ov_SC02_011, ov_SC02_015, ov_SC02_016, ov_SC02_017, ov_SC02_021, ov_SC02_026, ov_SC02_027, ov_SC02_028, ov_SC02_031, ov_SC02_035, ov_SC02_039, ov_SC02_041, ov_SC03_003, ov_SC03_007, ov_SC03_010, ov_SC03_011, ov_SC03_012, ov_SC03_013, ov_SC03_014, ov_SC03_015, ov_SC03_023, ov_SC03_024, ov_SC03_028, ov_SC03_029, ov_SC03_030, ov_SC03_031, ov_SC03_089, ov_SC03_090, ov_SC03_091, ov_SC03_092, ov_SC03_093, ov_SC03_094, ov_SC03_095, ov_SC03_096, ov_SC03_097, ov_SC03_098, ov_SC03_099, ov_SC03_100, ov_SC03_101, ov_SC03_102, ov_SC03_103, ov_SC03_104, ov_SC03_105, ov_SC03_108, ov_SC03_109, ov_SC03_110, ov_SC03_111, ov_SC03_112, ov_SC03_113, ov_SC03_114, ov_SC03_115, ov_SC03_116, ov_SC03_117, ov_SC03_118, ov_SC03_119, ov_SC03_121, ov_SC03_124, ov_SC03_125, ov_SC03_126, ov_SC04_002, ov_SC04_003, ov_SC04_004, ov_SC04_005, ov_SC04_006, ov_SC04_007, ov_SC04_008, ov_SC04_009, ov_SC04_010, ov_SC04_011, ov_SC04_012, ov_SC04_015, ov_SC04_016, ov_SC04_020, ov_SC04_021, ov_SC05_001, ov_SC05_002, ov_SC05_003, ov_SC05_004, ov_SC05_005, ov_SC05_006, ov_SC05_007, ov_SC05_008, ov_SC05_009, ov_SC05_010, ov_SC05_011, ov_SC05_017, ov_SC05_018, ov_SC05_019, ov_SC06_006, ov_SC06_008, ov_SC06_010, ov_SC06_011, ov_SC06_013, ov_SC06_014, ov_SC06_015, ov_SC06_016, ov_SC06_018, ov_SC06_020, ov_SC06_022, ov_SC06_024, ov_SC06_025, ov_SC06_027, ov_SC06_029, ov_SC06_030, ov_SC06_032, ov_SC06_033, ov_SC07_001, ov_SC07_002, ov_SC07_008, ov_SC07_009]
- id: E_func_8012D3B4
tier: h_exact
hash: c56e1eba19b30da8f225c2a6029ea99c00ebd593
source: src/shared/engine_core.h
func: DEFINE_func_8012D3B4
vram: 0x8012D3B4
binaries: [ov_SC01_077, ov_SC01_005, ov_SC01_006, ov_SC03_001, ov_SC01_000, ov_SC01_001, ov_SC02_000, ov_SC02_003, ov_SC03_002, ov_SC03_006, ov_SC04_000, ov_SC04_018, ov_SC04_019, ov_SC05_000, ov_SC06_000, ov_SC07_000, ov_SC01_004, ov_SC01_008, ov_SC01_009, ov_SC01_074, ov_SC01_080, ov_SC01_084, ov_SC02_004, ov_SC02_005, ov_SC02_011, ov_SC02_015, ov_SC02_016, ov_SC02_017, ov_SC02_021, ov_SC02_026, ov_SC02_027, ov_SC02_028, ov_SC02_031, ov_SC02_035, ov_SC02_039, ov_SC02_041, ov_SC03_003, ov_SC03_007, ov_SC03_010, ov_SC03_011, ov_SC03_012, ov_SC03_013, ov_SC03_014, ov_SC03_015, ov_SC03_023, ov_SC03_024, ov_SC03_028, ov_SC03_029, ov_SC03_030, ov_SC03_031, ov_SC03_089, ov_SC03_090, ov_SC03_091, ov_SC03_092, ov_SC03_093, ov_SC03_094, ov_SC03_095, ov_SC03_096, ov_SC03_097, ov_SC03_098, ov_SC03_099, ov_SC03_100, ov_SC03_101, ov_SC03_102, ov_SC03_103, ov_SC03_104, ov_SC03_105, ov_SC03_108, ov_SC03_109, ov_SC03_110, ov_SC03_111, ov_SC03_112, ov_SC03_113, ov_SC03_114, ov_SC03_115, ov_SC03_116, ov_SC03_117, ov_SC03_118, ov_SC03_119, ov_SC03_121, ov_SC03_124, ov_SC03_125, ov_SC03_126, ov_SC04_002, ov_SC04_003, ov_SC04_004, ov_SC04_005, ov_SC04_006, ov_SC04_007, ov_SC04_008, ov_SC04_009, ov_SC04_010, ov_SC04_011, ov_SC04_012, ov_SC04_015, ov_SC04_016, ov_SC04_020, ov_SC04_021, ov_SC05_001, ov_SC05_002, ov_SC05_003, ov_SC05_004, ov_SC05_005, ov_SC05_006, ov_SC05_007, ov_SC05_008, ov_SC05_009, ov_SC05_010, ov_SC05_011, ov_SC05_017, ov_SC05_018, ov_SC05_019, ov_SC06_006, ov_SC06_008, ov_SC06_010, ov_SC06_011, ov_SC06_013, ov_SC06_014, ov_SC06_015, ov_SC06_016, ov_SC06_018, ov_SC06_020, ov_SC06_022, ov_SC06_024, ov_SC06_025, ov_SC06_027, ov_SC06_029, ov_SC06_030, ov_SC06_032, ov_SC06_033, ov_SC07_001, ov_SC07_002, ov_SC07_008, ov_SC07_009]
+206
View File
@@ -0,0 +1,206 @@
# Guided Hand-Matching — Process Guide & Phase-17 Findings
> **Created 2026-06-19 (Phase 17), mid-session, so the lessons survive a fresh session.**
> This is the replicable process for matching the struct-heavy shared-core residual by
> **Ghidra-driven hand-matching** — the approach that the Phase-17 demo proved works where the
> Phase-16 m2c+permuter brute-force topped out. Companion to `docs/matching-cookbook.md` (idiom
> catalog) and `docs/struct-core-pivot.md` (Phase-16 wall analysis). **Goal: make this so complete
> it can later be partly automated from the process itself.**
---
## 0. THE HEADLINE FINDING (go/no-go = GO)
**Phase 16 declared the loose-typing wall "fundamental / unfixable." This session disproves that for
the majority of functions.** The wall is really a **signature-CONSISTENCY problem**, and it dissolves
under **byte-neutral canonical-widening + the codebase's established cast idioms**.
**Demo close-rate: 4 of 5 sampled residuals reached a full whole-binary byte-match.**
| Function | m2c verdict | Result | Decisive fixes |
|---|---|---|---|
| `func_8012D3B4` | PERMUTER_CLASS (1-off) | ✅ CLOSED, **propagated ×134** | m2c ptr-vs-byte arithmetic; loose-typing: `RotTransPers` void→s32 widen + `(u16)D_800B9A02` cast |
| `func_8012832C` | STRUCTURAL_MISS (switch) | ✅ CLOSED (ov_SC01_077) | gcc reload s0-spill (restructure→rematerialize); branch polarity §T4; loose-typing: 3× void→s32 widen |
| `func_8015F89C` | MCOMPILE_fnptr-call | ✅ CLOSED (ov_SC01_077) | type the fn-ptr table (`void (*D_X[])(void*)`); arity conflict `func_80161208` via the **cast idiom** `((s32(*)(void*))f)(arg)`; canonical-sig-match the callees |
| `func_80147B5C` | STRUCTURAL_MISS (pure struct) | ✅ CLOSED (ov_SC01_077) | **canonical-sig-match the fn's own param** (`s32 a0` per canonical, cast to ptr in body); raw offset casts. *match_one MATCH first try.* |
| `func_8012A328` | STRUCTURAL_MISS (globals+call) | ⚠️ 60/60 structure + correct regs, **1 instr off** | gcc GCSE/reload placement quirk (per-block rematerialize vs hoist) — the §10 hard tail; permuter floor-polluted, can't help |
**Every function reached *isolated* correctness (match_one MATCH or 60/60).** What separated the
closes from the miss was the **whole-binary** step: the closes' blockers were *loose-typing /
signature-consistency conflicts* (deterministically fixable — see §3a), the miss's blocker a *gcc
placement quirk* (the genuine, minority hard tail). **The fnptr-call class (§15-S2, 85 fns) and the
pure-struct class are matchable; even the §14e "arity wall" is partly breakable via the cast idiom.**
---
## 1. THE LOOP (the replicable process)
For one residual function `func_<ADDR>` in the harvest source `ov_SC01_077`:
1. **Richest decompile — use BOTH:**
- **Ghidra whole-binary** `get_code(0x<ADDR>, decompiler)` — resolves locals vs **globals** vs
**callee identities** (whole-program view m2c lacks). The MCP server must serve the overlay
(`tools/ghidra_mcp_start.sh ov_SC01_077`, then `/mcp`, R29). get_code is async → poll
`get_task_status`.
- **m2c** `tools/m2c/m2c.py -t mipsel-gcc-c -f func_<ADDR> --context .run/actor_ctx2.c <s>` — a
per-function scaffold (decompile.py hardcodes the main-EXE path; call m2c directly for overlays).
- **The ASM is the final arbiter** for addressing + exact codegen (m2c and Ghidra often *disagree*
on local/global modeling — e.g. `func_8012A328`: m2c made `D_80126B58` a struct, Ghidra made the
same bytes separate globals; the asm's `lui $s1` reuse settled it).
2. **Hand-write correct C** — fix m2c's structural/arithmetic errors with Ghidra's structure + the
actor struct (`docs/actor-struct.md`) + the cookbook idioms (§below).
3. **Iterate isolated** with `tools/match_one.py func_<ADDR> --c <draft> --asm-subdir
asm/ov_SC01_077/nonmatchings/ov_SC01_077` (fast, relocation-masked; prints per-instruction diff).
Drive to `MATCH (N ins)`.
4. **Resolve loose-typing for the whole binary** (THE step Phase 16 missed):
- **Canonical-widening:** a callee declared `void` by a prior harvest (because *that* caller
ignored its `$v0` return) but *this* function uses the return → widen the canonical to `s32`.
**Byte-neutral** (a function with no explicit `return` compiles identically as `void` or `s32`).
Edit the single `extern void func_X` in `src/shared/engine_core.h` (or the inline def in the
overlay `.c`) to `extern s32 func_X`.
- **Cast idiom:** keep the canonical `s16`, write `(u16)D_X` at unsigned use-sites (the asm `lhu`).
This is the codebase's own established pattern (e.g. engine_core.h `(u16)D_800B9A02 * 20`).
- **Match existing canonical sigs** for every callee/global from `engine_core.h` (grep it) so the
one-big-TU `ov_SC01_077.c` has no conflicting declarations.
5. **Whole-binary gate (THE arbiter, G3/P9):** `tools/harvest_verify.py --binary ov_SC01_077 --src
src/ov_SC01_077/ov_SC01_077.c --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077 --out
build/ov_SC01_077/ov_SC01_077 --good-sha d19c9580a02dc63ba1f0e7e0c770f3b10de35635 --drafts <dir>`.
It substitutes the draft, builds the whole overlay, keeps it iff SHA == d19c9580 (else reverts).
**CRUX: match_one MATCH ≠ whole-binary match** — match_one masks `jal`/`%hi`/`%lo`, so it can't see
callee-signature conflicts. The build is the only truth.
6. **Propagate ×134:** `tools/dedup_propagate.py --addr 0x<ADDR> --source-overlay ov_SC01_077` (byte-
gates every overlay, fail-closed; authors a `DEFINE_func_<ADDR>` macro in engine_core.h, registers
the group in `config/dedup.us.yaml`). Then `make check-all` → 136/136 (R22).
To diagnose a whole-binary FAIL: substitute the draft into a `.c` copy, `make build BINARY=ov_SC01_077
2>&1 | grep -iE 'conflicting|redefin|error'`, read the conflict lines, fix the sig, revert.
---
## 2. IDIOMS & FIXES discovered this session (fold into cookbook §1/§2/§16)
- **m2c pointer-vs-byte arithmetic (HIGH-frequency m2c bug).** m2c writes `&D_X + (i * K)` using
`s32*` pointer arithmetic (scales ×4), where the target indexes by **bytes**. Tell: a shift off by
×4 (e.g. `sll v0,0x4` vs `sll v0,2`). Fix: `*(s32 *)((s8 *)&D_X + (i * K))`. (`func_8012D3B4`.)
- **Branch polarity (§T4 restated).** A lone `beqz↔bnez` flip with swapped successors = put the
target's **fall-through** block in the `if`, the branched-to block in the `else`. m2c's `== 0` form
was right; "improving" it to `!= 0` + swapped arms broke it. (`func_8012832C`.)
- **gcc reload rematerialization vs callee-saved spill.** A cheap constant (`v0 = 1`) held **live
across a call** makes gcc spill it to a callee-saved reg (`s0`, +frame). The original instead
**rematerializes** the constant at each exit. Fix: restructure so the constant is set in the
*else* / at the exits, not before the call (`if (cond && call()==0) v0=f(); else v0=1;`).
(`func_8012832C`.)
- **Cross-jump call structure.** To get a single shared `jal` with **per-branch arg setup**
(a0/a2 duplicated, only a1 differing), write the call **inside each branch**, converging via gotos
to a shared tail; gcc cross-jumps the identical `jal`+tail. One call site → gcc hoists (too few
ins); 4+ → gcc under-merges (too many); exactly the shared-block count matches. (`func_8012A328`.)
- **Dual base pointers.** A global loaded once into a callee-saved reg and reused at several offsets
(`lui $s1,D_X` then `lh 0xNN($s1)`) = model it as a pointer variable `u8 *p = D_X;` referenced
across the call. Two such bases → two callee-saved regs (s0/s1); their allocation order follows
first-use order. (`func_8012A328`.)
- **s32 vs s16 for sign-extended values passed to calls.** A value loaded `lh` (sign-extended to 32)
and passed to a function wants the local + the param typed `s32`, not `s16` — `s16` adds a
redundant `sll/sra` re-extension. (`func_8012A328`.)
- **THE HARD RESIDUAL (the §10 minority tail):** **per-block address rematerialization vs hoist.** The
original re-materializes a global's address (`lui+addiu` into a callee-saved reg) **per block**
while sharing the post-call store; gcc from clean C either hoists it once (1 ins short, store
merged) or makes the store per-block (over by N). The exact midpoint is a gcc GCSE/reload balance
not cleanly source-steerable, and the **permuter can't score it** (object score floor-polluted by
the masked global/call symbols, cookbook §10). 1 instruction, genuinely hard. (`func_8012A328` —
best draft `.run/demo/func_8012A328.c`, the `p+q` form 61 vs 60.)
---
## 3. LOOSE-TYPING CONFLICTS catalog (this session — all byte-neutral, fleet re-verified 136/136)
| Symbol | Was | Now | Where | Why |
|---|---|---|---|---|
| `RotTransPers` | `void` | `s32` | engine_core.h `DEFINE_func_8017C908` | func_8012D3B4 uses its return |
| `func_80029504` | `void` | `s32` | engine_core.h `DEFINE_func_80159120` | func_8012832C uses its return |
| `func_801288B0` | `void` | `s32` | ov_SC01_077.c inline def | func_8012832C uses its return |
| `func_801289F0` | `void` | `s32` | ov_SC01_077.c inline def | func_8012832C uses its return |
| `D_800B9A02` | `s16` (kept) | `(u16)` cast at use | func_8012D3B4 body | asm loads `lhu` |
| `func_80161208` | `s32 (void)` (kept) | cast at 1-arg call | func_8015F89C call | called 0-arg elsewhere, 1-arg (ptr) here |
| `func_801466F0` / `func_80147078` | — | match canonical sig in the draft | func_8015F89C decls | callee param types (s32/s32*/s16) |
| `func_80147B5C` (the fn itself) | `void(s32,void*)` canonical | declare param `s32`, cast in body | func_80147B5C def | callers pass the address as `s32` |
### §3a — THE SIGNATURE-CONSISTENCY RESOLUTION PLAYBOOK (the wall-breaker)
The Phase-16 "loose-typing wall" is really: *the same symbol is declared/used with different types
across the single overlay TU.* `match_one` (standalone) never sees it; the whole-binary build does.
**Five deterministic moves resolve almost all of it** (apply whichever the conflict needs):
1. **Return-widening (`void`→`s32`).** A callee declared `void` (a prior harvest ignored its `$v0`)
but THIS fn uses the return → widen its canonical to `s32`. **Byte-neutral** (no explicit `return`
⇒ identical epilogue). Edit the single `extern void func_X` in engine_core.h / the overlay def.
2. **Sign cast (`(u16)`/`(s16)`).** Keep the canonical (`s16`); write `(u16)D_X` where the asm loads
`lhu`. The codebase's own idiom.
3. **Arity cast** — *refines the §14e "arity wall = dead-end".* A callee called 0-arg by one fn and
N-arg by another: keep the canonical `(void)`, and at the N-arg site **cast** —
`((ret (*)(argtypes))func_X)(args)`. The codebase already does this (`((s32(*)(s32*))func_80161208)`).
Works when the extra args are **pointers** (no default promotion); narrow-scalar arity is still hard.
4. **Param-type canonical-matching.** Declare every callee (and the fn's OWN params) with the EXACT
canonical signature from engine_core.h (grep it), then cast inside the body. E.g. the canonical
`func_80147B5C(s32 a0, void *a1)` passes an address as `s32` → write `void func_80147B5C(s32 arg0,
void *arg1)` and access `*(s32 *)(arg0 + 0xNN)` (cast int→ptr, byte-neutral).
5. **Fn-ptr-table typing.** A `(*((idx*4)+D_x))(args)` call needs `D_x` typed as a function-pointer
array — `extern void (*D_x[])(argtypes);` (engine_core.h often already has it) → m2c/hand C compiles
and matches (`func_8015F89C`: `D_801891B8[arg0->f_0](arg0)`).
**Diagnosis loop:** `harvest_verify` FAIL → substitute into a `.c` copy → `make build BINARY=ov_SC01_077
2>&1 | grep -iE 'conflicting|redefin'` → each line names a symbol; `grep` its canonical in
engine_core.h → apply move 1–5 → revert the copy, re-gate. (Moves 1–4 are the bulk; func_8012D3B4 +
func_8012832C + func_8015F89C + func_80147B5C all closed this way.)
---
## 4. CURRENT STATE (what's banked / modified this session — do not redo)
- **BANKED matches (all in ov_SC01_077, byte-gated):** `func_8012D3B4` (propagated **×134** →
`DEFINE_func_8012D3B4` in engine_core.h + `config/dedup.us.yaml`, 134 members); `func_8012832C`,
`func_8015F89C`, `func_80147B5C` (inline in `ov_SC01_077.c`, not yet propagated — propagating
func_8012832C/8015F89C would cascade their callee widenings across overlays; func_8015F89C reach is
only ~3 anyway; func_80147B5C reaches 134). **5 sampled, 4 closed (80%).**
- **WIDENINGS in place (byte-neutral):** see §3 table.
- **NOT closed:** `func_8012A328` (60/60 structure + correct regs, 1-instr gcc quirk). Drafts +
variants in `.run/demo/` (`func_8012A328.c` = best `p+q`; `v_*.c` = the experiments). `func_801298F4`
also set aside (a walking-pointer codegen quirk — gcc strength-reduces `*q++` to indexed; the
original keeps the walk; structure-confirmed by m2c+Ghidra).
- **Fleet:** `make check-all` → **136/136 byte-identical**; `make report` → **55.04%** (was 55.00% at
this session's start, 54.48% at phase start); `dedup-check` 1409 validated / 0 failed.
- **Scratch:** all drafts under `.run/demo/`. Permuter setup at `.run/permuter/func_8012A328/` (base
score 1680, floor-polluted — abandoned).
---
## 5. TOWARD PROGRAMMATIC AUTOMATION (the end goal)
Steps ranked by how mechanizable they are:
1. **Canonical-widening — FULLY automatable.** Scan: for each function declared `void` whose body has
no explicit `return`, find any call site that *uses* its result (assigns/tests `$v0`) → widen its
canonical to `s32` everywhere (engine_core.h + overlay defs), gate the fleet byte-neutral. This is
the **first tool to build** (task 6). It dissolves the dominant blocker pre-harvest.
2. **The cast idiom — mechanical.** `(u16)`/`(s16)` at use-sites per the asm load (`lhu`/`lh`); a
draft-rewriter can apply it.
3. **m2c arithmetic/polarity fixes — partly mechanical.** The ptr-vs-byte ×4 tell and the branch-
polarity flip are detectable from the match_one diff; a "fix-suggester" could propose them.
4. **The gcc-quirk tail — NOT automatable cheaply.** Stays manual / permuter (when scorable) / honest
stub. It's a minority; don't let it block the bulk.
The dream: `gen_harvest_targets` (already callee-sig-aware) + an auto-widening pre-pass + m2c +
diff-driven fix-suggestions → a mostly-automatic loop, with the gcc-quirk tail flagged for humans.
---
## 6. PLAN FORWARD (Drew's sequence, 2026-06-19)
1. **Sample 1-2 more** (a struct-using STRUCTURAL_MISS + a fnptr-call) to firm the 2/3 rate.
2. **Prove the giant** `func_80144B9C` (770 ins, ×134, the Phase-15 prime target) end-to-end.
3. **Build the canonical-widening pass + harvest wave** (task 6) — operationalize §5.1.
4. **Document fully** (this file, expanded) + automate where possible (§5).
5. Then T7 go/no-go close + PhaseEnd.
+14
View File
@@ -191,3 +191,17 @@ types — 67% reach incl. the giants) → T6 (validate the 146 permuter candidat
winners don't transfer (isolated≠whole-binary TU; callee inlining). All 5 avenues now tested: T2=0,
T3=+0.52% (banked), T4/T5 byte-neutral, T6=0. **The harness ceiling did NOT rise to eureka.** NEXT: **T7 —
go/no-go (recommend NO-GO on the big unattended run) + PhaseEnd. Tier-1/Max — prompt Drew for /effort Max.**
- 2026-06-19 (session 2, Max): **DEMO DONE → GO on guided hand-matching.** Pivoted from brute-force to the
Ghidra-driven hand-match loop (Drew steered to Ghidra whole-binary for local/global). Sampled **5 residuals,
4 CLOSED (80%)**: **func_8012D3B4** (PERMUTER_CLASS, CLOSED + propagated **×134**); **func_8012832C**
(STRUCTURAL_MISS switch, CLOSED); **func_8015F89C** (fnptr-call §15-S2, CLOSED); **func_80147B5C**
(pure struct, CLOSED first-try); **func_8012A328** (STRUCTURAL_MISS globals+call) = 60/60 structure +
correct registers but **1-instr gcc placement quirk** (§10 hard tail; permuter floor-polluted — the only
miss). 🔑 **KEY FINDING: the Phase-16 "loose-typing wall" is NOT fundamental —
it's a signature-CONSISTENCY problem that dissolves via byte-neutral canonical-widening (void→s32 for
$v0-returning fns) + the (u16)/(s16) cast idiom.** 4 widenings this session, fleet re-verified **136/136
byte-identical** (R22); fleet **55.00%→55.04%**; dedup-check 1409/0. **Full process + idioms + current state +
automation notes captured durably in `docs/hand-matching-process.md`** (so a fresh session loses nothing).
Drew's plan (in order): **sample 1-2 more (struct-using + fnptr-call) → prove the giant func_80144B9C →
build the canonical-widening pass + harvest → document fully + automate.** Tasks 5/6/7 created. **NEXT:
sample 2 more, then the giant.** Effort: Max (hand-matching, Tier-1).
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_000/nonmatchings/ov_SC01_000", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004", func_8012D4B4);
+1 -1
View File
@@ -344,7 +344,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005", func_8012D4B4);
+1 -1
View File
@@ -344,7 +344,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074", func_8012D4B4);
+98 -6
View File
@@ -40,7 +40,51 @@ DEFINE_func_801282CC() /* dedup: shared engine-core @0x801282CC (src/shared) */
DEFINE_func_801282EC() /* dedup: shared engine-core @0x801282EC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_8012832C);
extern s16 currentLocationId;
extern s32 func_80029504(void);
extern s32 func_800CF854(s32);
extern s32 func_80128998(void);
extern s32 func_801289F0(void);
extern s32 func_801288E8(s32);
extern s32 func_80128940(s32);
extern s32 func_80029178(s32);
extern s32 func_801288B0(void);
extern void func_80011C10(void);
void func_8012832C(void) {
s32 a0 = func_80029504();
s32 v0;
switch (currentLocationId) {
case 0x300E:
if (func_800CF854(a0) == 0) {
v0 = func_80128998();
} else {
v0 = func_801289F0();
}
break;
case 0x30A0:
if (a0 < 0x640) {
v0 = func_801288E8(a0);
} else {
v0 = func_80128940(a0);
}
break;
case 0x3014:
if (a0 == 0x4B0 && (func_80029178(0x138) & 0xFF) == 0) {
v0 = func_801288B0();
} else {
v0 = 1;
}
break;
default:
func_80011C10();
return;
}
if (v0 != 0) {
func_80011C10();
}
}
DEFINE_func_80128420() /* dedup: shared engine-core @0x80128420 (src/shared) */
@@ -70,7 +114,7 @@ extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10);
extern s32 D_801D7F90;
extern u8 D_800AEFD0;
void func_801288B0(void) {
s32 func_801288B0(void) {
func_8001ABBC(0, 0, &D_800AEFD0, D_801D7F90, 0);
}
@@ -84,7 +128,7 @@ extern s32 D_801D7F90;
extern u8 D_800AECB8;
extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4);
void func_801289F0(void) {
s32 func_801289F0(void) {
func_8001ABBC(0, 0, &D_800AECB8, D_801D7F90, 0);
}
@@ -518,7 +562,8 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_8012D4B4);
@@ -1928,7 +1973,34 @@ DEFINE_func_80147AD4() /* dedup: shared engine-core @0x80147AD4 (src/shared) */
DEFINE_func_80147B18() /* dedup: shared engine-core @0x80147B18 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_80147B5C);
extern s32 D_80127090;
extern s32 D_80127094;
extern s32 D_80127098;
void func_80147B5C(s32 arg0, void *arg1) {
if (*(s32 *)(arg0 + 0x44) & 0x400000) {
D_80127090 = *(s32 *)(arg0 + 0x24);
} else {
D_80127090 = *(s32 *)arg1;
}
if (*(s32 *)(arg0 + 0x44) & 0x800000) {
D_80127094 = *(s32 *)(arg0 + 0x28);
} else {
D_80127094 = *(s32 *)((u8 *)arg1 + 0x4);
}
if (*(s32 *)(arg0 + 0x44) & 0x1000000) {
D_80127098 = *(s32 *)(arg0 + 0x2C);
} else {
D_80127098 = *(s32 *)((u8 *)arg1 + 0x8);
}
*(s32 *)(arg0 + 0x10) = D_80127090;
*(s32 *)(arg0 + 0x14) = D_80127094;
*(s32 *)(arg0 + 0x18) = D_80127098;
D_80127090 = 0;
D_80127094 = 0;
D_80127098 = 0;
}
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_80147C30);
@@ -3904,7 +3976,27 @@ DEFINE_func_8015F810() /* dedup: shared engine-core @0x8015F810 (src/shared) */
DEFINE_func_8015F848() /* dedup: shared engine-core @0x8015F848 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_8015F89C);
extern void (*D_801891B8[])(void *);
extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32);
extern void func_80147078(s32 *, s16);
extern void func_80159B70(void *);
extern s32 func_80161208(void);
void func_8015F89C(void *arg0) {
u16 flags = *(u16 *)((u8 *)arg0 + 0xB8);
if (!(flags & 0x4000)) {
if (flags & 0x8000) {
D_801891B8[*(u16 *)arg0](arg0);
func_80147078(arg0, 0);
func_80159B70(arg0);
return;
}
} else {
func_801466F0(1, arg0, 0, -0x1E, 0, 0, 0, 0);
}
((s32 (*)(void *))func_80161208)(arg0);
}
INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077", func_8015F948);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000", func_8012D4B4);
+1 -1
View File
@@ -343,7 +343,7 @@ DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */
DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001", func_8012D3B4);
DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */
INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001", func_8012D4B4);

Some files were not shown because too many files have changed in this diff Show More