diff --git a/docs/backlog.md b/docs/backlog.md index e8fd40b1f..b81ab646c 100644 --- a/docs/backlog.md +++ b/docs/backlog.md @@ -2,7 +2,7 @@ > Generated by `tools/backlog.py render` from `.run/backlog.jsonl`. These are functions the Phase-21 automation got **close** on but did NOT byte-match. The whole-binary byte-gate is the sole arbiter (G3/P9): **byte-matches bank and are NOT listed here** — only genuine near-misses/blockers are. Ranked by hand-session priority: **reach** (×N propagation leverage) → **closeness** (match_one mismatch count, lower = closer) → **size**. Each row's `best_draft` is the closest C the machine reached — resume from there. -**Open near-misses:** 867 · by status {'near': 805, 'matched': 1, 'failed': 61} · by class {'was 12 with a stop-searching verdict; now 2 (index-loop form + a1-spill + §148-C slider)': 1, 'cse1 elision-count: target has 16 combine-orphaned sign-ext slots, draft 12; permuter-confirmed floor from BOTH basins; §147-A/B/E refuted': 1, 'plumbing': 3, 'struct': 4, 'regalloc-order': 3, 'schedule': 2, 'loose-typing': 1, 'WAVE': 8, 'SOLVED: ghost wedge (cookbook §151) — r3000 blockage(load,store)=2 makes zero-wedge unreachable by source order': 1, None: 834, 'STRUCT': 9} +**Open near-misses:** 866 · by status {'near': 805, 'matched': 1, 'failed': 60} · by class {'was 12 with a stop-searching verdict; now 2 (index-loop form + a1-spill + §148-C slider)': 1, 'cse1 elision-count: target has 16 combine-orphaned sign-ext slots, draft 12; permuter-confirmed floor from BOTH basins; §147-A/B/E refuted': 1, 'plumbing': 3, 'struct': 4, 'regalloc-order': 3, 'schedule': 2, 'loose-typing': 1, 'WAVE': 8, 'SOLVED: ghost wedge (cookbook §151) — r3000 blockage(load,store)=2 makes zero-wedge unreachable by source order': 1, None: 833, 'STRUCT': 9} | # | addr | reach | class | nins | status | closeness | where it stuck | best draft | |--:|------|------:|-------|-----:|--------|----------:|----------------|------------| @@ -846,30 +846,29 @@ | 838 | func_800D1984 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_800D1984.c` | | 839 | func_800D24A0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_800D24A0.c` | | 840 | func_8013DD68 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8013DD68.c` | -| 841 | func_80132018 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80132018.c` | -| 842 | func_80181164 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181164.c` | -| 843 | func_8012D664 | None | schedule | None | failed | | none — MATCH | `.run/backlog_drafts/func_8012D664.c` | -| 844 | func_80136C90 | None | struct | None | failed | | none — MATCH (28 ins). 10-byte 1-aligned struct copy (S10{char s[10]}) from global D_801A5A7C into a stack buffer, then ((void(*)(int, void *, int, int, int, int))func_8001534C)(0,&buf,0x78,0x10,0,0). gcc emits the block move as 2 unaligned words (lwl/lwr+swl/swr) + 2 bytes (lb/sb). | `.run/backlog_drafts/func_80136C90.c` | -| 845 | func_80145CEC | None | struct | None | failed | | 2 residuals — (1) target RELOADS global ptr ((s32 *)&D_80126B78) before each of its 5 field accesses (f28/f18/f1a/f1c/f2c); gcc-2.7.2 CSEs the single pointer load in every clean-C form I tried (int-cast, (s8*)/(s32) M2C_FIELD, struct*), keeping ONE load. volatile forces reloads but hoists them + leaves delay-slot nops the target fills (target is NOT volatile). (2) frame 0x20 not 0x18: target reserves an unused 8-byte stack local @0x10 (address-taken local — reproduced, but every code-free escape optimizes away and a visible escape corrupts the ((int (*)(void))func_80145EE8)(0) arg). Structure/order/values/callees all match; only the alias-driven reload chain + the phantom frame local remain. Family exemplar (~130 overlays). | `.run/backlog_drafts/func_80145CEC.c` | -| 846 | func_8016BCC0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016BCC0.c` | -| 847 | func_8017DE58 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017DE58.c` | -| 848 | func_80181A70 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181A70.c` | -| 849 | func_8017E7B4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E7B4.c` | -| 850 | func_8012E778 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8012E778.c` | -| 851 | func_8013C360 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8013C360.c` | -| 852 | func_80146128 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80146128.c` | -| 853 | func_80146FC4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80146FC4.c` | -| 854 | func_80149954 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80149954.c` | -| 855 | func_8014CBE8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8014CBE8.c` | -| 856 | func_80153800 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80153800.c` | -| 857 | func_801539F8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801539F8.c` | -| 858 | func_8015B858 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8015B858.c` | -| 859 | func_80161124 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80161124.c` | -| 860 | func_801638A0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801638A0.c` | -| 861 | func_8016829C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016829C.c` | -| 862 | func_801684B4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801684B4.c` | -| 863 | func_8016A8FC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016A8FC.c` | -| 864 | func_8016D848 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016D848.c` | -| 865 | func_8016D984 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016D984.c` | -| 866 | func_8016E728 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016E728.c` | -| 867 | func_8017A4AC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017A4AC.c` | +| 841 | func_80181164 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181164.c` | +| 842 | func_8012D664 | None | schedule | None | failed | | none — MATCH | `.run/backlog_drafts/func_8012D664.c` | +| 843 | func_80136C90 | None | struct | None | failed | | none — MATCH (28 ins). 10-byte 1-aligned struct copy (S10{char s[10]}) from global D_801A5A7C into a stack buffer, then ((void(*)(int, void *, int, int, int, int))func_8001534C)(0,&buf,0x78,0x10,0,0). gcc emits the block move as 2 unaligned words (lwl/lwr+swl/swr) + 2 bytes (lb/sb). | `.run/backlog_drafts/func_80136C90.c` | +| 844 | func_80145CEC | None | struct | None | failed | | 2 residuals — (1) target RELOADS global ptr ((s32 *)&D_80126B78) before each of its 5 field accesses (f28/f18/f1a/f1c/f2c); gcc-2.7.2 CSEs the single pointer load in every clean-C form I tried (int-cast, (s8*)/(s32) M2C_FIELD, struct*), keeping ONE load. volatile forces reloads but hoists them + leaves delay-slot nops the target fills (target is NOT volatile). (2) frame 0x20 not 0x18: target reserves an unused 8-byte stack local @0x10 (address-taken local — reproduced, but every code-free escape optimizes away and a visible escape corrupts the ((int (*)(void))func_80145EE8)(0) arg). Structure/order/values/callees all match; only the alias-driven reload chain + the phantom frame local remain. Family exemplar (~130 overlays). | `.run/backlog_drafts/func_80145CEC.c` | +| 845 | func_8016BCC0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016BCC0.c` | +| 846 | func_8017DE58 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017DE58.c` | +| 847 | func_80181A70 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80181A70.c` | +| 848 | func_8017E7B4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017E7B4.c` | +| 849 | func_8012E778 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8012E778.c` | +| 850 | func_8013C360 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8013C360.c` | +| 851 | func_80146128 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80146128.c` | +| 852 | func_80146FC4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80146FC4.c` | +| 853 | func_80149954 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80149954.c` | +| 854 | func_8014CBE8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8014CBE8.c` | +| 855 | func_80153800 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80153800.c` | +| 856 | func_801539F8 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801539F8.c` | +| 857 | func_8015B858 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8015B858.c` | +| 858 | func_80161124 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_80161124.c` | +| 859 | func_801638A0 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801638A0.c` | +| 860 | func_8016829C | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016829C.c` | +| 861 | func_801684B4 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_801684B4.c` | +| 862 | func_8016A8FC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016A8FC.c` | +| 863 | func_8016D848 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016D848.c` | +| 864 | func_8016D984 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016D984.c` | +| 865 | func_8016E728 | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8016E728.c` | +| 866 | func_8017A4AC | None | | None | failed | | won't compile standalone (loose-typing / missing decl) | `.run/backlog_drafts/func_8017A4AC.c` | diff --git a/docs/family-hseq.md b/docs/family-hseq.md index a854610a3..6b3a02f9f 100644 --- a/docs/family-hseq.md +++ b/docs/family-hseq.md @@ -2,13 +2,13 @@ > Generated by `tools/family_hseq.py` from the 212 overlay sigs + per-overlay src stubs. Ranked by TEMPLATABLE byte-weight (PURE+IMM members × nins × 4). The byte-gate is the arbiter. > -> **Scope: the 212 OVERLAYS only** (no main, no resident) · generated at HEAD `commit:1543` · stub set derived from `corpus.stubs` — the same oracle `progress.py` counts, so same-tree overlay totals agree by construction; compare digests only at the same HEAD. +> **Scope: the 212 OVERLAYS only** (no main, no resident) · generated at HEAD `commit:1545` · stub set derived from `corpus.stubs` — the same oracle `progress.py` counts, so same-tree overlay totals agree by construction; compare digests only at the same HEAD. -**Fleet (overlays):** 96.0% fn / 94.4% instr / 88.4% distinct-code matched. Unmatched: 14,508 instances / 752,073 ins (12,306 distinct classes). +**Fleet (overlays):** 96.4% fn / 94.7% instr / 89.0% distinct-code matched. Unmatched: 13,086 instances / 710,836 ins (11,179 distinct classes). -**Tail cross-check (Phase-25 close):** 8,990 tail fns / 467,881 ins → 596 h_seq families ≥2, **146 substantial (nins≥80) / 93,128 ins**. +**Tail cross-check (Phase-25 close):** 8,391 tail fns / 453,625 ins → 528 h_seq families ≥2, **146 substantial (nins≥80) / 93,128 ins**. -**Full frontier (all unmatched by h_seq):** 2572 target families (≥2 members or a matched sibling) + 4513 singletons (Step-D residue). Substantial: **399 families / 193,468 templatable ins**, 86 with a matched sibling (zero-crack). Substantial member classes: 1,247 PURE · 33 IMM · 6 STRUCT-excluded. +**Full frontier (all unmatched by h_seq):** 2221 target families (≥2 members or a matched sibling) + 4513 singletons (Step-D residue). Substantial: **397 families / 192,231 templatable ins**, 84 with a matched sibling (zero-crack). Substantial member classes: 1,236 PURE · 33 IMM · 6 STRUCT-excluded. ## Top substantial families (by templatable byte-weight) @@ -42,10 +42,10 @@ | 25 | 251 | 5 (5/0/0) | 5/5 | cross-address | PURE | 1 | Y | 0x80180b04 matched | 1,255 | | 26 | 198 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | Y | 0x80185f58 modal | 1,188 | | 27 | 385 | 3 (3/0/0) | 3/3 | cross-address | PURE | 0 | Y | 0x8018ff98 modal | 1,155 | -| 28 | 102 | 11 (1/10/0) | 10/11 | scattered | IMM | 77 | · | 0x8017d290 matched | 1,122 | -| 29 | 185 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | Y | 0x80187aec modal | 1,110 | -| 30 | 218 | 5 (5/0/0) | 5/5 | cross-address | PURE | 0 | Y | 0x8017cf3c modal | 1,090 | -| 31 | 363 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8015444c matched-ov077 | 1,089 | +| 28 | 185 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | Y | 0x80187aec modal | 1,110 | +| 29 | 218 | 5 (5/0/0) | 5/5 | cross-address | PURE | 0 | Y | 0x8017cf3c modal | 1,090 | +| 30 | 363 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8015444c matched-ov077 | 1,089 | +| 31 | 102 | 10 (0/10/0) | 9/10 | scattered | IMM | 78 | · | 0x8017d290 matched | 1,020 | | 32 | 337 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x80159c84 matched-ov077 | 1,011 | | 33 | 329 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8013c414 matched-ov077 | 987 | | 34 | 324 | 3 (3/0/0) | 2/3 | cross-address | PURE | 0 | Y | 0x80183324 draft-ov077 | 972 | diff --git a/docs/progress.fleet.md b/docs/progress.fleet.md index d89c529e8..03bf543c4 100644 --- a/docs/progress.fleet.md +++ b/docs/progress.fleet.md @@ -4,16 +4,16 @@ # cross-binary collapsible-byte leverage: docs/duplicates.cross.md. # THREE progress metrics (all matter — see the labels): -FLEET fn-count byte-ident: 349252 / 363379 = 96.11% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) -FLEET instr-weighted : 12733946 / 13523856 = 94.2% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number) -FLEET distinct-code(uniq): 5137648 / 5851963 = 87.8% (79749/90928 unique fns; the DISTINCT-RE number) +FLEET fn-count byte-ident: 349400 / 363379 = 96.15% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) +FLEET instr-weighted : 12740815 / 13523856 = 94.2% (shipped .text across main + resident + 211 overlays; the decomp.dev-DISPLAY number) +FLEET distinct-code(uniq): 5143912 / 5851963 = 87.9% (79883/90928 unique fns; the DISTINCT-RE number) MAIN game-code weighted : 436 / 79510 = 0.5% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; LINKED-excluding Ghidra sig dated 2026-08-05; caveat is R34: no independent second oracle for a PS-X EXE, NOT drift) - (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 12733510 / 13444346 = 94.7%) + (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 12740379 / 13444346 = 94.8%) -FLEET REAL substantive : 347070 (of which dedup-shared 249221 via 1949 groups / 249295 instances) +FLEET REAL substantive : 347218 (of which dedup-shared 249221 via 1949 groups / 249295 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) -FLEET INCLUDE_ASM stubs : 14120 +FLEET INCLUDE_ASM stubs : 13972 FLEET matchable : 363379 | binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % | @@ -90,144 +90,144 @@ FLEET matchable : 363379 | md_SC05_029 | 11 | 0 | 0 | 15 | 31 | 48.4% | | md_SC07_003 | 12 | 0 | 0 | 12 | 100 | 12.0% | | md_SC07_004 | 40 | 0 | 0 | 40 | 315 | 12.7% | -| ov_MAIN_012 | 2152 | 1658 | 0 | 2231 | 2403 | 92.8% | +| ov_MAIN_012 | 2157 | 1658 | 0 | 2236 | 2403 | 93.1% | | ov_SC01_000 | 2389 | 1775 | 0 | 2389 | 2403 | 99.4% | -| ov_SC01_001 | 2396 | 1776 | 0 | 2398 | 2466 | 97.2% | -| ov_SC01_004 | 2393 | 1767 | 0 | 2394 | 2414 | 99.2% | -| ov_SC01_005 | 2425 | 1790 | 0 | 2425 | 2503 | 96.9% | -| ov_SC01_006 | 2425 | 1790 | 0 | 2425 | 2503 | 96.9% | -| ov_SC01_008 | 2393 | 1767 | 0 | 2395 | 2426 | 98.7% | -| ov_SC01_009 | 2420 | 1768 | 0 | 2421 | 2507 | 96.6% | -| ov_SC01_074 | 2395 | 1768 | 0 | 2397 | 2425 | 98.8% | +| ov_SC01_001 | 2397 | 1776 | 0 | 2399 | 2466 | 97.3% | +| ov_SC01_004 | 2394 | 1767 | 0 | 2395 | 2414 | 99.2% | +| ov_SC01_005 | 2426 | 1790 | 0 | 2426 | 2503 | 96.9% | +| ov_SC01_006 | 2426 | 1790 | 0 | 2426 | 2503 | 96.9% | +| ov_SC01_008 | 2394 | 1767 | 0 | 2396 | 2426 | 98.8% | +| ov_SC01_009 | 2421 | 1768 | 0 | 2422 | 2507 | 96.6% | +| ov_SC01_074 | 2396 | 1768 | 0 | 2398 | 2425 | 98.9% | | ov_SC01_077 | 2561 | 1733 | 0 | 2563 | 2586 | 99.1% | -| ov_SC01_080 | 2424 | 1771 | 0 | 2424 | 2512 | 96.5% | -| ov_SC01_084 | 2448 | 1776 | 0 | 2453 | 2579 | 95.1% | -| ov_SC02_000 | 2520 | 1815 | 0 | 2520 | 2683 | 93.9% | -| ov_SC02_003 | 2520 | 1815 | 0 | 2520 | 2683 | 93.9% | -| ov_SC02_004 | 2389 | 1771 | 0 | 2389 | 2401 | 99.5% | -| ov_SC02_005 | 2539 | 1767 | 0 | 2549 | 2927 | 87.1% | -| ov_SC02_011 | 2626 | 1774 | 0 | 2637 | 2893 | 91.2% | -| ov_SC02_015 | 2399 | 1773 | 0 | 2399 | 2414 | 99.4% | -| ov_SC02_016 | 2482 | 1774 | 0 | 2485 | 2545 | 97.6% | -| ov_SC02_017 | 2551 | 1774 | 0 | 2559 | 2732 | 93.7% | -| ov_SC02_021 | 2404 | 1773 | 0 | 2404 | 2437 | 98.6% | -| ov_SC02_026 | 2502 | 1771 | 0 | 2508 | 2572 | 97.5% | -| ov_SC02_027 | 2558 | 1776 | 0 | 2567 | 2692 | 95.4% | -| ov_SC02_028 | 2563 | 1776 | 0 | 2573 | 2701 | 95.3% | -| ov_SC02_031 | 2493 | 1772 | 0 | 2498 | 2562 | 97.5% | -| ov_SC02_035 | 2487 | 1771 | 0 | 2490 | 2520 | 98.8% | -| ov_SC02_037 | 2265 | 1658 | 0 | 2347 | 2516 | 93.3% | -| ov_SC02_039 | 2394 | 1771 | 0 | 2394 | 2416 | 99.1% | -| ov_SC02_041 | 2475 | 1771 | 0 | 2478 | 2561 | 96.8% | -| ov_SC03_001 | 2670 | 1772 | 0 | 2687 | 2869 | 93.7% | -| ov_SC03_002 | 2542 | 1776 | 0 | 2557 | 2631 | 97.2% | -| ov_SC03_003 | 2398 | 1771 | 0 | 2399 | 2423 | 99.0% | -| ov_SC03_006 | 2554 | 1778 | 0 | 2563 | 2767 | 92.6% | -| ov_SC03_007 | 2462 | 1771 | 0 | 2466 | 2623 | 94.0% | -| ov_SC03_010 | 2415 | 1771 | 0 | 2415 | 2471 | 97.7% | -| ov_SC03_011 | 2416 | 1771 | 0 | 2422 | 2527 | 95.8% | -| ov_SC03_012 | 2388 | 1771 | 0 | 2389 | 2406 | 99.3% | -| ov_SC03_013 | 2421 | 1771 | 0 | 2421 | 2493 | 97.1% | -| ov_SC03_014 | 2573 | 1802 | 0 | 2573 | 2685 | 95.8% | -| ov_SC03_015 | 2572 | 1802 | 0 | 2572 | 2685 | 95.8% | -| ov_SC03_023 | 2400 | 1771 | 0 | 2401 | 2435 | 98.6% | -| ov_SC03_024 | 2516 | 1776 | 0 | 2523 | 2641 | 95.5% | -| ov_SC03_028 | 2462 | 1772 | 0 | 2466 | 2664 | 92.6% | -| ov_SC03_029 | 2499 | 1774 | 0 | 2509 | 2644 | 94.9% | -| ov_SC03_030 | 2418 | 1776 | 0 | 2420 | 2495 | 97.0% | -| ov_SC03_031 | 2446 | 1771 | 0 | 2449 | 2514 | 97.4% | -| ov_SC03_089 | 2512 | 1776 | 0 | 2519 | 2581 | 97.6% | -| ov_SC03_090 | 2527 | 1776 | 0 | 2535 | 2625 | 96.6% | -| ov_SC03_091 | 2541 | 1776 | 0 | 2549 | 2640 | 96.6% | -| ov_SC03_092 | 2507 | 1776 | 0 | 2519 | 2588 | 97.3% | -| ov_SC03_093 | 2515 | 1776 | 0 | 2519 | 2563 | 98.3% | -| ov_SC03_094 | 2504 | 1771 | 0 | 2510 | 2577 | 97.4% | -| ov_SC03_095 | 2431 | 1771 | 0 | 2434 | 2474 | 98.4% | -| ov_SC03_096 | 2428 | 1771 | 0 | 2431 | 2465 | 98.6% | -| ov_SC03_097 | 2525 | 1776 | 0 | 2532 | 2603 | 97.3% | -| ov_SC03_098 | 2509 | 1776 | 0 | 2512 | 2541 | 98.9% | -| ov_SC03_099 | 2485 | 1771 | 0 | 2488 | 2504 | 99.4% | -| ov_SC03_100 | 2520 | 1776 | 0 | 2524 | 2539 | 99.4% | -| ov_SC03_101 | 2483 | 1776 | 0 | 2487 | 2528 | 98.4% | -| ov_SC03_102 | 2469 | 1771 | 0 | 2472 | 2492 | 99.2% | -| ov_SC03_103 | 2493 | 1773 | 0 | 2496 | 2510 | 99.4% | -| ov_SC03_104 | 2541 | 1776 | 0 | 2548 | 2616 | 97.4% | -| ov_SC03_105 | 2448 | 1772 | 0 | 2455 | 2597 | 94.5% | -| ov_SC03_107 | 2190 | 1658 | 0 | 2273 | 2497 | 91.0% | -| ov_SC03_108 | 2399 | 1771 | 0 | 2399 | 2443 | 98.2% | -| ov_SC03_109 | 2407 | 1771 | 0 | 2409 | 2424 | 99.4% | -| ov_SC03_110 | 2440 | 1778 | 0 | 2440 | 2468 | 98.9% | -| ov_SC03_111 | 2471 | 1771 | 0 | 2474 | 2510 | 98.6% | -| ov_SC03_112 | 2437 | 1773 | 0 | 2439 | 2526 | 96.6% | -| ov_SC03_113 | 2434 | 1773 | 0 | 2437 | 2468 | 98.7% | -| ov_SC03_114 | 2389 | 1771 | 0 | 2391 | 2415 | 99.0% | -| ov_SC03_115 | 2431 | 1771 | 0 | 2433 | 2472 | 98.4% | -| ov_SC03_116 | 2399 | 1771 | 0 | 2402 | 2438 | 98.5% | -| ov_SC03_117 | 2467 | 1771 | 0 | 2473 | 2557 | 96.7% | -| ov_SC03_118 | 2542 | 1796 | 0 | 2543 | 2685 | 94.7% | -| ov_SC03_119 | 2539 | 1796 | 0 | 2540 | 2685 | 94.6% | -| ov_SC03_121 | 2402 | 1771 | 0 | 2405 | 2459 | 97.8% | -| ov_SC03_124 | 2578 | 1767 | 0 | 2598 | 2741 | 94.8% | -| ov_SC03_125 | 2528 | 1771 | 0 | 2540 | 2588 | 98.1% | -| ov_SC03_126 | 2399 | 1773 | 0 | 2399 | 2423 | 99.0% | -| ov_SC04_000 | 2473 | 1775 | 0 | 2482 | 2546 | 97.5% | -| ov_SC04_002 | 2503 | 1771 | 0 | 2507 | 2636 | 95.1% | -| ov_SC04_003 | 2438 | 1771 | 0 | 2442 | 2502 | 97.6% | -| ov_SC04_004 | 2469 | 1771 | 0 | 2471 | 2558 | 96.6% | -| ov_SC04_005 | 2499 | 1771 | 0 | 2505 | 2612 | 95.9% | -| ov_SC04_006 | 2429 | 1771 | 0 | 2431 | 2454 | 99.1% | -| ov_SC04_007 | 2493 | 1771 | 0 | 2497 | 2569 | 97.2% | -| ov_SC04_008 | 2399 | 1771 | 0 | 2399 | 2415 | 99.3% | -| ov_SC04_009 | 2426 | 1771 | 0 | 2429 | 2441 | 99.5% | -| ov_SC04_010 | 2401 | 1771 | 0 | 2402 | 2419 | 99.3% | -| ov_SC04_011 | 2515 | 1776 | 0 | 2521 | 2803 | 89.9% | -| ov_SC04_012 | 2396 | 1771 | 0 | 2397 | 2420 | 99.0% | -| ov_SC04_015 | 2533 | 1772 | 0 | 2544 | 2611 | 97.4% | -| ov_SC04_016 | 2400 | 1771 | 0 | 2402 | 2440 | 98.4% | -| ov_SC04_018 | 2674 | 1808 | 0 | 2674 | 2857 | 93.6% | -| ov_SC04_019 | 2672 | 1808 | 0 | 2672 | 2857 | 93.5% | -| ov_SC04_020 | 2514 | 1771 | 0 | 2526 | 2567 | 98.4% | -| ov_SC04_021 | 2399 | 1773 | 0 | 2399 | 2423 | 99.0% | -| ov_SC05_000 | 2405 | 1775 | 0 | 2408 | 2422 | 99.4% | -| ov_SC05_001 | 2478 | 1772 | 0 | 2483 | 2574 | 96.5% | -| ov_SC05_002 | 2429 | 1771 | 0 | 2432 | 2442 | 99.6% | -| ov_SC05_003 | 2412 | 1771 | 0 | 2413 | 2481 | 97.3% | -| ov_SC05_004 | 2422 | 1771 | 0 | 2424 | 2464 | 98.4% | -| ov_SC05_005 | 2437 | 1777 | 0 | 2438 | 2491 | 97.9% | -| ov_SC05_006 | 2421 | 1772 | 0 | 2421 | 2430 | 99.6% | -| ov_SC05_007 | 2431 | 1771 | 0 | 2436 | 2482 | 98.1% | -| ov_SC05_008 | 2441 | 1771 | 0 | 2443 | 2543 | 96.1% | -| ov_SC05_009 | 2408 | 1771 | 0 | 2412 | 2438 | 98.9% | -| ov_SC05_010 | 2448 | 1772 | 0 | 2452 | 2588 | 94.7% | -| ov_SC05_011 | 2395 | 1771 | 0 | 2396 | 2409 | 99.5% | -| ov_SC05_017 | 2649 | 1768 | 0 | 2660 | 2842 | 93.6% | -| ov_SC05_018 | 2546 | 1771 | 0 | 2559 | 2673 | 95.7% | -| ov_SC05_019 | 2399 | 1773 | 0 | 2399 | 2423 | 99.0% | -| ov_SC06_000 | 2528 | 1780 | 0 | 2531 | 2691 | 94.1% | -| ov_SC06_006 | 2422 | 1771 | 0 | 2423 | 2511 | 96.5% | -| ov_SC06_008 | 2487 | 1773 | 0 | 2493 | 2542 | 98.1% | -| ov_SC06_010 | 2459 | 1771 | 0 | 2464 | 2517 | 97.9% | -| ov_SC06_011 | 2414 | 1771 | 0 | 2418 | 2468 | 98.0% | -| ov_SC06_013 | 2404 | 1771 | 0 | 2405 | 2425 | 99.2% | -| ov_SC06_014 | 2415 | 1771 | 0 | 2417 | 2453 | 98.5% | -| ov_SC06_015 | 2409 | 1771 | 0 | 2409 | 2421 | 99.5% | -| ov_SC06_016 | 2451 | 1772 | 0 | 2453 | 2549 | 96.2% | -| ov_SC06_018 | 2499 | 1773 | 0 | 2506 | 2665 | 94.0% | -| ov_SC06_020 | 2445 | 1773 | 0 | 2446 | 2518 | 97.1% | -| ov_SC06_022 | 2480 | 1771 | 0 | 2488 | 2642 | 94.2% | -| ov_SC06_024 | 2500 | 1771 | 0 | 2506 | 2667 | 94.0% | -| ov_SC06_025 | 2451 | 1771 | 0 | 2456 | 2572 | 95.5% | -| ov_SC06_027 | 2390 | 1771 | 0 | 2391 | 2408 | 99.3% | -| ov_SC06_029 | 2477 | 1772 | 0 | 2489 | 2662 | 93.5% | -| ov_SC06_030 | 2412 | 1772 | 0 | 2412 | 2456 | 98.2% | -| ov_SC06_032 | 2487 | 1772 | 0 | 2494 | 2658 | 93.8% | -| ov_SC06_033 | 2488 | 1772 | 0 | 2495 | 2631 | 94.8% | -| ov_SC07_000 | 2432 | 1775 | 0 | 2434 | 2521 | 96.5% | -| ov_SC07_001 | 2403 | 1771 | 0 | 2405 | 2454 | 98.0% | -| ov_SC07_002 | 2459 | 1772 | 0 | 2463 | 2579 | 95.5% | +| ov_SC01_080 | 2425 | 1771 | 0 | 2425 | 2512 | 96.5% | +| ov_SC01_084 | 2449 | 1776 | 0 | 2454 | 2579 | 95.2% | +| ov_SC02_000 | 2521 | 1815 | 0 | 2521 | 2683 | 94.0% | +| ov_SC02_003 | 2521 | 1815 | 0 | 2521 | 2683 | 94.0% | +| ov_SC02_004 | 2390 | 1771 | 0 | 2390 | 2401 | 99.5% | +| ov_SC02_005 | 2540 | 1767 | 0 | 2550 | 2927 | 87.1% | +| ov_SC02_011 | 2627 | 1774 | 0 | 2638 | 2893 | 91.2% | +| ov_SC02_015 | 2400 | 1773 | 0 | 2400 | 2414 | 99.4% | +| ov_SC02_016 | 2483 | 1774 | 0 | 2486 | 2545 | 97.7% | +| ov_SC02_017 | 2552 | 1774 | 0 | 2560 | 2732 | 93.7% | +| ov_SC02_021 | 2405 | 1773 | 0 | 2405 | 2437 | 98.7% | +| ov_SC02_026 | 2503 | 1771 | 0 | 2509 | 2572 | 97.6% | +| ov_SC02_027 | 2559 | 1776 | 0 | 2568 | 2692 | 95.4% | +| ov_SC02_028 | 2564 | 1776 | 0 | 2574 | 2701 | 95.3% | +| ov_SC02_031 | 2494 | 1772 | 0 | 2499 | 2562 | 97.5% | +| ov_SC02_035 | 2489 | 1771 | 0 | 2492 | 2520 | 98.9% | +| ov_SC02_037 | 2270 | 1658 | 0 | 2352 | 2516 | 93.5% | +| ov_SC02_039 | 2395 | 1771 | 0 | 2395 | 2416 | 99.1% | +| ov_SC02_041 | 2476 | 1771 | 0 | 2479 | 2561 | 96.8% | +| ov_SC03_001 | 2671 | 1772 | 0 | 2688 | 2869 | 93.7% | +| ov_SC03_002 | 2543 | 1776 | 0 | 2558 | 2631 | 97.2% | +| ov_SC03_003 | 2399 | 1771 | 0 | 2400 | 2423 | 99.1% | +| ov_SC03_006 | 2555 | 1778 | 0 | 2564 | 2767 | 92.7% | +| ov_SC03_007 | 2463 | 1771 | 0 | 2467 | 2623 | 94.1% | +| ov_SC03_010 | 2416 | 1771 | 0 | 2416 | 2471 | 97.8% | +| ov_SC03_011 | 2417 | 1771 | 0 | 2423 | 2527 | 95.9% | +| ov_SC03_012 | 2389 | 1771 | 0 | 2390 | 2406 | 99.3% | +| ov_SC03_013 | 2422 | 1771 | 0 | 2422 | 2493 | 97.2% | +| ov_SC03_014 | 2574 | 1802 | 0 | 2574 | 2685 | 95.9% | +| ov_SC03_015 | 2573 | 1802 | 0 | 2573 | 2685 | 95.8% | +| ov_SC03_023 | 2401 | 1771 | 0 | 2402 | 2435 | 98.6% | +| ov_SC03_024 | 2517 | 1776 | 0 | 2524 | 2641 | 95.6% | +| ov_SC03_028 | 2463 | 1772 | 0 | 2467 | 2664 | 92.6% | +| ov_SC03_029 | 2500 | 1774 | 0 | 2510 | 2644 | 94.9% | +| ov_SC03_030 | 2419 | 1776 | 0 | 2421 | 2495 | 97.0% | +| ov_SC03_031 | 2447 | 1771 | 0 | 2450 | 2514 | 97.5% | +| ov_SC03_089 | 2513 | 1776 | 0 | 2520 | 2581 | 97.6% | +| ov_SC03_090 | 2528 | 1776 | 0 | 2536 | 2625 | 96.6% | +| ov_SC03_091 | 2542 | 1776 | 0 | 2550 | 2640 | 96.6% | +| ov_SC03_092 | 2508 | 1776 | 0 | 2520 | 2588 | 97.4% | +| ov_SC03_093 | 2516 | 1776 | 0 | 2520 | 2563 | 98.3% | +| ov_SC03_094 | 2505 | 1771 | 0 | 2511 | 2577 | 97.4% | +| ov_SC03_095 | 2432 | 1771 | 0 | 2435 | 2474 | 98.4% | +| ov_SC03_096 | 2429 | 1771 | 0 | 2432 | 2465 | 98.7% | +| ov_SC03_097 | 2526 | 1776 | 0 | 2533 | 2603 | 97.3% | +| ov_SC03_098 | 2510 | 1776 | 0 | 2513 | 2541 | 98.9% | +| ov_SC03_099 | 2486 | 1771 | 0 | 2489 | 2504 | 99.4% | +| ov_SC03_100 | 2521 | 1776 | 0 | 2525 | 2539 | 99.4% | +| ov_SC03_101 | 2484 | 1776 | 0 | 2488 | 2528 | 98.4% | +| ov_SC03_102 | 2470 | 1771 | 0 | 2473 | 2492 | 99.2% | +| ov_SC03_103 | 2494 | 1773 | 0 | 2497 | 2510 | 99.5% | +| ov_SC03_104 | 2542 | 1776 | 0 | 2549 | 2616 | 97.4% | +| ov_SC03_105 | 2449 | 1772 | 0 | 2456 | 2597 | 94.6% | +| ov_SC03_107 | 2195 | 1658 | 0 | 2278 | 2497 | 91.2% | +| ov_SC03_108 | 2400 | 1771 | 0 | 2400 | 2443 | 98.2% | +| ov_SC03_109 | 2408 | 1771 | 0 | 2410 | 2424 | 99.4% | +| ov_SC03_110 | 2441 | 1778 | 0 | 2441 | 2468 | 98.9% | +| ov_SC03_111 | 2472 | 1771 | 0 | 2475 | 2510 | 98.6% | +| ov_SC03_112 | 2438 | 1773 | 0 | 2440 | 2526 | 96.6% | +| ov_SC03_113 | 2435 | 1773 | 0 | 2438 | 2468 | 98.8% | +| ov_SC03_114 | 2390 | 1771 | 0 | 2392 | 2415 | 99.0% | +| ov_SC03_115 | 2432 | 1771 | 0 | 2434 | 2472 | 98.5% | +| ov_SC03_116 | 2400 | 1771 | 0 | 2403 | 2438 | 98.6% | +| ov_SC03_117 | 2468 | 1771 | 0 | 2474 | 2557 | 96.8% | +| ov_SC03_118 | 2543 | 1796 | 0 | 2544 | 2685 | 94.7% | +| ov_SC03_119 | 2540 | 1796 | 0 | 2541 | 2685 | 94.6% | +| ov_SC03_121 | 2403 | 1771 | 0 | 2406 | 2459 | 97.8% | +| ov_SC03_124 | 2579 | 1767 | 0 | 2599 | 2741 | 94.8% | +| ov_SC03_125 | 2529 | 1771 | 0 | 2541 | 2588 | 98.2% | +| ov_SC03_126 | 2400 | 1773 | 0 | 2400 | 2423 | 99.1% | +| ov_SC04_000 | 2474 | 1775 | 0 | 2483 | 2546 | 97.5% | +| ov_SC04_002 | 2504 | 1771 | 0 | 2508 | 2636 | 95.1% | +| ov_SC04_003 | 2439 | 1771 | 0 | 2443 | 2502 | 97.6% | +| ov_SC04_004 | 2470 | 1771 | 0 | 2472 | 2558 | 96.6% | +| ov_SC04_005 | 2500 | 1771 | 0 | 2506 | 2612 | 95.9% | +| ov_SC04_006 | 2430 | 1771 | 0 | 2432 | 2454 | 99.1% | +| ov_SC04_007 | 2494 | 1771 | 0 | 2498 | 2569 | 97.2% | +| ov_SC04_008 | 2400 | 1771 | 0 | 2400 | 2415 | 99.4% | +| ov_SC04_009 | 2427 | 1771 | 0 | 2430 | 2441 | 99.5% | +| ov_SC04_010 | 2402 | 1771 | 0 | 2403 | 2419 | 99.3% | +| ov_SC04_011 | 2516 | 1776 | 0 | 2522 | 2803 | 90.0% | +| ov_SC04_012 | 2397 | 1771 | 0 | 2398 | 2420 | 99.1% | +| ov_SC04_015 | 2534 | 1772 | 0 | 2545 | 2611 | 97.5% | +| ov_SC04_016 | 2401 | 1771 | 0 | 2403 | 2440 | 98.5% | +| ov_SC04_018 | 2675 | 1808 | 0 | 2675 | 2857 | 93.6% | +| ov_SC04_019 | 2673 | 1808 | 0 | 2673 | 2857 | 93.6% | +| ov_SC04_020 | 2515 | 1771 | 0 | 2527 | 2567 | 98.4% | +| ov_SC04_021 | 2400 | 1773 | 0 | 2400 | 2423 | 99.1% | +| ov_SC05_000 | 2406 | 1775 | 0 | 2409 | 2422 | 99.5% | +| ov_SC05_001 | 2479 | 1772 | 0 | 2484 | 2574 | 96.5% | +| ov_SC05_002 | 2430 | 1771 | 0 | 2433 | 2442 | 99.6% | +| ov_SC05_003 | 2413 | 1771 | 0 | 2414 | 2481 | 97.3% | +| ov_SC05_004 | 2423 | 1771 | 0 | 2425 | 2464 | 98.4% | +| ov_SC05_005 | 2438 | 1777 | 0 | 2439 | 2491 | 97.9% | +| ov_SC05_006 | 2422 | 1772 | 0 | 2422 | 2430 | 99.7% | +| ov_SC05_007 | 2432 | 1771 | 0 | 2437 | 2482 | 98.2% | +| ov_SC05_008 | 2442 | 1771 | 0 | 2444 | 2543 | 96.1% | +| ov_SC05_009 | 2409 | 1771 | 0 | 2413 | 2438 | 99.0% | +| ov_SC05_010 | 2449 | 1772 | 0 | 2453 | 2588 | 94.8% | +| ov_SC05_011 | 2396 | 1771 | 0 | 2397 | 2409 | 99.5% | +| ov_SC05_017 | 2650 | 1768 | 0 | 2661 | 2842 | 93.6% | +| ov_SC05_018 | 2547 | 1771 | 0 | 2560 | 2673 | 95.8% | +| ov_SC05_019 | 2400 | 1773 | 0 | 2400 | 2423 | 99.1% | +| ov_SC06_000 | 2529 | 1780 | 0 | 2532 | 2691 | 94.1% | +| ov_SC06_006 | 2423 | 1771 | 0 | 2424 | 2511 | 96.5% | +| ov_SC06_008 | 2488 | 1773 | 0 | 2494 | 2542 | 98.1% | +| ov_SC06_010 | 2460 | 1771 | 0 | 2465 | 2517 | 97.9% | +| ov_SC06_011 | 2415 | 1771 | 0 | 2419 | 2468 | 98.0% | +| ov_SC06_013 | 2405 | 1771 | 0 | 2406 | 2425 | 99.2% | +| ov_SC06_014 | 2416 | 1771 | 0 | 2418 | 2453 | 98.6% | +| ov_SC06_015 | 2410 | 1771 | 0 | 2410 | 2421 | 99.5% | +| ov_SC06_016 | 2452 | 1772 | 0 | 2454 | 2549 | 96.3% | +| ov_SC06_018 | 2500 | 1773 | 0 | 2507 | 2665 | 94.1% | +| ov_SC06_020 | 2446 | 1773 | 0 | 2447 | 2518 | 97.2% | +| ov_SC06_022 | 2481 | 1771 | 0 | 2489 | 2642 | 94.2% | +| ov_SC06_024 | 2501 | 1771 | 0 | 2507 | 2667 | 94.0% | +| ov_SC06_025 | 2452 | 1771 | 0 | 2457 | 2572 | 95.5% | +| ov_SC06_027 | 2391 | 1771 | 0 | 2392 | 2408 | 99.3% | +| ov_SC06_029 | 2478 | 1772 | 0 | 2490 | 2662 | 93.5% | +| ov_SC06_030 | 2413 | 1772 | 0 | 2413 | 2456 | 98.2% | +| ov_SC06_032 | 2488 | 1772 | 0 | 2495 | 2658 | 93.9% | +| ov_SC06_033 | 2489 | 1772 | 0 | 2496 | 2631 | 94.9% | +| ov_SC07_000 | 2433 | 1775 | 0 | 2435 | 2521 | 96.6% | +| ov_SC07_001 | 2404 | 1771 | 0 | 2406 | 2454 | 98.0% | +| ov_SC07_002 | 2460 | 1772 | 0 | 2464 | 2579 | 95.5% | | ov_SC07_006 | 2323 | 1595 | 0 | 2403 | 2455 | 97.9% | | ov_SC07_007 | 2336 | 1628 | 0 | 2420 | 2612 | 92.6% | -| ov_SC07_008 | 2384 | 1771 | 0 | 2384 | 2386 | 99.9% | -| ov_SC07_009 | 2396 | 1771 | 0 | 2398 | 2430 | 98.7% | +| ov_SC07_008 | 2385 | 1771 | 0 | 2385 | 2386 | 100.0% | +| ov_SC07_009 | 2397 | 1771 | 0 | 2399 | 2430 | 98.7% | | ov_SC07_010 | 2320 | 1649 | 0 | 2403 | 2523 | 95.2% | | ov_SC07_011 | 2338 | 1627 | 0 | 2418 | 2448 | 98.8% | diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index b1551ec40..39e223d38 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -300,6 +300,40 @@ the 1,023 failures (unclassified). PRINTED its own coverage and the reason, the one guard today that did) · 264 STRUCT members · 112 unresolved immediates · 3 not-stub. The jr set routes to `tools/jtbl_family_bank.py`. +## ✅ TASK A1 (alias-gather fix) — +148 members; the defect was ONE RULE, not a missing gather +**Root cause (byte-witnessed, `func_80132018` 3/135 → 135/135):** `scope_data_externs` §8d drops the +draft's decl of any symbol the TU already declares at file scope. It keys on the **symbol**, but a +§37 ASM-LABEL ALIAS binds a **different C identifier** to that symbol: the TU declares +`D_801851BC`, it does NOT declare `tbl_D_80187044`. Dropping the alias left the body referencing an +undeclared name — and cc1 emits that with **no `error:` prefix**, so the sweep classified all 132 +siblings as `CC1-FAIL(no-diagnostic)`, which reads like a codegen wall. +**The bitter part:** the alias exists PRECISELY BECAUSE the TU declares that symbol with a +conflicting type (a `void (*[])(void)` dispatch table vs this function's 20-byte-stride view). The +drop rule fired on exactly the declarations written to survive it. Why 1 of 2 died was fully +determined, not arbitrary: `tbl_D_80187048`'s symbol is NOT in the TU, so it demoted normally. +**Fix:** `is_asm_alias()` — an alias is demoted into the body, never dropped (identifiers differ, so +it cannot collide). Control-tested 6 ways incl. self-labels and plain externs. +**Measured yield: 148 members** (132 in the probe family + 16 across the full re-sweep). +R22 **213/213**; stubs 14,120 → **13,972 = −148** (second oracle agrees). +**⚠ MY OWN CORRECTION (R14):** after the probe I claimed the 58% aggregate was "concealing" a broad +problem. The re-sweep refuted it — only 16 more banks fleet-wide. **The alias class really was one +family.** The first read ("outlier") was right; the correction was wrong. Recorded because the +opposite conclusion would mis-price the next plumbing fix. + +**The 875 remaining sweep failures, classified (the honest next levers):** +`231` PLUMBING-other · **`141` DIFF (real byte divergence — only 16%)** · +**`136` `conflicting types for 'cdFileLocTable'` — ONE symbol, the biggest single class left** · +`77` CC1-FAIL(no-diagnostic) · `26` memcpy · `12` D_80114F24 · `11` D_800AE620 · `9` D_800183E0 · +`6` D_80078EB4 · `6` func_80145CEC. +`cdFileLocTable` is the same axis B solved for 8 symbols — but check FIRST whether it has a +byte-true definition to conform to; if not it is the `memcpy` class (chosen canonical + own gate). + +**⚠ THE LAST UNFIXED INSTRUMENT:** the sweep's failure classifier still greps for `error:`, which +gcc-2.7.2 never emits on hard errors, so every hard error reads `CC1-FAIL(no-diagnostic)` — +"the compiler was unhappy for reasons we cannot see". That is the single most dangerous remaining +blindness: it is how cheap declaration faults get filed as codegen walls. `rtu_match` was fixed for +this at T0(b); this classifier was not. **Fix it before reading any future 0% as a wall.** + ## ▶ RESUME HERE — D (and the leftovers below) **C is DONE.** For reference, the command was: `.venv/bin/python tools/dedup_extend.py --binaries ov_SC03_107,ov_MAIN_012,ov_SC02_037` diff --git a/src/ov_MAIN_012/ov_MAIN_012.c b/src/ov_MAIN_012/ov_MAIN_012.c index 54214179b..416a7afa1 100644 --- a/src/ov_MAIN_012/ov_MAIN_012.c +++ b/src/ov_MAIN_012/ov_MAIN_012.c @@ -190,7 +190,72 @@ void func_80128714(void) { } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801287B8); + + +// @class: remat +// @stuck: none — MATCH (62 ins). D_80185C10 read needed the address REMATERIALIZED +// (lui;addiu;lw 0(reg), not the folded lui;lw %lo) AND pinned to $a0. volatile forces the +// remat; register __asm__("$4") forces the a0 allocation (gcc otherwise picks v0). Both levers +// required — pin-alone folds, volatile-alone lands in v0. + + +extern void func_80129CF8(void); +extern void func_8017849C(void); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_801505FC(s32 a0); +extern s32 func_801508B4(s32); +extern void func_80165E90(void); +extern void func_801627E8(void); +extern void func_80162B1C(void); +extern void func_80165CA0(void); +extern void func_80129010(void); +extern void func_8013CA14(void); +extern void func_800190AC(void); +extern void func_8012956C(void); +extern s32 func_8016E95C(); +extern void func_801754A8(void); +extern void func_8013BC7C(void); +extern void func_8013BCDC(void); +extern void func_801379FC(void); +extern void func_8001212C(void); + +void func_801287B8(void) { + + extern s32 D_80126B58; + extern s32 D_80185C10; + extern u16 D_800B99DA; + extern u8 D_800B9A64; + func_80129CF8(); + func_8017849C(); + ((void (*)(void *))func_8014FDF4)(&D_80126B58); + ((void (*)(void *))func_801505FC)(&D_80126B58); + ((void (*)(void *))func_801508B4)(&D_80126B58); + func_80165E90(); + func_801627E8(); + func_80162B1C(); + func_80165CA0(); + func_80129010(); + func_8013CA14(); + func_800190AC(); + func_8012956C(); + ((void (*)(void))func_8016E95C)(); + func_801754A8(); + { + /* D_80185C10 read: the target materializes &sym into $a0 then lw 0($a0) (not the folded + * lui;lw %lo). volatile forces the rematerialize; the $4 pin forces the a0 allocation. */ + register volatile s32 *p __asm__("$4") = &D_80185C10; + if (*p == 0) { + func_8013BC7C(); + } + } + func_8013BCDC(); + func_801379FC(); + D_800B99DA++; + if (D_800B9A64 != 0) { + func_8001212C(); + } +} + @@ -18578,9 +18643,82 @@ s32 func_8016BBE0(s32 param_1) { INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016BCC0); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016BD78); +extern s32 func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); + +// @class: struct +// @stuck: none — MATCH (74 ins, relocation-masked) + + + + +s32 func_8016BD78(s32 param_1) +{ + + extern M2C_UNK D_801847F4; + extern M2C_UNK D_801847F8; + extern u8 D_801847F5; + extern u8 D_801847F6; + extern u8 D_801847F9; + extern u8 D_801847FA; + + s32 iVar2; + u16 uVar1; + u8 *p1; + u8 *p2; + + iVar2 = *(s32 *)(param_1 + 0x20); + ((void(*)())func_8016BF50)(); + + p1 = &(*(u8 *)&D_801847F4); + if (*p1 != 0) *p1 -= 4; + if (D_801847F5 != 0) D_801847F5 -= 4; + if (D_801847F6 != 0) D_801847F6 -= 4; + p2 = &(*(u8 *)&D_801847F8); + if (*p2 != 0) *p2 -= 4; + if (D_801847F9 != 0) D_801847F9 -= 4; + if (D_801847FA != 0) D_801847FA -= 4; + + uVar1 = *(u16 *)(iVar2 + 0x18) - 0x80; + *(u16 *)(iVar2 + 0x18) = uVar1; + if ((s32)((unsigned int)uVar1 << 0x10) < 0) { + *(u16 *)(iVar2 + 0x18) = 0; + *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; + } + *(u16 *)(iVar2 + 0x12) = (*(u16 *)(iVar2 + 0x12) + 0x22) & 0xfff; + + ((void (*)(s32, u8 *, u8 *, s32))func_8016BFA8)(param_1, p1, p2, iVar2 + 0x18); +} + + +extern void func_80146C3C(u8*); +extern s32 func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); + + +// @class: plumbing +// @stuck: none — MATCH + +s32 func_8016BEA0(s32 param_1) +{ + + extern M2C_UNK D_801847F4; + extern M2C_UNK D_801847F8; + int iVar2; + unsigned short uVar1; + + iVar2 = *(int *)(((int)param_1) + 0x20); + ((void(*)())func_8016BF50)(); + uVar1 = *(unsigned short *)(((int)param_1) + 0x10) - 0x18; + *(unsigned short *)(((int)param_1) + 0x10) = uVar1; + *(unsigned short *)(iVar2 + 0x1a) = *(unsigned short *)(iVar2 + 0x1a) + uVar1; + *(unsigned short *)(iVar2 + 0x12) = (*(unsigned short *)(iVar2 + 0x12) + 0x22) & 0xfff; + ((void (*)(int, void *, void *, int))func_8016BFA8)(((int)param_1), &(*(int *)&D_801847F4), &(*(int *)&D_801847F8), iVar2 + 0x18); + if (*(short *)(iVar2 + 0x1a) < 0) { + ((void (*)(int))func_80146C3C)(((int)param_1)); + } +} -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016BEA0); DEFINE_func_8016BF34() /* dedup: shared engine-core @0x8016bf34 (src/shared) */ @@ -20911,7 +21049,15 @@ DEFINE_func_80172BC8() /* dedup: shared engine-core @0x80172bc8 (src/shared) */ void func_80172C48(void) { } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80172C50); +extern void func_80174684(void *); +extern void func_80172CA0(void*); +void func_80172C50(void *a0) { + + extern s16 D_80126B30; + *(struct S8_80172780 *)&D_80126B30 = *(struct S8_80172780 *)a0; + func_80174684((void *)func_80172CA0); +} + @@ -21128,7 +21274,43 @@ void func_80173A20(void) { DEFINE_func_80173A28() /* dedup: shared engine-core @0x80173a28 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80173A60); + +extern s32 func_8014C118(void*, s32, s32); +extern void func_80174684(void *); +extern void func_80173B4C(void*); + +void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5) +{ + + extern s32 D_80126B58; + extern s32 D_80127508; + extern s16 D_80126B30; + extern struct S80126B38 D_80126B38; + extern s16 D_80126B3A; + extern s16 D_80126B3C; + extern s16 D_8011F9C8; + extern s16 D_80126938; + extern s32 D_8012750C; + s32 *s1 = &D_80126B58; + s32 v0; + + if (a2 != 0) { + D_80127508 = ((s32 (*)(s32, s32, s32))func_8014C118)((s32)s1, a2, (s16)a3); + } else { + D_80127508 = 0; + } + + v0 = s1[8]; + __builtin_memcpy(&D_80126B30, arg5, 8); + (*(s16 *)&D_80126B38) = a0; + D_80126B3A = a1; + D_80126B3C = *(u16 *)(v0 + 0x12); + func_80174684((void *)func_80173B4C); + D_8011F9C8 = 0; + D_80126938 = 0; + D_8012750C = 0; +} + diff --git a/src/ov_SC01_001/ov_SC01_001_jr_8012ACE0.c b/src/ov_SC01_001/ov_SC01_001_jr_8012ACE0.c index 4ed9ecfaa..a4d618ef9 100644 --- a/src/ov_SC01_001/ov_SC01_001_jr_8012ACE0.c +++ b/src/ov_SC01_001/ov_SC01_001_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_001/nonmatchings/ov_SC01_001_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80183D80 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80183D84 == D_80183D80 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80183D80"); + extern int tbl_D_80187048[][5] __asm__("D_80183D84"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC01_004/ov_SC01_004_jr_8012ACE0.c b/src/ov_SC01_004/ov_SC01_004_jr_8012ACE0.c index 1ac43787d..0ac402d3f 100644 --- a/src/ov_SC01_004/ov_SC01_004_jr_8012ACE0.c +++ b/src/ov_SC01_004/ov_SC01_004_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_004/nonmatchings/ov_SC01_004_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F744 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F748 == D_8017F744 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F744"); + extern int tbl_D_80187048[][5] __asm__("D_8017F748"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC01_005/ov_SC01_005_jr_8012ACE0.c b/src/ov_SC01_005/ov_SC01_005_jr_8012ACE0.c index c87e2fa80..27e7c9954 100644 --- a/src/ov_SC01_005/ov_SC01_005_jr_8012ACE0.c +++ b/src/ov_SC01_005/ov_SC01_005_jr_8012ACE0.c @@ -2179,7 +2179,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_005/nonmatchings/ov_SC01_005_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801828D8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801828DC == D_801828D8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801828D8"); + extern int tbl_D_80187048[][5] __asm__("D_801828DC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC01_006/ov_SC01_006_jr_8012ACE0.c b/src/ov_SC01_006/ov_SC01_006_jr_8012ACE0.c index f2e990c18..e0ca3d84a 100644 --- a/src/ov_SC01_006/ov_SC01_006_jr_8012ACE0.c +++ b/src/ov_SC01_006/ov_SC01_006_jr_8012ACE0.c @@ -2179,7 +2179,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801828D8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801828DC == D_801828D8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801828D8"); + extern int tbl_D_80187048[][5] __asm__("D_801828DC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8012ACE0.c b/src/ov_SC01_008/ov_SC01_008_jr_8012ACE0.c index 4cdae509e..2509ed720 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_8012ACE0.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017FCB8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017FCBC == D_8017FCB8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017FCB8"); + extern int tbl_D_80187048[][5] __asm__("D_8017FCBC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC01_009/ov_SC01_009_jr_8012ACE0.c b/src/ov_SC01_009/ov_SC01_009_jr_8012ACE0.c index ff58d8ce5..e90c20570 100644 --- a/src/ov_SC01_009/ov_SC01_009_jr_8012ACE0.c +++ b/src/ov_SC01_009/ov_SC01_009_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182EA0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80182EA4 == D_80182EA0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182EA0"); + extern int tbl_D_80187048[][5] __asm__("D_80182EA4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC01_074/ov_SC01_074_jr_8012ACE0.c b/src/ov_SC01_074/ov_SC01_074_jr_8012ACE0.c index 82d788a40..20eb0dbac 100644 --- a/src/ov_SC01_074/ov_SC01_074_jr_8012ACE0.c +++ b/src/ov_SC01_074/ov_SC01_074_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_074/nonmatchings/ov_SC01_074_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017EB20 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017EB24 == D_8017EB20 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017EB20"); + extern int tbl_D_80187048[][5] __asm__("D_8017EB24"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC01_080/ov_SC01_080_jr_8012ACE0.c b/src/ov_SC01_080/ov_SC01_080_jr_8012ACE0.c index 2a32254a9..bbe621e29 100644 --- a/src/ov_SC01_080/ov_SC01_080_jr_8012ACE0.c +++ b/src/ov_SC01_080/ov_SC01_080_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80183A80 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80183A84 == D_80183A80 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80183A80"); + extern int tbl_D_80187048[][5] __asm__("D_80183A84"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC01_084/ov_SC01_084_jr_8012ACE0.c b/src/ov_SC01_084/ov_SC01_084_jr_8012ACE0.c index ba76e6d7c..68ca65eb1 100644 --- a/src/ov_SC01_084/ov_SC01_084_jr_8012ACE0.c +++ b/src/ov_SC01_084/ov_SC01_084_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80186D74 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80186D78 == D_80186D74 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80186D74"); + extern int tbl_D_80187048[][5] __asm__("D_80186D78"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_000/ov_SC02_000_jr_8012ACE0.c b/src/ov_SC02_000/ov_SC02_000_jr_8012ACE0.c index 81cccaf79..82305aeaf 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8012ACE0.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018B124 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018B128 == D_8018B124 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018B124"); + extern int tbl_D_80187048[][5] __asm__("D_8018B128"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8012ACE0.c b/src/ov_SC02_003/ov_SC02_003_jr_8012ACE0.c index 22b5a88c6..82305aeaf 100644 --- a/src/ov_SC02_003/ov_SC02_003_jr_8012ACE0.c +++ b/src/ov_SC02_003/ov_SC02_003_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_003/nonmatchings/ov_SC02_003_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018B124 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018B128 == D_8018B124 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018B124"); + extern int tbl_D_80187048[][5] __asm__("D_8018B128"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_004/ov_SC02_004_jr_8012ACE0.c b/src/ov_SC02_004/ov_SC02_004_jr_8012ACE0.c index c28536b0b..4882cfc2b 100644 --- a/src/ov_SC02_004/ov_SC02_004_jr_8012ACE0.c +++ b/src/ov_SC02_004/ov_SC02_004_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017E204 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017E208 == D_8017E204 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017E204"); + extern int tbl_D_80187048[][5] __asm__("D_8017E208"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.c b/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.c index 66e87814b..83b39f28a 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80190E08 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80190E0C == D_80190E08 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80190E08"); + extern int tbl_D_80187048[][5] __asm__("D_80190E0C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_011/ov_SC02_011_jr_8012ACE0.c b/src/ov_SC02_011/ov_SC02_011_jr_8012ACE0.c index cec803311..aaee399d5 100644 --- a/src/ov_SC02_011/ov_SC02_011_jr_8012ACE0.c +++ b/src/ov_SC02_011/ov_SC02_011_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80191258 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8019125C == D_80191258 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80191258"); + extern int tbl_D_80187048[][5] __asm__("D_8019125C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_015/ov_SC02_015_jr_8012ACE0.c b/src/ov_SC02_015/ov_SC02_015_jr_8012ACE0.c index fcd77eef8..402bd0083 100644 --- a/src/ov_SC02_015/ov_SC02_015_jr_8012ACE0.c +++ b/src/ov_SC02_015/ov_SC02_015_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_015/nonmatchings/ov_SC02_015_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017E76C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017E770 == D_8017E76C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017E76C"); + extern int tbl_D_80187048[][5] __asm__("D_8017E770"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_016/ov_SC02_016_jr_8012ACE0.c b/src/ov_SC02_016/ov_SC02_016_jr_8012ACE0.c index 350913f8c..51952faac 100644 --- a/src/ov_SC02_016/ov_SC02_016_jr_8012ACE0.c +++ b/src/ov_SC02_016/ov_SC02_016_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801849A4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801849A8 == D_801849A4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801849A4"); + extern int tbl_D_80187048[][5] __asm__("D_801849A8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_017/ov_SC02_017_jr_8012ACE0.c b/src/ov_SC02_017/ov_SC02_017_jr_8012ACE0.c index 765dfdcf6..1eb455b0d 100644 --- a/src/ov_SC02_017/ov_SC02_017_jr_8012ACE0.c +++ b/src/ov_SC02_017/ov_SC02_017_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018A9FC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018AA00 == D_8018A9FC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018A9FC"); + extern int tbl_D_80187048[][5] __asm__("D_8018AA00"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_021/ov_SC02_021_jr_8012ACE0.c b/src/ov_SC02_021/ov_SC02_021_jr_8012ACE0.c index 419e6eff7..8d0aa17c9 100644 --- a/src/ov_SC02_021/ov_SC02_021_jr_8012ACE0.c +++ b/src/ov_SC02_021/ov_SC02_021_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_021/nonmatchings/ov_SC02_021_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017FFF0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017FFF4 == D_8017FFF0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017FFF0"); + extern int tbl_D_80187048[][5] __asm__("D_8017FFF4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.c b/src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.c index cf58ded83..9a250e07b 100644 --- a/src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.c +++ b/src/ov_SC02_026/ov_SC02_026_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_026/nonmatchings/ov_SC02_026_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80186644 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80186648 == D_80186644 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80186644"); + extern int tbl_D_80187048[][5] __asm__("D_80186648"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_027/ov_SC02_027_jr_8012ACE0.c b/src/ov_SC02_027/ov_SC02_027_jr_8012ACE0.c index 98fb4c5a4..24b2b50d1 100644 --- a/src/ov_SC02_027/ov_SC02_027_jr_8012ACE0.c +++ b/src/ov_SC02_027/ov_SC02_027_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_027/nonmatchings/ov_SC02_027_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018B768 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018B76C == D_8018B768 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018B768"); + extern int tbl_D_80187048[][5] __asm__("D_8018B76C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_028/ov_SC02_028_jr_8012ACE0.c b/src/ov_SC02_028/ov_SC02_028_jr_8012ACE0.c index a2f369a3f..47957ab2a 100644 --- a/src/ov_SC02_028/ov_SC02_028_jr_8012ACE0.c +++ b/src/ov_SC02_028/ov_SC02_028_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018B96C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018B970 == D_8018B96C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018B96C"); + extern int tbl_D_80187048[][5] __asm__("D_8018B970"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_031/ov_SC02_031_jr_8012ACE0.c b/src/ov_SC02_031/ov_SC02_031_jr_8012ACE0.c index 9c228cc88..5d97f8b6a 100644 --- a/src/ov_SC02_031/ov_SC02_031_jr_8012ACE0.c +++ b/src/ov_SC02_031/ov_SC02_031_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_031/nonmatchings/ov_SC02_031_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80185198 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018519C == D_80185198 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80185198"); + extern int tbl_D_80187048[][5] __asm__("D_8018519C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_035/ov_SC02_035_jr_8012ACE0.c b/src/ov_SC02_035/ov_SC02_035_jr_8012ACE0.c index d3e647eba..10782ba41 100644 --- a/src/ov_SC02_035/ov_SC02_035_jr_8012ACE0.c +++ b/src/ov_SC02_035/ov_SC02_035_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801849F8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801849FC == D_801849F8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801849F8"); + extern int tbl_D_80187048[][5] __asm__("D_801849FC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c b/src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c index 078eb05f2..d1de08ee5 100644 --- a/src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c +++ b/src/ov_SC02_035/ov_SC02_035_jr_8017BEBC.c @@ -7441,7 +7441,34 @@ void func_80184328(s32 a0) { void func_801843D8(void) { } -INCLUDE_ASM("asm/ov_SC02_035/nonmatchings/ov_SC02_035_jr_8017BEBC", func_801843E0); + +/* §37 data asm-label alias: the TU already declares + * extern struct B16_80185794 D_800A5E88; + * at file scope (that tag is defined next to func_80185794). Re-declaring the + * symbol with this function's own 16-byte record tag is a `conflicting types` + * error, and the tag cannot be re-defined either. Aliasing a private C + * identifier onto the same linker symbol sidesteps the collision at zero blast + * radius and emits the identical %hi/%lo(D_800A5E88) pair. */ + + +extern s32 func_8004787C(s32 a0); +extern void func_80028620(s32 a0, void *a1); + +void func_801843E0(void *a0) { + + extern struct B16_8018584C aD800A5E88 __asm__("D_800A5E88"); + extern struct B16_8018584C D_801BBE6C; + extern s32 D_800A5E90; + s32 t; + + aD800A5E88 = D_801BBE6C; + t = func_8004787C(*(s16 *)((s32)a0 + 0xFE)); + if (t < 0) t += 0x1FF; + D_800A5E90 = (t >> 9) + 8; + *(u16 *)((s32)a0 + 0xFE) = (*(u16 *)((s32)a0 + 0xFE) + 0x71) & 0xFFF; + func_80028620(0, &aD800A5E88); +} + diff --git a/src/ov_SC02_037/ov_SC02_037.c b/src/ov_SC02_037/ov_SC02_037.c index b423a90b5..860edf4f3 100644 --- a/src/ov_SC02_037/ov_SC02_037.c +++ b/src/ov_SC02_037/ov_SC02_037.c @@ -190,7 +190,72 @@ void func_80128714(void) { } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801287B8); + + +// @class: remat +// @stuck: none — MATCH (62 ins). D_801C9A78 read needed the address REMATERIALIZED +// (lui;addiu;lw 0(reg), not the folded lui;lw %lo) AND pinned to $a0. volatile forces the +// remat; register __asm__("$4") forces the a0 allocation (gcc otherwise picks v0). Both levers +// required — pin-alone folds, volatile-alone lands in v0. + + +extern void func_80129CF8(void); +extern void func_8017849C(void); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_801505FC(s32 a0); +extern s32 func_801508B4(s32); +extern void func_80165E90(void); +extern void func_801627E8(void); +extern void func_80162B1C(void); +extern void func_80165CA0(void); +extern void func_80129010(void); +extern void func_8013CA14(void); +extern void func_800190AC(void); +extern void func_8012956C(void); +extern s32 func_8016E95C(); +extern void func_801754A8(void); +extern void func_8013BC7C(void); +extern void func_8013BCDC(void); +extern void func_801379FC(void); +extern void func_8001212C(void); + +void func_801287B8(void) { + + extern s32 D_80126B58; + extern s32 D_801C9A78; + extern u16 D_800B99DA; + extern u8 D_800B9A64; + func_80129CF8(); + func_8017849C(); + ((void (*)(void *))func_8014FDF4)(&D_80126B58); + ((void (*)(void *))func_801505FC)(&D_80126B58); + ((void (*)(void *))func_801508B4)(&D_80126B58); + func_80165E90(); + func_801627E8(); + func_80162B1C(); + func_80165CA0(); + func_80129010(); + func_8013CA14(); + func_800190AC(); + func_8012956C(); + ((void (*)(void))func_8016E95C)(); + func_801754A8(); + { + /* D_801C9A78 read: the target materializes &sym into $a0 then lw 0($a0) (not the folded + * lui;lw %lo). volatile forces the rematerialize; the $4 pin forces the a0 allocation. */ + register volatile s32 *p __asm__("$4") = &D_801C9A78; + if (*p == 0) { + func_8013BC7C(); + } + } + func_8013BCDC(); + func_801379FC(); + D_800B99DA++; + if (D_800B9A64 != 0) { + func_8001212C(); + } +} + @@ -18794,9 +18859,82 @@ s32 func_8016BBE0(s32 param_1) { INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016BCC0); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016BD78); +extern s32 func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); + +// @class: struct +// @stuck: none — MATCH (74 ins, relocation-masked) + + + + +s32 func_8016BD78(s32 param_1) +{ + + extern M2C_UNK D_801C8AEC; + extern M2C_UNK D_801C8AF0; + extern u8 D_801C8AED; + extern u8 D_801C8AEE; + extern u8 D_801C8AF1; + extern u8 D_801C8AF2; + + s32 iVar2; + u16 uVar1; + u8 *p1; + u8 *p2; + + iVar2 = *(s32 *)(param_1 + 0x20); + ((void(*)())func_8016BF50)(); + + p1 = &(*(u8 *)&D_801C8AEC); + if (*p1 != 0) *p1 -= 4; + if (D_801C8AED != 0) D_801C8AED -= 4; + if (D_801C8AEE != 0) D_801C8AEE -= 4; + p2 = &(*(u8 *)&D_801C8AF0); + if (*p2 != 0) *p2 -= 4; + if (D_801C8AF1 != 0) D_801C8AF1 -= 4; + if (D_801C8AF2 != 0) D_801C8AF2 -= 4; + + uVar1 = *(u16 *)(iVar2 + 0x18) - 0x80; + *(u16 *)(iVar2 + 0x18) = uVar1; + if ((s32)((unsigned int)uVar1 << 0x10) < 0) { + *(u16 *)(iVar2 + 0x18) = 0; + *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; + } + *(u16 *)(iVar2 + 0x12) = (*(u16 *)(iVar2 + 0x12) + 0x22) & 0xfff; + + ((void (*)(s32, u8 *, u8 *, s32))func_8016BFA8)(param_1, p1, p2, iVar2 + 0x18); +} + + +extern void func_80146C3C(u8*); +extern s32 func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); + + +// @class: plumbing +// @stuck: none — MATCH + +s32 func_8016BEA0(s32 param_1) +{ + + extern M2C_UNK D_801C8AEC; + extern M2C_UNK D_801C8AF0; + int iVar2; + unsigned short uVar1; + + iVar2 = *(int *)(((int)param_1) + 0x20); + ((void(*)())func_8016BF50)(); + uVar1 = *(unsigned short *)(((int)param_1) + 0x10) - 0x18; + *(unsigned short *)(((int)param_1) + 0x10) = uVar1; + *(unsigned short *)(iVar2 + 0x1a) = *(unsigned short *)(iVar2 + 0x1a) + uVar1; + *(unsigned short *)(iVar2 + 0x12) = (*(unsigned short *)(iVar2 + 0x12) + 0x22) & 0xfff; + ((void (*)(int, void *, void *, int))func_8016BFA8)(((int)param_1), &(*(int *)&D_801C8AEC), &(*(int *)&D_801C8AF0), iVar2 + 0x18); + if (*(short *)(iVar2 + 0x1a) < 0) { + ((void (*)(int))func_80146C3C)(((int)param_1)); + } +} -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016BEA0); DEFINE_func_8016BF34() /* dedup: shared engine-core @0x8016bf34 (src/shared) */ @@ -20949,7 +21087,15 @@ DEFINE_func_80172BC8() /* dedup: shared engine-core @0x80172bc8 (src/shared) */ void func_80172C48(void) { } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80172C50); +extern void func_80174684(void *); +extern void func_80172CA0(void*); +void func_80172C50(void *a0) { + + extern s16 D_80126B30; + *(struct S8_80172780 *)&D_80126B30 = *(struct S8_80172780 *)a0; + func_80174684((void *)func_80172CA0); +} + @@ -21168,7 +21314,42 @@ void func_80173A20(void) { DEFINE_func_80173A28() /* dedup: shared engine-core @0x80173a28 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80173A60); + +extern s32 func_8014C118(void*, s32, s32); +extern void func_80174684(void *); +extern void func_80173B4C(void*); + +void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5) +{ + + extern s32 D_80126B58; + extern s32 D_80127508; + extern s16 D_80126B30; + extern s16 D_80126B3A; + extern s16 D_80126B3C; + extern s16 D_8011F9C8; + extern s16 D_80126938; + extern s32 D_8012750C; + s32 *s1 = &D_80126B58; + s32 v0; + + if (a2 != 0) { + D_80127508 = ((s32 (*)(s32, s32, s32))func_8014C118)((s32)s1, a2, (s16)a3); + } else { + D_80127508 = 0; + } + + v0 = s1[8]; + __builtin_memcpy(&D_80126B30, arg5, 8); + (*(s16 *)&D_80126B38) = a0; + D_80126B3A = a1; + D_80126B3C = *(u16 *)(v0 + 0x12); + func_80174684((void *)func_80173B4C); + D_8011F9C8 = 0; + D_80126938 = 0; + D_8012750C = 0; +} + diff --git a/src/ov_SC02_039/ov_SC02_039_jr_8012ACE0.c b/src/ov_SC02_039/ov_SC02_039_jr_8012ACE0.c index f0cf46c2e..ec34dd093 100644 --- a/src/ov_SC02_039/ov_SC02_039_jr_8012ACE0.c +++ b/src/ov_SC02_039/ov_SC02_039_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_039/nonmatchings/ov_SC02_039_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F624 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F628 == D_8017F624 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F624"); + extern int tbl_D_80187048[][5] __asm__("D_8017F628"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC02_041/ov_SC02_041_jr_8012ACE0.c b/src/ov_SC02_041/ov_SC02_041_jr_8012ACE0.c index 535d62b90..c98cb8c5e 100644 --- a/src/ov_SC02_041/ov_SC02_041_jr_8012ACE0.c +++ b/src/ov_SC02_041/ov_SC02_041_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801852F4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801852F8 == D_801852F4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801852F4"); + extern int tbl_D_80187048[][5] __asm__("D_801852F8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_001/ov_SC03_001_jr_8012ACE0.c b/src/ov_SC03_001/ov_SC03_001_jr_8012ACE0.c index 80ec016ca..a9254d4fd 100644 --- a/src/ov_SC03_001/ov_SC03_001_jr_8012ACE0.c +++ b/src/ov_SC03_001/ov_SC03_001_jr_8012ACE0.c @@ -2187,7 +2187,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_001/nonmatchings/ov_SC03_001_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018DA34 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018DA38 == D_8018DA34 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018DA34"); + extern int tbl_D_80187048[][5] __asm__("D_8018DA38"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_002/ov_SC03_002_jr_8012ACE0.c b/src/ov_SC03_002/ov_SC03_002_jr_8012ACE0.c index f5a138e54..5a2d324cd 100644 --- a/src/ov_SC03_002/ov_SC03_002_jr_8012ACE0.c +++ b/src/ov_SC03_002/ov_SC03_002_jr_8012ACE0.c @@ -2191,7 +2191,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_002/nonmatchings/ov_SC03_002_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80185A24 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80185A28 == D_80185A24 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80185A24"); + extern int tbl_D_80187048[][5] __asm__("D_80185A28"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_003/ov_SC03_003_jr_8012ACE0.c b/src/ov_SC03_003/ov_SC03_003_jr_8012ACE0.c index 0de2cd7cd..c1cdbfb41 100644 --- a/src/ov_SC03_003/ov_SC03_003_jr_8012ACE0.c +++ b/src/ov_SC03_003/ov_SC03_003_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_003/nonmatchings/ov_SC03_003_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F7EC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F7F0 == D_8017F7EC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F7EC"); + extern int tbl_D_80187048[][5] __asm__("D_8017F7F0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_006/ov_SC03_006_jr_8012ACE0.c b/src/ov_SC03_006/ov_SC03_006_jr_8012ACE0.c index dbf78e748..f5812fa6a 100644 --- a/src/ov_SC03_006/ov_SC03_006_jr_8012ACE0.c +++ b/src/ov_SC03_006/ov_SC03_006_jr_8012ACE0.c @@ -2191,7 +2191,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018CB08 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018CB0C == D_8018CB08 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018CB08"); + extern int tbl_D_80187048[][5] __asm__("D_8018CB0C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_007/ov_SC03_007_jr_8012ACE0.c b/src/ov_SC03_007/ov_SC03_007_jr_8012ACE0.c index 47b91e68b..bc6ac4053 100644 --- a/src/ov_SC03_007/ov_SC03_007_jr_8012ACE0.c +++ b/src/ov_SC03_007/ov_SC03_007_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80187900 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80187904 == D_80187900 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80187900"); + extern int tbl_D_80187048[][5] __asm__("D_80187904"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_010/ov_SC03_010_jr_8012ACE0.c b/src/ov_SC03_010/ov_SC03_010_jr_8012ACE0.c index 45faedd70..2813aa801 100644 --- a/src/ov_SC03_010/ov_SC03_010_jr_8012ACE0.c +++ b/src/ov_SC03_010/ov_SC03_010_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_010/nonmatchings/ov_SC03_010_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80180420 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80180424 == D_80180420 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80180420"); + extern int tbl_D_80187048[][5] __asm__("D_80180424"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_011/ov_SC03_011_jr_8012ACE0.c b/src/ov_SC03_011/ov_SC03_011_jr_8012ACE0.c index 8699ccc92..dd4c99dda 100644 --- a/src/ov_SC03_011/ov_SC03_011_jr_8012ACE0.c +++ b/src/ov_SC03_011/ov_SC03_011_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80181790 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80181794 == D_80181790 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80181790"); + extern int tbl_D_80187048[][5] __asm__("D_80181794"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_012/ov_SC03_012_jr_8012ACE0.c b/src/ov_SC03_012/ov_SC03_012_jr_8012ACE0.c index 266f659b5..b3e880d6b 100644 --- a/src/ov_SC03_012/ov_SC03_012_jr_8012ACE0.c +++ b/src/ov_SC03_012/ov_SC03_012_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_012/nonmatchings/ov_SC03_012_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017E670 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017E674 == D_8017E670 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017E670"); + extern int tbl_D_80187048[][5] __asm__("D_8017E674"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_013/ov_SC03_013_jr_8012ACE0.c b/src/ov_SC03_013/ov_SC03_013_jr_8012ACE0.c index 2ec134449..81279d36a 100644 --- a/src/ov_SC03_013/ov_SC03_013_jr_8012ACE0.c +++ b/src/ov_SC03_013/ov_SC03_013_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_013/nonmatchings/ov_SC03_013_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80181458 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018145C == D_80181458 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80181458"); + extern int tbl_D_80187048[][5] __asm__("D_8018145C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.c b/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.c index 1d7597853..1274e83e2 100644 --- a/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.c +++ b/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018BA94 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018BA98 == D_8018BA94 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018BA94"); + extern int tbl_D_80187048[][5] __asm__("D_8018BA98"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.c b/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.c index 36d0f32f7..1274e83e2 100644 --- a/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.c +++ b/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018BA94 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018BA98 == D_8018BA94 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018BA94"); + extern int tbl_D_80187048[][5] __asm__("D_8018BA98"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_023/ov_SC03_023_jr_8012ACE0.c b/src/ov_SC03_023/ov_SC03_023_jr_8012ACE0.c index ae23e4dc2..a32c8cd55 100644 --- a/src/ov_SC03_023/ov_SC03_023_jr_8012ACE0.c +++ b/src/ov_SC03_023/ov_SC03_023_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_023/nonmatchings/ov_SC03_023_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F410 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F414 == D_8017F410 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F410"); + extern int tbl_D_80187048[][5] __asm__("D_8017F414"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_024/ov_SC03_024_jr_8012ACE0.c b/src/ov_SC03_024/ov_SC03_024_jr_8012ACE0.c index db8254e0d..cc1c4dff7 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_8012ACE0.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80187434 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80187438 == D_80187434 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80187434"); + extern int tbl_D_80187048[][5] __asm__("D_80187438"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_028/ov_SC03_028_jr_8012ACE0.c b/src/ov_SC03_028/ov_SC03_028_jr_8012ACE0.c index 17437117f..4ee0d29fa 100644 --- a/src/ov_SC03_028/ov_SC03_028_jr_8012ACE0.c +++ b/src/ov_SC03_028/ov_SC03_028_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018BF00 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018BF04 == D_8018BF00 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018BF00"); + extern int tbl_D_80187048[][5] __asm__("D_8018BF04"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_029/ov_SC03_029_jr_8012ACE0.c b/src/ov_SC03_029/ov_SC03_029_jr_8012ACE0.c index 0c05f9c3a..f997d2fb8 100644 --- a/src/ov_SC03_029/ov_SC03_029_jr_8012ACE0.c +++ b/src/ov_SC03_029/ov_SC03_029_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_029/nonmatchings/ov_SC03_029_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80187D38 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80187D3C == D_80187D38 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80187D38"); + extern int tbl_D_80187048[][5] __asm__("D_80187D3C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_030/ov_SC03_030_jr_8012ACE0.c b/src/ov_SC03_030/ov_SC03_030_jr_8012ACE0.c index e2fb93c43..bb630f120 100644 --- a/src/ov_SC03_030/ov_SC03_030_jr_8012ACE0.c +++ b/src/ov_SC03_030/ov_SC03_030_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_030/nonmatchings/ov_SC03_030_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182374 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80182378 == D_80182374 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182374"); + extern int tbl_D_80187048[][5] __asm__("D_80182378"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_031/ov_SC03_031_jr_8012ACE0.c b/src/ov_SC03_031/ov_SC03_031_jr_8012ACE0.c index e805ce986..34a2c8ce2 100644 --- a/src/ov_SC03_031/ov_SC03_031_jr_8012ACE0.c +++ b/src/ov_SC03_031/ov_SC03_031_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_031/nonmatchings/ov_SC03_031_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182890 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80182894 == D_80182890 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182890"); + extern int tbl_D_80187048[][5] __asm__("D_80182894"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_089/ov_SC03_089_jr_8012ACE0.c b/src/ov_SC03_089/ov_SC03_089_jr_8012ACE0.c index 3dd688c93..d5065b5bf 100644 --- a/src/ov_SC03_089/ov_SC03_089_jr_8012ACE0.c +++ b/src/ov_SC03_089/ov_SC03_089_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_089/nonmatchings/ov_SC03_089_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80189B8C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80189B90 == D_80189B8C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80189B8C"); + extern int tbl_D_80187048[][5] __asm__("D_80189B90"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_090/ov_SC03_090_jr_8012ACE0.c b/src/ov_SC03_090/ov_SC03_090_jr_8012ACE0.c index c28b2b36f..1e5941769 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_8012ACE0.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018BFB0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018BFB4 == D_8018BFB0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018BFB0"); + extern int tbl_D_80187048[][5] __asm__("D_8018BFB4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_091/ov_SC03_091_jr_8012ACE0.c b/src/ov_SC03_091/ov_SC03_091_jr_8012ACE0.c index c307523b0..79ed575f0 100644 --- a/src/ov_SC03_091/ov_SC03_091_jr_8012ACE0.c +++ b/src/ov_SC03_091/ov_SC03_091_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_091/nonmatchings/ov_SC03_091_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018CE58 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018CE5C == D_8018CE58 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018CE58"); + extern int tbl_D_80187048[][5] __asm__("D_8018CE5C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_092/ov_SC03_092_jr_8012ACE0.c b/src/ov_SC03_092/ov_SC03_092_jr_8012ACE0.c index 885cc38ec..c349d1c8f 100644 --- a/src/ov_SC03_092/ov_SC03_092_jr_8012ACE0.c +++ b/src/ov_SC03_092/ov_SC03_092_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_092/nonmatchings/ov_SC03_092_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80185228 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018522C == D_80185228 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80185228"); + extern int tbl_D_80187048[][5] __asm__("D_8018522C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_093/ov_SC03_093_jr_8012ACE0.c b/src/ov_SC03_093/ov_SC03_093_jr_8012ACE0.c index e61964af4..551afd4f9 100644 --- a/src/ov_SC03_093/ov_SC03_093_jr_8012ACE0.c +++ b/src/ov_SC03_093/ov_SC03_093_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_093/nonmatchings/ov_SC03_093_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80186400 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80186404 == D_80186400 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80186400"); + extern int tbl_D_80187048[][5] __asm__("D_80186404"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_094/ov_SC03_094_jr_8012ACE0.c b/src/ov_SC03_094/ov_SC03_094_jr_8012ACE0.c index 954a895ed..2aa33c5f6 100644 --- a/src/ov_SC03_094/ov_SC03_094_jr_8012ACE0.c +++ b/src/ov_SC03_094/ov_SC03_094_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_094/nonmatchings/ov_SC03_094_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80187DFC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80187E00 == D_80187DFC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80187DFC"); + extern int tbl_D_80187048[][5] __asm__("D_80187E00"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_095/ov_SC03_095_jr_8012ACE0.c b/src/ov_SC03_095/ov_SC03_095_jr_8012ACE0.c index ece5dd170..452b6d3e6 100644 --- a/src/ov_SC03_095/ov_SC03_095_jr_8012ACE0.c +++ b/src/ov_SC03_095/ov_SC03_095_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_095/nonmatchings/ov_SC03_095_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018145C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80181460 == D_8018145C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018145C"); + extern int tbl_D_80187048[][5] __asm__("D_80181460"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_096/ov_SC03_096_jr_8012ACE0.c b/src/ov_SC03_096/ov_SC03_096_jr_8012ACE0.c index 3ebd492cd..dfc2e2865 100644 --- a/src/ov_SC03_096/ov_SC03_096_jr_8012ACE0.c +++ b/src/ov_SC03_096/ov_SC03_096_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_096/nonmatchings/ov_SC03_096_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80180FDC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80180FE0 == D_80180FDC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80180FDC"); + extern int tbl_D_80187048[][5] __asm__("D_80180FE0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_097/ov_SC03_097_jr_8012ACE0.c b/src/ov_SC03_097/ov_SC03_097_jr_8012ACE0.c index fe5db3873..0b64cacf5 100644 --- a/src/ov_SC03_097/ov_SC03_097_jr_8012ACE0.c +++ b/src/ov_SC03_097/ov_SC03_097_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801863BC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801863C0 == D_801863BC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801863BC"); + extern int tbl_D_80187048[][5] __asm__("D_801863C0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_098/ov_SC03_098_jr_8012ACE0.c b/src/ov_SC03_098/ov_SC03_098_jr_8012ACE0.c index c8ea2d8d3..ee27ca83b 100644 --- a/src/ov_SC03_098/ov_SC03_098_jr_8012ACE0.c +++ b/src/ov_SC03_098/ov_SC03_098_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_098/nonmatchings/ov_SC03_098_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80185848 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018584C == D_80185848 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80185848"); + extern int tbl_D_80187048[][5] __asm__("D_8018584C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_099/ov_SC03_099_jr_8012ACE0.c b/src/ov_SC03_099/ov_SC03_099_jr_8012ACE0.c index 2117dbb1b..0b5dce5e4 100644 --- a/src/ov_SC03_099/ov_SC03_099_jr_8012ACE0.c +++ b/src/ov_SC03_099/ov_SC03_099_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80183948 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018394C == D_80183948 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80183948"); + extern int tbl_D_80187048[][5] __asm__("D_8018394C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_100/ov_SC03_100_jr_8012ACE0.c b/src/ov_SC03_100/ov_SC03_100_jr_8012ACE0.c index de834994b..e9ebab5de 100644 --- a/src/ov_SC03_100/ov_SC03_100_jr_8012ACE0.c +++ b/src/ov_SC03_100/ov_SC03_100_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80184E14 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80184E18 == D_80184E14 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80184E14"); + extern int tbl_D_80187048[][5] __asm__("D_80184E18"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_101/ov_SC03_101_jr_8012ACE0.c b/src/ov_SC03_101/ov_SC03_101_jr_8012ACE0.c index 0e884e7b6..f04250c83 100644 --- a/src/ov_SC03_101/ov_SC03_101_jr_8012ACE0.c +++ b/src/ov_SC03_101/ov_SC03_101_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_101/nonmatchings/ov_SC03_101_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80183DF0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80183DF4 == D_80183DF0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80183DF0"); + extern int tbl_D_80187048[][5] __asm__("D_80183DF4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_102/ov_SC03_102_jr_8012ACE0.c b/src/ov_SC03_102/ov_SC03_102_jr_8012ACE0.c index 4f4585812..61da173d0 100644 --- a/src/ov_SC03_102/ov_SC03_102_jr_8012ACE0.c +++ b/src/ov_SC03_102/ov_SC03_102_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801866A8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801866AC == D_801866A8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801866A8"); + extern int tbl_D_80187048[][5] __asm__("D_801866AC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_103/ov_SC03_103_jr_8012ACE0.c b/src/ov_SC03_103/ov_SC03_103_jr_8012ACE0.c index b81437db6..9fada1716 100644 --- a/src/ov_SC03_103/ov_SC03_103_jr_8012ACE0.c +++ b/src/ov_SC03_103/ov_SC03_103_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_103/nonmatchings/ov_SC03_103_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80184658 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018465C == D_80184658 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80184658"); + extern int tbl_D_80187048[][5] __asm__("D_8018465C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_104/ov_SC03_104_jr_8012ACE0.c b/src/ov_SC03_104/ov_SC03_104_jr_8012ACE0.c index 54fa72e5f..37967778b 100644 --- a/src/ov_SC03_104/ov_SC03_104_jr_8012ACE0.c +++ b/src/ov_SC03_104/ov_SC03_104_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_104/nonmatchings/ov_SC03_104_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018B1E8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018B1EC == D_8018B1E8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018B1E8"); + extern int tbl_D_80187048[][5] __asm__("D_8018B1EC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_105/ov_SC03_105_jr_8012ACE0.c b/src/ov_SC03_105/ov_SC03_105_jr_8012ACE0.c index 57ba45eff..43460c716 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_8012ACE0.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018A870 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018A874 == D_8018A870 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018A870"); + extern int tbl_D_80187048[][5] __asm__("D_8018A874"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_107/ov_SC03_107.c b/src/ov_SC03_107/ov_SC03_107.c index e4d6ebba3..639dca408 100644 --- a/src/ov_SC03_107/ov_SC03_107.c +++ b/src/ov_SC03_107/ov_SC03_107.c @@ -190,7 +190,72 @@ void func_80128714(void) { } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801287B8); + + +// @class: remat +// @stuck: none — MATCH (62 ins). D_8019BCD0 read needed the address REMATERIALIZED +// (lui;addiu;lw 0(reg), not the folded lui;lw %lo) AND pinned to $a0. volatile forces the +// remat; register __asm__("$4") forces the a0 allocation (gcc otherwise picks v0). Both levers +// required — pin-alone folds, volatile-alone lands in v0. + + +extern void func_80129CF8(void); +extern void func_8017849C(void); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_801505FC(s32 a0); +extern s32 func_801508B4(s32); +extern void func_80165E90(void); +extern void func_801627E8(void); +extern void func_80162B1C(void); +extern void func_80165CA0(void); +extern void func_80129010(void); +extern void func_8013CA14(void); +extern void func_800190AC(void); +extern void func_8012956C(void); +extern s32 func_8016E95C(); +extern void func_801754A8(void); +extern void func_8013BC7C(void); +extern void func_8013BCDC(void); +extern void func_801379FC(void); +extern void func_8001212C(void); + +void func_801287B8(void) { + + extern s32 D_80126B58; + extern s32 D_8019BCD0; + extern u16 D_800B99DA; + extern u8 D_800B9A64; + func_80129CF8(); + func_8017849C(); + ((void (*)(void *))func_8014FDF4)(&D_80126B58); + ((void (*)(void *))func_801505FC)(&D_80126B58); + ((void (*)(void *))func_801508B4)(&D_80126B58); + func_80165E90(); + func_801627E8(); + func_80162B1C(); + func_80165CA0(); + func_80129010(); + func_8013CA14(); + func_800190AC(); + func_8012956C(); + ((void (*)(void))func_8016E95C)(); + func_801754A8(); + { + /* D_8019BCD0 read: the target materializes &sym into $a0 then lw 0($a0) (not the folded + * lui;lw %lo). volatile forces the rematerialize; the $4 pin forces the a0 allocation. */ + register volatile s32 *p __asm__("$4") = &D_8019BCD0; + if (*p == 0) { + func_8013BC7C(); + } + } + func_8013BCDC(); + func_801379FC(); + D_800B99DA++; + if (D_800B9A64 != 0) { + func_8001212C(); + } +} + @@ -18515,9 +18580,82 @@ s32 func_8016BBE0(s32 param_1) { INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016BCC0); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016BD78); +extern s32 func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); + +// @class: struct +// @stuck: none — MATCH (74 ins, relocation-masked) + + + + +s32 func_8016BD78(s32 param_1) +{ + + extern M2C_UNK D_8019AE4C; + extern M2C_UNK D_8019AE50; + extern u8 D_8019AE4D; + extern u8 D_8019AE4E; + extern u8 D_8019AE51; + extern u8 D_8019AE52; + + s32 iVar2; + u16 uVar1; + u8 *p1; + u8 *p2; + + iVar2 = *(s32 *)(param_1 + 0x20); + ((void(*)())func_8016BF50)(); + + p1 = &(*(u8 *)&D_8019AE4C); + if (*p1 != 0) *p1 -= 4; + if (D_8019AE4D != 0) D_8019AE4D -= 4; + if (D_8019AE4E != 0) D_8019AE4E -= 4; + p2 = &(*(u8 *)&D_8019AE50); + if (*p2 != 0) *p2 -= 4; + if (D_8019AE51 != 0) D_8019AE51 -= 4; + if (D_8019AE52 != 0) D_8019AE52 -= 4; + + uVar1 = *(u16 *)(iVar2 + 0x18) - 0x80; + *(u16 *)(iVar2 + 0x18) = uVar1; + if ((s32)((unsigned int)uVar1 << 0x10) < 0) { + *(u16 *)(iVar2 + 0x18) = 0; + *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; + } + *(u16 *)(iVar2 + 0x12) = (*(u16 *)(iVar2 + 0x12) + 0x22) & 0xfff; + + ((void (*)(s32, u8 *, u8 *, s32))func_8016BFA8)(param_1, p1, p2, iVar2 + 0x18); +} + + +extern void func_80146C3C(u8*); +extern s32 func_8016BF50(s32); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); + + +// @class: plumbing +// @stuck: none — MATCH + +s32 func_8016BEA0(s32 param_1) +{ + + extern M2C_UNK D_8019AE4C; + extern M2C_UNK D_8019AE50; + int iVar2; + unsigned short uVar1; + + iVar2 = *(int *)(((int)param_1) + 0x20); + ((void(*)())func_8016BF50)(); + uVar1 = *(unsigned short *)(((int)param_1) + 0x10) - 0x18; + *(unsigned short *)(((int)param_1) + 0x10) = uVar1; + *(unsigned short *)(iVar2 + 0x1a) = *(unsigned short *)(iVar2 + 0x1a) + uVar1; + *(unsigned short *)(iVar2 + 0x12) = (*(unsigned short *)(iVar2 + 0x12) + 0x22) & 0xfff; + ((void (*)(int, void *, void *, int))func_8016BFA8)(((int)param_1), &(*(int *)&D_8019AE4C), &(*(int *)&D_8019AE50), iVar2 + 0x18); + if (*(short *)(iVar2 + 0x1a) < 0) { + ((void (*)(int))func_80146C3C)(((int)param_1)); + } +} -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016BEA0); DEFINE_func_8016BF34() /* dedup: shared engine-core @0x8016bf34 (src/shared) */ @@ -20613,7 +20751,15 @@ DEFINE_func_80172BC8() /* dedup: shared engine-core @0x80172bc8 (src/shared) */ void func_80172C48(void) { } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80172C50); +extern void func_80174684(void *); +extern void func_80172CA0(void*); +void func_80172C50(void *a0) { + + extern s16 D_80126B30; + *(struct S8_80172780 *)&D_80126B30 = *(struct S8_80172780 *)a0; + func_80174684((void *)func_80172CA0); +} + @@ -20830,7 +20976,43 @@ void func_80173A20(void) { DEFINE_func_80173A28() /* dedup: shared engine-core @0x80173a28 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80173A60); + +extern s32 func_8014C118(void*, s32, s32); +extern void func_80174684(void *); +extern void func_80173B4C(void*); + +void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5) +{ + + extern s32 D_80126B58; + extern s32 D_80127508; + extern s16 D_80126B30; + extern struct S80126B38 D_80126B38; + extern s16 D_80126B3A; + extern s16 D_80126B3C; + extern s16 D_8011F9C8; + extern s16 D_80126938; + extern s32 D_8012750C; + s32 *s1 = &D_80126B58; + s32 v0; + + if (a2 != 0) { + D_80127508 = ((s32 (*)(s32, s32, s32))func_8014C118)((s32)s1, a2, (s16)a3); + } else { + D_80127508 = 0; + } + + v0 = s1[8]; + __builtin_memcpy(&D_80126B30, arg5, 8); + (*(s16 *)&D_80126B38) = a0; + D_80126B3A = a1; + D_80126B3C = *(u16 *)(v0 + 0x12); + func_80174684((void *)func_80173B4C); + D_8011F9C8 = 0; + D_80126938 = 0; + D_8012750C = 0; +} + diff --git a/src/ov_SC03_108/ov_SC03_108_jr_8012ACE0.c b/src/ov_SC03_108/ov_SC03_108_jr_8012ACE0.c index dee6e9722..c2bceea88 100644 --- a/src/ov_SC03_108/ov_SC03_108_jr_8012ACE0.c +++ b/src/ov_SC03_108/ov_SC03_108_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_108/nonmatchings/ov_SC03_108_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801811C8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801811CC == D_801811C8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801811C8"); + extern int tbl_D_80187048[][5] __asm__("D_801811CC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_109/ov_SC03_109_jr_8012ACE0.c b/src/ov_SC03_109/ov_SC03_109_jr_8012ACE0.c index 6780728dd..89c2e2674 100644 --- a/src/ov_SC03_109/ov_SC03_109_jr_8012ACE0.c +++ b/src/ov_SC03_109/ov_SC03_109_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_109/nonmatchings/ov_SC03_109_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017E874 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017E878 == D_8017E874 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017E874"); + extern int tbl_D_80187048[][5] __asm__("D_8017E878"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_110/ov_SC03_110_jr_8012ACE0.c b/src/ov_SC03_110/ov_SC03_110_jr_8012ACE0.c index f84a682d4..3a42fd89e 100644 --- a/src/ov_SC03_110/ov_SC03_110_jr_8012ACE0.c +++ b/src/ov_SC03_110/ov_SC03_110_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182294 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80182298 == D_80182294 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182294"); + extern int tbl_D_80187048[][5] __asm__("D_80182298"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_111/ov_SC03_111_jr_8012ACE0.c b/src/ov_SC03_111/ov_SC03_111_jr_8012ACE0.c index da2f8d892..d067d5af4 100644 --- a/src/ov_SC03_111/ov_SC03_111_jr_8012ACE0.c +++ b/src/ov_SC03_111/ov_SC03_111_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_111/nonmatchings/ov_SC03_111_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80184E48 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80184E4C == D_80184E48 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80184E48"); + extern int tbl_D_80187048[][5] __asm__("D_80184E4C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_112/ov_SC03_112_jr_8012ACE0.c b/src/ov_SC03_112/ov_SC03_112_jr_8012ACE0.c index ca87c7706..e0b7d9802 100644 --- a/src/ov_SC03_112/ov_SC03_112_jr_8012ACE0.c +++ b/src/ov_SC03_112/ov_SC03_112_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_112/nonmatchings/ov_SC03_112_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80185C50 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80185C54 == D_80185C50 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80185C50"); + extern int tbl_D_80187048[][5] __asm__("D_80185C54"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_113/ov_SC03_113_jr_8012ACE0.c b/src/ov_SC03_113/ov_SC03_113_jr_8012ACE0.c index 15046872e..4df035a7f 100644 --- a/src/ov_SC03_113/ov_SC03_113_jr_8012ACE0.c +++ b/src/ov_SC03_113/ov_SC03_113_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80183300 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80183304 == D_80183300 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80183300"); + extern int tbl_D_80187048[][5] __asm__("D_80183304"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_114/ov_SC03_114_jr_8012ACE0.c b/src/ov_SC03_114/ov_SC03_114_jr_8012ACE0.c index 4b518b360..bfba62084 100644 --- a/src/ov_SC03_114/ov_SC03_114_jr_8012ACE0.c +++ b/src/ov_SC03_114/ov_SC03_114_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_114/nonmatchings/ov_SC03_114_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017EF68 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017EF6C == D_8017EF68 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017EF68"); + extern int tbl_D_80187048[][5] __asm__("D_8017EF6C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_115/ov_SC03_115_jr_8012ACE0.c b/src/ov_SC03_115/ov_SC03_115_jr_8012ACE0.c index 9f9335626..f3cdbc151 100644 --- a/src/ov_SC03_115/ov_SC03_115_jr_8012ACE0.c +++ b/src/ov_SC03_115/ov_SC03_115_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801809D4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801809D8 == D_801809D4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801809D4"); + extern int tbl_D_80187048[][5] __asm__("D_801809D8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_116/ov_SC03_116_jr_8012ACE0.c b/src/ov_SC03_116/ov_SC03_116_jr_8012ACE0.c index cad1a072e..be7ad0aad 100644 --- a/src/ov_SC03_116/ov_SC03_116_jr_8012ACE0.c +++ b/src/ov_SC03_116/ov_SC03_116_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_116/nonmatchings/ov_SC03_116_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182DD8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80182DDC == D_80182DD8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182DD8"); + extern int tbl_D_80187048[][5] __asm__("D_80182DDC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_117/ov_SC03_117_jr_8012ACE0.c b/src/ov_SC03_117/ov_SC03_117_jr_8012ACE0.c index 82921f43e..39e289d71 100644 --- a/src/ov_SC03_117/ov_SC03_117_jr_8012ACE0.c +++ b/src/ov_SC03_117/ov_SC03_117_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80184DE4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80184DE8 == D_80184DE4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80184DE4"); + extern int tbl_D_80187048[][5] __asm__("D_80184DE8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_118/ov_SC03_118_jr_8012ACE0.c b/src/ov_SC03_118/ov_SC03_118_jr_8012ACE0.c index 312131dd3..11ece8145 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_8012ACE0.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80189E90 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80189E94 == D_80189E90 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80189E90"); + extern int tbl_D_80187048[][5] __asm__("D_80189E94"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8012ACE0.c b/src/ov_SC03_119/ov_SC03_119_jr_8012ACE0.c index 6edd0ec68..11ece8145 100644 --- a/src/ov_SC03_119/ov_SC03_119_jr_8012ACE0.c +++ b/src/ov_SC03_119/ov_SC03_119_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_119/nonmatchings/ov_SC03_119_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80189E90 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80189E94 == D_80189E90 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80189E90"); + extern int tbl_D_80187048[][5] __asm__("D_80189E94"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_121/ov_SC03_121_jr_8012ACE0.c b/src/ov_SC03_121/ov_SC03_121_jr_8012ACE0.c index 4da20a7ab..5fe8fce81 100644 --- a/src/ov_SC03_121/ov_SC03_121_jr_8012ACE0.c +++ b/src/ov_SC03_121/ov_SC03_121_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801826AC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801826B0 == D_801826AC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801826AC"); + extern int tbl_D_80187048[][5] __asm__("D_801826B0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_124/ov_SC03_124_jr_8012ACE0.c b/src/ov_SC03_124/ov_SC03_124_jr_8012ACE0.c index 81f0f8dfe..72b541ebc 100644 --- a/src/ov_SC03_124/ov_SC03_124_jr_8012ACE0.c +++ b/src/ov_SC03_124/ov_SC03_124_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_124/nonmatchings/ov_SC03_124_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018B0D8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018B0DC == D_8018B0D8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018B0D8"); + extern int tbl_D_80187048[][5] __asm__("D_8018B0DC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_125/ov_SC03_125_jr_8012ACE0.c b/src/ov_SC03_125/ov_SC03_125_jr_8012ACE0.c index e3c2b0463..6808534cc 100644 --- a/src/ov_SC03_125/ov_SC03_125_jr_8012ACE0.c +++ b/src/ov_SC03_125/ov_SC03_125_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_125/nonmatchings/ov_SC03_125_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801842A8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801842AC == D_801842A8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801842A8"); + extern int tbl_D_80187048[][5] __asm__("D_801842AC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC03_126/ov_SC03_126_jr_8012ACE0.c b/src/ov_SC03_126/ov_SC03_126_jr_8012ACE0.c index acb4573c4..47c26ec27 100644 --- a/src/ov_SC03_126/ov_SC03_126_jr_8012ACE0.c +++ b/src/ov_SC03_126/ov_SC03_126_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_126/nonmatchings/ov_SC03_126_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F7A0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F7A4 == D_8017F7A0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F7A0"); + extern int tbl_D_80187048[][5] __asm__("D_8017F7A4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_000/ov_SC04_000_jr_8012ACE0.c b/src/ov_SC04_000/ov_SC04_000_jr_8012ACE0.c index e36487c52..3fc88d0a8 100644 --- a/src/ov_SC04_000/ov_SC04_000_jr_8012ACE0.c +++ b/src/ov_SC04_000/ov_SC04_000_jr_8012ACE0.c @@ -2191,7 +2191,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801837AC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801837B0 == D_801837AC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801837AC"); + extern int tbl_D_80187048[][5] __asm__("D_801837B0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_002/ov_SC04_002_jr_8012ACE0.c b/src/ov_SC04_002/ov_SC04_002_jr_8012ACE0.c index 4409db44a..047130061 100644 --- a/src/ov_SC04_002/ov_SC04_002_jr_8012ACE0.c +++ b/src/ov_SC04_002/ov_SC04_002_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_002/nonmatchings/ov_SC04_002_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80188918 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018891C == D_80188918 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80188918"); + extern int tbl_D_80187048[][5] __asm__("D_8018891C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_003/ov_SC04_003_jr_8012ACE0.c b/src/ov_SC04_003/ov_SC04_003_jr_8012ACE0.c index ce8cf7f56..ccd1e5439 100644 --- a/src/ov_SC04_003/ov_SC04_003_jr_8012ACE0.c +++ b/src/ov_SC04_003/ov_SC04_003_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801826B4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801826B8 == D_801826B4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801826B4"); + extern int tbl_D_80187048[][5] __asm__("D_801826B8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_004/ov_SC04_004_jr_8012ACE0.c b/src/ov_SC04_004/ov_SC04_004_jr_8012ACE0.c index 30b73dcd3..e41544e52 100644 --- a/src/ov_SC04_004/ov_SC04_004_jr_8012ACE0.c +++ b/src/ov_SC04_004/ov_SC04_004_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80184BE8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80184BEC == D_80184BE8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80184BE8"); + extern int tbl_D_80187048[][5] __asm__("D_80184BEC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_005/ov_SC04_005_jr_8012ACE0.c b/src/ov_SC04_005/ov_SC04_005_jr_8012ACE0.c index ce8f89ec0..ee2b01d85 100644 --- a/src/ov_SC04_005/ov_SC04_005_jr_8012ACE0.c +++ b/src/ov_SC04_005/ov_SC04_005_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018801C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80188020 == D_8018801C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018801C"); + extern int tbl_D_80187048[][5] __asm__("D_80188020"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_006/ov_SC04_006_jr_8012ACE0.c b/src/ov_SC04_006/ov_SC04_006_jr_8012ACE0.c index 543ecae76..1f4e774d9 100644 --- a/src/ov_SC04_006/ov_SC04_006_jr_8012ACE0.c +++ b/src/ov_SC04_006/ov_SC04_006_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801800FC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80180100 == D_801800FC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801800FC"); + extern int tbl_D_80187048[][5] __asm__("D_80180100"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_007/ov_SC04_007_jr_8012ACE0.c b/src/ov_SC04_007/ov_SC04_007_jr_8012ACE0.c index 4ed61fd0a..42b76c62e 100644 --- a/src/ov_SC04_007/ov_SC04_007_jr_8012ACE0.c +++ b/src/ov_SC04_007/ov_SC04_007_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801860B4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801860B8 == D_801860B4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801860B4"); + extern int tbl_D_80187048[][5] __asm__("D_801860B8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_008/ov_SC04_008_jr_8012ACE0.c b/src/ov_SC04_008/ov_SC04_008_jr_8012ACE0.c index 8e1469260..fd2c5b9c5 100644 --- a/src/ov_SC04_008/ov_SC04_008_jr_8012ACE0.c +++ b/src/ov_SC04_008/ov_SC04_008_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_008/nonmatchings/ov_SC04_008_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017EFEC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017EFF0 == D_8017EFEC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017EFEC"); + extern int tbl_D_80187048[][5] __asm__("D_8017EFF0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_009/ov_SC04_009_jr_8012ACE0.c b/src/ov_SC04_009/ov_SC04_009_jr_8012ACE0.c index a4d6ab03e..7da0dd0f1 100644 --- a/src/ov_SC04_009/ov_SC04_009_jr_8012ACE0.c +++ b/src/ov_SC04_009/ov_SC04_009_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_009/nonmatchings/ov_SC04_009_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F018 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F01C == D_8017F018 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F018"); + extern int tbl_D_80187048[][5] __asm__("D_8017F01C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_010/ov_SC04_010_jr_8012ACE0.c b/src/ov_SC04_010/ov_SC04_010_jr_8012ACE0.c index b15a5946f..57092df79 100644 --- a/src/ov_SC04_010/ov_SC04_010_jr_8012ACE0.c +++ b/src/ov_SC04_010/ov_SC04_010_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_010/nonmatchings/ov_SC04_010_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017E6C4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017E6C8 == D_8017E6C4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017E6C4"); + extern int tbl_D_80187048[][5] __asm__("D_8017E6C8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c b/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c index bc708e0fe..1dea2dd65 100644 --- a/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c +++ b/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80190954 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80190958 == D_80190954 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80190954"); + extern int tbl_D_80187048[][5] __asm__("D_80190958"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_012/ov_SC04_012_jr_8012ACE0.c b/src/ov_SC04_012/ov_SC04_012_jr_8012ACE0.c index 6a80c3f50..d706416cb 100644 --- a/src/ov_SC04_012/ov_SC04_012_jr_8012ACE0.c +++ b/src/ov_SC04_012/ov_SC04_012_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017EB28 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017EB2C == D_8017EB28 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017EB28"); + extern int tbl_D_80187048[][5] __asm__("D_8017EB2C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_015/ov_SC04_015_jr_8012ACE0.c b/src/ov_SC04_015/ov_SC04_015_jr_8012ACE0.c index 8ecfad24f..a362f5d77 100644 --- a/src/ov_SC04_015/ov_SC04_015_jr_8012ACE0.c +++ b/src/ov_SC04_015/ov_SC04_015_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_015/nonmatchings/ov_SC04_015_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80184A60 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80184A64 == D_80184A60 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80184A60"); + extern int tbl_D_80187048[][5] __asm__("D_80184A64"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_016/ov_SC04_016_jr_8012ACE0.c b/src/ov_SC04_016/ov_SC04_016_jr_8012ACE0.c index 84be80933..fa1d58c5b 100644 --- a/src/ov_SC04_016/ov_SC04_016_jr_8012ACE0.c +++ b/src/ov_SC04_016/ov_SC04_016_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80180524 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80180528 == D_80180524 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80180524"); + extern int tbl_D_80187048[][5] __asm__("D_80180528"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c b/src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c index 19fab8c99..1595d2e7b 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_8012ACE0.c @@ -2191,7 +2191,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018D73C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018D740 == D_8018D73C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018D73C"); + extern int tbl_D_80187048[][5] __asm__("D_8018D740"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.c b/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.c index 88733d9c1..1595d2e7b 100644 --- a/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.c +++ b/src/ov_SC04_019/ov_SC04_019_jr_8012ACE0.c @@ -2191,7 +2191,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_019/nonmatchings/ov_SC04_019_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018D73C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018D740 == D_8018D73C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018D73C"); + extern int tbl_D_80187048[][5] __asm__("D_8018D740"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_020/ov_SC04_020_jr_8012ACE0.c b/src/ov_SC04_020/ov_SC04_020_jr_8012ACE0.c index fe93967cb..6ab0c8c6c 100644 --- a/src/ov_SC04_020/ov_SC04_020_jr_8012ACE0.c +++ b/src/ov_SC04_020/ov_SC04_020_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_020/nonmatchings/ov_SC04_020_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80183874 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80183878 == D_80183874 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80183874"); + extern int tbl_D_80187048[][5] __asm__("D_80183878"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC04_021/ov_SC04_021_jr_8012ACE0.c b/src/ov_SC04_021/ov_SC04_021_jr_8012ACE0.c index c6e720ac6..47c26ec27 100644 --- a/src/ov_SC04_021/ov_SC04_021_jr_8012ACE0.c +++ b/src/ov_SC04_021/ov_SC04_021_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_021/nonmatchings/ov_SC04_021_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F7A0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F7A4 == D_8017F7A0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F7A0"); + extern int tbl_D_80187048[][5] __asm__("D_8017F7A4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_000/ov_SC05_000_jr_8012ACE0.c b/src/ov_SC05_000/ov_SC05_000_jr_8012ACE0.c index 516b7c569..8b9ad1910 100644 --- a/src/ov_SC05_000/ov_SC05_000_jr_8012ACE0.c +++ b/src/ov_SC05_000/ov_SC05_000_jr_8012ACE0.c @@ -2191,7 +2191,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_000/nonmatchings/ov_SC05_000_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017E7B4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017E7B8 == D_8017E7B4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017E7B4"); + extern int tbl_D_80187048[][5] __asm__("D_8017E7B8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_001/ov_SC05_001_jr_8012ACE0.c b/src/ov_SC05_001/ov_SC05_001_jr_8012ACE0.c index 1b929482c..4ce4263b0 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_8012ACE0.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80185F90 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80185F94 == D_80185F90 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80185F90"); + extern int tbl_D_80187048[][5] __asm__("D_80185F94"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_002/ov_SC05_002_jr_8012ACE0.c b/src/ov_SC05_002/ov_SC05_002_jr_8012ACE0.c index 151edc57a..04dc488fe 100644 --- a/src/ov_SC05_002/ov_SC05_002_jr_8012ACE0.c +++ b/src/ov_SC05_002/ov_SC05_002_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_002/nonmatchings/ov_SC05_002_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80180750 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80180754 == D_80180750 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80180750"); + extern int tbl_D_80187048[][5] __asm__("D_80180754"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_003/ov_SC05_003_jr_8012ACE0.c b/src/ov_SC05_003/ov_SC05_003_jr_8012ACE0.c index 2511bf3fd..4de46bd18 100644 --- a/src/ov_SC05_003/ov_SC05_003_jr_8012ACE0.c +++ b/src/ov_SC05_003/ov_SC05_003_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_003/nonmatchings/ov_SC05_003_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182A88 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80182A8C == D_80182A88 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182A88"); + extern int tbl_D_80187048[][5] __asm__("D_80182A8C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_004/ov_SC05_004_jr_8012ACE0.c b/src/ov_SC05_004/ov_SC05_004_jr_8012ACE0.c index f2bda3556..70255e710 100644 --- a/src/ov_SC05_004/ov_SC05_004_jr_8012ACE0.c +++ b/src/ov_SC05_004/ov_SC05_004_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_004/nonmatchings/ov_SC05_004_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80181B94 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80181B98 == D_80181B94 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80181B94"); + extern int tbl_D_80187048[][5] __asm__("D_80181B98"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_005/ov_SC05_005_jr_8012ACE0.c b/src/ov_SC05_005/ov_SC05_005_jr_8012ACE0.c index 15a15c5cb..9a6e99d7f 100644 --- a/src/ov_SC05_005/ov_SC05_005_jr_8012ACE0.c +++ b/src/ov_SC05_005/ov_SC05_005_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182968 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018296C == D_80182968 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182968"); + extern int tbl_D_80187048[][5] __asm__("D_8018296C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_006/ov_SC05_006_jr_8012ACE0.c b/src/ov_SC05_006/ov_SC05_006_jr_8012ACE0.c index d357890ed..8cf27a433 100644 --- a/src/ov_SC05_006/ov_SC05_006_jr_8012ACE0.c +++ b/src/ov_SC05_006/ov_SC05_006_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_006/nonmatchings/ov_SC05_006_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F988 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F98C == D_8017F988 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F988"); + extern int tbl_D_80187048[][5] __asm__("D_8017F98C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_007/ov_SC05_007_jr_8012ACE0.c b/src/ov_SC05_007/ov_SC05_007_jr_8012ACE0.c index 033e699c1..7d7f3289a 100644 --- a/src/ov_SC05_007/ov_SC05_007_jr_8012ACE0.c +++ b/src/ov_SC05_007/ov_SC05_007_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80180F84 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80180F88 == D_80180F84 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80180F84"); + extern int tbl_D_80187048[][5] __asm__("D_80180F88"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_008/ov_SC05_008_jr_8012ACE0.c b/src/ov_SC05_008/ov_SC05_008_jr_8012ACE0.c index ac10e07f5..d302d1ac2 100644 --- a/src/ov_SC05_008/ov_SC05_008_jr_8012ACE0.c +++ b/src/ov_SC05_008/ov_SC05_008_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_008/nonmatchings/ov_SC05_008_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182EDC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80182EE0 == D_80182EDC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182EDC"); + extern int tbl_D_80187048[][5] __asm__("D_80182EE0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_009/ov_SC05_009_jr_8012ACE0.c b/src/ov_SC05_009/ov_SC05_009_jr_8012ACE0.c index 7e05c4167..c085a84da 100644 --- a/src/ov_SC05_009/ov_SC05_009_jr_8012ACE0.c +++ b/src/ov_SC05_009/ov_SC05_009_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_009/nonmatchings/ov_SC05_009_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017EFEC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017EFF0 == D_8017EFEC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017EFEC"); + extern int tbl_D_80187048[][5] __asm__("D_8017EFF0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_010/ov_SC05_010_jr_8012ACE0.c b/src/ov_SC05_010/ov_SC05_010_jr_8012ACE0.c index b2199a8c3..1d8ed3578 100644 --- a/src/ov_SC05_010/ov_SC05_010_jr_8012ACE0.c +++ b/src/ov_SC05_010/ov_SC05_010_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80188EC8 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80188ECC == D_80188EC8 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80188EC8"); + extern int tbl_D_80187048[][5] __asm__("D_80188ECC"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_011/ov_SC05_011_jr_8012ACE0.c b/src/ov_SC05_011/ov_SC05_011_jr_8012ACE0.c index 457dfd275..d3d8eac1a 100644 --- a/src/ov_SC05_011/ov_SC05_011_jr_8012ACE0.c +++ b/src/ov_SC05_011/ov_SC05_011_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_011/nonmatchings/ov_SC05_011_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017E240 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017E244 == D_8017E240 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017E240"); + extern int tbl_D_80187048[][5] __asm__("D_8017E244"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_017/ov_SC05_017_jr_8012ACE0.c b/src/ov_SC05_017/ov_SC05_017_jr_8012ACE0.c index eb0e4cfe7..6f6cbe48b 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_8012ACE0.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018D700 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018D704 == D_8018D700 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018D700"); + extern int tbl_D_80187048[][5] __asm__("D_8018D704"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_018/ov_SC05_018_jr_8012ACE0.c b/src/ov_SC05_018/ov_SC05_018_jr_8012ACE0.c index 9f4f5672f..77f16196c 100644 --- a/src/ov_SC05_018/ov_SC05_018_jr_8012ACE0.c +++ b/src/ov_SC05_018/ov_SC05_018_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_018/nonmatchings/ov_SC05_018_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80186E5C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80186E60 == D_80186E5C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80186E5C"); + extern int tbl_D_80187048[][5] __asm__("D_80186E60"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC05_019/ov_SC05_019_jr_8012ACE0.c b/src/ov_SC05_019/ov_SC05_019_jr_8012ACE0.c index 0bf403809..47c26ec27 100644 --- a/src/ov_SC05_019/ov_SC05_019_jr_8012ACE0.c +++ b/src/ov_SC05_019/ov_SC05_019_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_019/nonmatchings/ov_SC05_019_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F7A0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F7A4 == D_8017F7A0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F7A0"); + extern int tbl_D_80187048[][5] __asm__("D_8017F7A4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_000/ov_SC06_000_jr_8012ACE0.c b/src/ov_SC06_000/ov_SC06_000_jr_8012ACE0.c index 3fe83536a..0e985f002 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_8012ACE0.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_8012ACE0.c @@ -2191,7 +2191,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801887B0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801887B4 == D_801887B0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801887B0"); + extern int tbl_D_80187048[][5] __asm__("D_801887B4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_006/ov_SC06_006_jr_8012ACE0.c b/src/ov_SC06_006/ov_SC06_006_jr_8012ACE0.c index bc1927c0f..509b1443a 100644 --- a/src/ov_SC06_006/ov_SC06_006_jr_8012ACE0.c +++ b/src/ov_SC06_006/ov_SC06_006_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_006/nonmatchings/ov_SC06_006_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801822D4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801822D8 == D_801822D4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801822D4"); + extern int tbl_D_80187048[][5] __asm__("D_801822D8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_008/ov_SC06_008_jr_8012ACE0.c b/src/ov_SC06_008/ov_SC06_008_jr_8012ACE0.c index e88bf2dab..d7082002c 100644 --- a/src/ov_SC06_008/ov_SC06_008_jr_8012ACE0.c +++ b/src/ov_SC06_008/ov_SC06_008_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_008/nonmatchings/ov_SC06_008_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80185D3C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80185D40 == D_80185D3C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80185D3C"); + extern int tbl_D_80187048[][5] __asm__("D_80185D40"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_010/ov_SC06_010_jr_8012ACE0.c b/src/ov_SC06_010/ov_SC06_010_jr_8012ACE0.c index 57c7f1197..a9fc451cb 100644 --- a/src/ov_SC06_010/ov_SC06_010_jr_8012ACE0.c +++ b/src/ov_SC06_010/ov_SC06_010_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_010/nonmatchings/ov_SC06_010_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80186F18 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80186F1C == D_80186F18 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80186F18"); + extern int tbl_D_80187048[][5] __asm__("D_80186F1C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_011/ov_SC06_011_jr_8012ACE0.c b/src/ov_SC06_011/ov_SC06_011_jr_8012ACE0.c index c0a373b5f..7706fb8de 100644 --- a/src/ov_SC06_011/ov_SC06_011_jr_8012ACE0.c +++ b/src/ov_SC06_011/ov_SC06_011_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_011/nonmatchings/ov_SC06_011_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80180978 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018097C == D_80180978 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80180978"); + extern int tbl_D_80187048[][5] __asm__("D_8018097C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_013/ov_SC06_013_jr_8012ACE0.c b/src/ov_SC06_013/ov_SC06_013_jr_8012ACE0.c index a6ff29a0c..72150a3be 100644 --- a/src/ov_SC06_013/ov_SC06_013_jr_8012ACE0.c +++ b/src/ov_SC06_013/ov_SC06_013_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_013/nonmatchings/ov_SC06_013_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017F0F4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017F0F8 == D_8017F0F4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017F0F4"); + extern int tbl_D_80187048[][5] __asm__("D_8017F0F8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_014/ov_SC06_014_jr_8012ACE0.c b/src/ov_SC06_014/ov_SC06_014_jr_8012ACE0.c index 3b65c08b3..814a11456 100644 --- a/src/ov_SC06_014/ov_SC06_014_jr_8012ACE0.c +++ b/src/ov_SC06_014/ov_SC06_014_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_014/nonmatchings/ov_SC06_014_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80180458 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018045C == D_80180458 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80180458"); + extern int tbl_D_80187048[][5] __asm__("D_8018045C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_015/ov_SC06_015_jr_8012ACE0.c b/src/ov_SC06_015/ov_SC06_015_jr_8012ACE0.c index a5ccc5432..0801191d4 100644 --- a/src/ov_SC06_015/ov_SC06_015_jr_8012ACE0.c +++ b/src/ov_SC06_015/ov_SC06_015_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_015/nonmatchings/ov_SC06_015_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017EFB0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017EFB4 == D_8017EFB0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017EFB0"); + extern int tbl_D_80187048[][5] __asm__("D_8017EFB4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_016/ov_SC06_016_jr_8012ACE0.c b/src/ov_SC06_016/ov_SC06_016_jr_8012ACE0.c index 610147f6d..659cdc7de 100644 --- a/src/ov_SC06_016/ov_SC06_016_jr_8012ACE0.c +++ b/src/ov_SC06_016/ov_SC06_016_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_016/nonmatchings/ov_SC06_016_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801853C0 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801853C4 == D_801853C0 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801853C0"); + extern int tbl_D_80187048[][5] __asm__("D_801853C4"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.c b/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.c index 0eb7f7b76..d1c678778 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80193AFC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80193B00 == D_80193AFC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80193AFC"); + extern int tbl_D_80187048[][5] __asm__("D_80193B00"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_020/ov_SC06_020_jr_8012ACE0.c b/src/ov_SC06_020/ov_SC06_020_jr_8012ACE0.c index 37218090b..dac7d9d90 100644 --- a/src/ov_SC06_020/ov_SC06_020_jr_8012ACE0.c +++ b/src/ov_SC06_020/ov_SC06_020_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80185584 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80185588 == D_80185584 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80185584"); + extern int tbl_D_80187048[][5] __asm__("D_80185588"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_022/ov_SC06_022_jr_8012ACE0.c b/src/ov_SC06_022/ov_SC06_022_jr_8012ACE0.c index 29cf715a8..86f0f7755 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_8012ACE0.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018D840 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018D844 == D_8018D840 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018D840"); + extern int tbl_D_80187048[][5] __asm__("D_8018D844"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_024/ov_SC06_024_jr_8012ACE0.c b/src/ov_SC06_024/ov_SC06_024_jr_8012ACE0.c index 5ad8a3eba..b3b2da4d0 100644 --- a/src/ov_SC06_024/ov_SC06_024_jr_8012ACE0.c +++ b/src/ov_SC06_024/ov_SC06_024_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018FD18 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018FD1C == D_8018FD18 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018FD18"); + extern int tbl_D_80187048[][5] __asm__("D_8018FD1C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_025/ov_SC06_025_jr_8012ACE0.c b/src/ov_SC06_025/ov_SC06_025_jr_8012ACE0.c index 21771dcc0..7fb2f7344 100644 --- a/src/ov_SC06_025/ov_SC06_025_jr_8012ACE0.c +++ b/src/ov_SC06_025/ov_SC06_025_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_801851BC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_801851C0 == D_801851BC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_801851BC"); + extern int tbl_D_80187048[][5] __asm__("D_801851C0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_027/ov_SC06_027_jr_8012ACE0.c b/src/ov_SC06_027/ov_SC06_027_jr_8012ACE0.c index e1310d03c..a96115252 100644 --- a/src/ov_SC06_027/ov_SC06_027_jr_8012ACE0.c +++ b/src/ov_SC06_027/ov_SC06_027_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_027/nonmatchings/ov_SC06_027_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017E4FC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017E500 == D_8017E4FC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017E4FC"); + extern int tbl_D_80187048[][5] __asm__("D_8017E500"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_029/ov_SC06_029_jr_8012ACE0.c b/src/ov_SC06_029/ov_SC06_029_jr_8012ACE0.c index 5c43ac6be..8094d46a6 100644 --- a/src/ov_SC06_029/ov_SC06_029_jr_8012ACE0.c +++ b/src/ov_SC06_029/ov_SC06_029_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8018CA90 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8018CA94 == D_8018CA90 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8018CA90"); + extern int tbl_D_80187048[][5] __asm__("D_8018CA94"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_030/ov_SC06_030_jr_8012ACE0.c b/src/ov_SC06_030/ov_SC06_030_jr_8012ACE0.c index cafe1a8e2..4af848334 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_8012ACE0.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182380 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80182384 == D_80182380 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182380"); + extern int tbl_D_80187048[][5] __asm__("D_80182384"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_032/ov_SC06_032_jr_8012ACE0.c b/src/ov_SC06_032/ov_SC06_032_jr_8012ACE0.c index d157e3bef..c1587dee1 100644 --- a/src/ov_SC06_032/ov_SC06_032_jr_8012ACE0.c +++ b/src/ov_SC06_032/ov_SC06_032_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8019384C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80193850 == D_8019384C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8019384C"); + extern int tbl_D_80187048[][5] __asm__("D_80193850"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC06_033/ov_SC06_033_jr_8012ACE0.c b/src/ov_SC06_033/ov_SC06_033_jr_8012ACE0.c index 751ccb3d8..2205b3188 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_8012ACE0.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80191D5C is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80191D60 == D_80191D5C + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80191D5C"); + extern int tbl_D_80187048[][5] __asm__("D_80191D60"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC07_000/ov_SC07_000_jr_8012ACE0.c b/src/ov_SC07_000/ov_SC07_000_jr_8012ACE0.c index aa76220b3..4fdbe1bbe 100644 --- a/src/ov_SC07_000/ov_SC07_000_jr_8012ACE0.c +++ b/src/ov_SC07_000/ov_SC07_000_jr_8012ACE0.c @@ -2191,7 +2191,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC07_000/nonmatchings/ov_SC07_000_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80182BA4 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80182BA8 == D_80182BA4 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80182BA4"); + extern int tbl_D_80187048[][5] __asm__("D_80182BA8"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC07_001/ov_SC07_001_jr_8012ACE0.c b/src/ov_SC07_001/ov_SC07_001_jr_8012ACE0.c index 4a1fd63b5..77dfb6473 100644 --- a/src/ov_SC07_001/ov_SC07_001_jr_8012ACE0.c +++ b/src/ov_SC07_001/ov_SC07_001_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80181A54 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80181A58 == D_80181A54 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80181A54"); + extern int tbl_D_80187048[][5] __asm__("D_80181A58"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC07_002/ov_SC07_002_jr_8012ACE0.c b/src/ov_SC07_002/ov_SC07_002_jr_8012ACE0.c index 21baa2c8d..b985c481b 100644 --- a/src/ov_SC07_002/ov_SC07_002_jr_8012ACE0.c +++ b/src/ov_SC07_002/ov_SC07_002_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_80186D10 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_80186D14 == D_80186D10 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_80186D10"); + extern int tbl_D_80187048[][5] __asm__("D_80186D14"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC07_008/ov_SC07_008_jr_8012ACE0.c b/src/ov_SC07_008/ov_SC07_008_jr_8012ACE0.c index 3322f4598..3fbd7537e 100644 --- a/src/ov_SC07_008/ov_SC07_008_jr_8012ACE0.c +++ b/src/ov_SC07_008/ov_SC07_008_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC07_008/nonmatchings/ov_SC07_008_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017D828 is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017D82C == D_8017D828 + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017D828"); + extern int tbl_D_80187048[][5] __asm__("D_8017D82C"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/src/ov_SC07_009/ov_SC07_009_jr_8012ACE0.c b/src/ov_SC07_009/ov_SC07_009_jr_8012ACE0.c index 801e78ecb..1cd0a42f9 100644 --- a/src/ov_SC07_009/ov_SC07_009_jr_8012ACE0.c +++ b/src/ov_SC07_009/ov_SC07_009_jr_8012ACE0.c @@ -2189,7 +2189,37 @@ void func_80131FDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC07_009/nonmatchings/ov_SC07_009_jr_8012ACE0", func_80132018); + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); + +/* §37 asm-label aliases: D_8017E2CC is declared in this TU as `void (*[])(void)` + * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view + * below is this function's own. D_8017E2D0 == D_8017E2CC + 4 is a SEPARATE + * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ + +void func_80132018(int param_1) +{ + + extern int tbl_D_80187044[][5] __asm__("D_8017E2CC"); + extern int tbl_D_80187048[][5] __asm__("D_8017E2D0"); + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; + *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; + *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; + } +} + DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ diff --git a/tools/scope_data_externs.py b/tools/scope_data_externs.py index 4218c02bd..84064a902 100644 --- a/tools/scope_data_externs.py +++ b/tools/scope_data_externs.py @@ -90,6 +90,31 @@ def _body_open_brace(body, func): return (j + 1) if j >= 0 else (i + 1) +_ASM_LABEL_RE = re.compile(r'__asm__\s*\(\s*"([^"]+)"\s*\)') + + +def is_asm_alias(ln): + """True for a §37/§84 ASM-LABEL ALIAS: `extern T ident… __asm__("SYM");` with ident != SYM. + + THE DROP BELOW MUST NOT REACH THESE (Phase 30 S47, byte-witnessed on func_80132018). + The "TU already declares it above us -> drop ours" rule keys on the SYMBOL, but an alias binds a + DIFFERENT C IDENTIFIER to that symbol. The TU's `extern void (*D_801851BC[])(void);` declares + `D_801851BC`; it does NOT declare `tbl_D_80187044`. Dropping the alias therefore leaves the body + referencing an undeclared name — `tbl_D_80187044' undeclared` — which cc1 reports with no + `error:` prefix, so the sweep classified all 132 siblings as CC1-FAIL(no-diagnostic). + + The bitter part: the alias exists PRECISELY BECAUSE the TU declares that symbol with a + conflicting type (a `void (*[])(void)` dispatch table vs this function's 20-byte-stride view). + So the drop rule fired on exactly the declarations written to survive it, and undid the + workaround. An alias can never collide with the TU's declaration — the identifiers differ — so + it is demoted into the body like any other, never dropped.""" + m = _ASM_LABEL_RE.search(ln) + if not m: + return False + ids = re.findall(r'[A-Za-z_]\w*', ln[:m.start()]) + return bool(ids) and ids[-1] != m.group(1) + + def fix(body, tu_text, insert_pos, func): """Demote the body's file-scope DATA externs that the TU does not already declare at file scope above `insert_pos`. Returns (new_body, [moved symbols]). A no-op (body unchanged) when nothing @@ -107,7 +132,7 @@ def fix(body, tu_text, insert_pos, func): # redeclaration conflicts at ANY scope; the drop below must reach both. if ANY_EXTERN_RE.match(ln) and not FILE_EXTERN_RE.match(ln): d = DATA_SYM_RE.search(ln) - if d and d.group(0) in above: + if d and d.group(0) in above and not is_asm_alias(ln): dropped.append(d.group(0)) continue keep_lines.append(ln) @@ -115,7 +140,9 @@ def fix(body, tu_text, insert_pos, func): if FILE_EXTERN_RE.match(ln): # col-0 extern (match => anchored at col 0) d = DATA_SYM_RE.search(ln) if d: - if d.group(0) not in above: + # An ASM-LABEL ALIAS is demoted, never dropped: its C identifier is not the symbol, + # so the TU's declaration does not cover it (see is_asm_alias). + if d.group(0) not in above or is_asm_alias(ln): demote.append((ln, d.group(0))) continue # drop from the file-scope preamble # THE TU ALREADY DECLARES IT ABOVE US -> DROP OURS ENTIRELY (Phase 29 SESSION-22).