diff --git a/Makefile b/Makefile index 534b45a7a..81be2974f 100644 --- a/Makefile +++ b/Makefile @@ -321,6 +321,10 @@ sig-resident: # sig-modules (P30 S44): sign every module-class binary at ITS OWN vram (from modules.mk) with its # own TEXT_LO (the §154 module-id-word law: code starts past the header; bootstrap from offset 0 # yields 0 functions). Same derived-jobs shape as sig-overlays (R33). Empty MODULE_BINARIES = no-op. +# S45: SEED from the built ELF's text symbols when the build exists (R33 — splat's post-link +# boundaries are the finer oracle; --bootstrap's linear partition GLUES adjacent functions around +# jtbl-dispatch code, which read as 24 TRUNCATED slices in audit-corpus). Fresh-clone fallback +# (no build yet) stays --bootstrap; the next sig-modules after a build self-heals. MODULE_SIG_JOBS := $(foreach a,$(MODULE_BINARIES),$(a):$($(a)_EXE):$($(a)_VRAM_BASE):$($(a)_TEXT_LO)) sig-modules: @n=0 @@ -328,8 +332,20 @@ sig-modules: alias=$${job%%:*}; rest=$${job#*:}; f=$${rest%%:*}; rest=$${rest#*:} vram=$${rest%%:*}; tlo=$${rest#*:} [ -f "$$f" ] || { echo "sig-modules: WARN no payload for $$alias ($$f)"; continue; } - $(VENV_PY) tools/sig_image.py --image "$$f" --vram-base "$$vram" --bootstrap --name "$$alias" \ - $${tlo:+--text-lo "$$tlo"} >/dev/null + elf="build/$$alias/$$alias.elf" + if [ -f "$$elf" ]; then + # func_*-named, 4-aligned, at/after TEXT_LO only: the module links into ONE output + # section, so nm types EVERY symbol T — data labels (odd addresses) included. + mipsel-linux-gnu-nm "$$elf" | awk -v lo=$$(($$tlo)) \ + '$$2=="T" && $$3~"^func_" { a=strtonum("0x" $$1); if (a>=lo && a%4==0) printf "0x%X\n", a }' \ + | sort -u > ".run/seeds.$$alias.txt" + $(VENV_PY) tools/sig_image.py --image "$$f" --vram-base "$$vram" \ + --seeds ".run/seeds.$$alias.txt" --name "$$alias" \ + $${tlo:+--text-lo "$$tlo"} >/dev/null + else + $(VENV_PY) tools/sig_image.py --image "$$f" --vram-base "$$vram" --bootstrap --name "$$alias" \ + $${tlo:+--text-lo "$$tlo"} >/dev/null + fi n=$$((n+1)) done echo "sig-modules: signed $$n modules (of $(words $(MODULE_BINARIES)) onboarded)" diff --git a/docs/disc-ledger.md b/docs/disc-ledger.md index c5ae06cca..cade4bf93 100644 --- a/docs/disc-ledger.md +++ b/docs/disc-ledger.md @@ -9,8 +9,8 @@ | bucket | bytes | share | |---|---:|---:| -| onboarded-code | 48,592,729 | 11.68% | -| unclaimed-code | 2,038,104 | 0.49% | +| onboarded-code | 49,594,625 | 11.92% | +| unclaimed-code | 1,036,208 | 0.25% | | classified-data | 134,265,572 | 32.27% | | audio-video | 184,338,000 | 44.31% | | filesystem-metadata | 46,787,355 | 11.25% | @@ -108,50 +108,11 @@ | MAIN.CD/20 | 1 | 1 | 3,244 | data | code | 3 | 0.84/0.0173 | | SLUS_007.26 | - | - | 413,696 | code | data | 0 | 0.96/0.0143 | -## Code payloads — 75 UNCLAIMED of 218 +## Code payloads — 34 UNCLAIMED of 218 | file | entry | type | bytes | bucket | claimed-by | valid/jr | |---|---|---|---:|---|---|---| -| MAIN.CD/0 | 0 | 1 | 19,996 | unclaimed-code | UNCLAIMED | 0.73/0.0022 L2=3 | -| MAIN.CD/1 | 1 | 1 | 19,996 | unclaimed-code | UNCLAIMED | 0.73/0.0022 L2=3 | -| MAIN.CD/11 | 1 | 1 | 24,240 | unclaimed-code | UNCLAIMED | 0.95/0.0035 L2=3 | -| MAIN.CD/13 | 1 | 1 | 6,100 | unclaimed-code | UNCLAIMED | 0.78/0.0105 L2=3 | -| MAIN.CD/14 | 1 | 1 | 2,088 | unclaimed-code | UNCLAIMED | 0.99/0.0249 L2=3 | -| MAIN.CD/15 | 1 | 1 | 6,768 | unclaimed-code | UNCLAIMED | 0.86/0.0118 L2=3 | -| MAIN.CD/16 | 1 | 1 | 1,928 | unclaimed-code | UNCLAIMED | 0.99/0.0270 L2=3 | -| MAIN.CD/17 | 1 | 1 | 1,492 | unclaimed-code | UNCLAIMED | 0.97/0.0268 L2=3 | -| MAIN.CD/18 | 1 | 1 | 2,712 | unclaimed-code | UNCLAIMED | 0.96/0.0162 L2=3 | -| MAIN.CD/19 | 1 | 1 | 6,760 | unclaimed-code | UNCLAIMED | 0.94/0.0130 L2=3 | -| MAIN.CD/20 | 1 | 1 | 3,244 | unclaimed-code | UNCLAIMED | 0.84/0.0173 L2=3 | -| MAIN.CD/21 | 1 | 1 | 1,936 | unclaimed-code | UNCLAIMED | 0.99/0.0227 L2=3 | -| MAIN.CD/22 | 1 | 1 | 4,072 | unclaimed-code | UNCLAIMED | 1.00/0.0324 L2=3 | -| MAIN.CD/23 | 0 | 1 | 388 | unclaimed-code | UNCLAIMED | 0.99/0.0619 L2=3 | -| MAIN.CD/24 | 0 | 1 | 332 | unclaimed-code | UNCLAIMED | 0.99/0.0723 L2=3 | -| MAIN.CD/25 | 1 | 1 | 6,396 | unclaimed-code | UNCLAIMED | 0.87/0.0188 L2=3 | -| MAIN.CD/26 | 1 | 1 | 3,600 | unclaimed-code | UNCLAIMED | 0.99/0.0267 L2=3 | -| MAIN.CD/27 | 1 | 1 | 5,272 | unclaimed-code | UNCLAIMED | 0.98/0.0220 L2=3 | -| MAIN.CD/28 | 1 | 1 | 4,460 | unclaimed-code | UNCLAIMED | 0.99/0.0197 L2=3 | -| MAIN.CD/29 | 1 | 1 | 1,984 | unclaimed-code | UNCLAIMED | 0.98/0.0222 L2=3 | -| MAIN.CD/30 | 1 | 1 | 1,876 | unclaimed-code | UNCLAIMED | 0.98/0.0213 L2=3 | -| MAIN.CD/31 | 1 | 1 | 5,044 | unclaimed-code | UNCLAIMED | 0.97/0.0143 L2=3 | -| MAIN.CD/32 | 1 | 1 | 5,572 | unclaimed-code | UNCLAIMED | 0.87/0.0072 L2=3 | -| MAIN.CD/33 | 1 | 1 | 3,264 | unclaimed-code | UNCLAIMED | 0.99/0.0233 L2=3 | -| MAIN.CD/34 | 1 | 1 | 7,444 | unclaimed-code | UNCLAIMED | 0.92/0.0150 L2=3 | -| MAIN.CD/35 | 1 | 1 | 1,248 | unclaimed-code | UNCLAIMED | 0.97/0.0513 L2=3 | -| MAIN.CD/36 | 1 | 1 | 4,916 | unclaimed-code | UNCLAIMED | 0.99/0.0228 L2=3 | -| MAIN.CD/37 | 1 | 1 | 2,904 | unclaimed-code | UNCLAIMED | 0.90/0.0234 L2=3 | -| MAIN.CD/38 | 1 | 1 | 7,232 | unclaimed-code | UNCLAIMED | 0.85/0.0111 L2=3 | -| MAIN.CD/39 | 1 | 1 | 5,700 | unclaimed-code | UNCLAIMED | 0.97/0.0182 L2=3 | -| MAIN.CD/40 | 1 | 1 | 3,956 | unclaimed-code | UNCLAIMED | 0.98/0.0192 L2=3 | -| MAIN.CD/41 | 1 | 1 | 4,100 | unclaimed-code | UNCLAIMED | 0.97/0.0146 L2=3 | -| MAIN.CD/42 | 0 | 1 | 636 | unclaimed-code | UNCLAIMED | 1.00/0.0252 L2=3 | -| MAIN.CD/43 | 0 | 1 | 3,912 | unclaimed-code | UNCLAIMED | 1.00/0.0235 L2=3 | -| MAIN.CD/44 | 0 | 1 | 8,920 | unclaimed-code | UNCLAIMED | 0.98/0.0197 L2=3 | -| MAIN.CD/45 | 0 | 1 | 5,432 | unclaimed-code | UNCLAIMED | 0.97/0.0155 L2=3 | -| MAIN.CD/46 | 0 | 1 | 7,612 | unclaimed-code | UNCLAIMED | 0.94/0.0205 L2=3 | -| MAIN.CD/47 | 0 | 1 | 3,272 | unclaimed-code | UNCLAIMED | 1.00/0.0147 L2=3 | | MAIN.CD/7 | -1 | -1 | 9,600 | unclaimed-code | UNCLAIMED | 0.99/0.0079 L2=3 | -| MAIN.CD/8 | 1 | 1 | 840 | unclaimed-code | UNCLAIMED | 1.00/0.0286 L2=3 | | MAIN.CD/9 | 0 | 1 | 2,544 | unclaimed-code | UNCLAIMED | 0.99/0.0189 L2=3 | | SC02.CD/9 | 0 | 1 | 70,784 | unclaimed-code | UNCLAIMED | 0.70/0.0023 L2=3 | | SC03.CD/132 | 2 | 1 | 29,080 | unclaimed-code | UNCLAIMED | 0.79/0.0039 L2=3 | @@ -185,10 +146,47 @@ | SC05.CD/27 | 2 | 1 | 32,792 | unclaimed-code | UNCLAIMED | 0.79/0.0043 L2=3 | | SC05.CD/28 | 2 | 1 | 15,732 | unclaimed-code | UNCLAIMED | 0.84/0.0069 L2=3 | | SC05.CD/29 | 2 | 1 | 39,396 | unclaimed-code | UNCLAIMED | 0.79/0.0031 L2=3 | -| SC07.CD/3 | 1 | 1 | 345,132 | unclaimed-code | UNCLAIMED | 0.57/0.0012 L2=3 | -| SC07.CD/4 | 1 | 1 | 365,152 | unclaimed-code | UNCLAIMED | 0.84/0.0035 L2=3 | +| MAIN.CD/0 | 0 | 1 | 19,996 | onboarded-code | md_MAIN_001 | 0.73/0.0022 L2=3 | +| MAIN.CD/1 | 1 | 1 | 19,996 | onboarded-code | md_MAIN_001 | 0.73/0.0022 L2=3 | | MAIN.CD/10 | 1 | 1 | 365,404 | onboarded-code | resident | 0.72/0.0016 L2=3 | +| MAIN.CD/11 | 1 | 1 | 24,240 | onboarded-code | md_MAIN_011 | 0.95/0.0035 L2=3 | | MAIN.CD/12 | 1 | 1 | 383,783 | onboarded-code | ov_MAIN_012 | 0.99/0.0250 L2=3 | +| MAIN.CD/13 | 1 | 1 | 6,100 | onboarded-code | md_MAIN_013 | 0.78/0.0105 L2=3 | +| MAIN.CD/14 | 1 | 1 | 2,088 | onboarded-code | md_MAIN_014 | 0.99/0.0249 L2=3 | +| MAIN.CD/15 | 1 | 1 | 6,768 | onboarded-code | md_MAIN_015 | 0.86/0.0118 L2=3 | +| MAIN.CD/16 | 1 | 1 | 1,928 | onboarded-code | md_MAIN_016 | 0.99/0.0270 L2=3 | +| MAIN.CD/17 | 1 | 1 | 1,492 | onboarded-code | md_MAIN_017 | 0.97/0.0268 L2=3 | +| MAIN.CD/18 | 1 | 1 | 2,712 | onboarded-code | md_MAIN_018 | 0.96/0.0162 L2=3 | +| MAIN.CD/19 | 1 | 1 | 6,760 | onboarded-code | md_MAIN_019 | 0.94/0.0130 L2=3 | +| MAIN.CD/20 | 1 | 1 | 3,244 | onboarded-code | md_MAIN_020 | 0.84/0.0173 L2=3 | +| MAIN.CD/21 | 1 | 1 | 1,936 | onboarded-code | md_MAIN_021 | 0.99/0.0227 L2=3 | +| MAIN.CD/22 | 1 | 1 | 4,072 | onboarded-code | md_MAIN_022 | 1.00/0.0324 L2=3 | +| MAIN.CD/23 | 0 | 1 | 388 | onboarded-code | md_MAIN_023 | 0.99/0.0619 L2=3 | +| MAIN.CD/24 | 0 | 1 | 332 | onboarded-code | md_MAIN_024 | 0.99/0.0723 L2=3 | +| MAIN.CD/25 | 1 | 1 | 6,396 | onboarded-code | md_MAIN_025 | 0.87/0.0188 L2=3 | +| MAIN.CD/26 | 1 | 1 | 3,600 | onboarded-code | md_MAIN_026 | 0.99/0.0267 L2=3 | +| MAIN.CD/27 | 1 | 1 | 5,272 | onboarded-code | md_MAIN_027 | 0.98/0.0220 L2=3 | +| MAIN.CD/28 | 1 | 1 | 4,460 | onboarded-code | md_MAIN_028 | 0.99/0.0197 L2=3 | +| MAIN.CD/29 | 1 | 1 | 1,984 | onboarded-code | md_MAIN_029 | 0.98/0.0222 L2=3 | +| MAIN.CD/30 | 1 | 1 | 1,876 | onboarded-code | md_MAIN_030 | 0.98/0.0213 L2=3 | +| MAIN.CD/31 | 1 | 1 | 5,044 | onboarded-code | md_MAIN_031 | 0.97/0.0143 L2=3 | +| MAIN.CD/32 | 1 | 1 | 5,572 | onboarded-code | md_MAIN_032 | 0.87/0.0072 L2=3 | +| MAIN.CD/33 | 1 | 1 | 3,264 | onboarded-code | md_MAIN_033 | 0.99/0.0233 L2=3 | +| MAIN.CD/34 | 1 | 1 | 7,444 | onboarded-code | md_MAIN_034 | 0.92/0.0150 L2=3 | +| MAIN.CD/35 | 1 | 1 | 1,248 | onboarded-code | md_MAIN_035 | 0.97/0.0513 L2=3 | +| MAIN.CD/36 | 1 | 1 | 4,916 | onboarded-code | md_MAIN_036 | 0.99/0.0228 L2=3 | +| MAIN.CD/37 | 1 | 1 | 2,904 | onboarded-code | md_MAIN_037 | 0.90/0.0234 L2=3 | +| MAIN.CD/38 | 1 | 1 | 7,232 | onboarded-code | md_MAIN_038 | 0.85/0.0111 L2=3 | +| MAIN.CD/39 | 1 | 1 | 5,700 | onboarded-code | md_MAIN_039 | 0.97/0.0182 L2=3 | +| MAIN.CD/40 | 1 | 1 | 3,956 | onboarded-code | md_MAIN_040 | 0.98/0.0192 L2=3 | +| MAIN.CD/41 | 1 | 1 | 4,100 | onboarded-code | md_MAIN_041 | 0.97/0.0146 L2=3 | +| MAIN.CD/42 | 0 | 1 | 636 | onboarded-code | md_MAIN_042 | 1.00/0.0252 L2=3 | +| MAIN.CD/43 | 0 | 1 | 3,912 | onboarded-code | md_MAIN_043 | 1.00/0.0235 L2=3 | +| MAIN.CD/44 | 0 | 1 | 8,920 | onboarded-code | md_MAIN_044 | 0.98/0.0197 L2=3 | +| MAIN.CD/45 | 0 | 1 | 5,432 | onboarded-code | md_MAIN_045 | 0.97/0.0155 L2=3 | +| MAIN.CD/46 | 0 | 1 | 7,612 | onboarded-code | md_MAIN_046 | 0.94/0.0205 L2=3 | +| MAIN.CD/47 | 0 | 1 | 3,272 | onboarded-code | md_MAIN_047 | 1.00/0.0147 L2=3 | +| MAIN.CD/8 | 1 | 1 | 840 | onboarded-code | md_MAIN_008 | 1.00/0.0286 L2=3 | | SC01.CD/0 | 0 | 4 | 513,935 | onboarded-code | ov_SC01_000 | 0.95/0.0187 L2=3 | | SC01.CD/1 | 0 | 4 | 831,599 | onboarded-code | ov_SC01_001 | 0.74/0.0119 L2=3 | | SC01.CD/4 | 0 | 4 | 426,615 | onboarded-code | ov_SC01_004 | 0.97/0.0227 L2=3 | @@ -325,6 +323,8 @@ | SC07.CD/10 | 1 | 4 | 529,391 | onboarded-code | ov_SC07_010 | 0.94/0.0191 L2=3 | | SC07.CD/11 | 1 | 4 | 426,919 | onboarded-code | ov_SC07_011 | 0.98/0.0230 L2=3 | | SC07.CD/2 | 0 | 4 | 491,391 | onboarded-code | ov_SC07_002 | 0.98/0.0210 L2=3 | +| SC07.CD/3 | 1 | 1 | 345,132 | onboarded-code | md_SC07_003 | 0.57/0.0012 L2=3 | +| SC07.CD/4 | 1 | 1 | 365,152 | onboarded-code | md_SC07_004 | 0.84/0.0035 L2=3 | | SC07.CD/6 | 1 | 4 | 844,311 | onboarded-code | ov_SC07_006 | 0.84/0.0116 L2=3 | | SC07.CD/7 | 1 | 4 | 653,791 | onboarded-code | ov_SC07_007 | 0.91/0.0160 L2=3 | | SC07.CD/8 | 0 | 4 | 452,079 | onboarded-code | ov_SC07_008 | 0.97/0.0211 L2=3 | diff --git a/docs/duplicates.cross.md b/docs/duplicates.cross.md index 803d8ed50..bf71bf451 100644 --- a/docs/duplicates.cross.md +++ b/docs/duplicates.cross.md @@ -2,6 +2,46 @@ # sources: # main .run/sig.SLUS_007.26.jsonl sha1=46c735b8d1f514a95f8a2ba061cccf291f45a631 # resident .run/sig.resident.jsonl sha1=a417784999c8944c72e812a01ca082703dd05414 +# md_MAIN_013 .run/sig.md_MAIN_013.jsonl sha1=7ef0aab887b13304929d00a324e50f883c30a903 +# md_MAIN_014 .run/sig.md_MAIN_014.jsonl sha1=d67de8a37cbdb814e14360689965c68c8888ff97 +# md_MAIN_015 .run/sig.md_MAIN_015.jsonl sha1=6630706504c43c403d20e71756d42f47004eb229 +# md_MAIN_016 .run/sig.md_MAIN_016.jsonl sha1=0b94374d67397804d3086f8eb5e3b5ff8243c641 +# md_MAIN_017 .run/sig.md_MAIN_017.jsonl sha1=4459498b5214040466bd80856d0fd4985cd37f52 +# md_MAIN_018 .run/sig.md_MAIN_018.jsonl sha1=e898d3758ed5a3106fb9ec87521efe07d539d5ac +# md_MAIN_019 .run/sig.md_MAIN_019.jsonl sha1=ab97580aa15d72368f050fad2469231168b1f872 +# md_MAIN_020 .run/sig.md_MAIN_020.jsonl sha1=c763c31db7d3616870d91c9cfedfadaebe2cbb0f +# md_MAIN_021 .run/sig.md_MAIN_021.jsonl sha1=f5148cf1822b7eddd1dcebaa295f35d6681d5154 +# md_MAIN_022 .run/sig.md_MAIN_022.jsonl sha1=06553bc99d5f478d96f1be673df5cfabdffe1c57 +# md_MAIN_023 .run/sig.md_MAIN_023.jsonl sha1=bbb6319e2a29c15f471964c2943380a6c6bf7202 +# md_MAIN_024 .run/sig.md_MAIN_024.jsonl sha1=30e78b3a9bcd4b5a56f3c41d193a8869c997debf +# md_MAIN_025 .run/sig.md_MAIN_025.jsonl sha1=87bfd50e702289c99b0d139706510baa9b85b61c +# md_MAIN_026 .run/sig.md_MAIN_026.jsonl sha1=225a2fd20375ced7a83f17faa5de76c8ad291ab0 +# md_MAIN_027 .run/sig.md_MAIN_027.jsonl sha1=cb4ae91b55d4aa4b4b07178c66fb60380281164a +# md_MAIN_028 .run/sig.md_MAIN_028.jsonl sha1=056dd72e871d1944b25cd0c74f1e376a43f1b6e8 +# md_MAIN_029 .run/sig.md_MAIN_029.jsonl sha1=fe61c0e82a087c4ea79c2c63606ae471e9c52ca4 +# md_MAIN_030 .run/sig.md_MAIN_030.jsonl sha1=ced3202a34dcf8bfe15b8dd6613eb6b975219f24 +# md_MAIN_031 .run/sig.md_MAIN_031.jsonl sha1=01a4ea9a9f20a407f76b536394db5f00a791c2e1 +# md_MAIN_032 .run/sig.md_MAIN_032.jsonl sha1=725e13cf872f740119ca3d673613dee278180887 +# md_MAIN_033 .run/sig.md_MAIN_033.jsonl sha1=2fe65fcd8761b19612969a38043456f7dfd58c58 +# md_MAIN_034 .run/sig.md_MAIN_034.jsonl sha1=06d2b217ffa58bce4c197edaa370f1b7e08ffde3 +# md_MAIN_035 .run/sig.md_MAIN_035.jsonl sha1=abe999e11a37d2f866525b14855f768bc8232d53 +# md_MAIN_036 .run/sig.md_MAIN_036.jsonl sha1=875193c8605f7ead21668e238df09fd640d28b28 +# md_MAIN_037 .run/sig.md_MAIN_037.jsonl sha1=e149bac4d5d8049cc51f2fa664c298feac2e888b +# md_MAIN_038 .run/sig.md_MAIN_038.jsonl sha1=16c9ab7c00879c6005a190221df1abf8f9097b28 +# md_MAIN_039 .run/sig.md_MAIN_039.jsonl sha1=97a562d238491f890250cf69589a7d7b6b8e0dd9 +# md_MAIN_040 .run/sig.md_MAIN_040.jsonl sha1=395cc9b0ad96f7fc81bac808cd450980a9ca223a +# md_MAIN_041 .run/sig.md_MAIN_041.jsonl sha1=43cd6e6eee8a96c97f727293eca2db5da258dbbe +# md_MAIN_042 .run/sig.md_MAIN_042.jsonl sha1=2bb0f14bc0aee2e281322cc1793435248738c4ef +# md_MAIN_043 .run/sig.md_MAIN_043.jsonl sha1=90eb3ee32bc468db31c8c323c50e9ec77eb5186e +# md_MAIN_044 .run/sig.md_MAIN_044.jsonl sha1=ff79d95fc95d836ffe9fb432ee4f7b6805fce532 +# md_MAIN_045 .run/sig.md_MAIN_045.jsonl sha1=97e499655a040ac0923488fe06240153c24790d7 +# md_MAIN_046 .run/sig.md_MAIN_046.jsonl sha1=63b4821ee0960645ee402302bb9d1d553a7cb876 +# md_MAIN_047 .run/sig.md_MAIN_047.jsonl sha1=63f8bfb5af126957574c0c3108a2885348989236 +# md_MAIN_001 .run/sig.md_MAIN_001.jsonl sha1=3fcf391554345b10d22eed03f812bbcf3ede7dbd +# md_MAIN_008 .run/sig.md_MAIN_008.jsonl sha1=2a35ee2d5729265387e42abc7393999473f2c0a4 +# md_MAIN_011 .run/sig.md_MAIN_011.jsonl sha1=5c7f07d04ecfb33a45070298018e2ca3b63eeb80 +# md_SC07_003 .run/sig.md_SC07_003.jsonl sha1=8257c06af37b03c91c530b4a282483a13cd9a358 +# md_SC07_004 .run/sig.md_SC07_004.jsonl sha1=52e4802e51f3d553b6fe66a1b8dbba81c87eb606 # overlays 141x (named+sig_image, deduped, nins>=8) set-sha1=17474a5aae730987d8cf2edd2816ddf598b6e4b8 # Collapsible bytes = (count-1)*nins*4 (bytes saved; one member stays the source). # A cross-binary group (binaries>1) is the Phase-12/13 work queue; lead with h_exact @@ -11,7 +51,7 @@ ## h_exact (byte-identical) -### cross-binary (binaries > 1) — 9601 groups, 30017480 collapsible bytes (top 200 of 9601 shown) +### cross-binary (binaries > 1) — 9618 groups, 30022892 collapsible bytes (top 200 of 9618 shown) | gid | bytes | nins | count | #bin | sample members (binary:addr) | |---|---|---|---|---|---| | ex0 | 431200 | 770 | 141 | 141 | ov_MAIN_012:0x80144b9c; ov_SC01_000:0x80144b9c; ov_SC01_001:0x80144b9c; ov_SC01_004:0x80144b9c; …+137 | @@ -112,10 +152,10 @@ | ex95 | 48720 | 87 | 141 | 141 | ov_MAIN_012:0x80158638; ov_SC01_000:0x80158638; ov_SC01_001:0x80158638; ov_SC01_004:0x80158638; …+137 | | ex96 | 48720 | 87 | 141 | 141 | ov_MAIN_012:0x8016c83c; ov_SC01_000:0x8016c83c; ov_SC01_001:0x8016c83c; ov_SC01_004:0x8016c83c; …+137 | | ex97 | 48720 | 87 | 141 | 141 | ov_MAIN_012:0x80172170; ov_SC01_000:0x80172170; ov_SC01_001:0x80172170; ov_SC01_004:0x80172170; …+137 | -| ex98 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x8013895c; ov_SC01_000:0x8013895c; ov_SC01_001:0x8013895c; ov_SC01_004:0x8013895c; …+137 | -| ex99 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x80162968; ov_SC01_000:0x80162968; ov_SC01_001:0x80162968; ov_SC01_004:0x80162968; …+137 | -| ex100 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x801696d8; ov_SC01_000:0x801696d8; ov_SC01_001:0x801696d8; ov_SC01_004:0x801696d8; …+137 | -| ex101 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x8016e460; ov_SC01_000:0x8016e460; ov_SC01_001:0x8016e460; ov_SC01_004:0x8016e460; …+137 | +| ex98 | 48504 | 86 | 142 | 142 | md_MAIN_022:0x800cbb38; ov_MAIN_012:0x8016e460; ov_SC01_000:0x8016e460; ov_SC01_001:0x8016e460; …+138 | +| ex99 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x8013895c; ov_SC01_000:0x8013895c; ov_SC01_001:0x8013895c; ov_SC01_004:0x8013895c; …+137 | +| ex100 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x80162968; ov_SC01_000:0x80162968; ov_SC01_001:0x80162968; ov_SC01_004:0x80162968; …+137 | +| ex101 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x801696d8; ov_SC01_000:0x801696d8; ov_SC01_001:0x801696d8; ov_SC01_004:0x801696d8; …+137 | | ex102 | 47600 | 85 | 141 | 141 | ov_MAIN_012:0x80169584; ov_SC01_000:0x80169584; ov_SC01_001:0x80169584; ov_SC01_004:0x80169584; …+137 | | ex103 | 47600 | 85 | 141 | 141 | ov_MAIN_012:0x8016a73c; ov_SC01_000:0x8016a73c; ov_SC01_001:0x8016a73c; ov_SC01_004:0x8016a73c; …+137 | | ex104 | 47600 | 85 | 141 | 141 | ov_MAIN_012:0x8016a8fc; ov_SC01_000:0x8016a8fc; ov_SC01_001:0x8016a8fc; ov_SC01_004:0x8016a8fc; …+137 | @@ -215,7 +255,7 @@ | ex198 | 33040 | 59 | 141 | 141 | ov_MAIN_012:0x801777bc; ov_SC01_000:0x801777bc; ov_SC01_001:0x801777bc; ov_SC01_004:0x801777bc; …+137 | | ex199 | 32480 | 58 | 141 | 141 | ov_MAIN_012:0x8012b77c; ov_SC01_000:0x8012b77c; ov_SC01_001:0x8012b77c; ov_SC01_004:0x8012b77c; …+137 | -### intra-binary — 188 groups, 29104 collapsible bytes +### intra-binary — 187 groups, 29072 collapsible bytes | gid | bytes | nins | count | #bin | sample members (binary:addr) | |---|---|---|---|---|---| | ei0 | 304 | 38 | 3 | 1 | ov_SC07_007:0x8017d8e0; ov_SC07_007:0x8017d978; ov_SC07_007:0x8017da10 | @@ -402,27 +442,26 @@ | ei181 | 36 | 9 | 2 | 1 | main:0x8004561c; main:0x8005b660 | | ei182 | 36 | 9 | 2 | 1 | ov_SC05_017:0x80182ce8; ov_SC05_017:0x80183ed4 | | ei183 | 32 | 8 | 2 | 1 | main:0x80042134; main:0x8005ba70 | -| ei184 | 32 | 8 | 2 | 1 | ov_SC02_005:0x801853cc; ov_SC02_005:0x8018bfbc | -| ei185 | 32 | 8 | 2 | 1 | ov_SC06_029:0x80180ee8; ov_SC06_029:0x801870b4 | -| ei186 | 32 | 8 | 2 | 1 | ov_SC07_007:0x8017f370; ov_SC07_007:0x80180b38 | -| ei187 | 32 | 8 | 2 | 1 | resident:0x800cefb0; resident:0x800cf398 | +| ei184 | 32 | 8 | 2 | 1 | ov_SC06_029:0x80180ee8; ov_SC06_029:0x801870b4 | +| ei185 | 32 | 8 | 2 | 1 | ov_SC07_007:0x8017f370; ov_SC07_007:0x80180b38 | +| ei186 | 32 | 8 | 2 | 1 | resident:0x800cefb0; resident:0x800cf398 | ## h_norm (structural) -### cross-binary (binaries > 1) — 9207 groups, 40218692 collapsible bytes (top 200 of 9207 shown) +### cross-binary (binaries > 1) — 9250 groups, 40234820 collapsible bytes (top 200 of 9250 shown) | gid | bytes | nins | count | #bin | sample members (binary:addr) | |---|---|---|---|---|---| | nx0 | 431200 | 770 | 141 | 141 | ov_MAIN_012:0x80144b9c; ov_SC01_000:0x80144b9c; ov_SC01_001:0x80144b9c; ov_SC01_004:0x80144b9c; …+137 | | nx1 | 266560 | 476 | 141 | 141 | ov_MAIN_012:0x80141ca4; ov_SC01_000:0x80141ca4; ov_SC01_001:0x80141ca4; ov_SC01_004:0x80141ca4; …+137 | | nx2 | 224000 | 400 | 141 | 141 | ov_MAIN_012:0x80132784; ov_SC01_000:0x80132784; ov_SC01_001:0x80132784; ov_SC01_004:0x80132784; …+137 | | nx3 | 223440 | 399 | 141 | 141 | ov_MAIN_012:0x80133cd4; ov_SC01_000:0x80133cd4; ov_SC01_001:0x80133cd4; ov_SC01_004:0x80133cd4; …+137 | -| nx4 | 211392 | 12 | 4405 | 141 | ov_MAIN_012:0x8014b160; ov_MAIN_012:0x80158ab4; ov_MAIN_012:0x8015be94; ov_MAIN_012:0x80161d58; …+4401 | +| nx4 | 211584 | 12 | 4409 | 145 | md_MAIN_027:0x800cb7fc; md_MAIN_034:0x800cc260; md_MAIN_035:0x800cafbc; md_MAIN_046:0x800cdba4; …+4405 | | nx5 | 206640 | 369 | 141 | 141 | ov_MAIN_012:0x80166994; ov_SC01_000:0x80166994; ov_SC01_001:0x80166994; ov_SC01_004:0x80166994; …+137 | -| nx6 | 198848 | 8 | 6215 | 142 | ov_MAIN_012:0x80128158; ov_MAIN_012:0x80128178; ov_MAIN_012:0x80128198; ov_MAIN_012:0x801281b8; …+6211 | +| nx6 | 200192 | 8 | 6257 | 166 | md_MAIN_015:0x800cb474; md_MAIN_019:0x800cb4a8; md_MAIN_019:0x800cbf60; md_MAIN_020:0x800cafdc; …+6253 | | nx7 | 186032 | 22 | 2115 | 141 | ov_MAIN_012:0x8014ccb4; ov_MAIN_012:0x8014d04c; ov_MAIN_012:0x8014d3e0; ov_MAIN_012:0x8014d738; …+2111 | | nx8 | 184828 | 41 | 1128 | 141 | ov_MAIN_012:0x80151fb4; ov_MAIN_012:0x801522cc; ov_MAIN_012:0x801525f4; ov_MAIN_012:0x80152ac8; …+1124 | | nx9 | 184240 | 329 | 141 | 141 | ov_MAIN_012:0x8013c414; ov_SC01_000:0x8013c414; ov_SC01_001:0x8013c414; ov_SC01_004:0x8013c414; …+137 | -| nx10 | 176904 | 14 | 3160 | 141 | ov_MAIN_012:0x80142740; ov_MAIN_012:0x801555bc; ov_MAIN_012:0x80157e00; ov_MAIN_012:0x80158000; …+3156 | +| nx10 | 177128 | 14 | 3164 | 145 | md_MAIN_028:0x800cb564; md_MAIN_035:0x800caf84; md_MAIN_036:0x800cb570; md_MAIN_044:0x800cda0c; …+3160 | | nx11 | 170240 | 304 | 141 | 141 | ov_MAIN_012:0x8014d820; ov_SC01_000:0x8014d820; ov_SC01_001:0x8014d820; ov_SC01_004:0x8014d820; …+137 | | nx12 | 159040 | 284 | 141 | 141 | ov_MAIN_012:0x8012d714; ov_SC01_000:0x8012d714; ov_SC01_001:0x8012d714; ov_SC01_004:0x8012d714; …+137 | | nx13 | 159040 | 284 | 141 | 141 | ov_MAIN_012:0x8016a290; ov_SC01_000:0x8016a290; ov_SC01_001:0x8016a290; ov_SC01_004:0x8016a290; …+137 | @@ -440,11 +479,11 @@ | nx25 | 115920 | 207 | 141 | 141 | ov_MAIN_012:0x801372b0; ov_SC01_000:0x801372b0; ov_SC01_001:0x801372b0; ov_SC01_004:0x801372b0; …+137 | | nx26 | 114240 | 204 | 141 | 141 | ov_MAIN_012:0x8013a530; ov_SC01_000:0x8013a530; ov_SC01_001:0x8013a530; ov_SC01_004:0x8013a530; …+137 | | nx27 | 113680 | 203 | 141 | 141 | ov_MAIN_012:0x80133784; ov_SC01_000:0x80133784; ov_SC01_001:0x80133784; ov_SC01_004:0x80133784; …+137 | -| nx28 | 112728 | 14 | 2014 | 141 | ov_MAIN_012:0x8016f540; ov_MAIN_012:0x8016f578; ov_MAIN_012:0x8016f610; ov_MAIN_012:0x8016f648; …+2010 | +| nx28 | 112784 | 14 | 2015 | 142 | md_MAIN_020:0x800caffc; ov_MAIN_012:0x8016f540; ov_MAIN_012:0x8016f578; ov_MAIN_012:0x8016f610; …+2011 | | nx29 | 110880 | 198 | 141 | 141 | ov_MAIN_012:0x8013bd74; ov_SC01_000:0x8013bd74; ov_SC01_001:0x8013bd74; ov_SC01_004:0x8013bd74; …+137 | | nx30 | 110880 | 198 | 141 | 141 | ov_MAIN_012:0x801412a8; ov_SC01_000:0x801412a8; ov_SC01_001:0x801412a8; ov_SC01_004:0x801412a8; …+137 | | nx31 | 110880 | 198 | 141 | 141 | ov_MAIN_012:0x801571c4; ov_SC01_000:0x801571c4; ov_SC01_001:0x801571c4; ov_SC01_004:0x801571c4; …+137 | -| nx32 | 110080 | 10 | 2753 | 141 | ov_MAIN_012:0x8014b12c; ov_MAIN_012:0x8014b2a8; ov_MAIN_012:0x8014b2d0; ov_MAIN_012:0x8015e588; …+2749 | +| nx32 | 110600 | 10 | 2766 | 154 | md_MAIN_014:0x800cae0c; md_MAIN_015:0x800cae0c; md_MAIN_016:0x800cae0c; md_MAIN_019:0x800cae0c; …+2762 | | nx33 | 109200 | 195 | 141 | 141 | ov_MAIN_012:0x80153e00; ov_SC01_000:0x80153e00; ov_SC01_001:0x80153e00; ov_SC01_004:0x80153e00; …+137 | | nx34 | 108080 | 193 | 141 | 141 | ov_MAIN_012:0x80166690; ov_SC01_000:0x80166690; ov_SC01_001:0x80166690; ov_SC01_004:0x80166690; …+137 | | nx35 | 106960 | 191 | 141 | 141 | ov_MAIN_012:0x80129cf8; ov_SC01_000:0x80129cf8; ov_SC01_001:0x80129cf8; ov_SC01_004:0x80129cf8; …+137 | @@ -584,10 +623,10 @@ | nx169 | 48720 | 87 | 141 | 141 | ov_MAIN_012:0x80158638; ov_SC01_000:0x80158638; ov_SC01_001:0x80158638; ov_SC01_004:0x80158638; …+137 | | nx170 | 48720 | 87 | 141 | 141 | ov_MAIN_012:0x8016c83c; ov_SC01_000:0x8016c83c; ov_SC01_001:0x8016c83c; ov_SC01_004:0x8016c83c; …+137 | | nx171 | 48720 | 87 | 141 | 141 | ov_MAIN_012:0x80172170; ov_SC01_000:0x80172170; ov_SC01_001:0x80172170; ov_SC01_004:0x80172170; …+137 | -| nx172 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x8013895c; ov_SC01_000:0x8013895c; ov_SC01_001:0x8013895c; ov_SC01_004:0x8013895c; …+137 | -| nx173 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x80162968; ov_SC01_000:0x80162968; ov_SC01_001:0x80162968; ov_SC01_004:0x80162968; …+137 | -| nx174 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x801696d8; ov_SC01_000:0x801696d8; ov_SC01_001:0x801696d8; ov_SC01_004:0x801696d8; …+137 | -| nx175 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x8016e460; ov_SC01_000:0x8016e460; ov_SC01_001:0x8016e460; ov_SC01_004:0x8016e460; …+137 | +| nx172 | 48504 | 86 | 142 | 142 | md_MAIN_022:0x800cbb38; ov_MAIN_012:0x8016e460; ov_SC01_000:0x8016e460; ov_SC01_001:0x8016e460; …+138 | +| nx173 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x8013895c; ov_SC01_000:0x8013895c; ov_SC01_001:0x8013895c; ov_SC01_004:0x8013895c; …+137 | +| nx174 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x80162968; ov_SC01_000:0x80162968; ov_SC01_001:0x80162968; ov_SC01_004:0x80162968; …+137 | +| nx175 | 48160 | 86 | 141 | 141 | ov_MAIN_012:0x801696d8; ov_SC01_000:0x801696d8; ov_SC01_001:0x801696d8; ov_SC01_004:0x801696d8; …+137 | | nx176 | 47600 | 85 | 141 | 141 | ov_MAIN_012:0x80169584; ov_SC01_000:0x80169584; ov_SC01_001:0x80169584; ov_SC01_004:0x80169584; …+137 | | nx177 | 47600 | 85 | 141 | 141 | ov_MAIN_012:0x8016a73c; ov_SC01_000:0x8016a73c; ov_SC01_001:0x8016a73c; ov_SC01_004:0x8016a73c; …+137 | | nx178 | 47600 | 85 | 141 | 141 | ov_MAIN_012:0x8016a8fc; ov_SC01_000:0x8016a8fc; ov_SC01_001:0x8016a8fc; ov_SC01_004:0x8016a8fc; …+137 | @@ -607,13 +646,13 @@ | nx192 | 44240 | 79 | 141 | 141 | ov_MAIN_012:0x801457a4; ov_SC01_000:0x801457a4; ov_SC01_001:0x801457a4; ov_SC01_004:0x801457a4; …+137 | | nx193 | 44240 | 79 | 141 | 141 | ov_MAIN_012:0x8016c188; ov_SC01_000:0x8016c188; ov_SC01_001:0x8016c188; ov_SC01_004:0x8016c188; …+137 | | nx194 | 44240 | 79 | 141 | 141 | ov_MAIN_012:0x8016d848; ov_SC01_000:0x8016d848; ov_SC01_001:0x8016d848; ov_SC01_004:0x8016d848; …+137 | -| nx195 | 43940 | 13 | 846 | 141 | ov_MAIN_012:0x8015da5c; ov_MAIN_012:0x8015dc84; ov_MAIN_012:0x8015dfe4; ov_MAIN_012:0x8015e84c; …+842 | +| nx195 | 43992 | 13 | 847 | 142 | md_MAIN_035:0x800cb108; ov_MAIN_012:0x8015da5c; ov_MAIN_012:0x8015dc84; ov_MAIN_012:0x8015dfe4; …+843 | | nx196 | 43680 | 78 | 141 | 141 | ov_MAIN_012:0x8012a1bc; ov_SC01_000:0x8012a1bc; ov_SC01_001:0x8012a1bc; ov_SC01_004:0x8012a1bc; …+137 | | nx197 | 43680 | 78 | 141 | 141 | ov_MAIN_012:0x80137178; ov_SC01_000:0x80137178; ov_SC01_001:0x80137178; ov_SC01_004:0x80137178; …+137 | | nx198 | 43680 | 78 | 141 | 141 | ov_MAIN_012:0x8015e714; ov_SC01_000:0x8015e714; ov_SC01_001:0x8015e714; ov_SC01_004:0x8015e714; …+137 | | nx199 | 43680 | 78 | 141 | 141 | ov_MAIN_012:0x8016163c; ov_SC01_000:0x8016163c; ov_SC01_001:0x8016163c; ov_SC01_004:0x8016163c; …+137 | -### intra-binary — 424 groups, 76768 collapsible bytes (top 200 of 424 shown) +### intra-binary — 429 groups, 77040 collapsible bytes (top 200 of 429 shown) | gid | bytes | nins | count | #bin | sample members (binary:addr) | |---|---|---|---|---|---| | ni0 | 2232 | 186 | 4 | 1 | ov_SC07_006:0x801802ec; ov_SC07_006:0x8018163c; ov_SC07_006:0x801823f8; ov_SC07_006:0x801828a4 | diff --git a/docs/family-hseq.md b/docs/family-hseq.md index a45132c5f..18a9eed44 100644 --- a/docs/family-hseq.md +++ b/docs/family-hseq.md @@ -1,14 +1,14 @@ # Phase 26 — h_seq family survey (T1) -> Generated by `tools/family_hseq.py` from the 142 overlay sigs + per-overlay src stubs. Ranked by TEMPLATABLE byte-weight (PURE+IMM members × nins × 4). The byte-gate is the arbiter. +> Generated by `tools/family_hseq.py` from the 182 overlay sigs + per-overlay src stubs. Ranked by TEMPLATABLE byte-weight (PURE+IMM members × nins × 4). The byte-gate is the arbiter. > -> **Scope: the 142 OVERLAYS only** (no main, no resident) · generated at HEAD `commit:1501` · 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 182 OVERLAYS only** (no main, no resident) · generated at HEAD `commit:1505` · 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.3% fn / 94.6% instr / 88.9% distinct-code matched. Unmatched: 13,214 instances / 722,956 ins (11,039 distinct classes). +**Fleet (overlays):** 96.1% fn / 94.5% instr / 88.8% distinct-code matched. Unmatched: 14,016 instances / 731,742 ins (11,809 distinct classes). -**Tail cross-check (Phase-25 close):** 7,943 tail fns / 420,760 ins → 557 h_seq families ≥2, **154 substantial (nins≥80) / 93,378 ins**. +**Tail cross-check (Phase-25 close):** 8,760 tail fns / 453,442 ins → 572 h_seq families ≥2, **134 substantial (nins≥80) / 81,929 ins**. -**Full frontier (all unmatched by h_seq):** 2577 target families (≥2 members or a matched sibling) + 3801 singletons (Step-D residue). Substantial: **495 families / 224,696 templatable ins**, 199 with a matched sibling (zero-crack). Substantial member classes: 1,456 PURE · 24 IMM · 6 STRUCT-excluded. +**Full frontier (all unmatched by h_seq):** 2558 target families (≥2 members or a matched sibling) + 4454 singletons (Step-D residue). Substantial: **390 families / 182,922 templatable ins**, 90 with a matched sibling (zero-crack). Substantial member classes: 1,173 PURE · 29 IMM · 7 STRUCT-excluded. ## Top substantial families (by templatable byte-weight) @@ -37,31 +37,31 @@ | 20 | 424 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x80131340 matched-ov077 | 1,272 | | 21 | 254 | 5 (5/0/0) | 4/5 | cross-address | PURE | 0 | Y | 0x80188e1c modal | 1,270 | | 22 | 251 | 5 (5/0/0) | 5/5 | cross-address | PURE | 1 | Y | 0x80180b04 matched | 1,255 | -| 23 | 399 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x80133cd4 matched-ov077 | 1,197 | -| 24 | 198 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | Y | 0x80185f58 modal | 1,188 | -| 25 | 385 | 3 (3/0/0) | 3/3 | cross-address | PURE | 0 | Y | 0x8018ff98 modal | 1,155 | -| 26 | 371 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x80176734 matched-ov077 | 1,113 | -| 27 | 185 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | Y | 0x80187aec modal | 1,110 | -| 28 | 369 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x80166994 matched-ov077 | 1,107 | -| 29 | 363 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8015444c matched-ov077 | 1,089 | -| 30 | 337 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x80159c84 matched-ov077 | 1,011 | -| 31 | 329 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8013c414 matched-ov077 | 987 | -| 32 | 327 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x80176218 matched-ov077 | 981 | -| 33 | 324 | 3 (3/0/0) | 2/3 | cross-address | PURE | 0 | Y | 0x80183324 draft-ov077 | 972 | -| 34 | 952 | 1 (1/0/0) | 1/1 | per-location | PURE | 116 | Y | 0x8017bebc matched | 952 | -| 35 | 95 | 10 (10/0/0) | 9/10 | scattered | PURE | 0 | Y | 0x80185d70 modal | 950 | -| 36 | 312 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x8013faf8 matched-ov077 | 936 | -| 37 | 231 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | Y | 0x8017f83c modal | 924 | -| 38 | 304 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x8014d820 matched-ov077 | 912 | -| 39 | 127 | 7 (7/0/0) | 1/7 | per-location | PURE | 134 | · | 0x80145cec matched-ov077 | 889 | -| 40 | 289 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x80135eb0 matched-ov077 | 867 | -| 41 | 288 | 3 (3/0/0) | 3/3 | cross-address | PURE | 3 | Y | 0x80184c74 matched | 864 | -| 42 | 213 | 4 (4/0/0) | 1/4 | per-location | PURE | 137 | Y | 0x8013ffd8 matched-ov077 | 852 | -| 43 | 284 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x8016a290 matched-ov077 | 852 | -| 44 | 279 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x801670e4 matched-ov077 | 837 | -| 45 | 166 | 5 (5/0/0) | 4/5 | cross-address | PURE | 0 | Y | 0x80188b84 modal | 830 | -| 46 | 165 | 5 (5/0/0) | 5/5 | cross-address | PURE | 0 | Y | 0x801818f0 modal | 825 | -| 47 | 272 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8013b83c matched-ov077 | 816 | -| 48 | 271 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8015b950 matched-ov077 | 813 | -| 49 | 406 | 2 (2/0/0) | 2/2 | cross-address | PURE | 0 | Y | 0x80184938 modal | 812 | -| 50 | 266 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x80130d48 matched-ov077 | 798 | +| 23 | 198 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | Y | 0x80185f58 modal | 1,188 | +| 24 | 385 | 3 (3/0/0) | 3/3 | cross-address | PURE | 0 | Y | 0x8018ff98 modal | 1,155 | +| 25 | 185 | 6 (6/0/0) | 6/6 | cross-address | PURE | 0 | Y | 0x80187aec modal | 1,110 | +| 26 | 363 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8015444c matched-ov077 | 1,089 | +| 27 | 337 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x80159c84 matched-ov077 | 1,011 | +| 28 | 329 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8013c414 matched-ov077 | 987 | +| 29 | 324 | 3 (3/0/0) | 2/3 | cross-address | PURE | 0 | Y | 0x80183324 draft-ov077 | 972 | +| 30 | 952 | 1 (1/0/0) | 1/1 | per-location | PURE | 116 | Y | 0x8017bebc matched | 952 | +| 31 | 95 | 10 (10/0/0) | 9/10 | scattered | PURE | 0 | Y | 0x80185d70 modal | 950 | +| 32 | 312 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x8013faf8 matched-ov077 | 936 | +| 33 | 231 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | Y | 0x8017f83c modal | 924 | +| 34 | 127 | 7 (7/0/0) | 1/7 | per-location | PURE | 134 | · | 0x80145cec matched-ov077 | 889 | +| 35 | 289 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x80135eb0 matched-ov077 | 867 | +| 36 | 288 | 3 (3/0/0) | 3/3 | cross-address | PURE | 3 | Y | 0x80184c74 matched | 864 | +| 37 | 213 | 4 (4/0/0) | 1/4 | per-location | PURE | 137 | Y | 0x8013ffd8 matched-ov077 | 852 | +| 38 | 166 | 5 (5/0/0) | 4/5 | cross-address | PURE | 0 | Y | 0x80188b84 modal | 830 | +| 39 | 165 | 5 (5/0/0) | 5/5 | cross-address | PURE | 0 | Y | 0x801818f0 modal | 825 | +| 40 | 272 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8013b83c matched-ov077 | 816 | +| 41 | 271 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | Y | 0x8015b950 matched-ov077 | 813 | +| 42 | 406 | 2 (2/0/0) | 2/2 | cross-address | PURE | 0 | Y | 0x80184938 modal | 812 | +| 43 | 266 | 3 (3/0/0) | 1/3 | per-location | PURE | 138 | · | 0x80130d48 matched-ov077 | 798 | +| 44 | 196 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | Y | 0x8017ffd0 modal | 784 | +| 45 | 257 | 3 (3/0/0) | 3/3 | cross-address | PURE | 0 | · | 0x80192b60 modal | 771 | +| 46 | 255 | 3 (3/0/0) | 3/3 | cross-address | PURE | 0 | · | 0x8018e9bc modal | 765 | +| 47 | 254 | 3 (3/0/0) | 3/3 | cross-address | PURE | 0 | · | 0x80192768 modal | 762 | +| 48 | 147 | 5 (5/0/0) | 4/5 | cross-address | PURE | 0 | Y | 0x8017ed5c modal | 735 | +| 49 | 181 | 4 (4/0/0) | 4/4 | cross-address | PURE | 0 | · | 0x8017d7c0 modal | 724 | +| 50 | 102 | 7 (1/6/0) | 6/7 | cross-address | IMM | 77 | · | 0x8017d290 matched | 714 | diff --git a/docs/progress.fleet.md b/docs/progress.fleet.md index ecc0b92e1..181237ea6 100644 --- a/docs/progress.fleet.md +++ b/docs/progress.fleet.md @@ -1,26 +1,66 @@ # BFM FLEET matching progress (generated by tools/progress.py --fleet — authoritative) -# 143 binaries: main + resident + 141 location overlays. DETERMINISTIC, +# 183 binaries: main + resident + 181 location overlays. DETERMINISTIC, # source-derived (committed src/*.c + config/dedup.us.yaml). Live byte gate: `make check-all`; # cross-binary collapsible-byte leverage: docs/duplicates.cross.md. # THREE progress metrics (all matter — see the labels): -FLEET fn-count byte-ident: 347168 / 361133 = 96.13% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) -FLEET instr-weighted : 12676581 / 13435348 = 94.4% (shipped .text across main + resident + 141 overlays; the decomp.dev-DISPLAY number) -FLEET distinct-code(uniq): 5095988 / 5770185 = 88.3% (78334/89140 unique fns; the DISTINCT-RE number) +FLEET fn-count byte-ident: 347597 / 362246 = 95.96% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) +FLEET instr-weighted : 12682962 / 13487439 = 94.0% (shipped .text across main + resident + 181 overlays; the decomp.dev-DISPLAY number) +FLEET distinct-code(uniq): 5100166 / 5820883 = 87.6% (78596/90143 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: 12676145 / 13355838 = 94.9%) + (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 12682526 / 13407929 = 94.6%) -FLEET REAL substantive : 345069 (of which dedup-shared 246275 via 1919 groups / 246349 instances) +FLEET REAL substantive : 345477 (of which dedup-shared 246275 via 1919 groups / 246349 instances) FLEET LINKED PsyQ objs : 959 FLEET NON_MATCHING : 7 (0 in any default build — G4) -FLEET INCLUDE_ASM stubs : 13958 -FLEET matchable : 361133 +FLEET INCLUDE_ASM stubs : 14642 +FLEET matchable : 362246 | binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % | |---|---:|---:|---:|---:|---:|---:| | main | 54 | 2 | 959 | 1055 | 2096 | 50.3% | | resident | 129 | 0 | 0 | 131 | 145 | 90.3% | -| ov_MAIN_012 | 1701 | 1612 | 0 | 1780 | 2403 | 74.1% | +| md_MAIN_001 | 1 | 0 | 0 | 1 | 11 | 9.1% | +| md_MAIN_008 | 0 | 0 | 0 | 0 | 6 | 0.0% | +| md_MAIN_011 | 0 | 0 | 0 | 0 | 21 | 0.0% | +| md_MAIN_013 | 3 | 0 | 0 | 3 | 16 | 18.8% | +| md_MAIN_014 | 3 | 0 | 0 | 4 | 13 | 30.8% | +| md_MAIN_015 | 3 | 0 | 0 | 3 | 20 | 15.0% | +| md_MAIN_016 | 2 | 0 | 0 | 3 | 13 | 23.1% | +| md_MAIN_017 | 3 | 0 | 0 | 3 | 10 | 30.0% | +| md_MAIN_018 | 3 | 0 | 0 | 4 | 11 | 36.4% | +| md_MAIN_019 | 3 | 0 | 0 | 3 | 22 | 13.6% | +| md_MAIN_020 | 5 | 0 | 0 | 6 | 14 | 42.9% | +| md_MAIN_021 | 3 | 0 | 0 | 4 | 11 | 36.4% | +| md_MAIN_022 | 10 | 0 | 0 | 12 | 33 | 36.4% | +| md_MAIN_023 | 2 | 0 | 0 | 3 | 6 | 50.0% | +| md_MAIN_024 | 2 | 0 | 0 | 4 | 6 | 66.7% | +| md_MAIN_025 | 3 | 0 | 0 | 3 | 30 | 10.0% | +| md_MAIN_026 | 3 | 0 | 0 | 3 | 24 | 12.5% | +| md_MAIN_027 | 6 | 0 | 0 | 8 | 29 | 27.6% | +| md_MAIN_028 | 3 | 0 | 0 | 3 | 22 | 13.6% | +| md_MAIN_029 | 3 | 0 | 0 | 4 | 11 | 36.4% | +| md_MAIN_030 | 3 | 0 | 0 | 3 | 10 | 30.0% | +| md_MAIN_031 | 2 | 0 | 0 | 2 | 18 | 11.1% | +| md_MAIN_032 | 2 | 0 | 0 | 2 | 10 | 20.0% | +| md_MAIN_033 | 2 | 0 | 0 | 2 | 19 | 10.5% | +| md_MAIN_034 | 2 | 0 | 0 | 3 | 28 | 10.7% | +| md_MAIN_035 | 7 | 0 | 0 | 8 | 16 | 50.0% | +| md_MAIN_036 | 2 | 0 | 0 | 3 | 28 | 10.7% | +| md_MAIN_037 | 2 | 0 | 0 | 2 | 17 | 11.8% | +| md_MAIN_038 | 3 | 0 | 0 | 3 | 20 | 15.0% | +| md_MAIN_039 | 2 | 0 | 0 | 2 | 26 | 7.7% | +| md_MAIN_040 | 2 | 0 | 0 | 2 | 19 | 10.5% | +| md_MAIN_041 | 3 | 0 | 0 | 3 | 15 | 20.0% | +| md_MAIN_042 | 0 | 0 | 0 | 0 | 4 | 0.0% | +| md_MAIN_043 | 2 | 0 | 0 | 3 | 23 | 13.0% | +| md_MAIN_044 | 7 | 0 | 0 | 8 | 44 | 18.2% | +| md_MAIN_045 | 0 | 0 | 0 | 1 | 21 | 4.8% | +| md_MAIN_046 | 4 | 0 | 0 | 5 | 39 | 12.8% | +| md_MAIN_047 | 3 | 0 | 0 | 4 | 12 | 33.3% | +| md_SC07_003 | 12 | 0 | 0 | 12 | 100 | 12.0% | +| md_SC07_004 | 40 | 0 | 0 | 40 | 315 | 12.7% | +| ov_MAIN_012 | 1778 | 1612 | 0 | 1857 | 2403 | 77.3% | | ov_SC01_000 | 2389 | 1755 | 0 | 2389 | 2403 | 99.4% | | ov_SC01_001 | 2396 | 1756 | 0 | 2398 | 2466 | 97.2% | | ov_SC01_004 | 2393 | 1747 | 0 | 2394 | 2414 | 99.2% | @@ -46,7 +86,7 @@ FLEET matchable : 361133 | ov_SC02_028 | 2563 | 1751 | 0 | 2573 | 2701 | 95.3% | | ov_SC02_031 | 2493 | 1752 | 0 | 2498 | 2562 | 97.5% | | ov_SC02_035 | 2487 | 1751 | 0 | 2490 | 2520 | 98.8% | -| ov_SC02_037 | 1720 | 1612 | 0 | 1802 | 2516 | 71.6% | +| ov_SC02_037 | 1808 | 1612 | 0 | 1890 | 2516 | 75.1% | | ov_SC02_039 | 2394 | 1751 | 0 | 2394 | 2416 | 99.1% | | ov_SC02_041 | 2475 | 1751 | 0 | 2478 | 2561 | 96.8% | | ov_SC03_001 | 2669 | 1752 | 0 | 2686 | 2869 | 93.6% | @@ -83,7 +123,7 @@ FLEET matchable : 361133 | ov_SC03_103 | 2493 | 1753 | 0 | 2496 | 2510 | 99.4% | | ov_SC03_104 | 2541 | 1756 | 0 | 2548 | 2616 | 97.4% | | ov_SC03_105 | 2448 | 1752 | 0 | 2455 | 2597 | 94.5% | -| ov_SC03_107 | 1705 | 1612 | 0 | 1788 | 2497 | 71.6% | +| ov_SC03_107 | 1787 | 1612 | 0 | 1870 | 2497 | 74.9% | | ov_SC03_108 | 2399 | 1751 | 0 | 2399 | 2443 | 98.2% | | ov_SC03_109 | 2407 | 1751 | 0 | 2409 | 2424 | 99.4% | | ov_SC03_110 | 2440 | 1751 | 0 | 2440 | 2468 | 98.9% | diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index 9500e7856..f4b664b43 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -201,7 +201,30 @@ stub on a named wall/behemoth/queue ledger** — 140/140 byte-identical througho - **II.1b ✅ — SC07 pair onboarded BYTE-IDENTICAL at 0x801A00D8** (md_SC07_003 text-lo 0xFC, 100 fns; md_SC07_004 text-lo 0x158, 315 fns — the derived TLOs matched the plan's documented values exactly via the independent first-prologue scan). Symbol stacks window-checked clean. -- **II.1c** (sig-modules · hseq regen · dedup pass · audit-binaries · R22 · audit-disc) — next. +- **II.1c ✅ — the module batch signed, dedup-banked, and fully verified.** + · **Dedup measure (R37 probe first):** 69/1,113 module fns h_exact-match matched corpus code + (~6% — LOW, as the plan predicted; modules are novel frontier). `dedup_extend` plans 0 (its + group model is same-vram; modules live at their own slots) → routed through + **`family_sweep --hseq --band all --only <57 exemplars>`** instead: **408 member-matches + banked** (182 into modules 1,113→931 stubs; 226 into the big 3 — families Part I's scoping + missed, caught by the regen), 169 failed + 77 STRUCT-refused = genuine frontier. + · **R22 clean-fleet: 183 passed / 0 failed of 183.** + · **`make audit-disc`: UNCLAIMED 75 → 34, residue 0.** 34 = the 31 parked-for-L3 **+ 3 rows + Discovery-3 never tiered: SC03/53, SC03/54, SC03/56** (SC-disc type-1s, per-disc runtime + routing like SC02/9 — parked for L3 with the rest; recorded in II.2/II.3 docs). + · **Three instrument fixes, each negative-control-proven:** (1) `family_sweep --hseq` stub map + now derives ov_*+md_*+resident (was sig.ov_* glob → every module member silently "not-stub", + the R32 class; 0→32 staged on the control family); (2) `sig-modules` seeds from the built + ELF's func_* symbols (bootstrap's linear partition GLUES adjacent fns around jtbl dispatch — + 24 false TRUNCATED; perturbed-sig control still flags real disagreement); (3) `corpus.audit` + counts CODE lines only (a module .s legitimately carries its header jtbl as .word lines — + the paired-.rodata migration), and `progress.py` buckets INCLUDE_RODATA symbols as blobs + (the §154 id word emitted per-symbol was an unbucketed R32 hole). + · **tools-health OK · audit-digest OK. NEW HONEST BASELINE (183 binaries): 94.0% instr + (12,682,962/13,487,439) · 95.96% fn-count · 87.6% distinct (78,596/90,143 uniq).** The drop + from S44's 94.4% is the denominator growing +52k module ins (honest direction, P27/S39/S44 + precedent). +- **II.2** (retirements + SETUP module recipe) — next. --- diff --git a/src/md_MAIN_001/md_MAIN_001.c b/src/md_MAIN_001/md_MAIN_001.c index c24686a1a..7adab14d5 100644 --- a/src/md_MAIN_001/md_MAIN_001.c +++ b/src/md_MAIN_001/md_MAIN_001.c @@ -1,6 +1,18 @@ #include "common.h" -INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CEDFC); + + +void func_800CEDFC(void) { + + extern u16 D_800B99E4; + extern void (*D_800CF450[])(void); + u32 v1; + v1 = D_800B99E4; + if (v1 < 8) { + D_800CF450[v1](); + } +} + INCLUDE_ASM("asm/md_MAIN_001/nonmatchings/md_MAIN_001", func_800CEE40); diff --git a/src/md_MAIN_013/md_MAIN_013.c b/src/md_MAIN_013/md_MAIN_013.c index 38ad53490..74a4d74dd 100644 --- a/src/md_MAIN_013/md_MAIN_013.c +++ b/src/md_MAIN_013/md_MAIN_013.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CAE54); -INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CAE98); + +void func_800CAE54(void *a0) { + + extern void (*D_800CB880[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB880[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAEE0(u8 *a0); +void func_800CAE98(u8 *a0) { + if (func_80161104()) { + func_800CAEE0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CAEE0); @@ -30,4 +46,11 @@ INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CB56C); INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CB6E4); -INCLUDE_ASM("asm/md_MAIN_013/nonmatchings/md_MAIN_013", func_800CB7F0); +extern s32 func_80128ED8(void *a0, void *a1); +extern void func_80146C3C(); +void func_800CB7F0(s32 a0) { + if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { + ((void (*)(s32))func_80146C3C)(a0); + } +} + diff --git a/src/md_MAIN_014/md_MAIN_014.c b/src/md_MAIN_014/md_MAIN_014.c index 511d9b087..bee332169 100644 --- a/src/md_MAIN_014/md_MAIN_014.c +++ b/src/md_MAIN_014/md_MAIN_014.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_014/nonmatchings/md_MAIN_014", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_014/nonmatchings/md_MAIN_014", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_014/nonmatchings/md_MAIN_014", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CB5BC[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB5BC[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEB0(); +void func_800CAE78(void *a0) { + func_800CAEB0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_014/nonmatchings/md_MAIN_014", func_800CAEB0); @@ -13,7 +26,14 @@ INCLUDE_ASM("asm/md_MAIN_014/nonmatchings/md_MAIN_014", func_800CAF20); void func_800CAF4C(void) { } -INCLUDE_ASM("asm/md_MAIN_014/nonmatchings/md_MAIN_014", func_800CAF54); + + +void func_800CAF54(void *a0) { + + extern void (*D_800CB5DC[])(void); + D_800CB5DC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_014/nonmatchings/md_MAIN_014", func_800CAF90); diff --git a/src/md_MAIN_015/md_MAIN_015.c b/src/md_MAIN_015/md_MAIN_015.c index dc7fad9f5..093d85feb 100644 --- a/src/md_MAIN_015/md_MAIN_015.c +++ b/src/md_MAIN_015/md_MAIN_015.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_015/nonmatchings/md_MAIN_015", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_015/nonmatchings/md_MAIN_015", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_015/nonmatchings/md_MAIN_015", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CBB24[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CBB24[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAEC0(u8 *a0); +void func_800CAE78(u8 *a0) { + if (func_80161104()) { + func_800CAEC0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_015/nonmatchings/md_MAIN_015", func_800CAEC0); @@ -14,7 +30,13 @@ INCLUDE_ASM("asm/md_MAIN_015/nonmatchings/md_MAIN_015", func_800CAF9C); INCLUDE_ASM("asm/md_MAIN_015/nonmatchings/md_MAIN_015", func_800CB140); -INCLUDE_ASM("asm/md_MAIN_015/nonmatchings/md_MAIN_015", func_800CB190); +extern void func_80154A74(s32 a0, s32 a1); +s32 func_800CB190(s32 a0) +{ + *(u32 *)(a0 + 0x44) = *(u32 *)(a0 + 0x44) & ~2; + func_80154A74(a0, 0x11); +} + INCLUDE_ASM("asm/md_MAIN_015/nonmatchings/md_MAIN_015", func_800CB1C0); diff --git a/src/md_MAIN_016/md_MAIN_016.c b/src/md_MAIN_016/md_MAIN_016.c index 798a565a8..bc561b118 100644 --- a/src/md_MAIN_016/md_MAIN_016.c +++ b/src/md_MAIN_016/md_MAIN_016.c @@ -2,9 +2,23 @@ INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CB51C[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB51C[*(u8 *)((s32)a0 + 0x197)](); +} + + +s32 func_800CAE78(u8 *a0) +{ + s32 v = a0[407] + 1; + a0[407] = v; + return v; +} + INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CAE8C); diff --git a/src/md_MAIN_017/md_MAIN_017.c b/src/md_MAIN_017/md_MAIN_017.c index 904f5b4ef..1f9a2f4aa 100644 --- a/src/md_MAIN_017/md_MAIN_017.c +++ b/src/md_MAIN_017/md_MAIN_017.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_017/nonmatchings/md_MAIN_017", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_017/nonmatchings/md_MAIN_017", func_800CAE44); -INCLUDE_ASM("asm/md_MAIN_017/nonmatchings/md_MAIN_017", func_800CAE88); + +void func_800CAE44(void *a0) { + + extern void (*D_800CB318[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB318[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEC0(); +void func_800CAE88(void *a0) { + func_800CAEC0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_017/nonmatchings/md_MAIN_017", func_800CAEC0); @@ -14,7 +27,14 @@ INCLUDE_ASM("asm/md_MAIN_017/nonmatchings/md_MAIN_017", func_800CAF7C); INCLUDE_ASM("asm/md_MAIN_017/nonmatchings/md_MAIN_017", func_800CAFA0); -INCLUDE_ASM("asm/md_MAIN_017/nonmatchings/md_MAIN_017", func_800CB190); + + +void func_800CB190(void *a0) { + + extern void (*D_800CB350[])(void); + D_800CB350[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_017/nonmatchings/md_MAIN_017", func_800CB1CC); diff --git a/src/md_MAIN_018/md_MAIN_018.c b/src/md_MAIN_018/md_MAIN_018.c index 19b0f5f94..19236eb32 100644 --- a/src/md_MAIN_018/md_MAIN_018.c +++ b/src/md_MAIN_018/md_MAIN_018.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CAEB4); -INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CAEF8); + +void func_800CAEB4(void *a0) { + + extern void (*D_800CB5E8[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB5E8[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAF30(); +void func_800CAEF8(void *a0) { + func_800CAF30(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CAF30); @@ -21,4 +34,11 @@ INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CB168); INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CB328); -INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CB5AC); + + +void func_800CB5AC(void *a0) { + + extern void (*D_800CB614[])(void); + D_800CB614[*(u16 *)((s32)a0 + 0x2)](); +} + diff --git a/src/md_MAIN_019/md_MAIN_019.c b/src/md_MAIN_019/md_MAIN_019.c index eadb2ef16..af16f11a3 100644 --- a/src/md_MAIN_019/md_MAIN_019.c +++ b/src/md_MAIN_019/md_MAIN_019.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CC104[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CC104[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAEC0(u8 *a0); +void func_800CAE78(u8 *a0) { + if (func_80161104()) { + func_800CAEC0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CAEC0); @@ -12,7 +28,13 @@ INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CAF08); INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CB0C8); -INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CB170); +extern void func_80154A74(s32 a0, s32 a1); +s32 func_800CB170(s32 a0) +{ + *(u32 *)(a0 + 0x44) = *(u32 *)(a0 + 0x44) & ~2; + func_80154A74(a0, 0x11); +} + INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CB1A0); diff --git a/src/md_MAIN_020/md_MAIN_020.c b/src/md_MAIN_020/md_MAIN_020.c index 5c9f44768..a77ad243e 100644 --- a/src/md_MAIN_020/md_MAIN_020.c +++ b/src/md_MAIN_020/md_MAIN_020.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CB260[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB260[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEB0(); +void func_800CAE78(void *a0) { + func_800CAEB0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAEB0); @@ -15,11 +28,28 @@ INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAF18); INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAF38); -INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAF6C); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_800CAFA0(void *a0); +void func_800CAF6C(s32 *a0) { + func_80147078(a0, 31); + func_800CAFA0(a0); +} -INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAFA0); -INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAFDC); + + +void func_800CAFA0(void *a0) { + + extern void (*D_800CB26C[])(void); + D_800CB26C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_800CAFFC(void); +void func_800CAFDC(void) { + func_800CAFFC(); +} + INCLUDE_ASM("asm/md_MAIN_020/nonmatchings/md_MAIN_020", func_800CAFFC); diff --git a/src/md_MAIN_021/md_MAIN_021.c b/src/md_MAIN_021/md_MAIN_021.c index 94c2a8992..47e2fe5df 100644 --- a/src/md_MAIN_021/md_MAIN_021.c +++ b/src/md_MAIN_021/md_MAIN_021.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_021/nonmatchings/md_MAIN_021", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_021/nonmatchings/md_MAIN_021", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_021/nonmatchings/md_MAIN_021", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CB4FC[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB4FC[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEB0(); +void func_800CAE78(void *a0) { + func_800CAEB0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_021/nonmatchings/md_MAIN_021", func_800CAEB0); @@ -17,7 +30,14 @@ INCLUDE_ASM("asm/md_MAIN_021/nonmatchings/md_MAIN_021", func_800CAF94); INCLUDE_ASM("asm/md_MAIN_021/nonmatchings/md_MAIN_021", func_800CB0C8); -INCLUDE_ASM("asm/md_MAIN_021/nonmatchings/md_MAIN_021", func_800CB33C); + + +void func_800CB33C(void *a0) { + + extern void (*D_800CB508[])(void); + D_800CB508[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_021/nonmatchings/md_MAIN_021", func_800CB378); diff --git a/src/md_MAIN_022/md_MAIN_022.c b/src/md_MAIN_022/md_MAIN_022.c index edaacd11e..e030252b3 100644 --- a/src/md_MAIN_022/md_MAIN_022.c +++ b/src/md_MAIN_022/md_MAIN_022.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CBC90[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CBC90[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEB0(); +void func_800CAE78(void *a0) { + func_800CAEB0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CAEB0); @@ -15,11 +28,28 @@ void func_800CAF3C(void) { INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CAF44); -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CAF78); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_800CAFAC(void *a0); +void func_800CAF78(s32 *a0) { + func_80147078(a0, 34); + func_800CAFAC(a0); +} -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CAFAC); -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CAFE8); + + +void func_800CAFAC(void *a0) { + + extern void (*D_800CBC9C[])(void); + D_800CBC9C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_800CB008(void); +void func_800CAFE8(void) { + func_800CB008(); +} + INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CB008); @@ -56,14 +86,89 @@ INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CB630); INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CB68C); -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CB8A4); +extern void func_800CBAA4(s32 a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +void func_800CB8A4(s32 a0) { + s32 s1; + s32 v; + s1 = *(s32 *)(a0 + 0x20); + func_800CBAA4(a0); + v = *(s32 *)(a0 + 0x1C) - 1; + *(s32 *)(a0 + 0x1C) = v; + if (v != 0) { + func_80146A6C(0x41, (void *)a0, 0, 0, 0, 0x8000, 0); + *(s16 *)(s1 + 0x18) = *(u16 *)(s1 + 0x18) + 0x100; + *(s16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x140; + return; + } + *(s32 *)(a0 + 0x1C) = 0x20; + *(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; +} -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CB944); -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CB9C0); +extern void func_800CBAA4(s32 a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +void func_800CB944(s32 *a0) { + func_800CBAA4((s32)a0); + if (--a0[0x1C / 4] != 0) { + func_80146A6C(0x41, a0, 0, 0, 0, 0x8000, 0); + } else { + a0[0x1C / 4] = 0x10; + *(u16 *)((char *)a0 + 2) += 1; + } +} -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CBA30); -INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CBAA4); +extern void func_800CBAA4(s32 a0); +extern void func_80146C3C(); +void func_800CB9C0(void *a0) { + s32 *s1 = *(s32 **)((s32)a0 + 0x20); + func_800CBAA4((s32)a0); + if (--*(s32 *)((s32)a0 + 0x1C) != 0) { + *(u16 *)((s32)s1 + 0x18) -= 0x100; + *(u16 *)((s32)s1 + 0x1A) -= 0x120; + } else { + ((void (*)(s32))func_80146C3C)((s32)a0); + } +} + + +extern void func_800D22E4(s32 a0); +extern void func_800CBB38(void *a0, void *a1); +extern void func_80146C3C(); +void func_800CBA30(void *a0) { + s32 v0; + v0 = *(s32*)((s32)a0 + 0x1C) - 1; + *(s32*)((s32)a0 + 0x1C) = v0; + if (v0 != 0) { + func_800D22E4((s32)a0); + *(s16*)((s32)a0 + 0x16) = *(u16*)((s32)a0 + 0x16) - 3; + *(s32*)((s32)a0 + 0x30) = *(s32*)((s32)a0 + 0x30) - 0xE; + func_800CBB38(a0, (void*)((s32)a0 + 0x38)); + } else { + ((void (*)(void *))func_80146C3C)(a0); + } +} + + +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_800D23D0(void *a0); +extern void RotMatrixYXZ(void *a0, void *a1); +void func_800CBAA4(s32 a0) { + s16 src[4]; + u8 mtx[8]; + s32 p; + p = *(s32 *)(a0 + 0x34); + src[0] = *(u16 *)(p + 0x6); + src[1] = *(u16 *)(p + 0xA) - 0x28; + src[2] = *(u16 *)(p + 0xE); + func_800D20C0((void *)src, (void *)mtx, 6); + *(s16 *)(a0 + 0x6) = src[0]; + *(s16 *)(a0 + 0xA) = src[1]; + *(s16 *)(a0 + 0xE) = src[2]; + func_800D23D0((void *)mtx); + RotMatrixYXZ((void *)mtx, (void *)(a0 + 0x38)); +} + INCLUDE_ASM("asm/md_MAIN_022/nonmatchings/md_MAIN_022", func_800CBB38); diff --git a/src/md_MAIN_023/md_MAIN_023.c b/src/md_MAIN_023/md_MAIN_023.c index 891c3938c..4dbc7f602 100644 --- a/src/md_MAIN_023/md_MAIN_023.c +++ b/src/md_MAIN_023/md_MAIN_023.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_023/nonmatchings/md_MAIN_023", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_023/nonmatchings/md_MAIN_023", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_023/nonmatchings/md_MAIN_023", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CAF40[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CAF40[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAEC0(u8 *a0); +void func_800CAE78(u8 *a0) { + if (func_80161104()) { + func_800CAEC0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_023/nonmatchings/md_MAIN_023", func_800CAEC0); diff --git a/src/md_MAIN_024/md_MAIN_024.c b/src/md_MAIN_024/md_MAIN_024.c index 59065ed89..0811aebd6 100644 --- a/src/md_MAIN_024/md_MAIN_024.c +++ b/src/md_MAIN_024/md_MAIN_024.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_024/nonmatchings/md_MAIN_024", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_024/nonmatchings/md_MAIN_024", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_024/nonmatchings/md_MAIN_024", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CAF08[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CAF08[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEB0(); +void func_800CAE78(void *a0) { + func_800CAEB0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_024/nonmatchings/md_MAIN_024", func_800CAEB0); diff --git a/src/md_MAIN_025/md_MAIN_025.c b/src/md_MAIN_025/md_MAIN_025.c index 6fc213ef0..aac2f3f49 100644 --- a/src/md_MAIN_025/md_MAIN_025.c +++ b/src/md_MAIN_025/md_MAIN_025.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_025/nonmatchings/md_MAIN_025", func_800CAE14); -INCLUDE_ASM("asm/md_MAIN_025/nonmatchings/md_MAIN_025", func_800CAE5C); -INCLUDE_ASM("asm/md_MAIN_025/nonmatchings/md_MAIN_025", func_800CAEA0); + +void func_800CAE5C(void *a0) { + + extern void (*D_800CBE7C[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CBE7C[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAED8(); +void func_800CAEA0(void *a0) { + func_800CAED8(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_025/nonmatchings/md_MAIN_025", func_800CAED8); @@ -20,7 +33,11 @@ INCLUDE_ASM("asm/md_MAIN_025/nonmatchings/md_MAIN_025", func_800CB0E4); INCLUDE_ASM("asm/md_MAIN_025/nonmatchings/md_MAIN_025", func_800CB138); -INCLUDE_ASM("asm/md_MAIN_025/nonmatchings/md_MAIN_025", func_800CB180); +extern void func_800CBBF8(void); +void func_800CB180(void) { + func_800CBBF8(); +} + INCLUDE_ASM("asm/md_MAIN_025/nonmatchings/md_MAIN_025", func_800CB1A0); diff --git a/src/md_MAIN_026/md_MAIN_026.c b/src/md_MAIN_026/md_MAIN_026.c index 7afda7d06..260872f6c 100644 --- a/src/md_MAIN_026/md_MAIN_026.c +++ b/src/md_MAIN_026/md_MAIN_026.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CAE44); -INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CAE88); + +void func_800CAE44(void *a0) { + + extern void (*D_800CBB10[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CBB10[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEC0(); +void func_800CAE88(void *a0) { + func_800CAEC0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CAEC0); @@ -14,7 +27,11 @@ INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CAF68); INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB010); -INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB078); +extern void func_800CB108(void); +void func_800CB078(void) { + func_800CB108(); +} + INCLUDE_ASM("asm/md_MAIN_026/nonmatchings/md_MAIN_026", func_800CB098); diff --git a/src/md_MAIN_027/md_MAIN_027.c b/src/md_MAIN_027/md_MAIN_027.c index f8c9bb2f2..099cfc2cf 100644 --- a/src/md_MAIN_027/md_MAIN_027.c +++ b/src/md_MAIN_027/md_MAIN_027.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CAE44); -INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CAE88); + +void func_800CAE44(void *a0) { + + extern void (*D_800CC134[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CC134[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEC0(); +void func_800CAE88(void *a0) { + func_800CAEC0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CAEC0); @@ -16,11 +29,28 @@ void func_800CAF20(void) { INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CAF28); -INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CAF5C); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_800CAF90(void *a0); +void func_800CAF5C(s32 *a0) { + func_80147078(a0, 32); + func_800CAF90(a0); +} -INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CAF90); -INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CAFCC); + + +void func_800CAF90(void *a0) { + + extern void (*D_800CC140[])(void); + D_800CC140[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_800CAFEC(void); +void func_800CAFCC(void) { + func_800CAFEC(); +} + INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CAFEC); @@ -54,7 +84,11 @@ INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CBECC); INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CBF28); -INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CBFE4); +extern void func_800CC024(void); +void func_800CBFE4(void) { + func_800CC024(); +} + INCLUDE_ASM("asm/md_MAIN_027/nonmatchings/md_MAIN_027", func_800CC004); diff --git a/src/md_MAIN_028/md_MAIN_028.c b/src/md_MAIN_028/md_MAIN_028.c index 7989f13b4..44f9cef85 100644 --- a/src/md_MAIN_028/md_MAIN_028.c +++ b/src/md_MAIN_028/md_MAIN_028.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_028/nonmatchings/md_MAIN_028", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_028/nonmatchings/md_MAIN_028", func_800CAE44); -INCLUDE_ASM("asm/md_MAIN_028/nonmatchings/md_MAIN_028", func_800CAE88); + +void func_800CAE44(void *a0) { + + extern void (*D_800CBE94[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CBE94[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEC0(); +void func_800CAE88(void *a0) { + func_800CAEC0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_028/nonmatchings/md_MAIN_028", func_800CAEC0); @@ -18,7 +31,15 @@ INCLUDE_ASM("asm/md_MAIN_028/nonmatchings/md_MAIN_028", func_800CB3AC); INCLUDE_ASM("asm/md_MAIN_028/nonmatchings/md_MAIN_028", func_800CB484); -INCLUDE_ASM("asm/md_MAIN_028/nonmatchings/md_MAIN_028", func_800CB564); +extern s32 func_800CB6D4(s32 a0); +extern s32 func_800CB600(void *a0); +void func_800CB564(int param_1) +{ + if (((int (*)(void))func_800CB6D4)() != 0) { + ((void (*)(int))func_800CB600)(param_1); + } +} + INCLUDE_ASM("asm/md_MAIN_028/nonmatchings/md_MAIN_028", func_800CB59C); diff --git a/src/md_MAIN_029/md_MAIN_029.c b/src/md_MAIN_029/md_MAIN_029.c index fbe57bc5d..bcd3e03ca 100644 --- a/src/md_MAIN_029/md_MAIN_029.c +++ b/src/md_MAIN_029/md_MAIN_029.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_029/nonmatchings/md_MAIN_029", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_029/nonmatchings/md_MAIN_029", func_800CAE64); -INCLUDE_ASM("asm/md_MAIN_029/nonmatchings/md_MAIN_029", func_800CAEA8); + +void func_800CAE64(void *a0) { + + extern void (*D_800CB49C[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB49C[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEE0(); +void func_800CAEA8(void *a0) { + func_800CAEE0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_029/nonmatchings/md_MAIN_029", func_800CAEE0); @@ -21,4 +34,11 @@ INCLUDE_ASM("asm/md_MAIN_029/nonmatchings/md_MAIN_029", func_800CB0D0); INCLUDE_ASM("asm/md_MAIN_029/nonmatchings/md_MAIN_029", func_800CB2AC); -INCLUDE_ASM("asm/md_MAIN_029/nonmatchings/md_MAIN_029", func_800CB460); + + +void func_800CB460(void *a0) { + + extern void (*D_800CB4BC[])(void); + D_800CB4BC[*(u16 *)((s32)a0 + 0x2)](); +} + diff --git a/src/md_MAIN_030/md_MAIN_030.c b/src/md_MAIN_030/md_MAIN_030.c index 3aca7b8c8..023b66861 100644 --- a/src/md_MAIN_030/md_MAIN_030.c +++ b/src/md_MAIN_030/md_MAIN_030.c @@ -2,9 +2,22 @@ INCLUDE_ASM("asm/md_MAIN_030/nonmatchings/md_MAIN_030", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_030/nonmatchings/md_MAIN_030", func_800CAE44); -INCLUDE_ASM("asm/md_MAIN_030/nonmatchings/md_MAIN_030", func_800CAE88); + +void func_800CAE44(void *a0) { + + extern void (*D_800CB458[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB458[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CAEC0(); +void func_800CAE88(void *a0) { + func_800CAEC0(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_030/nonmatchings/md_MAIN_030", func_800CAEC0); @@ -18,4 +31,11 @@ INCLUDE_ASM("asm/md_MAIN_030/nonmatchings/md_MAIN_030", func_800CB158); INCLUDE_ASM("asm/md_MAIN_030/nonmatchings/md_MAIN_030", func_800CB1EC); -INCLUDE_ASM("asm/md_MAIN_030/nonmatchings/md_MAIN_030", func_800CB41C); + + +void func_800CB41C(void *a0) { + + extern void (*D_800CB490[])(void); + D_800CB490[*(u16 *)((s32)a0 + 0x2)](); +} + diff --git a/src/md_MAIN_031/md_MAIN_031.c b/src/md_MAIN_031/md_MAIN_031.c index ef21f06de..a575df682 100644 --- a/src/md_MAIN_031/md_MAIN_031.c +++ b/src/md_MAIN_031/md_MAIN_031.c @@ -4,9 +4,25 @@ INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CAE0C); INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CAE74); -INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CAF58); -INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CAF9C); + +void func_800CAF58(void *a0) { + + extern void (*D_800CBFE4[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CBFE4[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAFE4(u8 *a0); +void func_800CAF9C(u8 *a0) { + if (func_80161104()) { + func_800CAFE4(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_031/nonmatchings/md_MAIN_031", func_800CAFE4); diff --git a/src/md_MAIN_032/md_MAIN_032.c b/src/md_MAIN_032/md_MAIN_032.c index b00f7447f..3bd3c9368 100644 --- a/src/md_MAIN_032/md_MAIN_032.c +++ b/src/md_MAIN_032/md_MAIN_032.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_032/nonmatchings/md_MAIN_032", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_032/nonmatchings/md_MAIN_032", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_032/nonmatchings/md_MAIN_032", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CB29C[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB29C[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAEC0(u8 *a0); +void func_800CAE78(u8 *a0) { + if (func_80161104()) { + func_800CAEC0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_032/nonmatchings/md_MAIN_032", func_800CAEC0); diff --git a/src/md_MAIN_033/md_MAIN_033.c b/src/md_MAIN_033/md_MAIN_033.c index 03cea5eb9..0eb3bf132 100644 --- a/src/md_MAIN_033/md_MAIN_033.c +++ b/src/md_MAIN_033/md_MAIN_033.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_033/nonmatchings/md_MAIN_033", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_033/nonmatchings/md_MAIN_033", func_800CAE44); -INCLUDE_ASM("asm/md_MAIN_033/nonmatchings/md_MAIN_033", func_800CAE88); + +void func_800CAE44(void *a0) { + + extern void (*D_800CB8A4[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB8A4[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAED0(u8 *a0); +void func_800CAE88(u8 *a0) { + if (func_80161104()) { + func_800CAED0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_033/nonmatchings/md_MAIN_033", func_800CAED0); diff --git a/src/md_MAIN_034/md_MAIN_034.c b/src/md_MAIN_034/md_MAIN_034.c index 1d60af290..6a2ba1a02 100644 --- a/src/md_MAIN_034/md_MAIN_034.c +++ b/src/md_MAIN_034/md_MAIN_034.c @@ -26,9 +26,22 @@ INCLUDE_ASM("asm/md_MAIN_034/nonmatchings/md_MAIN_034", func_800CC110); INCLUDE_ASM("asm/md_MAIN_034/nonmatchings/md_MAIN_034", func_800CC144); -INCLUDE_ASM("asm/md_MAIN_034/nonmatchings/md_MAIN_034", func_800CC16C); -INCLUDE_ASM("asm/md_MAIN_034/nonmatchings/md_MAIN_034", func_800CC1B0); + +void func_800CC16C(void *a0) { + + extern void (*D_800CCA18[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CCA18[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern void func_800CC1E8(); +void func_800CC1B0(void *a0) { + func_800CC1E8(a0); + *(u8 *)((s32)a0 + 0x197) += 1; +} + INCLUDE_ASM("asm/md_MAIN_034/nonmatchings/md_MAIN_034", func_800CC1E8); diff --git a/src/md_MAIN_035/md_MAIN_035.c b/src/md_MAIN_035/md_MAIN_035.c index 8f54794c7..11c8a52ef 100644 --- a/src/md_MAIN_035/md_MAIN_035.c +++ b/src/md_MAIN_035/md_MAIN_035.c @@ -2,22 +2,62 @@ INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CAE34); + + +void func_800CAE34(void *a0) { + + extern void (*D_800CB278[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB278[*(u8 *)((s32)a0 + 0x197)](); +} + INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CAE78); -INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CAEB0); +s32 func_800CAEB0(u8 *a0) +{ + s32 v = a0[407] + 1; + a0[407] = v; + return v; +} + + + + +void func_800CAEC4(void) { + + extern s32 D_80078EC8; + D_80078EC8 = 1; +} -INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CAEC4); void func_800CAED8(void) { } -INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CAEE0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_800CAFBC(void *a0); +void func_800CAEE0(s32 *a0) { + func_80147078(a0, 35); + func_800CAFBC(a0); +} -INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CAF14); -INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CAF48); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_800CAF48(void *a0); +void func_800CAF14(s32 *a0) { + func_80147078(a0, 35); + func_800CAF48(a0); +} + + + + +void func_800CAF48(void *a0) { + + extern void (*D_800CB284[])(void); + D_800CB284[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CAF84); @@ -29,6 +69,34 @@ INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CB080); INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CB108); -INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CB13C); + +// @class: other +// @stuck: none — MATCH (proxy gate) + +extern void func_80149374(s32 a0, s32 a1); + +void func_800CB13C(s32 param_1) { + + extern s8 D_800CB290[]; + s32 iVar1; + s32 iVar2; + + iVar2 = *(s32 *)(param_1 + 0x178); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 6) = (s16)D_800CB290[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 10) = (s16)D_800CB290[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 0xe) = (s16)D_800CB290[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); + + func_80149374(param_1, iVar2 + 4); +} + INCLUDE_ASM("asm/md_MAIN_035/nonmatchings/md_MAIN_035", func_800CB1F8); diff --git a/src/md_MAIN_036/md_MAIN_036.c b/src/md_MAIN_036/md_MAIN_036.c index 98ef54cd5..bf7a2478e 100644 --- a/src/md_MAIN_036/md_MAIN_036.c +++ b/src/md_MAIN_036/md_MAIN_036.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CAE54); -INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CAE98); + +void func_800CAE54(void *a0) { + + extern void (*D_800CBF94[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CBF94[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAEE0(u8 *a0); +void func_800CAE98(u8 *a0) { + if (func_80161104()) { + func_800CAEE0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_036/nonmatchings/md_MAIN_036", func_800CAEE0); diff --git a/src/md_MAIN_037/md_MAIN_037.c b/src/md_MAIN_037/md_MAIN_037.c index 0f8414b5f..f2901275e 100644 --- a/src/md_MAIN_037/md_MAIN_037.c +++ b/src/md_MAIN_037/md_MAIN_037.c @@ -4,9 +4,25 @@ INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CAE0C); INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CAE70); -INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CAEC0); -INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CAF04); + +void func_800CAEC0(void *a0) { + + extern void (*D_800CB610[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB610[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAF4C(u8 *a0); +void func_800CAF04(u8 *a0) { + if (func_80161104()) { + func_800CAF4C(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_037/nonmatchings/md_MAIN_037", func_800CAF4C); diff --git a/src/md_MAIN_038/md_MAIN_038.c b/src/md_MAIN_038/md_MAIN_038.c index b9c32369d..0e7c2e38e 100644 --- a/src/md_MAIN_038/md_MAIN_038.c +++ b/src/md_MAIN_038/md_MAIN_038.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CAE44); -INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CAE88); + +void func_800CAE44(void *a0) { + + extern void (*D_800CBBA8[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CBBA8[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAED0(u8 *a0); +void func_800CAE88(u8 *a0) { + if (func_80161104()) { + func_800CAED0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CAED0); @@ -14,7 +30,13 @@ INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CAFAC); INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CB194); -INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CB1E4); +extern void func_80154A74(s32 a0, s32 a1); +s32 func_800CB1E4(s32 a0) +{ + *(u32 *)(a0 + 0x44) = *(u32 *)(a0 + 0x44) & ~2; + func_80154A74(a0, 0x11); +} + INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CB214); diff --git a/src/md_MAIN_039/md_MAIN_039.c b/src/md_MAIN_039/md_MAIN_039.c index a702a6294..d72b63289 100644 --- a/src/md_MAIN_039/md_MAIN_039.c +++ b/src/md_MAIN_039/md_MAIN_039.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_039/nonmatchings/md_MAIN_039", func_800CAE14); -INCLUDE_ASM("asm/md_MAIN_039/nonmatchings/md_MAIN_039", func_800CAE4C); -INCLUDE_ASM("asm/md_MAIN_039/nonmatchings/md_MAIN_039", func_800CAE90); + +void func_800CAE4C(void *a0) { + + extern void (*D_800CBE34[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CBE34[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAED8(u8 *a0); +void func_800CAE90(u8 *a0) { + if (func_80161104()) { + func_800CAED8(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_039/nonmatchings/md_MAIN_039", func_800CAED8); diff --git a/src/md_MAIN_040/md_MAIN_040.c b/src/md_MAIN_040/md_MAIN_040.c index 19339c00a..1cb7b77d9 100644 --- a/src/md_MAIN_040/md_MAIN_040.c +++ b/src/md_MAIN_040/md_MAIN_040.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_040/nonmatchings/md_MAIN_040", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_040/nonmatchings/md_MAIN_040", func_800CAE44); -INCLUDE_ASM("asm/md_MAIN_040/nonmatchings/md_MAIN_040", func_800CAE88); + +void func_800CAE44(void *a0) { + + extern void (*D_800CB8C8[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB8C8[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAED0(u8 *a0); +void func_800CAE88(u8 *a0) { + if (func_80161104()) { + func_800CAED0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_040/nonmatchings/md_MAIN_040", func_800CAED0); diff --git a/src/md_MAIN_041/md_MAIN_041.c b/src/md_MAIN_041/md_MAIN_041.c index 5ad24a5e9..b4b66e09e 100644 --- a/src/md_MAIN_041/md_MAIN_041.c +++ b/src/md_MAIN_041/md_MAIN_041.c @@ -2,9 +2,25 @@ INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CAE0C); -INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CAE34); -INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CAE78); + +void func_800CAE34(void *a0) { + + extern void (*D_800CB7D4[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_800CB7D4[*(u8 *)((s32)a0 + 0x197)](); +} + + +extern s32 func_80161104(void); +extern void func_800CAEC0(u8 *a0); +void func_800CAE78(u8 *a0) { + if (func_80161104()) { + func_800CAEC0(a0); + *(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; + } +} + INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CAEC0); @@ -26,6 +42,12 @@ INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CB358); INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CB3BC); -INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CB634); +void func_800CB634(s32 a0) { + *(s32 *)(a0 + 0x1C) = 0x20; + *(u16 *)(a0 + 0x12) = 0; + *(u16 *)(a0 + 0x10) = 0x80; + *(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; +} + INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CB658); diff --git a/src/md_MAIN_043/md_MAIN_043.c b/src/md_MAIN_043/md_MAIN_043.c index 953aea78f..80bfdcbfe 100644 --- a/src/md_MAIN_043/md_MAIN_043.c +++ b/src/md_MAIN_043/md_MAIN_043.c @@ -18,7 +18,14 @@ INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCEA0); INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCEAC); -INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCF14); + + +void func_800CCF14(void *a0) { + + extern void (*D_800CD6EC[])(void); + D_800CD6EC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CCF50); @@ -34,7 +41,14 @@ INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CD27C); INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CD31C); -INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CD3C8); + + +void func_800CD3C8(void *a0) { + + extern void (*D_800CD6F8[])(void); + D_800CD6F8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_043/nonmatchings/md_MAIN_043", func_800CD404); diff --git a/src/md_MAIN_044/md_MAIN_044.c b/src/md_MAIN_044/md_MAIN_044.c index 6e354d698..0dbffa9e9 100644 --- a/src/md_MAIN_044/md_MAIN_044.c +++ b/src/md_MAIN_044/md_MAIN_044.c @@ -33,7 +33,14 @@ INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CD050); INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CD178); -INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CD198); + + +void func_800CD198(void *a0) { + + extern void (*D_800CE220[])(void); + D_800CE220[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CD1D4); @@ -61,13 +68,27 @@ INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CD848); INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CD894); -INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CD948); + + +void func_800CD948(void *a0) { + + extern void (*D_800CE24C[])(void); + D_800CE24C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CD984); INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CDA0C); -INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CDA44); + + +void func_800CDA44(void *a0) { + + extern void (*D_800CE254[])(void); + D_800CE254[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CDA80); @@ -75,9 +96,20 @@ INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CDB4C); INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CDBA8); -INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CDDA8); +extern void func_800CE004(void); +void func_800CDDA8(void) { + func_800CE004(); +} + + + + +void func_800CDDC8(void *a0) { + + extern void (*D_800CE25C[])(void); + D_800CE25C[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CDDC8); INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CDE04); @@ -85,8 +117,19 @@ INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CE004); INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CE134); -INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CE188); -INCLUDE_ASM("asm/md_MAIN_044/nonmatchings/md_MAIN_044", func_800CE1C4); + +void func_800CE188(void *a0) { + + extern void (*D_800CE268[])(void); + D_800CE268[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_800CE134(void); +void func_800CE1C4(void) { + func_800CE134(); +} + INCLUDE_RODATA("asm/md_MAIN_044/nonmatchings/md_MAIN_044", D_800CCB1C); diff --git a/src/md_MAIN_046/md_MAIN_046.c b/src/md_MAIN_046/md_MAIN_046.c index 9d3912108..884788895 100644 --- a/src/md_MAIN_046/md_MAIN_046.c +++ b/src/md_MAIN_046/md_MAIN_046.c @@ -9,11 +9,28 @@ INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CCB78); INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CCC8C); -INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CCCC0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_800CCCF4(void *a0); +void func_800CCCC0(s32 *a0) { + func_80147078(a0, 33); + func_800CCCF4(a0); +} -INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CCCF4); -INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CCD30); + + +void func_800CCCF4(void *a0) { + + extern void (*D_800CE044[])(void); + D_800CE044[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_800CCD50(void); +void func_800CCD30(void) { + func_800CCD50(); +} + INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CCD50); @@ -61,7 +78,13 @@ INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CDA4C); INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CDAB4); -INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CDBA4); +extern void func_800CDBF4(void); +extern void func_800CDCA8(void); +void func_800CDBA4(s32 a0) { + func_800CDBF4(); + ((void (*)(s32))func_800CDCA8)(a0); +} + INCLUDE_ASM("asm/md_MAIN_046/nonmatchings/md_MAIN_046", func_800CDBD4); diff --git a/src/md_MAIN_047/md_MAIN_047.c b/src/md_MAIN_047/md_MAIN_047.c index 48b6df4e5..48a888735 100644 --- a/src/md_MAIN_047/md_MAIN_047.c +++ b/src/md_MAIN_047/md_MAIN_047.c @@ -7,7 +7,14 @@ INCLUDE_ASM("asm/md_MAIN_047/nonmatchings/md_MAIN_047", func_800CCB28); INCLUDE_ASM("asm/md_MAIN_047/nonmatchings/md_MAIN_047", func_800CCB78); -INCLUDE_ASM("asm/md_MAIN_047/nonmatchings/md_MAIN_047", func_800CCB84); + + +void func_800CCB84(void *a0) { + + extern void (*D_800CD6C8[])(void); + D_800CD6C8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_047/nonmatchings/md_MAIN_047", func_800CCBC0); @@ -15,9 +22,23 @@ INCLUDE_ASM("asm/md_MAIN_047/nonmatchings/md_MAIN_047", func_800CCDE8); INCLUDE_ASM("asm/md_MAIN_047/nonmatchings/md_MAIN_047", func_800CD314); -INCLUDE_ASM("asm/md_MAIN_047/nonmatchings/md_MAIN_047", func_800CD458); -INCLUDE_ASM("asm/md_MAIN_047/nonmatchings/md_MAIN_047", func_800CD494); + +void func_800CD458(void *a0) { + + extern void (*D_800CD6D0[])(void); + D_800CD6D0[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_800CD494(void *a0) { + + extern void (*D_800CD6D8[])(void); + D_800CD6D8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_MAIN_047/nonmatchings/md_MAIN_047", func_800CD4D0); diff --git a/src/md_SC07_003/md_SC07_003.c b/src/md_SC07_003/md_SC07_003.c index c1756908c..13f4e7f22 100644 --- a/src/md_SC07_003/md_SC07_003.c +++ b/src/md_SC07_003/md_SC07_003.c @@ -98,7 +98,14 @@ INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A310C); INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A312C); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A3190); + + +void func_801A3190(void *a0) { + + extern void (*D_801A6D8C[])(void); + D_801A6D8C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A31CC); @@ -122,7 +129,14 @@ INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4268); INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A43E8); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A44C8); + + +void func_801A44C8(void *a0) { + + extern void (*D_801A6F00[])(void); + D_801A6F00[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4504); @@ -130,7 +144,14 @@ INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4590); INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4680); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4810); + + +void func_801A4810(void *a0) { + + extern void (*D_801A7308[])(void); + D_801A7308[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A484C); @@ -144,33 +165,129 @@ INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4D58); INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4DFC); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4F78); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4FB4); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A505C); +void func_801A4F78(void *a0) { + + extern void (*D_801A73B4[])(void); + D_801A73B4[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @stuck: none — MATCH (42 ins), iteration 1, rtu_match clean. +// Saturating add of a 3-byte RGB triple by a signed delta. +// Idioms: (1) `s8` by-value param => entry `sll/sra 24` for the sign test only; +// combine folds the extension back out of `~a1`/`-a1`/`a0[i]+a1` because every +// consumer is 8-bit (andi 0xFF / sb), so $a1 is used RAW after the test. +// (2) branch sense read off the target `sltu` operand ORDER (§3-T4): positive arm +// `sltu lim,p[i]` => store when `p[i] <= lim`; negative arm `sltu p[i],lim` +// => store when `p[i] >= lim`. +// (3) the third `if` written out in BOTH arms; jump.c cross-jumps the identical +// tails into the shared `j .L8018C344` (§5a) — do not hoist it after the if/else. +void func_801A4FB4(u8 *a0, s8 a1) { + u8 lim; + + if (a1 == 0) { + return; + } + if (a1 > 0) { + lim = ~a1; + if (a0[0] <= lim) { + a0[0] = a0[0] + a1; + } + if (a0[1] <= lim) { + a0[1] = a0[1] + a1; + } + if (a0[2] <= lim) { + a0[2] = a0[2] + a1; + } + } else { + lim = -a1; + if (a0[0] >= lim) { + a0[0] = a0[0] + a1; + } + if (a0[1] >= lim) { + a0[1] = a0[1] + a1; + } + if (a0[2] >= lim) { + a0[2] = a0[2] + a1; + } + } +} + + + + +void func_801A505C(void *a0) { + + extern void (*D_801A73BC[])(void); + D_801A73BC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A5098); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A50D4); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A50FC); +extern void func_8012AD44(s32 *a0, s16 a1); + void func_801A50D4(void * arg0) { + *(s8 *)((char *)arg0 + 0xfc) = 0x8; + ((void (*)(s32, s32))func_8012AD44)((int)arg0, 0x2); + } + + + + +void func_801A50FC(void *a0) { + + extern void (*D_801A73C4[])(void); + D_801A73C4[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A5138); INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A52DC); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A5638); + + +void func_801A5638(void *a0) { + + extern void (*D_801A73F4[])(void); + D_801A73F4[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A5674); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A5860); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A589C); + +void func_801A5860(void *a0) { + + extern void (*D_801A73FC[])(void); + D_801A73FC[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_801A589C(void *a0) { + + extern void (*D_801A7414[])(void); + D_801A7414[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A58D8); -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A59D4); + + +void func_801A59D4(void *a0) { + + extern void (*D_801A743C[])(void); + D_801A743C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A5A10); diff --git a/src/md_SC07_004/md_SC07_004.c b/src/md_SC07_004/md_SC07_004.c index d27f1e5e7..565ea9fbe 100644 --- a/src/md_SC07_004/md_SC07_004.c +++ b/src/md_SC07_004/md_SC07_004.c @@ -52,15 +52,26 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2310); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2330); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2350); + +s32 func_801A2350(s32 arg0) { + return *(u16*)(arg0 + 0x34) == 0x6; + } + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2364); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2400); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2C4C); +s32 func_801A2C4C(void) { + return 0; +} + + + +s32 func_801A2C54(s32 arg0) { + return *(u16*)(arg0 + 0x34) == 0x7; + } -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2C54); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2C68); @@ -88,11 +99,48 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A34FC); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A3594); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A3624); +typedef struct { s16 m[3][3]; s32 t[3]; } MTX_CF90_801A3624; + +void func_801A3624(s32 target, u16 *cur, s32 step) +{ + s32 t; + s32 diff; + s32 mag; + + t = (target - *cur) & 0xFFF; + if (t < 0x800) { + diff = t; + } else { + diff = t | 0xF000; + } + mag = diff; + if ((s16)diff < 0) { + mag = -diff; + } + __asm__ __volatile__("" : "=r"(diff) : "0"(diff) : "memory"); + if ((s16)mag > (u16)step) { + if ((s16)diff < 0) { + *cur = *cur - step; + } else { + *cur = *cur + step; + } + } else { + *cur = target; + } +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A36A8); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A36F0); + +void func_801A36F0(void *a0) { + s32 v0 = *(u16 *)((s32)a0 + 0xA); + s32 v1 = *(u16 *)((s32)a0 + 0x52); + *(u16 *)((s32)a0 + 0x52) = 0; + *(u16 *)((s32)a0 + 0x108) = 0; + *(u16 *)((s32)a0 + 0xA) = v0 + v1; + } + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A370C); @@ -126,7 +174,17 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A4060); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A40CC); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A417C); + +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); + +void func_801A417C(s32 arg0) { + s32 i; + + for (i = 0; i < 15; i++) { + func_8012C658(0x31f, i, arg0); + } +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A41CC); @@ -136,7 +194,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A4328); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A43EC); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A4420); + + +void func_801A4420(void *a0) { + + extern void (*D_801AFF34[])(void); + D_801AFF34[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A445C); @@ -158,7 +223,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A4AAC); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A4ACC); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A4E80); + + +void func_801A4E80(void *a0) { + + extern void (*D_801B014C[])(void); + D_801B014C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A4EBC); @@ -168,13 +240,27 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A5094); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A5194); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A53B8); + + +void func_801A53B8(void *a0) { + + extern void (*D_801B0160[])(void); + D_801B0160[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A53F4); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A5414); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A5470); + + +void func_801A5470(void *a0) { + + extern void (*D_801B0168[])(void); + D_801B0168[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A54AC); @@ -196,7 +282,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A5AE0); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A5B00); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A5B20); + + +void func_801A5B20(void *a0) { + + extern void (*D_801B02C8[])(void); + D_801B02C8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A5B5C); @@ -212,9 +305,33 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A6184); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A6330); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A63A8); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A63EC); +/* func_801A63A8 — guard-then-free tail (cookbook §71 sibling shape: + * src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c func_80144458 tail, and + * src/ov_SC03_099/ov_SC03_099_jr_80140608.c:2432 func_80016714(x, 0x38)). */ + +extern void func_80016714(void *a0, s32 a1); +extern void func_8012C218(void *a0); + +void func_801A63A8(void *arg0) { + void *temp_a0; + + temp_a0 = *(void **)((char *)arg0 + 0xCC); + if (temp_a0 != NULL) { + func_80016714(temp_a0, 0x38); + } + func_8012C218(arg0); +} + + + + +void func_801A63EC(void *a0) { + + extern void (*D_801B0338[])(void); + D_801B0338[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A6428); @@ -232,7 +349,11 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A67F8); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A6908); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A6A18); +extern void func_801A1E94(void); +void func_801A6A18(void) { + func_801A1E94(); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A6A38); @@ -266,7 +387,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A7358); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A7604); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A77CC); + + +void func_801A77CC(void *a0) { + + extern void (*D_801B0378[])(void); + D_801B0378[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A7808); @@ -284,7 +412,12 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A7C34); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A7C58); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A7CC8); + +void func_801A7CC8(void *a0) { + *(s32 *)((char *)a0 + 0x1c) = 0x4; + *(s16 *)((char *)a0 + 0x2) = 0x4; + } + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A7CDC); @@ -304,7 +437,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8228); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8294); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8404); + + +void func_801A8404(void *a0) { + + extern void (*D_801B038C[])(void); + D_801B038C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8440); @@ -332,17 +472,38 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A87C4); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A881C); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8884); + +extern void func_8012AD44(s32 *a0, s16 a1); + +void func_801A8884(s32 *a0) { + a0[7] = 0x3; + func_8012AD44(a0, 2); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A88AC); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8954); + + +void func_801A8954(void *a0) { + + extern void (*D_801B03B8[])(void); + D_801B03B8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8990); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8A64); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8B28); + + +void func_801A8B28(void *a0) { + + extern void (*D_801B0400[])(void); + D_801B0400[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A8B64); @@ -362,11 +523,25 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9270); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A930C); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A933C); + + +void func_801A933C(void *a0) { + + extern void (*D_801B0494[])(void); + D_801B0494[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9378); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A93B8); + + +void func_801A93B8(void *a0) { + + extern void (*D_801B05FC[])(void); + D_801B05FC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A93F4); @@ -378,7 +553,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9674); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9810); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A98CC); + + +void func_801A98CC(void *a0) { + + extern void (*D_801B072C[])(void); + D_801B072C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9908); @@ -390,7 +572,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9AAC); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9ADC); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9B04); + + +void func_801A9B04(void *a0) { + + extern void (*D_801B0768[])(void); + D_801B0768[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9B40); @@ -406,7 +595,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9F5C); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9FA8); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9FC8); + + +void func_801A9FC8(void *a0) { + + extern void (*D_801B0780[])(void); + D_801B0780[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AA004); @@ -430,11 +626,32 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AA584); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AA60C); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AA730); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AA76C); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AA7A8); +void func_801AA730(void *a0) { + + extern void (*D_801B07C0[])(void); + D_801B07C0[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_801AA76C(void *a0) { + + extern void (*D_801B07C8[])(void); + D_801B07C8[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_801AA7A8(void *a0) { + + extern void (*D_801B07D0[])(void); + D_801B07D0[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AA7E4); @@ -454,7 +671,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AAF34); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AAF8C); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AB178); + +extern void func_801AB1A8(void); + void func_801AB178(s32 *param) { + if (*(u16 *)((char *)param + 0x2) == 0) { + ((void (*)(void))func_801AB1A8)(); + } + } + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AB1A8); @@ -524,21 +748,49 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801ACB2C); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801ACC24); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801ACD10); + + +void func_801ACD10(void *a0) { + + extern void (*D_801B07D8[])(void); + D_801B07D8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801ACD4C); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801ACDC8); + + +void func_801ACDC8(void *a0) { + + extern void (*D_801B07E0[])(void); + D_801B07E0[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801ACE04); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801ACE20); + + +void func_801ACE20(void *a0) { + + extern void (*D_801B07E8[])(void); + D_801B07E8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801ACE5C); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD068); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD1E4); + + +void func_801AD1E4(void *a0) { + + extern void (*D_801B07F4[])(void); + D_801B07F4[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD220); @@ -552,11 +804,23 @@ INCLUDE_RODATA("asm/md_SC07_004/nonmatchings/md_SC07_004", D_801A0220); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD31C); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD4C0); + +void func_801AD4C0(void *a0) { + *(s32 *)((char *)a0 + 0x1c) = 0x10; + *(s16 *)((char *)a0 + 0x2) = 0x1; + } + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD4D4); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD520); + + +void func_801AD520(void *a0) { + + extern void (*D_801B081C[])(void); + D_801B081C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD55C); @@ -564,7 +828,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD5B4); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD640); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD6C4); + + +void func_801AD6C4(void *a0) { + + extern void (*D_801B0830[])(void); + D_801B0830[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD700); @@ -572,7 +843,14 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD7EC); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD914); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AD9D4); + + +void func_801AD9D4(void *a0) { + + extern void (*D_801B0884[])(void); + D_801B0884[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801ADA10); @@ -618,7 +896,20 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AE990); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AEA40); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AEAAC); +s32 func_801AEAAC(void) { + + extern u8 D_801F8EB8[]; + s32 a0; + s32 v1; + v1 = (s32)D_801F8EB8; + for (a0 = 0; a0 < 0x20; a0++, v1 += 0x24) { + if (*(u16 *)v1 == 0) { + return v1; + } + } + return 0; +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AEAE4); @@ -628,13 +919,83 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AEB94); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AEC38); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AF1EC); + +extern void func_801AF2EC(void *a0); +extern void func_801AF368(void *a0); +extern void func_8012931C(struct vec *a0); +extern void func_801292C8(u8 *a0); + +void func_801AF1EC(void *a0) { + if (*(u16 *)((s32)a0 + 0x2) == 0) { + func_801AF2EC(a0); + return; + } + + if (*(s32 *)((s32)a0 + 0x1C) != 0) { + *(s32 *)((s32)a0 + 0x1C) -= 1; + func_8012931C((struct vec *)a0); + + if (*(s16 *)((s32)a0 + 0x32) == 0) { + u16 t = *(u16 *)((s32)a0 + 0xA) + 0x1000; + if (t >= 0x1001) { + func_801292C8((u8 *)a0); + return; + } + } + } else { + func_801292C8((u8 *)a0); + return; + } + + *(s32 *)((s32)a0 + 0x14) += *(s32 *)((s32)a0 + 0x34); + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) += *(u16 *)((s32)a0 + 0x30); + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x8) = *(u16 *)((s32)a0 + 0x6); + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0xA) = *(u16 *)((s32)a0 + 0xA); + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0xC) = *(u16 *)((s32)a0 + 0xE); + func_801AF368((void *)*(s32 *)((s32)a0 + 0x20)); +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AF2EC); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AF368); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AF808); + + + +// @class: loose-typing +// @stuck: none — MATCH (99 ins). short* for param_2/param_3: gcc emits lh where sign is live (<<1 for signed div), lhu where truncated to short (arith result / direct copy) + +extern int rand(void); +extern int func_801AF9C8(short *pos, int a1, int a2); + +void func_801AF808(unsigned short *param_1, short *param_2, short *param_3, + unsigned int param_4, int param_5) +{ + int r; + int d; + short buf[4]; + int p; + + if ((*param_1 & (short)((1 << param_4) - 1)) == 0) { + r = rand(); + d = param_3[0] << 1; + buf[0] = (param_2[0] + (r % d)) - param_3[0]; + r = rand(); + d = param_3[1] << 1; + buf[1] = (param_2[1] + (r % d)) - param_3[1]; + r = rand(); + d = param_3[2] << 1; + buf[2] = (param_2[2] + (r % d)) - param_3[2]; + buf[3] = param_3[3]; + p = func_801AF9C8(buf, 0, param_5); + if (p != 0) { + *(short *)(*(int *)(p + 0x20) + 0x18) = param_2[3]; + } + } + *param_1 = *param_1 + 1; +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801AF994); diff --git a/src/ov_MAIN_012/ov_MAIN_012.c b/src/ov_MAIN_012/ov_MAIN_012.c index a312a3512..40d91d017 100644 --- a/src/ov_MAIN_012/ov_MAIN_012.c +++ b/src/ov_MAIN_012/ov_MAIN_012.c @@ -30,7 +30,19 @@ DEFINE_func_80128248() /* dedup: shared engine-core @0x80128248 (src/shared) */ DEFINE_func_80128268() /* dedup: shared engine-core @0x80128268 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80128288); + + +void func_80128288(void) { + + extern u16 D_800B99F6; + extern void (*D_8017E618[])(void); + u32 v1; + v1 = D_800B99F6; + if (v1 < 9) { + D_8017E618[v1](); + } +} + DEFINE_func_801282CC() /* dedup: shared engine-core @0x801282cc (src/shared) */ @@ -376,7 +388,12 @@ DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012ad44 (src/shared) */ DEFINE_func_8012AD50() /* dedup: shared engine-core @0x8012ad50 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8012AD64); + + +void func_8012AD64(s32 *a0, s16 a1) { + *(s16*)((s32)a0 + 0x34) = a1; +} + DEFINE_func_8012AD6C() /* dedup: shared engine-core @0x8012ad6c (src/shared) */ @@ -488,7 +505,11 @@ DEFINE_func_8012BEE8() /* dedup: shared engine-core @0x8012bee8 (src/shared) */ DEFINE_func_8012BF10() /* dedup: shared engine-core @0x8012bf10 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8012BF4C); + +void func_8012BF4C(s32 *a0, s32 a1) { + *(s32*)((s32)a0 + 0x1C) = a1; +} + DEFINE_func_8012BF54() /* dedup: shared engine-core @0x8012bf54 (src/shared) */ @@ -1201,15 +1222,50 @@ DEFINE_func_80131E7C() /* dedup: shared engine-core @0x80131e7c (src/shared) */ void func_80131EE4(void) { } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80131EEC); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80131F28); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80131F64); +void func_80131EEC(void *a0) { -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80131FA0); + extern void (*D_8017E8A8[])(void); + D_8017E8A8[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131F28(void *a0) { + + extern void (*D_8017E8F0[])(void); + D_8017E8F0[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131F64(void *a0) { + + extern void (*D_8017E8F8[])(void); + D_8017E8F8[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131FA0(void *a0) { + + extern void (*D_8017E900[])(void); + D_8017E900[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131FDC(void *a0) { + + extern void (*D_8017E908[])(void); + D_8017E908[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80131FDC); INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80132018); @@ -3207,7 +3263,14 @@ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8013D064); INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8013D13C); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8013D164); + + +void func_8013D164(void) { + + extern s32 D_801841C8; + D_801841C8 = 1; +} + void func_8013D178(void) { @@ -4510,7 +4573,14 @@ DEFINE_func_80142454() /* dedup: shared engine-core @0x80142454 (src/shared) */ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801424E4); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801425CC); + + +void func_801425CC(void *a0) { + + extern void (*D_8017F7B4[])(void); + D_8017F7B4[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80142608); @@ -4617,7 +4687,14 @@ DEFINE_func_801439C0() /* dedup: shared engine-core @0x801439c0 (src/shared) */ DEFINE_func_801439FC() /* dedup: shared engine-core @0x801439fc (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80143B30); + + +void func_80143B30(void *a0) { + + extern void (*D_8017FCA4[])(void); + D_8017FCA4[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143b6c (src/shared) */ @@ -4625,12 +4702,26 @@ DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143b6c (src/shared) */ DEFINE_func_80143BDC() /* dedup: shared engine-core @0x80143bdc (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80143C38); + + +void func_80143C38(void *a0) { + + extern void (*D_8017FCB0[])(void); + D_8017FCB0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80143C74() /* dedup: shared engine-core @0x80143c74 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80143C98); + + +void func_80143C98(void *a0) { + + extern void (*D_8017FCB8[])(void); + D_8017FCB8[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80143CD4() /* dedup: shared engine-core @0x80143cd4 (src/shared) */ @@ -4685,7 +4776,14 @@ void func_80143D28(s32 param_1) { } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80143E68); + + +void func_80143E68(void *a0) { + + extern void (*D_8017FD00[])(void); + D_8017FD00[*(u16 *)((s32)a0 + 0x2)](); +} + void func_80143EA4(void) { } @@ -4699,7 +4797,14 @@ void func_80143EB4(void) { DEFINE_func_80143EBC() /* dedup: shared engine-core @0x80143ebc (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80144054); + + +void func_80144054(void *a0) { + + extern void (*D_8017FD14[])(void); + D_8017FD14[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80144090); @@ -4724,12 +4829,26 @@ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80144880); DEFINE_func_80144988() /* dedup: shared engine-core @0x80144988 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801449C8); + + +void func_801449C8(void *a0) { + + extern void (*D_8017FD24[])(void); + D_8017FD24[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80144A04() /* dedup: shared engine-core @0x80144a04 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80144A2C); + + +void func_80144A2C(void *a0) { + + extern void (*D_8017FD2C[])(void); + D_8017FD2C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80144A68() /* dedup: shared engine-core @0x80144a68 (src/shared) */ @@ -6799,7 +6918,14 @@ DEFINE_func_801518D8() /* dedup: shared engine-core @0x801518d8 (src/shared) */ DEFINE_func_80151924() /* dedup: shared engine-core @0x80151924 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80151944); + + +void func_80151944(void *a0) { + + extern void (*D_80180090[])(void); + D_80180090[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80151980() /* dedup: shared engine-core @0x80151980 (src/shared) */ @@ -6816,7 +6942,14 @@ DEFINE_func_80151B98() /* dedup: shared engine-core @0x80151b98 (src/shared) */ DEFINE_func_80151C54() /* dedup: shared engine-core @0x80151c54 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80151D24); + + +void func_80151D24(void *a0) { + + extern void (*D_801800A0[])(void); + D_801800A0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80151D60() /* dedup: shared engine-core @0x80151d60 (src/shared) */ @@ -6836,7 +6969,14 @@ DEFINE_func_80151F38() /* dedup: shared engine-core @0x80151f38 (src/shared) */ DEFINE_func_80151FB4() /* dedup: shared engine-core @0x80151fb4 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80152058); + + +void func_80152058(void *a0) { + + extern void (*D_801800C4[])(void); + D_801800C4[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152094() /* dedup: shared engine-core @0x80152094 (src/shared) */ @@ -6855,7 +6995,14 @@ DEFINE_func_80152254() /* dedup: shared engine-core @0x80152254 (src/shared) */ DEFINE_func_801522CC() /* dedup: shared engine-core @0x801522cc (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80152370); + + +void func_80152370(void *a0) { + + extern void (*D_801800D8[])(void); + D_801800D8[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801523AC() /* dedup: shared engine-core @0x801523ac (src/shared) */ @@ -6868,7 +7015,14 @@ DEFINE_func_80152500() /* dedup: shared engine-core @0x80152500 (src/shared) */ DEFINE_func_801525F4() /* dedup: shared engine-core @0x801525f4 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80152698); + + +void func_80152698(void *a0) { + + extern void (*D_801800F4[])(void); + D_801800F4[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801526D4() /* dedup: shared engine-core @0x801526d4 (src/shared) */ @@ -6879,7 +7033,14 @@ DEFINE_func_80152714() /* dedup: shared engine-core @0x80152714 (src/shared) */ DEFINE_func_80152790() /* dedup: shared engine-core @0x80152790 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015282C); + + +void func_8015282C(void *a0) { + + extern void (*D_8018010C[])(void); + D_8018010C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152868() /* dedup: shared engine-core @0x80152868 (src/shared) */ @@ -6898,7 +7059,14 @@ DEFINE_func_80152A50() /* dedup: shared engine-core @0x80152a50 (src/shared) */ DEFINE_func_80152AC8() /* dedup: shared engine-core @0x80152ac8 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80152B6C); + + +void func_80152B6C(void *a0) { + + extern void (*D_80180120[])(void); + D_80180120[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152BA8() /* dedup: shared engine-core @0x80152ba8 (src/shared) */ @@ -6912,7 +7080,14 @@ DEFINE_func_80152C40() /* dedup: shared engine-core @0x80152c40 (src/shared) */ DEFINE_func_80152C80() /* dedup: shared engine-core @0x80152c80 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80152D24); + + +void func_80152D24(void *a0) { + + extern void (*D_8018013C[])(void); + D_8018013C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152D60() /* dedup: shared engine-core @0x80152d60 (src/shared) */ @@ -6931,7 +7106,14 @@ DEFINE_func_80152F44() /* dedup: shared engine-core @0x80152f44 (src/shared) */ DEFINE_func_80152FBC() /* dedup: shared engine-core @0x80152fbc (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80153060); + + +void func_80153060(void *a0) { + + extern void (*D_80180150[])(void); + D_80180150[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015309C() /* dedup: shared engine-core @0x8015309c (src/shared) */ @@ -6951,7 +7133,14 @@ DEFINE_func_80153204() /* dedup: shared engine-core @0x80153204 (src/shared) */ DEFINE_func_8015327C() /* dedup: shared engine-core @0x8015327c (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80153320); + + +void func_80153320(void *a0) { + + extern void (*D_80180164[])(void); + D_80180164[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015335C() /* dedup: shared engine-core @0x8015335c (src/shared) */ @@ -7135,7 +7324,14 @@ DEFINE_func_80155518() /* dedup: shared engine-core @0x80155518 (src/shared) */ DEFINE_func_8015554C() /* dedup: shared engine-core @0x8015554c (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80155580); + + +void func_80155580(void *a0) { + + extern void (*D_801801F0[])(void); + D_801801F0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801555BC() /* dedup: shared engine-core @0x801555bc (src/shared) */ @@ -7388,7 +7584,14 @@ DEFINE_func_801574DC() /* dedup: shared engine-core @0x801574dc (src/shared) */ DEFINE_func_80157510() /* dedup: shared engine-core @0x80157510 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80157544); + + +void func_80157544(void *a0) { + + extern void (*D_80180664[])(void); + D_80180664[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80157580() /* dedup: shared engine-core @0x80157580 (src/shared) */ @@ -7438,7 +7641,14 @@ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80157D20); DEFINE_func_80157D74() /* dedup: shared engine-core @0x80157d74 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80157DC4); + + +void func_80157DC4(void *a0) { + + extern void (*D_801806CC[])(void); + D_801806CC[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80157E00() /* dedup: shared engine-core @0x80157e00 (src/shared) */ @@ -7452,7 +7662,14 @@ DEFINE_func_80157EA4() /* dedup: shared engine-core @0x80157ea4 (src/shared) */ DEFINE_func_80157F64() /* dedup: shared engine-core @0x80157f64 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80157FC4); + + +void func_80157FC4(void *a0) { + + extern void (*D_801806D4[])(void); + D_801806D4[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80158000() /* dedup: shared engine-core @0x80158000 (src/shared) */ @@ -7465,7 +7682,14 @@ DEFINE_func_801580B4() /* dedup: shared engine-core @0x801580b4 (src/shared) */ DEFINE_func_801581AC() /* dedup: shared engine-core @0x801581ac (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015824C); + + +void func_8015824C(void *a0) { + + extern void (*D_801806E0[])(void); + D_801806E0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80158288() /* dedup: shared engine-core @0x80158288 (src/shared) */ @@ -7734,7 +7958,14 @@ DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80159968); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801599A4); + + +void func_801599A4(void *a0) { + + extern void (*D_80180A1C[])(void); + D_80180A1C[*(u16 *)((s32)a0 + 0x0)](); +} + DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ @@ -7750,7 +7981,14 @@ DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80159B70); + + +void func_80159B70(void *a0) { + + extern void (*D_80180B64[])(void); + D_80180B64[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ @@ -7768,7 +8006,14 @@ DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015A264); + + +void func_8015A264(void *a0) { + + extern void (*D_80180B6C[])(void); + D_80180B6C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ @@ -7794,7 +8039,14 @@ DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015AD3C); + + +void func_8015AD3C(void *a0) { + + extern void (*D_80180B74[])(void); + D_80180B74[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ @@ -7852,7 +8104,14 @@ DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015BFF4); + + +void func_8015BFF4(void *a0) { + + extern void (*D_80180B9C[])(void); + D_80180B9C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015C030); @@ -7950,7 +8209,14 @@ DEFINE_func_8015C6AC() /* dedup: shared engine-core @0x8015c6ac (src/shared) */ DEFINE_func_8015C6E0() /* dedup: shared engine-core @0x8015c6e0 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015C714); + + +void func_8015C714(void *a0) { + + extern void (*D_80180BA8[])(void); + D_80180BA8[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015C750() /* dedup: shared engine-core @0x8015c750 (src/shared) */ @@ -8416,7 +8682,35 @@ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015DBD4); DEFINE_func_8015DC84() /* dedup: shared engine-core @0x8015dc84 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015DCB8); + +// @class: other +// @stuck: none — MATCH (proxy gate) + +extern void func_80149374(s32 a0, s32 a1); + +void func_8015DCB8(s32 param_1) { + + extern s8 D_80180C9C[]; + s32 iVar1; + s32 iVar2; + + iVar2 = *(s32 *)(param_1 + 0x178); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 6) = (s16)D_80180C9C[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 10) = (s16)D_80180C9C[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 0xe) = (s16)D_80180C9C[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); + + func_80149374(param_1, iVar2 + 4); +} + DEFINE_func_8015DD74() /* dedup: shared engine-core @0x8015dd74 (src/shared) */ @@ -8440,7 +8734,35 @@ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015DF34); DEFINE_func_8015DFE4() /* dedup: shared engine-core @0x8015dfe4 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015E018); + +// @class: other +// @stuck: none — MATCH (proxy gate) + +extern void func_80149374(s32 a0, s32 a1); + +void func_8015E018(s32 param_1) { + + extern s8 D_80180C9C[]; + s32 iVar1; + s32 iVar2; + + iVar2 = *(s32 *)(param_1 + 0x178); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 6) = (s16)D_80180C9C[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 10) = (s16)D_80180C9C[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 0xe) = (s16)D_80180C9C[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); + + func_80149374(param_1, iVar2 + 4); +} + DEFINE_func_8015E0D4() /* dedup: shared engine-core @0x8015e0d4 (src/shared) */ @@ -8469,7 +8791,13 @@ DEFINE_func_8015E40C() /* dedup: shared engine-core @0x8015e40c (src/shared) */ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015E4B0); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8015E588); +extern s32 func_8013C9C4(s32 *a0); +void func_8015E588(void) { + + extern s32 D_80180CF4; + func_8013C9C4(&D_80180CF4); +} + DEFINE_func_8015E5B0() /* dedup: shared engine-core @0x8015e5b0 (src/shared) */ @@ -9049,7 +9377,14 @@ DEFINE_func_80160E3C() /* dedup: shared engine-core @0x80160e3c (src/shared) */ DEFINE_func_80160E70() /* dedup: shared engine-core @0x80160e70 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80160EA4); + + +void func_80160EA4(void *a0) { + + extern void (*D_80180E28[])(void); + D_80180E28[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80160EE0() /* dedup: shared engine-core @0x80160ee0 (src/shared) */ @@ -9493,7 +9828,14 @@ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801638A0); DEFINE_func_80163950() /* dedup: shared engine-core @0x80163950 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80163A58); + + +void func_80163A58(void *a0) { + + extern void (*D_80180F30[])(void); + D_80180F30[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80163A94() /* dedup: shared engine-core @0x80163a94 (src/shared) */ @@ -9724,7 +10066,14 @@ DEFINE_func_80164A74() /* dedup: shared engine-core @0x80164a74 (src/shared) */ DEFINE_func_80164ACC() /* dedup: shared engine-core @0x80164acc (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80164BA0); + + +void func_80164BA0(void *a0) { + + extern void (*D_80180F90[])(void); + D_80180F90[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80164BDC); @@ -9742,7 +10091,14 @@ DEFINE_func_80164DD0() /* dedup: shared engine-core @0x80164dd0 (src/shared) */ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80164E40); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80164EA4); + + +void func_80164EA4(void *a0) { + + extern void (*D_80180FA0[])(void); + D_80180FA0[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80164EE0); @@ -9881,7 +10237,15 @@ void func_80165B18(void) { void func_80165B20(void) { } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80165B28); + + +void func_80165B28(void *a0) { + + extern void (*D_80181254[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_80181254[*(u8 *)((s32)a0 + 0x197)](); +} + DEFINE_func_80165B6C() /* dedup: shared engine-core @0x80165b6c (src/shared) */ @@ -9908,7 +10272,14 @@ DEFINE_func_80165E90() /* dedup: shared engine-core @0x80165e90 (src/shared) */ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80165FA4); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80166018); + + +void func_80166018(void *a0) { + + extern void (*D_80181260[])(void); + D_80181260[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80166054() /* dedup: shared engine-core @0x80166054 (src/shared) */ @@ -9930,16 +10301,37 @@ DEFINE_func_8016634C() /* dedup: shared engine-core @0x8016634c (src/shared) */ DEFINE_func_801663A4() /* dedup: shared engine-core @0x801663a4 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801663FC); + + +void func_801663FC(void *a0) { + + extern void (*D_80181268[])(void); + D_80181268[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80166438() /* dedup: shared engine-core @0x80166438 (src/shared) */ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801665B4); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80166618); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80166654); + +void func_80166618(void *a0) { + + extern void (*D_80181330[])(void); + D_80181330[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80166654(void *a0) { + + extern void (*D_80181340[])(void); + D_80181340[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80166690); @@ -10302,12 +10694,26 @@ shared: DEFINE_func_80167714() /* dedup: shared engine-core @0x80167714 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801678B4); + + +void func_801678B4(void *a0) { + + extern void (*D_80181350[])(void); + D_80181350[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801678F0() /* dedup: shared engine-core @0x801678f0 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80167A9C); + + +void func_80167A9C(void *a0) { + + extern void (*D_8018135C[])(void); + D_8018135C[*(u16 *)((s32)a0 + 0x2)](); +} + void func_80167AD8(void) { } @@ -10574,7 +10980,14 @@ DEFINE_func_80168640() /* dedup: shared engine-core @0x80168640 (src/shared) */ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80168664); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80168744); + + +void func_80168744(void *a0) { + + extern void (*D_80181374[])(void); + D_80181374[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80168780() /* dedup: shared engine-core @0x80168780 (src/shared) */ @@ -10652,14 +11065,32 @@ void func_80168828(void) } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801689D8); + + +void func_801689D8(void *a0) { + + extern void (*D_8018137C[])(void); + D_8018137C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80168A14() /* dedup: shared engine-core @0x80168a14 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80168A88); +extern void func_80146C3C(u8*); +void func_80168A88(void) { + ((void (*)(void))func_80146C3C)(); +} + + + + +void func_80168AA8(void *a0) { + + extern void (*D_80181384[])(void); + D_80181384[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80168AA8); DEFINE_func_80168AE4() /* dedup: shared engine-core @0x80168ae4 (src/shared) */ @@ -10715,7 +11146,14 @@ void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4) } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80168D58); + + +void func_80168D58(void *a0) { + + extern void (*D_8018138C[])(void); + D_8018138C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80168D94); @@ -10724,7 +11162,14 @@ DEFINE_func_80168EC4() /* dedup: shared engine-core @0x80168ec4 (src/shared) */ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80168F40); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016901C); + + +void func_8016901C(void *a0) { + + extern void (*D_80181394[])(void); + D_80181394[*(u16 *)((s32)a0 + 0x2)](); +} + extern void func_800D20C0(void *a0, void *a1, s32 a2); extern void func_800D23D0(void *a0); @@ -10789,7 +11234,14 @@ DEFINE_func_801691B8() /* dedup: shared engine-core @0x801691b8 (src/shared) */ DEFINE_func_80169228() /* dedup: shared engine-core @0x80169228 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_801693CC); + + +void func_801693CC(void *a0) { + + extern void (*D_8018139C[])(void); + D_8018139C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80169408); @@ -10802,7 +11254,14 @@ DEFINE_func_80169584() /* dedup: shared engine-core @0x80169584 (src/shared) */ DEFINE_func_801696D8() /* dedup: shared engine-core @0x801696d8 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80169830); + + +void func_80169830(void *a0) { + + extern void (*D_801813A4[])(void); + D_801813A4[*(u16 *)((s32)a0 + 0x2)](); +} + extern void func_800D20C0(void *a0, void *a1, s32 a2); extern void func_800D23D0(void *a0); @@ -10865,7 +11324,14 @@ DEFINE_func_801699D0() /* dedup: shared engine-core @0x801699d0 (src/shared) */ DEFINE_func_80169A4C() /* dedup: shared engine-core @0x80169a4c (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80169B80); + + +void func_80169B80(void *a0) { + + extern void (*D_80181458[])(void); + D_80181458[*(u16 *)((s32)a0 + 0x2)](); +} + @@ -10948,13 +11414,34 @@ void func_80169BBC(s32 arg0) { INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80169E44); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80169F00); + + +void func_80169F00(void *a0) { + + extern void (*D_80181460[])(void); + D_80181460[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80169F3C); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_80169FE0); +extern s32 func_80128ED8(s32, s32*); +extern void func_80146C3C(); +void func_80169FE0(s32 a0) { + if (((s32 (*)(void *, void *))func_80128ED8)((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { + ((void (*)(s32))func_80146C3C)(a0); + } +} + + + + +void func_8016A020(void *a0) { + + extern void (*D_80181498[])(void); + D_80181498[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016A020); DEFINE_func_8016A05C() /* dedup: shared engine-core @0x8016a05c (src/shared) */ @@ -11103,7 +11590,14 @@ L3: } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016A700); + + +void func_8016A700(void *a0) { + + extern void (*D_801814A4[])(void); + D_801814A4[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016A73C); @@ -11115,7 +11609,14 @@ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016A8FC); DEFINE_func_8016AA50() /* dedup: shared engine-core @0x8016aa50 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016AB30); + + +void func_8016AB30(void *a0) { + + extern void (*D_801814EC[])(void); + D_801814EC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016AB6C); @@ -11208,7 +11709,14 @@ DEFINE_func_8016B428() /* dedup: shared engine-core @0x8016b428 (src/shared) */ DEFINE_func_8016B448() /* dedup: shared engine-core @0x8016b448 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016B4BC); + + +void func_8016B4BC(void *a0) { + + extern void (*D_80181568[])(void); + D_80181568[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016B4F8); @@ -11320,7 +11828,14 @@ DEFINE_func_8016BA68() /* dedup: shared engine-core @0x8016ba68 (src/shared) */ DEFINE_func_8016BADC() /* dedup: shared engine-core @0x8016badc (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016BBA4); + + +void func_8016BBA4(void *a0) { + + extern void (*D_801815B8[])(void); + D_801815B8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016BBE0); @@ -11339,7 +11854,14 @@ INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016BFA8); INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016BFD0); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016C14C); + + +void func_8016C14C(void *a0) { + + extern void (*D_801815E8[])(void); + D_801815E8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016C188); @@ -11507,7 +12029,14 @@ void func_8016C998(s32 param_1) } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016CB84); + + +void func_8016CB84(void *a0) { + + extern void (*D_801815F0[])(void); + D_801815F0[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016CBC0); @@ -11578,11 +12107,25 @@ short func_8016CF04(s32 param_1, s32 param_2) { } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016D19C); + + +void func_8016D19C(void *a0) { + + extern void (*D_8018160C[])(void); + D_8018160C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016D1D8); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016D428); + + +void func_8016D428(void *a0) { + + extern void (*D_80181614[])(void); + D_80181614[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8016D464() /* dedup: shared engine-core @0x8016d464 (src/shared) */ @@ -11708,11 +12251,32 @@ done: } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016DEA4); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016DEE0); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016DF20); +void func_8016DEA4(void *a0) { + + extern void (*D_801816B0[])(void); + D_801816B0[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_80128ED8(s32, s32*); +extern void func_80146C3C(); +void func_8016DEE0(s32 a0) { + if (((s32 (*)(void *, void *))func_80128ED8)((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { + ((void (*)(s32))func_80146C3C)(a0); + } +} + + + + +void func_8016DF20(void *a0) { + + extern void (*D_801816B8[])(void); + D_801816B8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016DF5C); @@ -11734,7 +12298,14 @@ DEFINE_func_8016E3CC() /* dedup: shared engine-core @0x8016e3cc (src/shared) */ DEFINE_func_8016E460() /* dedup: shared engine-core @0x8016e460 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016E5B8); + + +void func_8016E5B8(void *a0) { + + extern void (*D_8018170C[])(void); + D_8018170C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8016E5F4() /* dedup: shared engine-core @0x8016e5f4 (src/shared) */ @@ -11833,7 +12404,11 @@ void func_8016EC0C(s32 a0, s32 a1) } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8016ED6C); +extern void func_80146C3C(u8*); +void func_8016ED6C(void) { + ((void (*)(void))func_80146C3C)(); +} + DEFINE_func_8016ED8C() /* dedup: shared engine-core @0x8016ed8c (src/shared) */ diff --git a/src/ov_SC02_037/ov_SC02_037.c b/src/ov_SC02_037/ov_SC02_037.c index ab50f8225..dfba2ad98 100644 --- a/src/ov_SC02_037/ov_SC02_037.c +++ b/src/ov_SC02_037/ov_SC02_037.c @@ -30,7 +30,19 @@ DEFINE_func_80128248() /* dedup: shared engine-core @0x80128248 (src/shared) */ DEFINE_func_80128268() /* dedup: shared engine-core @0x80128268 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80128288); + + +void func_80128288(void) { + + extern u16 D_800B99F6; + extern void (*D_80183EA4[])(void); + u32 v1; + v1 = D_800B99F6; + if (v1 < 9) { + D_80183EA4[v1](); + } +} + DEFINE_func_801282CC() /* dedup: shared engine-core @0x801282cc (src/shared) */ @@ -376,7 +388,12 @@ DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012ad44 (src/shared) */ DEFINE_func_8012AD50() /* dedup: shared engine-core @0x8012ad50 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8012AD64); + + +void func_8012AD64(s32 *a0, s16 a1) { + *(s16*)((s32)a0 + 0x34) = a1; +} + DEFINE_func_8012AD6C() /* dedup: shared engine-core @0x8012ad6c (src/shared) */ @@ -488,7 +505,11 @@ DEFINE_func_8012BEE8() /* dedup: shared engine-core @0x8012bee8 (src/shared) */ DEFINE_func_8012BF10() /* dedup: shared engine-core @0x8012bf10 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8012BF4C); + +void func_8012BF4C(s32 *a0, s32 a1) { + *(s32*)((s32)a0 + 0x1C) = a1; +} + DEFINE_func_8012BF54() /* dedup: shared engine-core @0x8012bf54 (src/shared) */ @@ -1201,15 +1222,50 @@ DEFINE_func_80131E7C() /* dedup: shared engine-core @0x80131e7c (src/shared) */ void func_80131EE4(void) { } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80131EEC); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80131F28); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80131F64); +void func_80131EEC(void *a0) { -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80131FA0); + extern void (*D_80184134[])(void); + D_80184134[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131F28(void *a0) { + + extern void (*D_8018417C[])(void); + D_8018417C[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131F64(void *a0) { + + extern void (*D_80184184[])(void); + D_80184184[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131FA0(void *a0) { + + extern void (*D_8018418C[])(void); + D_8018418C[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131FDC(void *a0) { + + extern void (*D_80184194[])(void); + D_80184194[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80131FDC); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80132018); @@ -3207,7 +3263,14 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8013D064); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8013D13C); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8013D164); + + +void func_8013D164(void) { + + extern s32 D_801C84C0; + D_801C84C0 = 1; +} + void func_8013D178(void) { @@ -4510,7 +4573,14 @@ DEFINE_func_80142454() /* dedup: shared engine-core @0x80142454 (src/shared) */ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801424E4); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801425CC); + + +void func_801425CC(void *a0) { + + extern void (*D_80185040[])(void); + D_80185040[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80142608); @@ -4617,7 +4687,14 @@ DEFINE_func_801439C0() /* dedup: shared engine-core @0x801439c0 (src/shared) */ DEFINE_func_801439FC() /* dedup: shared engine-core @0x801439fc (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80143B30); + + +void func_80143B30(void *a0) { + + extern void (*D_80185530[])(void); + D_80185530[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143b6c (src/shared) */ @@ -4625,12 +4702,26 @@ DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143b6c (src/shared) */ DEFINE_func_80143BDC() /* dedup: shared engine-core @0x80143bdc (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80143C38); + + +void func_80143C38(void *a0) { + + extern void (*D_8018553C[])(void); + D_8018553C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80143C74() /* dedup: shared engine-core @0x80143c74 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80143C98); + + +void func_80143C98(void *a0) { + + extern void (*D_80185544[])(void); + D_80185544[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80143CD4() /* dedup: shared engine-core @0x80143cd4 (src/shared) */ @@ -4685,7 +4776,14 @@ void func_80143D28(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80143E68); + + +void func_80143E68(void *a0) { + + extern void (*D_8018558C[])(void); + D_8018558C[*(u16 *)((s32)a0 + 0x2)](); +} + void func_80143EA4(void) { } @@ -4699,7 +4797,14 @@ void func_80143EB4(void) { DEFINE_func_80143EBC() /* dedup: shared engine-core @0x80143ebc (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80144054); + + +void func_80144054(void *a0) { + + extern void (*D_801855A0[])(void); + D_801855A0[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80144090); @@ -4724,12 +4829,26 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80144880); DEFINE_func_80144988() /* dedup: shared engine-core @0x80144988 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801449C8); + + +void func_801449C8(void *a0) { + + extern void (*D_801855B0[])(void); + D_801855B0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80144A04() /* dedup: shared engine-core @0x80144a04 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80144A2C); + + +void func_80144A2C(void *a0) { + + extern void (*D_801855B8[])(void); + D_801855B8[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80144A68() /* dedup: shared engine-core @0x80144a68 (src/shared) */ @@ -6799,7 +6918,14 @@ DEFINE_func_801518D8() /* dedup: shared engine-core @0x801518d8 (src/shared) */ DEFINE_func_80151924() /* dedup: shared engine-core @0x80151924 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80151944); + + +void func_80151944(void *a0) { + + extern void (*D_8018591C[])(void); + D_8018591C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80151980() /* dedup: shared engine-core @0x80151980 (src/shared) */ @@ -6816,7 +6942,14 @@ DEFINE_func_80151B98() /* dedup: shared engine-core @0x80151b98 (src/shared) */ DEFINE_func_80151C54() /* dedup: shared engine-core @0x80151c54 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80151D24); + + +void func_80151D24(void *a0) { + + extern void (*D_8018592C[])(void); + D_8018592C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80151D60() /* dedup: shared engine-core @0x80151d60 (src/shared) */ @@ -6836,7 +6969,14 @@ DEFINE_func_80151F38() /* dedup: shared engine-core @0x80151f38 (src/shared) */ DEFINE_func_80151FB4() /* dedup: shared engine-core @0x80151fb4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80152058); + + +void func_80152058(void *a0) { + + extern void (*D_80185950[])(void); + D_80185950[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152094() /* dedup: shared engine-core @0x80152094 (src/shared) */ @@ -6855,7 +6995,14 @@ DEFINE_func_80152254() /* dedup: shared engine-core @0x80152254 (src/shared) */ DEFINE_func_801522CC() /* dedup: shared engine-core @0x801522cc (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80152370); + + +void func_80152370(void *a0) { + + extern void (*D_80185964[])(void); + D_80185964[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801523AC() /* dedup: shared engine-core @0x801523ac (src/shared) */ @@ -6868,7 +7015,14 @@ DEFINE_func_80152500() /* dedup: shared engine-core @0x80152500 (src/shared) */ DEFINE_func_801525F4() /* dedup: shared engine-core @0x801525f4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80152698); + + +void func_80152698(void *a0) { + + extern void (*D_80185980[])(void); + D_80185980[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801526D4() /* dedup: shared engine-core @0x801526d4 (src/shared) */ @@ -6879,7 +7033,14 @@ DEFINE_func_80152714() /* dedup: shared engine-core @0x80152714 (src/shared) */ DEFINE_func_80152790() /* dedup: shared engine-core @0x80152790 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015282C); + + +void func_8015282C(void *a0) { + + extern void (*D_80185998[])(void); + D_80185998[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152868() /* dedup: shared engine-core @0x80152868 (src/shared) */ @@ -6898,7 +7059,14 @@ DEFINE_func_80152A50() /* dedup: shared engine-core @0x80152a50 (src/shared) */ DEFINE_func_80152AC8() /* dedup: shared engine-core @0x80152ac8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80152B6C); + + +void func_80152B6C(void *a0) { + + extern void (*D_801859AC[])(void); + D_801859AC[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152BA8() /* dedup: shared engine-core @0x80152ba8 (src/shared) */ @@ -6912,7 +7080,14 @@ DEFINE_func_80152C40() /* dedup: shared engine-core @0x80152c40 (src/shared) */ DEFINE_func_80152C80() /* dedup: shared engine-core @0x80152c80 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80152D24); + + +void func_80152D24(void *a0) { + + extern void (*D_801859C8[])(void); + D_801859C8[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152D60() /* dedup: shared engine-core @0x80152d60 (src/shared) */ @@ -6931,7 +7106,14 @@ DEFINE_func_80152F44() /* dedup: shared engine-core @0x80152f44 (src/shared) */ DEFINE_func_80152FBC() /* dedup: shared engine-core @0x80152fbc (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80153060); + + +void func_80153060(void *a0) { + + extern void (*D_801859DC[])(void); + D_801859DC[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015309C() /* dedup: shared engine-core @0x8015309c (src/shared) */ @@ -6951,7 +7133,14 @@ DEFINE_func_80153204() /* dedup: shared engine-core @0x80153204 (src/shared) */ DEFINE_func_8015327C() /* dedup: shared engine-core @0x8015327c (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80153320); + + +void func_80153320(void *a0) { + + extern void (*D_801859F0[])(void); + D_801859F0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015335C() /* dedup: shared engine-core @0x8015335c (src/shared) */ @@ -7135,7 +7324,14 @@ DEFINE_func_80155518() /* dedup: shared engine-core @0x80155518 (src/shared) */ DEFINE_func_8015554C() /* dedup: shared engine-core @0x8015554c (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80155580); + + +void func_80155580(void *a0) { + + extern void (*D_80185A7C[])(void); + D_80185A7C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801555BC() /* dedup: shared engine-core @0x801555bc (src/shared) */ @@ -7388,7 +7584,14 @@ DEFINE_func_801574DC() /* dedup: shared engine-core @0x801574dc (src/shared) */ DEFINE_func_80157510() /* dedup: shared engine-core @0x80157510 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80157544); + + +void func_80157544(void *a0) { + + extern void (*D_80185EF0[])(void); + D_80185EF0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80157580() /* dedup: shared engine-core @0x80157580 (src/shared) */ @@ -7438,7 +7641,14 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80157D20); DEFINE_func_80157D74() /* dedup: shared engine-core @0x80157d74 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80157DC4); + + +void func_80157DC4(void *a0) { + + extern void (*D_80185F58[])(void); + D_80185F58[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80157E00() /* dedup: shared engine-core @0x80157e00 (src/shared) */ @@ -7452,7 +7662,14 @@ DEFINE_func_80157EA4() /* dedup: shared engine-core @0x80157ea4 (src/shared) */ DEFINE_func_80157F64() /* dedup: shared engine-core @0x80157f64 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80157FC4); + + +void func_80157FC4(void *a0) { + + extern void (*D_80185F60[])(void); + D_80185F60[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80158000() /* dedup: shared engine-core @0x80158000 (src/shared) */ @@ -7465,7 +7682,14 @@ DEFINE_func_801580B4() /* dedup: shared engine-core @0x801580b4 (src/shared) */ DEFINE_func_801581AC() /* dedup: shared engine-core @0x801581ac (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015824C); + + +void func_8015824C(void *a0) { + + extern void (*D_80185F6C[])(void); + D_80185F6C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80158288() /* dedup: shared engine-core @0x80158288 (src/shared) */ @@ -7734,7 +7958,14 @@ DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80159968); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801599A4); + + +void func_801599A4(void *a0) { + + extern void (*D_801862A8[])(void); + D_801862A8[*(u16 *)((s32)a0 + 0x0)](); +} + DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ @@ -7750,7 +7981,14 @@ DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80159B70); + + +void func_80159B70(void *a0) { + + extern void (*D_801863F0[])(void); + D_801863F0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ @@ -7768,7 +8006,14 @@ DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015A264); + + +void func_8015A264(void *a0) { + + extern void (*D_801863F8[])(void); + D_801863F8[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ @@ -7794,7 +8039,14 @@ DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015AD3C); + + +void func_8015AD3C(void *a0) { + + extern void (*D_80186400[])(void); + D_80186400[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ @@ -7852,7 +8104,14 @@ DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015BFF4); + + +void func_8015BFF4(void *a0) { + + extern void (*D_80186428[])(void); + D_80186428[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015C030); @@ -7950,7 +8209,14 @@ DEFINE_func_8015C6AC() /* dedup: shared engine-core @0x8015c6ac (src/shared) */ DEFINE_func_8015C6E0() /* dedup: shared engine-core @0x8015c6e0 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015C714); + + +void func_8015C714(void *a0) { + + extern void (*D_80186434[])(void); + D_80186434[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015C750() /* dedup: shared engine-core @0x8015c750 (src/shared) */ @@ -8416,7 +8682,35 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015DBD4); DEFINE_func_8015DC84() /* dedup: shared engine-core @0x8015dc84 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015DCB8); + +// @class: other +// @stuck: none — MATCH (proxy gate) + +extern void func_80149374(s32 a0, s32 a1); + +void func_8015DCB8(s32 param_1) { + + extern s8 D_80186528[]; + s32 iVar1; + s32 iVar2; + + iVar2 = *(s32 *)(param_1 + 0x178); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 6) = (s16)D_80186528[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 10) = (s16)D_80186528[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 0xe) = (s16)D_80186528[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); + + func_80149374(param_1, iVar2 + 4); +} + DEFINE_func_8015DD74() /* dedup: shared engine-core @0x8015dd74 (src/shared) */ @@ -8440,7 +8734,35 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015DF34); DEFINE_func_8015DFE4() /* dedup: shared engine-core @0x8015dfe4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015E018); + +// @class: other +// @stuck: none — MATCH (proxy gate) + +extern void func_80149374(s32 a0, s32 a1); + +void func_8015E018(s32 param_1) { + + extern s8 D_80186528[]; + s32 iVar1; + s32 iVar2; + + iVar2 = *(s32 *)(param_1 + 0x178); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 6) = (s16)D_80186528[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 10) = (s16)D_80186528[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 0xe) = (s16)D_80186528[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); + + func_80149374(param_1, iVar2 + 4); +} + DEFINE_func_8015E0D4() /* dedup: shared engine-core @0x8015e0d4 (src/shared) */ @@ -8469,7 +8791,13 @@ DEFINE_func_8015E40C() /* dedup: shared engine-core @0x8015e40c (src/shared) */ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015E4B0); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8015E588); +extern s32 func_8013C9C4(s32 *a0); +void func_8015E588(void) { + + extern s32 D_80186580; + func_8013C9C4(&D_80186580); +} + DEFINE_func_8015E5B0() /* dedup: shared engine-core @0x8015e5b0 (src/shared) */ @@ -9049,7 +9377,14 @@ DEFINE_func_80160E3C() /* dedup: shared engine-core @0x80160e3c (src/shared) */ DEFINE_func_80160E70() /* dedup: shared engine-core @0x80160e70 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80160EA4); + + +void func_80160EA4(void *a0) { + + extern void (*D_801866B4[])(void); + D_801866B4[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80160EE0() /* dedup: shared engine-core @0x80160ee0 (src/shared) */ @@ -9493,7 +9828,14 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801638A0); DEFINE_func_80163950() /* dedup: shared engine-core @0x80163950 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80163A58); + + +void func_80163A58(void *a0) { + + extern void (*D_801867BC[])(void); + D_801867BC[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80163A94() /* dedup: shared engine-core @0x80163a94 (src/shared) */ @@ -9724,7 +10066,14 @@ DEFINE_func_80164A74() /* dedup: shared engine-core @0x80164a74 (src/shared) */ DEFINE_func_80164ACC() /* dedup: shared engine-core @0x80164acc (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80164BA0); + + +void func_80164BA0(void *a0) { + + extern void (*D_8018681C[])(void); + D_8018681C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80164BDC); @@ -9742,7 +10091,14 @@ DEFINE_func_80164DD0() /* dedup: shared engine-core @0x80164dd0 (src/shared) */ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80164E40); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80164EA4); + + +void func_80164EA4(void *a0) { + + extern void (*D_8018682C[])(void); + D_8018682C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80164EE0); @@ -9881,7 +10237,15 @@ void func_80165B18(void) { void func_80165B20(void) { } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80165B28); + + +void func_80165B28(void *a0) { + + extern void (*D_80186AE0[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_80186AE0[*(u8 *)((s32)a0 + 0x197)](); +} + DEFINE_func_80165B6C() /* dedup: shared engine-core @0x80165b6c (src/shared) */ @@ -9908,7 +10272,14 @@ DEFINE_func_80165E90() /* dedup: shared engine-core @0x80165e90 (src/shared) */ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80165FA4); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80166018); + + +void func_80166018(void *a0) { + + extern void (*D_80186AEC[])(void); + D_80186AEC[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80166054() /* dedup: shared engine-core @0x80166054 (src/shared) */ @@ -9930,16 +10301,37 @@ DEFINE_func_8016634C() /* dedup: shared engine-core @0x8016634c (src/shared) */ DEFINE_func_801663A4() /* dedup: shared engine-core @0x801663a4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801663FC); + + +void func_801663FC(void *a0) { + + extern void (*D_80186AF4[])(void); + D_80186AF4[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80166438() /* dedup: shared engine-core @0x80166438 (src/shared) */ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801665B4); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80166618); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80166654); + +void func_80166618(void *a0) { + + extern void (*D_80186BBC[])(void); + D_80186BBC[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80166654(void *a0) { + + extern void (*D_80186BCC[])(void); + D_80186BCC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80166690); @@ -10302,12 +10694,26 @@ shared: DEFINE_func_80167714() /* dedup: shared engine-core @0x80167714 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801678B4); + + +void func_801678B4(void *a0) { + + extern void (*D_80186BDC[])(void); + D_80186BDC[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801678F0() /* dedup: shared engine-core @0x801678f0 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80167A9C); + + +void func_80167A9C(void *a0) { + + extern void (*D_80186BE8[])(void); + D_80186BE8[*(u16 *)((s32)a0 + 0x2)](); +} + void func_80167AD8(void) { } @@ -10574,7 +10980,14 @@ DEFINE_func_80168640() /* dedup: shared engine-core @0x80168640 (src/shared) */ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80168664); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80168744); + + +void func_80168744(void *a0) { + + extern void (*D_80186C00[])(void); + D_80186C00[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80168780() /* dedup: shared engine-core @0x80168780 (src/shared) */ @@ -10652,14 +11065,32 @@ void func_80168828(void) } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801689D8); + + +void func_801689D8(void *a0) { + + extern void (*D_80186C08[])(void); + D_80186C08[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80168A14() /* dedup: shared engine-core @0x80168a14 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80168A88); +extern void func_80146C3C(u8*); +void func_80168A88(void) { + ((void (*)(void))func_80146C3C)(); +} + + + + +void func_80168AA8(void *a0) { + + extern void (*D_80186C10[])(void); + D_80186C10[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80168AA8); DEFINE_func_80168AE4() /* dedup: shared engine-core @0x80168ae4 (src/shared) */ @@ -10715,7 +11146,14 @@ void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4) } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80168D58); + + +void func_80168D58(void *a0) { + + extern void (*D_80186C18[])(void); + D_80186C18[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80168D94); @@ -10724,7 +11162,14 @@ DEFINE_func_80168EC4() /* dedup: shared engine-core @0x80168ec4 (src/shared) */ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80168F40); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016901C); + + +void func_8016901C(void *a0) { + + extern void (*D_80186C20[])(void); + D_80186C20[*(u16 *)((s32)a0 + 0x2)](); +} + extern void func_800D20C0(void *a0, void *a1, s32 a2); extern void func_800D23D0(void *a0); @@ -10789,7 +11234,14 @@ DEFINE_func_801691B8() /* dedup: shared engine-core @0x801691b8 (src/shared) */ DEFINE_func_80169228() /* dedup: shared engine-core @0x80169228 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801693CC); + + +void func_801693CC(void *a0) { + + extern void (*D_80186C28[])(void); + D_80186C28[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80169408); @@ -10802,7 +11254,14 @@ DEFINE_func_80169584() /* dedup: shared engine-core @0x80169584 (src/shared) */ DEFINE_func_801696D8() /* dedup: shared engine-core @0x801696d8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80169830); + + +void func_80169830(void *a0) { + + extern void (*D_80186C30[])(void); + D_80186C30[*(u16 *)((s32)a0 + 0x2)](); +} + extern void func_800D20C0(void *a0, void *a1, s32 a2); extern void func_800D23D0(void *a0); @@ -10865,7 +11324,14 @@ DEFINE_func_801699D0() /* dedup: shared engine-core @0x801699d0 (src/shared) */ DEFINE_func_80169A4C() /* dedup: shared engine-core @0x80169a4c (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80169B80); + + +void func_80169B80(void *a0) { + + extern void (*D_80186CE4[])(void); + D_80186CE4[*(u16 *)((s32)a0 + 0x2)](); +} + @@ -10948,13 +11414,34 @@ void func_80169BBC(s32 arg0) { INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80169E44); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80169F00); + + +void func_80169F00(void *a0) { + + extern void (*D_80186CEC[])(void); + D_80186CEC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80169F3C); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80169FE0); +extern s32 func_80128ED8(s32, s32*); +extern void func_80146C3C(); +void func_80169FE0(s32 a0) { + if (((s32 (*)(void *, void *))func_80128ED8)((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { + ((void (*)(s32))func_80146C3C)(a0); + } +} + + + + +void func_8016A020(void *a0) { + + extern void (*D_80186D24[])(void); + D_80186D24[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016A020); DEFINE_func_8016A05C() /* dedup: shared engine-core @0x8016a05c (src/shared) */ @@ -11103,7 +11590,14 @@ L3: } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016A700); + + +void func_8016A700(void *a0) { + + extern void (*D_80186D30[])(void); + D_80186D30[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016A73C); @@ -11115,7 +11609,14 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016A8FC); DEFINE_func_8016AA50() /* dedup: shared engine-core @0x8016aa50 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016AB30); + + +void func_8016AB30(void *a0) { + + extern void (*D_80186D78[])(void); + D_80186D78[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016AB6C); @@ -11208,7 +11709,14 @@ DEFINE_func_8016B428() /* dedup: shared engine-core @0x8016b428 (src/shared) */ DEFINE_func_8016B448() /* dedup: shared engine-core @0x8016b448 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016B4BC); + + +void func_8016B4BC(void *a0) { + + extern void (*D_80186DF4[])(void); + D_80186DF4[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016B4F8); @@ -11320,7 +11828,14 @@ DEFINE_func_8016BA68() /* dedup: shared engine-core @0x8016ba68 (src/shared) */ DEFINE_func_8016BADC() /* dedup: shared engine-core @0x8016badc (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016BBA4); + + +void func_8016BBA4(void *a0) { + + extern void (*D_80186E44[])(void); + D_80186E44[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016BBE0); @@ -11339,7 +11854,14 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016BFA8); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016BFD0); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016C14C); + + +void func_8016C14C(void *a0) { + + extern void (*D_80186E74[])(void); + D_80186E74[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016C188); @@ -11507,7 +12029,14 @@ void func_8016C998(s32 param_1) } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016CB84); + + +void func_8016CB84(void *a0) { + + extern void (*D_80186E7C[])(void); + D_80186E7C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016CBC0); @@ -11578,11 +12107,25 @@ short func_8016CF04(s32 param_1, s32 param_2) { } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016D19C); + + +void func_8016D19C(void *a0) { + + extern void (*D_80186E98[])(void); + D_80186E98[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016D1D8); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016D428); + + +void func_8016D428(void *a0) { + + extern void (*D_80186EA0[])(void); + D_80186EA0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8016D464() /* dedup: shared engine-core @0x8016d464 (src/shared) */ @@ -11708,11 +12251,32 @@ done: } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016DEA4); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016DEE0); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016DF20); +void func_8016DEA4(void *a0) { + + extern void (*D_80186F3C[])(void); + D_80186F3C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_80128ED8(s32, s32*); +extern void func_80146C3C(); +void func_8016DEE0(s32 a0) { + if (((s32 (*)(void *, void *))func_80128ED8)((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { + ((void (*)(s32))func_80146C3C)(a0); + } +} + + + + +void func_8016DF20(void *a0) { + + extern void (*D_80186F44[])(void); + D_80186F44[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016DF5C); @@ -11734,7 +12298,14 @@ DEFINE_func_8016E3CC() /* dedup: shared engine-core @0x8016e3cc (src/shared) */ DEFINE_func_8016E460() /* dedup: shared engine-core @0x8016e460 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016E5B8); + + +void func_8016E5B8(void *a0) { + + extern void (*D_80186F98[])(void); + D_80186F98[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8016E5F4() /* dedup: shared engine-core @0x8016e5f4 (src/shared) */ @@ -11833,7 +12404,11 @@ void func_8016EC0C(s32 a0, s32 a1) } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8016ED6C); +extern void func_80146C3C(u8*); +void func_8016ED6C(void) { + ((void (*)(void))func_80146C3C)(); +} + DEFINE_func_8016ED8C() /* dedup: shared engine-core @0x8016ed8c (src/shared) */ @@ -14848,7 +15423,14 @@ void func_8017C738(s32 a0) { } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017C8B8); + + +void func_8017C8B8(void *a0) { + + extern void (*D_80187708[])(void); + D_80187708[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017C8F4); @@ -14862,13 +15444,24 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017CB68); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017CBD4); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017CC60); +extern void func_8012C218(void*); +void func_8017CC60(void) { + ((void (*)(void))func_8012C218)(); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017CC80); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017CCD4); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017CD10); + + +void func_8017CD10(void *a0) { + + extern void (*D_80187760[])(void); + D_80187760[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017CD4C); @@ -15058,7 +15651,14 @@ void func_8017D030(int param_1) } -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017D33C); + + +void func_8017D33C(void *a0) { + + extern void (*D_80187774[])(void); + D_80187774[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017D378); @@ -15070,7 +15670,14 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017D4B4); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017D588); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017D5DC); + + +void func_8017D5DC(void *a0) { + + extern void (*D_80187788[])(void); + D_80187788[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017D618); @@ -15175,13 +15782,24 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017ED90); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017EEC4); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017F05C); +extern void func_8017F07C(void); +void func_8017F05C(void) { + func_8017F07C(); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017F07C); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017F1B8); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017F218); + + +void func_8017F218(void *a0) { + + extern void (*D_801878DC[])(void); + D_801878DC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8017F254); @@ -16112,7 +16730,15 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801812B4); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801812E8); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80181344); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32); +void func_80181344(int param_1) +{ + if (((int (*)(void))func_80153BD8)() != 0) { + ((void (*)(int))func_80153BF0)(param_1); + } +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_8018137C); @@ -16476,9 +17102,23 @@ tail: INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80182B58); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80182C44); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80182C80); + +void func_80182C44(void *a0) { + + extern void (*D_801C141C[])(void); + D_801C141C[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80182C80(void *a0) { + + extern void (*D_801C14D0[])(void); + D_801C14D0[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80182CBC); @@ -16519,7 +17159,14 @@ INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80183530); INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801835FC); -INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_801836D4); + + +void func_801836D4(void *a0) { + + extern void (*D_801C6CAC[])(void); + D_801C6CAC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC02_037/nonmatchings/ov_SC02_037", func_80183710); diff --git a/src/ov_SC03_107/ov_SC03_107.c b/src/ov_SC03_107/ov_SC03_107.c index 035230207..a85acb8d2 100644 --- a/src/ov_SC03_107/ov_SC03_107.c +++ b/src/ov_SC03_107/ov_SC03_107.c @@ -30,7 +30,19 @@ DEFINE_func_80128248() /* dedup: shared engine-core @0x80128248 (src/shared) */ DEFINE_func_80128268() /* dedup: shared engine-core @0x80128268 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80128288); + + +void func_80128288(void) { + + extern u16 D_800B99F6; + extern void (*D_80182740[])(void); + u32 v1; + v1 = D_800B99F6; + if (v1 < 9) { + D_80182740[v1](); + } +} + DEFINE_func_801282CC() /* dedup: shared engine-core @0x801282cc (src/shared) */ @@ -376,7 +388,12 @@ DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012ad44 (src/shared) */ DEFINE_func_8012AD50() /* dedup: shared engine-core @0x8012ad50 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8012AD64); + + +void func_8012AD64(s32 *a0, s16 a1) { + *(s16*)((s32)a0 + 0x34) = a1; +} + DEFINE_func_8012AD6C() /* dedup: shared engine-core @0x8012ad6c (src/shared) */ @@ -488,7 +505,11 @@ DEFINE_func_8012BEE8() /* dedup: shared engine-core @0x8012bee8 (src/shared) */ DEFINE_func_8012BF10() /* dedup: shared engine-core @0x8012bf10 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8012BF4C); + +void func_8012BF4C(s32 *a0, s32 a1) { + *(s32*)((s32)a0 + 0x1C) = a1; +} + DEFINE_func_8012BF54() /* dedup: shared engine-core @0x8012bf54 (src/shared) */ @@ -1201,15 +1222,50 @@ DEFINE_func_80131E7C() /* dedup: shared engine-core @0x80131e7c (src/shared) */ void func_80131EE4(void) { } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80131EEC); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80131F28); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80131F64); +void func_80131EEC(void *a0) { -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80131FA0); + extern void (*D_801829D0[])(void); + D_801829D0[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131F28(void *a0) { + + extern void (*D_80182A18[])(void); + D_80182A18[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131F64(void *a0) { + + extern void (*D_80182A20[])(void); + D_80182A20[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131FA0(void *a0) { + + extern void (*D_80182A28[])(void); + D_80182A28[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80131FDC(void *a0) { + + extern void (*D_80182A30[])(void); + D_80182A30[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80131FDC); INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80132018); @@ -3207,7 +3263,14 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8013D064); INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8013D13C); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8013D164); + + +void func_8013D164(void) { + + extern s32 D_8019A820; + D_8019A820 = 1; +} + void func_8013D178(void) { @@ -4510,7 +4573,14 @@ DEFINE_func_80142454() /* dedup: shared engine-core @0x80142454 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801424E4); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801425CC); + + +void func_801425CC(void *a0) { + + extern void (*D_801838DC[])(void); + D_801838DC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80142608); @@ -4617,7 +4687,14 @@ DEFINE_func_801439C0() /* dedup: shared engine-core @0x801439c0 (src/shared) */ DEFINE_func_801439FC() /* dedup: shared engine-core @0x801439fc (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80143B30); + + +void func_80143B30(void *a0) { + + extern void (*D_80183DCC[])(void); + D_80183DCC[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143b6c (src/shared) */ @@ -4625,12 +4702,26 @@ DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143b6c (src/shared) */ DEFINE_func_80143BDC() /* dedup: shared engine-core @0x80143bdc (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80143C38); + + +void func_80143C38(void *a0) { + + extern void (*D_80183DD8[])(void); + D_80183DD8[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80143C74() /* dedup: shared engine-core @0x80143c74 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80143C98); + + +void func_80143C98(void *a0) { + + extern void (*D_80183DE0[])(void); + D_80183DE0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80143CD4() /* dedup: shared engine-core @0x80143cd4 (src/shared) */ @@ -4685,7 +4776,14 @@ void func_80143D28(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80143E68); + + +void func_80143E68(void *a0) { + + extern void (*D_80183E28[])(void); + D_80183E28[*(u16 *)((s32)a0 + 0x2)](); +} + void func_80143EA4(void) { } @@ -4699,7 +4797,14 @@ void func_80143EB4(void) { DEFINE_func_80143EBC() /* dedup: shared engine-core @0x80143ebc (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80144054); + + +void func_80144054(void *a0) { + + extern void (*D_80183E3C[])(void); + D_80183E3C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80144090); @@ -4724,12 +4829,26 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80144880); DEFINE_func_80144988() /* dedup: shared engine-core @0x80144988 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801449C8); + + +void func_801449C8(void *a0) { + + extern void (*D_80183E4C[])(void); + D_80183E4C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80144A04() /* dedup: shared engine-core @0x80144a04 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80144A2C); + + +void func_80144A2C(void *a0) { + + extern void (*D_80183E54[])(void); + D_80183E54[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80144A68() /* dedup: shared engine-core @0x80144a68 (src/shared) */ @@ -6799,7 +6918,14 @@ DEFINE_func_801518D8() /* dedup: shared engine-core @0x801518d8 (src/shared) */ DEFINE_func_80151924() /* dedup: shared engine-core @0x80151924 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80151944); + + +void func_80151944(void *a0) { + + extern void (*D_801841B8[])(void); + D_801841B8[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80151980() /* dedup: shared engine-core @0x80151980 (src/shared) */ @@ -6816,7 +6942,14 @@ DEFINE_func_80151B98() /* dedup: shared engine-core @0x80151b98 (src/shared) */ DEFINE_func_80151C54() /* dedup: shared engine-core @0x80151c54 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80151D24); + + +void func_80151D24(void *a0) { + + extern void (*D_801841C8[])(void); + D_801841C8[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80151D60() /* dedup: shared engine-core @0x80151d60 (src/shared) */ @@ -6836,7 +6969,14 @@ DEFINE_func_80151F38() /* dedup: shared engine-core @0x80151f38 (src/shared) */ DEFINE_func_80151FB4() /* dedup: shared engine-core @0x80151fb4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80152058); + + +void func_80152058(void *a0) { + + extern void (*D_801841EC[])(void); + D_801841EC[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152094() /* dedup: shared engine-core @0x80152094 (src/shared) */ @@ -6855,7 +6995,14 @@ DEFINE_func_80152254() /* dedup: shared engine-core @0x80152254 (src/shared) */ DEFINE_func_801522CC() /* dedup: shared engine-core @0x801522cc (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80152370); + + +void func_80152370(void *a0) { + + extern void (*D_80184200[])(void); + D_80184200[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801523AC() /* dedup: shared engine-core @0x801523ac (src/shared) */ @@ -6868,7 +7015,14 @@ DEFINE_func_80152500() /* dedup: shared engine-core @0x80152500 (src/shared) */ DEFINE_func_801525F4() /* dedup: shared engine-core @0x801525f4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80152698); + + +void func_80152698(void *a0) { + + extern void (*D_8018421C[])(void); + D_8018421C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801526D4() /* dedup: shared engine-core @0x801526d4 (src/shared) */ @@ -6879,7 +7033,14 @@ DEFINE_func_80152714() /* dedup: shared engine-core @0x80152714 (src/shared) */ DEFINE_func_80152790() /* dedup: shared engine-core @0x80152790 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015282C); + + +void func_8015282C(void *a0) { + + extern void (*D_80184234[])(void); + D_80184234[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152868() /* dedup: shared engine-core @0x80152868 (src/shared) */ @@ -6898,7 +7059,14 @@ DEFINE_func_80152A50() /* dedup: shared engine-core @0x80152a50 (src/shared) */ DEFINE_func_80152AC8() /* dedup: shared engine-core @0x80152ac8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80152B6C); + + +void func_80152B6C(void *a0) { + + extern void (*D_80184248[])(void); + D_80184248[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152BA8() /* dedup: shared engine-core @0x80152ba8 (src/shared) */ @@ -6912,7 +7080,14 @@ DEFINE_func_80152C40() /* dedup: shared engine-core @0x80152c40 (src/shared) */ DEFINE_func_80152C80() /* dedup: shared engine-core @0x80152c80 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80152D24); + + +void func_80152D24(void *a0) { + + extern void (*D_80184264[])(void); + D_80184264[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80152D60() /* dedup: shared engine-core @0x80152d60 (src/shared) */ @@ -6931,7 +7106,14 @@ DEFINE_func_80152F44() /* dedup: shared engine-core @0x80152f44 (src/shared) */ DEFINE_func_80152FBC() /* dedup: shared engine-core @0x80152fbc (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80153060); + + +void func_80153060(void *a0) { + + extern void (*D_80184278[])(void); + D_80184278[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015309C() /* dedup: shared engine-core @0x8015309c (src/shared) */ @@ -6951,7 +7133,14 @@ DEFINE_func_80153204() /* dedup: shared engine-core @0x80153204 (src/shared) */ DEFINE_func_8015327C() /* dedup: shared engine-core @0x8015327c (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80153320); + + +void func_80153320(void *a0) { + + extern void (*D_8018428C[])(void); + D_8018428C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015335C() /* dedup: shared engine-core @0x8015335c (src/shared) */ @@ -7135,7 +7324,14 @@ DEFINE_func_80155518() /* dedup: shared engine-core @0x80155518 (src/shared) */ DEFINE_func_8015554C() /* dedup: shared engine-core @0x8015554c (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80155580); + + +void func_80155580(void *a0) { + + extern void (*D_80184318[])(void); + D_80184318[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801555BC() /* dedup: shared engine-core @0x801555bc (src/shared) */ @@ -7388,7 +7584,14 @@ DEFINE_func_801574DC() /* dedup: shared engine-core @0x801574dc (src/shared) */ DEFINE_func_80157510() /* dedup: shared engine-core @0x80157510 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80157544); + + +void func_80157544(void *a0) { + + extern void (*D_8018478C[])(void); + D_8018478C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80157580() /* dedup: shared engine-core @0x80157580 (src/shared) */ @@ -7438,7 +7641,14 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80157D20); DEFINE_func_80157D74() /* dedup: shared engine-core @0x80157d74 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80157DC4); + + +void func_80157DC4(void *a0) { + + extern void (*D_801847F4[])(void); + D_801847F4[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80157E00() /* dedup: shared engine-core @0x80157e00 (src/shared) */ @@ -7452,7 +7662,14 @@ DEFINE_func_80157EA4() /* dedup: shared engine-core @0x80157ea4 (src/shared) */ DEFINE_func_80157F64() /* dedup: shared engine-core @0x80157f64 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80157FC4); + + +void func_80157FC4(void *a0) { + + extern void (*D_801847FC[])(void); + D_801847FC[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80158000() /* dedup: shared engine-core @0x80158000 (src/shared) */ @@ -7465,7 +7682,14 @@ DEFINE_func_801580B4() /* dedup: shared engine-core @0x801580b4 (src/shared) */ DEFINE_func_801581AC() /* dedup: shared engine-core @0x801581ac (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015824C); + + +void func_8015824C(void *a0) { + + extern void (*D_80184808[])(void); + D_80184808[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80158288() /* dedup: shared engine-core @0x80158288 (src/shared) */ @@ -7734,7 +7958,14 @@ DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598e0 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80159968); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801599A4); + + +void func_801599A4(void *a0) { + + extern void (*D_80184B44[])(void); + D_80184B44[*(u16 *)((s32)a0 + 0x0)](); +} + DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599e0 (src/shared) */ @@ -7750,7 +7981,14 @@ DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159b08 (src/shared) */ DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159b3c (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80159B70); + + +void func_80159B70(void *a0) { + + extern void (*D_80184C8C[])(void); + D_80184C8C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159bac (src/shared) */ @@ -7768,7 +8006,14 @@ DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015a1fc (src/shared) */ DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015a230 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015A264); + + +void func_8015A264(void *a0) { + + extern void (*D_80184C94[])(void); + D_80184C94[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015a2a0 (src/shared) */ @@ -7794,7 +8039,14 @@ DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015acc4 (src/shared) */ DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015ad08 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015AD3C); + + +void func_8015AD3C(void *a0) { + + extern void (*D_80184C9C[])(void); + D_80184C9C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015ad78 (src/shared) */ @@ -7852,7 +8104,14 @@ DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015bf7c (src/shared) */ DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015bfb0 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015BFF4); + + +void func_8015BFF4(void *a0) { + + extern void (*D_80184CC4[])(void); + D_80184CC4[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015C030); @@ -7950,7 +8209,14 @@ DEFINE_func_8015C6AC() /* dedup: shared engine-core @0x8015c6ac (src/shared) */ DEFINE_func_8015C6E0() /* dedup: shared engine-core @0x8015c6e0 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015C714); + + +void func_8015C714(void *a0) { + + extern void (*D_80184CD0[])(void); + D_80184CD0[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8015C750() /* dedup: shared engine-core @0x8015c750 (src/shared) */ @@ -8416,7 +8682,35 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015DBD4); DEFINE_func_8015DC84() /* dedup: shared engine-core @0x8015dc84 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015DCB8); + +// @class: other +// @stuck: none — MATCH (proxy gate) + +extern void func_80149374(s32 a0, s32 a1); + +void func_8015DCB8(s32 param_1) { + + extern s8 D_80184DC4[]; + s32 iVar1; + s32 iVar2; + + iVar2 = *(s32 *)(param_1 + 0x178); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 6) = (s16)D_80184DC4[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 10) = (s16)D_80184DC4[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 0xe) = (s16)D_80184DC4[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); + + func_80149374(param_1, iVar2 + 4); +} + DEFINE_func_8015DD74() /* dedup: shared engine-core @0x8015dd74 (src/shared) */ @@ -8440,7 +8734,35 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015DF34); DEFINE_func_8015DFE4() /* dedup: shared engine-core @0x8015dfe4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015E018); + +// @class: other +// @stuck: none — MATCH (proxy gate) + +extern void func_80149374(s32 a0, s32 a1); + +void func_8015E018(s32 param_1) { + + extern s8 D_80184DC4[]; + s32 iVar1; + s32 iVar2; + + iVar2 = *(s32 *)(param_1 + 0x178); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 6) = (s16)D_80184DC4[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 10) = (s16)D_80184DC4[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); + + iVar1 = *(s32 *)(param_1 + 0x234); + *(s32 *)(param_1 + 0x234) = iVar1 + 1; + *(s16 *)(iVar2 + 0xe) = (s16)D_80184DC4[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); + + func_80149374(param_1, iVar2 + 4); +} + DEFINE_func_8015E0D4() /* dedup: shared engine-core @0x8015e0d4 (src/shared) */ @@ -8469,7 +8791,13 @@ DEFINE_func_8015E40C() /* dedup: shared engine-core @0x8015e40c (src/shared) */ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015E4B0); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8015E588); +extern s32 func_8013C9C4(s32 *a0); +void func_8015E588(void) { + + extern s32 D_80184E1C; + func_8013C9C4(&D_80184E1C); +} + DEFINE_func_8015E5B0() /* dedup: shared engine-core @0x8015e5b0 (src/shared) */ @@ -9049,7 +9377,14 @@ DEFINE_func_80160E3C() /* dedup: shared engine-core @0x80160e3c (src/shared) */ DEFINE_func_80160E70() /* dedup: shared engine-core @0x80160e70 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80160EA4); + + +void func_80160EA4(void *a0) { + + extern void (*D_80184F50[])(void); + D_80184F50[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80160EE0() /* dedup: shared engine-core @0x80160ee0 (src/shared) */ @@ -9493,7 +9828,14 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801638A0); DEFINE_func_80163950() /* dedup: shared engine-core @0x80163950 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80163A58); + + +void func_80163A58(void *a0) { + + extern void (*D_80185058[])(void); + D_80185058[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80163A94() /* dedup: shared engine-core @0x80163a94 (src/shared) */ @@ -9724,7 +10066,14 @@ DEFINE_func_80164A74() /* dedup: shared engine-core @0x80164a74 (src/shared) */ DEFINE_func_80164ACC() /* dedup: shared engine-core @0x80164acc (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80164BA0); + + +void func_80164BA0(void *a0) { + + extern void (*D_801850B8[])(void); + D_801850B8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80164BDC); @@ -9742,7 +10091,14 @@ DEFINE_func_80164DD0() /* dedup: shared engine-core @0x80164dd0 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80164E40); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80164EA4); + + +void func_80164EA4(void *a0) { + + extern void (*D_801850C8[])(void); + D_801850C8[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80164EE0); @@ -9881,7 +10237,15 @@ void func_80165B18(void) { void func_80165B20(void) { } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80165B28); + + +void func_80165B28(void *a0) { + + extern void (*D_8018537C[])(void); + *(u32 *)((s32)a0 + 0x44) |= 8; + D_8018537C[*(u8 *)((s32)a0 + 0x197)](); +} + DEFINE_func_80165B6C() /* dedup: shared engine-core @0x80165b6c (src/shared) */ @@ -9908,7 +10272,14 @@ DEFINE_func_80165E90() /* dedup: shared engine-core @0x80165e90 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80165FA4); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80166018); + + +void func_80166018(void *a0) { + + extern void (*D_80185388[])(void); + D_80185388[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80166054() /* dedup: shared engine-core @0x80166054 (src/shared) */ @@ -9930,16 +10301,37 @@ DEFINE_func_8016634C() /* dedup: shared engine-core @0x8016634c (src/shared) */ DEFINE_func_801663A4() /* dedup: shared engine-core @0x801663a4 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801663FC); + + +void func_801663FC(void *a0) { + + extern void (*D_80185390[])(void); + D_80185390[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80166438() /* dedup: shared engine-core @0x80166438 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801665B4); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80166618); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80166654); + +void func_80166618(void *a0) { + + extern void (*D_80185458[])(void); + D_80185458[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +void func_80166654(void *a0) { + + extern void (*D_80185468[])(void); + D_80185468[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80166690); @@ -10302,12 +10694,26 @@ shared: DEFINE_func_80167714() /* dedup: shared engine-core @0x80167714 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801678B4); + + +void func_801678B4(void *a0) { + + extern void (*D_80185478[])(void); + D_80185478[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_801678F0() /* dedup: shared engine-core @0x801678f0 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80167A9C); + + +void func_80167A9C(void *a0) { + + extern void (*D_80185484[])(void); + D_80185484[*(u16 *)((s32)a0 + 0x2)](); +} + void func_80167AD8(void) { } @@ -10574,7 +10980,14 @@ DEFINE_func_80168640() /* dedup: shared engine-core @0x80168640 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80168664); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80168744); + + +void func_80168744(void *a0) { + + extern void (*D_8018549C[])(void); + D_8018549C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80168780() /* dedup: shared engine-core @0x80168780 (src/shared) */ @@ -10652,14 +11065,32 @@ void func_80168828(void) } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801689D8); + + +void func_801689D8(void *a0) { + + extern void (*D_801854A4[])(void); + D_801854A4[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_80168A14() /* dedup: shared engine-core @0x80168a14 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80168A88); +extern void func_80146C3C(u8*); +void func_80168A88(void) { + ((void (*)(void))func_80146C3C)(); +} + + + + +void func_80168AA8(void *a0) { + + extern void (*D_801854AC[])(void); + D_801854AC[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80168AA8); DEFINE_func_80168AE4() /* dedup: shared engine-core @0x80168ae4 (src/shared) */ @@ -10715,7 +11146,14 @@ void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4) } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80168D58); + + +void func_80168D58(void *a0) { + + extern void (*D_801854B4[])(void); + D_801854B4[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80168D94); @@ -10724,7 +11162,14 @@ DEFINE_func_80168EC4() /* dedup: shared engine-core @0x80168ec4 (src/shared) */ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80168F40); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016901C); + + +void func_8016901C(void *a0) { + + extern void (*D_801854BC[])(void); + D_801854BC[*(u16 *)((s32)a0 + 0x2)](); +} + extern void func_800D20C0(void *a0, void *a1, s32 a2); extern void func_800D23D0(void *a0); @@ -10789,7 +11234,14 @@ DEFINE_func_801691B8() /* dedup: shared engine-core @0x801691b8 (src/shared) */ DEFINE_func_80169228() /* dedup: shared engine-core @0x80169228 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801693CC); + + +void func_801693CC(void *a0) { + + extern void (*D_801854C4[])(void); + D_801854C4[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80169408); @@ -10802,7 +11254,14 @@ DEFINE_func_80169584() /* dedup: shared engine-core @0x80169584 (src/shared) */ DEFINE_func_801696D8() /* dedup: shared engine-core @0x801696d8 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80169830); + + +void func_80169830(void *a0) { + + extern void (*D_801854CC[])(void); + D_801854CC[*(u16 *)((s32)a0 + 0x2)](); +} + extern void func_800D20C0(void *a0, void *a1, s32 a2); extern void func_800D23D0(void *a0); @@ -10865,7 +11324,14 @@ DEFINE_func_801699D0() /* dedup: shared engine-core @0x801699d0 (src/shared) */ DEFINE_func_80169A4C() /* dedup: shared engine-core @0x80169a4c (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80169B80); + + +void func_80169B80(void *a0) { + + extern void (*D_80185580[])(void); + D_80185580[*(u16 *)((s32)a0 + 0x2)](); +} + @@ -10948,13 +11414,34 @@ void func_80169BBC(s32 arg0) { INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80169E44); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80169F00); + + +void func_80169F00(void *a0) { + + extern void (*D_80185588[])(void); + D_80185588[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80169F3C); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80169FE0); +extern s32 func_80128ED8(s32, s32*); +extern void func_80146C3C(); +void func_80169FE0(s32 a0) { + if (((s32 (*)(void *, void *))func_80128ED8)((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { + ((void (*)(s32))func_80146C3C)(a0); + } +} + + + + +void func_8016A020(void *a0) { + + extern void (*D_801855C0[])(void); + D_801855C0[*(u16 *)((s32)a0 + 0x2)](); +} -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016A020); DEFINE_func_8016A05C() /* dedup: shared engine-core @0x8016a05c (src/shared) */ @@ -11103,7 +11590,14 @@ L3: } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016A700); + + +void func_8016A700(void *a0) { + + extern void (*D_801855CC[])(void); + D_801855CC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016A73C); @@ -11115,7 +11609,14 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016A8FC); DEFINE_func_8016AA50() /* dedup: shared engine-core @0x8016aa50 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016AB30); + + +void func_8016AB30(void *a0) { + + extern void (*D_80185614[])(void); + D_80185614[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016AB6C); @@ -11208,7 +11709,14 @@ DEFINE_func_8016B428() /* dedup: shared engine-core @0x8016b428 (src/shared) */ DEFINE_func_8016B448() /* dedup: shared engine-core @0x8016b448 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016B4BC); + + +void func_8016B4BC(void *a0) { + + extern void (*D_80185690[])(void); + D_80185690[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016B4F8); @@ -11320,7 +11828,14 @@ DEFINE_func_8016BA68() /* dedup: shared engine-core @0x8016ba68 (src/shared) */ DEFINE_func_8016BADC() /* dedup: shared engine-core @0x8016badc (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016BBA4); + + +void func_8016BBA4(void *a0) { + + extern void (*D_801856E0[])(void); + D_801856E0[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016BBE0); @@ -11339,7 +11854,14 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016BFA8); INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016BFD0); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016C14C); + + +void func_8016C14C(void *a0) { + + extern void (*D_80185710[])(void); + D_80185710[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016C188); @@ -11507,7 +12029,14 @@ void func_8016C998(s32 param_1) } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016CB84); + + +void func_8016CB84(void *a0) { + + extern void (*D_80185718[])(void); + D_80185718[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016CBC0); @@ -11578,11 +12107,25 @@ short func_8016CF04(s32 param_1, s32 param_2) { } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016D19C); + + +void func_8016D19C(void *a0) { + + extern void (*D_80185734[])(void); + D_80185734[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016D1D8); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016D428); + + +void func_8016D428(void *a0) { + + extern void (*D_8018573C[])(void); + D_8018573C[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8016D464() /* dedup: shared engine-core @0x8016d464 (src/shared) */ @@ -11708,11 +12251,32 @@ done: } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016DEA4); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016DEE0); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016DF20); +void func_8016DEA4(void *a0) { + + extern void (*D_801857D8[])(void); + D_801857D8[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_80128ED8(s32, s32*); +extern void func_80146C3C(); +void func_8016DEE0(s32 a0) { + if (((s32 (*)(void *, void *))func_80128ED8)((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { + ((void (*)(s32))func_80146C3C)(a0); + } +} + + + + +void func_8016DF20(void *a0) { + + extern void (*D_801857E0[])(void); + D_801857E0[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016DF5C); @@ -11734,7 +12298,14 @@ DEFINE_func_8016E3CC() /* dedup: shared engine-core @0x8016e3cc (src/shared) */ DEFINE_func_8016E460() /* dedup: shared engine-core @0x8016e460 (src/shared) */ -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016E5B8); + + +void func_8016E5B8(void *a0) { + + extern void (*D_80185834[])(void); + D_80185834[*(u16 *)((s32)a0 + 0x2)](); +} + DEFINE_func_8016E5F4() /* dedup: shared engine-core @0x8016e5f4 (src/shared) */ @@ -11833,7 +12404,11 @@ void func_8016EC0C(s32 a0, s32 a1) } -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8016ED6C); +extern void func_80146C3C(u8*); +void func_8016ED6C(void) { + ((void (*)(void))func_80146C3C)(); +} + DEFINE_func_8016ED8C() /* dedup: shared engine-core @0x8016ed8c (src/shared) */ @@ -14459,7 +15034,14 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8017D4C8); INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8017D51C); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8017D540); + + +void func_8017D540(void *a0) { + + extern void (*D_801860C0[])(void); + D_801860C0[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8017D57C); @@ -14472,7 +15054,14 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8017D698); INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8017D728); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8017D730); + + +void func_8017D730(void *a0) { + + extern void (*D_8018614C[])(void); + D_8018614C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8017D76C); @@ -14927,7 +15516,14 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80180428); INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801804D8); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801805BC); + + +void func_801805BC(void *a0) { + + extern void (*D_8019754C[])(void); + D_8019754C[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801805F8); @@ -15005,7 +15601,14 @@ void func_80181CB8(void) { INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80181CC0); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80181D88); + + +void func_80181D88(void *a0) { + + extern void (*D_80198FEC[])(void); + D_80198FEC[*(u16 *)((s32)a0 + 0x2)](); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_80181DC4); @@ -15149,6 +15752,23 @@ INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801822E4); INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_8018233C); -INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801823B8); + +/* func_801823B8 — guard-then-free tail (cookbook §71 sibling shape: + * src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c func_80144458 tail, and + * src/ov_SC03_099/ov_SC03_099_jr_80140608.c:2432 func_80016714(x, 0x38)). */ + +extern void func_80016714(void *a0, s32 a1); +extern void func_8012C218(void *a0); + +void func_801823B8(void *arg0) { + void *temp_a0; + + temp_a0 = *(void **)((char *)arg0 + 0xCC); + if (temp_a0 != NULL) { + func_80016714(temp_a0, 0x38); + } + func_8012C218(arg0); +} + INCLUDE_ASM("asm/ov_SC03_107/nonmatchings/ov_SC03_107", func_801823FC); diff --git a/tools/corpus.py b/tools/corpus.py index 50776bf9b..879a53f8f 100644 --- a/tools/corpus.py +++ b/tools/corpus.py @@ -80,6 +80,12 @@ _INCLUDE_ASM_CAND = re.compile(r'^(?![ \t]*(?://|\*|/\*)).*INCLUDE_ASM\s*\(') _INCLUDE_ASM = re.compile(r'INCLUDE_ASM\(\s*"([^"]+)"\s*,\s*([A-Za-z_]\w*)\s*\)') _SYM_LINE = re.compile(r'^\s*(\w+)\s*=\s*0x([0-9A-Fa-f]+)') _INS = re.compile(r'/\* [0-9A-Fa-f]+ [0-9A-Fa-f]{8} [0-9A-Fa-f]{8} \*/') +# Data-directive lines carry the same /* off addr word */ comment shape as instructions — a +# module-class .s can legitimately hold its function's HEADER-region jump table (the paired +# .rodata migration, S45: `dlabel jtbl_*` + `.word .L*` lines ride inside func_*.s so the local +# labels resolve). Those are DATA, not instructions; counting them mis-read 24 correct module +# slices as TRUNCATED. The audit compares CODE extents — exclude directive lines. +_DATA_DIRECTIVE = re.compile(r'\*/\s*\.(word|short|byte|ascii|asciz|float|double)\b') _FUNC_NAME = re.compile(r'^func_([0-9A-Fa-f]{6,8})$') Stub = namedtuple("Stub", "addr symbol path region asm_dir asm_path") @@ -356,7 +362,8 @@ def audit(binary): continue p = os.path.join(REPO, s.asm_path) if os.path.exists(p): - n = len(_INS.findall(open(p, errors="replace").read())) + n = sum(1 for ln in open(p, errors="replace") + if _INS.search(ln) and not _DATA_DIRECTIVE.search(ln)) if n != row["nins"]: truncated.append((s, n, row["nins"])) return {"binary": binary, "stubs": len(st), "matched": len(matched(binary)), diff --git a/tools/progress.py b/tools/progress.py index 298a1c797..c587c2dd0 100644 --- a/tools/progress.py +++ b/tools/progress.py @@ -571,6 +571,13 @@ def classify(): stubs.append(fn) i += 1; continue if s.startswith('INCLUDE_RODATA'): + # Bucket the symbol as a data BLOB rather than skipping it unbucketed: the module + # class (S45) emits header rodata (the §154 id word, orphan jtbl carriers) as + # per-symbol .s files in nonmatchings/, so they enter _S_INDEX and an unbucketed + # skip reads as an R32 COVERAGE DEFECT. Rodata is data by construction. + m = re.match(r'INCLUDE_RODATA\("[^"]+",\s*(\w+)\)', s) + if m: + blobs.append(m.group(1)) i += 1; continue fm = SIG.match(lines[i]) if fm and '(' in lines[i]: