From 315699b59795a9fcfe6c0f2aa2d6800c837f5382 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 26 Aug 2026 14:25:14 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20ov=5FSC02=5F005=20=E2=80=94=201?= =?UTF-8?q?=20resolver-held=20draft=20banked=20after=20the=20T2e=20surgery?= =?UTF-8?q?;=20the=20gate's=20=C2=A78a=20carve=20split=20TU=20jr=5F8018EA0?= =?UTF-8?q?4=20(new=20.c=20+=20yaml=20subseg=20+=20order,=20consistently?= =?UTF-8?q?=20this=20time);=20re-verified=20byte-identical=20from=20a=20cl?= =?UTF-8?q?ean=20rebuild=20(P31=20S62)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/overlays.mk | 2 +- config/splat.ov_SC02_005.yaml | 3 + src/ov_SC02_005/ov_SC02_005_jr_80181D30.c | 1258 ------ src/ov_SC02_005/ov_SC02_005_jr_8018EA04.c | 4885 +++++++++++++++++++++ 4 files changed, 4889 insertions(+), 1259 deletions(-) create mode 100644 src/ov_SC02_005/ov_SC02_005_jr_8018EA04.c diff --git a/config/overlays.mk b/config/overlays.mk index fa3318420..d9d7272bf 100644 --- a/config/overlays.mk +++ b/config/overlays.mk @@ -864,7 +864,7 @@ ov_SC02_005_ELF := $(ov_SC02_005_OUT).elf ov_SC02_005_MAPFILE := $(ov_SC02_005_OUT).map ov_SC02_005_LD_SCRIPT := $(ov_SC02_005_OUT).ld ov_SC02_005_SPLAT_YAML := config/splat.ov_SC02_005.yaml -ov_SC02_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_005.o,ov_SC02_005_jr_8012ACE0.o,tail2.data.o,ov_SC02_005_jr_80135888.o,tail3.data.o,ov_SC02_005_jr_80135A4C.o,tail4.data.o,ov_SC02_005_jr_80135D20.o,tail5.data.o,ov_SC02_005_jr_801380E0.o,ov_SC02_005_o0c.o,tail6.data.o,ov_SC02_005_jr_8013F350.o,tail7.data.o,ov_SC02_005_jr_8013FFD8.o,tail8.data.o,ov_SC02_005_jr_80140608.o,tail9.data.o,ov_SC02_005_jr_8015444C.o,ov_SC02_005_jr_80154C24.o,ov_SC02_005_jr_801588CC.o,ov_SC02_005_jr_80159C84.o,tail10.data.o,ov_SC02_005_jr_8015A3C8.o,tail11.data.o,ov_SC02_005_jr_8015AE2C.o,tail12.data.o,ov_SC02_005_jr_8015C32C.o,tail13.data.o,ov_SC02_005_jr_8016AB6C.o,tail14.data.o,ov_SC02_005_jr_80171B4C.o,ov_SC02_005_jr_801734BC.o,tail15.data.o,ov_SC02_005_jr_801789AC.o,ov_SC02_005_jr_80178D40.o,tail16.data.o,ov_SC02_005_jr_8017A4AC.o,tail17.data.o,ov_SC02_005_jr_8017AE2C.o,tail18.data.o,ov_SC02_005_jr_8017CF90.o,tail19.data.o,ov_SC02_005_jr_80181984.o,ov_SC02_005_jr_80181D30.o,tail20.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC02_005_JTBL_INTERLEAVE := --order tail.data.o,ov_SC02_005.o,ov_SC02_005_jr_8012ACE0.o,tail2.data.o,ov_SC02_005_jr_80135888.o,tail3.data.o,ov_SC02_005_jr_80135A4C.o,tail4.data.o,ov_SC02_005_jr_80135D20.o,tail5.data.o,ov_SC02_005_jr_801380E0.o,ov_SC02_005_o0c.o,tail6.data.o,ov_SC02_005_jr_8013F350.o,tail7.data.o,ov_SC02_005_jr_8013FFD8.o,tail8.data.o,ov_SC02_005_jr_80140608.o,tail9.data.o,ov_SC02_005_jr_8015444C.o,ov_SC02_005_jr_80154C24.o,ov_SC02_005_jr_801588CC.o,ov_SC02_005_jr_80159C84.o,tail10.data.o,ov_SC02_005_jr_8015A3C8.o,tail11.data.o,ov_SC02_005_jr_8015AE2C.o,tail12.data.o,ov_SC02_005_jr_8015C32C.o,tail13.data.o,ov_SC02_005_jr_8016AB6C.o,tail14.data.o,ov_SC02_005_jr_80171B4C.o,ov_SC02_005_jr_801734BC.o,tail15.data.o,ov_SC02_005_jr_801789AC.o,ov_SC02_005_jr_80178D40.o,tail16.data.o,ov_SC02_005_jr_8017A4AC.o,tail17.data.o,ov_SC02_005_jr_8017AE2C.o,tail18.data.o,ov_SC02_005_jr_8017CF90.o,tail19.data.o,ov_SC02_005_jr_80181984.o,ov_SC02_005_jr_80181D30.o,tail20.data.o,ov_SC02_005_jr_8018EA04.o,tail21.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC02_005/ov_SC02_005.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14 build/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0 build/src/ov_SC02_005/ov_SC02_005_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18 diff --git a/config/splat.ov_SC02_005.yaml b/config/splat.ov_SC02_005.yaml index 81bdee986..8ba980bbf 100644 --- a/config/splat.ov_SC02_005.yaml +++ b/config/splat.ov_SC02_005.yaml @@ -123,6 +123,7 @@ segments: - [0x54e38, c, ov_SC02_005_jr_8017CF90] - [0x5982c, c, ov_SC02_005_jr_80181984] - [0x59bd8, c, ov_SC02_005_jr_80181D30] + - [0x668ac, c, ov_SC02_005_jr_8018EA04] - [0x6873c, data, tail] - [0xb998c, .rodata, ov_SC02_005] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb9a68, .rodata, ov_SC02_005_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -170,6 +171,8 @@ segments: - [0xbacc8, .rodata, ov_SC02_005_jr_80181984] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbace0, .rodata, ov_SC02_005_jr_80181D30] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbad18, data, tail20] + - [0xbae10, .rodata, ov_SC02_005_jr_8018EA04] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xbae38, data, tail21] - [0xBCB00, bin, trailing] # final 1 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBCB01] # EOF marker = the 0.4.dec byte length # @TRAILING@ (above) is replaced by tools/new_overlay.sh: for a non-4-aligned overlay it becomes diff --git a/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c b/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c index f905f4987..9684f5c62 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c @@ -11164,1261 +11164,3 @@ void func_8018E7E4(arg0, arg1, arg2, arg3, count) } } } - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018EA04); - -void func_8018EB60(s16 arg0, u16 *arg1, void *arg2, s16 arg3) { - u8 *s0; - u32 r; - s16 rot[3]; - s16 mat[16]; - s16 *m; - s16 i; - s32 bound; - - i = 0; - if (arg0 > 0) { - m = &mat[0]; - bound = arg0; - do { - s0 = func_8012913C(0xA); - if (s0 != 0) { - r = rand(); - rot[0] = (r & 0x7F) * 8 + 0xF40; - rot[1] = arg3 + ((r & 0x7F00) >> 5); - rot[2] = 0; - RotMatrixYXZ(rot, m); - ApplyMatrixSV(m, arg2, rot); - *(u16 *)(s0 + 6) = arg1[0] + rot[0]; - *(u16 *)(s0 + 0xA) = arg1[1] + rot[1]; - *(u16 *)(s0 + 0xE) = arg1[2] + rot[2]; - *(s32 *)(s0 + 0x10) = rot[0] << 11; - *(s32 *)(s0 + 0x14) = rot[1] << 11; - *(s32 *)(s0 + 0x18) = rot[2] << 11; - } - i++; - } while (i < bound); - } -} - - - -extern void (*D_80196CD4[])(void); - -void func_8018ECB8(void *a0) { - D_80196CD4[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_800D387C[]; - -void func_8018ECF4(s32 arg0) { - s32 iVar1; - - iVar1 = *(s32 *)(arg0 + 0x20); - ((void (*)(s32, s32, s32, s32))func_8001CC3C)(iVar1, (s32)&D_800D387C, 0x270, 0x120); - *(u8 *)(iVar1 + 0x27) = 0x9C; - *(u16 *)(iVar1 + 0x1A) = 0x7000; - *(u16 *)(iVar1 + 0x18) = 0x7000; - *(u8 *)(iVar1 + 0x26) = 0x90; - *(u8 *)(iVar1 + 0x25) = 0x90; - *(u8 *)(iVar1 + 0x24) = 0x90; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - *(s16 *)(arg0 + 0x2C) = 0x46; - *(s16 *)(arg0 + 0x2) += 1; -} - - -#include "common.h" - -extern void func_8012931C(void *); -extern void func_801292C8(u8 *a0); - -void func_8018ED84(s32 arg0) { - s32 v0; - s32 s0; - s32 pad[4]; - - v0 = *(u16 *)(arg0 + 0x2C) - 1; - *(u16 *)(arg0 + 0x2C) = v0; - s0 = *(s32 *)(arg0 + 0x20); - if ((s16)v0 == -1) { - func_801292C8((u8 *)arg0); - return; - } - func_8012931C((void *)arg0); - v0 = *(u8 *)(s0 + 0x26) - 2; - *(u8 *)(s0 + 0x26) = v0; - *(u8 *)(s0 + 0x25) = v0; - *(u8 *)(s0 + 0x24) = v0; -} - - - -extern void (*D_80196CDC[])(void); - -void func_8018EDF8(void *a0) { - D_80196CDC[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B2CC(s32 a0); -extern void func_8012B14C(s32 a0, s32 *a1); -extern s32 rand(void); -extern M2C_UNK D_80190C0C; -extern s32 D_80196BBC; -extern u8 D_801D9134[]; - -void func_8018EE34(s32 param_1) -{ - s32 *pb; - s32 sp10[3]; - - if (*(s32 *)(param_1 + 0x1C) != 0) { - (*(s32 *)(param_1 + 0x1C))--; - return; - } - pb = &D_80196BBC; - pb[0] = (s32)&D_801D9134; - if (func_8012C354(param_1, (s32)(pb - 1)) == 0) { - return; - } - func_8012A828(param_1, (void *)&D_80190C0C); - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(param_1 + 0x70) * 0x200; - func_8012B2CC(param_1); - sp10[0] = 0; - sp10[1] = 0xFFF20000; - sp10[2] = ((rand() & 0xF) + 0x28) * -0x1000; - func_8012B14C(param_1, sp10); - *(s32 *)(param_1 + 0x48) = 0x1C000; - *(u16 *)(param_1 + 0xDC) = (rand() & 0x7F) - 0x40; - *(s32 *)(param_1 + 0x1C) = 0x12; - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -extern void func_8012AD80(s32 a0); - -void func_8018EF20(void *a0) { - s32 *p = *(s32 **)((s32)a0 + 0x20); - s32 t; - - func_8012AD80((s32)a0); - *(s16 *)((s32)p + 0x14) = *(u16 *)((s32)p + 0x14) + *(u16 *)((s32)a0 + 0xDC); - - t = *(s32 *)((s32)a0 + 0x1C) - 1; - *(s32 *)((s32)a0 + 0x1C) = t; - if (t == -1) { - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - } -} - - -extern void func_8012C218(void *a0); - void func_8018EF90(void) { - ((void (*)(void))func_8012C218)(); - } - - - -extern void (*D_80196CE8[])(void); - -void func_8018EFB0(void *a0) { - D_80196CE8[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B2CC(s32 a0); -extern void func_8012AD80(s32 a0); -extern void func_8012B14C(s32 a0, s32 *a1); -extern s32 rand(void); - -extern M2C_UNK D_80190C0C; -extern s32 D_80196BBC; -extern u8 D_801D91CC[]; - -void func_8018EFEC(s32 param_1) -{ - register s32 s0 __asm__("$16"); - s32 *pb; - s32 p; - s32 t; - s32 sp10[3]; - - if (*(s32 *)(param_1 + 0x1C) != 0) { - (*(s32 *)(param_1 + 0x1C))--; - return; - } - pb = &D_80196BBC; - pb[0] = (s32)&D_801D91CC; - if (func_8012C354(param_1, (s32)(pb - 1)) != 0) { - func_8012A828(param_1, (void *)&D_80190C0C); - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(param_1 + 0x70) * 0x200; - func_8012B2CC(param_1); - sp10[0] = 0; - sp10[1] = 0xFFF00000; - sp10[2] = ((rand() & 0xF) + 0x58) * 0x10000; - func_8012B14C(param_1, sp10); - func_8012AD80(param_1); - p = *(s32 *)(param_1 + 0x20); - t = *(u16 *)(param_1 + 6); - *(u16 *)((u8 *)p + 8) = t; - *(s32 *)((u8 *)p + 0x48) = (s16)t; - p = *(s32 *)(param_1 + 0x20); - t = *(u16 *)(param_1 + 0xA); - *(u16 *)((u8 *)p + 0xA) = t; - *(s32 *)((u8 *)p + 0x4C) = (s16)t; - p = *(s32 *)(param_1 + 0x20); - t = *(u16 *)(param_1 + 0xE); - *(u16 *)((u8 *)p + 0xC) = t; - *(s32 *)((u8 *)p + 0x50) = (s16)t; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2C) |= 1; - *(s32 *)(param_1 + 0x14) = 0xFFEE0000; - *(s32 *)(param_1 + 0x48) = 0x1C000; - *(s32 *)(param_1 + 0x10) >>= 4; - *(s32 *)(param_1 + 0x18) >>= 4; - *(u16 *)(param_1 + 0xDC) = (rand() & 0x1FF) - 0x100; - *(s32 *)(param_1 + 0x1C) = 0x14; - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; - } -} - - -void func_8018F164(void *a0) { - s32 *p = *(s32 **)((s32)a0 + 0x20); - s32 t; - - func_8012AD80((s32)a0); - *(s16 *)((s32)p + 0x10) = *(u16 *)((s32)p + 0x10) + *(u16 *)((s32)a0 + 0xDC); - - t = *(s32 *)((s32)a0 + 0x1C) - 1; - *(s32 *)((s32)a0 + 0x1C) = t; - if (t == -1) { - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - } -} - - -extern void func_8012C218(void *a0); - void func_8018F1D4(void) { - ((s32 (*)(void))func_8012C218)(); - } - - - -extern void (*D_80196CF4[])(void); - -void func_8018F1F4(void *a0) { - D_80196CF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - -extern void func_8012C1B8(void); -extern void func_8001C2C4(s32 a0); -extern void func_8018F2C4(s32 a0); - -extern s32 D_801270CC; -extern u8 D_80196C24[]; - -void func_8018F230(void *param_1) -{ - s32 v0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)param_1 + 0x20) = v0; - if (v0 != 0) { - func_8001C2C4(v0); - *(s32 *)((s32)param_1 + 0x58) = (s32)D_80196C24 | 0x10000000; - *(u16 *)((s32)param_1 + 0x5C) = 0x800; - func_8018F2C4((s32)param_1); - *(u16 *)((s32)param_1 + 0xDE) = *(u16 *)(*(s32 *)&D_801270CC + 6); - *(s16 *)((s32)param_1 + 0xA) = -0x880; - __asm__ __volatile__("" ::: "memory"); - *(u16 *)((s32)param_1 + 0xDC) = *(u16 *)(*(s32 *)&D_801270CC + 0xE); - *(u16 *)((s32)param_1 + 2) += 1; - } -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018F2C4); - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; -extern s32 D_801D91D4; - -void func_8018F414(void) { - func_8013C414(&D_8019AA5C, &D_801D91D4); -} - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_8019AA5C; - extern s32 D_801DA5FC; - void func_8018F444(void) { - func_8013C414(&D_8019AA5C, &D_801DA5FC); - } - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_8019AA5C; - extern s32 D_801DB658; - void func_8018F474(void) { - func_8013C414(&D_8019AA5C, &D_801DB658); - } - - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; - -void func_8018F4A4(void) { - /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every - LATER function in this TU, which blocks a byte-true decl of a different type. - Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ - extern s32 D_801DC180; - func_8013C414(&D_8019AA5C, &D_801DC180); -} - - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; -extern s32 D_801DCD04; - -void func_8018F4D4(void) { - func_8013C414(&D_8019AA5C, &D_801DCD04); -} - - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; -extern s32 D_801DD2D4; - -void func_8018F504(void) { - func_8013C414(&D_8019AA5C, &D_801DD2D4); -} - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_8019AA5C; - extern s32 D_801DDD30; - void func_8018F534(void) { - func_8013C414(&D_8019AA5C, &D_801DDD30); - } - - - -extern void func_8013C414(void *a0, void *a1); -extern s32 D_8019AA5C; - -void func_8018F564(void) { - /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every - LATER function in this TU, which blocks a byte-true decl of a different type. - Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ - extern s32 D_801DE674; - func_8013C414(&D_8019AA5C, &D_801DE674); -} - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_8019AA5C; - extern s32 D_801DF3B4; - void func_8018F594(void) { - func_8013C414(&D_8019AA5C, &D_801DF3B4); - } - - -extern void func_8013C360(void *a0); - extern s32 D_801D91D4; - void func_8018F5C4(void) { - func_8013C360(&D_801D91D4); - } - - -extern void func_8013C360(void *a0); - extern s32 D_801DA5FC; - void func_8018F5EC(void) { - func_8013C360(&D_801DA5FC); - } - - -extern void func_8013C360(void *a0); - extern s32 D_801DB658; - void func_8018F614(void) { - func_8013C360(&D_801DB658); - } - - -extern void func_8013C360(void*); -void func_8018F63C(void) { - - extern s32 D_801DC180; - ((s32 (*)(s32 *))func_8013C360)(&D_801DC180); -} - - -extern void func_8013C360(void *a0); - extern s32 D_801DCD04; - void func_8018F664(void) { - func_8013C360(&D_801DCD04); - } - - -extern void func_8013C360(void *a0); - extern s32 D_801DD2D4; - void func_8018F68C(void) { - func_8013C360(&D_801DD2D4); - } - - -extern void func_8013C360(void *); - extern s32 D_801DDD30; - void func_8018F6B4(void) { - func_8013C360(&D_801DDD30); - } - - -extern void func_8013C360(void*); -void func_8018F6DC(void) { - - extern s32 D_801DE674; - ((s32 (*)(s32 *))func_8013C360)(&D_801DE674); -} - - -extern void func_8013C360(void*); -void func_8018F704(void) { - - extern s32 D_801DF3B4; - ((s32 (*)(s32 *))func_8013C360)(&D_801DF3B4); -} - - -#include "common.h" - -/* Fleet-canonical prototypes (ov_SC02_005 house style, per func_8018C6A8 / - * func_8018CA74 in this same TU): func_8012C1B8 is `void` returning; the - * value in $v0 is taken via a cast at the call site. */ -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_80028620(s32, void *); -extern s32 func_800CF854(void); - -extern s32 D_800A5E88; -extern s32 D_800A5E8C; -extern s32 D_800A5E90; -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; - -extern s32 D_800A5E9C; -extern s32 D_800A5EA0; -extern u8 D_800A5EA4; -extern u8 D_800A5EA5; -extern u8 D_800A5EA6; - -extern s32 D_800A5EAC; -extern s32 D_800A5EB0; -extern u8 D_800A5EB4; -extern u8 D_800A5EB5; -extern u8 D_800A5EB6; - -void func_8018F72C(void *a0) -{ - s32 v0; - register s32 *s0 __asm__("$16"); - register s32 s1v __asm__("$17"); - register s32 s2v __asm__("$18"); - register s32 a0v __asm__("$4"); - s32 e9c, eac; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((u8 *)a0 + 0x20) = v0; - - if (v0 == 0) { - func_8012CAE4(a0); - return; - } - - *(s16 *)((u8 *)a0 + 0x2) = 1; - *(u32 *)(*(s32 *)((u8 *)a0 + 0x20) + 0x4) |= 0x80000000; - - __asm__("la %0, D_800A5E88" : "=r"(s0)); - s0[0] = 0; - D_800A5E8C = 0xA; - D_800A5E90 = -0xA; - D_800A5E94 = 0xCC; - D_800A5E95 = 0x99; - D_800A5E96 = 0x99; - func_80028620(0, s0); - - a0v = 1; - e9c = -0xE; - __asm__ __volatile__("" ::: "memory"); - s0[4] = 0; - __asm__ __volatile__("" ::: "memory"); - D_800A5E9C = e9c; - D_800A5EA0 = -0x8; - s2v = 0x33; - D_800A5EA4 = s2v; - D_800A5EA5 = 0x19; - s1v = 0x4C; - D_800A5EA6 = s1v; - func_80028620(a0v, &s0[4]); - - a0v = 2; - eac = 0x14; - __asm__ __volatile__("" ::: "memory"); - s0[8] = 0; - __asm__ __volatile__("" ::: "memory"); - D_800A5EAC = eac; - D_800A5EB0 = 0xF; - D_800A5EB4 = s1v; - D_800A5EB5 = s2v; - D_800A5EB6 = 0x7F; - func_80028620(a0v, &s0[8]); - - if (func_800CF854()) { - *(s16 *)((u8 *)a0 + 0x2) = 0xA; - } -} - - -#include "common.h" - -extern void func_80028620(s32, void *); -extern u8 D_80126D6C; -extern s32 D_800A5E90; -extern s32 D_800A5EA0; -extern s32 D_800A5EB0; - -void func_8018F894(void *a0) { - s32 *s0; - - if (D_80126D6C != 3) { - return; - } - - s0 = (s32 *)&D_800A5E90; - *(s16 *)((s32)a0 + 2) = 2; - *s0 = 10; - func_80028620(0, (void *)((s32)s0 - 8)); - - D_800A5EA0 = 8; - func_80028620(1, (void *)((s32)s0 + 8)); - - D_800A5EB0 = -15; - func_80028620(2, (void *)((s32)s0 + 0x18)); -} - - -extern s32 D_801270C8; - -void func_8018F91C(s32 param_1) -{ - if (D_801270C8 == 8) { - *(s16 *)(param_1 + 2) = 3; - *(s32 *)(param_1 + 0x1C) = 0x12; - } -} - - -#include "common.h" - -extern void func_80028620(s32, void *); -extern s32 D_800A5E88; -extern s32 D_800A5E8C; -extern s32 D_800A5E90; -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 D_800A5EA0; -extern u8 D_800A5EA5; -extern s32 D_800A5EAC; -extern s32 D_800A5EB0; -extern u8 D_800A5EB4; -extern u8 D_800A5EB5; -extern u8 D_800A5EB6; - -void func_8018F944(void *a0) -{ - s32 v0; - s32 eac; - register s32 *s0 __asm__("$16"); - register s32 a0v __asm__("$4"); - - v0 = *(s32 *)((u8 *)a0 + 0x1C) - 1; - *(s32 *)((u8 *)a0 + 0x1C) = v0; - if (v0 != 0) { - return; - } - - *(s16 *)((u8 *)a0 + 0x2) = 4; - __asm__("la %0, D_800A5E88" : "=r"(s0)); - s0[0] = 0; - D_800A5E8C = -4; - D_800A5E90 = -4; - D_800A5E94 = 0xFF; - D_800A5E95 = 0x4C; - D_800A5E96 = 0; - func_80028620(0, s0); - - D_800A5EA0 = -0xE; - D_800A5EA5 = 0; - func_80028620(1, &s0[4]); - - a0v = 2; - eac = 0xA; - __asm__ __volatile__("" ::: "memory"); - s0[8] = 0; - __asm__ __volatile__("" ::: "memory"); - D_800A5EAC = eac; - D_800A5EB0 = eac; - D_800A5EB4 = 0xCC; - D_800A5EB5 = 0x99; - D_800A5EB6 = 0x99; - func_80028620(a0v, &s0[8]); -} - - -#include "common.h" - -extern s32 rand(void); -extern void func_80028620(s32, void *); -extern s32 D_801270C8; -extern s32 D_800A5E88; -extern s32 D_800A5E90; -extern s32 D_800A5EA0; -extern s32 D_800A5EB0; - -void func_8018FA34(s32 *a0) -{ - s32 v0; - s32 *s0; - s32 *s1; - /* Pin the 2nd func_80028620's first-arg (0) to its hard call reg so it - * materializes as a real SET (survives cse/const-prop), and pair it with - * the zero-byte scheduling barriers below. Without these, gcc-2.7.2's - * sched1 sinks the independent addr-calc / const-0 arg-setup PAST the - * rand()-result andi/addiu chain (S2-adjacent "class3 tie" residual, - * cookbook §25 / gcc-2.7.2-map/sched.md S1/S6); the target schedules - * each independent op BEFORE the dependent chain that follows it. */ - register s32 a0v __asm__("$4"); - - s1 = a0; - v0 = rand(); - s0 = (s32 *)&D_800A5E88; - __asm__ __volatile__("" ::: "memory"); - v0 &= 0x1F; - v0 -= 0x10; - s0[0] = v0; - - v0 = rand(); - a0v = 0; - __asm__ __volatile__("" ::: "memory"); - v0 &= 0x1F; - v0 -= 0x14; - D_800A5E90 = v0; - - func_80028620(a0v, s0); - - if (D_801270C8 != 0xA) { - return; - } - - *(s16 *)((u8 *)s1 + 0x2) = 0x5; - D_800A5EA0 = 0xE; - func_80028620(1, &s0[4]); - - D_800A5EB0 = -0xA; - func_80028620(2, &s0[8]); -} - - -#include "common.h" - -extern void func_80028620(s32, void *); -extern s32 D_801270C8; -extern s32 D_800A5E88; -extern s32 D_800A5E90; -extern s32 D_800A5EA0; -extern s32 D_800A5EB0; - -void func_8018FAE0(s32 a0) { - register s32 *s0 __asm__("$16"); - register s32 *s1 __asm__("$17"); - s32 v0; - - s1 = (s32 *)a0; - s0 = &D_800A5E88; - - v0 = rand(); - s0[0] = (v0 & 0x1F) - 0x10; - - v0 = rand(); - D_800A5E90 = (v0 & 0x1F) - 0xC; - - func_80028620(0, s0); - - if (D_801270C8 == 0xB) { - *(s16 *)((u8 *)s1 + 2) = 6; - D_800A5EA0 = -0xE; - func_80028620(1, (void *)((u8 *)s0 + 0x10)); - D_800A5EB0 = 0xA; - func_80028620(2, (void *)((u8 *)s0 + 0x20)); - } -} - - -#include "common.h" - -extern s32 rand(void); -extern void func_80028620(s32, void *); -extern s32 D_801270C8; -extern s32 D_800A5E88; -extern s32 D_800A5E90; -extern s32 D_800A5EA0; -extern s32 D_800A5EB0; - -void func_8018FB8C(void *a0) { - register s32 *s0 __asm__("s0"); - register s32 a0v __asm__("a0"); - s32 *s1 = (s32 *)a0; - s32 tmp; - - tmp = rand(); - s0 = (volatile s32 *)&D_800A5E88; - tmp = (tmp & 0x1F) - 0x10; - s0[0] = tmp; - tmp = rand(); - __asm__("addu %0,$zero,$zero" : "=r"(a0v)); - tmp = (tmp & 0x1F) - 0x14; - D_800A5E90 = tmp; - - func_80028620(a0v, s0); - - if (D_801270C8 == 0xC) { - *(s16 *)((s8 *)s1 + 2) = 0x7; - D_800A5EA0 = 0xE; - func_80028620(1, (void *)((s32)s0 + 0x10)); - __asm__("" : "=r"(s0) : "0"(s0)); - D_800A5EB0 = -0xA; - func_80028620(2, (void *)((s32)s0 + 0x20)); - } -} - - -#include "common.h" - -/* Tag renamed per the project convention (src/shared/engine_types.h already carries - * struct B16_801856E4, B16_80185794, ...): the destination TU pulls in engine_types.h, - * which defines `struct B16 { s32 w[4]; };` at line 295, so a file-scope `struct B16` - * contributed by this draft is a hard "redefinition of `struct B16'" at cc1. A unique - * per-function tag is the sanctioned spelling. */ -struct B16_8018FC38 { s32 w[4]; }; - -/* §183 TYPE-adopted-TU: the destination TU already declares this symbol - * `extern s32 D_800A5E88;` at file scope ABOVE this insertion offset (the - * func_8018FA34 / func_8018FAE0 / func_8018FB8C group all spell it that way), so - * the TU's spelling is adopted verbatim here and the 16-byte view is applied by a - * cast AT THE USE SITE. `&D_800A5E88` is unchanged by the move, so §183.3's - * scalar-vs-array base-register trap does not apply — verified MATCH 43/43. */ -extern s32 D_800A5E88; -extern s32 D_800A5E90; -extern s32 D_800A5EA0; -extern s32 D_800A5EB0; -extern void func_80028620(s32, void *); -extern u8 D_80126D6C; - -void func_8018FC38(s32 a0) { - s32 s1 = a0; - struct B16_8018FC38 *s0; - s32 v0; - - v0 = rand(); - s0 = (struct B16_8018FC38 *)&D_800A5E88; - v0 = (v0 & 0x1F) - 0x10; - s0->w[0] = v0; - v0 = rand(); - - a0 = 0; - v0 = (v0 & 0x1F) - 0xC; - D_800A5E90 = v0; - __asm__("" : "=r"(a0) : "0"(a0)); - - func_80028620(a0, s0); - __asm__("" : "=r"(s0) : "0"(s0)); - - if (D_80126D6C == 0xD) { - *(s16*)(s1 + 0x2) = 0x8; - D_800A5EA0 = -0xE; - func_80028620(1, &s0[1]); - - D_800A5EB0 = 0xA; - func_80028620(2, &s0[2]); - } -} - - -#include "common.h" - -extern s32 rand(void); -extern void func_80028620(s32, void *); -extern s32 D_801270C8; -extern s32 D_800A5E88; -extern s32 D_800A5E8C; -extern s32 D_800A5E90; -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; -extern s32 D_800A5EA0; -extern u8 D_800A5EA5; -extern s32 D_800A5EAC; -extern s32 D_800A5EB0; -extern u8 D_800A5EB4; -extern u8 D_800A5EB5; -extern u8 D_800A5EB6; - -void func_8018FCE4(void *a0) -{ - void *s1; - s32 *s0; - s32 v0; - s32 eac; - register s32 a0v __asm__("$4"); - - s1 = a0; - v0 = rand(); - s0 = (s32 *)&D_800A5E88; - __asm__ __volatile__("" ::: "memory"); - v0 = (v0 & 0x1F) - 0x10; - s0[0] = v0; - - v0 = rand(); - a0v = 0; - __asm__ __volatile__("" ::: "memory"); - v0 = (v0 & 0x1F) - 0x14; - D_800A5E90 = v0; - - func_80028620(a0v, s0); - - if (D_801270C8 == 0xD) { - *(s16 *)((u8 *)s1 + 2) = 9; - s0[0] = 0; - D_800A5E8C = 0xA; - D_800A5E90 = -0xA; - D_800A5E94 = 0xCC; - D_800A5E95 = 0x99; - D_800A5E96 = 0x99; - func_80028620(0, s0); - - D_800A5EA0 = -8; - D_800A5EA5 = 0x19; - func_80028620(1, &s0[4]); - - a0v = 2; - eac = 0x14; - __asm__ __volatile__("" ::: "memory"); - __asm__("" : "=r"(s0) : "0"(s0)); - s0[8] = 0; - __asm__ __volatile__("" ::: "memory"); - D_800A5EAC = eac; - D_800A5EB0 = 0xF; - D_800A5EB4 = 0x4C; - D_800A5EB5 = 0x33; - D_800A5EB6 = 0x7F; - func_80028620(a0v, &s0[8]); - } -} - - -#include "common.h" - -extern void func_80028620(s32, void *); -extern u8 D_80126D6C; -extern s32 D_800A5E90; -extern s32 D_800A5EA0; -extern s32 D_800A5EB0; - -void func_8018FE18(void *a0) { - if (D_80126D6C == 0x11) { - s32 *s0 = &D_800A5E90; - - *(s16 *)((s32)a0 + 0x2) = 0xA; - *s0 = 0xA; - func_80028620(0, (void *)((s32)s0 - 0x8)); - - D_800A5EA0 = 0x8; - func_80028620(1, (void *)((s32)s0 + 0x8)); - - D_800A5EB0 = -0xF; - func_80028620(2, (void *)((s32)s0 + 0x18)); - } -} - - -#include "common.h" - -extern s32 D_801270C8; - -extern s32 D_800A5E88; -extern s32 D_800A5E8C; -extern s32 D_800A5E90; -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; - -extern s32 D_800A5E9C; -extern s32 D_800A5EA0; -extern u8 D_800A5EA4; -extern u8 D_800A5EA5; -extern u8 D_800A5EA6; - -extern s32 D_800A5EAC; -extern s32 D_800A5EB0; -extern u8 D_800A5EB4; -extern u8 D_800A5EB5; -extern u8 D_800A5EB6; - -extern void func_80028620(s32, void *); - -void func_8018FEA0(void *a0) -{ - register s32 *s0 __asm__("$16"); - register s32 s1v __asm__("$17"); - register s32 s2v __asm__("$18"); - register s32 s3v __asm__("$19"); - register s32 a0v __asm__("$4"); - s32 eb0; - - if (D_801270C8 >= 0x14) { - a0v = 0; - __asm__("la %0, D_800A5E88" : "=r"(s0)); - - *(s16 *)((u8 *)a0 + 0x2) = 0xB; - - s3v = 0x16; - s0[0] = 0; - D_800A5E8C = s3v; - D_800A5E90 = 0; - D_800A5E94 = 0xB2; - D_800A5E95 = 0x66; - s1v = 0x33; - D_800A5E96 = s1v; - func_80028620(a0v, s0); - - a0v = 1; - s0[4] = 0; - D_800A5E9C = -0xE; - D_800A5EA0 = -0xE; - D_800A5EA4 = s1v; - D_800A5EA5 = 0; - s2v = 0x4C; - D_800A5EA6 = s2v; - func_80028620(a0v, &s0[4]); - - a0v = 2; - eb0 = 0xF; - __asm__ __volatile__("" ::: "memory"); - s0[8] = 0; - __asm__ __volatile__("" ::: "memory"); - D_800A5EB0 = eb0; - D_800A5EAC = s3v; - D_800A5EB4 = s2v; - D_800A5EB5 = s1v; - D_800A5EB6 = 0x7F; - func_80028620(a0v, &s0[8]); - } -} - - -#include "common.h" - -extern void func_80028620(s32, void *); -extern s32 D_801270C8; -extern u8 D_800A5E94; -extern u8 D_800A5E96; -extern s32 D_800A5E9C; -extern s32 D_800A5EA0; -extern s32 D_800A5EAC; -extern s32 D_800A5EB0; - -void func_8018FFC4(void *a0) { - u8 *s0; - - if (D_801270C8 != 0x1B) { - return; - } - - s0 = &D_800A5E94; - *(s16 *)((s32)a0 + 2) = 0xC; - *s0 = 0xFF; - D_800A5E96 = 0; - func_80028620(0, (void *)((s32)s0 - 0xC)); - - D_800A5E9C = 0; - D_800A5EA0 = -0x18; - func_80028620(1, (void *)((s32)s0 + 4)); - - D_800A5EAC = 0xB; - D_800A5EB0 = 0x1C; - func_80028620(2, (void *)((s32)s0 + 0x14)); -} - - -void func_80190068(s32 *a0) { - *(s16 *)((s32)a0 + 0x2) = 0xC; - } - - - -extern void (*D_80196CFC[])(void); - -void func_80190074(void *a0) { - D_80196CFC[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_800CF854(void); - -s32 func_801900B0(void) { - register s32 r __asm__("$2"); - s32 v; - - v = ((s32 (*)(void))func_800CF854)(); - r = v ? 9 : 8; - return r; -} - - - -extern s32 D_801E4C40; - -void func_801900E0(void) { - D_801E4C40 = 1280; -} - - - -extern s32 D_801E4C40; - -void func_801900F4(void) { - D_801E4C40 = 3796; -} - - - -extern void (*D_80196EA4[])(void); - -void func_80190108(void *a0) { - D_80196EA4[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - - -extern void func_801465C0(void); -extern void func_80146C3C(void); - -extern void func_8001CBDC(s32 a0, s32 a1, s32 a2, s32 a3); - -extern s16 D_80196D30[][2]; -extern u8 D_80196D5C[]; -extern EffectSlot4 D_80196D68[]; -extern u8 D_80196D94[]; - -extern EffectSlot4 D_80196DCC; -extern EffectSlot4 D_80196DF4; -extern EffectSlot4 D_80196DF8; -extern EffectSlot4 D_80196E28; -extern EffectSlot4 D_80196E2C; -extern EffectSlot4 D_80196E5C; -extern EffectSlot4 D_80196E60; -extern EffectSlot4 D_80196E90; -extern EffectSlot4 D_80196E94; - -void func_80190144(void *a0) { - register void *s0 __asm__("$16"); - register void *s1 __asm__("$17"); - - s0 = a0; - s1 = ((void *(*)(void))func_801465C0)(); - if (s1 != 0) { - s32 idx; - u8 uVar1; - - *(s32 *)((s32)s0 + 0x20) = (s32)s1; - idx = *(s32 *)((s32)s0 + 0x2C); - func_8001CBDC((s32)s1, (s32)D_80196D94, D_80196D30[idx][0], D_80196D30[idx][1]); - uVar1 = D_80196D5C[*(s32 *)((s32)s0 + 0x2C)]; - *(s16 *)((s32)s1 + 0x2C) = 3; - *(u8 *)((s32)s1 + 0x27) = uVar1; - *(s16 *)((s32)s0 + 0x6) = 0; - *(s16 *)((s32)s0 + 0xA) = 0x50; - - /* The shift chain below needs a BASIC-BLOCK BOUNDARY before every copy - except the first: gcc-2.7.2 CSE is per-extended-BB, and inside one BB - it reuses the previous copy's DESTINATION address register as the next - copy's SOURCE address (costing the lui/addiu pair the target emits). - `if (c) X else X` supplies the boundary and is cross-jumped away by - jump2 AFTER regalloc, so it costs 0 instructions (128/128). - - The FIRST copy must stay in block 1 with the `lw 0x2C` / `li 0x50` - pair, or the index pseudo crosses a block and becomes a GLOBAL allocno - (regalloc map K8) -- local-alloc then hands $v0 to the 0x50 constant - and global-alloc is left with $v1 (the REGALLOC-PERM $v0<->$v1 swap). - Both must be LOCAL qtys in the same block for the target's assignment. - Its destination is therefore spelled as an INTERIOR ADDRESS of the - neighbouring symbol (idiom 7): `&D_80196E90 + 4 == &D_80196E94`, a - CSE-distinct rtx, so the next copy still recomputes its source - address. Both spellings relocate to 0x80196E94. */ -#define COND (*(s32 *)((s32)s0 + 0x2C) > 0) - *(EffectSlot4 *)((s32)&D_80196E90 + 4) = D_80196D68[*(s32 *)((s32)s0 + 0x2C)]; - if (COND) { D_80196E90 = D_80196E94; } else { D_80196E90 = D_80196E94; } - if (COND) { D_80196E60 = D_80196E90; } else { D_80196E60 = D_80196E90; } - if (COND) { D_80196E5C = D_80196E60; } else { D_80196E5C = D_80196E60; } - if (COND) { D_80196E2C = D_80196E5C; } else { D_80196E2C = D_80196E5C; } - if (COND) { D_80196E28 = D_80196E2C; } else { D_80196E28 = D_80196E2C; } - if (COND) { D_80196DF8 = D_80196E28; } else { D_80196DF8 = D_80196E28; } -#undef COND - D_80196DF4 = D_80196DF8; - D_80196DCC = D_80196DF4; - - *(s16 *)((s32)s0 + 0x2) = *(s16 *)((s32)s0 + 0x2) + 1; - } else { - ((void (*)(void *))func_80146C3C)(s0); - } -} - - -extern void func_80190384(void); - void func_80190344(void) { - func_80190384(); - } - - -extern void func_80146C3C(void); - void func_80190364(void) { - func_80146C3C(); - } - - -#include "common.h" - -extern void func_80017254(void *a0); -extern void func_800176F0(void *a0); -extern u8 D_80196DAC[]; -extern u8 D_80196DD4[]; - -void func_80190384(void) { - u8 *p; - s32 i; - - func_80017254(D_80196DAC); - i = 0; - p = D_80196DD4; - do { - func_800176F0(p); - i++; - p += 0x34; - } while (i < 4); -} - - -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); - void func_801903DC(void *arg0) { - ((void (*)(s32, s32, s32, s32))func_80146994)(0x28, 0, arg0, 0); - } - - -#include "common.h" - -extern s32 D_80126B58; -extern s32 func_8014C050(s32 a0, s32 a1); - -void func_80190408(void) { - s32 t; - - t = func_8014C050((s32)&D_80126B58, 0x28); - if (t != 0) { - *(u16 *)(t + 2) += 1; - } -} - - - -extern void (*D_80196F00[])(void); - -void func_8019044C(void *a0) { - D_80196F00[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_801904B8(s32 arg); - extern void func_80146CA0(void *a0); - void func_80190488(s32 arg0) { - func_801904B8(arg0); - ((void (*)(s32))func_80146CA0)(arg0); - } - - -#include "common.h" - -extern void func_80019064(void *a0); -extern int func_801511E0(int arg); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_80147324(s32 arg0); -extern void func_80146CA0(void *a0); -extern s32 D_80062C14; -extern s32 D_80196EB0; - -s32 func_801904B8(s32 arg) { - s32 *s0 = (s32 *)arg; - - func_80019064(&D_80062C14); - func_801511E0((int)s0); - func_80154274(s0, (s32)&D_80196EB0); - ((s32 *)s0)[0x8d] = 0; - func_80154A74((s32)s0, 0x1c); - func_801477E8(s0, 0xffe00000); - func_80149020(s0); - func_80147324(0x451); - func_80146CA0(s0); -} - - -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80190538); - -extern void func_8014BC44(s32 a0, s32 a1); -extern void func_80151664(void); - -void func_8019084C(s32 a0) -{ - s32 s0 = a0; - - func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; - *(u8 *)(s0 + 0xA8) = 0x20; - ((void (*)(s32))func_80151664)(s0); -} - - - - - - - diff --git a/src/ov_SC02_005/ov_SC02_005_jr_8018EA04.c b/src/ov_SC02_005/ov_SC02_005_jr_8018EA04.c new file mode 100644 index 000000000..1be12cf71 --- /dev/null +++ b/src/ov_SC02_005/ov_SC02_005_jr_8018EA04.c @@ -0,0 +1,4885 @@ +#include "common.h" +#include "../shared/engine_core.h" + +/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== + * The file-scope decl environment from earlier code regions of this object — + * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier + * definition's implied prototype (types first, then decls in original order). + * Decls emit no code => byte-neutral. See cookbook §8c. */ +typedef struct { + s16 f0; + s16 f2; + s16 f4; + s16 f6; +} D_80195AF6_t; +typedef struct { + u8 pad[4]; + s32 field_4; +} SubStruct; +typedef struct { + u8 pad_00[0x20]; + SubStruct *f_20; + u8 pad_24[0xA8]; + void *f_CC; + void *f_D0; + void *f_D4; + u8 pad_D8[0x10]; + s32 f_E8; +} MainStruct; +typedef struct { + SVECTOR_8016E7C8 v[4]; /* 0x00 */ + s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ + u8 f6; /* 0x38 */ + u8 pad[7]; /* -> 0x40 */ +} Prim_8016E7C8; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { u32 w0, w1, w2; } PrimCF90; +typedef struct { u8 *vtx; u32 f4; u32 xx, yy, zz; PrimCF90 *prim, *end; } CellCF90; +typedef struct { s16 vx, vy; } DVEC2_CF90; +typedef struct { s16 vx, vy, vz, pad; } SVEC2_CF90; +typedef struct { s16 m[3][3]; s32 t[3]; } MTX_CF90; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2; } PF3_CF90; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_CF90; +typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_CF90; +typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_CF90; +typedef struct { u8 b[4]; } Blk4_80183FCC; +typedef struct { s32 w[8]; } Blk20_8018454C; +typedef struct { s16 vx, vy, vz, pad; } SVec3_8018454C; +typedef struct { + s16 f0; + s16 f2; + s16 f4; + s16 f6; +} D_80195AF4_t; +typedef struct { + s16 vx, vy, vz, pad; +} SVec_80184828; +struct S0E_80184828 { s16 v; }; +struct S34_80184A8C { u16 v; }; +typedef struct { + u8 pad[0x34]; +} D_80195D74_Entry; +typedef struct { + s16 f0; + s16 f1; + s16 f2; + s16 f3; +} TBL_80186144; +typedef struct { + s16 f0; + s16 f2; + s16 f4; + s16 val; +} Entry_80186A04; +typedef struct { + u8 pad[0x5C]; + u16 f5C; +} F5C_S; +typedef struct { + s16 v; + u8 pad[14]; +} Row16_t; +typedef struct { + u16 x; + u16 y; + u16 z; + u16 w; +} Vec4h_801873FC; +typedef struct { + /* 0x0 */ u16 x; + /* 0x2 */ u16 y; + /* 0x4 */ u16 z; + /* 0x6 */ u16 w; +} Vec4h_80187560; +typedef struct { char b[8]; } Blob8_80187664; +typedef struct { char b[8]; } Blob8_801876B0; +typedef struct { s16 a, b, c, d; } SV892CC; +typedef struct { s32 w[4]; } Blk16_801E2F08; +typedef struct { s32 w[4]; } Blk16_8018A1D8; +typedef struct { char b[8]; } Blob8_8018A4C4; +typedef struct { s32 w[4]; } Blk16_8018A4C4; +typedef struct { s32 w[8]; } Blk20_8018A4C4; +typedef struct { + s16 field_0; + s16 field_2; + s16 field_4; + s16 field_6; + s16 field_8; + s16 field_A; + s16 field_C; + s16 field_E; + s32 field_10; +} LocalStruct_8018A968; +typedef struct { s16 m[3][3]; s32 t[3]; } Mtx8_8018AF58; +typedef struct { s32 vx, vy, vz, pad; } Vec32_8018AF58; +typedef struct { char b[8]; } Blob8_8018B058; +typedef struct { s32 vx, vy, vz, pad; } Vec32_8018B058; +typedef struct { u8 b[4]; } Blk4_8018BDD0; +typedef struct { u8 b[4]; } Blk4_8018CC28; +struct imgrect { u16 x; u16 y; u16 w; u16 h; }; +typedef struct { + s16 field_0; + s16 field_2; + s16 field_4; + s16 field_6; + s16 field_8; + s16 field_A; + s16 field_C; + s16 field_E; + s32 field_10; +} LocalStruct; +extern void func_801458E0(void); +extern s32 D_800AE6AC; +extern s32 D_800AE6B0; +extern s16 D_800B9A0A; +extern u8 D_80078E50; +extern void func_800D185C(u8 *a0); +extern void func_801458E8(void); +extern s32 func_80029504(void); +extern void func_80145B24(void); +extern u8 D_80192E18; +extern u8 D_80192D88; +extern u8 D_80192D64; +extern u8 D_80192D40; +extern u8 D_80192DF4; +extern u8 D_80192DD0; +extern u8 D_80192DAC; +extern u8 D_80192D1C; +extern void func_80145934(void); +extern u8 D_80192EA8; +extern u8 D_80192E84; +extern u8 D_80192E60; +extern u8 D_80192E3C; +extern void func_80145A2C(void); +extern s32 func_800291DC(s32); +extern void func_800291C8(s32, s32); +extern void func_80162120(void); +extern void func_80029124(s32, s32); +extern s32 func_80165A50(s32); +extern void func_80029514(s32); +extern u8 D_800AF630[]; +extern u8 D_80078EC0; +extern s32 D_80126B58; +extern s32 func_80028FBC(void); +extern s32 func_80029000(void); +extern s32 func_80028D9C(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80145BF8(void); +extern s32 func_800291B4(s32 arg); +extern void func_800291A0(s32, s32); +extern void func_80145C54(void); +extern s32 func_80145CEC(); +extern s32 func_80029178(s32 arg); +extern void func_80146014(s32 a0); +extern unsigned char D_801922A0[]; +extern unsigned char D_801922D0[]; +extern unsigned char D_80192320[]; +extern unsigned char D_80192350[]; +extern unsigned char D_80192380[]; +extern void func_80145EE8(s32 param_1); +extern void MoveImage(void *a0, s32 a1, s32 a2); +extern void func_80146074(void); +extern s32 func_80146128(void); +extern void func_80146360(void); +extern void func_801463A0(); +extern void func_8014607C(void); +extern s32 *D_80126B78; +extern u8 D_80078EC1; +extern s32 D_80078EC8; +extern s32 D_80126B9C; +extern s32 D_8011F730; +extern u16 D_801152B8; +extern u16 D_8012693A; +extern u8 D_80126BE0[]; +extern u8 D_801150F0[]; +extern void *memcpy(void *dst, const void *src, u32 n); +extern void func_80146FC4(s32 a0); +extern void func_80150A70(s32 a0); +extern void func_80147098(s32 *a0); +extern void func_8014A638(s32 arg0); +extern s32 func_80155458(s32 a0); +extern s32 func_80029104(void); +extern void func_80029344(void); +extern void func_8014ADE0(s32 a0); +extern void func_8014B350(s32 a0); +extern void func_8014B7A4(s16 *param_1); +extern s32 func_80161D58(s32 a0); +extern void func_80161A90(s32 a0); +extern void func_8014B504(u16 *a0); +extern void func_80149BEC(s32 a0); +extern void func_8014B5D0(s32 *a0); +extern void func_8014C99C(u8 *a0); +extern void func_8014B190(s32 s0); +extern void func_80148648(s32 a0, s32 a1); +extern s32 func_80149228(s32 a0); +extern void func_8014A59C(s32 a0); +extern void func_8016F14C(void *a0); +extern void func_80154418(void *a0); +extern void func_80154BE4(s32 a0); +extern void func_80165694(s32 arg0); +extern void func_801654A8(s32 a0); +extern void func_8014A680(s32 a0); +extern void func_8014A6A8(s32 a0); +extern void func_8014A71C(s32 a0); +extern void func_80172588(s32 *a0); +extern void func_801473DC(s32 *a0); +extern void func_80015978(s32 a0, s32 *a1); +extern void (*D_801923D0[])(void *); +extern u8 D_80126BA4; +extern s32 D_80127098; +extern s32 D_80127094; +extern s32 D_80127090; +extern void func_80146534(void); +extern void func_8001D074(s32 a0, s32 a1); +extern void func_80146554(void); +extern void func_80146578(void); +extern void func_8001CFDC(s32, s32); +extern void func_8014659C(void); +extern void func_8001D074(s32, s32); +extern void func_801465C0(void); +extern void func_801465E4(void); +extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); +extern s32 D_8011F9D0; +extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); +extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 D_8011F750; +extern s32 D_8011F754; +extern u8 * func_801468C8(s32 arg0, u8 arg1); +extern s32 D_8011D030; +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); +extern s32 func_80146B9C(void *a0); +extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); +extern u16 D_8011DA28; +extern s32 func_80146B9C(void * arg0); +extern void func_80146C98(s32 *a0, s16 a1); +extern void func_80146CA0(void *a0); +extern void func_80146CB4(void *a0); +extern void func_80146CC8(s32 a0); +extern void func_80146D30(s32 a0); +extern void func_80146D80(s32 *a0); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80146D90(s32 a0); +extern void func_80146DB8(s32 *a0, s32 *a1); +extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); +extern void func_80146E90(s32 *a0, s32 a1); +extern s32 func_80146E98(s32 a0); +extern void func_80015954(s32 a0, s32 a1); +extern void func_80149374(s32 a0, s32 a1); +extern void func_80146F58(s32 a0, s32 a1); +extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); +extern s16 func_8012A68C(void); +extern s16 func_8012A758(void); +extern void func_8004978C(s16 *a0, void *a1); +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern u8 D_80126DB0[]; +extern u16 D_80126DB6; +extern void func_8014704C(s32 *a0); +extern s32 func_80147054(void *a0); +extern void func_80147060(u8 * a0); +extern void func_8014706C(void *arg0); +extern void func_80147078(s32 *a0, s16 a1); +extern void func_80147084(s32 *a0); +extern void func_8014708C(void *arg0); +extern s32 func_801470A0(void *a0); +extern void func_801470AC(s32 *a0); +extern void func_801470B4(s32 arg0); +extern void func_801470C0(s32 a0); +extern void func_80147118(s32 a0); +extern s16 D_80126BB8; +extern s16 D_80126BBA; +extern s16 D_80126BBC; +extern void func_80147264(s32 a0); +extern void func_80147290(void); +extern void func_801472B4(void *a0); +extern s32 func_801472C8(struct S *a0); +extern void *D_8012707C; +extern void func_801472DC(void); +extern void func_801472F0(void *a0); +extern void func_80147364(u16, s32); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_801473EC(s32 *a0); +extern void func_80147460(s32 a0); +extern void func_80147514(); +extern void func_80147628(s32 a0); +extern void func_80147478(s32 a0); +extern void func_801474D8(s32 *a0); +extern void func_801474EC(s32 *a0); +extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); +extern s32 func_800129CC(s32 a0, s32 a1); +extern void func_80147514(s32 arg0); +extern void func_80013F3C(s32 a0); +extern void func_80012558(s32 a0, s32 a1); +extern void func_800126C4(s32 a0, s32 a1); +extern void func_800123F0(s32 a0, s32 a1); +extern void func_80147718(s32 a0); +extern void func_80147788(void *a0, s32 a1); +extern void func_801477A8(void *a0, s32 a1); +extern void func_801477C8(void *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80147814(s32 a0, s32 a1); +extern void func_80147928(int a0, int a1); +extern void func_8014799C(int a0, int a1); +extern void func_80147A10(int a0, int a1); +extern void func_80147860(int a0, int a1, int a2, int a3); +extern void func_80147948(s32 a0, s32 a1, s32 a2); +extern void func_801479BC(s32 a0, s32 a1, s32 a2); +extern void func_80147A30(s32 a0, s32 a1, s32 a2); +extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147948(int a0, int a1, int a2); +extern void func_801479BC(int a0, int a1, int a2); +extern void func_80147A30(int a0, int a1, int a2); +extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147A84(s32 arg0); +extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147AAC(s32 arg0); +extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80147B5C(s32 a0, void *a1); +extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern void func_80147B18(s32 a0); +extern void func_80147B5C(s32 arg0, void *arg1); +extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147DC0(s32 a0, s32 a1); +extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_80147F50(s32 arg0); +extern void func_80148038(s32 a0, s32 a1); +extern s32 ratan2(s32 a0, s32 a1); +extern s32 csqrt(s32 a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80148094(int param_1, short *param_2, int *param_3); +extern void func_801485B8(s32 a0, s32 a1, s32 a2); +extern void func_801484B0(s32 a0, s32 a1); +extern s32 func_80154358(void *a0); +extern void func_801484E8(s32 a0, s32 a1); +extern void func_80148534(s32 a0, s32 a1); +extern void func_8014856C(s32 a0, s32 a1); +extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); +extern void func_80148634(void *a0); +extern u8 D_800B9A64; +extern s32 func_80014DC0(); +extern s32 func_80014D68(); +extern s32 func_80014D94(); +extern s32 func_80014CF8(); +extern void func_800120DC(); +extern s32 func_800CF8B4(); +extern u16 func_801487F4(s32 *a0); +extern u16 func_80148800(s32 *a0); +extern u8 func_8014880C(s32 *a0); +extern u16 func_80148818(s32 *a0); +extern s32 func_80047D3C(s32 a0); +extern s32 func_80148824(void *arg0); +extern s32 func_801488A8(u8 *a0); +extern s32 func_8014891C(s32 a0); +extern s32 func_80148980(u8 *a0); +extern s32 func_801489E8(s32 a0); +extern s32 func_80148A48(s32 a0); +extern int func_80148AFC(void *a0); +extern void func_80148AAC(u8 *a0); +extern s32 func_80148C18(void); +extern s32 func_80148C20(s32 a0, s16 a1); +extern s32 func_80148C34(s32 a0, s32 a1); +extern s32 func_80148C4C(s32 a0, s32 a1); +extern s32 func_80148C64(s32 a0, s32 a1); +extern s32 func_80148C7C(void); +extern s32 func_80148C84(s32 a0, s32 a1); +extern s32 func_80148C9C(s32 a0, s32 a1); +extern s32 func_80148CB4(s32 a0, s32 a1); +extern s32 func_80148CCC(s32 a0, s32 a1); +extern s32 func_80148CE4(void); +extern s32 func_80148CEC(void); +extern s32 func_80148CF4(s32 a0, s32 a1); +extern s32 func_80148D0C(s32 a0, s32 a1); +extern s32 func_80148D24(void *a0, int a1); +extern s32 func_80148D3C(void); +extern s32 func_80148F60(void); +extern s32 func_80148F68(s32 a0); +extern s32 func_80148F74(s32 a0); +extern s32 func_80148F80(s32 a0); +extern s32 func_80148F8C(s32 a0); +extern s32 func_80148F98(void); +extern s32 func_80148FA0(s32 a0); +extern s32 func_80148FAC(s32 a0); +extern s32 func_80148FB8(s32 a0); +extern s32 func_80148FC4(s32 a0); +extern s32 func_80148FD0(void); +extern s32 func_80148FD8(void); +extern s32 func_80148FE0(s32 a0); +extern s32 func_80148FEC(s32 a0); +extern s32 func_80148FF8(s32 a0); +extern s32 func_80149004(void); +extern void func_8014900C(s32 *a0); +extern void func_80149020(s32 *a0); +extern void func_80149034(s32 *a0); +extern void func_80149048(s32 *a0); +extern void func_8014905C(u8 *a0); +extern void func_801490E0(s32 *a0, s16 a1); +extern void func_801490E8(s32 *a0, s16 a1); +extern void func_801490F0(s32 *a0, s16 a1); +extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); +extern void func_801490F8(s32 a0, s32 a1); +extern s32 func_801491C4(s32 a0); +extern s32 func_80149184(s32 a0); +extern s32 D_801151D4; +extern void func_80149204(s32 *a0); +extern void func_80149210(s32 a0, s32 a1); +extern s32 func_80149284(s32 *a0, s32 a1); +extern void func_80149350(s32 arg0); +extern void func_80149290(s32 a0); +extern void func_8012F14C(s32 a0, s32 a1, s32 a2); +extern void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +extern void func_8012F038(int param_1, short *param_2, short *param_3); +extern void func_8014942C(s32 arg0); +extern void func_8012EF70(s32 a0, s32 a1); +extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012EFB8(s32 a0); +extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014964C(s32 param_1, s32 param_2); +extern s32 func_801496D4(void *a0); +extern void func_8015AD08(); +extern void func_80149704(void); +extern void func_8015ACC4(); +extern void func_80149724(void); +extern u8 D_80078EBF; +extern s32 func_80149744(struct S_80149744 *a0); +extern void func_8015F7A0(); +extern void func_80149788(void); +extern void func_801653B8(); +extern void func_80149864(void); +extern s16 currentLocationId; +extern s32 func_8016F1AC(void); +extern s32 func_80149884(void); +extern void func_80160B00(); +extern void func_801498C0(void); +extern s32 func_80149AA8(s32 *a0); +extern s32 func_80149B54(s32 *a0); +extern void func_80146750(void *a0); +extern s32 func_801498E0(s32 *a0); +extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +extern u8 D_80126B5C; +extern s32 func_80149954(s32 s0); +extern s32 func_80149A64(s32 *a0); +extern void func_8015DAC4(s32 *a0); +extern void func_8015554C(s32 *a0); +extern void func_80149AD4(s32 *a0); +extern void func_80149B14(s32 *a0); +extern u8 func_8014BEF8(void); +extern s32 func_80149B54(s32 * arg0); +extern void func_8015DE24(s32 *a0); +extern void func_80157510(s32 *a0); +extern void func_80149BAC(s32 *a0); +extern s32 func_80029178(s32 a0); +extern s32 func_80149C08(s32 arg0); +extern void func_801577C8(); +extern void func_80149C94(void); +extern void func_80157D20(void); +extern void func_80149CB4(void); +extern s32 func_80149CD4(s32 a0); +extern u8 func_8014B5B8(s32 *a0); +extern s32 func_80149D10(s32 a0); +extern s32 func_80149E94(s32 a0); +extern s32 func_80149DD8(s32 a0); +extern s32 func_80149D9C(s32 a0); +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80192498[]; +extern u8 D_80078E78[]; +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); +extern void func_8014A1B0(s32 a0, s32 a1); +extern s32 func_8014A048(s32 param_1); +extern u16 func_80156370(u16 a0); +extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +extern void func_8015D4B4(); +extern void func_8014A218(void); +extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); +extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); +extern s32 func_8014A238(s32 arg0); +extern s32 func_8014A2E4(s32 a0); +extern void func_8014A380(s32 a0, s32 a1); +extern s16 D_801152B0; +extern s16 D_801152B4; +extern s32 func_8014A3E0(struct S_8014A3E0 *a0); +extern s32 func_8014A454(s32 a0); +extern s32 func_8014A4B4(void *a0); +extern void func_8015EDD4(); +extern void func_8014A4FC(void); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern void func_8015E184(); +extern void func_8014A830(void); +extern s32 func_80029AF4(void); +extern s32 func_8014A850(s32 param_1); +extern void func_8014AA04(s32 a0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern s32 func_80165A20(s32 a0); +extern void func_8014AB7C(); +extern void func_8014AC10(); +extern void func_8014AA28(void); +extern void func_8014AB5C(void); +extern void func_80162CCC(void); +extern void func_8014AB7C(s32 arg0); +extern void func_8014ABF0(void); +extern void func_80016714(void *a0, s32 a1); +extern void func_8014AC10(s32 arg0); +extern void func_8014ACC0(s32 a0, s32 a1); +extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); +extern void func_8014ACE8(void *a0, s32 a1, s32 a2); +extern void func_80146AFC(void *a0); +extern void func_8014ADA8(s32 a0, s32 a1); +extern void func_8014AD7C(s32 a0); +extern s32 D_80078E8C; +extern void func_8014B034(s32 arg0); +extern void func_8014B00C(s32 arg0); +extern void func_8014B084(void); +extern s16 D_80078E90; +extern void func_8014B034(s32 a0); +extern u16 D_80078EAC; +extern u8 D_80078EBA; +extern void func_800D10EC(void); +extern void func_8002AC98(void); +extern s32 func_8014B154(s32 *a0); +extern void func_8014B12C(void); +extern void func_8014B2F8(void); +extern void func_8014B4C4(void); +extern void func_8014B160(s32 a0); +extern s32 func_8016F1C4(void); +extern s16 D_80078E96; +extern s16 D_80078EB8; +extern u16 D_80078EA6; +extern void func_8014B2A8(void); +extern void func_8014B310(void); +extern void func_8014B2D0(void); +extern s32 D_80078E94; +extern s32 D_80078ECC; +extern void func_8014B33C(void); +extern u8 D_80062BF4[]; +extern void func_8014BC80(s32 a0, s32 a1); +extern void func_80019064(void *a0); +extern s32 D_80078E98; +extern void func_80166244(); +extern void func_8014B4D4(void *a0); +extern s16 D_80078E9A; +extern u8 D_80126D1C; +extern s32 D_80126D74; +extern void func_8014B598(s32 a0, s32 a1); +extern void func_8014B5B0(s32 *a0); +extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); +extern void func_8014B5D8(s32 s1); +extern s32 D_80078E9C; +extern s32 D_80078ED0; +extern void func_8014B6F0(s32 a0, s32 a1); +extern void func_8014B768(s32 a0, s32 a1); +extern void func_8014B944(s32 a0, s32 a1, s32 a2); +extern s32 D_80078EA4; +extern u16 D_80078EB2; +extern s16 D_80078EB4; +extern void func_8014BB0C(void); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_8014BC0C(s32 a0, s32 a1); +extern void func_8014BC44(s32 a0, s32 a1); +extern u8 D_800B9A17; +extern void func_8014BCC0(s32 a0, s32 a1); +extern u16 D_80078EB6; +extern s32 func_8014BCEC(s32 a0, s32 a1); +extern void func_8014BD24(s32 a0, s32 a1); +extern void func_8014BD60(s32 param_1, s32 param_2); +extern void func_8014BD98(s32 a0, u16 a1); +extern void func_8014BDC8(void); +extern void func_8014BDE0(void); +extern s32 func_8017267C(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern void func_80029ED4(s32 a0); +extern void func_8014BDE8(s32 a0); +extern void func_8014BE78(void); +extern void func_8014BE9C(void); +extern void func_80029124(s32 a0, s32 a1); +extern void func_8014BEC0(void); +extern void func_8014BF18(s32 a0); +extern void func_8014BF48(void); +extern u8 func_8014BF6C(void); +extern void func_8014BF8C(u8 arg0); +extern void func_8014BFB0(void); +extern u8 func_8014BFD4(void); +extern void func_8014BFF4(s32 a0, s32 a1); +extern void func_8014C010(s32 a0, s32 a1); +extern s32 func_8014C050(s32 a0, s32 a1); +extern s32 func_8014C088(s32 a0, s32 a1); +extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); +extern s32 func_8014C118(void * a0, s32 a1, s32 a2); +extern s32 func_8014C168(s32 * param_1, s32 param_2); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern u8 D_80192520[]; +extern void func_8014C1A0(s32 arg0, s32 arg1); +extern s32 func_80013328(s32 a0, s32 a1); +extern s32 func_8014C59C(void *a0, void *a1); +extern s32 func_8014C308(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); +extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4); +extern s32 ratan2(s32 dx, s32 dy); +extern u8 D_80192528; +extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); +extern s16 func_8014C5D0(s32 a0, s32 a1); +extern s32 func_8014C5FC(s32 a0, s32 a1, void * a2); +extern u8 D_80126D17; +extern void func_8014C6AC(void); +extern void func_8014C6C0(void); +extern u8 D_80126D1E; +extern void func_8014C6D0(void); +extern void func_8014C6E0(void); +extern s32 func_8014C860(s32 a0, s32 a1); +extern void func_8014C8C8(s32 a0, s32 *a1); +extern void func_8014C88C(s32 a0); +extern void func_8014C8C8(s32 dst, s32 * src); +extern void func_8014C8F0(s32 arg0); +extern u8 D_801151F0[]; +extern s32 func_8014C918(s32 a0, s32 a1); +extern s32 D_80126B50; +extern void func_8014C968(void); +extern void func_8014C978(void); +extern s32 func_8014C98C(void); +extern void func_80139914(s32 a0); +extern s32 func_8014CA00(s32 a0); +extern u16 func_8014CA70(s32 a0, s32 a1); +extern s32 func_8014CA14(s32 a0, s32 a1); +extern u16 func_8014CAE4(s32 *a0, s32 a1); +extern s32 func_8014CA88(s32 *a0, s32 a1); +extern s32 func_8014CAFC(void); +extern s32 func_8014CB0C(void); +extern s32 func_8014CB1C(void); +extern u8 D_80126D1F; +extern s32 func_8014CB2C(void); +extern s32 func_8014CB58(void); +extern u8 D_80126D1D; +extern void func_8014CB68(void); +extern s32 func_8014CB7C(void); +extern s32 func_8014CB8C(void); +extern short D_80126C9E; +extern void func_8014CB9C(struct Packed8 *a0); +extern s32 D_80126CDC; +extern void func_8014CBD8(void); +extern s16 D_80126CC4; +extern void func_8014CBE8(void); +extern void func_8014CBF8(void *a0); +extern void func_8014D3E0(s32 a0); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); +extern s32 func_8014D12C(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern void func_8014D3E0(s32 _arg0); +extern void func_8014D610(s32 a0, void *a1, void *a2); +extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D790(s32 a0); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern void func_8014DF94(s32 arg0); +extern void func_8014DF3C(void); +extern s32 func_8014E284(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E048(s32 a0, u16 *a1, u16 *a2); /* u16*: def lhu semantics (T5b reconcile; ptr param type codegen-neutral for the caller) */ +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern u8 D_801152A8[]; /* canonical TU type (engine_core) — read via *(u16*) cast */ +extern s16 D_801152AC; +extern s32 func_8014E048(s32 param_1, u16 * param_2, u16 * param_3); +extern void func_8014E48C(s32 a0); +extern void func_8014E434(void); +extern void func_8014E5B4(s32 a0, void *a1, void *a2); +extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); +extern void func_8014E6F8(struct SubE6F8 *a0); +extern void func_8014E6A0(void); +extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014E83C(s32 arg0, s16 * arg1, s16 * arg2); +extern void func_8014E934(s32 _arg0); +extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); +extern s32 func_8014E98C(void *a0); +extern u16 D_800B99DA; +extern s32 D_801150D8; +extern s16 D_801152AA; +extern u8 D_80126720[]; +extern s16 D_80126724; +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_8014ED80(struct SubED80 *a0); +extern int D_801E3128; +extern void func_8014ED28(s32 _arg0); +extern s32 func_8014EE14(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014EE14(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F24C(struct SubF24C *a0); +extern void func_8014F1F4(void); +extern s32 func_8014F2E0(s32 a0, s16 *a1, s16 *a2); +extern s32 func_8014F2E0(s32 arg0, s16 * arg1, s16 * arg2); +extern s32 func_8014F4C0(); +extern s32 func_8014F468(void); +extern int func_8014F74C(); +extern int func_8014F6F4(void); +extern u8 D_800D3918[]; +extern u8 D_801152A8[]; +extern s32 D_801152BC; +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern s32 D_801E312C; +extern void func_8014FA04(s32 a0); +extern s32 func_8014FBC0(); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +extern void func_80150170(void *a0); +extern s32 func_8014FE60(void *a0); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_8014FE60(void *e); +extern s32 func_80134510(s32 arg); +extern s32 func_80150150(s32 a, s32 b); +extern s32 func_80150460(s32 a, s32 b); +extern void func_801504D8(u16 *a0); +extern s32 func_80150480(s32 _arg0); +extern s32 func_80150528(void *a0, void *a1, void *a2); +extern s32 func_80150528(void *arg0, void *arg1, void *arg2); +extern s32 func_801506A4(s32 a0, s32 a1); +extern s32 func_801505FC(s32 a0); +extern s32 func_801506A4(s32 arg0, s32 arg1); +extern void func_80150820(s32 a0, s32 a1); +extern void func_8015086C(int param_1); +extern s32 func_801508B4(s32 a0); +extern s32 func_8015094C(s32 a0); +extern short func_801508F8(s32 a0); +extern s32 D_80192558; +extern s32 D_80126990; +extern s32 D_80126994; +extern s32 func_80021174(s32 a0, s32 a1); +extern s32 func_8015094C(s32 param_1); +extern void func_80150B9C(void); +extern s32 func_80151184(s32 a0, s32 a1, s32 a2); +extern s32 func_80150BA4(s32 a0); +extern s32 func_801619D0(void *a0); +extern void func_80150BC8(s32 *a0); +extern s32 func_80150480(s32 a0); +extern u16 D_800AE6DC; +extern void func_80150C48(s32 a0); +extern int func_80151184(int arg, int a1, int a2); +extern int func_80150CA0(int arg); +extern void func_80150EC4(s32 a, s32 b); +extern void func_80150CC4(s32 a); +extern void func_80150CE4(s32 a); +extern void func_80150D04(s32 a); +extern void func_80150D24(s32 a); +extern void func_80150D44(s32 a); +extern void func_80150D64(s32 a); +extern void func_80150D84(s32 a); +extern void func_80150DA4(s32 a); +extern void func_80150DC4(s32 a); +extern void func_80150DE4(s32 a); +extern void func_80150E04(s32 a); +extern void func_80150E24(s32 a); +extern void func_80150E44(s32 a); +extern void func_80150EC4(s32 a0, s32 a1); +extern void func_80150E64(s32 a0); +extern void func_80150E84(s32 a0); +extern void func_80150EA4(s32 a0); +extern u8 D_800AE6C0; +extern s16 D_800AE6C8; +extern s16 D_800AE6CA; +extern s16 D_800AE6CC; +extern s32 D_800AE6C4; +extern s16 D_800AE6CE; +extern u8 D_800AE6BE; +extern u8 D_801201F8[]; +extern void func_80150F78(void); +extern void func_80150F80(s32 a0); +extern int func_80150FB4(int arg); +extern void func_80150FD8(s32 a0); +extern int func_80151014(int arg); +extern void func_80151038(s32 a0); +extern int func_80151070(int arg); +extern int func_80151094(int arg); +extern void func_801510B8(void); +extern void func_801510C0(void); +extern int func_801510C8(int arg); +extern int func_801510EC(int arg); +extern s32 func_8012DB84(void); +extern s32 func_80151110(void); +extern void func_80151130(void); +extern int func_80151138(int arg); +extern void func_8015115C(s32 *a0, s16 a1); +extern s32 func_80151164(s32 a0, s32 a1); +extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); +extern void func_801511A8(u8 *a0); +extern void func_801511C4(u8 *a0); +extern int func_80151204(int arg, int a1); +extern int func_801511E0(int arg); +extern int func_80151204(int a0, int a1); +extern void func_80151238(void *a0); +extern void func_8015126C(u16 *p); +extern void func_80151780(s32 a0); +extern void func_801516F0(s32 *a0); +extern void func_8015173C(s32 *a0); +extern s16 D_8011DB1A; +extern s32 D_80127518; +extern s32 D_801151FC; +extern s32 func_801725CC(u8 *a0); +extern s32 func_80029D3C(void); +extern void func_80151878(void); +extern void func_80153B58(s32 *a0); +extern s32 func_80151880(s32 a0); +extern s32 func_801518D8(s32 a0); +extern s32 func_80151944(void); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern s32 func_8014F3E8(s32 a0); +extern void func_801519C8(s32 a0); +extern void func_80151980(s32 a0); +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801519C8(s32 arg0); +extern void func_80151C54(s32 a0); +extern void func_801542DC(s32 *a0, s32 a1); +extern void func_8015BDD0(s32 *a0); +extern void func_80165718(s32 a0); +extern u8 D_800D46E4[]; +extern void func_80151AE4(s32 arg0); +extern void (*D_80192600[])(void); +extern void func_80151D24(void *a0); +extern void func_80151DB0(s32 a0); +extern void func_80151D60(void *a0); +extern s32 func_80172630(u8 *a0); +extern s32 D_80062C14; +extern void func_80151DB0(s32 param_1); +extern void func_80151E78(s32 *a0); +extern void func_80151ECC(struct S80151ECC *a0); +extern void func_80151FB4(s32 a0); +extern void func_80151F38(s32 *a0); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); +extern void (*D_80192624[])(void); +extern void func_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(s32 a0); +extern void func_80147324(s32 a0); +extern u8 D_80062C04[]; +extern M2C_UNK D_80192614; +extern void func_801520DC(s32 arg0); +extern void func_801470B4(s32 a0); +extern void func_8015369C(s32 a0); +extern void func_80152194(s32 *a0); +extern s32 func_801536DC(s32 a0); +extern void func_8015220C(s32 a0); +extern s32 func_80153800(s32 a0); +extern void func_801522CC(s32 a0); +extern void func_80152254(s32 *a0); +extern void (*D_80192638[])(void); +extern void func_80152370(void *a0); +extern void func_801523F4(s32 a0); +extern void func_801523AC(s32 a0); +extern void func_8001382C(s32 a0, void *a1, void *a2); +extern u8 D_80192644[]; +extern void func_801523F4(s32 arg0); +extern void func_801525F4(int); +extern s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80152500(int param_1); +extern void func_801525F4(s32 a0); +extern void (*D_80192654[])(void); +extern void func_80152698(void *a0); +extern void func_80152714(s32 a0); +extern void func_801526D4(s32 a0); +extern void func_80152790(s32 a0); +extern void (*D_8019266C[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8019265C; +extern void func_801528B0(s32 arg0); +extern void func_8015294C(s32 a0); +extern void func_80152A08(s32 a0); +extern void func_80152AC8(s32 a0); +extern void func_80152A50(s32 *a0); +extern void (*D_80192680[])(void); +extern void func_80152B6C(void *a0); +extern void func_80152BF0(s32 a0); +extern void func_80152BA8(s32 a0); +extern void func_80152C80(s32 *a0); +extern void func_80152C40(s32 *a0); +extern void (*D_8019269C[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8019268C; +extern void func_80152DA8(s32 arg0); +extern void func_80152E4C(s32 a0); +extern void func_80152EFC(s32 a0); +extern void func_80152FBC(s32 a0); +extern void func_80152F44(s32 *a0); +extern void (*D_801926B0[])(void); +extern void func_80153060(void *a0); +extern void func_801530E4(s32 a0); +extern void func_8015309C(s32 a0); +extern void func_80155440(s32 *a0); +extern void func_801530E4(s32 arg0); +extern void func_80153150(struct S80153150 *a0); +extern void func_801531BC(s32 a0); +extern void func_8015327C(s32 a0); +extern void func_80153204(s32 *a0); +extern void (*D_801926C4[])(void); +extern void func_80153320(void *a0); +extern void func_801533A4(s32 a0); +extern void func_8015335C(s32 a0); +extern void func_80153410(s32 *a0); +extern void func_80153490(s32 a0); +extern void func_80153550(s32 a0); +extern void func_801534D8(s32 *a0); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_80153978(s32 a0, u16 *src); +extern s32 func_80133784(s32 a0, void *src, s32 dst); +extern s32 func_801539F8(s32 a0, void *a1); +extern s32 func_801539F8(s32 a0, void * a1); +extern s32 func_8016DA04(s32 a0); +extern s32 func_80153BD8(s32 a0); +extern s32 func_80153BF0(s32 a0); +extern void func_80153C18(void); +extern u16 D_8011F748; +extern void func_80153C30(void); +extern void func_80153C74(s16 a0, s16 a1); +extern s16 D_8011DB18; +extern void func_80153C44(int a0, int a1, s16 a2); +extern s16 D_8011DB0C; +extern s32 D_80115210; +extern void func_80153C8C(void); +extern void func_80153C9C(void); +extern s32 func_80153CBC(void); +extern s32 D_801926D8; +extern void (*D_80192700[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_801926E0; +extern void func_80153D7C(s32 param_1); +extern void func_8015410C(void); +extern void func_80153E00(s32 param_1); +extern void func_80151664(void); +extern void func_80154134(u8 *a0); +extern void func_80154190(u8 *a0, s32 a1); +extern void func_80154150(s32 a0, s32 a1); +extern void func_80154218(u8 *a0, s32 a1, s32 a2); +extern void func_801541D8(u8 *a0, s32 a1, s32 a2); +extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); +extern void func_801542A4(); +extern void func_801542A4(s32 *a0, s32 a1); +extern void func_8015430C(); +extern void func_8015430C(u8 *arg0, s32 arg1, s32 arg2); +extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); +extern s32 func_80154358(void * arg0); +extern void func_80154AB4(s32 a0, s32 a1); +extern void func_80154B20(s32 a0, s32 a1, s32 a2); +extern void func_80154AE0(s32 a0, s32 a1, s32 a2); +extern void func_80154B7C(u8 *a0, s32 a1); +extern void func_80154B4C(u8 *a0, s32 a1); +extern void func_80154BC8(void *a0, s32 a1, s32 a2); +extern void func_80154B98(void *a0, s32 a1, s32 a2); +extern u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154ED8(s32 a0, s32 a1); +extern void func_80154F9C(s32 a0); +extern void func_800183E0(s32 a0); +extern void func_801550FC(s32 arg0); +extern void func_8001D150(s32, s32); +extern void func_8001D130(int, int); +extern void func_80155150(int param_1); +extern s32 D_800DE2A4[]; +extern void func_801552F4(s32 a0); +extern void func_80155344(s32 a0); +extern s32 func_80155394(s32 *a0); +extern void func_801553A8(s32 *a0); +extern s32 func_80029178(s32); +extern int (*D_8019274C[])(void); +extern s32 func_80155458(s32 param_1); +extern s32 func_801659DC(u8 *a0); +extern s32 func_801554B8(void *arg0); +extern void func_801555F4(void *a0); +extern void func_80155518(s32 *a0); +extern void func_80155580(void *a0); +extern void (*D_80192750[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +extern s32 func_80155800(s32 arg0); +extern int func_80155A44(int param_1); +extern int func_80161208(); +extern u8 D_800D4DA8[]; +extern void func_80155B20(s32 *a0); +extern s32 D_800D4DB4; +extern void func_80155B9C(s32 a0); +extern u8 D_800D4DD4[]; +extern void func_80155C0C(s32 *a0); +extern void func_8014ED28(s32 a0); +extern int func_80155FF8(int arg, int a1); +extern s32 D_800D4DF4; +extern void func_80155C64(s32 a0); +extern void func_8015E880(s32 *a0); +extern void func_80155D70(s32 param_1); +extern void func_80155E30(void *a0); +extern s32 func_80161208(); +extern void func_80155EA4(void *arg0); +extern void func_80155F58(void); +extern s32 func_80155F80(); +extern s32 func_80155F60(void); +extern s32 func_80155F80(s32 a0); +extern int func_80155FB0(int arg, int a1); +extern int func_80155FD4(int arg, int a1); +extern int func_80156044(int arg, int a1); +extern s32 func_80029B4C(s32 a0, s32 a1); +extern s32 func_80029BC8(s32 a0, s32 a1); +extern s32 func_80029C44(s32 a0, s32 a1); +extern s32 func_8015640C(s32 a0, s32 a1); +extern s32 rand(void); +extern u32 func_8015616C(s32 param_1, u16 param_2); +extern u16 func_80156370(u16 param_1); +extern s32 func_801564B0(s32 a0); +extern s32 func_8002A1B4(void); +extern s32 func_8002A400(void); +extern s32 func_8002A670(void); +extern s32 func_8002A8E0(void); +extern s32 D_801151E0[]; +extern s32 func_801565C0(void); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern u8 D_8011DAD8[]; +extern s32 func_8014C568(s16 *a0, s16 *a1); +extern void func_801567BC(s32 a0); +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80192BB4[]; +extern void func_80156A1C(s32 param_1, s32 param_2); +extern s32 D_801150E0[]; +extern void func_80156A88(s32 a0, s32 a1); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *param_3); +extern void func_80156ECC(int param_1, int param_2, int param_3, int param_4, int param_5); +extern void func_80156FA8(s16 *param_1, s16 *param_2, s16 *param_3); +extern void func_80157158(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern s32 func_80135004(s32 a0, void *a1, s32 a2); +extern u32 func_801571C4(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801575E4(void *a0); +extern void func_801574DC(s32 *a0); +extern void func_80157544(void *a0); +extern void (*D_80192BC4[])(void); +extern void func_8014CC28(s32 a0); /* defined */ +extern s32 func_8014F3E8(s32 a0); /* declared */ +extern void func_8015BDD0(s32 *a0); /* defined */ +extern void func_801575E4(void *a0); /* defined */ +extern void func_80157580(s32 arg0); +extern u8 D_800D4F14[]; +extern void func_801576A8(void *arg0); +extern s32 func_8015773C(u8 *a0); +extern s32 func_8015771C(u8 *a0); +extern s32 func_8015773C(u8 * arg0); +extern int D_801E3160; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80192BEC[])(void); +extern void func_80157808(void *param_1); +extern void func_80157880(s32 a0); +extern s32 func_801725A4(u8 *a0); +extern u8 D_800D5128; +extern u8 D_80192BCC; +extern void func_801578C0(s32 param_1); +extern void func_80147A84(int); +extern void func_80148038(int, int); +extern void func_80147460(int); +extern void func_80146D90(int); +extern void func_80161450(void *a0); +extern void func_80157A8C(int); +extern void func_80154A74(int, int); +extern unsigned char D_800D5178; +extern unsigned char D_80192BDC; +extern void func_8015795C(int param_1); +extern void func_80161D20(s32 a0, s32 a1); +extern void func_80157A8C(s32 a0); +extern void func_8016706C(s32 a0); +extern u8 D_800D51AC[]; +extern void func_80157AC8(s32 param_1); +extern void func_80157B74(int param_1); +extern void func_8016158C(void *a0); +extern void func_8015BE04(s32 *a0); +extern void func_80157BC8(s32 a0); +extern void func_80157CCC(s32 a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *a0); +extern void func_80157D74(u16 *a0); +extern void (*D_80192C2C[])(void); +extern void func_80157E38(void *); +extern void func_80157E00(void *a0); +extern void func_80157E38(void * a0); +extern s32 func_80157F64(s32 *a0); +extern s32 func_80156600(void *a0); +extern void func_80157EA4(void *a0); +extern void (*D_80192C34[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80192C00; +extern void func_80158038(void * param); +extern u8 D_800D524C[]; +extern void func_80161418(void *a0); +extern void func_801580B4(s32 a0); +extern void func_801581AC(s32 a0); +extern void (*D_80192C40[])(void); +extern void func_8015824C(void *a0); +extern void func_801582C0(void *); +extern void func_80158288(void *a0); +extern u8 D_800D52A8[]; +extern void func_801585A4(s32 *a0); +extern void func_801582C0(void *a0); +extern s32 func_801585AC(s32 *a0); +extern u8 D_800D52E8[]; +extern void func_80158344(s32 *a0); +extern s32 func_801615C4(void *a0, s32 a1); +extern u8 D_80192C10; +extern u8 D_800D533C; +extern void func_80158434(s32 param_1); +extern void func_80158548(s32 param_1); +extern void func_801585EC(u8 *a0); +extern void func_80158794(void); +extern s32 D_801E3168; +extern s32 D_801E3174; +extern s32 D_801E3178; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80192C7C[])(s32 *); +extern void func_80158AE4(void *a0); +extern void func_80158AB4(void *a0); +extern void func_8016F264(void); +extern void func_80165840(void); +extern void func_801658DC(void); +extern void func_80165A78(s32); +extern void func_80158AE4(void * a0); +extern M2C_UNK D_800D58D8; +extern void func_80158BB0(void *arg0); +extern s32 func_80159404(s32 a0, s32 a1); +extern void func_80158C40(s32 *a0); +extern void func_80158CD8(s32 *a0); +extern s32 func_80159434(s32 a0, s32 a1); +extern void func_80158D60(s32 a0); +extern M2C_UNK D_800D5904; +extern void func_80158E24(s32 *a0); +extern s32 D_80192C50[]; +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80158F00(int param_1); +extern u8 D_80110C3C[]; +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80158FA4(s32 param_1); +extern s32 func_801399F0(s32 a0); +extern u8 D_80110C94[]; +extern u8 D_80110CD4[]; +extern void func_80159070(void *a0); +extern s32 func_80029A94(s32); +extern void func_80175454(void); +extern void func_800298BC(void *); +extern void func_8002992C(s32); +extern void func_800CF804(void); +extern void func_800CF818(void); +extern u8 D_80110D0C[]; +extern void func_80159120(s32 a0); +extern void func_801592CC(s32 *a0); +extern u8 D_800AE6BD; +extern s32 D_801E3170; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80192ECC[])(void); +extern void func_80159698(void *a0); +extern s32 func_801596D4(void *a0); +extern void func_80174B6C(void); +extern void func_80129248(s16 a0); +extern void func_8013C938(void); +extern void func_8013CB20(void); +extern void func_8013C98C(void); +extern void func_8002850C(s32, s32, s32); +extern void func_80028620(s32, void *); +extern s16 D_800B9AAC[]; +extern s16 D_800B9B00; +extern u16 D_801270C0; +extern u32 D_800AFAE8[]; +extern char D_80192CEC[]; +extern s32 func_801596F0(s32 param_1); +extern s32 func_80159874(void); +extern void func_800167B8(s32 a0); +extern s32 func_8015987C(s32 a0); +extern int func_800167F0(int arg); +extern int func_801598BC(void); +extern void func_80159968(void *a0); +extern void func_801598E0(u8 *a0); +extern void (*D_80192F70[])(void); +extern void func_80159A20(void *a0); +extern void func_801599E0(void *a0); +extern void func_80159A18(void); +extern void func_80159BE4(s32); +extern void func_80159B08(s32 *a0); +extern void func_80159B70(void *a0); +extern void func_80159B3C(void * a0); +extern void (*D_801930C4[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80192EE0; +extern void func_80159BE4(s32 arg0); +extern void func_8015A1C8(s32 a0); +extern void func_8015A2D8(s32); +extern void func_8015A1FC(s32 *a0); +extern void func_8015A264(void *a0); +extern void func_8015A230(s32 *a0); +extern void (*D_801930CC[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80192EF0; +extern s32 func_80172608(u8 *a0); +extern void func_8015A2D8(s32 param_1); +extern u8 D_800D48DC; +extern s32 func_8015AB7C(s32 a0); +extern s32 D_8011F9C4; +extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); +extern s32 func_80161CD0(s32 a0, s32 a1); +extern M2C_UNK D_80192F10; +extern void func_8015AC48(s32 arg0); +extern void func_8015AC90(s32 a0); +extern void func_8015ADB0(s32 a0); +extern void func_8015ACC4(s32 *arg0); +extern void func_8015AD3C(void *a0); +extern void func_8015AD08(void *arg0); +extern void (*D_801930D4[])(void); +extern void func_8015ADB0(s32); +extern void func_8015AD78(s32 a0); +extern void func_8015ADB0(s32 arg0); +extern s32 D_800D4A9C; +extern int func_8015B6F4(int param_1); +extern u8 D_800D4F8C[]; +extern s32 func_8015B7B4(s32 a0); +extern u8 D_800D4BE0[]; +extern s32 func_8014A51C(void); +extern s32 func_8015B858(u8 *a0); +extern s32 D_800D4B48; +extern void func_8015B8F8(s32 *a0); +extern void func_8015BD8C(s32 *a0); +extern s32 func_8015BE94(); +extern void func_8015BE38(struct Obj *a0); +extern s32 func_8015BE74(void); +extern void func_80161124(void *a0); +extern s32 func_8015BE94(s32 *a0); +extern s32 func_8015AE2C(); +extern s32 func_8015BEC4(void); +extern s32 func_8015B950(s32 arg0); +extern s32 func_8015BEE4(void); +extern void func_8015BF04(s32 *a0); +extern void func_8015C0C4(s32 a0); +extern void func_8015BFF4(void *a0); +extern void func_8015BF7C(s32 *a0); +extern void func_8015C030(s32 *a0, s32 a1); +extern void func_8015BFB0(s32 *a0, s32 a1); +extern void (*D_801930FC[])(void); +extern void func_8015C0C4(s32); +extern void func_8015C08C(s32 a0); +extern s32 func_8015C128(s32 param_1); +extern void func_8015C6A4(void); +extern void func_8015C788(s32 a0); +extern void func_8015C6AC(s32 *a0); +extern void func_8015C714(void *a0); +extern void func_8015C6E0(s32 *a0); +extern void (*D_80193108[])(void); +extern void func_8015C788(s32); +extern void func_8015C750(s32 a0); +extern void func_8015CB94(s32 a0); +extern void func_8015CBCC(void); +extern void func_8015CBD4(void); +extern void func_8015CBDC(void); +extern void func_8015CBE4(void); +extern void func_8015CBEC(void); +extern void func_8015CBF4(void); +extern void func_8015CBFC(void); +extern void func_8015CC04(void); +extern void func_8015CC0C(s32 *param_1); +extern void func_8015CC74(s32 *a0); +extern void func_8015CC40(s32 *a0); +extern s32 func_8015CCD0(); +extern s32 func_8015CCB0(void); +extern s32 func_801725E0(u8 *a0); +extern s32 func_8015CCD0(s32 param_1); +extern s32 func_8015CD20(s32 arg0); +extern void func_8015CF24(s32 a0); +extern void func_8015D01C(); +extern void func_8015CF58(s32 *param_1); +extern void func_8015CFC0(s32 *a0); +extern void func_8015CF8C(s32 *a0); +extern void func_8015CFFC(void); +extern void func_8015D01C(int param_1); +extern void (*D_80192F7C[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801931AC; +extern void func_8015D380(s32 a0); +extern unsigned char D_80192290[]; +extern void func_8015D414(int param_1); +extern void func_8015D57C(s32); +extern void func_8015D480(s32 *a0); +extern s32 func_8015D4E8(s16 *a0); +extern void func_8015D4B4(s16 *a0); +extern void func_8015D524(s32 arg0); +extern void func_8015D544(s32 a0); +extern void func_801746DC(void); +extern void func_8015D57C(s32 arg0); +extern s32 func_80161B18(void *a0); +extern s32 func_80161B84(void *a0); +extern void func_80154150(int, int); +extern void func_80149374(int, int); +extern unsigned char D_801931C0[]; +extern void func_8015D5E8(int param_1); +extern int func_8015E0D4(int); +extern void func_8015DA5C(s32 a0); +extern void func_8015DB6C(s32 a0); +extern void func_8015DA90(s32 *a0); +extern void func_8015DAF8(s32 *a0); +extern void func_8015DB6C(s32); +extern void func_8015DB34(s32 a0); +extern void func_8015DCB8(s32 a0); +extern void func_8014BD60(s32 a0, s32 a1); +extern int func_8015DD74(int); +extern void func_8015DBD4(void *arg0); +extern int func_8015DC84(int a0); +extern s8 D_801931FC[]; +extern void func_8015DCB8(s32 param_1); +extern int func_8015DD74(int arg0); +extern void func_8015DECC(s32 a0); +extern void func_8015DDF0(s32 *a0); +extern void func_8015DE58(s32 *a0); +extern void func_8015DECC(s32); +extern void func_8015DE94(s32 a0); +extern void func_8015E018(s32 a0); +extern void func_8015DF34(void *arg0); +extern int func_8015DFE4(int a0); +extern void func_8015E018(s32 param_1); +extern int func_8015E0D4(int a0); +extern void func_8015E22C(s32 a0); +extern void func_8015E150(s32 *a0); +extern s32 func_8015E1B8(s32 a0); +extern void func_8015E184(s32 *arg0); +extern void func_8015E22C(s32); +extern void func_8015E1F4(s32 a0); +extern u8 D_800D4FF4[]; +extern u8 D_800D5098[]; +extern u8 D_800D5060[]; +extern s32 func_8014A850(s32 a0); +extern void func_8015E40C(s32 a0); +extern void func_8015E588(void); +extern void func_8015E4B0(s32 a0); +extern void func_8015E288(s32 a0); +extern u16 D_80193244; +extern u16 D_80193246; +extern u16 D_80193248; +extern s32 D_8019324C; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80193254; +extern void func_8015E5B0(u8 *self); +extern void func_8015E714(s32 *a0); +extern void func_8015E95C(s32); +extern void func_8015E84C(s32 *a0); +extern void func_8015E8E8(s32 *a0); +extern void func_8015E9B8(s32 *a0); +extern void func_8015E8B4(s32 *a0); +extern void func_8015E924(s32 a0); +extern void func_8015E95C(s32 a0); +extern s16 D_801152A0; +extern void func_80160818(s32 *a0); +extern void func_8015ED6C(s32 *a0); +extern void func_8015EE7C(s32); +extern void func_8015EDA0(s32 *a0); +extern s32 func_8015EE08(s32 a0); +extern void func_8015EDD4(s32 *arg0); +extern void func_8015EE44(s32 a0); +extern int D_800D4C48; +extern int D_80192F60; +extern void func_8015EE7C(s32 param_1); +extern void func_80159B70(void*); +extern void (*D_80192F7C[])(void*); +extern void func_8015EEE0(void* arg0); +extern void func_8015EF9C(void); +extern void func_8015F080(s32); +extern void func_8015EFA4(s32 *a0); +extern void func_8015F00C(s32 *a0); +extern void func_8015EFD8(s32 *a0); +extern void func_8015F048(s32 a0); +extern void func_8015F080(s32 a0); +extern s32 D_80062BE8; +extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); +extern s32 func_80161208(void); +extern void func_8015F118(void *a0); +extern void func_8015F260(s32 *a0); +extern void func_8015F380(); +extern void func_8015F2BC(s32 *a0); +extern void func_8015F324(s32 *a0); +extern void func_8015F2F0(s32 *a0); +extern void func_8015F360(void); +extern s32 func_801725B8(u8 *a0); +extern void func_8015F380(void* arg0); +extern void func_8015F738(s32 *a0); +extern void func_8015F848(s32 *a0); +extern void func_8015F76C(s32 *a0); +extern s32 func_8015F7D4(s32 a0); +extern void func_8015F7A0(s32 *arg0); +extern void func_8015F810(s32 *a0); +extern void func_80147078(s32 *, s16); +extern void func_80159B70(void *); +extern void func_8015F89C(void *arg0); +extern void func_8015F948(s32 *param_1); +extern void func_8015F9A4(void *arg0); +extern void func_8015FA24(s32 arg0); +extern void func_8015FBE0(s32 *a0); +extern void func_8015FA44(s32 *a0); +extern void func_8015FAAC(s32 *a0); +extern void func_8015FA78(s32 *a0); +extern s32 func_801612B8(void *a0, s32 a1); +extern void func_8016007C(s32 a0); +extern void func_8015FAE8(void *arg0); +extern void func_8015FCC8(void *param_1); +extern unsigned int D_801932D8[]; +extern void func_8015FD74(int param_1); +extern s32 func_80028DE0(void); +extern u8 func_80165700(s32 a0, s32 a1); +extern void func_8015FDCC(s32 a0); +extern u8 D_80078EC2; +extern u8 func_801656E8(s32 a0, s32 a1); +extern void func_80165670(s32 a0, s32 a1); +extern void func_8016004C(s32 a0); +extern void func_8015FF20(void *param_1); +extern void func_801601AC(s32 *a0); +extern void func_801600D0(s32 *a0); +extern void func_80160138(s32 *a0); +extern void func_80160104(s32 *a0); +extern void func_80160174(s32 *a0); +extern void func_801601E4(s32 *a0); +extern void func_80160244(s32 *a0); +extern void func_8016032C(void); +extern void func_80160410(s32 *a0); +extern void func_80160334(s32 *a0); +extern void func_8016039C(s32 *a0); +extern void func_80160368(s32 *a0); +extern void func_801603D8(s32 *a0); +extern u8 D_80062BD0; +extern void func_80160410(s32 * a0); +extern void func_801607B8(s32 *a0); +extern void func_801608C0(s32 *a0); +extern void func_801607E4(s32 *a0); +extern void func_8016084C(s32 *a0); +extern void func_80160888(s32 *a0); +extern void func_80160A28(s32 a0); +extern void func_80160A74(s32 *a0); +extern void func_80160BB4(s32 *a0); +extern void func_80160ACC(s32 *a0); +extern s32 func_80160B34(s32 a0); +extern void func_80160B00(s32 *arg0); +extern void func_80160B70(s32 a0); +extern void func_80160C28(void *arg0); +extern void func_80160CB4(s32 *a0); +extern void func_80160D10(void *arg0); +extern void func_80160DEC(u8 *a0); +extern void func_80160F00(); +extern void func_80160E3C(s32 *a0); +extern void func_80160EA4(); +extern void func_80160E70(s32 *a0); +extern void (*D_80193388[])(void); +extern void func_80160EA4(void *a0); +extern void func_80160EE0(void); +extern void func_80160F00(void* arg0); +extern void func_800D0F4C(s32 a0); +extern u8 D_80110EC0; +extern void func_80160F70(s32 a0); +extern void func_80160FE0(s32 *a0); +extern void func_80161034(void *a0); +extern void func_80161094(s32 a0); +extern void func_801610FC(void); +extern void func_801483E8(void); +extern s32 func_80161A60(s32 a0); +extern void func_8016130C(void *a0, s32 a1); +extern void func_80161240(void *a0); +extern void func_80161374(void *a0, s32 a1); +extern void func_80161278(void *a0); +extern s32 func_801612B8(void * a0, s32 a1); +extern void func_8016163C(void *a0, s32 a1); +extern void func_80161774(void *a0, s32 a1); +extern s32 func_8016197C(s32 a0, s32 a1); +extern s32 func_80161488(void *a0); +extern void func_80161888(void *a0, s32 a1); +extern void func_801614E4(void *a0); +extern void func_8016191C(void *a0, s32 a1); +extern void func_8016151C(void *a0); +extern void func_80161554(void *a0); +extern s32 func_801615C4(void * arg0, s32 arg1); +extern s32 func_801619A4(s32 *a0); +extern s32 func_80161A00(s32 a0); +extern s32 func_80161A30(s32 a0); +extern int func_801497A8(void); +extern int func_80161BE0(void *param_1); +extern u16 D_801933B8[]; +extern void func_80161C98(int param_1, u32 param_2); +extern void func_80161E08(s32); +extern s32 func_80162438(s32); +extern s32 D_800AE6A8; +extern void func_800D1734(void *); +extern s32 D_8019341C; +extern void func_80161D88(void); +extern void func_80161E08(s32 param_1); +extern int func_800291DC(int); +extern int func_800D0E30(void *a0); +extern int func_801620C4(void); +extern s32 func_800D0D7C(s32, s32); +extern int D_801E3180[]; +extern void func_8016216C(void); +extern u8 D_80078EB0; +extern u8 D_80078EB1; +extern s32 func_801621CC(s32 arg0); +extern void func_801622C4(void); +extern void (*D_80193440[])(void); +extern void func_80162330(void *a0); +extern void func_8014706C(void *a0); +extern s32 func_8016236C(u8 *a0); +extern void func_800D0C48(s32 a0); +extern s32 func_801623B8(s32 *a0); +extern s32 func_800167F0(s32 a0); +extern s32 func_80162414(void); +extern s32 func_80162438(s32 _unused0); +extern int func_801626B8(void); +extern void func_80162714(void); +extern int D_801E31D8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80193488[])(void); +extern void func_80162834(void *a0); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80162968(s32 a0); +extern s32 func_80162ACC(u8 *a0); +extern u8 D_800B5CB8; +extern s32 D_80193478; +extern s32 D_800B5CBC; +extern u8 D_800B5CDF; +extern s32 D_800B5CEC; +extern void func_80162870(s32 param_1); +extern void func_801628F4(s32 *a0); +extern void func_80162968(s32 param_1); +extern void func_80162AC0(s32 *a0, s8 a1); +extern s32 func_80162AE0(u8 *a0); +extern void func_80162AF4(void); +extern void func_80162CC4(void); +extern s32 D_80126D40; +extern void func_80162B1C(void); +extern void func_80162D28(s32 *a0); +extern void func_80162D88(s32 *a0); +extern void func_80162DE8(s32 *a0); +extern void func_80162E48(s32 *a0); +extern void func_80162EA8(s32 *a0); +extern void func_80162F60(s32 arg0, s32 arg1); +extern void func_80162F80(s32 arg0, s32 arg1); +extern void func_80162FA0(s32 arg0, s32 arg1); +extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80162FC0(s32 *a0); +extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); +extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80163234(s32 a0); +extern s32 D_80115100; +extern s32 func_801632E0(void); +extern s32 D_80115200; +extern s32 func_801632F0(void); +extern u16 D_80126B18[]; +extern void func_80163328(void); +extern s32 func_801633A8(void); +extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E26F8[8]; +extern void *memcpy(void *dst, const void *src, unsigned int n); +extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); +extern void func_80157158(); +extern void func_80163664(s32 a0, u16 a1, u16 a2, s32 a3, s32 a4, s32 a5, s32 a6, s32 a7, s32 a8, s32 a9, u16 a10, s32 a11, s32 a12); +extern void func_801636D0(s32 a0, s32 a1); +extern s32 func_8016380C(struct S8016380C *a0, s32 a1); +extern void *memcpy(void *dst, void *src, s32 n); +extern s32 func_801638A0(u8 *a0, s32 a1); +extern s32 func_80163950(s32 a0); +extern void (*D_80193490[])(void); +extern void func_80163A58(void *a0); +extern void func_80163A94(s32 param_1); +extern void func_80163C2C(s32 param_1); +extern void func_80163EC8(s32 param_1); +extern void func_80164270(s32 *a0); +extern void func_80164418(void); +extern void func_80163764(s32 a0); +extern void func_801642AC(s32 a0); +extern void func_8016432C(s32 a0); +extern void func_80164410(void); +extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164530(s32 arg0); +extern void (*D_801934E4[])(void); +extern void func_80164744(s32 param_1); +extern void func_8001C810(s32 a0, s32 a1); +extern void func_80164A74(s32 *a0); +extern void func_80164930(s32 a); +extern u16 D_800DF2E0; +extern s32 D_801934AC; +extern s16 D_801934E0; +extern s16 D_801934DE; +extern s16 D_801934DC; +extern void func_801647A4(int param_1); +extern void func_80164ACC(); +extern void func_80164864(void *a0); +extern void func_80164930(s32 param_1); +extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164ACC(s32 a0); +extern void (*D_801934F0[])(void); +extern void func_80164BA0(void *a0); +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_800233CC(void *, unsigned short); +extern void func_80164DD0(s32 a0); +extern void func_80164DB0(void); +extern u8 D_801E3238; +extern u8 D_801E3239; +extern u8 D_801E323A; +extern u8 D_801E323B; +extern u8 D_801E323C; +extern u8 D_801E323D; +extern u8 D_801E323E; +extern u8 D_801E323F; +extern void func_80164BDC(s32 param_1); +extern void func_80164E40(void); +extern void func_80164CD4(u8 *a0); +extern void func_80164D4C(void *arg0); +extern void (*D_80193500[])(void); +extern void func_80164EA4(void *a0); +extern void func_80165124(void *a0); +extern void func_80164EE0(int param_1); +extern s32 func_80165140(s32 a0); +extern void func_801651B8(void *a0); +extern void func_80164F44(void *arg0); +extern void func_80165024(void *a0); +extern void func_80165064(s32 *a0); +extern void func_801650C4(s32 *a0); +extern s32 func_80165140(s32 param_1); +extern s32 func_80165240(s32 a0, s32 a1, s32 a2); +extern s32 D_801E3278; +extern void func_801651B8(void * param_1); +extern u8 D_80126CF8; +extern void func_8016533C(void); +extern void func_801653F4(s32 a0); +extern void func_80165580(s32 a0); +extern void func_80165374(s32 a0); +extern void func_80165580(s32 _arg0); +extern void func_801653B8(s32 *a0); +extern s32 func_80165624(s32 a0); +extern u8 D_80078EC5; +extern void (*D_80193544[])(void); +extern u8 func_80165658(s32 a0, s32 a1); +extern void func_800CAE0C(s32 a0); +extern void func_801654A8(s32 arg0); +extern void func_80165B28(void *a0); +extern void func_801655E4(s32 a0); +extern u8 D_801935C0[]; +extern s32 D_801935E0[]; +extern u8 D_8019365C[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8019367C[]; +extern u8 D_8019369C[]; +extern void func_800CAF6C(void); +extern void func_80165770(void); +extern void func_801657D8(void); +extern u8 D_80078EC3; +extern void func_801657A0(void); +extern s32 D_80078EA0; +extern s32 D_80078EA8; +extern u8 D_80078EBB; +extern s32 D_80078ED4; +extern s32 D_80078ED8; +extern s32 D_80078EDC; +extern u8 D_80078EE0; +extern void func_80165874(void); +extern s8 D_80078EC4; +extern void func_801658EC(void); +extern s32 func_80165900(void); +extern s32 func_80165910(void); +extern s32 D_8012672C; +extern s32 D_8012811C; +extern s32 D_80126B08; +extern void func_80165938(void); +extern void func_80165958(void); +extern s32 func_80165978(void); +extern void func_80165988(void); +extern s32 func_801659A8(void); +extern void func_801659B8(void); +extern s32 func_801659CC(void); +extern void func_80165A18(void); +extern s32 func_80165A50(s32 _arg0); +extern void func_80165AC8(void); +extern void func_80165A78(s32 arg0); +extern void (*D_80193738[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801937B4[])(void); +extern void func_80165BB4(u8 *a0); +extern void func_80165B6C(u8 *a0); +extern void func_80165C58(s32 arg0); +extern void func_80165BFC(void *a0); +extern void func_80165C78(void); +extern M2C_UNK D_801E2708; +extern void func_80165E2C(u16 *arg0); +extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); +extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); +extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); +extern void func_80165E90(void); +extern void func_80020F34(s32 a0, s32 a1); +extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); +extern void (*D_801937C0[])(void); +extern void func_80166018(void *a0); +extern void func_80166054(s32 arg0); +extern void func_801661CC(s32 param_1); +extern void func_80166244(void* arg0); +extern void func_8016629C(void *a0); +extern void func_801662F4(void *a0); +extern void func_8016634C(void *a0); +extern void func_801663A4(void *a0); +extern void (*D_801937C8[])(void); +extern void func_801663FC(void *a0); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern void func_801665B4(); +extern void func_80146C3C(); +extern void func_80166438(u8 *a0); +extern s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_80193890[])(void); +extern void func_80166618(void *a0); +extern void (*D_801938A0[])(void); +extern void func_80166654(void *a0); +extern s32 func_80166690(s32 param_1, s32 param_2); +extern s32 func_80166994(); +extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern s32 func_80167540(s32 arg0); +extern void (*D_801938B0[])(void); +extern void func_801678B4(void *a0); +extern void RotMatrixYXZ(void *a0, void *a1); +extern void func_80048EAC(void *a0, void *a1); +extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80146C3C(void); +extern void func_801678F0(s32 a0); +extern void (*D_801938BC[])(void); +extern void func_80167A9C(void *a0); +extern void func_80167AD8(void); +extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); +extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); +extern u8 D_8019381C[]; +extern u8 D_80193830[]; +extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_80017E68(void *a0, void *a1); +extern void func_800D23D0(void *a0); +extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); +extern s32 D_801269A4; +extern s32 D_801269A8; +extern s32 D_801269AC; +extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); +extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8016829C(s32 a0); +extern s32 func_80166690(s32 a0, s32 a1); +extern void func_80168328(s32 arg0); +extern void func_801683D8(s32 a0); +extern void func_801684B4(s32 a0); +extern void func_80168540(s32 a0); +extern void func_801685EC(s32 a0); +extern void func_80168640(s32 a0); +extern s32 RotMatrixX(s32 a0, void *a1); +extern void func_80168664(void *arg0); +extern void (*D_801938D4[])(void); +extern void func_80168744(void *a0); +extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801687CC(s32 a0); +extern void func_80168780(s32 a0); +extern void func_80168828(void); +extern void func_801687CC(s32 param_1); +extern void func_80168828(); +extern void (*D_801938DC[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_801938E4[])(void); +extern void func_80168AA8(void *a0); +extern void func_80168AE4(s32 a0); +extern void func_800D2318(void); +extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern void (*D_801938EC[])(void); +extern void func_80168D58(void *a0); +extern void func_80168D94(int a0); +extern void func_80168F40(); +extern void func_80168EC4(s32 a0); +extern void func_80168F40(void *arg0); +extern void (*D_801938F4[])(void); +extern void func_8016901C(void *a0); +extern void func_80169058(s32 a0); +extern s32 func_80169228(void); +extern void func_801691B8(void *a0); +extern void (*D_801938FC[])(void); +extern void func_801693CC(void *a0); +extern void func_80169584(s32 param_1); +extern void func_80169408(s32 a0); +extern void func_8016951C(int param_1); +extern s32 func_80017758(void *a0, void *a1); +extern s32 func_80017DC4(void *a0, void *a1); +extern void func_801696D8(s32 a0, s32 a1); +extern void (*D_80193904[])(void); +extern void func_80169830(void *a0); +extern void func_8016986C(s32 a0); +extern s32 func_80169A4C(s32 a0, s32 a1); +extern void func_801699D0(void *arg0); +extern void (*D_801939B8[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801939C0[])(void); +extern void func_80169F00(void *a0); +extern char D_80193970[]; +extern char D_80193930[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_801939F8[])(void); +extern void func_8016A020(void *a0); +extern void func_8016A05C(void *a0); +extern void func_8016A290(s32 a, void *b, void *c); +extern void func_8016A08C(s32 param_1); +extern void func_8016A1CC(int param_1); +extern void func_8016A290(s32 param_1, void *param_2, void *param_3); +extern void (*D_80193A04[])(void); +extern void func_8016A700(void *a0); +extern s32 func_8016A73C(s32 arg0); +extern s32 func_8016A8FC(s32 a0); +extern void func_8016A890(s32 arg0); +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern void func_8016AA50(s32 param_1, s32 param_2); +extern void (*D_80193A4C[])(void); +extern void func_8016AB30(void *a0); +extern void func_8016B234(void); +extern void func_8016AFB0(s32 a0); +extern void func_8016B114(void *arg0); +extern s32 func_8016B448(s32, s32); +extern s32 func_8016BA48(s32 a0); +extern void func_8016B3F4(s32 a0); +extern s32 func_8016B428(s32 a0); +extern void func_8016B984(void *a0); +extern s32 func_8016B448(s32 arg0, s32 arg1); +extern void (*D_80193AC8[])(void); +extern void func_8016B4BC(void *a0); +extern int func_8016B9F8(int); +extern int func_8016B834(int, int); +extern void func_8016B91C(int); +extern int D_801E3598; +extern void func_8016B4F8(int param_1); +extern s32 func_8016B9F8(s32 param_1); +extern void func_8016B6BC(s32, s32, s32, s32); +extern void func_8016B91C(s32); +extern s16 D_80193ABC[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80193B00[]; +extern unsigned short D_80193B08[]; +extern unsigned short D_80193B10[]; +extern unsigned char D_801E35A0[]; +extern int func_8016B834(int param_1, int param_2); +extern void func_8016B964(SrcB964 *a0, DstB964 *a1); +extern void func_8016B91C(s32 arg0); +extern s32 D_801E3598; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80193B18[])(void); +extern void func_8016BBA4(void *a0); +extern s32 func_8016BBE0(s32 param_1); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); +extern M2C_UNK D_801E36D4; +extern M2C_UNK D_801E36D8; +extern void func_8016BCC0(void *arg0); +extern s32 func_8016BD78(s32 param_1); +extern s32 func_8016BEA0(s32 param_1); +extern void func_8016BF34(void *a0); +extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern s32 D_801E3660; +extern void (*D_80193B48[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E36DC[]; +extern u8 D_801E36E4[]; +extern u8 D_801E3694[]; +extern void func_8016C2C4(s32 param); +extern s32 func_8016C49C(s32 param_1_arg); +extern s32 VectorNormalSS(void *a0, void *a1); +extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern short func_8016CF04(s32 a0, s32 a1); +extern void func_8016C83C(s32 a0); +extern void (*D_80193B50[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80193B6C[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80193B74[])(void); +extern void func_8016D428(void *a0); +extern void func_8016D464(u8 *a0); +extern void func_8016D4DC(s32 a0); +extern void func_8016D5EC(s32 *a0); +extern short func_8016CBC0(void); +extern void func_8016D64C(int param_1); +extern void func_8016D778(s32 a0); +extern void func_800D20C0(); +extern void func_8016D848(s32 *a0); +extern void func_8016D984(s32 *a0); +extern void func_8016DBD8(u8 *a0); +extern void (*D_80193BDC[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80193B80; +extern u8 D_80193B8C; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80193C10[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80193C18[])(void); +extern void func_8016DF20(void *a0); +extern void func_8016E3CC(s32 a0); +extern void func_8016E1CC(s32 a0); +extern void func_8016E26C(s32 *a0); +extern void func_8016E2E8(void *a0); +extern void func_8016E460(void *a0, void *a1); +extern void func_8016E358(void *a0); +extern void func_8016E460(void *arg0, void *arg1); +extern void (*D_80193C6C[])(void); +extern void func_8016E5B8(void *a0); +extern void func_8016E5F4(s32 arg0); +extern void func_8016E778(); +extern void func_8016E688(void *a0); +extern void func_8016E6E4(s32 a0); +extern void func_8016E728(u8 *a0); +extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); +extern void func_8016E778(int param_1); +extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); +extern s32 D_80115218; +extern void func_8016E8F0(void); +extern void func_8016E918(short param_1, short param_2); +extern s32 func_8016E95C(); +extern u16 D_80193CA0[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80193C90[]; +extern void func_8016EB3C(s32 p); +extern void func_8016EBA8(u8 *param_1); +extern void func_8016ED6C(void); +extern s32 D_80126D70; +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); +extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); +extern void func_8016EE94(); +extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); +extern void func_8016EF78(s32 a0); +extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); +extern void func_801726D0(void *a0); +extern s32 D_80126D50; +extern s32 D_80126D54; +extern u8 D_80126D6C; +extern u8 D_80126D6D; +extern u8 D_80126D6E; +extern s32 D_80126D5C; +extern s32 D_80126D60; +extern s16 D_80126D64; +extern s16 D_80126D66; +extern s16 D_80126D68; +extern s16 D_80126D6A; +extern u8 D_80126D1A; +extern s32 D_80127058; +extern s32 D_8012705C; +extern s32 D_80127060; +extern s32 D_80127064; +extern s32 D_80127068; +extern s32 D_8012706C; +extern s32 D_80127070; +extern s32 D_80127074; +extern s16 D_80126D20; +extern void func_8016EE94(s32 a0, s32 a1); +extern s32 func_8016EFC8(s32); +extern s32 func_8016EFA8(s32 a0); +extern void func_8016F094(s32 *a0); +extern s32 func_8016F0AC(); +extern s32 D_80193CBC; +extern void func_8016F250(void); +extern void func_8016F288(void); +extern void func_8016F2A8(void); +extern void func_8016F2C8(void); +extern void func_8016F2EC(void); +extern void func_8016F30C(void); +extern void func_8016F330(void); +extern void func_8016F350(void); +extern void func_8016F374(void); +extern void func_8016F388(void); +extern void func_8016F398(void); +extern s32 func_8016F44C(s32 a0); +extern void func_8016F470(s32 a0); +extern s32 func_8016F410(s32 a0); +extern void func_80175414(s32 _arg0); +extern s32 func_8016F4C4(s32); +extern s32 func_8016F494(s32 a0); +extern void func_8016F0E4(void); +extern s32 func_8016F4C4(s32 param_1); +extern void func_8016F4F4(void); +extern void func_801719A4(int a0, int a1); +extern void func_800D1724(s32 a0); +extern void func_80171928(void *a0); +extern void *D_8011F738; +extern void func_8016F4FC(void *a0); +extern void func_8014708C(void *a0); +extern void func_8016F540(void *a0); +extern void func_8016F578(s32 *a0); +extern void func_8016F5B0(void *a0); +extern void func_80147060(u8 *a0); +extern void func_8016F5E0(u8 *a0); +extern void func_8016F610(void *a0); +extern void func_8016F648(void *a0); +extern void func_8016F680(void *a0); +extern void func_8016F6B0(void *a0); +extern void (*D_80193D34[])(void); +extern void func_8016F6E0(void *a0); +extern s32 func_80171990(u8 *a0); +extern void func_8016F764(void *a0); +extern void func_8016F71C(u8 *a0); +extern void (*D_80193D3C[])(void); +extern void func_8016F798(void *a0); +extern void func_8016F804(void *a0); +extern void func_8016F7D4(u8 *a0); +extern void func_80171928(void *); +extern void (*D_80193D44[])(void); +extern void func_8016F834(void *a0); +extern void func_8016F8AC(u8 *a0); +extern void func_8016F870(u8 *a0); +extern void func_80172358(u8 *a0, u8 *a1); +extern void (*D_80193D4C[])(void); +extern void func_8016F8E4(void *a0); +extern void func_8016F95C(void *a0); +extern void func_8016F920(u8 *a0); +extern s32 func_80171CC4(void *a0, void *a1); +extern s32 func_80171D1C(void *a0, void *a1, s32 a2); +extern u16 D_8011F73E; +extern void (*D_80193D54[])(void); +extern void func_8016F9C4(void *a0); +extern void func_80171B44(s32 *a0); +extern void func_8016FA44(s32 a0); +extern void func_8016FA00(s32 a0); +extern s32 func_80171C64(s32 a0, s32 a1); +extern void (*D_80193D5C[])(void); +extern void func_8016FA84(void *a0); +extern void func_8016FB10(void *a0); +extern void func_8016FAC0(u8 *a0); +extern void func_8016FB50(void *a0); +extern void (*D_80193D68[])(void); +extern void func_8016FB7C(void *a0); +extern void func_8016FC24(); +extern void func_8016FBB8(s32 a0); +extern s32 func_80171B4C(s32 a0, s32 a1); +extern void func_8016FC24(s32 a0); +extern void func_8016FC64(void *a0); +extern void (*D_80193D74[])(void); +extern void func_8016FC90(void *a0); +extern void func_8016FD08(u8 *a0); +extern void func_8016FCCC(u8 *a0); +extern s32 func_80172658(s32 *a0); +extern void func_8016FD08(u8 *s0); +extern void func_8016FD7C(s32 *a0); +extern void (*D_80193D80[])(void); +extern void func_8016FDB4(void *a0); +extern void func_8016FE2C(u8 *a0); +extern void func_8016FDF0(u8 *a0); +extern void func_8016FE2C(u8 * a0); +extern s32 func_8016FE78(s32 *a0); +extern s32 func_80172664(s32 *a0); +extern void func_8016FED0(s32 *a0); +extern void (*D_80193D90[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80193DA0[])(void); +extern void func_8016FFDC(void *a0); +extern void func_80170068(u8 *a0); +extern void func_80170018(u8 *a0); +extern void func_801700B8(u8 *a0); +extern void func_80170100(u8 *a0); +extern void (*D_80193DA8[])(void); +extern void func_80170150(void *a0); +extern void func_801701C8(u8 *a0); +extern void func_8017018C(u8 *a0); +extern void func_801701C8(u8 * a0); +extern void (*D_80193DB0[])(void); +extern void func_80170240(void *a0); +extern void func_801702B8(s32 a0); +extern void func_8017027C(u8 *a0); +extern s16 func_80171AB0(s32 a0, void *a1); +extern void (*D_80193DB8[])(void); +extern void func_801702FC(void *a0); +extern void func_80170374(u8 *a0); +extern void func_80170338(u8 *a0); +extern s32 func_8014C168(s32 *a0, s32 a1); +extern void func_80170374(u8 * a0); +extern void (*D_80193DC0[])(void); +extern void func_801703E0(void *a0); +extern void func_8017044C(u8 *a0); +extern void func_8017041C(u8 *a0); +extern void func_8017044C(u8 * a0); +extern void (*D_80193DC8[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80193DD0[])(void); +extern void func_80170548(void *a0); +extern void func_801705C0(u8 *a0); +extern void func_80170584(u8 *a0); +extern void func_801705C0(u8 * a0); +extern void (*D_80193DD8[])(void); +extern void func_801705F8(void *a0); +extern void func_80170670(void *a0); +extern void func_80170634(u8 *a0); +extern void func_8012A568(void (*a0)(void)); +extern void (*D_80193DE0[])(void); +extern void func_801706AC(void *a0); +extern void func_80170718(void *a0); +extern void func_801706E8(u8 *a0); +extern void func_80129FF4(void); +extern void (*D_80193DE8[])(void); +extern void func_80170748(void *a0); +extern void func_801707D4(void *a0); +extern void func_80170784(u8 *a0); +extern s32 func_80174ED4(void); +extern void (*D_80193DF0[])(void); +extern void func_80170810(void *a0); +extern void func_801708B0(void *a0); +extern u8 D_800D5DA8; +extern void func_8017084C(s32 a0); +extern u8 D_800D5A34[]; +extern void func_80170AD8(void *a0); +extern void func_80171904(s32 a0); +extern void func_80170B48(int a0); +extern void func_80170928(void); +extern u8 D_800D59EC[]; +extern void func_80170970(void); +extern u8 D_800D599C[]; +extern void func_801709B8(void); +extern u8 D_800D5934[]; +extern void func_80170A00(void); +extern void func_80170A48(void); +extern u8 D_800D5DC0[]; +extern void func_80170A90(void); +extern void (*D_80193DF8[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80193E00[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80193E08[])(void); +extern void func_80170C74(void *a0); +extern s32 func_8017197C(u8 *a0); +extern void func_80170CF0(void *a0); +extern void func_80170CB0(u8 *a0); +extern void (*D_80193E10[])(void); +extern void func_80170D68(void *a0); +extern void func_80170DE0(u8 *a0); +extern void func_80170DA4(u8 *a0); +extern s32 D_8011F73C; +extern s32 D_8011F740; +extern void func_801718AC(void *a0); +extern void func_80170DE0(u8 * _arg0); +extern void (*D_80193E18[])(void); +extern void func_80170E34(void *a0); +extern void func_80170EAC(u8 *a0); +extern void func_80170E70(u8 *a0); +extern int func_800D0F8C(int a0); +extern void func_80170EAC(u8 * _arg0); +extern void (*D_80193E20[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80193E28[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80193E30[])(void); +extern void func_80171064(void *a0); +extern void func_801710DC(u8 *a0); +extern void func_801710A0(u8 *a0); +extern u16 D_8011F73A; +extern void func_801710DC(u8 * arg0); +extern void (*D_80193E38[])(void); +extern void func_80171120(void *a0); +extern void func_8017118C(u8 *a0); +extern void func_8017115C(u8 *a0); +extern void func_80142454(s32 a0); +extern void func_8017118C(u8 * a0); +extern void (*D_80193E40[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80193E48[])(void); +extern void func_80171260(void *a0); +extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80171384(void *a0); +extern void (*D_80193E50[])(void); +extern void func_801714E4(void *a0); +extern void func_8017162C(void *a0); +extern void func_80171520(s32 a0); +extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); +extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_800A5E94; +extern u8 D_800A5E95; +extern u8 D_800A5E96; +extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); +extern int func_800D0FE0(int a0); +extern void func_801717A0(void *a0); +extern void func_8013E588(void *a0); +extern void func_801717F4(void *a0); +extern void func_80171824(void *a0); +extern void func_80171854(void *a0); +extern void func_80171884(void); +extern void func_80171A1C(u8 *a0); +extern void func_80171928(void * a0); +extern void func_8017196C(s32 *a0, s8 a1); +extern void func_80171A04(s32 *a0); +extern void func_80171A10(s32 *a0); +extern void func_80171A34(s32 *a0, s8 a1); +extern s32 func_80171A44(u8 *a0); +extern s32 func_80171A58(u8 *a0); +extern s32 func_80171A6C(u8 *a0); +extern void func_80171A80(s32 *a0, s32 a1); +extern s32 func_80171A88(s32 a0); +extern s16 func_80171AB0(s32 param_1, void * _arg1); +extern void func_80171B10(void *a0); +extern void func_80171EC8(s32 a0); +extern s32 func_80171C64(s32 param_1, s32 param_2); +extern s32 func_80171D78(s32 a0, s32 a1); +extern int func_8017250C(short *a0, short *a1); +extern s32 func_80171CC4(void * a0, void * a1); +extern s32 func_80171FFC(short *a0, short *a1, s32 a2); +extern s32 func_80171D1C(void * a0, void * a1, s32 a2); +extern s32 func_8017248C(s32 a0, s32 a1); +extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80047948(s32 a0); +extern s32 func_8004787C(s32 a0); +extern void func_80172170(s32 a0, s32 a1); +extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); +extern void func_801722CC(s32 *a0); +extern void func_80172304(s32 *a0); +extern void func_80172310(u8 *a0); +extern void func_801723C4(s32 param_1, s32 param_2); +extern void func_80161C24(s32, s32); +extern void func_80172414(s32 a0); +extern s32 func_801724EC(s32 a0); +extern s32 func_8017248C(s32 arg0, s32 arg1); +extern s32 func_80013450(s32); +extern s32 func_80172560(u8 *a0, u8 *a1); +extern s32 func_8017261C(u8 *a0); +extern s32 func_80172644(u8 *a0); +extern s32 func_80172670(s32 *a0); +extern s32 func_80172688(s32 *a0); +extern s32 func_80172694(s32 *a0); +extern s32 func_801726A0(s32 *a0); +extern s32 func_801726AC(s32 *a0); +extern s32 func_801726B8(s32 *a0); +extern s32 func_801726C4(s32 *a0); +extern s32 func_80172760(s32 a0); +extern s32 func_80174650(s32); +extern void (*D_80127088)(void); +extern s32 D_801270BC; +extern s16 D_80126B0C; +extern void func_801726D0(void * _arg0); +extern void func_80172710(void); +extern void func_80174684(void *); +extern void func_80172738(void); +extern s16 D_80126B30; +extern s32 func_801727D0(void *a0); +extern void func_80172780(void *a0); +extern void func_80172844(u8 *a0); +extern void func_8017280C(u8 *a0); +extern void func_8017288C(void); +extern s32 func_801728E4(void *a0); +extern void func_80172894(void *a0); +extern void func_80172958(u8 *a0); +extern void func_80172920(u8 *a0); +extern s16 D_80126B36; +extern void func_80172958(u8 * a0); +extern void func_801729A8(void); +extern s32 func_801729F0(void *a0); +extern s16 D_80126B34; +extern s16 D_80126B32; +extern void func_801729B0(s32 a0); +extern void func_80172A8C(void *a0); +extern void func_80172A2C(int param_1); +extern void func_80172ACC(u8 *a0); +extern void func_80172B0C(void); +extern s32 func_80172B44(void *a0); +extern void func_80172B14(s16 a0); +extern s32 D_801150F8; +extern void func_80172BC8(void *a0); +extern void func_80172B80(u8 *a0); +extern void func_80172C48(void); +extern void (*D_80193E94[])(void); +extern void func_80172CA0(void *a0); +extern void func_80172D14(u8 *a0); +extern void func_80172CDC(u8 *a0); +extern void func_80172D14(u8 * a0); +extern void func_80172D60(void); +extern s32 D_80127508; +extern s32 func_80172DAC(void *a0); +extern void func_80172D68(s32 a0); +extern void func_80172E20(u8 *a0); +extern void func_80172DE8(u8 *a0); +extern void func_80172E20(u8 * a0); +extern void func_80172E8C(void); +extern void func_8017303C(void *); +extern void func_80172E94(void); +extern void func_80172ED4(void); +extern void func_80172EFC(void); +extern void func_80172F24(void); +extern u8 D_800D47F4[]; +extern void func_80172F4C(void); +extern void func_80172F9C(void); +extern u8 D_800D5C6C[]; +extern void func_80172FEC(void); +extern s32 func_80173078(void *a0); +extern void func_8017303C(void * a0); +extern void func_801730FC(struct S801730FC *a0); +extern void func_801730B4(s32 a0); +extern void func_8017316C(void); +extern s32 func_8017319C(void *a0); +extern void func_80173174(void); +extern u8 D_800D5AA0[]; +extern void func_80173220(void *a0); +extern void func_801731D8(s32 *a0); +extern M2C_UNK D_80193E58; +extern void func_80173220(void * arg0); +extern void func_80173294(void); +extern void func_801732C4(); +extern void func_8017329C(void); +extern void func_801732C4(s32 *a0); +extern void func_8017331C(); +extern void func_801732F4(void); +extern void func_8017331C(s32 *a0); +extern void func_80173374(); +extern void func_8017334C(void); +extern void func_80173374(s32 *a0); +extern void func_801733A4(void); +extern void func_801733CC(s32 a0); +extern void func_801734BC(s32 a0, s32 a1); +extern s16 D_80126B3E; +extern void func_80173460(s32 a0, s32 a1); +extern void func_801734BC(s32 arg0, s32 _unused1); +extern void (*D_80193EC4[])(void); +extern void func_80173544(void *a0); +extern void func_801735B8(u8 *a0); +extern void func_80173580(u8 *a0); +extern s16 D_80126B40; +extern void func_801735EC(void *a0); +extern void func_80173648(u8 *a0); +extern void func_801736A8(void); +extern s32 func_8014C118(void *a0, s32 a1, s32 a2); +extern s32 func_801736FC(void *a0); +extern void func_801736B0(s32 a0, s32 a1); +extern void func_80173770(u8 *a0); +extern void func_80173738(u8 *a0); +extern void func_801723C4(s32 a0, s32 a1); +extern void func_801737B0(void); +extern s32 func_801737E8(void *a0); +extern void func_801737B8(s16 a0); +extern void func_8017385C(u8 *a0); +extern void func_80173824(u8 *a0); +extern void func_801738D4(void); +extern s32 func_8017390C(void *a0); +extern void func_801738DC(s16 a0); +extern void func_80173980(u8 *a0); +extern void func_80173948(u8 *a0); +extern void func_801739D8(u8 *a0); +extern void func_80173A20(void); +extern s32 D_8012750C; +extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); +extern void (*D_80193F00[])(void); +extern void func_80173B4C(void *a0); +extern void func_80173BC0(u8 *a0); +extern void func_80173B88(u8 *a0); +extern void func_80173C64(u8 *a0); +extern void func_80173E1C(s32 a0); +extern s16 D_80126938; +extern s16 D_80126B3A; +extern void func_800D128C(s32, s32); +extern void func_80174158(s32 a0); +extern void func_8002A088(s32); +extern void func_8002A2D4(s32); +extern void func_8002A544(s32); +extern void func_8002A7B4(s32); +extern s32 func_80174188(s32 a0); +extern void func_801741A8(s32 a0); +extern s32 func_800D0EC4(void); +extern void func_800D0F0C(s32, s32); +extern void func_80145EE8(s32); +extern void func_80173EF8(void *param_1); +extern s32 func_8014BCEC(s32, s32); +extern void func_801741A8(s32 _arg0); +extern s16 D_80126B3C; +extern s16 D_8011F9C8; +extern void func_801741EC(u8 *a0); +extern void func_80174274(void); +extern s32 func_801742A4(void *a0); +extern void func_8017427C(void); +extern void func_80174318(u8 *a0); +extern void func_801742E0(u8 *a0); +extern void func_80174354(void); +extern s32 func_80174384(void *a0); +extern void func_8017435C(void); +extern void func_801743F0(u8 *a0); +extern void func_801743C0(u8 *a0); +extern void func_801743F0(u8 * a0); +extern void func_80174430(void); +extern s32 func_80174474(void *a0); +extern void func_80174438(s32 a0); +extern void func_801744E0(u8 *a0); +extern void func_801744B0(u8 *a0); +extern void func_80174524(void); +extern void func_80174554(); +extern void func_8017452C(void); +extern void func_80174554(s32 arg0); +extern void func_801745AC(); +extern void func_80174584(void); +extern void func_801745AC(s32 *a0); +extern void func_80174604(void); +extern void func_801745DC(void); +extern void func_80174630(void); +extern s32 func_80174650(s32 _arg0); +extern void func_80174674(void); +extern void func_801746A4(void); +extern s32 func_800CF8CC(void); +extern void func_80174714(void); +extern s32 func_80174754(void); +extern s16 func_80174764(void); +extern s16 func_80174774(void); +extern s32 func_801747CC(void *a0); +extern void func_80174784(void); +extern s32 func_801747AC(s32 a0); +extern s32 func_80174808(u8 *a0); +extern void func_8017481C(void); +extern s32 func_80174888(void *a0); +extern void func_80174824(void); +extern void func_8017484C(s32 a0); +extern void func_801748C4(s32 a0); +extern void func_801748E4(void); +extern void func_8012A018(s32 a, s32 b); +extern s32 func_8017496C(void *a0); +extern s32 D_80126950; +extern void func_801748EC(void); +extern s32 func_801749C8(); +extern s32 func_801749A8(s32 a0); +extern void func_80174BBC(void *a0); +extern void func_8012A0E0(void); +extern void func_80174BF4(void *a0); +extern void (*D_80193F58[])(); +extern void func_80174BF4(void * arg0); +extern s32 func_80174CB0(s32, s32); +extern s32 func_80174C60(s32 a0); +extern void func_80174C80(s32 a0); +extern s32 D_8012697C; +extern u16 D_80126980; +extern s32 func_80174F28(void *a0); +extern void func_80174E9C(s32 a0); +extern void func_80174EF0(s32 a0, s16 a1); +extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); +extern void func_80174F64(u8 *a0); +extern void func_80174FBC(u8 *a0); +extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); +extern void func_80175184(s32 *a0); +extern void func_80175114(s32 *a0); +extern void func_80175184(); +extern void func_80175150(s32 *a0); +extern void (*D_80193F68[])(void*); +extern s32 func_80175268(s32); +extern void func_80175184(s32* arg0); +extern s32 func_80175218(void *a0); +extern void func_801751D8(void *a0); +extern void (*D_80193F70[])(s32); +extern s32 func_80175218(void * param_1); +extern void func_801752BC(s32 *a0); +extern u8 D_8011F7A8; +extern u8 D_8011F7A9; +extern u8 D_8011F7AD; +extern u8 D_8011F7AE; +extern void func_80175494(void); +extern void (*D_801940D8[])(); +extern s32 func_801758FC(void); +extern s32 func_80175820(void); +extern s32 func_801759D8(void); +extern void func_8017553C(s32 *param); +extern void func_801757A0(s32 a0); +extern short D_800B9A02; +extern void func_80175590(void *arg0); +extern s16 D_800B9A02; +extern void func_801757A0(s32); +extern void func_80175624(void *a0); +extern void func_801757E0(int); +extern void func_80175668(void); +extern void (*D_801940E4[])(); +extern void func_80175690(s32 *param); +extern void func_80175DA8(s32 a0); +extern void func_80175AB8(s32 a0); +extern void func_80176144(s32 a0); +extern void func_801756E4(s32 arg0); +extern void func_80175798(void); +extern void func_80176734(s32 a0); +extern void func_80176218(s32 a0); +extern void func_80176D00(s32 a0); +extern void func_801757E0(s32 a0); +extern s32 func_80178004(s32 a0, s32 a1, s32 a2); +extern u8 D_8011F7B1; +extern u16 D_8011F7B4; +extern u16 D_8011F7B6; +extern s16 D_8011F81E; +extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801783D0(s32 a0, s32 a1); +extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern u16 D_8011F82C; +extern u16 D_8011F82A; +extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); +extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80176FF4(s32 a0); +extern u16 D_8011F830; +extern u16 D_8011F82E; +extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); +extern void func_80177340(s32 a0); +extern u8 D_8011F837; +extern u8 D_8011F7F0; +extern u8 D_8011F7AB; +extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); +extern void func_801776EC(u8 *a0); +extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); +extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); +extern void func_80177F84(s32 param_1, s32 param_2); +extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); +extern M2C_UNK D_801E2950; +extern void func_80178438(u16 *arg0); +extern void func_801787D4(void); +extern void func_8012A908(void); +extern void func_8017869C(s32 a0); +extern void func_80130D0C(s32 a0); +extern void func_8013E370(void); +extern s32 D_8011DB08; +extern void func_8017849C(void); +extern void func_8013E4B4(void); +extern s16 D_801270C4; +extern s32 D_801274D8; +extern s16 D_801270C2; +extern u8 D_801270C6; +extern u8 D_801270C7; +extern s32 D_801274DC; +extern s32 D_801274E0; +extern void func_80178608(void); +extern void func_80178744(s32 a0, s32 a1); +extern void func_80178840(); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012B2CC(s32 a0); +extern s32 func_801788B8(s32 arg0, s32 arg1); +extern s32 func_801789AC(s32 arg0); +extern s16 D_801E4BD8; +extern int func_80178970(void); +extern s32 func_80178B18(s32 param_1, s32 param_2); +extern s32 func_80178B70(s32 param_1, s32 param_2); +extern void func_80178BB8(s32 a0, s32 a1); +extern s32 func_80178BF8(); +extern s32 D_801E3E18; +extern short D_801E4C4C; +extern void func_80178CBC(s32 arg0, s32 arg1); +extern void func_80178D18(void); +extern s32 func_80178D40(s32 arg0, s32 arg1); +extern void func_80179B28(s32 a0); +extern void func_80179B74(u16 *p); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179DCC(short a0); +extern void func_80179DF8(void); +extern void func_80179E1C(short a0); +extern void func_80179E48(s16 a0); +extern void func_80179E74(s16 a0); +extern void func_80179EA0(u16 *a0); +extern void func_80179EE8(short a0); +extern void func_80179F14(s16 a0, s16 a1); +extern void func_80179F44(void); +extern void func_80179F6C(short a0); +extern void func_80179F98(u16 *a0); +extern void func_80179FEC(u16 *a0); +extern void func_8017A040(u16 *a0); +extern s32 D_801E4244; +extern void func_8017A094(s32 arg0); +extern void func_8017A0C4(s32 arg0); +extern void func_8017A0F4(void); +extern void func_8017A11C(void); +extern s32 D_801E426C; +extern void func_8017A144(s32 a0); +extern void func_8017A180(void); +extern void func_8017A1A8(void); +extern void func_8017A1D0(void); +extern void func_8017A1F8(void); +extern void func_8017A220(void); +extern void func_8017A248(void); +extern void func_8017A270(void); +extern void func_8017A298(void); +extern void func_8017A2C0(void); +extern void func_8017A2E8(void); +extern void func_8017A310(void); +extern void func_8017A338(void); +extern void func_8017A360(void); +extern void func_8017A388(void); +extern s16 D_801E4228; +extern s32 func_8017A3B0(void); +extern short D_801E4264; +extern short D_801E4260; +extern int func_800D0CA0(int); +extern int func_8001AAA0(void); +extern int func_800D0CE0(void); +extern int func_8017A3D8(void); +extern void func_80172310(u8*); +extern void func_80172780(void*); +extern void func_80172894(void*); +extern void func_801729B0(s32); +extern void func_80172B14(s16); +extern void func_80172C50(u16 *); +extern void func_80172D68(s32); +extern void func_801733FC(s16, u16 *); +extern void func_80173460(s32, s32); +extern void func_801734BC(s32, s32); +extern void func_801736B0(s32, s32); +extern void func_801737B8(s16); +extern void func_801738DC(s16); +extern void func_80173A28(s32, s32, s32, s32, s32, s32); +extern void func_80174438(s32); +extern void func_8017A4AC(void); +extern s32 func_8017AD0C(s32 arg0); +extern s32 func_8017AD0C(s32); +extern s32 func_8017ADE8(s32 a0); +extern s32 func_8017AE08(void); +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern void func_8012B178(s32 a0, s32 a1); +extern void func_8012AD80(s32 a0); +extern s32 func_8012B030(u8 *a0); +extern s32 func_8012B744(void *a0, void *a1); +extern s32 func_8012BE98(s32 a0, u16 *a1); +extern s16 D_801E4BA8; +extern s16 D_801E4BAA; +extern s16 D_801E4BB4; +extern void func_8017AE2C(s32 param_1); +extern void func_8017B0E4(int param_1, int param_2); +extern s16 D_801E422C; +extern u16 D_801E42AC; +extern u16 D_801E42AE; +extern u16 D_801E42B0; +extern void func_8017B1D8(void); +extern s32 func_8017B238(s32 param_1, s32 param_2); +extern s32 func_8017B368(s32 param); +extern s32 func_8017B490(s32 param); +extern s32 func_8017B614(s32 param_1, s32 param_2); +extern s32 D_80114F30; +extern s32 D_80114F34; +extern s32 D_80114F38; +extern s32 D_80114F24; +extern s32 D_80114F28; +extern s32 D_80114F2C; +extern u8 D_8012694C; +extern s16 D_801E42A4; +extern s16 D_801E42A6; +extern s16 D_801E42A8; +extern s16 D_801E429C; +extern s16 D_801E429E; +extern s16 D_801E42A0; +extern void func_8017B7A8(void); +extern s16 D_801E42BC; +extern s16 D_801E42BE; +extern s16 D_801E42C0; +extern s16 D_801E42C4; +extern s16 D_801E42C6; +extern s16 D_801E42C8; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801E42B4; +extern short D_801E42B6; +extern short D_801E42B8; +extern void func_8017B940(void); +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern void func_80049CAC(s32 a0, s32 a1); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void RotTransSV(void *a0, void *a1, void *a2); +extern SV4 D_801E424C; +extern SV4 D_801E4254; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801E4274[10])(int); +extern void func_8017BC38(int param_1); +extern void func_8017B0E4(int, int); +extern void func_8017BCA0(int param_1); +extern void func_8012A4BC(void); +extern void func_8017BCF4(int param_1); +extern void (*D_801E4270)(void); +extern void func_8017BD50(int param_1); +extern void (*D_801942C0[])(void); +extern void func_8017BE60(void *a0); +extern void func_8017BF14(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8017BEC0(s32 arg0, s32 arg1, s16 arg2); +extern void func_8017BEE8(void *a0, void *a1, s32 a2, s32 a3); +extern s32 func_8012C750(s32 a0); +extern void func_8017BF9C(s32 a0, s32 a1); +extern void func_8017BFF0(s32 a0, s32 a1, s32 a2); +extern void func_8017C048(void); +extern void (*D_80194320[])(void); +extern void func_8017C0F4(void *a0); +extern void func_8017C130(void *a0); +extern void func_800176F0(void *a0); +extern void func_8017C41C(void *a0); +extern void ReadRotMatrix(void *a0); +extern void PushMatrix(void); +extern void func_8004974C(void *a0, void *a1); +extern void PopMatrix(void); +extern void func_8017CC88(u16 *a0, void *a1); +extern int func_8017CD2C(short *param_1, short *param_2, short *param_3, int param_4); +extern void ReadGeomOffset(s32 *a0, s32 *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8004921C(s32 a0, s32 a1); +extern void func_8017CF24(s32 a0, s32 a1); +extern void func_8017CF90(s32 arg0); +extern void func_8017DF00(void); +extern void func_8017DF28(void); +extern void func_8017DF50(void); +extern void func_8012A094(s32 a0); +extern void func_8017E97C(void *a0); +extern void func_8017DF78(void); +extern Vec8_8017E0B4 D_801E2D70; +extern Vec8_8017E0B4 D_801E2D78; +extern s32 D_80126E60[]; +extern s32 D_80126E6C; +extern s32 D_80126E9C; +extern s32 D_80126EA0; +extern s32 D_80126EA4; +extern s32 D_80126EA8; +extern s32 D_80126EAC; +extern s32 D_80126EB0; +extern void func_8012A100(s8 a0); +extern void func_8017E0B4(void); +extern void func_8017E190(void); +extern void func_8017E26C(void); +extern void func_8017E348(void); +extern void func_8017E5AC(void); +extern void func_8017E5CC(void); +extern void func_8017E664(void); +extern void func_8017E8E4(void); +extern void func_8017EB30(void); +extern void (*D_8019439C[])(void); +extern void func_8017F010(void *a0); +extern void func_8017F428(void *arg0); +extern s32 func_8017F04C(s32 param_1); +extern s32 func_8017F09C(void); +extern void (*D_801943A4[])(void); +extern void func_8017F0C0(void *a0); +extern s32 func_8017F0FC(u8 *a0); +extern void (*D_80194454[])(void); +extern void func_8017F1DC(void *a0); +extern void func_8017F218(u8 *a0); +extern void func_8017F320(s32 param_1); +extern void (*D_80194464[])(void); +extern void func_8017F358(void *a0); +extern void func_8017F3C4(int param_1); +extern void func_8017F408(void); +extern void (*D_80194470[])(void); +extern void func_8017F428(void *a0); +extern s32 D_801270C8; +extern void func_8017F6A4(void); +extern void func_8017F674(void); +extern void func_8017FA3C(void); +extern void func_8017FA0C(void); +extern void (*D_801944E8[])(void); +extern void func_80180380(void *a0); +extern void func_801804AC(void); +extern void aF801804D4(); +extern void func_80180A7C(void); +extern void func_80180AA4(void *a0); +extern void func_80180AE0(void *a0); +extern void func_80180C04(void *a0); +extern void func_80180C64(void*); +extern void func_80180C3C(void); +extern void (*D_8019455C[])(void); +extern void func_80180C64(void *a0); +extern void func_8017E798(void *a0); +extern void func_80181028(void *a0); +extern void func_801812DC(void*); +extern void func_801812B4(void); +extern void (*D_8019458C[])(void); +extern void func_801812DC(void *a0); +extern void func_80181318(void *a0); +extern void func_80147060(u8*); +extern void func_8018166C(s32 a0); +extern s32 func_8018169C(s32 a0, s32 a1); +extern s32 func_801816CC(s32 a0, s32 a1); +extern void func_80182998(void); +extern s32 func_80185D84(s32); +extern void func_80186304(); +extern void func_8018AD8C(s32, s32); +extern void func_801862E0(s32 *a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_801862F0(void * arg0); +extern void func_8018ADF0(s32); +extern void func_801838A8(u8*); +extern void func_80181D30(u8* arg0); +extern void func_8012AD44(s32 *a0, s16 a1); +extern void func_8012B200(u8 *a0); +extern void func_80181F68(void *a0); +extern s16 D_801E43A8; +extern s16 D_801E43B0; +extern void func_80181F04(void *a0); +extern s32 func_80181F70(void *arg0); +extern void func_80181FA8(u8 *arg0); +extern void func_80181FE8(void *arg0); +extern void func_8012B21C(); +extern void func_80186178(s32*); +extern void func_80185B38(s32 a0); +extern void func_8018203C(s32 a0); +extern u16 D_801E43B4; +extern u8 D_80195AFA[]; +extern u8 D_8019103C; +extern void func_8018A1D8(s32 a0); +extern void func_8012B23C(s32 a0); +extern s32 func_801873FC(s32 a0); +extern u16 D_80126B96; +extern s16 D_80126B98; +extern s32 func_801820E4(void *arg0); +extern void func_801821C8(s32 *arg0); +extern void func_80182284(s32 arg0); +extern void func_801822B4(s32 arg0); +extern u16 D_801E4BBC; +extern u8 D_80062BDC; +extern u8 D_80195B2C[]; +extern void func_80183B0C(void); +extern void func_80186C0C(void *a0); +extern void func_80186C70(void *a0); +extern void func_80186CA8(); +extern void func_80186D74(void); +extern void func_80186F14(void *a0); +extern void func_801822EC(u8 *arg0); +extern s32 func_8012CBCC(s32 a0); +extern void func_8018A3B4(void *a0); +extern s32 func_8018ACB4(void *a0); +extern void func_8018AEB4(s32 a0, s32 a1); +extern s32 func_8018675C(void *a0); +extern void func_80186F58(void *a0); +extern void func_80184C20(s32 a0); +extern void func_80186BB8(); +extern void func_80186D00(void); +extern void func_801900F4(void); +extern void func_80184184(s32 a0); +extern u8 D_80195B3C[]; +extern void func_801824D0(s32 s0); +extern void func_80182740(void *arg0); +extern void func_801827A8(void *a0); +extern s32 func_80186144(void *a0, s32 a1); +extern void func_80182810(void *arg0); +extern void func_801828D8(void *arg0); +extern void (*D_80191060[])(void); +extern s32 func_8012CBA4(s32 a0); +extern void func_8018655C(s32 a0); +extern void func_80182918(s32 a0); +extern void func_8018AAAC(void); +extern s16 D_80195B24[]; +extern void func_801840E8(s32 a0); +extern void func_801856E4(void); +extern void func_8018415C(void *a0); +extern void func_80182810(void *a0); +extern void func_801828D8(); +extern void func_80182A8C(s32 s0); +extern void func_80186178(s32 *a0); +extern void func_80182D80(s32 arg0); +extern void func_8018622C(); +extern void func_80182DCC(void *a0); +extern void func_80182E04(s32 arg0); +extern u16 D_801E4398; +extern u16 D_801E439C; +extern s32 D_801E43C0; +extern s32 D_801E43C4; +extern void func_80185764(); +extern void func_80182EB0(void); +extern void func_80182F78(s32 arg0); +extern s16 D_801E43AC; +extern void func_80182FAC(s32 *s0); +extern void func_80189FC4(s32 a0); +extern void func_8018300C(void *arg0); +extern void func_80183060(void *a0); +extern void func_80183074(s32 *a0); +extern u16 D_801E43C8; +extern void func_8018A7D8(u16 *a0, u16 *a1, s16 *a2, s32 a3); +extern func_801830F4(s32 a0, s32 a1); +extern void func_80183160(void *a0); +extern void func_8002AB64(void); +extern s32 func_80183174(void *arg0); +extern void func_80183218(void *arg0); +extern void func_80186600(s32 a0); +extern void func_80186DE8(s32 a0); +extern void (*D_801962C0[])(void *); +extern void func_801831A4(void *a0); +extern void func_80183200(void *a0); +extern void func_80186ADC(s32 a0); +extern void func_801858C4(); +extern void func_801834C8(void *arg0); +extern void func_80183524(s32 arg0); +extern void func_80132DC4(s32 a0, s32 a1, s32 a2); +extern u16 D_80195ADC[]; +extern void func_8018A968(s32 a0); +extern void func_80183584(void *arg0); +extern s32 D_801E43A0; +extern s16 D_80195AC6[]; +extern s16 D_80195AE0[]; +extern s16 D_80195AEC; +extern s32 D_80195B1C[]; +extern void func_8012CBF4(s32 a0); +extern void func_80182F78(); +extern void func_8018592C(u8 *arg0); +extern void func_80183610(u8 *arg0); +extern void func_80187348(s32 a0, s32 a1); +extern void func_80187280(s32 a0, s32 a1); +extern void func_801851E0(s32 a0); +extern s32 D_801E43DC; +extern s32 D_801E43E0; +extern s32 D_801E43E4; +extern s32 D_801E43E8; +extern volatile s32 D_801E43EC; +extern volatile s32 D_801E43F0; +extern volatile s32 D_801E43F4; +extern volatile s32 D_801E43F8; +extern u16 D_80195E44[]; +extern u16 D_80195E78[]; +extern u16 D_80195EAC[]; +extern u16 D_80195EE0[]; +extern u16 D_80126614; +extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); +extern void func_8001C1E4(s32); +extern s32 func_80183C7C(void *a0); +extern void (*D_80196320[])(void); +extern void func_80183D18(void *a0); +extern void (*D_80196328[])(void); +extern void func_80183D54(s32 a0); +extern u16 D_801D323A; +extern u16 D_800B99D8; +extern u8 D_801E44A0; +extern u8 D_801E44A1; +extern void func_80132784(s32 a0, s32 a1, u32 a2); +extern void func_80183D90(void *arg0); +extern void func_8001C924(s32 a0, void *a1); +extern void func_800233CC(void *a0, unsigned short a1); +extern void func_8001CD9C(int a0, void *a1); +extern u8 D_801F12E8; +extern u8 D_801D3230; +extern u8 D_801E44A4; +extern u8 D_801E2E70; +extern u8 D_801E2E74; +extern void func_80183FCC(s32 param_1); +extern s16 D_8019633C; +extern s16 D_8019633E; +extern s16 D_80196340; +extern s16 D_80196342; +extern s16 D_80196344; +extern s16 D_80196346; +extern void func_801841E0(void *a0); +extern void (*D_801963E8[])(void); +extern void func_8018431C(void *a0); +extern s32 D_801E44E0; +extern s32 D_801963D0; +extern s32 *D_801D6D94; +extern void func_80184358(u8 *arg0); +extern void func_8013240C(s32 a0, s32 a1, u32 a2); +extern void func_80184404(s32 a0); +extern s32 D_801963FC; +extern void func_80184480(s32 arg0); +extern void func_801844D4(s32 arg0); +extern Blk20 D_800AE620; +extern void RotMatrixY(s32 a0, void *a1); +extern void func_8018454C(s32 a0); +extern D_80195AF4_t D_80195AF4[]; +extern D_80195AF6_t D_80195AF6[]; +extern s16 D_80126CB4; +extern s16 D_80126CB8; +extern void *func_8018ABE0(s32 a0); +extern void func_801846CC(void *a0); +extern s32 func_80187508(); +extern void func_801849E4(void *a0); +extern void func_80184828(void *a0); +extern void func_80184A34(void *arg0); +extern void func_80184A8C(void *a0); +extern u8 D_80196414[]; +extern s32 func_80184CA4(void *arg0); +extern void func_80184D24(void *arg0); +extern void (*D_80196470[])(void); +extern void func_80184D44(void *a0); +extern void func_80184D80(void *a0); +extern void func_80184D98(void *arg0); +extern void func_8018AF58(s32 a0); +extern void func_80184E30(s32 arg0); +extern void func_8012CAE4(void *a0); +extern void func_8012C1B8(void); +extern void func_8001C2C4(s32 a0); +extern s32 func_8012AD50(void *a0); +extern u16 D_80195B4C[]; +extern u16 D_80195B68[]; +extern D_80195D74_Entry D_80195D74[]; +extern void (*D_80196490[])(void); +extern void func_80184EC0(void *a0); +extern s32 D_801E4474[]; +extern s32 D_801E4418[]; +extern u8 D_801E4AA0[]; +extern u8 D_801E4AA4[]; +extern u8 D_80063548[]; +extern void func_8012B21C(void *a0); +extern void func_801853CC(s32 a0); +extern void func_80185214(s32 arg0); +extern void func_80186A04(s32 arg0); +extern void func_80185060(s32 a0, s32 a1); +extern void func_80186B08(s32 param_1); +extern void func_801853EC(s32 arg0); +extern void func_80186424(s32 arg0); +extern u16 D_801E43BC; +extern void func_8018548C(void *a0); +extern void (*D_801964A8[])(void); +extern void func_80132F40(s32 arg0); +extern void func_80186F60(s32 arg0); +extern void func_801865D0(void *arg0); +extern void func_80189E34(s32 arg0, s32 arg1); +extern void func_8018A0E4(s32 arg0); +extern void func_8018550C(void *a0); +extern void func_80185858(s32 a0, void *a1, void *a2); +extern Blk8 D_801E2E9C; +extern Blk8 D_801E2EA4; +extern Blk8 D_801E2EAC; +extern Blk8 D_801E2EB4; +extern Blk8 D_801E2EBC; +extern Blk8 D_801E2EC4; +extern void func_80185764(void *a0); +extern void func_8012C218(void *a0); +extern void func_801858C4(void); +extern void func_801900E0(void); +extern void func_8018AB84(void); +extern s32 func_80185A88(s32 arg0, s32 arg1); +extern void func_80185A04(s32 param_1, s32 param_2, s16 param_3); +extern s32 D_801270CC; +extern s32 func_80185D6C(); +extern s32 func_80185D84(s32 arg0); +extern void func_80185DD0(s32 target, u16 *cur, s32 step); +extern s32 D_801959E0[]; +extern u16 func_80185E54(s32 arg0); +extern s32 func_80132E6C(s16 *a0); +extern s32 func_801860F4(s16 *arg0); +extern TBL_80186144 D_80195AF8[]; +extern MainStruct *D_801E43A4; +extern void func_8018622C(MainStruct *a0); +extern void *D_801959EC[]; +extern void *D_801959F0[]; +extern void func_80132EC4(void *a0, s16 a1); +extern void func_8012A860(void *a0, s32 a1); +extern s32 func_8012D714(s32 param_1, u32 param_2); +extern s32 func_8012B864(s32 a0); +extern void func_80186F9C(s32 a0, s32 a1); +extern s16 D_801E43B8; +extern s32 D_80195AD0[]; +extern s32 D_80195AD2[]; +extern s32 func_8018687C(s32 a0); +extern s32 func_8018692C(s32 arg0); +extern s32 D_80196208; +extern void func_801869E0(s32 *param_1); +extern s32 D_801961B8; +extern s32 D_801961E0; +extern void func_80186ADC(s32 arg0); +extern void func_80186BB8(void); +extern F5C_S *D_801E43CC[]; +extern void func_80186CA8(void *a0); +extern void func_80186F60(s32 a0); +extern void func_80187070(s32 arg0); +extern Row16_t D_80195B78[]; +extern Row16_t D_80195B7A[]; +extern Row16_t D_80195B7C[]; +extern Row16_t D_80195B7E[]; +extern void func_801870BC(void *a0); +extern void GsMapModelingData(u32 *); +extern u32 D_801BD9D4[]; +extern u8 D_801961BE[]; +extern u8 D_801961E6[]; +extern void func_801871E4(void); +extern u16 D_80195B4A[]; +extern s32 D_80195CA4[]; +extern void func_80187280(s32 arg0, s32 arg1); +extern s32 D_801B82F4; +extern s32 D_801BB8DC; +extern u8 D_80195B64; +extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); +extern s32 func_80187560(); +extern s32 func_80187508(s32 param_1); +extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); +extern s32 func_80187560(s32 a0, s32 a1, s32 a2); +extern void func_8018B16C(s32 a0, s32 a1, s32 a2); +extern Blob8_80187664 D_801E2EF0; +extern void func_80187664(s32 arg0); +extern Blob8_801876B0 D_801E2EF8; +extern u8 D_801202A0[]; +extern void func_801876B0(s32 arg0); +extern void func_80187768(void *a0); +extern void func_801838A8(u8* a0); +extern s32 func_8012CE2C(s32 a0); +extern void func_801877FC(s32 s0); +extern void func_801878C0(void *arg0); +extern void func_80182810(); +extern void func_8018791C(void *a0); +extern void func_80181900(void *a0); +extern void func_801879DC(void *a0); +extern void func_80181900(void*); +extern void func_80187A0C(s32 *a0); +extern void func_80186F58(); +extern void func_80187A38(void *arg0); +extern void func_80187A8C(void *arg0); +extern void func_80181F04(void *arg0); +extern void func_80187AD0(s32 arg0); +extern void func_80187B0C(s32 arg0); +extern void func_80187B48(s32 arg0); +extern s32 func_80185D84(s32 a0); +extern s32 func_80181F70(); +extern void func_80187B7C(int param_1); +extern void func_80181FA8(); +extern void func_80187BB4(s32 arg0); +extern void func_80181FE8(); +extern void func_80187BE4(s32 *a0); +extern void func_8018A174(s32 a0); +extern void func_80187C14(s32 a0); +extern s32 func_80182098(void *a0); +extern void func_80187C9C(int param_1); +extern s32 func_801820E4(void *a0); +extern void func_80187CD4(int param_1); +extern void func_801821C8(s32 *a0); +extern void func_80187D0C(s32 *a0); +extern void func_80187D4C(s32 param_1); +extern void func_80187D90(void *a0); +extern void func_80187DCC(u8 *arg0); +extern s32 func_80184CA4(); +extern void func_80187E18(u8 *arg0); +extern void func_80187F1C(void *a0); +extern void func_80187F58(void); +extern void func_80187F88(void); +extern void func_80187F90(void *a0); +extern void func_80182E78(void *a0); +extern void func_80187FCC(void *a0); +extern void func_8018802C(void *a0); +extern void func_80182FAC(); +extern void func_80188068(void *a0); +extern s32 func_801830F4(s32 arg0, s32 a1); +extern void func_8018810C(void *a0); +extern void func_80188150(void *a0); +extern s32 func_801830F4(s32, s32); +extern void func_80188194(s32 a0); +extern s32 D_80062BC0; +extern void func_801881F4(s32 a0); +extern s32 func_80183174(void *a0); +extern void func_801882A8(int param_1); +extern void func_801882E0(void); +extern void func_801882E8(void *a0); +extern void (*D_80196184[])(void); +extern s32 D_801E4490; +extern s32 D_801E448C; +extern void func_80188324(s32 a0); +extern void func_801883C4(void); +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_80132288(s32 *a0, s32 *a1, s32 a2); +extern s32 D_80196348; +extern s32 D_8019637C; +extern s32 D_801963B8; +extern void func_80188404(void *a0); +extern void func_801884C8(s32 a0); +extern void func_80183FCC(); +extern u32 D_801E44EC; +extern void (*D_80196338[])(void); +extern void func_8018850C(s32 *s0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_80184480(s32 a0); +extern u8 D_801BB8F4[]; +extern u8 D_8019640C[]; +extern u8 D_80196448[]; +extern void func_801885BC(void *a0); +extern void func_80188690(void *a0); +extern void func_801886BC(void); +extern void func_80188720(void *a0); +extern void func_8018874C(s32 arg0); +extern void func_801887CC(s32 arg0); +extern void func_80189F84(s32 arg0); +extern void func_80188830(s32 a0); +extern void func_801888EC(void *a0); +extern void func_8018893C(s32 arg0); +extern void func_801822B4(s32 a0); +extern void func_80188968(s32 arg0); +extern void (*D_801964BC[])(void); +extern void func_801889D4(void *a0); +extern void func_80143994(s32 a0, s32 a1); +extern void * func_80188A10(void *a0); +extern void func_80188A5C(void *arg0); +extern void func_8018A658(s32 a0); +extern void func_8018AC10(s32 a0); +extern void func_80188A7C(void *a0); +extern void (*D_801964FC[])(void); +extern void func_80188BB4(void *a0); +extern s32 func_80143970(s32 a0); +extern u8 D_80196544; +extern u8 D_80196578; +extern s32 D_80196514[]; +extern s32 D_80196518[]; +extern s16 D_80196534[]; +extern s16 D_80196536[]; +extern void func_80188BF0(void *a0); +extern void func_80188F38(void); +extern void func_80188F08(u8 *a0); +extern s32 D_801965A0; +extern s32 func_801892CC(s32 a0); +extern void func_8018A47C(s32 a0); +extern void func_8012BE54(s32 a0); /* canonical void -> cast at use */ +extern void func_80188FF0(s32 a0); +extern void (*D_801965B0[])(void); +extern void func_80189204(void *a0); +extern void func_80189240(s32 a0); +extern void func_80189268(s32 a0); +extern u16 D_801964F4; +extern u16 D_801964F6; +extern s32 func_801892CC(s32 arg0); +extern void (*D_801965C0[])(void); +extern void func_801894C8(void *a0); +extern void func_80189504(void *a0); +extern void (*D_801965D4[])(void); +extern void func_801895A4(void *a0); +extern void func_801895E0(void *a0); +extern void (*D_8019660C[])(void); +extern void func_80189AF4(void *a0); +extern void (*D_801966A0[])(void); +extern void func_80189C90(void *a0); +extern void (*D_801966B8[])(void); +extern void func_80189CCC(void *a0); +extern void (*D_80196760[])(void); +extern void func_80189D08(void *a0); +extern void (*D_801967C4[])(void); +extern void func_80189D44(void *a0); +extern void (*D_801967CC[])(void); +extern void func_80189D80(void *a0); +extern void (*D_80196814[])(void); +extern void func_80189DBC(void *a0); +extern void (*D_80196868[])(void); +extern void func_80189DF8(void *a0); +extern u8 *func_8012913C(s32 a0); +extern u16 D_800B99DC; +extern s32 func_80132EF4(s32 a0, s32 a1); +extern void func_80189F44(s32 arg0); +extern void func_80189F64(void); +extern void func_80189FA4(void *a0); +extern void func_80129350(s32 a0, s32 a1); +extern Blk16_801E2F08 D_801E2F08; +extern void func_8018A174(s32 arg0); +extern Blk16_8018A1D8 D_801E2F18; +extern u8 *func_8018A30C(s32 a0, s32 a1); +extern u8 * func_8018A30C(s32 a0, s32 a1); +extern Blob8_8018A47C D_801E2F28; +extern void func_8018A6A0(s32 a0, Blob8_8018A47C *a1); +extern Blob8_8018A4C4 D_801E2F30; +extern Blk16_8018A4C4 D_801E2F38; +extern void func_8018A4C4(s32 a0); +extern void func_8018A7D0(void); +extern s32 func_8012C51C(void *a0, s32 a1); +extern u16 D_80195AD6; +extern s32 D_801E4A58[]; +extern s32 D_801E4A84; +extern void func_8018AA88(void); +extern void * func_8018ABE0(s32 a0); +extern s32 func_8018AC48(s32 a0); +extern s32 func_8018AD20(s32 a0); +extern void func_8018AD8C(s32 arg0, s32 arg1); +extern void func_8018ADF0(s32 arg0); +extern u8 D_801964D4[]; +extern Blob8_8018B058 D_801E2F00; +extern u8 D_80196870[]; +extern void func_8018B058(s32 a0); +extern u8 D_80196880[]; +extern u8 D_80196874[]; +extern void func_8018B2DC(void); +extern u8 D_801E44F0[]; +extern s32 func_8018B300(void); +extern void func_8018B344(void *arg0); +extern void func_8012A828(s32 a0, void *a1); +extern u8 D_801BB8F8[]; +extern u8 D_801964C4[]; +extern M2C_UNK D_80190C0C; +extern u8 D_801964DC[]; +extern void func_8018B368(void *a0); +extern void func_8018B408(void); +extern void func_8018B410(u8 *a0); +extern void func_8018B438(void); +extern void func_8018B440(s32 a0); +extern void func_8018B4D0(s32 a0); +extern void func_8018B554(s32 a0); +extern void (*D_801965C8[])(void); +extern void func_801895E0(); +extern void func_8018B638(s32 arg0); +extern void func_801292C8(u8 *a0); +extern void func_8018B6A0(s32 arg0); +extern void func_8001CB6C(u8*, s32, s32, s32); +extern u8 D_80196614[]; +extern u8 D_80196620[]; +extern u8 D_80196660[]; +extern void func_8018B6E8(s32 param_1); +extern s32 func_80128ED8(s32, s32*); +extern void func_801292C8(u8*); +extern void func_8018B7A4(s32 param_1); +extern void func_8018B7F8(s32 param_1); +extern u8 D_801921F8; +extern void func_8018B8CC(s32 param_1); +extern void func_8018B93C(void); +extern void func_801439FC(s32 a0); +extern void func_8018B96C(s32 a0); +extern u8 D_801966A8[]; +extern u8 D_801966B0[]; +extern void func_8018BA38(s32 param_1); +extern void func_8018BAE4(s32 arg0); +extern void func_8012931C(void *); +extern void func_8018BB58(s32 a0); +extern s32 D_80196768; +extern s32 D_80196774; +extern void func_8018BB9C(s32 param_1); +extern void func_8018BC48(s32 a0); +extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); +extern s32 D_801967D4; +extern void func_8018BCA4(s32 param_1); +extern s32 func_80128DB4(s32 a0, s32 *a1); +extern s32 func_8018BCEC(void *a0); +extern u8 D_8019681C[]; +extern u8 D_80196828[]; +extern void func_8018BD14(s32 param_1); +extern void func_8018BD90(s32 a0); +extern u8 D_801E4918; +extern u8 D_801E491C; +extern u8 D_801E2F50; +extern u8 D_801E2F54; +extern void func_8018BDD0(s32 param_1); +extern void func_8018BE88(s32 arg0); +extern void func_8018BF88(u8 *a0); +extern void func_8018BFDC(u8 *a0); +extern void func_8018C008(s32 arg0); +extern void (*D_801968F4[])(void); +extern void func_8018C08C(void *a0); +extern short D_80196B30; +extern void func_8018C0C8(void *arg0); +extern void (*D_80196B80[])(void); +extern void func_8018C108(void *a0); +extern s32 D_80196AE8; +extern void func_8018C144(void *a0); +extern void func_8018C1C0(void *a0); +extern void func_8018C204(void *a0); +extern void (*D_80196B8C[])(void); +extern void func_8018C274(void *a0); +extern void func_8018C2B0(u8 *a0, s8 a1); +extern void (*D_80196B98[])(void); +extern void func_8018C358(void *a0); +extern void func_8018C394(s32 *a0); +extern void func_8018C3C4(void * arg0); +extern void func_8018C3EC(void); +extern void (*D_80196BA0[])(void); +extern void func_8018C418(void *a0); +extern void func_8018C454(void *a0); +extern void func_8018C598(void *a0, s32 a1, s32 a2, s32 *a3, u16 a4, u16 a5); +extern void (*D_80196BB0[])(void); +extern void func_8018C66C(void *a0); +extern void func_8001CA88(s32 a0, void *a1); +extern void func_8018BDD0(); +extern void func_8018C008(); +extern void func_8018C6A8(void *a0); +extern void func_8018BE88(s32 a0); +extern void func_8018C758(void *a0); +extern void func_8018C84C(s32 a0); +extern void func_8018BFBC(s32 a0); +extern void func_8018C928(int param_1); +extern void func_8018C978(s32 arg0); +extern void func_8018CA1C(void); +extern void func_8018CA3C(s32 a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern s32 D_80196910; +extern s32 D_80196B68; +extern s32 D_80196B58; +extern s32 D_80196A60; +extern void func_8018CA74(s32 param_1); +extern void func_8018C0C8(void *a0); +extern void func_8018CB70(void *arg0); +extern void func_8018CBF8(s32 *a0); +extern u8 D_801E4958[]; +extern u8 D_801E495C; +extern u8 D_801E2F58; +extern u8 D_801E2F5C; +extern void func_8018CC28(s32 param_1); +extern void func_8018CCF8(s32 param_1); +extern void func_8018CD80(s32 param_1); +extern u8 D_801E2F60; +extern u8 D_801E2F64; +extern void func_8018CE04(s32 param_1); +extern void func_8018CEE0(void *param_1); +extern u8 D_801F1988; +extern u8 D_801F2138; +extern void func_8018CF58(s32 param_1); +extern void func_8018C3C4(void *arg0); +extern void func_8018D04C(s32 param_1); +extern void func_80016450(s32 a0, s32 a1); +extern void func_8018D144(s32 param_1); +extern void func_8018D21C(void *a0); +extern void func_8001C1E4(s32 a0); +extern s16 D_801BDCD0; +extern void func_8018D270(void *a0); +extern void func_8018D318(s32 a0); +extern void func_8018D43C(void); +extern void func_8018D488(void); +extern void (*D_80196C64[])(void); +extern s16 D_80196C44[]; +extern void func_8018D4D8(void *param_1); +extern void func_8018D608(s32 a0); +extern void func_8018D6B0(s32 a0); +extern void func_8018D73C(void *a0); +extern void func_8018D7DC(void *a0); +extern void func_8018EA04(s32 a0); +extern u8 D_80196BEC[]; +extern void func_8018D7F0(void *a0); +extern void func_8018D8A8(void *a0); +extern void func_8018D904(void *a0); +extern void func_8018F414(void); +extern void func_8018D918(void *a0); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_8018D964(void *a0); +extern void func_8018D9A4(void *a0); +extern void func_8018DA40(void *a0); +extern void func_8018F704(void); +extern void func_8018DA8C(void *a0); +extern void func_8018DAD8(void); +extern void (*D_80196C9C[])(void); +extern void func_8018DAE0(void *a0); +extern s32 D_80196C14; +extern void func_8018DB1C(s32 arg0); +extern void func_8001C97C(s32 *a0); +extern s32 D_80196BBC; +extern u8 D_801D852C[]; +extern u8 D_801D8B8C[]; +extern s32 D_800636C8; +extern u16 D_80126B6A; +extern u16 D_80126B72; +extern void func_8018DB40(void *a0); +extern s32 func_8012D714(s32 a0, u32 a1); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern u8 D_801D9044; +extern void func_8018DCD8(s32 a0); +extern void func_801439C0(u8 *a0); +extern void func_8018DDFC(void *a0); +extern void func_8018DE5C(void *a0); +extern void func_8018DEB8(s16 param_1); +extern void (*D_80196CB0[])(void); +extern void func_8018DF88(void *a0); +extern void func_8018E22C(void); +extern void func_8018E234(void *a0); +extern void func_8018E288(void *a0); +extern void (*D_80196CC0[])(void); +extern void func_8018E400(void *a0); +extern void func_8018E43C(void *a0); +extern void func_8018E6D4(void); +extern void func_8018E6DC(void *a0); +extern void func_8018E730(void *a0); +extern void func_8018E7E4(); +/* ==== end §8b carried decl layer ==== */ + + +void func_8018EA04(s32 param_1) { + struct { + s16 f10; + s16 f12; + s16 f14; + s16 pad; + s16 f18; + s16 f1A; + s16 f1C; + } buf; + s16 cnt = 0x1C; + s16 spd = 0xE00; + s16 idx; + + buf.f10 = -0x80; + buf.f12 = -0x880; + buf.f18 = 0; + buf.f1A = 0; + idx = param_1; + + switch (idx) { + case 0: + buf.f12 = -0x8C0; + buf.f14 = -0x12C0; + buf.f1C = 0x60; + break; + case 1: + cnt = 0xA; + buf.f12 = -0xAC0; + buf.f14 = -0xBC0; + buf.f1A = 0xA0; + buf.f1C = -0xC0; + break; + case 2: + cnt = 0x14; + buf.f12 = -0x7C0; + buf.f14 = -0xBC0; + buf.f1A = -0x80; + buf.f1C = -0x80; + break; + case 3: + buf.f14 = -0x680; + buf.f1C = 0xE0; + break; + case 4: + buf.f14 = 0x500; + buf.f1C = 0xE0; + break; + case 5: + spd = 0xA00; + buf.f10 = -0x500; + buf.f14 = 0xB40; + buf.f1C = 0xE0; + break; + case 6: + spd = 0x200; + buf.f10 = -0x200; + buf.f14 = 0x740; + buf.f1C = 0xC0; + break; + case 7: + spd = 0xA00; + buf.f10 = 0x100; + buf.f14 = 0x900; + buf.f1C = 0xC0; + break; + case 8: + spd = 0x200; + buf.f10 = -0x200; + buf.f14 = 0xB40; + buf.f1C = 0xC0; + break; + case 9: + spd = 0x200; + buf.f10 = -0x380; + buf.f14 = 0xB40; + buf.f1C = 0xC0; + break; + } + func_8018EB60(cnt, &buf.f10, &buf.f18, spd); +} + + +void func_8018EB60(s16 arg0, u16 *arg1, void *arg2, s16 arg3) { + u8 *s0; + u32 r; + s16 rot[3]; + s16 mat[16]; + s16 *m; + s16 i; + s32 bound; + + i = 0; + if (arg0 > 0) { + m = &mat[0]; + bound = arg0; + do { + s0 = func_8012913C(0xA); + if (s0 != 0) { + r = rand(); + rot[0] = (r & 0x7F) * 8 + 0xF40; + rot[1] = arg3 + ((r & 0x7F00) >> 5); + rot[2] = 0; + RotMatrixYXZ(rot, m); + ApplyMatrixSV(m, arg2, rot); + *(u16 *)(s0 + 6) = arg1[0] + rot[0]; + *(u16 *)(s0 + 0xA) = arg1[1] + rot[1]; + *(u16 *)(s0 + 0xE) = arg1[2] + rot[2]; + *(s32 *)(s0 + 0x10) = rot[0] << 11; + *(s32 *)(s0 + 0x14) = rot[1] << 11; + *(s32 *)(s0 + 0x18) = rot[2] << 11; + } + i++; + } while (i < bound); + } +} + + + +extern void (*D_80196CD4[])(void); + +void func_8018ECB8(void *a0) { + D_80196CD4[*(u16 *)((s32)a0 + 0x2)](); +} + + +#include "common.h" + +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_800D387C[]; + +void func_8018ECF4(s32 arg0) { + s32 iVar1; + + iVar1 = *(s32 *)(arg0 + 0x20); + ((void (*)(s32, s32, s32, s32))func_8001CC3C)(iVar1, (s32)&D_800D387C, 0x270, 0x120); + *(u8 *)(iVar1 + 0x27) = 0x9C; + *(u16 *)(iVar1 + 0x1A) = 0x7000; + *(u16 *)(iVar1 + 0x18) = 0x7000; + *(u8 *)(iVar1 + 0x26) = 0x90; + *(u8 *)(iVar1 + 0x25) = 0x90; + *(u8 *)(iVar1 + 0x24) = 0x90; + *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; + *(s16 *)(arg0 + 0x2C) = 0x46; + *(s16 *)(arg0 + 0x2) += 1; +} + + +#include "common.h" + +extern void func_8012931C(void *); +extern void func_801292C8(u8 *a0); + +void func_8018ED84(s32 arg0) { + s32 v0; + s32 s0; + s32 pad[4]; + + v0 = *(u16 *)(arg0 + 0x2C) - 1; + *(u16 *)(arg0 + 0x2C) = v0; + s0 = *(s32 *)(arg0 + 0x20); + if ((s16)v0 == -1) { + func_801292C8((u8 *)arg0); + return; + } + func_8012931C((void *)arg0); + v0 = *(u8 *)(s0 + 0x26) - 2; + *(u8 *)(s0 + 0x26) = v0; + *(u8 *)(s0 + 0x25) = v0; + *(u8 *)(s0 + 0x24) = v0; +} + + + +extern void (*D_80196CDC[])(void); + +void func_8018EDF8(void *a0) { + D_80196CDC[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B2CC(s32 a0); +extern void func_8012B14C(s32 a0, s32 *a1); +extern s32 rand(void); +extern M2C_UNK D_80190C0C; +extern s32 D_80196BBC; +extern u8 D_801D9134[]; + +void func_8018EE34(s32 param_1) +{ + s32 *pb; + s32 sp10[3]; + + if (*(s32 *)(param_1 + 0x1C) != 0) { + (*(s32 *)(param_1 + 0x1C))--; + return; + } + pb = &D_80196BBC; + pb[0] = (s32)&D_801D9134; + if (func_8012C354(param_1, (s32)(pb - 1)) == 0) { + return; + } + func_8012A828(param_1, (void *)&D_80190C0C); + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(param_1 + 0x70) * 0x200; + func_8012B2CC(param_1); + sp10[0] = 0; + sp10[1] = 0xFFF20000; + sp10[2] = ((rand() & 0xF) + 0x28) * -0x1000; + func_8012B14C(param_1, sp10); + *(s32 *)(param_1 + 0x48) = 0x1C000; + *(u16 *)(param_1 + 0xDC) = (rand() & 0x7F) - 0x40; + *(s32 *)(param_1 + 0x1C) = 0x12; + *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; +} + + +extern void func_8012AD80(s32 a0); + +void func_8018EF20(void *a0) { + s32 *p = *(s32 **)((s32)a0 + 0x20); + s32 t; + + func_8012AD80((s32)a0); + *(s16 *)((s32)p + 0x14) = *(u16 *)((s32)p + 0x14) + *(u16 *)((s32)a0 + 0xDC); + + t = *(s32 *)((s32)a0 + 0x1C) - 1; + *(s32 *)((s32)a0 + 0x1C) = t; + if (t == -1) { + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + } +} + + +extern void func_8012C218(void *a0); + void func_8018EF90(void) { + ((void (*)(void))func_8012C218)(); + } + + + +extern void (*D_80196CE8[])(void); + +void func_8018EFB0(void *a0) { + D_80196CE8[*(u16 *)((s32)a0 + 0x2)](); +} + + +#include "common.h" + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B2CC(s32 a0); +extern void func_8012AD80(s32 a0); +extern void func_8012B14C(s32 a0, s32 *a1); +extern s32 rand(void); + +extern M2C_UNK D_80190C0C; +extern s32 D_80196BBC; +extern u8 D_801D91CC[]; + +void func_8018EFEC(s32 param_1) +{ + register s32 s0 __asm__("$16"); + s32 *pb; + s32 p; + s32 t; + s32 sp10[3]; + + if (*(s32 *)(param_1 + 0x1C) != 0) { + (*(s32 *)(param_1 + 0x1C))--; + return; + } + pb = &D_80196BBC; + pb[0] = (s32)&D_801D91CC; + if (func_8012C354(param_1, (s32)(pb - 1)) != 0) { + func_8012A828(param_1, (void *)&D_80190C0C); + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(u16 *)(param_1 + 0x70) * 0x200; + func_8012B2CC(param_1); + sp10[0] = 0; + sp10[1] = 0xFFF00000; + sp10[2] = ((rand() & 0xF) + 0x58) * 0x10000; + func_8012B14C(param_1, sp10); + func_8012AD80(param_1); + p = *(s32 *)(param_1 + 0x20); + t = *(u16 *)(param_1 + 6); + *(u16 *)((u8 *)p + 8) = t; + *(s32 *)((u8 *)p + 0x48) = (s16)t; + p = *(s32 *)(param_1 + 0x20); + t = *(u16 *)(param_1 + 0xA); + *(u16 *)((u8 *)p + 0xA) = t; + *(s32 *)((u8 *)p + 0x4C) = (s16)t; + p = *(s32 *)(param_1 + 0x20); + t = *(u16 *)(param_1 + 0xE); + *(u16 *)((u8 *)p + 0xC) = t; + *(s32 *)((u8 *)p + 0x50) = (s16)t; + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2C) |= 1; + *(s32 *)(param_1 + 0x14) = 0xFFEE0000; + *(s32 *)(param_1 + 0x48) = 0x1C000; + *(s32 *)(param_1 + 0x10) >>= 4; + *(s32 *)(param_1 + 0x18) >>= 4; + *(u16 *)(param_1 + 0xDC) = (rand() & 0x1FF) - 0x100; + *(s32 *)(param_1 + 0x1C) = 0x14; + *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; + } +} + + +void func_8018F164(void *a0) { + s32 *p = *(s32 **)((s32)a0 + 0x20); + s32 t; + + func_8012AD80((s32)a0); + *(s16 *)((s32)p + 0x10) = *(u16 *)((s32)p + 0x10) + *(u16 *)((s32)a0 + 0xDC); + + t = *(s32 *)((s32)a0 + 0x1C) - 1; + *(s32 *)((s32)a0 + 0x1C) = t; + if (t == -1) { + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + } +} + + +extern void func_8012C218(void *a0); + void func_8018F1D4(void) { + ((s32 (*)(void))func_8012C218)(); + } + + + +extern void (*D_80196CF4[])(void); + +void func_8018F1F4(void *a0) { + D_80196CF4[*(u16 *)((s32)a0 + 0x2)](); +} + + +#include "common.h" + +extern void func_8012C1B8(void); +extern void func_8001C2C4(s32 a0); +extern void func_8018F2C4(s32 a0); + +extern s32 D_801270CC; +extern u8 D_80196C24[]; + +void func_8018F230(void *param_1) +{ + s32 v0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)param_1 + 0x20) = v0; + if (v0 != 0) { + func_8001C2C4(v0); + *(s32 *)((s32)param_1 + 0x58) = (s32)D_80196C24 | 0x10000000; + *(u16 *)((s32)param_1 + 0x5C) = 0x800; + func_8018F2C4((s32)param_1); + *(u16 *)((s32)param_1 + 0xDE) = *(u16 *)(*(s32 *)&D_801270CC + 6); + *(s16 *)((s32)param_1 + 0xA) = -0x880; + __asm__ __volatile__("" ::: "memory"); + *(u16 *)((s32)param_1 + 0xDC) = *(u16 *)(*(s32 *)&D_801270CC + 0xE); + *(u16 *)((s32)param_1 + 2) += 1; + } +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8018EA04", func_8018F2C4); + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; +extern s32 D_801D91D4; + +void func_8018F414(void) { + func_8013C414(&D_8019AA5C, &D_801D91D4); +} + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_8019AA5C; + extern s32 D_801DA5FC; + void func_8018F444(void) { + func_8013C414(&D_8019AA5C, &D_801DA5FC); + } + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_8019AA5C; + extern s32 D_801DB658; + void func_8018F474(void) { + func_8013C414(&D_8019AA5C, &D_801DB658); + } + + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; + +void func_8018F4A4(void) { + /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every + LATER function in this TU, which blocks a byte-true decl of a different type. + Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ + extern s32 D_801DC180; + func_8013C414(&D_8019AA5C, &D_801DC180); +} + + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; +extern s32 D_801DCD04; + +void func_8018F4D4(void) { + func_8013C414(&D_8019AA5C, &D_801DCD04); +} + + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; +extern s32 D_801DD2D4; + +void func_8018F504(void) { + func_8013C414(&D_8019AA5C, &D_801DD2D4); +} + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_8019AA5C; + extern s32 D_801DDD30; + void func_8018F534(void) { + func_8013C414(&D_8019AA5C, &D_801DDD30); + } + + + +extern void func_8013C414(void *a0, void *a1); +extern s32 D_8019AA5C; + +void func_8018F564(void) { + /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every + LATER function in this TU, which blocks a byte-true decl of a different type. + Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ + extern s32 D_801DE674; + func_8013C414(&D_8019AA5C, &D_801DE674); +} + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_8019AA5C; + extern s32 D_801DF3B4; + void func_8018F594(void) { + func_8013C414(&D_8019AA5C, &D_801DF3B4); + } + + +extern void func_8013C360(void *a0); + extern s32 D_801D91D4; + void func_8018F5C4(void) { + func_8013C360(&D_801D91D4); + } + + +extern void func_8013C360(void *a0); + extern s32 D_801DA5FC; + void func_8018F5EC(void) { + func_8013C360(&D_801DA5FC); + } + + +extern void func_8013C360(void *a0); + extern s32 D_801DB658; + void func_8018F614(void) { + func_8013C360(&D_801DB658); + } + + +extern void func_8013C360(void*); +void func_8018F63C(void) { + + extern s32 D_801DC180; + ((s32 (*)(s32 *))func_8013C360)(&D_801DC180); +} + + +extern void func_8013C360(void *a0); + extern s32 D_801DCD04; + void func_8018F664(void) { + func_8013C360(&D_801DCD04); + } + + +extern void func_8013C360(void *a0); + extern s32 D_801DD2D4; + void func_8018F68C(void) { + func_8013C360(&D_801DD2D4); + } + + +extern void func_8013C360(void *); + extern s32 D_801DDD30; + void func_8018F6B4(void) { + func_8013C360(&D_801DDD30); + } + + +extern void func_8013C360(void*); +void func_8018F6DC(void) { + + extern s32 D_801DE674; + ((s32 (*)(s32 *))func_8013C360)(&D_801DE674); +} + + +extern void func_8013C360(void*); +void func_8018F704(void) { + + extern s32 D_801DF3B4; + ((s32 (*)(s32 *))func_8013C360)(&D_801DF3B4); +} + + +#include "common.h" + +/* Fleet-canonical prototypes (ov_SC02_005 house style, per func_8018C6A8 / + * func_8018CA74 in this same TU): func_8012C1B8 is `void` returning; the + * value in $v0 is taken via a cast at the call site. */ +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_80028620(s32, void *); +extern s32 func_800CF854(void); + +extern s32 D_800A5E88; +extern s32 D_800A5E8C; +extern s32 D_800A5E90; +extern u8 D_800A5E94; +extern u8 D_800A5E95; +extern u8 D_800A5E96; + +extern s32 D_800A5E9C; +extern s32 D_800A5EA0; +extern u8 D_800A5EA4; +extern u8 D_800A5EA5; +extern u8 D_800A5EA6; + +extern s32 D_800A5EAC; +extern s32 D_800A5EB0; +extern u8 D_800A5EB4; +extern u8 D_800A5EB5; +extern u8 D_800A5EB6; + +void func_8018F72C(void *a0) +{ + s32 v0; + register s32 *s0 __asm__("$16"); + register s32 s1v __asm__("$17"); + register s32 s2v __asm__("$18"); + register s32 a0v __asm__("$4"); + s32 e9c, eac; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((u8 *)a0 + 0x20) = v0; + + if (v0 == 0) { + func_8012CAE4(a0); + return; + } + + *(s16 *)((u8 *)a0 + 0x2) = 1; + *(u32 *)(*(s32 *)((u8 *)a0 + 0x20) + 0x4) |= 0x80000000; + + __asm__("la %0, D_800A5E88" : "=r"(s0)); + s0[0] = 0; + D_800A5E8C = 0xA; + D_800A5E90 = -0xA; + D_800A5E94 = 0xCC; + D_800A5E95 = 0x99; + D_800A5E96 = 0x99; + func_80028620(0, s0); + + a0v = 1; + e9c = -0xE; + __asm__ __volatile__("" ::: "memory"); + s0[4] = 0; + __asm__ __volatile__("" ::: "memory"); + D_800A5E9C = e9c; + D_800A5EA0 = -0x8; + s2v = 0x33; + D_800A5EA4 = s2v; + D_800A5EA5 = 0x19; + s1v = 0x4C; + D_800A5EA6 = s1v; + func_80028620(a0v, &s0[4]); + + a0v = 2; + eac = 0x14; + __asm__ __volatile__("" ::: "memory"); + s0[8] = 0; + __asm__ __volatile__("" ::: "memory"); + D_800A5EAC = eac; + D_800A5EB0 = 0xF; + D_800A5EB4 = s1v; + D_800A5EB5 = s2v; + D_800A5EB6 = 0x7F; + func_80028620(a0v, &s0[8]); + + if (func_800CF854()) { + *(s16 *)((u8 *)a0 + 0x2) = 0xA; + } +} + + +#include "common.h" + +extern void func_80028620(s32, void *); +extern u8 D_80126D6C; +extern s32 D_800A5E90; +extern s32 D_800A5EA0; +extern s32 D_800A5EB0; + +void func_8018F894(void *a0) { + s32 *s0; + + if (D_80126D6C != 3) { + return; + } + + s0 = (s32 *)&D_800A5E90; + *(s16 *)((s32)a0 + 2) = 2; + *s0 = 10; + func_80028620(0, (void *)((s32)s0 - 8)); + + D_800A5EA0 = 8; + func_80028620(1, (void *)((s32)s0 + 8)); + + D_800A5EB0 = -15; + func_80028620(2, (void *)((s32)s0 + 0x18)); +} + + +extern s32 D_801270C8; + +void func_8018F91C(s32 param_1) +{ + if (D_801270C8 == 8) { + *(s16 *)(param_1 + 2) = 3; + *(s32 *)(param_1 + 0x1C) = 0x12; + } +} + + +#include "common.h" + +extern void func_80028620(s32, void *); +extern s32 D_800A5E88; +extern s32 D_800A5E8C; +extern s32 D_800A5E90; +extern u8 D_800A5E94; +extern u8 D_800A5E95; +extern u8 D_800A5E96; +extern s32 D_800A5EA0; +extern u8 D_800A5EA5; +extern s32 D_800A5EAC; +extern s32 D_800A5EB0; +extern u8 D_800A5EB4; +extern u8 D_800A5EB5; +extern u8 D_800A5EB6; + +void func_8018F944(void *a0) +{ + s32 v0; + s32 eac; + register s32 *s0 __asm__("$16"); + register s32 a0v __asm__("$4"); + + v0 = *(s32 *)((u8 *)a0 + 0x1C) - 1; + *(s32 *)((u8 *)a0 + 0x1C) = v0; + if (v0 != 0) { + return; + } + + *(s16 *)((u8 *)a0 + 0x2) = 4; + __asm__("la %0, D_800A5E88" : "=r"(s0)); + s0[0] = 0; + D_800A5E8C = -4; + D_800A5E90 = -4; + D_800A5E94 = 0xFF; + D_800A5E95 = 0x4C; + D_800A5E96 = 0; + func_80028620(0, s0); + + D_800A5EA0 = -0xE; + D_800A5EA5 = 0; + func_80028620(1, &s0[4]); + + a0v = 2; + eac = 0xA; + __asm__ __volatile__("" ::: "memory"); + s0[8] = 0; + __asm__ __volatile__("" ::: "memory"); + D_800A5EAC = eac; + D_800A5EB0 = eac; + D_800A5EB4 = 0xCC; + D_800A5EB5 = 0x99; + D_800A5EB6 = 0x99; + func_80028620(a0v, &s0[8]); +} + + +#include "common.h" + +extern s32 rand(void); +extern void func_80028620(s32, void *); +extern s32 D_801270C8; +extern s32 D_800A5E88; +extern s32 D_800A5E90; +extern s32 D_800A5EA0; +extern s32 D_800A5EB0; + +void func_8018FA34(s32 *a0) +{ + s32 v0; + s32 *s0; + s32 *s1; + /* Pin the 2nd func_80028620's first-arg (0) to its hard call reg so it + * materializes as a real SET (survives cse/const-prop), and pair it with + * the zero-byte scheduling barriers below. Without these, gcc-2.7.2's + * sched1 sinks the independent addr-calc / const-0 arg-setup PAST the + * rand()-result andi/addiu chain (S2-adjacent "class3 tie" residual, + * cookbook §25 / gcc-2.7.2-map/sched.md S1/S6); the target schedules + * each independent op BEFORE the dependent chain that follows it. */ + register s32 a0v __asm__("$4"); + + s1 = a0; + v0 = rand(); + s0 = (s32 *)&D_800A5E88; + __asm__ __volatile__("" ::: "memory"); + v0 &= 0x1F; + v0 -= 0x10; + s0[0] = v0; + + v0 = rand(); + a0v = 0; + __asm__ __volatile__("" ::: "memory"); + v0 &= 0x1F; + v0 -= 0x14; + D_800A5E90 = v0; + + func_80028620(a0v, s0); + + if (D_801270C8 != 0xA) { + return; + } + + *(s16 *)((u8 *)s1 + 0x2) = 0x5; + D_800A5EA0 = 0xE; + func_80028620(1, &s0[4]); + + D_800A5EB0 = -0xA; + func_80028620(2, &s0[8]); +} + + +#include "common.h" + +extern void func_80028620(s32, void *); +extern s32 D_801270C8; +extern s32 D_800A5E88; +extern s32 D_800A5E90; +extern s32 D_800A5EA0; +extern s32 D_800A5EB0; + +void func_8018FAE0(s32 a0) { + register s32 *s0 __asm__("$16"); + register s32 *s1 __asm__("$17"); + s32 v0; + + s1 = (s32 *)a0; + s0 = &D_800A5E88; + + v0 = rand(); + s0[0] = (v0 & 0x1F) - 0x10; + + v0 = rand(); + D_800A5E90 = (v0 & 0x1F) - 0xC; + + func_80028620(0, s0); + + if (D_801270C8 == 0xB) { + *(s16 *)((u8 *)s1 + 2) = 6; + D_800A5EA0 = -0xE; + func_80028620(1, (void *)((u8 *)s0 + 0x10)); + D_800A5EB0 = 0xA; + func_80028620(2, (void *)((u8 *)s0 + 0x20)); + } +} + + +#include "common.h" + +extern s32 rand(void); +extern void func_80028620(s32, void *); +extern s32 D_801270C8; +extern s32 D_800A5E88; +extern s32 D_800A5E90; +extern s32 D_800A5EA0; +extern s32 D_800A5EB0; + +void func_8018FB8C(void *a0) { + register s32 *s0 __asm__("s0"); + register s32 a0v __asm__("a0"); + s32 *s1 = (s32 *)a0; + s32 tmp; + + tmp = rand(); + s0 = (volatile s32 *)&D_800A5E88; + tmp = (tmp & 0x1F) - 0x10; + s0[0] = tmp; + tmp = rand(); + __asm__("addu %0,$zero,$zero" : "=r"(a0v)); + tmp = (tmp & 0x1F) - 0x14; + D_800A5E90 = tmp; + + func_80028620(a0v, s0); + + if (D_801270C8 == 0xC) { + *(s16 *)((s8 *)s1 + 2) = 0x7; + D_800A5EA0 = 0xE; + func_80028620(1, (void *)((s32)s0 + 0x10)); + __asm__("" : "=r"(s0) : "0"(s0)); + D_800A5EB0 = -0xA; + func_80028620(2, (void *)((s32)s0 + 0x20)); + } +} + + +#include "common.h" + +/* Tag renamed per the project convention (src/shared/engine_types.h already carries + * struct B16_801856E4, B16_80185794, ...): the destination TU pulls in engine_types.h, + * which defines `struct B16 { s32 w[4]; };` at line 295, so a file-scope `struct B16` + * contributed by this draft is a hard "redefinition of `struct B16'" at cc1. A unique + * per-function tag is the sanctioned spelling. */ +struct B16_8018FC38 { s32 w[4]; }; + +/* §183 TYPE-adopted-TU: the destination TU already declares this symbol + * `extern s32 D_800A5E88;` at file scope ABOVE this insertion offset (the + * func_8018FA34 / func_8018FAE0 / func_8018FB8C group all spell it that way), so + * the TU's spelling is adopted verbatim here and the 16-byte view is applied by a + * cast AT THE USE SITE. `&D_800A5E88` is unchanged by the move, so §183.3's + * scalar-vs-array base-register trap does not apply — verified MATCH 43/43. */ +extern s32 D_800A5E88; +extern s32 D_800A5E90; +extern s32 D_800A5EA0; +extern s32 D_800A5EB0; +extern void func_80028620(s32, void *); +extern u8 D_80126D6C; + +void func_8018FC38(s32 a0) { + s32 s1 = a0; + struct B16_8018FC38 *s0; + s32 v0; + + v0 = rand(); + s0 = (struct B16_8018FC38 *)&D_800A5E88; + v0 = (v0 & 0x1F) - 0x10; + s0->w[0] = v0; + v0 = rand(); + + a0 = 0; + v0 = (v0 & 0x1F) - 0xC; + D_800A5E90 = v0; + __asm__("" : "=r"(a0) : "0"(a0)); + + func_80028620(a0, s0); + __asm__("" : "=r"(s0) : "0"(s0)); + + if (D_80126D6C == 0xD) { + *(s16*)(s1 + 0x2) = 0x8; + D_800A5EA0 = -0xE; + func_80028620(1, &s0[1]); + + D_800A5EB0 = 0xA; + func_80028620(2, &s0[2]); + } +} + + +#include "common.h" + +extern s32 rand(void); +extern void func_80028620(s32, void *); +extern s32 D_801270C8; +extern s32 D_800A5E88; +extern s32 D_800A5E8C; +extern s32 D_800A5E90; +extern u8 D_800A5E94; +extern u8 D_800A5E95; +extern u8 D_800A5E96; +extern s32 D_800A5EA0; +extern u8 D_800A5EA5; +extern s32 D_800A5EAC; +extern s32 D_800A5EB0; +extern u8 D_800A5EB4; +extern u8 D_800A5EB5; +extern u8 D_800A5EB6; + +void func_8018FCE4(void *a0) +{ + void *s1; + s32 *s0; + s32 v0; + s32 eac; + register s32 a0v __asm__("$4"); + + s1 = a0; + v0 = rand(); + s0 = (s32 *)&D_800A5E88; + __asm__ __volatile__("" ::: "memory"); + v0 = (v0 & 0x1F) - 0x10; + s0[0] = v0; + + v0 = rand(); + a0v = 0; + __asm__ __volatile__("" ::: "memory"); + v0 = (v0 & 0x1F) - 0x14; + D_800A5E90 = v0; + + func_80028620(a0v, s0); + + if (D_801270C8 == 0xD) { + *(s16 *)((u8 *)s1 + 2) = 9; + s0[0] = 0; + D_800A5E8C = 0xA; + D_800A5E90 = -0xA; + D_800A5E94 = 0xCC; + D_800A5E95 = 0x99; + D_800A5E96 = 0x99; + func_80028620(0, s0); + + D_800A5EA0 = -8; + D_800A5EA5 = 0x19; + func_80028620(1, &s0[4]); + + a0v = 2; + eac = 0x14; + __asm__ __volatile__("" ::: "memory"); + __asm__("" : "=r"(s0) : "0"(s0)); + s0[8] = 0; + __asm__ __volatile__("" ::: "memory"); + D_800A5EAC = eac; + D_800A5EB0 = 0xF; + D_800A5EB4 = 0x4C; + D_800A5EB5 = 0x33; + D_800A5EB6 = 0x7F; + func_80028620(a0v, &s0[8]); + } +} + + +#include "common.h" + +extern void func_80028620(s32, void *); +extern u8 D_80126D6C; +extern s32 D_800A5E90; +extern s32 D_800A5EA0; +extern s32 D_800A5EB0; + +void func_8018FE18(void *a0) { + if (D_80126D6C == 0x11) { + s32 *s0 = &D_800A5E90; + + *(s16 *)((s32)a0 + 0x2) = 0xA; + *s0 = 0xA; + func_80028620(0, (void *)((s32)s0 - 0x8)); + + D_800A5EA0 = 0x8; + func_80028620(1, (void *)((s32)s0 + 0x8)); + + D_800A5EB0 = -0xF; + func_80028620(2, (void *)((s32)s0 + 0x18)); + } +} + + +#include "common.h" + +extern s32 D_801270C8; + +extern s32 D_800A5E88; +extern s32 D_800A5E8C; +extern s32 D_800A5E90; +extern u8 D_800A5E94; +extern u8 D_800A5E95; +extern u8 D_800A5E96; + +extern s32 D_800A5E9C; +extern s32 D_800A5EA0; +extern u8 D_800A5EA4; +extern u8 D_800A5EA5; +extern u8 D_800A5EA6; + +extern s32 D_800A5EAC; +extern s32 D_800A5EB0; +extern u8 D_800A5EB4; +extern u8 D_800A5EB5; +extern u8 D_800A5EB6; + +extern void func_80028620(s32, void *); + +void func_8018FEA0(void *a0) +{ + register s32 *s0 __asm__("$16"); + register s32 s1v __asm__("$17"); + register s32 s2v __asm__("$18"); + register s32 s3v __asm__("$19"); + register s32 a0v __asm__("$4"); + s32 eb0; + + if (D_801270C8 >= 0x14) { + a0v = 0; + __asm__("la %0, D_800A5E88" : "=r"(s0)); + + *(s16 *)((u8 *)a0 + 0x2) = 0xB; + + s3v = 0x16; + s0[0] = 0; + D_800A5E8C = s3v; + D_800A5E90 = 0; + D_800A5E94 = 0xB2; + D_800A5E95 = 0x66; + s1v = 0x33; + D_800A5E96 = s1v; + func_80028620(a0v, s0); + + a0v = 1; + s0[4] = 0; + D_800A5E9C = -0xE; + D_800A5EA0 = -0xE; + D_800A5EA4 = s1v; + D_800A5EA5 = 0; + s2v = 0x4C; + D_800A5EA6 = s2v; + func_80028620(a0v, &s0[4]); + + a0v = 2; + eb0 = 0xF; + __asm__ __volatile__("" ::: "memory"); + s0[8] = 0; + __asm__ __volatile__("" ::: "memory"); + D_800A5EB0 = eb0; + D_800A5EAC = s3v; + D_800A5EB4 = s2v; + D_800A5EB5 = s1v; + D_800A5EB6 = 0x7F; + func_80028620(a0v, &s0[8]); + } +} + + +#include "common.h" + +extern void func_80028620(s32, void *); +extern s32 D_801270C8; +extern u8 D_800A5E94; +extern u8 D_800A5E96; +extern s32 D_800A5E9C; +extern s32 D_800A5EA0; +extern s32 D_800A5EAC; +extern s32 D_800A5EB0; + +void func_8018FFC4(void *a0) { + u8 *s0; + + if (D_801270C8 != 0x1B) { + return; + } + + s0 = &D_800A5E94; + *(s16 *)((s32)a0 + 2) = 0xC; + *s0 = 0xFF; + D_800A5E96 = 0; + func_80028620(0, (void *)((s32)s0 - 0xC)); + + D_800A5E9C = 0; + D_800A5EA0 = -0x18; + func_80028620(1, (void *)((s32)s0 + 4)); + + D_800A5EAC = 0xB; + D_800A5EB0 = 0x1C; + func_80028620(2, (void *)((s32)s0 + 0x14)); +} + + +void func_80190068(s32 *a0) { + *(s16 *)((s32)a0 + 0x2) = 0xC; + } + + + +extern void (*D_80196CFC[])(void); + +void func_80190074(void *a0) { + D_80196CFC[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_800CF854(void); + +s32 func_801900B0(void) { + register s32 r __asm__("$2"); + s32 v; + + v = ((s32 (*)(void))func_800CF854)(); + r = v ? 9 : 8; + return r; +} + + + +extern s32 D_801E4C40; + +void func_801900E0(void) { + D_801E4C40 = 1280; +} + + + +extern s32 D_801E4C40; + +void func_801900F4(void) { + D_801E4C40 = 3796; +} + + + +extern void (*D_80196EA4[])(void); + +void func_80190108(void *a0) { + D_80196EA4[*(u16 *)((s32)a0 + 0x2)](); +} + + +#include "common.h" + + +extern void func_801465C0(void); +extern void func_80146C3C(void); + +extern void func_8001CBDC(s32 a0, s32 a1, s32 a2, s32 a3); + +extern s16 D_80196D30[][2]; +extern u8 D_80196D5C[]; +extern EffectSlot4 D_80196D68[]; +extern u8 D_80196D94[]; + +extern EffectSlot4 D_80196DCC; +extern EffectSlot4 D_80196DF4; +extern EffectSlot4 D_80196DF8; +extern EffectSlot4 D_80196E28; +extern EffectSlot4 D_80196E2C; +extern EffectSlot4 D_80196E5C; +extern EffectSlot4 D_80196E60; +extern EffectSlot4 D_80196E90; +extern EffectSlot4 D_80196E94; + +void func_80190144(void *a0) { + register void *s0 __asm__("$16"); + register void *s1 __asm__("$17"); + + s0 = a0; + s1 = ((void *(*)(void))func_801465C0)(); + if (s1 != 0) { + s32 idx; + u8 uVar1; + + *(s32 *)((s32)s0 + 0x20) = (s32)s1; + idx = *(s32 *)((s32)s0 + 0x2C); + func_8001CBDC((s32)s1, (s32)D_80196D94, D_80196D30[idx][0], D_80196D30[idx][1]); + uVar1 = D_80196D5C[*(s32 *)((s32)s0 + 0x2C)]; + *(s16 *)((s32)s1 + 0x2C) = 3; + *(u8 *)((s32)s1 + 0x27) = uVar1; + *(s16 *)((s32)s0 + 0x6) = 0; + *(s16 *)((s32)s0 + 0xA) = 0x50; + + /* The shift chain below needs a BASIC-BLOCK BOUNDARY before every copy + except the first: gcc-2.7.2 CSE is per-extended-BB, and inside one BB + it reuses the previous copy's DESTINATION address register as the next + copy's SOURCE address (costing the lui/addiu pair the target emits). + `if (c) X else X` supplies the boundary and is cross-jumped away by + jump2 AFTER regalloc, so it costs 0 instructions (128/128). + + The FIRST copy must stay in block 1 with the `lw 0x2C` / `li 0x50` + pair, or the index pseudo crosses a block and becomes a GLOBAL allocno + (regalloc map K8) -- local-alloc then hands $v0 to the 0x50 constant + and global-alloc is left with $v1 (the REGALLOC-PERM $v0<->$v1 swap). + Both must be LOCAL qtys in the same block for the target's assignment. + Its destination is therefore spelled as an INTERIOR ADDRESS of the + neighbouring symbol (idiom 7): `&D_80196E90 + 4 == &D_80196E94`, a + CSE-distinct rtx, so the next copy still recomputes its source + address. Both spellings relocate to 0x80196E94. */ +#define COND (*(s32 *)((s32)s0 + 0x2C) > 0) + *(EffectSlot4 *)((s32)&D_80196E90 + 4) = D_80196D68[*(s32 *)((s32)s0 + 0x2C)]; + if (COND) { D_80196E90 = D_80196E94; } else { D_80196E90 = D_80196E94; } + if (COND) { D_80196E60 = D_80196E90; } else { D_80196E60 = D_80196E90; } + if (COND) { D_80196E5C = D_80196E60; } else { D_80196E5C = D_80196E60; } + if (COND) { D_80196E2C = D_80196E5C; } else { D_80196E2C = D_80196E5C; } + if (COND) { D_80196E28 = D_80196E2C; } else { D_80196E28 = D_80196E2C; } + if (COND) { D_80196DF8 = D_80196E28; } else { D_80196DF8 = D_80196E28; } +#undef COND + D_80196DF4 = D_80196DF8; + D_80196DCC = D_80196DF4; + + *(s16 *)((s32)s0 + 0x2) = *(s16 *)((s32)s0 + 0x2) + 1; + } else { + ((void (*)(void *))func_80146C3C)(s0); + } +} + + +extern void func_80190384(void); + void func_80190344(void) { + func_80190384(); + } + + +extern void func_80146C3C(void); + void func_80190364(void) { + func_80146C3C(); + } + + +#include "common.h" + +extern void func_80017254(void *a0); +extern void func_800176F0(void *a0); +extern u8 D_80196DAC[]; +extern u8 D_80196DD4[]; + +void func_80190384(void) { + u8 *p; + s32 i; + + func_80017254(D_80196DAC); + i = 0; + p = D_80196DD4; + do { + func_800176F0(p); + i++; + p += 0x34; + } while (i < 4); +} + + +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); + void func_801903DC(void *arg0) { + ((void (*)(s32, s32, s32, s32))func_80146994)(0x28, 0, arg0, 0); + } + + +#include "common.h" + +extern s32 D_80126B58; +extern s32 func_8014C050(s32 a0, s32 a1); + +void func_80190408(void) { + s32 t; + + t = func_8014C050((s32)&D_80126B58, 0x28); + if (t != 0) { + *(u16 *)(t + 2) += 1; + } +} + + + +extern void (*D_80196F00[])(void); + +void func_8019044C(void *a0) { + D_80196F00[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_801904B8(s32 arg); + extern void func_80146CA0(void *a0); + void func_80190488(s32 arg0) { + func_801904B8(arg0); + ((void (*)(s32))func_80146CA0)(arg0); + } + + +#include "common.h" + +extern void func_80019064(void *a0); +extern int func_801511E0(int arg); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80149020(s32 *a0); +extern void func_80147324(s32 arg0); +extern void func_80146CA0(void *a0); +extern s32 D_80062C14; +extern s32 D_80196EB0; + +s32 func_801904B8(s32 arg) { + s32 *s0 = (s32 *)arg; + + func_80019064(&D_80062C14); + func_801511E0((int)s0); + func_80154274(s0, (s32)&D_80196EB0); + ((s32 *)s0)[0x8d] = 0; + func_80154A74((s32)s0, 0x1c); + func_801477E8(s0, 0xffe00000); + func_80149020(s0); + func_80147324(0x451); + func_80146CA0(s0); +} + + +INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8018EA04", func_80190538); + +extern void func_8014BC44(s32 a0, s32 a1); +extern void func_80151664(void); + +void func_8019084C(s32 a0) +{ + s32 s0 = a0; + + func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; + *(u8 *)(s0 + 0xA8) = 0x20; + ((void (*)(s32))func_80151664)(s0); +} + + + + + + + +