diff --git a/config/overlays.mk b/config/overlays.mk index 0ed8d7827..f6563d4c8 100644 --- a/config/overlays.mk +++ b/config/overlays.mk @@ -1686,7 +1686,7 @@ ov_SC03_028_ELF := $(ov_SC03_028_OUT).elf ov_SC03_028_MAPFILE := $(ov_SC03_028_OUT).map ov_SC03_028_LD_SCRIPT := $(ov_SC03_028_OUT).ld ov_SC03_028_SPLAT_YAML := config/splat.ov_SC03_028.yaml -ov_SC03_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_028.o,ov_SC03_028_jr_8012ACE0.o,tail2.data.o,ov_SC03_028_jr_80135888.o,tail3.data.o,ov_SC03_028_jr_80135A4C.o,tail4.data.o,ov_SC03_028_jr_80135D20.o,tail5.data.o,ov_SC03_028_jr_801380E0.o,ov_SC03_028_o0c.o,tail6.data.o,ov_SC03_028_jr_8013F350.o,tail7.data.o,ov_SC03_028_jr_8013FFD8.o,tail8.data.o,ov_SC03_028_jr_80140608.o,tail9.data.o,ov_SC03_028_jr_8015444C.o,ov_SC03_028_jr_80154C24.o,ov_SC03_028_jr_801588CC.o,ov_SC03_028_jr_80159C84.o,tail10.data.o,ov_SC03_028_jr_8015A3C8.o,tail11.data.o,ov_SC03_028_jr_8015AE2C.o,tail12.data.o,ov_SC03_028_jr_8015C32C.o,tail13.data.o,ov_SC03_028_jr_8016AB6C.o,tail14.data.o,ov_SC03_028_jr_80171B4C.o,ov_SC03_028_jr_801734BC.o,tail15.data.o,ov_SC03_028_jr_801789AC.o,ov_SC03_028_jr_80178D40.o,tail16.data.o,ov_SC03_028_jr_8017A4AC.o,tail17.data.o,ov_SC03_028_jr_8017AE2C.o,tail18.data.o,ov_SC03_028_jr_8017DF98.o,tail19.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC03_028_JTBL_INTERLEAVE := --order tail.data.o,ov_SC03_028.o,ov_SC03_028_jr_8012ACE0.o,tail2.data.o,ov_SC03_028_jr_80135888.o,tail3.data.o,ov_SC03_028_jr_80135A4C.o,tail4.data.o,ov_SC03_028_jr_80135D20.o,tail5.data.o,ov_SC03_028_jr_801380E0.o,ov_SC03_028_o0c.o,tail6.data.o,ov_SC03_028_jr_8013F350.o,tail7.data.o,ov_SC03_028_jr_8013FFD8.o,tail8.data.o,ov_SC03_028_jr_80140608.o,tail9.data.o,ov_SC03_028_jr_8015444C.o,ov_SC03_028_jr_80154C24.o,ov_SC03_028_jr_801588CC.o,ov_SC03_028_jr_80159C84.o,tail10.data.o,ov_SC03_028_jr_8015A3C8.o,tail11.data.o,ov_SC03_028_jr_8015AE2C.o,tail12.data.o,ov_SC03_028_jr_8015C32C.o,tail13.data.o,ov_SC03_028_jr_8016AB6C.o,tail14.data.o,ov_SC03_028_jr_80171B4C.o,ov_SC03_028_jr_801734BC.o,tail15.data.o,ov_SC03_028_jr_801789AC.o,ov_SC03_028_jr_80178D40.o,tail16.data.o,ov_SC03_028_jr_8017A4AC.o,tail17.data.o,ov_SC03_028_jr_8017AE2C.o,tail18.data.o,ov_SC03_028_jr_8017DF98.o,tail19.data.o,ov_SC03_028_jr_80183A74.o,ov_SC03_028_jr_801847E8.o,tail20.data.o,ov_SC03_028_jr_80184914.o,tail21.data.o,ov_SC03_028_jr_80185864.o,tail22.data.o,ov_SC03_028_jr_80185C14.o,tail23.data.o,ov_SC03_028_jr_801887A8.o,tail24.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC03_028/ov_SC03_028.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14 build/src/ov_SC03_028/ov_SC03_028_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0 build/src/ov_SC03_028/ov_SC03_028_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18 @@ -1699,6 +1699,7 @@ build/src/ov_SC03_028/ov_SC03_028_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads ( build/src/ov_SC03_028/ov_SC03_028_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_028/ov_SC03_028_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC03_028/ov_SC03_028_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178 +build/src/ov_SC03_028/ov_SC03_028_jr_80185864.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28 build/src/ov_SC03_028/ov_SC03_028_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118 ov_SC03_028_CHECK_SHA := config/check.ov_SC03_028.sha ov_SC03_028_SYMBOLS := config/symbols.ov_SC03_028.txt @@ -4595,7 +4596,7 @@ ov_SC06_030_ELF := $(ov_SC06_030_OUT).elf ov_SC06_030_MAPFILE := $(ov_SC06_030_OUT).map ov_SC06_030_LD_SCRIPT := $(ov_SC06_030_OUT).ld ov_SC06_030_SPLAT_YAML := config/splat.ov_SC06_030.yaml -ov_SC06_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_030.o,ov_SC06_030_jr_8012ACE0.o,tail2.data.o,ov_SC06_030_jr_80135888.o,tail3.data.o,ov_SC06_030_jr_80135A4C.o,tail4.data.o,ov_SC06_030_jr_80135D20.o,tail5.data.o,ov_SC06_030_jr_801380E0.o,ov_SC06_030_o0c.o,tail6.data.o,ov_SC06_030_jr_8013F350.o,tail7.data.o,ov_SC06_030_jr_8013FFD8.o,tail8.data.o,ov_SC06_030_jr_80140608.o,tail9.data.o,ov_SC06_030_jr_8015444C.o,ov_SC06_030_jr_80154C24.o,ov_SC06_030_jr_801588CC.o,ov_SC06_030_jr_80159C84.o,tail10.data.o,ov_SC06_030_jr_8015A3C8.o,tail11.data.o,ov_SC06_030_jr_8015AE2C.o,tail12.data.o,ov_SC06_030_jr_8015C32C.o,tail13.data.o,ov_SC06_030_jr_8016AB6C.o,tail14.data.o,ov_SC06_030_jr_80171B4C.o,ov_SC06_030_jr_801734BC.o,tail15.data.o,ov_SC06_030_jr_801789AC.o,ov_SC06_030_jr_80178D40.o,tail16.data.o,ov_SC06_030_jr_8017A4AC.o,tail17.data.o,ov_SC06_030_jr_8017AE2C.o,tail18.data.o,ov_SC06_030_jr_8017C8D0.o,tail19.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve +ov_SC06_030_JTBL_INTERLEAVE := --order tail.data.o,ov_SC06_030.o,ov_SC06_030_jr_8012ACE0.o,tail2.data.o,ov_SC06_030_jr_80135888.o,tail3.data.o,ov_SC06_030_jr_80135A4C.o,tail4.data.o,ov_SC06_030_jr_80135D20.o,tail5.data.o,ov_SC06_030_jr_801380E0.o,ov_SC06_030_o0c.o,tail6.data.o,ov_SC06_030_jr_8013F350.o,tail7.data.o,ov_SC06_030_jr_8013FFD8.o,tail8.data.o,ov_SC06_030_jr_80140608.o,tail9.data.o,ov_SC06_030_jr_8015444C.o,ov_SC06_030_jr_80154C24.o,ov_SC06_030_jr_801588CC.o,ov_SC06_030_jr_80159C84.o,tail10.data.o,ov_SC06_030_jr_8015A3C8.o,tail11.data.o,ov_SC06_030_jr_8015AE2C.o,tail12.data.o,ov_SC06_030_jr_8015C32C.o,tail13.data.o,ov_SC06_030_jr_8016AB6C.o,tail14.data.o,ov_SC06_030_jr_80171B4C.o,ov_SC06_030_jr_801734BC.o,tail15.data.o,ov_SC06_030_jr_801789AC.o,ov_SC06_030_jr_80178D40.o,tail16.data.o,ov_SC06_030_jr_8017A4AC.o,tail17.data.o,ov_SC06_030_jr_8017AE2C.o,tail18.data.o,ov_SC06_030_jr_8017C8D0.o,tail19.data.o,ov_SC06_030_jr_8017F65C.o,tail20.data.o,trailing.o # Phase-26 §8 jtbl-rodata carve build/src/ov_SC06_030/ov_SC06_030.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14 build/src/ov_SC06_030/ov_SC06_030_jr_8012ACE0.o: JTBL_PADS := 0,0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0xcc,+0xe0 build/src/ov_SC06_030/ov_SC06_030_jr_80135D20.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18 @@ -4609,6 +4610,7 @@ build/src/ov_SC06_030/ov_SC06_030_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads ( build/src/ov_SC06_030/ov_SC06_030_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC06_030/ov_SC06_030_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178 build/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 +build/src/ov_SC06_030/ov_SC06_030_jr_8017F65C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x18 build/src/ov_SC06_030/ov_SC06_030_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118 ov_SC06_030_CHECK_SHA := config/check.ov_SC06_030.sha ov_SC06_030_SYMBOLS := config/symbols.ov_SC06_030.txt diff --git a/config/splat.ov_SC03_028.yaml b/config/splat.ov_SC03_028.yaml index f4ba86b27..b930e35ca 100644 --- a/config/splat.ov_SC03_028.yaml +++ b/config/splat.ov_SC03_028.yaml @@ -121,6 +121,12 @@ segments: - [0x52354, c, ov_SC03_028_jr_8017A4AC] - [0x52cd4, c, ov_SC03_028_jr_8017AE2C] - [0x55e40, c, ov_SC03_028_jr_8017DF98] + - [0x5b91c, c, ov_SC03_028_jr_80183A74] + - [0x5c690, c, ov_SC03_028_jr_801847E8] + - [0x5c7bc, c, ov_SC03_028_jr_80184914] + - [0x5d70c, c, ov_SC03_028_jr_80185864] + - [0x5dabc, c, ov_SC03_028_jr_80185C14] + - [0x60650, c, ov_SC03_028_jr_801887A8] - [0x63834, data, tail] - [0xc0c38, .rodata, ov_SC03_028] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc0d14, .rodata, ov_SC03_028_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -165,6 +171,17 @@ segments: - [0xc1d6c, data, tail18] - [0xc1ea4, .rodata, ov_SC03_028_jr_8017DF98] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc1ec4, data, tail19] + - [0xc1f04, .rodata, ov_SC03_028_jr_80183A74] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc1f1c, .rodata, ov_SC03_028_jr_801847E8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc1f48, data, tail20] + - [0xc1f4c, .rodata, ov_SC03_028_jr_80184914] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc1f78, data, tail21] + - [0xc1fa4, .rodata, ov_SC03_028_jr_80185864] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc1ff0, data, tail22] + - [0xc1ff4, .rodata, ov_SC03_028_jr_80185C14] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc2018, data, tail23] + - [0xc2024, .rodata, ov_SC03_028_jr_801887A8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xc2050, data, tail24] - [0xC44AC, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xC44AF] # 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/config/splat.ov_SC06_030.yaml b/config/splat.ov_SC06_030.yaml index bc4bd5372..88a8037b0 100644 --- a/config/splat.ov_SC06_030.yaml +++ b/config/splat.ov_SC06_030.yaml @@ -121,6 +121,7 @@ segments: - [0x52354, c, ov_SC06_030_jr_8017A4AC] - [0x52cd4, c, ov_SC06_030_jr_8017AE2C] - [0x54778, c, ov_SC06_030_jr_8017C8D0] + - [0x57504, c, ov_SC06_030_jr_8017F65C] - [0x59cb4, data, tail] - [0x8f6ac, .rodata, ov_SC06_030] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x8f788, .rodata, ov_SC06_030_jr_8012ACE0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -165,6 +166,8 @@ segments: - [0x907e0, data, tail18] - [0x90918, .rodata, ov_SC06_030_jr_8017C8D0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x90958, data, tail19] + - [0x90970, .rodata, ov_SC06_030_jr_8017F65C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0x9099c, data, tail20] - [0x91F2C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0x91F2F] # 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_SC03_028/ov_SC03_028_jr_8017DF98.c b/src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c index f4ae52b38..caf7265f1 100644 --- a/src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c +++ b/src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c @@ -5320,4556 +5320,3 @@ extern void (*D_8019025C[])(void); void func_80183A38(void *a0) { D_8019025C[*(u16 *)((s32)a0 + 0x2)](); } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80183A74); - - -extern void (*D_801902C0[])(void); - -void func_80183DC8(void *a0) { - D_801902C0[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - -/* ---- decls already present at file scope in the TU (reused verbatim) ---- */ -extern s32 D_80126950; -extern s16 D_800B9A02; -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); - -/* ---- new decls (canonical forms from src/shared/engine_core.h) ---- */ -extern s32 D_800A651C; -extern u8 D_800AF648; -extern u8 D_8018F968[]; -extern u32 D_801902C8[]; -extern u8 D_801902D4[]; -extern u8 D_801902D5[]; -extern u8 D_801902D6[]; -extern u8 D_801902D7[]; -extern u8 D_801902E4[]; -extern u8 D_801902E5[]; -extern u8 D_801902E6[]; -extern u8 D_801902E7[]; -extern u8 D_801902F4[]; -extern u8 D_801902F5[]; -extern u8 D_801902F6[]; -extern u8 D_801902F7[]; -extern void *func_80010A08(s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 AddPrim(s32, void *); - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) - - -/* Byte-verified levers (match_one MATCH, 265 ins): - * - L5/frame: locals start at sp+0x18 (5-arg out-arg area). tags/sv/xs/ys are arrays and take - * slots in DECLARATION order; flag/sxy/pz must be ONE struct — as separate address-taken - * scalars gcc packs them after the arrays with a 4-byte hole (flag landed at 0x58, not 0x50). - * - The 14 primitive stores are written off the SINGLE pointer biv `pp` (prim+0xC). loop.c - * combines their address givs into one register based at the LAST ref (pp+0x22 = prim+0x2E, - * $s0), and keeps `pp` itself ($s3) for AddPrim's value use. Adding a second explicit cursor - * (`q = prim+0x2E`) costs an EXTRA giv register and breaks the frame. - * - L3: `tags[0] = (s32)(prim + 0xC)` is written as its OWN expression (not `= (s32)pp`); CSE - * then emits `addiu $v0,$s4,0xC` + `addu $s3,$v0,$zero` — the copy the target has. - * - Loop counter is k = 0..3 with i = k*4 as a GIV, not a biv stepping 4. Both give the same - * `slti $s1,0x10` compare, but only the giv form puts the address-giv init BEFORE the index - * init in the preheader. `pp += 0x24` must come AFTER `k += 1` so pp's iv class is recorded - * last (loop_iv_list is prepend-ordered) and therefore emits its giv init FIRST. - * - tags[1..3] are genuinely DEAD stores in the original; they must be kept. - */ -void func_80183E04(void *a0) -{ - s32 tags[4]; /* sp+0x18 */ - s16 sv[4]; /* sp+0x28 */ - s16 xs[8]; /* sp+0x30 */ - s16 ys[8]; /* sp+0x40 */ - struct { - s32 flag; /* sp+0x50 */ - u16 sxy[2]; /* sp+0x54 */ - s32 pz; /* sp+0x58 */ - } o; - - s32 m; - void *pv; - s32 *pflag; - s32 ret; - s32 d; - s32 e; - s32 x; - s32 y; - s32 ot; - u8 *prim; - u8 *pp; - u8 *base; - u32 *pal; - s32 i; - s32 k; - - m = *(s32 *)((s32)a0 + 0x20) + 0x34; - gte_SetRotMatrix(m); - gte_SetTransMatrix(m); - - pv = (void *)sv; - pflag = &o.flag; - RotTransSV(D_8018F968, pv, pflag); - func_8004914C(&D_800AF648); - func_800491AC(&D_800AF648); - ret = RotTransPers((s32)pv, (s32)o.sxy, &o.pz, pflag); - if ((ret > 0) && (o.flag >= 0)) { - ret = ret * 4; - d = ((D_80126950 + 0x1F4) * 24) / ret; - x = o.sxy[0]; - y = o.sxy[1]; - ot = *(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + ret; - e = (d * 179) >> 8; - - xs[2] = x; - ys[2] = y; - xs[0] = x - d; - xs[1] = x - e; - xs[3] = x + e; - xs[4] = x + d; - ys[0] = y - d; - ys[1] = y - e; - ys[3] = y + e; - ys[4] = y + d; - - prim = (u8 *)func_80010A08(0x9C); - if (prim != 0) { - s32 tp; - tp = GetTPage(0, 1, 0, 0); - func_8005A600((s32)prim, 0, 0, (u16)tp, 0); - - tags[0] = (s32)(prim + 0xC); - pp = prim + 0xC; - pal = D_801902C8; - base = (u8 *)tags; - k = 0; - tags[1] = (s32)(prim + 0x30); - tags[2] = (s32)(prim + 0x54); - tags[3] = (s32)(prim + 0x78); - do { - i = k * 4; - *(u32 *)(pp + 0x04) = pal[D_801902F4[i]]; - *(u32 *)(pp + 0x0C) = pal[D_801902F5[i]]; - *(u32 *)(pp + 0x14) = pal[D_801902F6[i]]; - *(u32 *)(pp + 0x1C) = pal[D_801902F7[i]]; - *(u8 *)(pp + 0x03) = 8; - *(u8 *)(pp + 0x07) = 0x3A; - *(u16 *)(pp + 0x08) = *(u16 *)(base + 0x18 + D_801902D4[i] * 2); - *(u16 *)(pp + 0x10) = *(u16 *)(base + 0x18 + D_801902D5[i] * 2); - *(u16 *)(pp + 0x18) = *(u16 *)(base + 0x18 + D_801902D6[i] * 2); - *(u16 *)(pp + 0x20) = *(u16 *)(base + 0x18 + D_801902D7[i] * 2); - *(u16 *)(pp + 0x0A) = *(u16 *)(base + 0x28 + D_801902E4[i] * 2); - *(u16 *)(pp + 0x12) = *(u16 *)(base + 0x28 + D_801902E5[i] * 2); - *(u16 *)(pp + 0x1A) = *(u16 *)(base + 0x28 + D_801902E6[i] * 2); - *(u16 *)(pp + 0x22) = *(u16 *)(base + 0x28 + D_801902E7[i] * 2); - AddPrim(ot, pp); - k += 1; - pp += 0x24; - } while (k < 4); - AddPrim(ot, prim); - } - } -} - - -void func_80184228(void) { -} - -#include "common.h" - -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80184E9C(); -extern void func_8012C218(void *a0); - -extern u16 D_80126B96; -extern u8 D_80190314[]; -extern u8 D_8019031C[]; -extern void (*D_80190370[])(void *); - -void func_80184230(void *arg0) { - void *prim; - - if (*(u16 *)(*(s32 *)((s32)arg0 + 0x64) + 2) == 0xD) { - if (func_8012D5E4((s32)arg0, (s32)D_80190314, (s32)D_8019031C, 0xC) == 1) { - D_80126B96 = 0x6009; - } - func_80184E9C((s32)arg0, (s32)D_80190314, (s32)D_8019031C); - prim = *(void **)((s32)arg0 + 0x20); - *(u16 *)((s32)prim + 0x12) = *(u16 *)((s32)prim + 0x12) + 0x200; - D_80190370[*(u16 *)((s32)arg0 + 2)](arg0); - } else { - func_8012C218(arg0); - } -} - - -#include "common.h" - -extern void func_801439FC(s32 a0); - -void func_8018430C(s32 a0) { - s32 v0; - s32 v1; - s32 s0; - s32 pad[2]; - - v0 = *(s32 *)(*(s32 *)(a0 + 0x64) + 0x20); - v0 = *(s32 *)(v0 + 4); - s0 = *(s32 *)(a0 + 0xCC); - if (v0 < 0) { - *(u32 *)(s0 + 4) |= 0x80000000; - } else { - func_801439FC(a0); - } - - v0 = *(s32 *)(a0 + 0x64); - *(u16 *)(s0 + 0x14) = *(u16 *)(*(s32 *)(v0 + 0x20) + 0x12); - - v0 = *(s32 *)(a0 + 0x64); - v1 = *(u16 *)(s0 + 0xA) - *(u16 *)(v0 + 0xA); - if ((u16)(v1 + 0x20) >= 0x421) { - *(s16 *)(s0 + 0x1A) = 0; - *(s16 *)(s0 + 0x18) = 0; - } else { - v1 = v1 << 16; - v1 = v1 >> 11; - v0 = -0x8000 - v1; - *(s16 *)(s0 + 0x1A) = v0; - *(s16 *)(s0 + 0x18) = v0; - } -} - - -extern s32 func_80143994(s32 arg0, s32 arg1); -s32 func_801843D8(void *a0) { - *(s16 *)func_80143994((s32)a0, 0x3FFF) = 0x93; -} - - -void func_801843FC(s32 param_1) -{ - extern u8 D_801903C0; - s32 s0; - - s0 = *(s32 *)(param_1 + 0x20); - func_8001CD50(s0, (s32)&D_801903C0); - *(s16 *)(s0 + 0x10) = 0x400; - *(u32 *)(s0 + 4) |= 0x50000000; - *(s16 *)(s0 + 0x1E) = 0; - *(s16 *)(s0 + 0x12) = 0; - *(s16 *)(s0 + 0x14) = rand() & 0x1FF; - *(s16 *)(s0 + 0x14) = *(s16 *)(s0 + 0x14) + *(s32 *)(param_1 + 0x2C); - *(s32 *)(param_1 + 0x2C) = 0x100; - *(s16 *)(s0 + 0x18) = 0; - *(s16 *)(s0 + 0x1A) = 0; - *(s16 *)(s0 + 0x1C) = 0; - *(u16 *)(param_1 + 2) += 1; -} - - -void func_8018449C(s32 param_1) { - s32 prim; - s32 var; - - prim = *(s32 *)(param_1 + 0x20); - var = *(s32 *)(param_1 + 0x2C); - *(s16 *)(prim + 0x18) = *(u16 *)(prim + 0x18) + var; - if (*(s16 *)(prim + 0x18) >= 0x2000) { - *(u16 *)(param_1 + 2) += 1; - } - var = *(s32 *)(param_1 + 0x2C); - *(s16 *)(prim + 0x1A) = *(u16 *)(prim + 0x1A) + var; - var = *(s32 *)(param_1 + 0x2C); - if (var < 0) { - var += 3; - } - *(s16 *)(prim + 0x1C) = *(u16 *)(prim + 0x1C) + (var >> 2); - *(s32 *)(param_1 + 0x2C) += 0x20; -} - - -extern void (*D_80190400[])(void); - -void func_80184524(void *a0) { - D_80190400[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80184560(void) { -} - -extern void (*D_8019040C[])(void); - -void func_80184568(void *a0) { - D_8019040C[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_801845A4); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_801847E8); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80184914); - -extern void (*D_80190460[])(void *); - -void func_80184A40(void *a0) { - s32 mask; - - if (*(s16 *)((s32)a0 + 0x100) == 0) { - mask = func_8014CB2C() & 0x7FFFFFFF; - if (mask == 2) { - u16 state = *(u16 *)((s32)a0 + 0x2); - if ((u32)(state - 3) >= 2) { - *(u16 *)((s32)a0 + 0x34) = state; - *(u16 *)((s32)a0 + 0x2) = 3; - *(s32 *)((s32)a0 + 0xDC) = mask; - *(s32 *)((s32)a0 + 0xE0) = mask; - *(s32 *)((s32)a0 + 0xE4) = mask; - *(s32 *)((s32)a0 + 0xE8) = mask; - } - } else { - if (*(u16 *)(*(s32 *)((s32)a0 + 0x64) + 2) == 0x1D) { - *(s32 *)((s32)a0 + 0xDC) = 1; - *(s32 *)((s32)a0 + 0xE0) = 1; - *(s32 *)((s32)a0 + 0xE4) = 1; - *(s32 *)((s32)a0 + 0xE8) = 1; - } else { - *(s32 *)((s32)a0 + 0xDC) = 0; - *(s32 *)((s32)a0 + 0xE0) = 0; - *(s32 *)((s32)a0 + 0xE4) = 0; - *(s32 *)((s32)a0 + 0xE8) = 0; - } - } - } - - D_80190460[*(u16 *)((s32)a0 + 0x2)](a0); -} - - -#include "common.h" - -extern u16 D_80126B66; -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C218(void *a0); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); - -void func_80184B28(void *a0) { - void *v1; - s32 v0; - s16 t; - - v1 = *(void **)((s32)a0 + 0x64); - if (*(s16 *)(*(s32 *)((s32)v1 + 0x20) + 0x1A) < 0x1801) { - if (*(s16 *)((s32)v1 + 0xFC) > 0) { - func_8012C588(0xC4, (s32)a0); - v1 = *(void **)((s32)a0 + 0x64); - *(u16 *)((s32)v1 + 0xFC) = *(u16 *)((s32)v1 + 0xFC) - 1; - } else { - *(s16 *)((s32)v1 + 0xFC) = 0; - func_8012C218(a0); - } - } else { - *(u16 *)((s32)a0 + 0x6) = *(u16 *)((s32)v1 + 0x6); - t = *(s16 *)&D_80126B66; - if (t >= 0x3C1) { - t = (t - 0x3C0) << 1; - v0 = func_80047948(t); - *(u16 *)((s32)a0 + 0xA) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA) - (v0 >> 9); - v0 = func_8004787C(t); - *(u16 *)((s32)a0 + 0xE) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xE) - (v0 >> 9); - } else { - *(u16 *)((s32)a0 + 0xA) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA) - 8; - *(u16 *)((s32)a0 + 0xE) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xE); - } - } -} - - - -extern void (*D_801904A0[])(void); - -void func_80184C54(void *a0) { - D_801904A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80184C90); - - -extern void (*D_80190594[])(void); - -void func_80184E00(void *a0) { - D_80190594[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012C218(void *a0); -extern void (*D_801905BC[])(); - -void func_80184E3C(s32 param_1) -{ - if ((*(unsigned short *)(param_1 + 0x5c) & 1) != 0) { - func_8012C218((void *)param_1); - } else { - D_801905BC[*(unsigned short *)(param_1 + 2)](); - } -} - - -#include "common.h" - -/* ---- decls copied verbatim from src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c (destination TU) ---- */ -extern s32 func_8012E544(s32 a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); - -/* Same GTE control-register-load macros already used verbatim in this TU (func_80183E04, MATCH - * 102 ins) -- reused here for identical byte shape rather than re-deriving raw ctc2 asm. */ -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) - -void func_80184E9C(s32 a0, s32 a1, s32 a2) -{ - s32 result; - s32 m; - - result = func_8012E544(0xCB); - if (result != 0) { - if ((*(u16 *)(result + 0x5C) != 0) && ((*(u16 *)(result + 0x5C) & 1) == 0)) { - s32 sp10[2]; - s32 sp18[2]; - s32 sp20[2]; - - m = *(s32 *)((s32)a0 + 0x20) + 0x34; - gte_SetRotMatrix(m); - gte_SetTransMatrix(m); - - RotTransSV(a1, sp10, sp20); - RotTransSV(a2, sp18, sp20); - - if (func_80135888(*(s32 *)(result + 0x20), *(s32 *)(result + 0x58), (s32)sp10, (s32)sp18) != 0) { - *(u16 *)(result + 0x5E) = 0x1D; - *(u16 *)(result + 0x5C) = *(u16 *)(result + 0x5C) | 1; - } - } - } -} - - -void func_80184FAC(s32 *a0) { - *(s16*)((s32)a0 + 0x5C) = 0; - } - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80184FB4); - -extern void func_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern u8 D_801905D8[]; - -void func_80185028(void *a0) { - void *p1; - void *p2; - s32 v0; - - p1 = *(void **)((s32)a0 + 0x20); - *(u16 *)(p1 + 0x12) = (*(u16 *)((s32)a0 + 0x62) + 0x800) & 0xFFF; - p2 = *(void **)((s32)a0 + 0x20); - *(u16 *)(p2 + 0x14) = 0; - *(u16 *)(p2 + 0x10) = 0; - func_8012B2CC((s32)a0); - func_8012B23C((s32)a0); - func_8012B14C((s32)a0, (s32)&D_801905D8); - v0 = 5; - *(u16 *)((s32)a0 + 0x5C) = 0; - *(u8 *)((s32)a0 + 0xC1) = 0; - *(u16 *)((s32)a0 + 2) = v0; -} - - -#include "common.h" - -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012C218(void *a0); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_8018509C(void *arg0) { - s32 i; - s16 val; - - for (i = 0; i < 8; i++) { - func_8012C658(0xCC, i * 0x200, (s32)arg0); - } - - if (*(u16 *)((s32)arg0 + 2) < 2) { - *(u16 *)(*(s32 *)((s32)arg0 + 0x64) + 0xFC) = 0; - val = *(s16 *)(*(s32 *)((s32)arg0 + 0x64) + 0x12); - if (val < 0) { - if (val != -4) { - *(s16 *)(*(s32 *)((s32)arg0 + 0x64) + 0x12) = -4; - } - } else { - if (val != 4) { - *(s16 *)(*(s32 *)((s32)arg0 + 0x64) + 0x12) = 4; - } - } - } - - func_8012C218((void *)arg0); - func_8002D4C8(0x62A, 0); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80185158); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80185344); - -extern void (*D_8019066C[])(void); - -void func_801854D8(void *a0) { - D_8019066C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void (*D_801906C8[])(void); - -void func_80185514(void *a0) { - D_801906C8[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void (*D_80190724[])(void); - -void func_80185550(void *a0) { - D_80190724[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); -extern u16 D_80078E92; - -void func_8018558C(s32 a0) { - *(u16 *)(a0 + 0x5C) = 0; - *(u16 *)(a0 + 0x5E) = 0; - *(u8 *)(a0 + 0xC1) = 0; - *(u16 *)(a0 + 2) = *(u16 *)(a0 + 0x10A); - *(u16 *)(a0 + 0xDE) = D_80078E92 + 0x3C; - func_8012C658(0xC8, 4, a0); - func_8012C658(0xC8, 5, a0); - func_8012C658(0xC8, 6, a0); - func_8002D4C8(0xBF2, 0); - func_8002D4C8(0x563, 0); -} - - -extern void func_800183E0(s32 a0); -extern s32 D_801907B0[]; - -void func_8018561C(s32 arg0) { - u16 var; - - var = *(u16 *)(arg0 + 0xFC); - var = var + 1; - *(u16 *)(arg0 + 0xFC) = var; - if ((s16)var < 9) { - func_800183E0(D_801907B0[(s16)var >> 1]); - } else { - *(s16 *)(arg0 + 2) = 2; - *(u8 *)(arg0 + 0xC1) = 0; - *(u16 *)(arg0 + 0x5C) = 0x8000; - } -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_8018568C); - -extern void (*D_801907E4[])(void); - -void func_801857AC(void *a0) { - *(u16 *)((s32)a0 + 0xFC) = (*(u16 *)((s32)a0 + 0xFC) + 1) & 0xFFF; - D_801907E4[*(u16 *)((s32)a0 + 2)](); -} - - -extern void func_800183E0(s32 a0); -extern s32 D_80190884[]; - -void func_801857F4(s32 arg0) { - u16 var; - - var = *(u16 *)(arg0 + 0xFC); - var = var + 1; - *(u16 *)(arg0 + 0xFC) = var; - if ((s16)var < 9) { - func_800183E0(D_80190884[(s16)var >> 1]); - } else { - *(s16 *)(arg0 + 2) = 2; - *(u8 *)(arg0 + 0xC1) = 0; - *(u16 *)(arg0 + 0x5C) = 0x8000; - } -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80185864); - -extern void (*D_801908A8[])(void); - -void func_80185984(void *a0) { - *(u16 *)((s32)a0 + 0xFC) = (*(u16 *)((s32)a0 + 0xFC) + 1) & 0xFFF; - D_801908A8[*(u16 *)((s32)a0 + 2)](); -} - - -extern void func_800183E0(s32 a0); -extern s32 D_80190948[]; - -void func_801859CC(s32 arg0) { - u16 var; - - var = *(u16 *)(arg0 + 0xFC); - var = var + 1; - *(u16 *)(arg0 + 0xFC) = var; - if ((s16)var < 9) { - func_800183E0(D_80190948[(s16)var >> 1]); - } else { - *(s16 *)(arg0 + 2) = 2; - *(u8 *)(arg0 + 0xC1) = 0; - *(u16 *)(arg0 + 0x5C) = 0x8000; - } -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80185A3C); - -extern void (*D_8019096C[])(void); - -void func_80185B5C(void *a0) { - *(u16 *)((s32)a0 + 0xFC) = (*(u16 *)((s32)a0 + 0xFC) + 1) & 0xFFF; - D_8019096C[*(u16 *)((s32)a0 + 2)](); -} - - -#include "common.h" - -extern void func_800183E0(s32 a0); -extern void (*D_80190A0C[])(void *); - -void func_80185BA4(s32 arg0) { - u16 var; - - var = *(u16 *)(arg0 + 0xFC); - var = var + 1; - *(u16 *)(arg0 + 0xFC) = var; - if ((s16)var < 9) { - func_800183E0((s32)D_80190A0C[(s16)var >> 1]); - } else { - *(s16 *)(arg0 + 2) = 2; - *(u8 *)(arg0 + 0xC1) = 0; - *(u16 *)(arg0 + 0x5C) = 0x8000; - } -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80185C14); - -extern void (*D_80190A30[])(void); - -void func_80185D34(void *a0) { - *(u16 *)((s32)a0 + 0xFC) = (*(u16 *)((s32)a0 + 0xFC) + 1) & 0xFFF; - D_80190A30[*(u16 *)((s32)a0 + 2)](); -} - - -#include "common.h" - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B23C(s32 a0); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern void func_8012B2CC(s32 a0); -extern void func_8012B1B4(s32 a0, s32 a1); - -extern s32 D_80190A4C; -extern s32 D_80190ADC; -extern s32 D_80190B44; - -void func_80185D7C(s32 arg0) { - s32 v0; - s32 v1; - - *(s32 *)(arg0 + 0x20) = ((s32 (*)(void))func_8012C1B8)(); - if (*(s32 *)(arg0 + 0x20) == 0) { - ((void (*)(s32))func_8012CAE4)(arg0); - } else { - ((void (*)(s32, s32))func_8001CA1C)(*(s32 *)(arg0 + 0x20), (s32)&D_80190A4C); - func_8012A828(arg0, (void *)&D_80190ADC); - *(s16 *)(arg0 + 0x2) = 1; - func_8012B23C(arg0); - - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(arg0 + 0x70) & 0xFFF; - - *(s32 *)(arg0 + 0x4) -= - func_8004787C(*(s16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12)) * 640; - - v0 = func_80047948(*(s16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12)); - *(s32 *)(arg0 + 0x1C) = 0x96; - *(s32 *)(arg0 + 0xC) -= v0 * 640; - func_8012B2CC(arg0); - - ((void (*)(s32, s32))func_8012B1B4)(arg0, (s32)&D_80190B44); - - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x18) = 0x3000; - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x1A) = 0x3000; - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x1C) = 0x3000; - - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x2C) |= 0x10; - - *(s32 *)(*(s32 *)(arg0 + 0x20) + 0x4) |= 0x50000000; - } -} - - -#include "common.h" - -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012C218(void *a0); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012CBCC(s32 a0); -extern void func_8012B2CC(s32 a0); -extern void func_8012B1B4(s32 a0, s32 a1); -extern s32 func_8012D624(s32 a0, s32 a1, s32 a2); -extern u16 D_80126B96; -extern s32 D_80190B44; - -void func_80185ED4(s32 a0) { - s32 cnt; - - cnt = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = cnt; - if (cnt == 0) { - s32 i; - - for (i = 0x100; i < 0xF00; i += 0x200) { - func_8012C658(0x142, i, a0); - } - func_8012C218((void *)a0); - func_8002D4C8(0x629, 0); - } else if (func_8012D624(a0, 0x30, 0xA) == 1) { - D_80126B96 = 0x4015; - func_8012C218((void *)a0); - } else { - register s32 s0 __asm__("$16"); - register s32 p20 __asm__("$2"); - s16 val; - s32 rnd; - - s0 = ((s32 (*)(s32))func_8012CBCC)(a0); - if ((s0 & 0x6000) != 0) { - *(s16 *)(a0 + 0x16) = -8; - } - { - register s32 mask8000 __asm__("$2"); - mask8000 = s0 & 0x8000; - if (mask8000 != 0) { - p20 = *(s32 *)(a0 + 0x20); - val = *(s16 *)(p20 + 0x12); - func_8012C658(0x142, val, a0); - p20 = *(s32 *)(a0 + 0x20); - val = *(s16 *)(p20 + 0x12); - func_8012C658(0x142, val, a0); - p20 = *(s32 *)(a0 + 0x20); - val = *(s16 *)(p20 + 0x12); - func_8012C658(0x142, val, a0); - rnd = rand(); - { - register s32 p20b __asm__("$5"); - - p20b = *(s32 *)(a0 + 0x20); - *(u16 *)(p20b + 0x12) = *(u16 *)(p20b + 0x12) + 0x600; - *(u16 *)(p20b + 0x12) = *(u16 *)(p20b + 0x12) + (rnd & 0x3FF); - } - func_8012B2CC(a0); - func_8012B1B4(a0, (s32)&(*(u8 *)&D_80190B44)); - func_8002D4C8(0x628, 0); - } - } - if (*(s16 *)(a0 + 0xA) >= 0x200) { - func_8012C218((void *)a0); - } - } -} - - - -extern void (*D_80190B50[])(void); - -void func_80186044(void *a0) { - D_80190B50[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190BE4[])(void); - -void func_80186080(void *a0) { - D_80190BE4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80190BEC[])(void); - -void func_801860BC(void *a0) { - D_80190BEC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @stuck: none — MATCH (42 ins), iteration 1, rtu_match clean. -// Saturating add of a 3-byte RGB triple by a signed delta. -// Idioms: (1) `s8` by-value param => entry `sll/sra 24` for the sign test only; -// combine folds the extension back out of `~a1`/`-a1`/`a0[i]+a1` because every -// consumer is 8-bit (andi 0xFF / sb), so $a1 is used RAW after the test. -// (2) branch sense read off the target `sltu` operand ORDER (§3-T4): positive arm -// `sltu lim,p[i]` => store when `p[i] <= lim`; negative arm `sltu p[i],lim` -// => store when `p[i] >= lim`. -// (3) the third `if` written out in BOTH arms; jump.c cross-jumps the identical -// tails into the shared `j .L8018C344` (§5a) — do not hoist it after the if/else. -void func_801860F8(u8 *a0, s8 a1) { - u8 lim; - - if (a1 == 0) { - return; - } - if (a1 > 0) { - lim = ~a1; - if (a0[0] <= lim) { - a0[0] = a0[0] + a1; - } - if (a0[1] <= lim) { - a0[1] = a0[1] + a1; - } - if (a0[2] <= lim) { - a0[2] = a0[2] + a1; - } - } else { - lim = -a1; - if (a0[0] >= lim) { - a0[0] = a0[0] + a1; - } - if (a0[1] >= lim) { - a0[1] = a0[1] + a1; - } - if (a0[2] >= lim) { - a0[2] = a0[2] + a1; - } - } -} - - - -extern void (*D_80190BF4[])(void); - -void func_801861A0(void *a0) { - D_80190BF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012AD44(s32 *a0, s16 a1); - -void func_801861DC(s32 *a0) { - s32 *v0; - - v0 = *(s32 **)(((u8 *)a0) + 0x20); - *(s16 *)(((u8 *)v0) + 0x1C) = 0; - *(s16 *)(((u8 *)v0) + 0x1A) = 0; - *(s16 *)(((u8 *)v0) + 0x18) = 0; - func_8012AD44(a0, 1); -} - - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_8018620C(u8 *a0) { - *(s8 *)(a0 + 0xFC) = 0x8; - ((void (*)(s32, s32))func_8012AD44)((s32)a0, 0x2); - } - - -extern s32 func_8012E504(s32 a0, s32 a1); -extern volatile s32 D_801EC450; - -void func_80186234(void *arg0) { - s32 s0; - s32 v0; - s32 *p; - - s0 = (s32)arg0; - func_8012AD44((s32 *)s0, 3); - v0 = *(s32 *)(s0 + 0x64); - p = *(s32 **)(v0 + 0x20); - *(volatile s32 *)(p + 1) &= 0x7FFFFFFF; - *(s16 *)((s32)D_801EC450 + 0x02) = 0x7; - *(s16 *)((s32)D_801EC450 + 0x06) = 0x180; - *(s16 *)((s32)D_801EC450 + 0x0A) = -0x1C8; - *(s16 *)((s32)D_801EC450 + 0x0E) = 0x3C0; - *(s16 *)((s32)D_801EC450 + 0x100) = 0x1; - *(s32 *)((s32)D_801EC450 + 0xF8) = 0xB; - while ((v0 = func_8012E504(s0, 0xC3)) != 0) { - func_8012C218((void *)v0); - } - while ((v0 = func_8012E504(s0, 0xCB)) != 0) { - func_8012C218((void *)v0); - } - func_8018ADD0(); -} - - -extern void (*D_80190BFC[])(void); - -void func_8018632C(void *a0) { - D_80190BFC[*(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_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_8002D4C8(s32 a0, s32 a1); - -extern u8 D_80190C1C[]; -extern u8 D_80190C68[]; -extern u8 *D_801E6214; - -void func_80186368(void *a0) { - s32 v1; - register u8 **abase __asm__("$4"); - u8 *p; - s16 *q; - register u8 bval __asm__("$3"); - s16 hval; - - if (func_8012C354((s32)a0, (s32)D_80190C1C) == 0) { - return; - } - v1 = *(s32 *)((s32)a0 + 0x20); - *(s32 *)(v1 + 0x4) |= 0x8040; - *(s16 *)((s32)a0 + 0x2) = 1; - *(s16 *)((s32)a0 + 0xAE) = -1; - *(s8 *)((s32)a0 + 0x75) = 0x8; - func_8012A828((s32)a0, D_80190C68); - func_8001D0E8(*(s32 *)((s32)a0 + 0x20), 0x280, 0x1E0); - func_8002D4C8(0xB21, 0); - - abase = &D_801E6214; - bval = 0x45; - p = *abase + 0x2D; asm("" : "=r"(p) : "0"(p)); - *p = 0; - p += 4; asm("" : "=r"(p) : "0"(p)); - *p = 0; - p += 4; asm("" : "=r"(p) : "0"(p)); - *p = 0; - p += 4; asm("" : "=r"(p) : "0"(p)); - *p = 0; - p += 0x14; asm("" : "=r"(p) : "0"(p)); - *p = bval; - p += 4; asm("" : "=r"(p) : "0"(p)); - *p = bval; - p += 4; asm("" : "=r"(p) : "0"(p)); - *p = bval; - p += 4; asm("" : "=r"(p) : "0"(p)); - *p = bval; - p += 0x14; asm("" : "=r"(p) : "0"(p)); - bval = 0xA1; - *p = bval; - p += 4; asm("" : "=r"(p) : "0"(p)); - *p = bval; - p += 4; asm("" : "=r"(p) : "0"(p)); - *p = bval; - p[4] = bval; - - hval = -0x360; - q = (s16 *)(*abase + 0xEA); asm("" : "=r"(q) : "0"(q)); - *q = hval; - q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); - *q = hval; - q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); - *q = hval; - q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); - *q = hval; - q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); - *q = hval; - q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); - *q = hval; - q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); - *q = hval; - *(s16 *)((u8 *)q + 8) = hval; -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_801864A8); - - -extern void (*D_80190C78[])(void); - -void func_80186754(void *a0) { - D_80190C78[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80029124(s32 arg0, s32 arg1); - void func_80186790(void) { - func_80029124(0x8A, 1); - func_80029124(0xF3, 1); - } - - -extern void func_80180AC4(s32 arg0, s32 arg1); - void func_801867C0(s32 arg0) { - func_80180AC4(arg0, 0x14400); - } - - -extern void (*D_8018FEB0)(); -extern void func_8012B14C(s32 a0, s32 a1); - -void func_801867E4(s32 a0) { - *(s32 *)(a0 + 0xB4) = 0x8; - *(u8 *)(a0 + 0xC2) = 0; - *(u8 *)(a0 + 0xC3) = 0; - *(u16 *)(a0 + 0x98) = 0; - func_8012B14C(a0, (s32)&D_8018FEB0); - *(u16 *)(a0 + 0x5C) &= ~1; - *(s32 *)(a0 + 0x1C) = 0; -} - - -extern void func_8012B14C(s32 a0, s32 a1); -extern void (*D_8018FEBC)(); - -void func_80186838(s32 a0) { - *(s32 *)(a0 + 0xB4) = 0x80; - *(u8 *)(a0 + 0xC2) = 0; - *(u8 *)(a0 + 0xC3) = 0; - *(u16 *)(a0 + 0x98) = 0; - func_8012B14C(a0, (s32)&D_8018FEBC); - *(u16 *)(a0 + 0x5C) &= ~1; - *(s32 *)(a0 + 0x1C) = 0; -} - - -void func_8018688C(void *a0) { - *(s32 *)((s32)a0 + 0xb4) = 0; - } - - -#include "common.h" - -extern s32 func_80029504(void); -extern void func_8012CAE4(void *a0); -extern s32 func_8012C354(s32 a0, s32 a1); -extern s32 func_801843D8(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_8012C51C(void *a0, s32 a1); -extern void func_8018ADA0(void); - -extern u8 D_8018F924[]; -extern u8 D_8018FEC8[]; -extern s32 D_8018F9D8[]; -extern s32 D_8018F9DC[]; -extern s32 D_8018F9E0[]; -extern s16 D_8018F9FC; -extern u8 D_8018F870[]; -extern u8 D_801ADCEC[]; -extern s32 D_801EC448; -extern s32 D_801EC44C; -extern s32 D_801EC450; - -void func_80186894(void *a0) -{ - s32 v1; - s32 p; - u16 t; - s32 v0; - - if ((u32)func_80029504() >= 0xC8) { - func_8012CAE4(a0); - return; - } - - if (func_8012C354((s32)a0, (s32)D_8018F924) == 0) { - return; - } - - v1 = *(s32 *)((s32)a0 + 0xC4); - *(u8 *)((s32)a0 + 0xC0) = 1; - *(s32 *)((s32)a0 + 0xBC) = (s32)D_8018FEC8; - *(s32 *)((s32)a0 + 0xB4) = 0; - *(s16 *)((s32)a0 + 0xAE) = -1; - *(u8 *)((s32)a0 + 0x75) = 0; - v1 |= 2; - *(s32 *)((s32)a0 + 0xC4) = v1; - v0 = func_801843D8(a0); - *(s32 *)((s32)a0 + 0xCC) = v0; - *(s16 *)((s32)a0 + 0x2) = 0x27; - *(s32 *)((s32)a0 + 0x10) = D_8018F9D8[0]; - *(s32 *)((s32)a0 + 0x14) = D_8018F9DC[0]; - *(s32 *)((s32)a0 + 0x18) = D_8018F9E0[0]; - func_8012A828((s32)a0, D_801ADCEC); - - p = *(s32 *)((s32)a0 + 0x20); - t = *(u16 *)(p + 0x2C); - D_801EC448 = 0x10; - *(u16 *)(p + 0x2C) = t | 0x80; - *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x80) = (s32)((u8 *)&D_8018F9FC); - D_801EC44C = (s32)a0; - D_801EC450 = func_8012C51C(D_8018F870, (s32)a0); - func_8018ADA0(); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_801869C0); - -void func_80186A00(s32 a0) { - extern s32 func_8012B8E4(s32 a0, s32 a1); - extern void func_8012B2CC(s32 a0); - extern void func_8012B1B4(s32 a0, s32 a1); - extern void func_8012A828(s32 a0, void *a1); - extern void (*D_8018F9B4)(void *); - extern u8 D_801ADCEC[]; - - s32 v0; - s32 p; - - v0 = func_8012B8E4(a0, 4); - p = *(s32 *)(a0 + 0x20); - *(u16 *)(p + 0x12) += v0; - if (--*(s32 *)(a0 + 0x1C) == 0) { - func_8012B2CC(a0); - *(s16 *)(a0 + 2) = 0xB; - func_8012B1B4(a0, (s32)&D_8018F9B4); - func_8012A828(a0, D_801ADCEC); - } -} - - -extern void func_8012CBCC(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8002D4C8(s32 a0, s32 a1); -extern u8 D_801AE46C[]; -extern s32 D_801AE874[]; - -void func_80186A88(s32 a0) { - register s32 s0 __asm__("$16"); - s32 v0; - - s0 = a0; - v0 = ((s32 (*)(s32))func_8012CBCC)(a0); - if ((v0 & 0x8000) != 0) { - *(s16 *)(s0 + 0x2) = 0x11; - func_8012A828(s0, D_801AE46C); - func_8002D4C8(0x640, 0); - } else if (((*(u16 *)(s0 + 0x72)) & 0x4000) != 0) { - *(s16 *)(s0 + 0x2) = 0x10; - func_8012A828(s0, ((u8 *)D_801AE874)); - } -} - - -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012CBCC(s32 a0); - -extern u8 D_801ADC24[]; -extern u8 D_801AE46C[]; -extern s32 D_8018F8D4; - -void func_80186B0C(void *a0) { - s32 v1 = ((s32 (*)(s32))func_8012CBCC)(a0); - s32 s0 = (s32)a0; - - if ((v1 & 0x2000) != 0) { - *(s16 *)(s0 + 0x2) = 5; - func_8012A828(s0, D_801ADC24); - { - s32 tag = (s32)&D_8018F8D4; - tag |= 0x40000000; - tag |= 0x20000000; - *(s32 *)(s0 + 0x58) = tag; - } - *(s32 *)(s0 + 0x1C) = 1; - } else if ((v1 & 0x8000) != 0) { - *(s16 *)(s0 + 0x2) = 0x11; - func_8012A828(s0, D_801AE46C); - func_8002D4C8(0x640, 0); - } -} - - -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_8014CB2C(void); -extern s32 D_801AE9C4[]; -extern s32 D_801AE99C[]; - -void func_80186BAC(s32 param_1) -{ - if (*(u16 *)(param_1 + 0x72) & 0x4000) { - func_8012A828(param_1, D_801AE9C4); - *(s32 *)(param_1 + 0x1C) = 1; - *(u16 *)(param_1 + 2) = 0x13; - } - if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { - func_8012A828(param_1, D_801AE99C); - *(u16 *)(param_1 + 2) = 0x1B; - *(s32 *)(param_1 + 0x1C) = 0; - *(s16 *)(param_1 + 0x12) = -*(s16 *)(param_1 + 6) >> 6; - *(s16 *)(param_1 + 0x16) = -0x10; - *(s16 *)(param_1 + 0x1A) = (0x3C0 - *(s16 *)(param_1 + 0xE)) >> 6; - *(s16 *)(param_1 + 0xFC) = (-*(s16 *)(param_1 + 0xA) - 0x40) / 5; - } -} - - -#include "common.h" - -extern void func_8012A828(s32 a0, void *a1); -extern s32 D_801AE874[]; - -void func_80186C98(s32 param_1) { - s32 v1; - - v1 = *(s32 *)(param_1 + 0x1C) - 0x100; - *(s32 *)(param_1 + 0x1C) = v1; - if (v1 >= 0xD01) { - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1C) = v1; - return; - } - func_8012A828(param_1, D_801AE874); - v1 = *(s32 *)(param_1 + 0x20); - *(s16 *)(param_1 + 2) = 0x15; - *(u16 *)(v1 + 0x2C) &= 0xFFEF; -} - - -#include "common.h" - -extern void func_8012CBCC(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8002D4C8(s32 a0, s32 a1); - -extern u8 D_801AE46C[]; - -void func_80186D0C(void *a0) -{ - if (((s32 (*)(s32))func_8012CBCC)(a0) & 0x8000) { - *(s16 *)((s32)a0 + 0x2) = 0x11; - func_8012A828(a0, D_801AE46C); - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = *(u16 *)((s32)a0 + 0xFC); - func_8002D4C8(0x640, 0); - } - - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) += 0x48; -} - - -#include "common.h" - -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012C218(void *a0); -extern void func_8017F93C(void); -extern void func_8017BFBC(s32 a0, s32 a1); -extern void func_80180494(); -extern u8 D_8018F924[]; -extern u8 D_801AE3A4[]; -extern s32 D_801EC448; - -void func_80186D84(void *a0) { - register s32 v0 __asm__("$2"); - register s32 v1 __asm__("$3"); - - v0 = *(s32 *)((s32)a0 + 0x1C); - if (v0 != 0) { - v0 = v0 - 1; - *(s32 *)((s32)a0 + 0x1C) = v0; - if (v0 != 0) { - goto tail; - } - } - - v0 = *(s16 *)((s32)a0 + 0x76); - if (v0 > 0) { - func_8017F93C(); - *(u16 *)((s32)a0 + 0x5C) &= 0xFDFF; - func_8017BFBC((s32)a0 + 0x76, (s32)D_8018F924); - func_8012A828((s32)a0, D_801AE3A4); - *(s16 *)((s32)a0 + 0x2) = 0x1E; - if (*(s32 *)((s32)a0 + 0x6C) != 0) { - func_8012C218((void *)(*(s32 *)((s32)a0 + 0x6C))); - } - func_8002D4C8(0x59A, 0); - v1 = *(s16 *)((s32)a0 + 0x76); - v0 = (v1 < 0x28); - if (v0 == 0) { - v0 = 0x10; - } else { - v0 = (v1 < 0x29); - if (v0 == 0) { - v0 = 0x18; - } else { - v0 = 0x20; - } - } - D_801EC448 = v0; - } -tail: - func_80180494((s32)a0); -} - - -#include "common.h" - -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801ADC24[]; -extern s32 D_8018F8D4; -extern s16 D_8018FA14; - -void func_80186E60(void *a0) { - if (*(s32 *)((s32)a0 + 0x94) == 0x10) { - { - s32 tag = (s32)&D_8018F8D4; - tag |= 0x40000000; - tag |= 0x20000000; - *(s32 *)((s32)a0 + 0x58) = tag; - } - } - - if ((*(u16 *)((s32)a0 + 0x72) & 0x4000) != 0) { - *(s16 *)((s32)a0 + 0x2) = 5; - func_8012A828((s32)a0, D_801ADC24); - *(s32 *)((s32)a0 + 0x1C) = 1; - D_8018FA14 = 0x80; - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) |= 0x80; - *(s16 *)((s32)a0 + 0xAC) = 0; - } -} - - -#include "common.h" - -extern void func_8012CBCC(s32 a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern void func_8012A828(s32 a0, void *a1); - -extern u8 D_801AE89C[]; -extern u8 D_8018F8F4[]; - -void func_80186F04(s32 param_1) -{ - s32 v; - unsigned short *p; - s32 frame_pad[4]; - - (void)&frame_pad; - func_8012CBCC(param_1); - v = func_8012B8E4(param_1, 8); - p = (unsigned short *)(*(s32 *)(param_1 + 0x20) + 0x12); - *p = (unsigned short)(*p + v); - - if (*(s32 *)(param_1 + 0x94) == 8) { - *(unsigned short *)(param_1 + 0x98) = 0; - } - - if (*(s32 *)(param_1 + 0x14) < 0) { - return; - } - - *(s16 *)(param_1 + 2) = 0x17; - func_8012A828(param_1, D_801AE89C); - *(s32 *)(param_1 + 0x58) = (s32)D_8018F8F4 | 0x40000000 | 0x20000000; -} - - -extern u8 D_801ADC24[]; -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012CBCC(s32 a0); - -void func_80186FA4(void *a0) { - register s32 s0 __asm__("$16"); - s32 dz; - s32 dzsq; - s32 dy; - s32 thresh; - - s0 = (s32)a0; - __asm__("" ::: "$4"); - if (*(s32 *)(s0 + 0x94) == 6) { - *(u16 *)(s0 + 0x98) = 0; - } - - thresh = 0xE100; - dz = *(s16 *)(s0 + 0xE) - 0x3C0; - dzsq = dz * dz; - dy = (s16)*(u16 *)(s0 + 0x6); - if (dzsq < 0x1901) { - dzsq += 0x4000; - } - dzsq += dy * dy; - if (dzsq < thresh) goto skip_escape; - - *(s32 *)(s0 + 0x10) = 0; - *(s32 *)(s0 + 0x18) = 0; - *(u16 *)(s0 + 0x6) -= dy >> 5; - *(u16 *)(s0 + 0xE) -= dz >> 5; -skip_escape:; - - if ((((s32 (*)(s32))func_8012CBCC)(s0) & 0x2000) != 0) { - func_8002D4C8(0x560, 0); - *(s16 *)(s0 + 0x2) = 5; - func_8012A828(s0, D_801ADC24); - *(s32 *)(s0 + 0x1C) = 1; - } -} - - -#include "common.h" - -/* ---- decls copied verbatim from the destination TU (src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c) ---- */ -extern s32 func_801789AC(s32 arg0); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void RotTransSV(void *a0, void *a1, void *a2); -extern void func_8002D4C8(s32 a0, s32 a1); -extern u8 D_800AF648; - -/* ---- new decls (not present elsewhere in the TU) ---- */ -extern u8 *func_8012913C(s32 a0); -extern s16 D_8018F960[]; - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) - -void func_80187084(void *a0) -{ - s16 sxy[4]; - s32 pz; - u8 *obj; - s32 cnt; - s32 m; - s32 v1; - - func_801789AC((s32)a0); - - *(u16 *)((s32)a0 + 0xA) ^= 2; - cnt = *(s32 *)((s32)a0 + 0x1C) - 1; - *(s32 *)((s32)a0 + 0x1C) = cnt; - - if ((cnt & 0xF) == 0) { - obj = func_8012913C(0x1F); - if (obj != 0) { - m = *(s32 *)((s32)a0 + 0x20) + 0x34; - gte_SetRotMatrix(m); - gte_SetTransMatrix(m); - - RotTransSV(D_8018F960, sxy, &pz); - func_8004914C(&D_800AF648); - func_800491AC(&D_800AF648); - - *(s32 *)(obj + 0x4) = *(s32 *)((s32)a0 + 0x4); - *(s32 *)(obj + 0x8) = *(s32 *)((s32)a0 + 0x8) - 0x800000; - *(s32 *)(obj + 0xC) = *(s32 *)((s32)a0 + 0xC); - - v1 = *(s32 *)((s32)a0 + 0x1C); - if (v1 & 0x40) { - *(s32 *)(obj + 0x2C) = (v1 & 0x30) << 6; - } else { - *(s32 *)(obj + 0x2C) = ((v1 & 0x30) << 6) + 0x200; - } - - *(s32 *)(obj + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 0x24; - func_8002D4C8(0x564, 0); - } - } - - if (*(s32 *)((s32)a0 + 0x1C) == 0) { - *(s32 *)((s32)a0 + 0x1C) = 0x10; - *(u16 *)((s32)a0 + 0x2) = 0x22; - } -} - - -#include "common.h" - -extern s32 func_801789AC(s32 arg0); -extern void func_8017C068(void); -extern s32 func_8012C588(s32 a0, s32 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_801871EC(s32 a0) { - register s32 s0 __asm__("$16"); - s32 cnt; - s32 pad[2]; - - s0 = a0; - func_801789AC(a0); - - *(u16 *)(s0 + 0xA) ^= 2; - cnt = *(s32 *)(s0 + 0x1C) - 1; - *(s32 *)(s0 + 0x1C) = cnt; - - if (cnt == 0) { - func_8017C068(); - *(s32 *)(s0 + 0x1C) = 0xF; - func_8012C588(0x144, s0); - func_80132EF4(s0, 0x35); - *(u16 *)(s0 + 0x2) = 0x23; - func_8002D4C8(0x565, 0); - } -} - - -#include "common.h" - -extern s32 func_801789AC(s32 arg0); -extern s32 func_801439C0(s32 a0); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8002AC00(s32 a0); - -extern M2C_UNK D_8018BD04; -extern s32 D_8018FA1C[]; -extern s16 D_8018FA0C; -extern s32 D_801EC454; -extern s32 D_801ADBA4; -extern s32 D_801EC44C; - -void func_8018726C(void *a0) -{ - register s32 *s1 __asm__("$17"); - register s32 s2 __asm__("$18"); - s32 cnt; - s32 ret, sub; - register s32 obj __asm__("$3"); - register s32 health __asm__("$2"); - - func_801789AC((s32) a0); - - cnt = *(s32 *)((char *) a0 + 0x1C) - 1; - *(u16 *)((char *) a0 + 0xA) ^= 2; - *(s32 *)((char *) a0 + 0x1C) = cnt; - - if (cnt == 0) { - s1 = D_8018FA1C; - func_801439C0(*(s32 *)((char *) a0 + 0xCC)); - - for (s2 = 0; s2 < 21; s2++, s1++) { - ret = func_8012C588(0xE7, (s32) a0); - if (ret != 0) { - sub = *(s32 *)(ret + 0x20); - *(s32 *)(sub + 0x24) = *s1; - } - } - - *(s16 *)(D_801EC454 + 0xFC) = 0xA; - *(s32 *)(*(s32 *)((char *) a0 + 0x20) + 0x24) = (s32) &D_801ADBA4; - func_8012A828((s32) a0, &D_8018BD04); - - *(s16 *)((char *) a0 + 0xE) = 0x3C0; - *(s16 *)((char *) a0 + 0x2) = 0x24; - - __asm__ __volatile__("" ::: "memory"); - - obj = *(s32 *)((char *) a0 + 0x20); - health = *(u16 *)((char *) a0 + 0xA); - *(s16 *)((char *) a0 + 0x6) = 0; - *(s16 *)((char *) a0 + 0x70) = 0; - health -= 8; - *(u16 *)((char *) a0 + 0xA) = (u16) health; - - *(u16 *)(obj + 0x2C) |= 0x80; - *(s32 *)(*(s32 *)((char *) a0 + 0x20) + 0x80) = (s32) ((s32 *)&D_8018FA0C); - *(u32 *)(*(s32 *)((char *) a0 + 0x20) + 0x4) |= 0x80000000; - - D_801EC44C = 0; - func_8002AC00(0xC); - } -} - - -#include "common.h" - -extern s32 func_801789AC(s32 arg0); -extern s16 D_801EC590; -extern void func_80178D18(void); -extern void func_8012C218(void *); -extern s32 D_801EC450; - -void func_801873A8(s32 param_1) { - *(s32 *)((s32)D_801EC450 + 0xF8) = *(s32 *)(param_1 + 0xF8); - *(s32 *)(param_1 + 0xF8) = 0; - if (func_801789AC(param_1) != 0) { - if (D_801EC590 == 0) { - ((void (*)(s32))func_80178D18)(param_1); - func_8012C218((void *)param_1); - } - } -} - - -void func_80187414(void) { -} - -#include "common.h" - -extern void func_8018B234(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); -extern void func_8017FADC(void); -extern s32 func_801439C0(s32 a0); -extern u8 D_801ADC24[]; -extern u8 D_8018F924[]; - -void func_8018741C(s32 a0) -{ - if (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) != 0) { - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) -= 0x80; - } else { - func_8018B234(1); - func_8012A828(a0, D_801ADC24); - *(s32 *)(a0 + 0x1C) = 0x14; - *(u16 *)(a0 + 0x2) = 0x2A; - *(u16 *)(a0 + 0x76) = *(u16 *)D_8018F924; - func_8017BF08((void *)(a0 + 0x76), (void *)(a0 + 0x76), 1, 0x78); - func_8017FADC(); - if (*(s32 *)(a0 + 0xCC) != 0) { - func_801439C0(*(s32 *)(a0 + 0xCC)); - *(s32 *)(a0 + 0xCC) = 0; - } - } -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_801874D0); - -#include "common.h" - -extern void func_8018B260(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B23C(s32 a0); -extern u8 D_801ADC24[]; - -void func_8018753C(void *a0) { - register s32 s0 __asm__("$16"); - s32 v0; - s32 v1; - - s0 = (s32)a0; - v0 = *(s32 *)(s0 + 0x1C); - if (v0 == 0) { - v1 = *(s32 *)(s0 + 0x94); - if (v1 == 0xA) { - if (*(s16 *)(s0 + 0x98) == 1) { - func_8002D4C8(0x55B, 0); - } - v1 = *(s32 *)(s0 + 0x94); - } - if (v1 == 0x22) { - func_8012A828(s0, D_801ADC24); - *(s32 *)(s0 + 0x1C) = 0x23; - } - } else { - v0--; - *(s32 *)(s0 + 0x1C) = v0; - if (v0 == 0) { - func_8018B260(); - *(s16 *)(s0 + 2) = 4; - func_8012B23C(s0); - *(s16 *)(s0 + 0x16) = -0x10; - *(s16 *)(s0 + 0x1A) = -0xC; - } - if ((*(u16 *)(s0 + 0x72) & 0x4000) != 0) { - func_8002D4C8(0x619, 0); - } - } -} - - -extern void func_8017BEBC(s32 a0, s32 a1); -extern void func_8012B23C(s32 a0); -extern u8 D_8018F924[]; - -void func_80187610(s32 a0) { - s32 a1; - s16 v; - - a1 = *(s32 *)((s32)a0 + 0x20); - v = *(s16 *)(a1 + 0x12); - if (v != 0) { - *(s16 *)(a1 + 0x12) = v - 0x80; - } else { - func_8017BEBC((s32)a0 + 0x76, (s32)D_8018F924); - *(s16 *)((s32)a0 + 2) = 4; - func_8012B23C((s32)a0); - *(s16 *)((s32)a0 + 0x16) = -0x10; - *(s16 *)((s32)a0 + 0x1A) = -0xC; - } -} - - -#include "common.h" - -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012CBCC(s32 a0); -extern void func_8013C9C4(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80180B44(s32); -extern s32 func_801843D8(void *a0); - -extern u8 D_8018C134[]; -extern u8 D_801ADC24[]; - -void func_80187688(void *arg0) { - s32 s0 = (s32)arg0; - - if ((*(s16 *)(s0 + 0x16) > 0) && (*(s32 *)(s0 + 0xCC) == 0)) { - *(s32 *)(s0 + 0xCC) = func_801843D8(arg0); - } - - if ((((s32 (*)(s32))func_8012CBCC)(s0) & 0x2000) != 0) { - func_8002D4C8(0x560, 0); - func_8013C9C4(D_8018C134); - ((void (*)(s32, s32))func_80180B44)(s0, 0); - *(s16 *)(s0 + 0x2) = 5; - *(s32 *)(s0 + 0x1C) = 0x5A; - func_8012A828(s0, D_801ADC24); - } -} - - -#include "common.h" - -extern s32 D_801EC448; -extern u8 D_801AE2C4[]; -extern u8 D_801AE3A4[]; -extern u8 D_8018F914[]; -extern s16 D_8018F9FC; - -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8018305C(s32 a0); -extern void func_8017F9D8(void); - -void func_80187730(s32 a0) { - s32 ret; - s16 x; - if (*(s32 *)(a0 + 0x94) == 0xC) { - if (D_801EC448 <= 0) { - *(s32 *)(a0 + 0x58) = ((s32)D_8018F914 | 0x40000000) | 0x20000000; - func_8012A828(a0, D_801AE2C4); - *(s16 *)(a0 + 0x2) = 0x1D; - func_8017F9D8(); - *(s32 *)(*(s32 *)(a0 + 0x20) + 0x80) = (s32)((u8 *)&D_8018F9FC); - *(u16 *)(a0 + 0x5C) |= 0x200; - x = *(s16 *)(a0 + 0x76); - if (x >= 0x51) { - *(s32 *)(a0 + 0x1C) = 0xD2; - } else if (x >= 0x29) { - *(s32 *)(a0 + 0x1C) = 0x96; - } else { - *(s32 *)(a0 + 0x1C) = 0x5A; - } - ret = func_8012C588(0xB8, a0); - *(s32 *)(a0 + 0x6C) = ret; - if (ret == 0) { - *(s32 *)(a0 + 0x1C) = 1; - } - func_8018305C(a0); - } else { - func_8012A828(a0, D_801AE3A4); - *(s16 *)(a0 + 0x2) = 0x1E; - *(s32 *)(a0 + 0x58) = ((s32)D_8018F914 | 0x40000000) | 0x20000000; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) &= 0xFF7F; - } - } -} - - -void func_80187860(void *arg0) { - extern s32 D_8018FB48; - - func_80178B18((s32)arg0, (s32)&D_8018FB48); - func_801746DC(); - *(s16 *)((u8 *)arg0 + 0x2) = 0x21; - *(s32 *)((u8 *)arg0 + 0x1C) = 0x80; -} - - -#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 s32 D_80190050; -extern u8 D_8019001C[]; -extern s32 D_8018BD04; - -void func_801878A8(s32 arg0) { - s32 t; - - if (func_8012C354(arg0, (s32)D_8019001C)) { - *(u8 *)(arg0 + 0xC0) = 1; - *(s32 *)(arg0 + 0xBC) = (s32)&D_80190050; - t = *(s32 *)(arg0 + 0x64); - *(u8 *)(arg0 + 0xC1) = 0; - *(s32 *)(arg0 + 0xB4) = 0; - *(u32 *)(arg0 + 0xC4) |= 2; - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(t + 0x20) + 0x12); - *(s16 *)(arg0 + 2) = 1; - func_8012A828(arg0, (void *)&D_8018BD04); - *(u32 *)(*(s32 *)(arg0 + 0x20) + 4) |= 0x80000000; - func_8012B2CC(arg0); - *(s16 *)(arg0 + 0xAE) = -0x40F3; - } -} - - -void func_80187954(void *a0) -{ - s32 t1 = *(volatile s32 *)((s32)a0 + 0x64); - s32 t2 = *(volatile s32 *)((s32)a0 + 0x64); - - *(s32 *)((s32)a0 + 0x4) = *(s32 *)(t1 + 0x4); - *(s32 *)((s32)a0 + 0x8) = *(s32 *)(t2 + 0x8); - *(s32 *)((s32)a0 + 0xC) = *(s32 *)(*(volatile s32 *)((s32)a0 + 0x64) + 0xC); - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(*(volatile s32 *)((s32)a0 + 0x64) + 0x20) + 0x12); - func_8012B2CC((s32)a0); -} - - -#include "common.h" - -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_800D0C48(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012C218(void *a0); -extern void func_8017F93C(void); -extern s32 D_801EC448; -extern u8 D_801AE2DC; - -void func_801879AC(void *a0) { - register s32 v0 __asm__("$2"); - register s32 v1 __asm__("$3"); - - v0 = *(s32 *)((s32)a0 + 0x1C); - if (v0 != 0) { - *(s32 *)((s32)a0 + 0x1C) = v0 - 1; - return; - } - - v1 = *(s32 *)((s32)a0 + 0x64); - if (*(s16 *)(v1 + 0x76) <= 0) { - *(s16 *)(v1 + 0x5C) = 0; - v0 = *(s32 *)((s32)a0 + 0x64); - *(s16 *)(v0 + 0x2) = 0x29; - func_800D0C48(4); - func_8002D4C8(0x5E0, 0); - func_8017F93C(); - v0 = *(s32 *)((s32)a0 + 0x64); - *(s32 *)(v0 + 0x6C) = 0; - func_8012C218(a0); - } else { - func_8012A828(v1, &D_801AE2DC); - v1 = *(s32 *)((s32)a0 + 0x64); - *(s16 *)(v1 + 0x2) = 0x1E; - func_8002D4C8(0x566, 0); - v0 = *(s32 *)((s32)a0 + 0x64); - v1 = *(s16 *)(v0 + 0x76); - if (v1 >= 0x51) { - v0 = 0x10; - } else { - v0 = (v1 < 0x29); - if (v0 == 0) { - v0 = 0x18; - } else { - v0 = 0x20; - } - } - D_801EC448 = v0; - *(s32 *)((s32)a0 + 0x1C) = 0xF; - *(s16 *)((s32)a0 + 0x2) = 3; - } -} - - -void func_80187AB0(void *a0) { - if (*(s32 *)((s32)a0 + 0x1C) != 0) { - (*(s32 *)((s32)a0 + 0x1C))--; - } else { - func_8017F93C(); - *(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0x6C) = 0; - func_8012C218(a0); - } -} - - -#include "common.h" - -typedef struct { - u8 pad[8]; /* 0x00 */ - u16 f8; /* 0x08 */ - u16 fa; /* 0x0a */ -} MatEntry_80187B04; - -extern MatEntry D_80190078[]; -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void func_8012C218(void*); - -void func_80187B04(s32 param_1) { - s32 iVar3; - MatEntry_80187B04 *p; - s32 entity; - s32 sVar4; - - *(s32 *)(param_1 + 0x4) = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x4); - *(s32 *)(param_1 + 0x8) = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x8) - 0x400000; - p = &((MatEntry_80187B04 *)D_80190078)[*(u16 *)(param_1 + 0x70) & 3]; - *(s32 *)(param_1 + 0xC) = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0xC); - iVar3 = *(s32 *)(param_1 + 0x20); - *(s16 *)(iVar3 + 0x14) = p->f8; - *(u16 *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) + p->fa; - sVar4 = 0x1000; - ApplyMatrixSV((void *)(*(s32 *)(param_1 + 0x20) + 0x34), p, (void *)(param_1 + 0x50)); - - if (*(s16 *)(param_1 + 0xFE) != 0) goto do_call; - entity = *(s32 *)(param_1 + 0x64); - if (entity == 0 || *(s16 *)(entity + 0x36) != *(s16 *)(param_1 + 0xFC) || - *(u16 *)(entity + 0x5C) != 0) { - *(s16 *)(param_1 + 0xFE) = 1; - } - goto tail; -do_call: - func_8012C218((void *)param_1); - return; -tail: - *(s16 *)(iVar3 + 0x18) = *(s16 *)(iVar3 + 0x1A) = *(s16 *)(iVar3 + 0x1C) = sVar4; -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8001CA1C(s32 a0, s32 a1); - -extern s32 D_8019009C; -extern u8 D_801900A8; - -void func_80187C28(void *a0) -{ - register void *s0 __asm__("$16"); - s32 v0; - s32 v1; - - s0 = a0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - return; - } - - func_8001CA1C(v0, (s32)&D_8019009C); - - *(u16 *)((s32)s0 + 0xA) -= 0x100; - v1 = *(s32 *)((s32)s0 + 0x64); - if (*(u16 *)v1 != 0) { - *(u16 *)((s32)s0 + 0xFC) = *(u16 *)(v1 + 0x36); - } - - func_8012A828((s32)s0, &D_801900A8); - - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x12) = - (*(u16 *)((s32)s0 + 0x70) & 3) * 0x1000 / 3; - - if ((*(u16 *)((s32)s0 + 0x70) & 4) != 0) { - *(u16 *)((s32)s0 + 0x2) = 2; - } else { - *(u16 *)((s32)s0 + 0x2) = 1; - } -} - - -extern void func_80183264(s32 a0); - -void func_80187CF4(void *a0) { - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1C) += 0xA00; - if (*(s16 *)((s32)a0 + 0xFC) == 4) { - *(u16 *)((s32)a0 + 0x2) = 2; - *(s32 *)((s32)a0 + 0x1C) = 0x79; - } - func_80183264((s32)a0); -} - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80183264(s32 a0); -extern s32 D_801900C4; -extern s32 D_8018BD04; - -void func_80187D48(void *a0) { - s32 v1; - s32 s0; - - s0 = (s32)a0; - if (func_8012C354(s0, (s32)&D_801900C4) != 0) { - *(u8 *)(s0 + 0xC0) = 1; - *(s32 *)(s0 + 0xB4) = 1; - func_8012A828(s0, &D_8018BD04); - v1 = *(s32 *)(s0 + 0x64); - *(s16 *)(s0 + 0x2) = 1; - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(v1 + 0x20) + 0x12); - func_80183264(s0); - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0x30; - *(s32 *)(s0 + 0x1C) = 6; - *(u16 *)(s0 + 0xFC) = 0; - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x18) = 0x3000; - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x1A) = 0x1000; - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x1C) = 0xC00; - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) |= 0x10; - } -} - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_801838B0(s32 a0); -extern void func_8012B2CC(s32 a0); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 D_80190218; - -void func_80187E14(s32 param_1) -{ - s32 iVar1; - - iVar1 = ((s32 (*)(s32, void *))func_8012C354)(param_1, &D_80190218); - if (iVar1 != 0) { - func_801838B0(param_1); - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x18) = 0x2000; - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1A) = 0x2000; - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1C) = 0x333; - func_8012B2CC(param_1); - iVar1 = func_8004787C(*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) & 0xFFF); - *(s32 *)(param_1 + 0x10) = (iVar1 << 0xC) / 10; - iVar1 = func_80047948(*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) & 0xFFF); - *(s16 *)(param_1 + 2) = 2; - *(s32 *)(param_1 + 0x18) = (iVar1 << 0xC) / 10; - } -} - - -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012C218(void *a0); - -void func_80187EEC(s32 a0) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) += 0x333; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A) += 0x333; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1C) += 0x333; - - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) == 6) { - func_8012C658(0xFE, 0, a0); - } - - if (*(s32 *)(a0 + 0x1C) >= 0xB) { - func_8012C218((void *)a0); - } -} - - -extern void func_8012C218(void *a0); -extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); - -void func_80187F98(s32 a0) { - s32 v0; - s32 v1; - s32 p20; - - *(s32 *)(a0 + 4) = *(s32 *)(a0 + 4) + *(s32 *)(a0 + 0x10); - *(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0xC) + *(s32 *)(a0 + 0x18); - p20 = *(s32 *)(a0 + 0x20); - *(u16 *)(p20 + 0x1C) = *(u16 *)(p20 + 0x1C) + 0x333; - v0 = *(s32 *)(a0 + 0x1C) + 1; - *(s32 *)(a0 + 0x1C) = v0; - if (v0 == 6) { - func_8012C658(0xFE, 0, a0); - } - if (*(s32 *)(a0 + 0x1C) >= 0xB) { - func_8012C218((void *)a0); - } -} - - -extern void func_8012CBCC(s32); -extern void func_8012C218(void *); - -void func_80188034(s32 a0) -{ - s32 s0; - s32 ret; - s32 cnt; - s16 val; - - s0 = a0; - ret = ((s32 (*)(s32))func_8012CBCC)(a0); - if ((ret & 0x2000) != 0) { - *(s32 *)(s0 + 0x14) = -*(s32 *)(s0 + 0x14); - cnt = *(s32 *)(s0 + 0x1C) + 1; - *(s32 *)(s0 + 0x1C) = cnt; - if (cnt == 2) { - goto kill; - } - } - val = *(u16 *)(s0 + 0xFC) - 1; - *(u16 *)(s0 + 0xFC) = val; - if (val != 0) { - return; - } -kill: - func_8012C218((void *)s0); -} - - -extern void func_8012A828(s32 a0, void *a1); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_8012C354(s32 a0, s32 a1); - -extern u8 D_80190324[]; -extern s32 D_80190358; -extern s32 D_801E2458; -extern u16 D_80126B5E; -extern u16 D_80126B66; - -void func_801880AC(s32 a0) -{ - s32 s0; - s32 v0; - s32 v1; - - if (func_8012C354(a0, (s32)D_80190324) == 0) { - return; - } - - s0 = a0; - *(s8 *)(s0 + 0xC0) = 1; - *(s32 *)(s0 + 0xBC) = (s32)&D_80190358; - v0 = *(s32 *)(s0 + 0xC4); - v1 = *(u16 *)(s0 + 0x5C); - *(s8 *)(s0 + 0xC1) = 0; - *(s32 *)(s0 + 0xB4) = 0; - *(s8 *)(s0 + 0x75) = 0; - *(s32 *)(s0 + 0xC4) = v0 | 2; - *(u16 *)(s0 + 0x5C) = v1 | 0x4000; - func_8012A828(s0, &D_801E2458); - - *(s16 *)(s0 + 6) = D_80126B5E; - *(s16 *)(s0 + 0xA) = 0xC0; - *(s16 *)(s0 + 0xE) = D_80126B66; - *(s16 *)(s0 + 2) = 1; - *(s32 *)(s0 + 0x1C) = 0xF; - func_8002D4C8(0x562, 0); -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80188164); - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_801881CC); - -extern void func_8012C218(void *a0); -extern void func_80183E04(void *a0); - -void func_80188238(s32 *a0) -{ - s16 v = *(u16 *)((s32)a0 + 0xA) + 0x18; - *(u16 *)((s32)a0 + 0xA) = v; - if (v >= 0xA0) { - func_8012C218(a0); - } else { - func_80183E04(a0); - } -} - - - -extern void func_801292C8(u8 *a0); - s32 func_8018828C(s32 arg0) { - *(s32 *)(arg0 + 0x1c) -= 1; - if (*(s32 *)(arg0 + 0x1c) == 0) { - ((void (*)(void))func_801292C8)(); - } - } - - -#include "common.h" - -extern void func_8012CBCC(s32); -extern void func_8012C218(void*); - -void func_801882C0(s32 a0) -{ - s32 s0; - s32 v0; - - s0 = a0; - v0 = ((s32 (*)(s32))func_8012CBCC)(a0); - if (v0 != 0) { - *(u16 *)(s0 + 0xFC) = -*(u16 *)(s0 + 0xFC); - *(u16 *)(s0 + 0xFE) = -*(u16 *)(s0 + 0xFE); - *(u16 *)(s0 + 0x100) = -*(u16 *)(s0 + 0x100); - if (v0 & 0x8000) { - *(s32 *)(s0 + 0x10) = -*(s32 *)(s0 + 0x10); - *(s32 *)(s0 + 0x18) = -*(s32 *)(s0 + 0x18); - } else { - *(s32 *)(s0 + 0x14) = -*(s32 *)(s0 + 0x14); - } - } - - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x10) += *(u16 *)(s0 + 0xFC); - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x12) += *(u16 *)(s0 + 0xFE); - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x14) += *(u16 *)(s0 + 0x100); - - if (--*(s32 *)(s0 + 0x1C) < 0x10) { - *(u32 *)(*(s32 *)(s0 + 0x20) + 4) ^= 0x80000000; - if (*(s32 *)(s0 + 0x1C) == 0) { - func_8012C218((void *)s0); - } - } -} - - -#include "common.h" - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B23C(s32 a0); -extern s32 rand(void); -extern s32 D_801900C4; -extern s32 D_8018BD04; - -void func_801883E4(s32 param_1) { - if (((s32 (*)(s32, void *))func_8012C354)(param_1, &D_801900C4) == 0) { - return; - } - *(u8 *)(param_1 + 0xC0) = 1; - *(s32 *)(param_1 + 0xB4) = 1; - ((void (*)(s32, void *))func_8012A828)(param_1, &D_8018BD04); - *(u16 *)(param_1 + 0x2) = 1; - ((void (*)(s32))func_8012B23C)(param_1); - - *(s16 *)(param_1 + 0xFC) = (rand() & 0xFF) - 0x80; - *(s16 *)(param_1 + 0xFE) = (rand() & 0xFF) - 0x80; - *(s16 *)(param_1 + 0x100) = (rand() & 0xFF) - 0x80; - *(s16 *)(param_1 + 0x12) = (rand() & 0xF) - 0x8; - *(s16 *)(param_1 + 0x1A) = (rand() & 0xF) - 0x8; - *(s16 *)(param_1 + 0x16) = -0x38; - *(s32 *)(param_1 + 0x1C) = 0x5A; -} - - -void func_801884AC(void *a0) -{ - s32 t0; - s32 t1; - s32 v0; - - if (*(s16 *)((s32)a0 + 0x12) > 0) { - t0 = *(s32 *)((s32)a0 + 0xCC); - t1 = *(s32 *)((s32)a0 + 0xD0); - } else { - t0 = *(s32 *)((s32)a0 + 0xD4); - t1 = *(s32 *)((s32)a0 + 0xD8); - } - - if (*(u16 *)(t0 + 2) != 5) { - if (*(u16 *)(t1 + 2) != 5) { - if (*(u16 *)(*(s32 *)((s32)a0 + 0x64) + 2) != 29) { - *(s32 *)((s32)a0 + 0x1C) -= 1; - } - } - } - - if (*(s32 *)((s32)a0 + 0x1C) == 0) { - v0 = *(s16 *)((s32)a0 + 0x12); - *(u16 *)((s32)a0 + 0xFE) = 0x310; - *(s16 *)((s32)a0 + 2) = 2; - *(s16 *)((s32)a0 + 0x12) = -v0; - } -} - - -void func_8018854C(s32 a0) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A) -= 0x200; - if (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x1A) < 0x1001) { - *(u16 *)(a0 + 2) = 4; - } -} - - -#include "common.h" - -void func_8018858C(s32 arg) { - s32 ptr1; - s32 ptr2; - s32 cnt; - u16 val; - u16 state; - s16 chk; - - ptr1 = *(s32 *)(arg + 0x20); - val = *(u16 *)(ptr1 + 0x1A); - val = val + 0x200; - *(u16 *)(ptr1 + 0x1A) = val; - - ptr2 = *(s32 *)(arg + 0x20); - chk = *(s16 *)(ptr2 + 0x1A); - if (chk < 0x2000) { - return; - } - - state = *(u16 *)(arg + 0x34); - cnt = *(s16 *)(arg + 0x12); - *(u16 *)(arg + 0x2) = state; - if (cnt < 0) { - if (cnt != -4) { - *(s16 *)(arg + 0x12) = -4; - } - } else { - if (cnt != 4) { - *(s16 *)(arg + 0x12) = 4; - } - } -} - - -#include "common.h" - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_80143970(s32 a0); -extern s32 func_8012C51C(void *a0, s32 a1); - -extern s32 D_80190414; -extern s32 D_80190420; -extern u8 D_8018F884[]; -extern u8 D_8018F898[]; -extern u8 D_8018F8AC[]; -extern u8 D_8018F8C0[]; - -void func_80188600(s32 param_1) -{ - s32 v0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4((void *)param_1); - } else { - func_8001CA1C(v0, (s32)&D_80190414); - func_8012A828(param_1, &D_80190420); - *(s16 *)(param_1 + 2) = 5; - *(s16 *)(param_1 + 0x12) = 4; - *(s32 *)(param_1 + 0x1c) = 0x1e; - func_80143970(param_1); - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x18) = 0x2000; - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1a) = 0x2000; - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1c) = 0x2000; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2c) |= 0x10; - *(s32 *)(param_1 + 0xcc) = func_8012C51C(D_8018F884, param_1); - *(s32 *)(param_1 + 0xd0) = func_8012C51C(D_8018F898, param_1); - *(s32 *)(param_1 + 0xd4) = func_8012C51C(D_8018F8AC, param_1); - *(s32 *)(param_1 + 0xd8) = func_8012C51C(D_8018F8C0, param_1); - *(s16 *)(param_1 + 0x100) = 1; - } -} - - -#include "common.h" - -extern void (*D_8018FCB8)(); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern void func_801746DC(void); -extern s32 func_8012C588(s32 a0, s32 a1); -extern s32 D_801EC454; - -void func_8018870C(s32 a0) -{ - s32 *counter; - s32 ret; - - counter = (s32 *)(a0 + 0x1C); - (*counter)--; - if (*counter != 0) { - return; - } - - func_80178B18(a0, (s32)&D_8018FCB8); - func_801746DC(); - - *(s16 *)(a0 + 0x2) = 6; - *(s32 *)(a0 + 0x1C) = 0xA; - - ret = func_8012C588(0x379, a0); - if (ret != 0) { - D_801EC454 = ret; - *(s16 *)(ret + 0xA) = 0x17E; - *(s16 *)(ret + 0x6) = 0; - *(s16 *)(ret + 0xE) = 0x220; - *(s16 *)(*(s32 *)(ret + 0x20) + 0x10) = 0x40; - } -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_801887A8); - -#include "common.h" - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); - -extern s32 D_80190484; -extern s32 D_80190490; - -void func_801888AC(s32 param_1) -{ - s32 v0; - s32 s0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - s0 = param_1; - *(s32 *)(s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4((void *)s0); - } else { - func_8001CA1C(v0, (s32)&D_80190484); - func_8012A828((s32)s0, &D_80190490); - *(s16 *)(s0 + 2) = 1; - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x18) = 0x2000; - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x1A) = 0x2000; - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x1C) = 0x2000; - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) |= 0x10; - } -} - - -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); -extern s32 func_8012D624(s32 a0, s32 a1, s32 a2); -extern s32 func_8012E544(s32 a0); - -void func_80188950(s32 arg0) { - s32 a0; - - func_8012D624(arg0, 0x30, 0xA); - a0 = func_8012E544(0xCB); - if (a0 != 0) { - s32 dy = *(s16 *)(arg0 + 6) - *(s16 *)(a0 + 6); - s32 dx = *(s16 *)(arg0 + 0xE) - *(s16 *)(a0 + 0xE); - if (dy * dy + dx * dx < 0x4000) { - u16 f = *(u16 *)(a0 + 0x5C); - if (f & 0x8000) { - *(u16 *)(a0 + 0x5C) = f | 1; - *(u16 *)(a0 + 0x5E) = 0x1D; - } - } - } - if (func_8012BEE8(arg0) != 0) { - func_8012C218((void *)arg0); - } -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B23C(s32 a0); -extern s32 rand(void); - -extern u8 D_801904A8; -extern u8 D_801904B4; - -void func_80188A0C(s32 param_1) -{ - s32 v0; - s32 s0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - s0 = param_1; - *(s32 *)(s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4((void *)s0); - } else { - func_8001CA1C(v0, (s32)&D_801904A8); - func_8012A828((s32)s0, &D_801904B4); - *(s16 *)(s0 + 2) = 1; - func_8012B23C((s32)s0); - - *(s32 *)(s0 + 0x10) = ((rand() & 0xFF) - 0x80) << 12; - *(s32 *)(s0 + 0x18) = ((rand() & 0xFF) - 0x80) << 12; - - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x18) = 0x2000; - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x1A) = 0x2000; - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x1C) = 0x2000; - - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) |= 0x10; - } -} - - -#include "common.h" - -extern u16 D_80126B66; -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); -extern s32 rand(void); - -void func_80188AE4(s32 param_1) { - s32 v1; - s32 v0; - s16 state; - - v1 = *(s32 *)(param_1 + 0x64); - state = *(s16 *)(*(s32 *)(v1 + 0x20) + 0x1A); - if (state < 0x1801) { - *(s16 *)(v1 + 0xFC) = 0; - *(s16 *)(param_1 + 2) = 2; - *(s16 *)(param_1 + 0xFC) = rand(); - *(s16 *)(param_1 + 0xFE) = rand(); - *(s16 *)(param_1 + 0x5C) = 0x100; - } else { - s16 t; - - *(s16 *)(param_1 + 6) = *(u16 *)(v1 + 6); - t = D_80126B66; - if (t >= 0x3C1) { - s16 arg; - s32 r; - - arg = (t - 0x3C0) << 1; - r = func_80047948(arg); - v1 = *(s32 *)(param_1 + 0x64); - *(s16 *)(param_1 + 0xA) = *(u16 *)(v1 + 0xA) - (r >> 9); - r = func_8004787C(arg); - v1 = *(s32 *)(param_1 + 0x64); - *(s16 *)(param_1 + 0xE) = *(u16 *)(v1 + 0xE) - (r >> 9); - } else { - v0 = *(s32 *)(param_1 + 0x64); - *(s16 *)(param_1 + 0xA) = *(u16 *)(v0 + 0xA) - 8; - v1 = *(s32 *)(param_1 + 0x64); - *(s16 *)(param_1 + 0xE) = *(u16 *)(v1 + 0xE); - } - } -} - - -extern void func_8012CBCC(s32 a0); -extern s32 rand(void); -extern s32 func_8004787C(s32 a0); - -void func_80188BEC(s32 a0) { - register s32 s0 __asm__("$16"); - s32 rnd; - - s0 = a0; - rnd = rand(); - *(u16 *)(s0 + 0xFC) = (*(u16 *)(s0 + 0xFC) + ((rnd & 0xFFF) >> 5)) & 0xFFF; - rnd = rand(); - *(u16 *)(s0 + 0xFC) += (rnd & 0xFFF) >> 5; - *(u16 *)(s0 + 0xFE) &= 0xFFF; - *(u16 *)(s0 + 6) += func_8004787C(*(s16 *)(s0 + 0xFC)) >> 10; - *(u16 *)(s0 + 0xE) += func_8004787C(*(s16 *)(s0 + 0xFE)) >> 10; - *(u16 *)(s0 + 0xA) += 0xC; - if (((((s32 (*)(s32))func_8012CBCC)(s0)) & 0x2000) != 0) { - *(u16 *)(s0 + 2) = 3; - *(s32 *)(s0 + 0x1C) = 0x78; - } -} - - -#include "common.h" - -extern void func_8012C218(void *a0); - -void func_80188CAC(s32 a0) { - s32 v0 = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = v0; - - if (v0 < 0x1E) { - *(s32 *)(*(s32 *)(a0 + 0x20) + 4) ^= 0x80000000; - if (*(s32 *)(a0 + 0x1C) == 0) { - func_8012C218((void *)a0); - } - } -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8001CA1C(s32 a0, s32 a1); - -void func_80188D14(void *a0) -{ - register void *s0 __asm__("$16"); - s32 v0; - - s0 = a0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - *(s16 *)(*(s32 *)((s32)s0 + 0x64) + 0xFC) = 0; - func_8012CAE4(s0); - } else { - extern u8 D_801905A0; - extern u8 D_801905AC; - - func_8001CA1C(v0, (s32)&D_801905A0); - func_8012A828((s32)s0, &D_801905AC); - *(s16 *)((s32)s0 + 0x2) = 1; - - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x2000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x2000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x2000; - - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; - } -} - - -#include "common.h" - -extern void func_8012B23C(s32 a0); -extern u16 D_80126B66; -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); - -void func_80188DC0(s32 param_1) { - s32 v1; - s32 v0; - s16 state; - - v1 = *(s32 *)(param_1 + 0x64); - state = *(s16 *)(*(s32 *)(v1 + 0x20) + 0x1A); - if (state < 0x1801) { - func_8012B23C((s32)param_1); - *(s16 *)(param_1 + 2) = 2; - *(s16 *)(*(s32 *)(param_1 + 0x64) + 0xFC) = 0; - } else { - s16 t; - - *(s16 *)(param_1 + 6) = *(u16 *)(v1 + 6); - t = D_80126B66; - if (t >= 0x3C1) { - s16 arg; - s32 r; - - arg = (t - 0x3C0) << 1; - r = func_80047948(arg); - v1 = *(s32 *)(param_1 + 0x64); - *(s16 *)(param_1 + 0xA) = *(u16 *)(v1 + 0xA) - (r >> 9); - r = func_8004787C(arg); - v1 = *(s32 *)(param_1 + 0x64); - *(s16 *)(param_1 + 0xE) = *(u16 *)(v1 + 0xE) - (r >> 9); - } else { - v0 = *(s32 *)(param_1 + 0x64); - *(s16 *)(param_1 + 0xA) = *(u16 *)(v0 + 0xA) - 8; - v1 = *(s32 *)(param_1 + 0x64); - *(s16 *)(param_1 + 0xE) = *(u16 *)(v1 + 0xE); - } - } -} - - -extern s32 D_801EC44C; -extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); -extern void func_8012C218(void *a0); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80188EC0(void *arg0) { - if (*(u16 *)(D_801EC44C + 2) == 0x1F) { - *(u16 *)((s32)arg0 + 6) ^= 2; - } else { - s32 i; - - for (i = 0; i < 8; i++) { - func_8012C658(0xCC, i * 0x200, (s32)arg0); - } - func_8012C218(arg0); - func_8002D4C8(0x62A, 0); - } -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); - -void func_80188F4C(void *a0) -{ - register void *s0 __asm__("$16"); - s32 v0; - - s0 = a0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - } else { - extern u8 D_801905E4[]; - extern u8 D_801905F0[]; - - func_8001CA1C(v0, (s32)&D_801905E4); - func_8012A828((s32)s0, &D_801905F0); - *(s16 *)((s32)s0 + 0x2) = 1; - - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x2800; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x2800; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x2800; - - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; - } -} - - -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_80188FF0); - -extern void func_8012C218(void *a0); - -void func_80189094(s32 param_1) { - s32 v0; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) ^= 0x80000000; - v0 = *(s32 *)(param_1 + 0x1C) - 1; - *(s32 *)(param_1 + 0x1C) = v0; - if (v0 == 0) { - func_8012C218((void *)param_1); - } -} - - -extern void func_8012CBCC(s32 a0); - extern void func_8012C218(void *a0); - void func_801890E4(s32 param_1) { - if (((int (*)(void))func_8012CBCC)() != 0) { - ((void (*)(int))func_8012C218)(param_1); - } - } - - -#include "common.h" - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B23C(s32 a0); -extern void func_8012B2CC(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern s32 rand(void); - -void func_8018911C(void *a0) -{ - extern u8 D_80190688[]; - extern u8 D_801906A0[]; - extern s32 D_801906C0; - - s32 v0; - void *s0; - s32 t; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - s0 = a0; - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - } else { - func_8001CA1C(v0, (s32)D_80190688); - func_8012A828((s32)s0, (void *)D_801906A0); - - *(s16 *)((s32)s0 + 0x2) = 1; - func_8012B23C((s32)s0); - - t = rand(); - *(s32 *)((s32)s0 + 0x94) = t & 1; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x12) = *(u16 *)((s32)s0 + 0x70); - func_8012B2CC((s32)s0); - - { - s32 *p = &D_801906C0; - t = rand(); - *p = -(((t & 3) + 2) << 16); - func_8012B14C((s32)s0, (s32)p - 8); - } - - t = rand(); - *(s16 *)((s32)s0 + 0x16) = -(t & 7) - 8; - - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x3000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x3000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x3000; - - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; - } -} - - -void func_80189234(void) { -} - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); - -void func_8018923C(void *a0) -{ - register void *s0 __asm__("$16"); - s32 v0; - - s0 = a0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - } else { - extern u8 D_801906D0; - extern u8 D_801906F4; - s16 t; - - func_8001CA1C(v0, (s32)&D_801906D0); - func_8012A828((s32)s0, &D_801906F4); - *(s16 *)((s32)s0 + 0x2) = 1; - - t = 0x1800; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = t; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = t; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = t; - - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; - } -} - - -void func_801892E0(s32 arg0) { - s16 var; - s16 t; - s16 idx; - s32 s0; - - extern s32 D_80190748[]; - - s0 = arg0; - var = *(u16 *)(s0 + 0xFC); - t = var >> 1; - idx = t % 6; - func_800183E0(D_80190748[idx]); - *(u16 *)(s0 + 6) -= 8; - if (--*(s32 *)(s0 + 0x1C) == 0) { - *(u16 *)(s0 + 2) = 2; - } -} - - -extern void func_800183E0(s32 a0); -extern s32 func_8012C588(s32 a0, s32 a1); -extern s32 D_80190780[]; - -void func_80189380(s32 arg0) -{ - u16 var; - s16 cmp; - s32 a0; - - var = *(u16 *)(arg0 + 0xFC); - if ((s16)var < 13) { - func_800183E0(D_80190780[(s16)var >> 1]); - cmp = *(s16 *)(arg0 + 0xFC); - if (cmp == 5) { - if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) == 0) { - a0 = func_8012C588(*(s16 *)(arg0 + 0xFE), arg0); - if (a0 != 0) { - *(s32 *)(a0 + 0x64) = *(s32 *)(arg0 + 0x64); - *(s32 *)(a0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4); - *(s32 *)(a0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - 0x40000; - *(s32 *)(a0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC); - *(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) = 8; - } - } - } - } else { - *(s16 *)(arg0 + 2) = 2; - } -} - - -void func_8018947C(s32 arg0) { - extern u8 D_8019079C[]; - u16 var; - s16 cmp; - - if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { - cmp = *(s16 *)(arg0 + 0xFC); - if (cmp == 5) { - *(u16 *)(arg0 + 0xFC) = cmp - 1; - } - } - var = *(u16 *)(arg0 + 0xFC); - if ((s16)var < 9) { - func_800183E0(*(s32 *)((s32)D_8019079C + (((s16)var >> 1) * 4))); - } else { - *(s16 *)(arg0 + 2) = 2; - } -} - - -void func_80189518(s32 arg0) -{ - extern void func_800183E0(s32); - extern u8 D_801CFAFC[]; - extern u8 D_801CFB1C[]; - extern u8 D_80078E78[]; - u8 *base; - s32 a; - s32 b; - s32 cond; - - base = D_80078E78; - if (*(u16 *)(arg0 + 0xFC) & 0xF) { - func_800183E0(D_801CFB1C); - } else { - func_800183E0(D_801CFAFC); - } - - a = *(s16 *)(arg0 + 0xDE); - if (a >= 0x564 && (b = *(s16 *)(base + 0x1A)) < 0x3D) { - cond = b + 0x5A0 < a; - } else { - cond = *(s16 *)(arg0 + 0xDE) > *(s16 *)(base + 0x1A); - } - if (cond == 0) { - *(s16 *)(arg0 + 2) = 2; - *(u8 *)(arg0 + 0xC1) = 0; - *(u16 *)(arg0 + 0x5C) = 0x8000; - } -} - - -extern s32 D_80190748[]; -extern void func_800183E0(s32 a0); -extern void func_8012C218(void*); - -void func_801895CC(arg0) -s32 arg0; -{ - s16 var; - s32 s0; - - extern s32 D_80190748[]; - extern void func_8012C218(void *a0); - - s0 = arg0; - var = *(u16 *)(s0 + 0xFC); - func_800183E0(D_80190748[(var >> 1) % 6]); - *(u16 *)(s0 + 6) += 8; - if (--*(s32 *)(s0 + 0x1C) == 0) { - func_8012C218((void *)s0); - } -} - - -void func_8018966C(void *a0) -{ - register void *s0 __asm__("$16"); - s32 v0; - - extern void func_8012C1B8(void); - extern void func_8012CAE4(void *a0); - extern void func_8001CA1C(s32 a0, s32 a1); - extern void func_8012A828(s32 a0, void *a1); - extern u8 D_8019072C; - extern u8 D_80190738; - extern u8 D_801907D4; - extern u8 D_801907C4; - - s0 = a0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - } else { - register s32 t __asm__("$2"); - - func_8001CA1C(v0, (s32)&D_8019072C); - func_8012A828((s32)s0, &D_80190738); - *(s16 *)((s32)s0 + 0x2) = 1; - *(s8 *)((s32)s0 + 0xC0) = 1; - *(s32 *)((s32)s0 + 0xBC) = (s32)&D_801907D4; - *(u16 *)((s32)s0 + 0x5C) = 0x8000; - __asm__("" ::: "memory"); - t = *(s32 *)((s32)s0 + 0xC4); - *(s32 *)((s32)s0 + 0x58) = (s32)&D_801907C4; - *(s32 *)((s32)s0 + 0xC4) = t | 0x2; - *(s8 *)((s32)s0 + 0xC1) = 0; - *(s32 *)((s32)s0 + 0xB4) = 0; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x4000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x4000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x4000; - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; - *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) = 0x01000000; - *(s32 *)((s32)s0 + 0x1C) = 0x20; - *(s16 *)((s32)s0 + 0x10A) = 0x5; - } -} - - -void func_80189768(s32 arg0) { - s16 var; - s16 t; - s16 idx; - s32 s0; - - extern s32 D_8019081C[]; - - s0 = arg0; - var = *(u16 *)(s0 + 0xFC); - t = var >> 1; - idx = t % 6; - func_800183E0(D_8019081C[idx]); - *(u16 *)(s0 + 6) -= 8; - if (--*(s32 *)(s0 + 0x1C) == 0) { - *(u16 *)(s0 + 2) = 2; - } -} - - -extern void func_800183E0(s32 a0); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void (*D_80190854[])(void *); - -void func_80189808(s32 arg0) -{ - u16 var; - s16 cmp; - s32 a0; - - var = *(u16 *)(arg0 + 0xFC); - if ((s16)var < 13) { - func_800183E0((s32)D_80190854[(s16)var >> 1]); - cmp = *(s16 *)(arg0 + 0xFC); - if (cmp == 5) { - if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) == 0) { - a0 = func_8012C588(*(s16 *)(arg0 + 0xFE), arg0); - if (a0 != 0) { - *(s32 *)(a0 + 0x64) = *(s32 *)(arg0 + 0x64); - *(s32 *)(a0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4); - *(s32 *)(a0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - 0x40000; - *(s32 *)(a0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC); - *(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) = 8; - } - } - } - } else { - *(s16 *)(arg0 + 2) = 2; - } -} - - -extern s32 func_8014CB2C(void); -extern u8 D_80190870[]; -extern void func_800183E0(s32 a0); - -void func_80189904(arg0) -s32 arg0; -{ - extern u8 D_80190870[]; - u16 var; - s16 cmp; - - if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { - cmp = *(s16 *)(arg0 + 0xFC); - if (cmp == 5) { - *(u16 *)(arg0 + 0xFC) = cmp - 1; - } - } - var = *(u16 *)(arg0 + 0xFC); - if ((s16)var < 9) { - func_800183E0(*(s32 *)((s32)D_80190870 + (((s16)var >> 1) * 4))); - } else { - *(s16 *)(arg0 + 2) = 2; - } -} - - -void func_801899A0(s32 arg0) -{ - extern void func_800183E0(s32); - extern u8 D_801D55BC[]; - extern u8 D_801D55DC[]; - extern u8 D_80078E78[]; - u8 *base; - s32 a; - s32 b; - s32 cond; - - base = D_80078E78; - if (*(u16 *)(arg0 + 0xFC) & 0xF) { - func_800183E0(D_801D55DC); - } else { - func_800183E0(D_801D55BC); - } - - a = *(s16 *)(arg0 + 0xDE); - if (a >= 0x564 && (b = *(s16 *)(base + 0x1A)) < 0x3D) { - cond = b + 0x5A0 < a; - } else { - cond = *(s16 *)(arg0 + 0xDE) > *(s16 *)(base + 0x1A); - } - if (cond == 0) { - *(s16 *)(arg0 + 2) = 2; - *(u8 *)(arg0 + 0xC1) = 0; - *(u16 *)(arg0 + 0x5C) = 0x8000; - } -} - - -void func_80189A54(s32 arg0) { - s16 var; - s32 s0; - - extern s32 D_8019081C[]; - extern void func_8012C218(void *a0); - - s0 = arg0; - var = *(u16 *)(s0 + 0xFC); - func_800183E0(D_8019081C[(var >> 1) % 6]); - *(u16 *)(s0 + 6) += 8; - if (--*(s32 *)(s0 + 0x1C) == 0) { - func_8012C218((void *)s0); - } -} - - -void func_80189AF4(void *a0) -{ - register void *s0 __asm__("$16"); - s32 v0; - - extern void func_8012C1B8(void); - extern void func_8012CAE4(void *a0); - extern void func_8001CA1C(s32 a0, s32 a1); - extern void func_8012A828(s32 a0, void *a1); - extern u8 D_80190800; - extern u8 D_8019080C; - extern u8 D_80190898; - extern u8 D_801907C4; - - s0 = a0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - } else { - register s32 t __asm__("$2"); - - func_8001CA1C(v0, (s32)&D_80190800); - func_8012A828((s32)s0, (void *)&D_8019080C); - *(s16 *)((s32)s0 + 0x2) = 1; - *(s8 *)((s32)s0 + 0xC0) = 1; - *(s32 *)((s32)s0 + 0xBC) = (s32)&D_80190898; - *(u16 *)((s32)s0 + 0x5C) = 0x8000; - __asm__("" ::: "memory"); - t = *(s32 *)((s32)s0 + 0xC4); - *(s32 *)((s32)s0 + 0x58) = (s32)&D_801907C4; - *(s32 *)((s32)s0 + 0xC4) = t | 0x2; - *(s8 *)((s32)s0 + 0xC1) = 0; - *(s32 *)((s32)s0 + 0xB4) = 0; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x4000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x4000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x4000; - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; - *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) = 0x01000000; - *(s32 *)((s32)s0 + 0x1C) = 0x20; - *(s16 *)((s32)s0 + 0x10A) = 0x5; - } -} - - -void func_80189BF0(s32 arg0) { - s16 var; - s32 s0; - - extern s32 D_801908E0[]; - extern void func_800183E0(s32 a0); - - s0 = arg0; - var = *(u16 *)(s0 + 0xFC); - func_800183E0(D_801908E0[(var >> 1) % 6]); - *(u16 *)(s0 + 6) += 8; - if (--*(s32 *)(s0 + 0x1C) != 0) { - return; - } - *(u16 *)(s0 + 2) = 2; -} - - -extern void func_800183E0(s32 a0); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void (*D_80190918[])(void *); - -void func_80189C90(s32 arg0) -{ - u16 var; - s16 cmp; - s32 a0; - - var = *(u16 *)(arg0 + 0xFC); - if ((s16)var < 13) { - func_800183E0((s32)D_80190918[(s16)var >> 1]); - cmp = *(s16 *)(arg0 + 0xFC); - if (cmp == 5) { - if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) == 0) { - a0 = func_8012C588(*(s16 *)(arg0 + 0xFE), arg0); - if (a0 != 0) { - *(s32 *)(a0 + 0x64) = *(s32 *)(arg0 + 0x64); - *(s32 *)(a0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4); - *(s32 *)(a0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - 0x40000; - *(s32 *)(a0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC); - *(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) = 8; - } - } - } - } else { - *(s16 *)(arg0 + 2) = 2; - } -} - - -extern void func_800183E0(s32 a0); -extern s32 func_8014CB2C(void); -extern s32 D_80190934[]; - -void func_80189D8C(s32 arg0) -{ - u16 var; - s16 cmp; - - if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { - cmp = *(s16 *)(arg0 + 0xFC); - if (cmp == 5) { - *(u16 *)(arg0 + 0xFC) = cmp - 1; - } - } - var = *(u16 *)(arg0 + 0xFC); - if ((s16)var < 9) { - func_800183E0(D_80190934[(s16)var >> 1]); - } else { - *(s16 *)(arg0 + 2) = 2; - } -} - - -void func_80189E28(s32 arg0) -{ - extern void func_800183E0(s32); - extern u8 D_801E0B3C[]; - extern u8 D_801E0B5C[]; - extern u8 D_80078E78[]; - u8 *base; - s32 a; - s32 b; - s32 cond; - - base = D_80078E78; - if (*(u16 *)(arg0 + 0xFC) & 0xF) { - func_800183E0(D_801E0B5C); - } else { - func_800183E0(D_801E0B3C); - } - - a = *(s16 *)(arg0 + 0xDE); - if (a >= 0x564 && (b = *(s16 *)(base + 0x1A)) < 0x3D) { - cond = b + 0x5A0 < a; - } else { - cond = *(s16 *)(arg0 + 0xDE) > *(s16 *)(base + 0x1A); - } - if (cond == 0) { - *(s16 *)(arg0 + 2) = 2; - *(u8 *)(arg0 + 0xC1) = 0; - *(u16 *)(arg0 + 0x5C) = 0x8000; - } -} - - -void func_80189EDC(s32 arg0) { - s16 var; - s32 s0; - - extern s32 D_801908E0[]; - extern void func_8012C218(void *a0); - - s0 = arg0; - var = *(u16 *)(s0 + 0xFC); - func_800183E0(D_801908E0[(var >> 1) % 6]); - *(u16 *)(s0 + 6) -= 8; - if (--*(s32 *)(s0 + 0x1C) == 0) { - func_8012C218((void *)s0); - } -} - - -void func_80189F7C(void *a0) -{ - register void *s0 __asm__("$16"); - s32 v0; - - extern void func_8012C1B8(void); - extern void func_8012CAE4(void *a0); - extern void func_8001CA1C(s32 a0, s32 a1); - extern void func_8012A828(s32 a0, void *a1); - extern u8 D_801908C4; - extern u8 D_801908D0; - extern u8 D_8019095C; - extern u8 D_801907C4; - - s0 = a0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - } else { - register s32 t __asm__("$2"); - register s32 v1 __asm__("$3"); - - func_8001CA1C(v0, (s32)&D_801908C4); - func_8012A828((s32)s0, (void *)&D_801908D0); - *(s16 *)((s32)s0 + 0x2) = 1; - *(s8 *)((s32)s0 + 0xC0) = 1; - *(s32 *)((s32)s0 + 0xBC) = (s32)&D_8019095C; - *(u16 *)((s32)s0 + 0x5C) = 0x8000; - __asm__("" ::: "memory"); - v1 = 0x4000; - t = *(s32 *)((s32)s0 + 0xC4); - *(s32 *)((s32)s0 + 0x58) = (s32)&D_801907C4; - *(s32 *)((s32)s0 + 0xC4) = t | 0x2; - *(s8 *)((s32)s0 + 0xC1) = 0; - *(s32 *)((s32)s0 + 0xB4) = 0; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = v1; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = v1; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = v1; - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; - *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) = 0x01000000; - *(s32 *)((s32)s0 + 0x1C) = 0x20; - *(s16 *)((s32)s0 + 0x10A) = 0x5; - } -} - - -typedef struct { - u8 pad00[2]; /* 0x00 */ - s16 unk2; /* 0x02 */ - u8 pad04[2]; /* 0x04 */ - s16 unk6; /* 0x06 */ - u8 pad08[0x14];/* 0x08 */ - s32 unk1C; /* 0x1C */ - u8 pad20[0xDC];/* 0x20 */ - u16 unkFC; /* 0xFC */ -} Struct_8018A078; - -extern s32 D_801909A4[]; -extern void func_800183E0(s32 a0); - -void func_8018A078(Struct_8018A078 *arg0) -{ - func_800183E0(D_801909A4[((s16)arg0->unkFC >> 1) % 6]); - arg0->unk6 = arg0->unk6 + 8; - if (--arg0->unk1C == 0) { - arg0->unk2 = 2; - } -} - - -extern void func_800183E0(s32 a0); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void (*D_801909DC[])(void *); - -void func_8018A118(s32 arg0) { - u16 var; - s16 cmp; - s32 a0; - - var = *(u16 *)(arg0 + 0xFC); - if ((s16)var < 13) { - func_800183E0((s32)D_801909DC[(s16)var >> 1]); - cmp = *(s16 *)(arg0 + 0xFC); - if (cmp == 5) { - if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) == 0) { - a0 = func_8012C588(*(s16 *)(arg0 + 0xFE), arg0); - if (a0 != 0) { - *(s32 *)(a0 + 0x64) = *(s32 *)(arg0 + 0x64); - *(s32 *)(a0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4); - *(s32 *)(a0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - 0x40000; - *(s32 *)(a0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC); - *(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) = 8; - } - } - } - } else { - *(s16 *)(arg0 + 2) = 2; - } -} - - -void func_8018A214(s32 arg0) { - extern u8 D_801909F8[]; - s16 var; - s16 cmp; - - if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { - cmp = *(s16 *)(arg0 + 0xFC); - if (cmp == 5) { - *(s16 *)(arg0 + 0xFC) = cmp - 1; - } - } - var = *(u16 *)(arg0 + 0xFC); - if ((s16)var < 9) { - func_800183E0(*(s32 *)((s32)D_801909F8 + (((s16)var >> 1) * 4))); - } else { - *(s16 *)(arg0 + 2) = 2; - } -} - - -void func_8018A2B0(s32 arg0) -{ - extern void func_800183E0(s32); - extern u8 D_801DB05C[]; - extern u8 D_801DB07C[]; - extern u8 D_80078E78[]; - u8 *base; - s32 a; - s32 b; - s32 cond; - - base = D_80078E78; - if (*(u16 *)(arg0 + 0xFC) & 0xF) { - func_800183E0(D_801DB07C); - } else { - func_800183E0(D_801DB05C); - } - - a = *(s16 *)(arg0 + 0xDE); - if (a >= 0x564 && (b = *(s16 *)(base + 0x1A)) < 0x3D) { - cond = b + 0x5A0 < a; - } else { - cond = *(s16 *)(arg0 + 0xDE) > *(s16 *)(base + 0x1A); - } - if (cond == 0) { - *(s16 *)(arg0 + 2) = 2; - *(u8 *)(arg0 + 0xC1) = 0; - *(u16 *)(arg0 + 0x5C) = 0x8000; - } -} - - -void func_8018A364(s32 arg0) { - s16 var; - s32 s0; - - extern s32 D_801909A4[]; - extern void func_8012C218(void *a0); - - s0 = arg0; - var = *(u16 *)(s0 + 0xFC); - func_800183E0(D_801909A4[(var >> 1) % 6]); - *(u16 *)(s0 + 6) -= 8; - if (--*(s32 *)(s0 + 0x1C) == 0) { - func_8012C218((void *)s0); - } -} - - -void func_8018A404(void *a0) { - register void *s0 __asm__("$16"); - s32 v0; - - extern void func_8012C1B8(void); - extern void func_8012CAE4(void *a0); - extern void func_8001CA1C(s32 a0, s32 a1); - extern void func_8012A828(s32 a0, void *a1); - extern u8 D_80190988; - extern u8 D_80190994; - extern u8 D_80190A20; - extern u8 D_801907C4; - - s0 = a0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - } else { - register s32 t __asm__("$2"); - - func_8001CA1C(v0, (s32)&D_80190988); - func_8012A828((s32)s0, (void *)&D_80190994); - *(s16 *)((s32)s0 + 0x2) = 1; - *(s8 *)((s32)s0 + 0xC0) = 1; - *(s32 *)((s32)s0 + 0xBC) = (s32)&D_80190A20; - *(u16 *)((s32)s0 + 0x5C) = 0x8000; - __asm__("" ::: "memory"); - t = *(s32 *)((s32)s0 + 0xC4); - *(s32 *)((s32)s0 + 0x58) = (s32)&D_801907C4; - *(s32 *)((s32)s0 + 0xC4) = t | 0x2; - *(s8 *)((s32)s0 + 0xC1) = 0; - *(s32 *)((s32)s0 + 0xB4) = 0; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x4000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x4000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x4000; - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; - *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) = 0x01000000; - *(s32 *)((s32)s0 + 0x1C) = 0x20; - *(s16 *)((s32)s0 + 0x10A) = 0x5; - } -} - - -#include "common.h" - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B2CC(s32 a0); - -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012B23C(s32 a0); -extern void func_8012B1B4(s32 a0, s32 a1); - -void func_8018A500(void *a0) -{ - register void *s0 __asm__("$16"); - s32 v0; - - s0 = a0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - } else { - extern u8 D_80190B58; - extern u8 D_80190BA0; - extern u8 D_80190BD8; - s32 t; - u16 v1; - - func_8001CA1C(v0, (s32)&D_80190B58); - func_8012A828((s32)s0, &D_80190BA0); - *(s16 *)((s32)s0 + 0x2) = 1; - func_8012B23C((s32)s0); - - t = (rand() & 0x3FF) + 0x600; - v1 = (*(u16 *)((s32)s0 + 0x70) + t) & 0xFFF; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x12) = v1; - func_8012B2CC((s32)s0); - - func_8012B1B4((s32)s0, (s32)&D_80190BD8); - - *(s16 *)((s32)s0 + 0x16) = -((rand() & 3) + 5); - - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x3000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x3000; - *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x3000; - - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; - *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) |= 0x50000000; - } -} - - -extern void func_8012C218(void *a0); -extern void func_8012CBCC(s32 a0); - -void func_8018A618(s32 arg0) { - if ((((s32 (*)(s32))func_8012CBCC)(arg0) != 0) || (*(s16 *)((s32)arg0 + 0xA) >= 0x200)) { - func_8012C218((void *)arg0); - } -} - - - - -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -void func_8018A664(s32 param_1) -{ - - extern u8 D_800D387C[]; - extern u8 D_800D3888[]; - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_800D387C; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000; - - *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x9c; - - func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, (s32)&D_800D3888); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_801292C8(u8 *a0); -extern void func_8012931C(void *); - -void func_8018A6E0(s32 a0) { - s32 s0 = a0; - func_8012931C((void *)a0); - if (((s32 (*)(s32, void *))func_80128ED8)(*(s32 *)(s0 + 0x20), (void *)(s0 + 0x24)) != 0) { - ((void (*)(s32))func_801292C8)(s0); - } -} - - - -/* ---- externs ------------------------------------------------------------ */ -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *a0, unsigned short a1); - - -/* align-1 4-byte block: lowers via emit_block_move (unaligned lwl/lwr + swl/swr) - * with ZERO memcpy-symbol reference, so the TU's `extern memcpy` cannot turn - * this into a CALL. (house idiom, cf. func_8017B238 / func_8017B614) */ - -void func_8018A724(s32 param_1) -{ - - extern u8 D_801EC458; - extern u8 D_801EC45C; - extern u8 D_801EA170; - extern u8 D_801EA174; - func_8001CD50(*(s32 *)(param_1 + 0x20), (s32)&D_801EC458); - - *(u16 *)(param_1 + 0xA) -= 0x100; - *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000; - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0x400; - *(s16 *)(param_1 + 0x2C) = 0x10; - - func_800233CC(&D_801EC458, 0x10); - - *(Blk4_8018CE04_8018A724 *)&D_801EC458 = *(Blk4_8018CE04_8018A724 *)&D_801EA170; - *(Blk4_8018CE04_8018A724 *)&D_801EC45C = *(Blk4_8018CE04_8018A724 *)&D_801EA174; - - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1E) = 0xC00; - *(u16 *)(param_1 + 2) += 1; -} - - -void func_8018A800(void *a0) -{ - s16 val; - extern u8 D_801EC45C; - - val = *(s16 *)((s32)a0 + 0x2C); - if (val < 0x700) { - *(s16 *)((s32)a0 + 0x2C) = val + 0x30; - func_801860F8(&D_801EC45C, -4); - func_800233CC(&D_801EC45C - 4, *(u16 *)((s32)a0 + 0x2C)); - } else { - func_801292C8(a0); - } -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C810(s32 a0, s32 a1); - -extern u8 D_801E2B98; -extern u8 D_801E3348; - -void func_8018A878(s32 param_1) -{ - s32 v0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - return; - } - - ((void (*)(s32, s32))func_8001C810)(v0, (s32)&D_801E2B98); - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0xCC) = v0; - if (v0 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - v0 = *(s32 *)(param_1 + 0x20); - *(s16 *)v0 = 0; - return; - } - - ((void (*)(s32, s32))func_8001C810)(v0, (s32)&D_801E3348); - - *(u8 *)(param_1 + 0xC0) = 0; - *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2C) |= 0x10; - *(u32 *)(*(s32 *)(param_1 + 0xCC) + 4) |= 0x50000000; - *(u16 *)(*(s32 *)(param_1 + 0xCC) + 0x2C) |= 0x10; - - func_801861DC((s32 *)param_1); -} - - -void func_8018A960(s32 param_1) -{ - s32 a1; - u16 v0; - u16 v1; - - a1 = *(s32 *)(param_1 + 0xCC); - v1 = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x18); - if (v1 < 0x3000) { - s32 p20; - - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x18) = v1 + 0x100; - - p20 = *(s32 *)(param_1 + 0x20); - v1 = *(u16 *)(p20 + 0x18); - *(u16 *)(p20 + 0x1C) = v1; - *(u16 *)(p20 + 0x1A) = v1; - - v0 = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = v0 + 0x100; - - *(u16 *)(a1 + 0x12) = *(u16 *)(a1 + 0x12) - 0x100; - - *(u16 *)(a1 + 0x8) = *(u16 *)(param_1 + 0x6) + *(u16 *)(param_1 + 0x50); - *(u16 *)(a1 + 0xA) = *(u16 *)(param_1 + 0xA) + *(u16 *)(param_1 + 0x52); - *(u16 *)(a1 + 0xC) = *(u16 *)(param_1 + 0xE) + *(u16 *)(param_1 + 0x54); - - *(u16 *)(a1 + 0x18) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x18); - *(u16 *)(a1 + 0x1A) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1A); - *(u16 *)(a1 + 0x1C) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1C); - } else { - func_8018620C((u8 *)param_1); - } -} - - -extern s32 func_8012BEE8(s32 a0); -extern void func_80186234(); -extern void func_80016450(s32 a0, s32 a1); - -void func_8018AA58(s32 param_1) -{ - switch (*(u16 *)(param_1 + 0x34)) { - case 0: - { - u8 v0 = *(u8 *)(param_1 + 0xFC) + 0x10; - *(u8 *)(param_1 + 0xFC) = v0; - if (v0 >= 0xF1) { - *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x80000000; - *(u32 *)(*(s32 *)(param_1 + 0xCC) + 4) |= 0x80000000; - *(s32 *)(param_1 + 0x1C) = 8; - *(u16 *)(param_1 + 0x34) += 1; - } - break; - } - case 1: - if (func_8012BEE8(param_1) != 0) { - func_80186234(param_1); - } - break; - } - - func_80016450(*(u8 *)(param_1 + 0xFC), 0); -} - - -extern void func_8012C218(void *a0); -extern void func_80016450(s32 a0, s32 a1); - -void func_8018AB28(s32 param_1) -{ - u8 b; - - b = *(u8 *)(param_1 + 0xFC) - 3; - *(u8 *)(param_1 + 0xFC) = b; - if (b >= 9) { - func_80016450(b, 0); - } else { - func_8012C218((void *)param_1); - } -} - - -void func_8018AB7C(void *arg0) { - s16 temp_v0; - s16 temp_v0_2; - - temp_v0 = *(s16 *)((s32)arg0 + 0xFC); - if (temp_v0 != 0) { - temp_v0_2 = temp_v0 - 1; - *(s16 *)((s32)arg0 + 0xFC) = temp_v0_2; - if ((temp_v0_2 << 0x10) == 0) { - *(s16 *)((s32)arg0 + 2) = 3; - *(u16 *)((s32)arg0 + 0xA) -= 0x80; - *(s16 *)((s32)arg0 + 0x98) = 1; - } - } -} - - -#include "common.h" - -extern void func_8012B23C(s32 a0); -extern s32 rand(void); - -void func_8018ABC4(void *a0) -{ - void *s0; - s32 t; - - s0 = a0; - *(s16 *)((s32)s0 + 0x5C) = 0; - func_8012B23C((s32)s0); - - t = rand(); - *(s16 *)((s32)s0 + 0xFC) = (t & 0xFF) - 0x80; - t = rand(); - *(s16 *)((s32)s0 + 0xFE) = (t & 0xFF) - 0x80; - t = rand(); - *(s16 *)((s32)s0 + 0x100) = (t & 0xFF) - 0x80; - t = rand(); - *(s16 *)((s32)s0 + 0x12) = (t & 0xF) - 8; - t = rand(); - *(s16 *)((s32)s0 + 0x1A) = (t & 0xF) - 8; - - *(s16 *)((s32)s0 + 0x16) = -0x38; - *(s32 *)((s32)s0 + 0x1C) = 0x5A; - *(s16 *)((s32)s0 + 2) = 4; -} - - -#include "common.h" - -extern void func_8012CBCC(s32 a0); -extern void func_8012C218(void *a0); - -void func_8018AC5C(s32 a0) { - s32 s0 = a0; - s32 v0 = ((s32 (*)(s32))func_8012CBCC)(a0); - s32 cnt; - - if (v0 != 0) { - *(u16 *)(s0 + 0xFC) = -*(u16 *)(s0 + 0xFC); - *(u16 *)(s0 + 0xFE) = -*(u16 *)(s0 + 0xFE); - *(u16 *)(s0 + 0x100) = -*(u16 *)(s0 + 0x100); - - if (v0 & 0x8000) { - *(s32 *)(s0 + 0x10) = -*(s32 *)(s0 + 0x10); - *(s32 *)(s0 + 0x18) = -*(s32 *)(s0 + 0x18); - } else { - *(s32 *)(s0 + 0x14) = -*(s32 *)(s0 + 0x14); - } - } - - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x10) += *(u16 *)(s0 + 0xFC); - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x12) += *(u16 *)(s0 + 0xFE); - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x14) += *(u16 *)(s0 + 0x100); - - cnt = *(s32 *)(s0 + 0x1C) - 1; - *(s32 *)(s0 + 0x1C) = cnt; - - if (cnt < 0x10) { - *(s32 *)(*(s32 *)(s0 + 0x20) + 4) ^= 0x80000000; - - if (*(s32 *)(s0 + 0x1C) == 0) { - func_8012C218((void *)s0); - } - } -} - - -extern void func_8013CB84(void); - void func_8018AD80(void) { - func_8013CB84(); - } - - -extern void func_8013C414(void *a0, void *a1); - extern s32 D_80191734; - extern s32 D_801E461C; - void func_8018ADA0(void) { - func_8013C414(&D_80191734, &D_801E461C); - } - - -extern s32 func_8013C360(s32 *a0); -void func_8018ADD0(void) { - - extern s32 D_801E461C; - func_8013C360(&D_801E461C); -} - - -int func_8018ADF8(int param_1) - -{ - int uVar1; - - uVar1 = 0x18; - if (param_1 - 0x96U < 0x32) { - uVar1 = 0x21; - } - return uVar1; -} - - - -extern void (*D_80190CAC[])(void); - -void func_8018AE14(void *a0) { - D_80190CAC[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -s32 func_8018AE50(void *a0, s32 *p) { - s32 cur = *(s32 *)((s32)a0 + 0xDC); - - if (p[0] != cur) { - p += 2; - for (;;) { - s32 t = p[0]; - if (t == 0) { - return cur; - } - p += 2; - if (t == cur) { - break; - } - } - p -= 2; - } - return p[1]; -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_80190C9C; - -void func_8018AE98(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_80190C9C; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - -extern s32 func_80029504(void); -extern s32 func_80029178(s32); -extern s32 D_80190C8C; - -void func_8018AF04(void *a0) { - if (func_80029504() == 0xC8) { - if ((func_80029178(0x118) & 0xFF) == 0) { - *(s32 *)((s32)a0 + 0xDC) = func_8018AE50(a0, &D_80190C8C); - } - } -} - - - -extern void (*D_80190E28[])(void); - -void func_8018AF60(void *a0) { - D_80190E28[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern void func_801465C0(void); -extern void func_80146C3C(void); - -extern void func_8001CBDC(s32 a0, s32 a1, s32 a2, s32 a3); - - - -void func_8018AF9C(void *a0) { - - extern s16 D_80190CB4[][2]; - extern u8 D_80190CE0[]; - extern EffectSlot4_8018AF9C D_80190CEC[]; - extern u8 D_80190D18[]; - extern EffectSlot4_8018AF9C D_80190D50; - extern EffectSlot4_8018AF9C D_80190D78; - extern EffectSlot4_8018AF9C D_80190D7C; - extern EffectSlot4_8018AF9C D_80190DAC; - extern EffectSlot4_8018AF9C D_80190DB0; - extern EffectSlot4_8018AF9C D_80190DE0; - extern EffectSlot4_8018AF9C D_80190DE4; - extern EffectSlot4_8018AF9C D_80190E14; - extern EffectSlot4_8018AF9C D_80190E18; - 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_80190D18, D_80190CB4[idx][0], D_80190CB4[idx][1]); - uVar1 = D_80190CE0[*(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_80190E14 + 4 == &D_80190E18`, 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_8018AF9C *)((s32)&D_80190E14 + 4) = D_80190CEC[*(s32 *)((s32)s0 + 0x2C)]; - if (COND) { D_80190E14 = D_80190E18; } else { D_80190E14 = D_80190E18; } - if (COND) { D_80190DE4 = D_80190E14; } else { D_80190DE4 = D_80190E14; } - if (COND) { D_80190DE0 = D_80190DE4; } else { D_80190DE0 = D_80190DE4; } - if (COND) { D_80190DB0 = D_80190DE0; } else { D_80190DB0 = D_80190DE0; } - if (COND) { D_80190DAC = D_80190DB0; } else { D_80190DAC = D_80190DB0; } - if (COND) { D_80190D7C = D_80190DAC; } else { D_80190D7C = D_80190DAC; } -#undef COND - D_80190D78 = D_80190D7C; - D_80190D50 = D_80190D78; - - *(s16 *)((s32)s0 + 0x2) = *(s16 *)((s32)s0 + 0x2) + 1; - } else { - ((void (*)(void *))func_80146C3C)(s0); - } -} - - -extern s32 func_8018B1DC(void); - s32 func_8018B19C(void) { - return func_8018B1DC(); - } - - -extern void func_80146C3C(void); - void func_8018B1BC(void) { - func_80146C3C(); - } - - - -extern void func_80017254(void *a0); -extern void func_800176F0(void *a0); - -void aF8018B1DC(void) __asm__("func_8018B1DC"); -void aF8018B1DC(void) -{ - - extern u8 D_80190D30[]; - extern u8 D_80190D58[]; - u8 *p; - s32 i; - - func_80017254(D_80190D30); - i = 0; - p = D_80190D58; - do { - func_800176F0(p); - i++; - p += 0x34; - } while (i < 4); -} - - -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); - -void func_8018B234(s32 a0) -{ - ((void (*)(s32, s32, s32, s32))func_80146994)(0x28, 0, a0, 0); -} - - - -extern s32 func_8014C050(s32 a0, s32 a1); - -void func_8018B260(void) { - - extern s32 D_80126B58; - s32 t; - - t = func_8014C050((s32)&D_80126B58, 0x28); - if (t != 0) { - *(u16 *)(t + 2) += 1; - } -} - - - -extern void (*D_80190E8C[])(void); - -void func_8018B2A4(void *a0) { - D_80190E8C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8018B310(s32 *a0); -extern void func_80146CA0(void *a0); - -void func_8018B2E0(s32 *a0) { - func_8018B310(a0); - ((s32 (*)(s32))func_80146CA0)((s32)a0); -} - - -#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_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_80147324(s32 a0); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern s32 D_80062C14; -extern u8 D_80190E34[]; - -void func_8018B310(s32 *a0) { - func_80019064(&D_80062C14); - func_801511E0((s32)a0); - func_80154274(a0, (s32)&D_80190E34); - *(s32 *)((s32)a0 + 0x234) = 0; - func_801477E8(a0, -0x400000); - func_80149020(a0); - func_80147324(0x451); - func_80146E90(a0, 0x12C); - func_80146CA0((void *)a0); -} - - -#include "common.h" - -/* Local layout for the sub-struct at *(a0+0x20). Only the two BAM-style - * fields this function touches are named; sizes come from the load/store - * widths seen in the target .s (lhu/lh/sh at +0x10 and +0x12). */ -typedef struct SubEnt8018B390 { - u8 pad0[0x10]; - s16 unk10; /* +0x10 */ - s16 unk12; /* +0x12 */ -} SubEnt8018B390; - -/* Local layout for the a0 struct. Only the offsets this function touches - * are named (0x20 ptr, 0x34 s32, 0xB8/0xBA u16 pair, 0x234 s32). */ -typedef struct Ent8018B390 { - u8 pad0[0x20]; - SubEnt8018B390 *unk20; /* +0x20 */ - u8 pad24[0x34 - 0x24]; - s32 unk34; /* +0x34 */ - u8 pad38[0xB8 - 0x38]; - u16 unkB8; /* +0xB8 */ - u16 unkBA; /* +0xBA */ - u8 padBC[0x234 - 0xBC]; - s32 unk234; /* +0x234 */ -} Ent8018B390; - -extern void func_80149020(s32 *a0); -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern s32 func_801535F4(void *arg0); -extern void func_8018B540(); -extern void func_80159B3C(void *a0); -extern void func_8015BF48(s32 *a0); -extern s32 func_80146E98(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80165718(s32 a0); - -void func_8018B390(void *a0) { - Ent8018B390 *s0 = a0; - s32 v1; - s32 pad[8]; - - func_80149020((s32 *)a0); - - s0->unk20->unk12 = (s0->unk20->unk12 + 0x5B) & 0xFFF; - s0->unk20->unk10 = (*(u16 *)&s0->unk20->unk10 - 0x16) & 0xFFF; - if (s0->unk20->unk10 < 0xC00) { - s0->unk20->unk10 = -0x400; - } - - func_80148038((s32)s0, 0x10000); - func_80147460((s32)s0); - - if (s0->unk234 == 0 && s0->unk34 >= 0 && (s0->unkB8 & 0x8000)) { - s0->unkB8 = s0->unkBA; - } - - v1 = func_801535F4(s0); - switch (v1) { - case 1: - func_8018B540(s0); - func_80159B3C(s0); - func_80146A6C(2, s0, 0, 0, 0, 1, 0); - break; - case 2: - func_8018B540(s0); - func_8015BF48((s32 *)s0); - func_80146A6C(2, s0, 0, 0, 0, 1, 0); - break; - case 0: - default: - if (func_80146E98((s32)s0) == 0) { - return; - } - func_8018B540(s0); - func_80159B3C(s0); - func_80146A6C(2, s0, 0, 0, 0, 1, 0); - break; - } - - func_80165718((s32)s0); -} - - -extern void func_8014BC44(s32 a0, s32 a1); -extern void func_80151664(void); - -void func_8018B540(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); -} - - - -extern void (*D_80190EB4[])(void); - -void func_8018B588(void *a0) { - D_80190EB4[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8018B5F4(s32 arg0); - extern void func_80146CA0(void *a0); - void func_8018B5C4(s32 arg0) { - func_8018B5F4(arg0); - ((s32 (*)(s32))func_80146CA0)(arg0); - } - - -extern void func_80019064(void *a0); -extern int func_801511E0(int arg); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -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 u8 D_80190E34[]; - -void func_8018B5F4(s32 arg0) { - s32 *s0 = (s32 *)arg0; - s32 t; - - func_80019064(&D_80062C14); - func_801511E0((int)s0); - t = (*(u16 *)((s32)s0 + 0x42) + 0x800) & 0xFFF; - *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x12) = (u16)t; - func_80154274(s0, (s32)&D_80190E34); - func_80146E90(s0, 0x20); - func_80146DE8(s0, 0, 0xffff0000, 0xffe80000); - func_801477E8(s0, 0xfff00000); - func_80149020(s0); - func_80147324(0x451); - func_80146CA0(s0); -} - - -extern void func_8014C010(s32 a0, s32 a1); -extern u16 D_800B99DA; -extern void func_8013C9C4(void *a0); -extern s32 D_80190E98; - -void func_8018B698(s32 *s0) { - s32 pad[8]; /* dead: forces target's 0x38 frame */ - - func_80149020(s0); - func_80147A84((s32)s0); - func_801473EC(s0); - func_80148038((s32)s0, 0x18000); - func_80147460((s32)s0); - - if ((D_800B99DA & 1) == 0) { - func_8014C010((s32)s0, 2); - } - - if (func_801535F4(s0) == 4) { - func_8013C9C4(&D_80190E98); - } else if (func_80146E98((s32)s0) == 0) { - goto clamp; - } - func_801477E8(s0, 0x40000); - func_80146CA0(s0); - return; -clamp: - if (*(s16 *)((u8 *)s0 + 0xE) >= 0x240) { - return; - } - *(s16 *)((u8 *)s0 + 0xE) = 0x240; -} - - -#include "common.h" - -extern void func_80149020(s32 *a0); -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern s32 func_801535F4(void *arg0); -extern void func_8018B87C(s32 a0); -extern void func_80159B3C(void *a0); -extern void func_8015BF48(s32 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80165718(s32 a0); - -void func_8018B774(s32 param_1) -{ - s32 v1; - s32 one; - s32 pad[8]; /* dead: forces target's 0x50 frame */ - - func_80149020((s32 *)param_1); - func_80148038(param_1, 0x18000); - func_80147460(param_1); - - if (*(s32 *)(param_1 + 0x234) == 0) { - if (*(s32 *)(param_1 + 0x34) >= 0) { - if (*(u16 *)(param_1 + 0xB8) & 0x8000) { - *(u16 *)(param_1 + 0xB8) = *(u16 *)(param_1 + 0xBA); - } - } - } - - v1 = func_801535F4((void *)param_1); - one = 1; - if (v1 == one) goto case1; - if (v1 < 2) return; - if (v1 == 2) goto case2; - return; -case1: - func_8018B87C(param_1); - func_80159B3C((void *)param_1); - goto join; -case2: - func_8018B87C(param_1); - func_8015BF48((s32 *)param_1); -join: - func_80146A6C(2, (void *)param_1, 0, 0, 0, one, 0); - func_80165718(param_1); -} - - -extern void func_8014BC44(s32 a0, s32 a1); -extern void func_80151664(void); - -void func_8018B87C(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); -} - - - -extern void (*D_80190EC4[])(void); - -void func_8018B8C4(void *a0) { - D_80190EC4[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - -extern void func_8017EE64(void *arg0); -extern void func_80019064(void *a0); -extern int func_801511E0(int arg); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_80147324(s32 a0); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern s32 D_80062C14; -extern u8 D_80190E34[]; - -void func_8018B900(s32 param_1) { - func_8017EE64((void *)param_1); - func_80019064(&D_80062C14); - func_801511E0(param_1); - func_80154274((s32 *)param_1, (s32)D_80190E34); - *(s32 *)((s32)param_1 + 0x234) = 0; - func_801477E8((s32 *)param_1, -0x400000); - func_80149020((s32 *)param_1); - func_80147324(0x451); - func_80146E90((s32 *)param_1, 0x12C); - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); -} - - - - - - diff --git a/src/ov_SC03_028/ov_SC03_028_jr_80183A74.c b/src/ov_SC03_028/ov_SC03_028_jr_80183A74.c new file mode 100644 index 000000000..e7bcd56b0 --- /dev/null +++ b/src/ov_SC03_028/ov_SC03_028_jr_80183A74.c @@ -0,0 +1,3336 @@ +#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 { + 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; } PrimDF98; +typedef struct { u8 *vtx; u32 f4; u32 xx, yy, zz; PrimDF98 *prim, *end; } CellDF98; +typedef struct { s16 vx, vy; } DVEC2_DF98; +typedef struct { s16 vx, vy, vz, pad; } SVEC2_DF98; +typedef struct { s16 m[3][3]; s32 t[3]; } MTX_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2; } PF3_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_DF98; +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_DF98; +typedef struct { + u16 f0; + u16 f2; + u16 f4; + u16 f6; + u16 f8; + u16 fA; + s32 fC; + s32 f10; + s32 f14; + s32 f18; +} SubRec_801EB5C8; /* 0x1C */ +typedef struct { + u16 g0; + u16 g2; + s32 g4; + s32 g8; + s32 gC; + SubRec_801EB5C8 subs[16]; +} GroupRec_801EB5C8; /* 0x1D0 */ +typedef struct { u16 x, y, z, w; } __attribute__((aligned(2))) V; +typedef struct { s16 vx, vy, vz, pad; } SV_80182494; +typedef struct { + u8 pad_0[0xCC]; + void *arr[4]; +} D_801EC450_t; +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_8018DF10; +extern u8 D_8018DE80; +extern u8 D_8018DE5C; +extern u8 D_8018DE38; +extern u8 D_8018DEEC; +extern u8 D_8018DEC8; +extern u8 D_8018DEA4; +extern u8 D_8018DE14; +extern void func_80145934(void); +extern u8 D_8018DFA0; +extern u8 D_8018DF7C; +extern u8 D_8018DF58; +extern u8 D_8018DF34; +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 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_8018D398[]; +extern unsigned char D_8018D3C8[]; +extern unsigned char D_8018D418[]; +extern unsigned char D_8018D448[]; +extern unsigned char D_8018D478[]; +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_8018D4C8[])(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 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 u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D590[]; +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 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_8018D618[]; +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_8018D620; +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_801EA340; +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_801EA344; +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_8018D650; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +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_8018D6F8[])(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_8018D71C[])(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_8018D70C; +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_8018D730[])(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_8018D73C[]; +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_8018D74C[])(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_8018D764[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D754; +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_8018D778[])(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_8018D794[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D784; +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_8018D7A8[])(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_8018D7BC[])(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_8018D7D0; +extern void (*D_8018D7F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D7D8; +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_8018D844[])(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_8018D848[])(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_8018DCAC[]; +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_8018DCBC[])(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_801EA378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DCE4[])(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_8018DCC4; +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_8018DCD4; +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_8018DD24[])(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_8018DD2C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DCF8; +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_8018DD38[])(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_8018DD08; +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_801EA380; +extern s32 D_801EA38C; +extern s32 D_801EA390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DD74[])(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_8018DD48[]; +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_801EA388; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018DFC4[])(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_8018DDE4[]; +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_8018E068[])(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_8018E1BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018DFD8; +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_8018E1C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018DFE8; +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_8018E008; +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_8018E1CC[])(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_8018E1F4[])(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_8018E200[])(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_8018E074[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018E2A4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018D388[]; +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_8018E2B8[]; +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_8018E2F4[]; +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_8018E33C; +extern u16 D_8018E33E; +extern u16 D_8018E340; +extern s32 D_8018E344; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018E34C; +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_8018E058; +extern void func_8015EE7C(s32 param_1); +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_8018E3D0[]; +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_8018E480[])(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_8018E4B0[]; +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_8018E514; +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_801EA398[]; +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_8018E538[])(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_801EA3F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018E580[])(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_8018E570; +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_801E99A4[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_8018E588[])(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_8018E5DC[])(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_8018E5A4; +extern s16 D_8018E5D8; +extern s16 D_8018E5D6; +extern s16 D_8018E5D4; +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_8018E5E8[])(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_801EA450; +extern u8 D_801EA451; +extern u8 D_801EA452; +extern u8 D_801EA453; +extern u8 D_801EA454; +extern u8 D_801EA455; +extern u8 D_801EA456; +extern u8 D_801EA457; +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_8018E5F8[])(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_801EA490; +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_8018E63C[])(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_8018E6B8[]; +extern s32 D_8018E6D8[]; +extern u8 D_8018E754[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018E774[]; +extern u8 D_8018E794[]; +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_8018E830[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E8AC[])(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_801E99B4; +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_8018E8B8[])(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_8018E8C0[])(void); +extern void func_801663FC(void *a0); +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_8018E988[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018E998[])(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_8018E9A8[])(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_8018E9B4[])(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_8018E914[]; +extern u8 D_8018E928[]; +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_8018E9CC[])(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_8018E9D4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018E9DC[])(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_8018E9E4[])(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_8018E9EC[])(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_8018E9F4[])(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_8018E9FC[])(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_8018EAB0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018EAB8[])(void); +extern void func_80169F00(void *a0); +extern char D_8018EA68[]; +extern char D_8018EA28[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018EAF0[])(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_8018EAFC[])(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_8018EB44[])(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_8018EBC0[])(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_801EA7B0; +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_8018EBB4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018EBF8[]; +extern unsigned short D_8018EC00[]; +extern unsigned short D_8018EC08[]; +extern unsigned char D_801EA7B8[]; +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_801EA7B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018EC10[])(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_801EA8EC; +extern M2C_UNK D_801EA8F0; +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_801EA878; +extern void (*D_8018EC40[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EA8F4[]; +extern u8 D_801EA8FC[]; +extern u8 D_801EA8AC[]; +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_8018EC48[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018EC64[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018EC6C[])(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_8018ECD4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EC78; +extern u8 D_8018EC84; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018ED08[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018ED10[])(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_8018ED64[])(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_8018ED98[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018ED88[]; +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_8018EDB4; +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_8018EE2C[])(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_8018EE34[])(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_8018EE3C[])(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_8018EE44[])(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_8018EE4C[])(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_8018EE54[])(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_8018EE60[])(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_8018EE6C[])(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_8018EE78[])(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_8018EE88[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018EE98[])(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_8018EEA0[])(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_8018EEA8[])(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_8018EEB0[])(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_8018EEB8[])(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_8018EEC0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018EEC8[])(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_8018EED0[])(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_8018EED8[])(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_8018EEE0[])(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_8018EEE8[])(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_8018EEF0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018EEF8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018EF00[])(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_8018EF08[])(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_8018EF10[])(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_8018EF18[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018EF20[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018EF28[])(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_8018EF30[])(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_8018EF38[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018EF40[])(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_8018EF48[])(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_8018EF8C[])(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_8018EF50; +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_8018EFBC[])(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_8018EFF8[])(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_80126954; +extern s32 D_80126950; +extern s32 D_8012695C; +extern s16 D_80126968; +extern s16 D_8012696A; +extern s16 D_8012696C; +extern s16 D_80126976; +extern s16 D_80126978; +extern s16 D_8012697A; +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_8018F050[])(); +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_8018F060[])(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_8018F068[])(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_8018F1D0[])(); +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_8018F1DC[])(); +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_801E9BFC; +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_801EC590; +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_801EB030; +extern short D_801EC604; +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_801EB45C; +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_801EB484; +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_801EB440; +extern s32 func_8017A3B0(void); +extern short D_801EB47C; +extern short D_801EB478; +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_801EC560; +extern s16 D_801EC562; +extern s16 D_801EC56C; +extern void func_8017AE2C(s32 param_1); +extern void func_8017B0E4(int param_1, int param_2); +extern s16 D_801EB444; +extern u16 D_801EB4C4; +extern u16 D_801EB4C6; +extern u16 D_801EB4C8; +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_801EB4BC; +extern s16 D_801EB4BE; +extern s16 D_801EB4C0; +extern s16 D_801EB4B4; +extern s16 D_801EB4B6; +extern s16 D_801EB4B8; +extern void func_8017B7A8(void); +extern s16 D_801EB4D4; +extern s16 D_801EB4D6; +extern s16 D_801EB4D8; +extern s16 D_801EB4DC; +extern s16 D_801EB4DE; +extern s16 D_801EB4E0; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801EB4CC; +extern short D_801EB4CE; +extern short D_801EB4D0; +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_801EB464; +extern SV4 D_801EB46C; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801EB48C[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_801EB488)(void); +extern void func_8017BD50(int param_1); +extern void (*D_8018F3B8[])(void); +extern void func_8017BE60(void *a0); +extern void func_8017BE9C(void); +extern void func_8017BEA4(void); +extern void func_8017BEAC(void); +extern void func_8017BEB4(void); +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2); +extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); +extern s32 func_8012C750(s32 a0); +extern s32 D_8018F3E8[]; +extern void func_8017BFBC(s32 a0, s32 a1); +extern void func_8017C010(s32 a0, s32 a1, s32 a2); +extern void func_8017C068(void); +extern void (*D_8018F418[])(void); +extern void func_8017C114(void *a0); +extern void func_8017C150(void *a0); +extern void func_800176F0(void *a0); +extern void func_8017C43C(void *a0); +extern void func_8012A828(s32 a0, void * a1); +extern void func_8012CAE4(void *a0); +extern s32 func_8012C354(s32 a0, s32 a1); +extern s32 func_80143970(s32 a0); +extern void func_8017C8D0(void *a0); +extern void func_8017D220(s32 a0, s16 a1, s16 a2); +extern void func_8017D294(s16 *a0); +extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8017CA6C(s32 a0); +extern void func_8012ADE4(u8 *a0); +extern void func_8012B200(u8 *a0); +extern s32 func_8012B864(s32 a0); +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern void func_8012BD14(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012CBA4(s32 a0); +extern void func_8017D370(s32 a0); +extern void func_8017CC70(s32 a0); +extern s32 func_8012E778(int param_1, int param_2); +extern s32 func_801439C0(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_8017D064(s32 a0); +extern void (*D_8018F6F4[])(void); +extern void func_8017D1E4(void *a0); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8017D584(s32 a0); +extern void func_8012CBCC(s32); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8017D658(s32 a0); +extern void func_8012C218(void*); +extern void func_8017D728(s32 a0); +extern s32 func_8012E778(s32 param_1, s32 param_2); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_8017D780(s32 a0); +extern void func_8017D878(s32 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_8017DC90(u16 *a0, void *a1); +extern int func_8017DD34(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_8017DF2C(s32 a0, s32 a1); +extern void func_8017DF98(s32 arg0); +extern void func_8017EE64(void *arg0); +extern void func_8017F04C(u8 *a0); +extern void (*D_8018F774[])(int); +extern void func_8017EE90(int param_1); +extern void (*D_8018F718[])(void); +extern s8 D_8018F724[]; +extern void func_8017EEDC(s32 param_1); +extern void func_8017EFA8(s32 param_1); +extern void (*D_8018F77C[])(void); +extern void func_8017F094(void *a0); +extern GroupRec_801EB5C8 D_801EB5C8[8]; +extern void func_8017F0D0(s32 param_1); +extern void func_8017F278(void *arg0); +extern s32 func_80017E30(void *a0, void *a1); +extern void func_80016ED4(void *a0); +extern SVECTOR_8017F40C D_8018F784[4]; +extern void func_8017F40C(s32 a0, s32 a1); +extern void (*D_8018F818[])(void); +extern void func_8017F6C4(void *a0); +extern void func_8017F8EC(void); +extern s32 func_8017F700(s32 a0); +extern s32 func_8017F744(void); +extern void (*D_8018F820[])(void); +extern void func_8017F768(void *a0); +extern void func_8017F914(void); +extern s32 func_8017F7A4(s32 a0); +extern void func_8001BFD0(void); +extern void func_800D1E28(void); +extern s32 func_8017F7E4(s32 a0); +extern s32 func_800D1EBC(void); +extern void func_8017F880(void); +extern void func_8017F8A0(s32 *a0); +extern M2C_UNK D_8018F834; +extern void func_8012A018(s32 a0, s32 a1); +extern void func_8012A094(s32 a0); +extern void func_8017FBA4(void*); +extern void func_8017F93C(void); +extern void func_8017FBA4(void *); +extern void func_8017F9D8(void); +extern void func_8017FA44(void); +extern void func_8017FABC(void); +extern s32 D_80126E60[]; +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A100(s8 a0); +extern void func_8017FADC(void); +extern void func_8017FB84(void); +extern void (*D_8018F860[])(void); +extern void func_8017FBA4(void *a0); +extern s16 D_80126940; +extern s16 D_80126942; +extern s16 D_80126944; +extern s32 func_800130D0(s32 a0, s32 a1, s32 a2); +extern void func_8017FF68(s32 param_1, s16 *param_2); +extern void func_8017FBE0(s32 param_1); +extern void func_8017FD64(s32 arg0); +extern s32 func_8012E544(s32 a0); +extern void func_8017FDC0(s32 param_1); +extern s32 func_80013294(void*, void*); +extern void func_8017FE18(s32 param_1); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern s16 D_8018FA14; +extern s32 D_801AE99C[]; +extern s32 D_801AE944[]; +extern s32 D_801AE8D4[]; +extern void func_80180120(s32 a0); +extern s32 D_801EC44C; +extern s32 func_801802B8(void); +extern s32 func_801802F4(s32 a0); +extern s32 D_800A651C; +extern u8 D_800AF648; +extern u8 D_8018F958[]; +extern u32 D_8018FF24[]; +extern u8 D_8018FF30[]; +extern u8 D_8018FF31[]; +extern u8 D_8018FF32[]; +extern u8 D_8018FF33[]; +extern u8 D_8018FF40[]; +extern u8 D_8018FF41[]; +extern u8 D_8018FF42[]; +extern u8 D_8018FF43[]; +extern u8 D_8018FF50[]; +extern u8 D_8018FF51[]; +extern u8 D_8018FF52[]; +extern u8 D_8018FF53[]; +extern void *func_80010A08(s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 AddPrim(s32, void *); +extern void func_80180494(void *a0); +extern s32 func_8012DE2C(s32 a0); +extern s32 func_8012DDA4(void); +extern s32 func_800133E4(s16 *a0, s16 *a1); +extern u8 D_8018F9A0[]; +extern void func_801808CC(s32 a0, s32 a1, s32 a2, s32 a3); +extern volatile s32 D_801EC44C; +extern s32 func_80180A08(s32 param_1, u16 param_2); +extern void func_80180AC4(s32 arg0, s32 arg1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_80181374(void *a0); +extern s32 func_8012BA10(s32 a0, s32 a1); +extern u8 D_801ADC24[]; +extern void func_80181414(void *a0); +extern void func_80181BD8(s32 a0); +extern s32 D_801AE6DC[]; +extern void func_80181D4C(s32 a0); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8012CBCC(s32 a0); +extern void func_80180B44(s32); +extern void func_8018305C(s32 a0); +extern u16 D_80126B96; +extern s32 D_801EC448; +extern u8 D_8018C134[]; +extern u8 D_8018F914[]; +extern s16 D_8018F9FC; +extern u8 D_801AE2C4[]; +extern u8 D_801AE3A4[]; +extern u8 D_801AE7CC[]; +extern void func_8018222C(s32 a0); +extern u8 D_801AE734[]; +extern s32 D_8018F8D4; +extern void func_80182494(void *a0); +extern void func_80182698(s32 a0); +extern s16 D_8018FA0C; +extern s16 D_8018FA0E; +extern s16 D_8018FA10; +extern s32 D_801EC450; +extern void func_80182780(s32 a0); +extern void func_80180B44(s32 a0); +extern void func_801828DC(s32 a0); +extern u8 D_801ADCEC[]; +extern s32 D_8018F9D8[]; +extern s32 D_8018F9DC[]; +extern s32 D_8018F9E0[]; +extern void func_801829F0(void *a0); +extern void func_80182C20(s32 a0); +extern s16 D_8018F9FE; +extern s16 D_8018FA00; +extern s32 D_8018FF60[]; +extern void func_80182E2C(void *a0); +extern void (*D_80190068[])(void); +extern void func_80183020(void *a0); +extern void func_801830B0(s32 a0); +extern void func_8012C218(void *a0); +extern MatEntry D_80190078[]; +extern void func_80183104(s32 param_1); +extern void (*D_801900B8[])(void); +extern void func_80183228(void *a0); +extern void func_8012B23C(s32 a0); +extern void func_80184E9C(s32 a0, s32 a1, s32 a2); +extern void func_80183264(s32 a0); +extern u8 D_801901A8[]; +extern u8 D_801901B4[]; +extern u8 D_801901BC[]; +extern u8 D_801901C4[]; +extern u8 D_801901CC[]; +extern void func_801833D8(void *a0); +extern void func_80184E9C(); +extern void func_80183580(void *arg0); +extern s32 D_801900F8[]; +extern s32 D_80190138[]; +extern s32 D_80190190[]; +extern void (*D_801901D4[])(void *); +extern void func_80183728(void *arg0); +extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); +extern s32 D_8018BD04; +extern s32 D_8019024C; +extern void func_801838B0(s32 a0); +extern void (*D_8019025C[])(void); +extern void func_80183A38(void *a0); +/* ==== end §8b carried decl layer ==== */ + + +#include "common.h" + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B23C(s32 a0); +extern void func_8012B2CC(s32 a0); +extern void func_8012B14C(s32 a0, s32 a1); +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern s32 rand(void); +extern s8 D_80190268[]; +extern s32 D_8018BD04; +extern s16 D_8019029C; +extern s32 D_801902AC; +extern s32 D_801902B8; + +void func_80183A74(s32 arg0) { + if (func_8012C354(arg0, (s32)&D_80190268) == 0) { + return; + } + *(u8 *)(arg0 + 0xC0) = 1; + *(s32 *)(arg0 + 0xB4) = 1; + func_8012A828(arg0, (void *)&D_8018BD04); + *(u16 *)(arg0 + 2) = 1; + func_8012B23C(arg0); + + switch (*(s16 *)(arg0 + 0x70)) { + case 0: + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = + *(u16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12) + (rand() & 0x3FF) - 0xA00; + func_8012B2CC(arg0); + func_8012B14C(arg0, (s32)&D_8019029C); + *(u16 *)(arg0 + 0x16) = -(rand() & 0xF) - 4; + break; + case 1: + *(u16 *)(arg0 + 0x16) = -(rand() & 0xF) - 4; + *(s32 *)(arg0 + 0x10) = (rand() & 3) + 1; + *(s32 *)(arg0 + 0x18) = (rand() & 3) + 1; + break; + case 2: + *(u16 *)(arg0 + 0x16) = -(rand() & 0x1F) - 4; + *(u16 *)(arg0 + 0x12) = (rand() & 7) - 4; + *(u16 *)(arg0 + 0x1A) = (rand() & 7) - 4; + break; + case 3: + *(s32 *)(arg0 + 0x10) = (rand() & 3) + 1; + *(s32 *)(arg0 + 0x18) = (rand() & 3) + 1; + *(u16 *)(arg0 + 0x16) = -(rand() & 0x1F) - 4; + break; + case 4: + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = + *(u16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12) + (rand() & 0x3FF) - 0xA00; + func_8012B2CC(arg0); + func_8012B14C(arg0, (s32)&D_8019029C); + *(u16 *)(arg0 + 0x16) = -(rand() & 7) - 4; + *(u16 *)(arg0 + 0xA) -= 0x40; + *(s32 *)(arg0 + 4) += func_8004787C( + *(s16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12) + 0xD00) << 10; + *(s32 *)(arg0 + 0xC) += func_80047948( + *(s16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12) + 0xD00) << 10; + break; + case 5: + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = + *(u16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12) + (rand() & 0x3FF) - 0xA00; + func_8012B2CC(arg0); + func_8012B14C(arg0, (s32)&D_8019029C); + *(u16 *)(arg0 + 0x16) = -(rand() & 7) - 4; + *(u16 *)(arg0 + 0xA) -= 0x40; + *(s32 *)(arg0 + 4) += func_8004787C( + *(s16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12) + 0x300) << 10; + *(s32 *)(arg0 + 0xC) += func_80047948( + *(s16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12) + 0x300) << 10; + break; + } + + func_8001CA1C(*(s32 *)(arg0 + 0x20), (s32)&D_801902AC); + func_8012A828(arg0, (void *)&D_801902B8); + *(s32 *)(*(s32 *)(arg0 + 0x20) + 4) |= 0x8000000; + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x14) = rand(); + *(u16 *)(arg0 + 0xFC) = 0x3C; +} + + + +extern void (*D_801902C0[])(void); + +void func_80183DC8(void *a0) { + D_801902C0[*(u16 *)((s32)a0 + 0x2)](); +} + + +#include "common.h" + +/* ---- decls already present at file scope in the TU (reused verbatim) ---- */ +extern s32 D_80126950; +extern s16 D_800B9A02; +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void RotTransSV(void *a0, void *a1, void *a2); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); + +/* ---- new decls (canonical forms from src/shared/engine_core.h) ---- */ +extern s32 D_800A651C; +extern u8 D_800AF648; +extern u8 D_8018F968[]; +extern u32 D_801902C8[]; +extern u8 D_801902D4[]; +extern u8 D_801902D5[]; +extern u8 D_801902D6[]; +extern u8 D_801902D7[]; +extern u8 D_801902E4[]; +extern u8 D_801902E5[]; +extern u8 D_801902E6[]; +extern u8 D_801902E7[]; +extern u8 D_801902F4[]; +extern u8 D_801902F5[]; +extern u8 D_801902F6[]; +extern u8 D_801902F7[]; +extern void *func_80010A08(s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 AddPrim(s32, void *); + +#define gte_SetRotMatrix(r0) __asm__ volatile ( \ + "lw $12, 0( %0 );" \ + "lw $13, 4( %0 );" \ + "ctc2 $12, $0;" \ + "ctc2 $13, $1;" \ + "lw $12, 8( %0 );" \ + "lw $13, 12( %0 );" \ + "lw $14, 16( %0 );" \ + "ctc2 $12, $2;" \ + "ctc2 $13, $3;" \ + "ctc2 $14, $4" \ + : \ + : "r"( r0 ) \ + : "$12", "$13", "$14" ) +#define gte_SetTransMatrix(r0) __asm__ volatile ( \ + "lw $12, 20( %0 );" \ + "lw $13, 24( %0 );" \ + "ctc2 $12, $5;" \ + "lw $14, 28( %0 );" \ + "ctc2 $13, $6;" \ + "ctc2 $14, $7" \ + : \ + : "r"( r0 ) \ + : "$12", "$13", "$14" ) + + +/* Byte-verified levers (match_one MATCH, 265 ins): + * - L5/frame: locals start at sp+0x18 (5-arg out-arg area). tags/sv/xs/ys are arrays and take + * slots in DECLARATION order; flag/sxy/pz must be ONE struct — as separate address-taken + * scalars gcc packs them after the arrays with a 4-byte hole (flag landed at 0x58, not 0x50). + * - The 14 primitive stores are written off the SINGLE pointer biv `pp` (prim+0xC). loop.c + * combines their address givs into one register based at the LAST ref (pp+0x22 = prim+0x2E, + * $s0), and keeps `pp` itself ($s3) for AddPrim's value use. Adding a second explicit cursor + * (`q = prim+0x2E`) costs an EXTRA giv register and breaks the frame. + * - L3: `tags[0] = (s32)(prim + 0xC)` is written as its OWN expression (not `= (s32)pp`); CSE + * then emits `addiu $v0,$s4,0xC` + `addu $s3,$v0,$zero` — the copy the target has. + * - Loop counter is k = 0..3 with i = k*4 as a GIV, not a biv stepping 4. Both give the same + * `slti $s1,0x10` compare, but only the giv form puts the address-giv init BEFORE the index + * init in the preheader. `pp += 0x24` must come AFTER `k += 1` so pp's iv class is recorded + * last (loop_iv_list is prepend-ordered) and therefore emits its giv init FIRST. + * - tags[1..3] are genuinely DEAD stores in the original; they must be kept. + */ +void func_80183E04(void *a0) +{ + s32 tags[4]; /* sp+0x18 */ + s16 sv[4]; /* sp+0x28 */ + s16 xs[8]; /* sp+0x30 */ + s16 ys[8]; /* sp+0x40 */ + struct { + s32 flag; /* sp+0x50 */ + u16 sxy[2]; /* sp+0x54 */ + s32 pz; /* sp+0x58 */ + } o; + + s32 m; + void *pv; + s32 *pflag; + s32 ret; + s32 d; + s32 e; + s32 x; + s32 y; + s32 ot; + u8 *prim; + u8 *pp; + u8 *base; + u32 *pal; + s32 i; + s32 k; + + m = *(s32 *)((s32)a0 + 0x20) + 0x34; + gte_SetRotMatrix(m); + gte_SetTransMatrix(m); + + pv = (void *)sv; + pflag = &o.flag; + RotTransSV(D_8018F968, pv, pflag); + func_8004914C(&D_800AF648); + func_800491AC(&D_800AF648); + ret = RotTransPers((s32)pv, (s32)o.sxy, &o.pz, pflag); + if ((ret > 0) && (o.flag >= 0)) { + ret = ret * 4; + d = ((D_80126950 + 0x1F4) * 24) / ret; + x = o.sxy[0]; + y = o.sxy[1]; + ot = *(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + ret; + e = (d * 179) >> 8; + + xs[2] = x; + ys[2] = y; + xs[0] = x - d; + xs[1] = x - e; + xs[3] = x + e; + xs[4] = x + d; + ys[0] = y - d; + ys[1] = y - e; + ys[3] = y + e; + ys[4] = y + d; + + prim = (u8 *)func_80010A08(0x9C); + if (prim != 0) { + s32 tp; + tp = GetTPage(0, 1, 0, 0); + func_8005A600((s32)prim, 0, 0, (u16)tp, 0); + + tags[0] = (s32)(prim + 0xC); + pp = prim + 0xC; + pal = D_801902C8; + base = (u8 *)tags; + k = 0; + tags[1] = (s32)(prim + 0x30); + tags[2] = (s32)(prim + 0x54); + tags[3] = (s32)(prim + 0x78); + do { + i = k * 4; + *(u32 *)(pp + 0x04) = pal[D_801902F4[i]]; + *(u32 *)(pp + 0x0C) = pal[D_801902F5[i]]; + *(u32 *)(pp + 0x14) = pal[D_801902F6[i]]; + *(u32 *)(pp + 0x1C) = pal[D_801902F7[i]]; + *(u8 *)(pp + 0x03) = 8; + *(u8 *)(pp + 0x07) = 0x3A; + *(u16 *)(pp + 0x08) = *(u16 *)(base + 0x18 + D_801902D4[i] * 2); + *(u16 *)(pp + 0x10) = *(u16 *)(base + 0x18 + D_801902D5[i] * 2); + *(u16 *)(pp + 0x18) = *(u16 *)(base + 0x18 + D_801902D6[i] * 2); + *(u16 *)(pp + 0x20) = *(u16 *)(base + 0x18 + D_801902D7[i] * 2); + *(u16 *)(pp + 0x0A) = *(u16 *)(base + 0x28 + D_801902E4[i] * 2); + *(u16 *)(pp + 0x12) = *(u16 *)(base + 0x28 + D_801902E5[i] * 2); + *(u16 *)(pp + 0x1A) = *(u16 *)(base + 0x28 + D_801902E6[i] * 2); + *(u16 *)(pp + 0x22) = *(u16 *)(base + 0x28 + D_801902E7[i] * 2); + AddPrim(ot, pp); + k += 1; + pp += 0x24; + } while (k < 4); + AddPrim(ot, prim); + } + } +} + + +void func_80184228(void) { +} + +#include "common.h" + +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80184E9C(); +extern void func_8012C218(void *a0); + +extern u16 D_80126B96; +extern u8 D_80190314[]; +extern u8 D_8019031C[]; +extern void (*D_80190370[])(void *); + +void func_80184230(void *arg0) { + void *prim; + + if (*(u16 *)(*(s32 *)((s32)arg0 + 0x64) + 2) == 0xD) { + if (func_8012D5E4((s32)arg0, (s32)D_80190314, (s32)D_8019031C, 0xC) == 1) { + D_80126B96 = 0x6009; + } + func_80184E9C((s32)arg0, (s32)D_80190314, (s32)D_8019031C); + prim = *(void **)((s32)arg0 + 0x20); + *(u16 *)((s32)prim + 0x12) = *(u16 *)((s32)prim + 0x12) + 0x200; + D_80190370[*(u16 *)((s32)arg0 + 2)](arg0); + } else { + func_8012C218(arg0); + } +} + + +#include "common.h" + +extern void func_801439FC(s32 a0); + +void func_8018430C(s32 a0) { + s32 v0; + s32 v1; + s32 s0; + s32 pad[2]; + + v0 = *(s32 *)(*(s32 *)(a0 + 0x64) + 0x20); + v0 = *(s32 *)(v0 + 4); + s0 = *(s32 *)(a0 + 0xCC); + if (v0 < 0) { + *(u32 *)(s0 + 4) |= 0x80000000; + } else { + func_801439FC(a0); + } + + v0 = *(s32 *)(a0 + 0x64); + *(u16 *)(s0 + 0x14) = *(u16 *)(*(s32 *)(v0 + 0x20) + 0x12); + + v0 = *(s32 *)(a0 + 0x64); + v1 = *(u16 *)(s0 + 0xA) - *(u16 *)(v0 + 0xA); + if ((u16)(v1 + 0x20) >= 0x421) { + *(s16 *)(s0 + 0x1A) = 0; + *(s16 *)(s0 + 0x18) = 0; + } else { + v1 = v1 << 16; + v1 = v1 >> 11; + v0 = -0x8000 - v1; + *(s16 *)(s0 + 0x1A) = v0; + *(s16 *)(s0 + 0x18) = v0; + } +} + + +extern s32 func_80143994(s32 arg0, s32 arg1); +s32 func_801843D8(void *a0) { + *(s16 *)func_80143994((s32)a0, 0x3FFF) = 0x93; +} + + +void func_801843FC(s32 param_1) +{ + extern u8 D_801903C0; + s32 s0; + + s0 = *(s32 *)(param_1 + 0x20); + func_8001CD50(s0, (s32)&D_801903C0); + *(s16 *)(s0 + 0x10) = 0x400; + *(u32 *)(s0 + 4) |= 0x50000000; + *(s16 *)(s0 + 0x1E) = 0; + *(s16 *)(s0 + 0x12) = 0; + *(s16 *)(s0 + 0x14) = rand() & 0x1FF; + *(s16 *)(s0 + 0x14) = *(s16 *)(s0 + 0x14) + *(s32 *)(param_1 + 0x2C); + *(s32 *)(param_1 + 0x2C) = 0x100; + *(s16 *)(s0 + 0x18) = 0; + *(s16 *)(s0 + 0x1A) = 0; + *(s16 *)(s0 + 0x1C) = 0; + *(u16 *)(param_1 + 2) += 1; +} + + +void func_8018449C(s32 param_1) { + s32 prim; + s32 var; + + prim = *(s32 *)(param_1 + 0x20); + var = *(s32 *)(param_1 + 0x2C); + *(s16 *)(prim + 0x18) = *(u16 *)(prim + 0x18) + var; + if (*(s16 *)(prim + 0x18) >= 0x2000) { + *(u16 *)(param_1 + 2) += 1; + } + var = *(s32 *)(param_1 + 0x2C); + *(s16 *)(prim + 0x1A) = *(u16 *)(prim + 0x1A) + var; + var = *(s32 *)(param_1 + 0x2C); + if (var < 0) { + var += 3; + } + *(s16 *)(prim + 0x1C) = *(u16 *)(prim + 0x1C) + (var >> 2); + *(s32 *)(param_1 + 0x2C) += 0x20; +} + + +extern void (*D_80190400[])(void); + +void func_80184524(void *a0) { + D_80190400[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80184560(void) { +} + +extern void (*D_8019040C[])(void); + +void func_80184568(void *a0) { + D_8019040C[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80183A74", func_801845A4); + diff --git a/src/ov_SC03_028/ov_SC03_028_jr_801847E8.c b/src/ov_SC03_028/ov_SC03_028_jr_801847E8.c new file mode 100644 index 000000000..19159539a --- /dev/null +++ b/src/ov_SC03_028/ov_SC03_028_jr_801847E8.c @@ -0,0 +1,3036 @@ +#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 { + 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; } PrimDF98; +typedef struct { u8 *vtx; u32 f4; u32 xx, yy, zz; PrimDF98 *prim, *end; } CellDF98; +typedef struct { s16 vx, vy; } DVEC2_DF98; +typedef struct { s16 vx, vy, vz, pad; } SVEC2_DF98; +typedef struct { s16 m[3][3]; s32 t[3]; } MTX_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2; } PF3_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_DF98; +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_DF98; +typedef struct { + u16 f0; + u16 f2; + u16 f4; + u16 f6; + u16 f8; + u16 fA; + s32 fC; + s32 f10; + s32 f14; + s32 f18; +} SubRec_801EB5C8; /* 0x1C */ +typedef struct { + u16 g0; + u16 g2; + s32 g4; + s32 g8; + s32 gC; + SubRec_801EB5C8 subs[16]; +} GroupRec_801EB5C8; /* 0x1D0 */ +typedef struct { u16 x, y, z, w; } __attribute__((aligned(2))) V; +typedef struct { s16 vx, vy, vz, pad; } SV_80182494; +typedef struct { + u8 pad_0[0xCC]; + void *arr[4]; +} D_801EC450_t; +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_8018DF10; +extern u8 D_8018DE80; +extern u8 D_8018DE5C; +extern u8 D_8018DE38; +extern u8 D_8018DEEC; +extern u8 D_8018DEC8; +extern u8 D_8018DEA4; +extern u8 D_8018DE14; +extern void func_80145934(void); +extern u8 D_8018DFA0; +extern u8 D_8018DF7C; +extern u8 D_8018DF58; +extern u8 D_8018DF34; +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 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_8018D398[]; +extern unsigned char D_8018D3C8[]; +extern unsigned char D_8018D418[]; +extern unsigned char D_8018D448[]; +extern unsigned char D_8018D478[]; +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_8018D4C8[])(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 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 u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D590[]; +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 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_8018D618[]; +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_8018D620; +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_801EA340; +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_801EA344; +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_8018D650; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +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_8018D6F8[])(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_8018D71C[])(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_8018D70C; +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_8018D730[])(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_8018D73C[]; +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_8018D74C[])(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_8018D764[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D754; +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_8018D778[])(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_8018D794[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D784; +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_8018D7A8[])(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_8018D7BC[])(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_8018D7D0; +extern void (*D_8018D7F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D7D8; +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_8018D844[])(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_8018D848[])(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_8018DCAC[]; +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_8018DCBC[])(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_801EA378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DCE4[])(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_8018DCC4; +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_8018DCD4; +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_8018DD24[])(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_8018DD2C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DCF8; +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_8018DD38[])(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_8018DD08; +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_801EA380; +extern s32 D_801EA38C; +extern s32 D_801EA390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DD74[])(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_8018DD48[]; +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_801EA388; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018DFC4[])(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_8018DDE4[]; +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_8018E068[])(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_8018E1BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018DFD8; +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_8018E1C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018DFE8; +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_8018E008; +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_8018E1CC[])(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_8018E1F4[])(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_8018E200[])(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_8018E074[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018E2A4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018D388[]; +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_8018E2B8[]; +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_8018E2F4[]; +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_8018E33C; +extern u16 D_8018E33E; +extern u16 D_8018E340; +extern s32 D_8018E344; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018E34C; +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_8018E058; +extern void func_8015EE7C(s32 param_1); +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_8018E3D0[]; +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_8018E480[])(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_8018E4B0[]; +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_8018E514; +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_801EA398[]; +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_8018E538[])(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_801EA3F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018E580[])(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_8018E570; +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_801E99A4[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_8018E588[])(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_8018E5DC[])(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_8018E5A4; +extern s16 D_8018E5D8; +extern s16 D_8018E5D6; +extern s16 D_8018E5D4; +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_8018E5E8[])(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_801EA450; +extern u8 D_801EA451; +extern u8 D_801EA452; +extern u8 D_801EA453; +extern u8 D_801EA454; +extern u8 D_801EA455; +extern u8 D_801EA456; +extern u8 D_801EA457; +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_8018E5F8[])(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_801EA490; +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_8018E63C[])(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_8018E6B8[]; +extern s32 D_8018E6D8[]; +extern u8 D_8018E754[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018E774[]; +extern u8 D_8018E794[]; +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_8018E830[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E8AC[])(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_801E99B4; +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_8018E8B8[])(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_8018E8C0[])(void); +extern void func_801663FC(void *a0); +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_8018E988[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018E998[])(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_8018E9A8[])(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_8018E9B4[])(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_8018E914[]; +extern u8 D_8018E928[]; +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_8018E9CC[])(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_8018E9D4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018E9DC[])(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_8018E9E4[])(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_8018E9EC[])(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_8018E9F4[])(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_8018E9FC[])(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_8018EAB0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018EAB8[])(void); +extern void func_80169F00(void *a0); +extern char D_8018EA68[]; +extern char D_8018EA28[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018EAF0[])(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_8018EAFC[])(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_8018EB44[])(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_8018EBC0[])(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_801EA7B0; +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_8018EBB4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018EBF8[]; +extern unsigned short D_8018EC00[]; +extern unsigned short D_8018EC08[]; +extern unsigned char D_801EA7B8[]; +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_801EA7B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018EC10[])(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_801EA8EC; +extern M2C_UNK D_801EA8F0; +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_801EA878; +extern void (*D_8018EC40[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EA8F4[]; +extern u8 D_801EA8FC[]; +extern u8 D_801EA8AC[]; +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_8018EC48[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018EC64[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018EC6C[])(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_8018ECD4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EC78; +extern u8 D_8018EC84; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018ED08[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018ED10[])(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_8018ED64[])(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_8018ED98[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018ED88[]; +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_8018EDB4; +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_8018EE2C[])(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_8018EE34[])(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_8018EE3C[])(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_8018EE44[])(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_8018EE4C[])(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_8018EE54[])(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_8018EE60[])(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_8018EE6C[])(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_8018EE78[])(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_8018EE88[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018EE98[])(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_8018EEA0[])(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_8018EEA8[])(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_8018EEB0[])(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_8018EEB8[])(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_8018EEC0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018EEC8[])(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_8018EED0[])(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_8018EED8[])(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_8018EEE0[])(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_8018EEE8[])(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_8018EEF0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018EEF8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018EF00[])(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_8018EF08[])(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_8018EF10[])(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_8018EF18[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018EF20[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018EF28[])(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_8018EF30[])(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_8018EF38[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018EF40[])(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_8018EF48[])(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_8018EF8C[])(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_8018EF50; +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_8018EFBC[])(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_8018EFF8[])(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_80126954; +extern s32 D_80126950; +extern s32 D_8012695C; +extern s16 D_80126968; +extern s16 D_8012696A; +extern s16 D_8012696C; +extern s16 D_80126976; +extern s16 D_80126978; +extern s16 D_8012697A; +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_8018F050[])(); +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_8018F060[])(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_8018F068[])(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_8018F1D0[])(); +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_8018F1DC[])(); +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_801E9BFC; +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_801EC590; +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_801EB030; +extern short D_801EC604; +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_801EB45C; +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_801EB484; +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_801EB440; +extern s32 func_8017A3B0(void); +extern short D_801EB47C; +extern short D_801EB478; +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_801EC560; +extern s16 D_801EC562; +extern s16 D_801EC56C; +extern void func_8017AE2C(s32 param_1); +extern void func_8017B0E4(int param_1, int param_2); +extern s16 D_801EB444; +extern u16 D_801EB4C4; +extern u16 D_801EB4C6; +extern u16 D_801EB4C8; +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_801EB4BC; +extern s16 D_801EB4BE; +extern s16 D_801EB4C0; +extern s16 D_801EB4B4; +extern s16 D_801EB4B6; +extern s16 D_801EB4B8; +extern void func_8017B7A8(void); +extern s16 D_801EB4D4; +extern s16 D_801EB4D6; +extern s16 D_801EB4D8; +extern s16 D_801EB4DC; +extern s16 D_801EB4DE; +extern s16 D_801EB4E0; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801EB4CC; +extern short D_801EB4CE; +extern short D_801EB4D0; +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_801EB464; +extern SV4 D_801EB46C; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801EB48C[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_801EB488)(void); +extern void func_8017BD50(int param_1); +extern void (*D_8018F3B8[])(void); +extern void func_8017BE60(void *a0); +extern void func_8017BE9C(void); +extern void func_8017BEA4(void); +extern void func_8017BEAC(void); +extern void func_8017BEB4(void); +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2); +extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); +extern s32 func_8012C750(s32 a0); +extern s32 D_8018F3E8[]; +extern void func_8017BFBC(s32 a0, s32 a1); +extern void func_8017C010(s32 a0, s32 a1, s32 a2); +extern void func_8017C068(void); +extern void (*D_8018F418[])(void); +extern void func_8017C114(void *a0); +extern void func_8017C150(void *a0); +extern void func_800176F0(void *a0); +extern void func_8017C43C(void *a0); +extern void func_8012A828(s32 a0, void * a1); +extern void func_8012CAE4(void *a0); +extern s32 func_8012C354(s32 a0, s32 a1); +extern s32 func_80143970(s32 a0); +extern void func_8017C8D0(void *a0); +extern void func_8017D220(s32 a0, s16 a1, s16 a2); +extern void func_8017D294(s16 *a0); +extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8017CA6C(s32 a0); +extern void func_8012ADE4(u8 *a0); +extern void func_8012B200(u8 *a0); +extern s32 func_8012B864(s32 a0); +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern void func_8012BD14(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012CBA4(s32 a0); +extern void func_8017D370(s32 a0); +extern void func_8017CC70(s32 a0); +extern s32 func_8012E778(int param_1, int param_2); +extern s32 func_801439C0(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_8017D064(s32 a0); +extern void (*D_8018F6F4[])(void); +extern void func_8017D1E4(void *a0); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8017D584(s32 a0); +extern void func_8012CBCC(s32); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8017D658(s32 a0); +extern void func_8012C218(void*); +extern void func_8017D728(s32 a0); +extern s32 func_8012E778(s32 param_1, s32 param_2); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_8017D780(s32 a0); +extern void func_8017D878(s32 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_8017DC90(u16 *a0, void *a1); +extern int func_8017DD34(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_8017DF2C(s32 a0, s32 a1); +extern void func_8017DF98(s32 arg0); +extern void func_8017EE64(void *arg0); +extern void func_8017F04C(u8 *a0); +extern void (*D_8018F774[])(int); +extern void func_8017EE90(int param_1); +extern void (*D_8018F718[])(void); +extern s8 D_8018F724[]; +extern void func_8017EEDC(s32 param_1); +extern void func_8017EFA8(s32 param_1); +extern void (*D_8018F77C[])(void); +extern void func_8017F094(void *a0); +extern GroupRec_801EB5C8 D_801EB5C8[8]; +extern void func_8017F0D0(s32 param_1); +extern void func_8017F278(void *arg0); +extern s32 func_80017E30(void *a0, void *a1); +extern void func_80016ED4(void *a0); +extern SVECTOR_8017F40C D_8018F784[4]; +extern void func_8017F40C(s32 a0, s32 a1); +extern void (*D_8018F818[])(void); +extern void func_8017F6C4(void *a0); +extern void func_8017F8EC(void); +extern s32 func_8017F700(s32 a0); +extern s32 func_8017F744(void); +extern void (*D_8018F820[])(void); +extern void func_8017F768(void *a0); +extern void func_8017F914(void); +extern s32 func_8017F7A4(s32 a0); +extern void func_8001BFD0(void); +extern void func_800D1E28(void); +extern s32 func_8017F7E4(s32 a0); +extern s32 func_800D1EBC(void); +extern void func_8017F880(void); +extern void func_8017F8A0(s32 *a0); +extern M2C_UNK D_8018F834; +extern void func_8012A018(s32 a0, s32 a1); +extern void func_8012A094(s32 a0); +extern void func_8017FBA4(void*); +extern void func_8017F93C(void); +extern void func_8017FBA4(void *); +extern void func_8017F9D8(void); +extern void func_8017FA44(void); +extern void func_8017FABC(void); +extern s32 D_80126E60[]; +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A100(s8 a0); +extern void func_8017FADC(void); +extern void func_8017FB84(void); +extern void (*D_8018F860[])(void); +extern void func_8017FBA4(void *a0); +extern s16 D_80126940; +extern s16 D_80126942; +extern s16 D_80126944; +extern s32 func_800130D0(s32 a0, s32 a1, s32 a2); +extern void func_8017FF68(s32 param_1, s16 *param_2); +extern void func_8017FBE0(s32 param_1); +extern void func_8017FD64(s32 arg0); +extern s32 func_8012E544(s32 a0); +extern void func_8017FDC0(s32 param_1); +extern s32 func_80013294(void*, void*); +extern void func_8017FE18(s32 param_1); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern s16 D_8018FA14; +extern s32 D_801AE99C[]; +extern s32 D_801AE944[]; +extern s32 D_801AE8D4[]; +extern void func_80180120(s32 a0); +extern s32 D_801EC44C; +extern s32 func_801802B8(void); +extern s32 func_801802F4(s32 a0); +extern s32 D_800A651C; +extern u8 D_800AF648; +extern u8 D_8018F958[]; +extern u32 D_8018FF24[]; +extern u8 D_8018FF30[]; +extern u8 D_8018FF31[]; +extern u8 D_8018FF32[]; +extern u8 D_8018FF33[]; +extern u8 D_8018FF40[]; +extern u8 D_8018FF41[]; +extern u8 D_8018FF42[]; +extern u8 D_8018FF43[]; +extern u8 D_8018FF50[]; +extern u8 D_8018FF51[]; +extern u8 D_8018FF52[]; +extern u8 D_8018FF53[]; +extern void *func_80010A08(s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 AddPrim(s32, void *); +extern void func_80180494(void *a0); +extern s32 func_8012DE2C(s32 a0); +extern s32 func_8012DDA4(void); +extern s32 func_800133E4(s16 *a0, s16 *a1); +extern u8 D_8018F9A0[]; +extern void func_801808CC(s32 a0, s32 a1, s32 a2, s32 a3); +extern volatile s32 D_801EC44C; +extern s32 func_80180A08(s32 param_1, u16 param_2); +extern void func_80180AC4(s32 arg0, s32 arg1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_80181374(void *a0); +extern s32 func_8012BA10(s32 a0, s32 a1); +extern u8 D_801ADC24[]; +extern void func_80181414(void *a0); +extern void func_80181BD8(s32 a0); +extern s32 D_801AE6DC[]; +extern void func_80181D4C(s32 a0); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8012CBCC(s32 a0); +extern void func_80180B44(s32); +extern void func_8018305C(s32 a0); +extern u16 D_80126B96; +extern s32 D_801EC448; +extern u8 D_8018C134[]; +extern u8 D_8018F914[]; +extern s16 D_8018F9FC; +extern u8 D_801AE2C4[]; +extern u8 D_801AE3A4[]; +extern u8 D_801AE7CC[]; +extern void func_8018222C(s32 a0); +extern u8 D_801AE734[]; +extern s32 D_8018F8D4; +extern void func_80182494(void *a0); +extern void func_80182698(s32 a0); +extern s16 D_8018FA0C; +extern s16 D_8018FA0E; +extern s16 D_8018FA10; +extern s32 D_801EC450; +extern void func_80182780(s32 a0); +extern void func_80180B44(s32 a0); +extern void func_801828DC(s32 a0); +extern u8 D_801ADCEC[]; +extern s32 D_8018F9D8[]; +extern s32 D_8018F9DC[]; +extern s32 D_8018F9E0[]; +extern void func_801829F0(void *a0); +extern void func_80182C20(s32 a0); +extern s16 D_8018F9FE; +extern s16 D_8018FA00; +extern s32 D_8018FF60[]; +extern void func_80182E2C(void *a0); +extern void (*D_80190068[])(void); +extern void func_80183020(void *a0); +extern void func_801830B0(s32 a0); +extern void func_8012C218(void *a0); +extern MatEntry D_80190078[]; +extern void func_80183104(s32 param_1); +extern void (*D_801900B8[])(void); +extern void func_80183228(void *a0); +extern void func_8012B23C(s32 a0); +extern void func_80184E9C(s32 a0, s32 a1, s32 a2); +extern void func_80183264(s32 a0); +extern u8 D_801901A8[]; +extern u8 D_801901B4[]; +extern u8 D_801901BC[]; +extern u8 D_801901C4[]; +extern u8 D_801901CC[]; +extern void func_801833D8(void *a0); +extern void func_80184E9C(); +extern void func_80183580(void *arg0); +extern s32 D_801900F8[]; +extern s32 D_80190138[]; +extern s32 D_80190190[]; +extern void (*D_801901D4[])(void *); +extern void func_80183728(void *arg0); +extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); +extern s32 D_8018BD04; +extern s32 D_8019024C; +extern void func_801838B0(s32 a0); +extern void (*D_8019025C[])(void); +extern void func_80183A38(void *a0); +extern void (*D_801902C0[])(void); +extern void func_80183DC8(void *a0); +extern u8 D_8018F968[]; +extern u32 D_801902C8[]; +extern u8 D_801902D4[]; +extern u8 D_801902D5[]; +extern u8 D_801902D6[]; +extern u8 D_801902D7[]; +extern u8 D_801902E4[]; +extern u8 D_801902E5[]; +extern u8 D_801902E6[]; +extern u8 D_801902E7[]; +extern u8 D_801902F4[]; +extern u8 D_801902F5[]; +extern u8 D_801902F6[]; +extern u8 D_801902F7[]; +extern void func_80183E04(void *a0); +extern void func_80184228(void); +extern u8 D_80190314[]; +extern u8 D_8019031C[]; +extern void (*D_80190370[])(void *); +extern void func_80184230(void *arg0); +extern void func_801439FC(s32 a0); +extern void func_8018430C(s32 a0); +extern s32 func_80143994(s32 arg0, s32 arg1); +extern s32 func_801843D8(void *a0); +extern void func_801843FC(s32 param_1); +extern void func_8018449C(s32 param_1); +extern void (*D_80190400[])(void); +extern void func_80184524(void *a0); +extern void func_80184560(void); +extern void (*D_8019040C[])(void); +extern void func_80184568(void *a0); +/* ==== end §8b carried decl layer ==== */ + +extern void func_800D0C48(s32 a0); +extern s32 func_801789AC(s32 arg0); +extern void func_80178D18(void); +extern void func_80175414(s32 _arg0); + +void func_801847E8(s32 param_1) +{ + s32 v0; + s32 v1; + + switch (*(s32 *)(param_1 + 0xF8)) { + case 1: + *(u32 *)(param_1 + 0xDC) ^= 1; + break; + case 2: + *(u32 *)(param_1 + 0xE0) ^= 1; + break; + case 3: + *(u32 *)(param_1 + 0xE4) ^= 1; + break; + case 4: + v0 = *(u32 *)(param_1 + 0xE8) ^ 1; + *(u32 *)(param_1 + 0xE8) = v0; + break; + case 5: + v1 = *(s32 *)(param_1 + 0x64); + *(s16 *)(v1 + 2) = 1; + break; + case 6: + v1 = *(s32 *)(param_1 + 0x64); + *(s16 *)(v1 + 2) = 2; + break; + case 7: + v0 = 6; + goto set_all; + case 8: + v1 = *(s32 *)(param_1 + 0x64); + *(s16 *)(v1 + 2) = 0x28; + break; + case 9: + func_800D0C48(1); + *(u32 *)(param_1 + 0xF8) = 0; + goto check; + case 10: + v0 = 7; + goto set_all; + case 11: + v0 = 8; + set_all: + *(u32 *)(param_1 + 0xDC) = v0; + *(u32 *)(param_1 + 0xE0) = v0; + *(u32 *)(param_1 + 0xE4) = v0; + *(u32 *)(param_1 + 0xE8) = v0; + break; + } + *(u32 *)(param_1 + 0xF8) = 0; +check: + if (func_801789AC(param_1) != 0) { + ((void (*)(s32))func_80178D18)(param_1); + *(s16 *)(param_1 + 2) = 1; + *(s16 *)(param_1 + 0x100) = 0; + ((void (*)(void))func_80175414)(); + } +} + + diff --git a/src/ov_SC03_028/ov_SC03_028_jr_80184914.c b/src/ov_SC03_028/ov_SC03_028_jr_80184914.c new file mode 100644 index 000000000..00a848fce --- /dev/null +++ b/src/ov_SC03_028/ov_SC03_028_jr_80184914.c @@ -0,0 +1,3352 @@ +#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 { + 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; } PrimDF98; +typedef struct { u8 *vtx; u32 f4; u32 xx, yy, zz; PrimDF98 *prim, *end; } CellDF98; +typedef struct { s16 vx, vy; } DVEC2_DF98; +typedef struct { s16 vx, vy, vz, pad; } SVEC2_DF98; +typedef struct { s16 m[3][3]; s32 t[3]; } MTX_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2; } PF3_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_DF98; +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_DF98; +typedef struct { + u16 f0; + u16 f2; + u16 f4; + u16 f6; + u16 f8; + u16 fA; + s32 fC; + s32 f10; + s32 f14; + s32 f18; +} SubRec_801EB5C8; /* 0x1C */ +typedef struct { + u16 g0; + u16 g2; + s32 g4; + s32 g8; + s32 gC; + SubRec_801EB5C8 subs[16]; +} GroupRec_801EB5C8; /* 0x1D0 */ +typedef struct { u16 x, y, z, w; } __attribute__((aligned(2))) V; +typedef struct { s16 vx, vy, vz, pad; } SV_80182494; +typedef struct { + u8 pad_0[0xCC]; + void *arr[4]; +} D_801EC450_t; +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_8018DF10; +extern u8 D_8018DE80; +extern u8 D_8018DE5C; +extern u8 D_8018DE38; +extern u8 D_8018DEEC; +extern u8 D_8018DEC8; +extern u8 D_8018DEA4; +extern u8 D_8018DE14; +extern void func_80145934(void); +extern u8 D_8018DFA0; +extern u8 D_8018DF7C; +extern u8 D_8018DF58; +extern u8 D_8018DF34; +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 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_8018D398[]; +extern unsigned char D_8018D3C8[]; +extern unsigned char D_8018D418[]; +extern unsigned char D_8018D448[]; +extern unsigned char D_8018D478[]; +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_8018D4C8[])(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 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 u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D590[]; +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 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_8018D618[]; +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_8018D620; +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_801EA340; +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_801EA344; +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_8018D650; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +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_8018D6F8[])(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_8018D71C[])(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_8018D70C; +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_8018D730[])(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_8018D73C[]; +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_8018D74C[])(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_8018D764[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D754; +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_8018D778[])(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_8018D794[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D784; +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_8018D7A8[])(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_8018D7BC[])(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_8018D7D0; +extern void (*D_8018D7F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D7D8; +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_8018D844[])(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_8018D848[])(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_8018DCAC[]; +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_8018DCBC[])(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_801EA378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DCE4[])(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_8018DCC4; +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_8018DCD4; +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_8018DD24[])(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_8018DD2C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DCF8; +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_8018DD38[])(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_8018DD08; +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_801EA380; +extern s32 D_801EA38C; +extern s32 D_801EA390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DD74[])(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_8018DD48[]; +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_801EA388; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018DFC4[])(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_8018DDE4[]; +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_8018E068[])(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_8018E1BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018DFD8; +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_8018E1C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018DFE8; +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_8018E008; +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_8018E1CC[])(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_8018E1F4[])(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_8018E200[])(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_8018E074[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018E2A4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018D388[]; +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_8018E2B8[]; +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_8018E2F4[]; +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_8018E33C; +extern u16 D_8018E33E; +extern u16 D_8018E340; +extern s32 D_8018E344; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018E34C; +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_8018E058; +extern void func_8015EE7C(s32 param_1); +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_8018E3D0[]; +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_8018E480[])(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_8018E4B0[]; +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_8018E514; +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_801EA398[]; +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_8018E538[])(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_801EA3F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018E580[])(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_8018E570; +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_801E99A4[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_8018E588[])(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_8018E5DC[])(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_8018E5A4; +extern s16 D_8018E5D8; +extern s16 D_8018E5D6; +extern s16 D_8018E5D4; +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_8018E5E8[])(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_801EA450; +extern u8 D_801EA451; +extern u8 D_801EA452; +extern u8 D_801EA453; +extern u8 D_801EA454; +extern u8 D_801EA455; +extern u8 D_801EA456; +extern u8 D_801EA457; +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_8018E5F8[])(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_801EA490; +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_8018E63C[])(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_8018E6B8[]; +extern s32 D_8018E6D8[]; +extern u8 D_8018E754[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018E774[]; +extern u8 D_8018E794[]; +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_8018E830[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E8AC[])(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_801E99B4; +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_8018E8B8[])(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_8018E8C0[])(void); +extern void func_801663FC(void *a0); +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_8018E988[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018E998[])(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_8018E9A8[])(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_8018E9B4[])(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_8018E914[]; +extern u8 D_8018E928[]; +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_8018E9CC[])(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_8018E9D4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018E9DC[])(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_8018E9E4[])(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_8018E9EC[])(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_8018E9F4[])(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_8018E9FC[])(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_8018EAB0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018EAB8[])(void); +extern void func_80169F00(void *a0); +extern char D_8018EA68[]; +extern char D_8018EA28[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018EAF0[])(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_8018EAFC[])(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_8018EB44[])(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_8018EBC0[])(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_801EA7B0; +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_8018EBB4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018EBF8[]; +extern unsigned short D_8018EC00[]; +extern unsigned short D_8018EC08[]; +extern unsigned char D_801EA7B8[]; +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_801EA7B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018EC10[])(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_801EA8EC; +extern M2C_UNK D_801EA8F0; +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_801EA878; +extern void (*D_8018EC40[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EA8F4[]; +extern u8 D_801EA8FC[]; +extern u8 D_801EA8AC[]; +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_8018EC48[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018EC64[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018EC6C[])(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_8018ECD4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EC78; +extern u8 D_8018EC84; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018ED08[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018ED10[])(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_8018ED64[])(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_8018ED98[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018ED88[]; +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_8018EDB4; +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_8018EE2C[])(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_8018EE34[])(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_8018EE3C[])(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_8018EE44[])(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_8018EE4C[])(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_8018EE54[])(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_8018EE60[])(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_8018EE6C[])(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_8018EE78[])(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_8018EE88[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018EE98[])(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_8018EEA0[])(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_8018EEA8[])(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_8018EEB0[])(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_8018EEB8[])(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_8018EEC0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018EEC8[])(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_8018EED0[])(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_8018EED8[])(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_8018EEE0[])(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_8018EEE8[])(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_8018EEF0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018EEF8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018EF00[])(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_8018EF08[])(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_8018EF10[])(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_8018EF18[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018EF20[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018EF28[])(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_8018EF30[])(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_8018EF38[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018EF40[])(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_8018EF48[])(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_8018EF8C[])(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_8018EF50; +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_8018EFBC[])(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_8018EFF8[])(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_80126954; +extern s32 D_80126950; +extern s32 D_8012695C; +extern s16 D_80126968; +extern s16 D_8012696A; +extern s16 D_8012696C; +extern s16 D_80126976; +extern s16 D_80126978; +extern s16 D_8012697A; +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_8018F050[])(); +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_8018F060[])(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_8018F068[])(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_8018F1D0[])(); +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_8018F1DC[])(); +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_801E9BFC; +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_801EC590; +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_801EB030; +extern short D_801EC604; +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_801EB45C; +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_801EB484; +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_801EB440; +extern s32 func_8017A3B0(void); +extern short D_801EB47C; +extern short D_801EB478; +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_801EC560; +extern s16 D_801EC562; +extern s16 D_801EC56C; +extern void func_8017AE2C(s32 param_1); +extern void func_8017B0E4(int param_1, int param_2); +extern s16 D_801EB444; +extern u16 D_801EB4C4; +extern u16 D_801EB4C6; +extern u16 D_801EB4C8; +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_801EB4BC; +extern s16 D_801EB4BE; +extern s16 D_801EB4C0; +extern s16 D_801EB4B4; +extern s16 D_801EB4B6; +extern s16 D_801EB4B8; +extern void func_8017B7A8(void); +extern s16 D_801EB4D4; +extern s16 D_801EB4D6; +extern s16 D_801EB4D8; +extern s16 D_801EB4DC; +extern s16 D_801EB4DE; +extern s16 D_801EB4E0; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801EB4CC; +extern short D_801EB4CE; +extern short D_801EB4D0; +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_801EB464; +extern SV4 D_801EB46C; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801EB48C[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_801EB488)(void); +extern void func_8017BD50(int param_1); +extern void (*D_8018F3B8[])(void); +extern void func_8017BE60(void *a0); +extern void func_8017BE9C(void); +extern void func_8017BEA4(void); +extern void func_8017BEAC(void); +extern void func_8017BEB4(void); +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2); +extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); +extern s32 func_8012C750(s32 a0); +extern s32 D_8018F3E8[]; +extern void func_8017BFBC(s32 a0, s32 a1); +extern void func_8017C010(s32 a0, s32 a1, s32 a2); +extern void func_8017C068(void); +extern void (*D_8018F418[])(void); +extern void func_8017C114(void *a0); +extern void func_8017C150(void *a0); +extern void func_800176F0(void *a0); +extern void func_8017C43C(void *a0); +extern void func_8012A828(s32 a0, void * a1); +extern void func_8012CAE4(void *a0); +extern s32 func_8012C354(s32 a0, s32 a1); +extern s32 func_80143970(s32 a0); +extern void func_8017C8D0(void *a0); +extern void func_8017D220(s32 a0, s16 a1, s16 a2); +extern void func_8017D294(s16 *a0); +extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8017CA6C(s32 a0); +extern void func_8012ADE4(u8 *a0); +extern void func_8012B200(u8 *a0); +extern s32 func_8012B864(s32 a0); +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern void func_8012BD14(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012CBA4(s32 a0); +extern void func_8017D370(s32 a0); +extern void func_8017CC70(s32 a0); +extern s32 func_8012E778(int param_1, int param_2); +extern s32 func_801439C0(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_8017D064(s32 a0); +extern void (*D_8018F6F4[])(void); +extern void func_8017D1E4(void *a0); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8017D584(s32 a0); +extern void func_8012CBCC(s32); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8017D658(s32 a0); +extern void func_8012C218(void*); +extern void func_8017D728(s32 a0); +extern s32 func_8012E778(s32 param_1, s32 param_2); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_8017D780(s32 a0); +extern void func_8017D878(s32 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_8017DC90(u16 *a0, void *a1); +extern int func_8017DD34(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_8017DF2C(s32 a0, s32 a1); +extern void func_8017DF98(s32 arg0); +extern void func_8017EE64(void *arg0); +extern void func_8017F04C(u8 *a0); +extern void (*D_8018F774[])(int); +extern void func_8017EE90(int param_1); +extern void (*D_8018F718[])(void); +extern s8 D_8018F724[]; +extern void func_8017EEDC(s32 param_1); +extern void func_8017EFA8(s32 param_1); +extern void (*D_8018F77C[])(void); +extern void func_8017F094(void *a0); +extern GroupRec_801EB5C8 D_801EB5C8[8]; +extern void func_8017F0D0(s32 param_1); +extern void func_8017F278(void *arg0); +extern s32 func_80017E30(void *a0, void *a1); +extern void func_80016ED4(void *a0); +extern SVECTOR_8017F40C D_8018F784[4]; +extern void func_8017F40C(s32 a0, s32 a1); +extern void (*D_8018F818[])(void); +extern void func_8017F6C4(void *a0); +extern void func_8017F8EC(void); +extern s32 func_8017F700(s32 a0); +extern s32 func_8017F744(void); +extern void (*D_8018F820[])(void); +extern void func_8017F768(void *a0); +extern void func_8017F914(void); +extern s32 func_8017F7A4(s32 a0); +extern void func_8001BFD0(void); +extern void func_800D1E28(void); +extern s32 func_8017F7E4(s32 a0); +extern s32 func_800D1EBC(void); +extern void func_8017F880(void); +extern void func_8017F8A0(s32 *a0); +extern M2C_UNK D_8018F834; +extern void func_8012A018(s32 a0, s32 a1); +extern void func_8012A094(s32 a0); +extern void func_8017FBA4(void*); +extern void func_8017F93C(void); +extern void func_8017FBA4(void *); +extern void func_8017F9D8(void); +extern void func_8017FA44(void); +extern void func_8017FABC(void); +extern s32 D_80126E60[]; +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A100(s8 a0); +extern void func_8017FADC(void); +extern void func_8017FB84(void); +extern void (*D_8018F860[])(void); +extern void func_8017FBA4(void *a0); +extern s16 D_80126940; +extern s16 D_80126942; +extern s16 D_80126944; +extern s32 func_800130D0(s32 a0, s32 a1, s32 a2); +extern void func_8017FF68(s32 param_1, s16 *param_2); +extern void func_8017FBE0(s32 param_1); +extern void func_8017FD64(s32 arg0); +extern s32 func_8012E544(s32 a0); +extern void func_8017FDC0(s32 param_1); +extern s32 func_80013294(void*, void*); +extern void func_8017FE18(s32 param_1); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern s16 D_8018FA14; +extern s32 D_801AE99C[]; +extern s32 D_801AE944[]; +extern s32 D_801AE8D4[]; +extern void func_80180120(s32 a0); +extern s32 D_801EC44C; +extern s32 func_801802B8(void); +extern s32 func_801802F4(s32 a0); +extern s32 D_800A651C; +extern u8 D_800AF648; +extern u8 D_8018F958[]; +extern u32 D_8018FF24[]; +extern u8 D_8018FF30[]; +extern u8 D_8018FF31[]; +extern u8 D_8018FF32[]; +extern u8 D_8018FF33[]; +extern u8 D_8018FF40[]; +extern u8 D_8018FF41[]; +extern u8 D_8018FF42[]; +extern u8 D_8018FF43[]; +extern u8 D_8018FF50[]; +extern u8 D_8018FF51[]; +extern u8 D_8018FF52[]; +extern u8 D_8018FF53[]; +extern void *func_80010A08(s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 AddPrim(s32, void *); +extern void func_80180494(void *a0); +extern s32 func_8012DE2C(s32 a0); +extern s32 func_8012DDA4(void); +extern s32 func_800133E4(s16 *a0, s16 *a1); +extern u8 D_8018F9A0[]; +extern void func_801808CC(s32 a0, s32 a1, s32 a2, s32 a3); +extern volatile s32 D_801EC44C; +extern s32 func_80180A08(s32 param_1, u16 param_2); +extern void func_80180AC4(s32 arg0, s32 arg1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_80181374(void *a0); +extern s32 func_8012BA10(s32 a0, s32 a1); +extern u8 D_801ADC24[]; +extern void func_80181414(void *a0); +extern void func_80181BD8(s32 a0); +extern s32 D_801AE6DC[]; +extern void func_80181D4C(s32 a0); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8012CBCC(s32 a0); +extern void func_80180B44(s32); +extern void func_8018305C(s32 a0); +extern u16 D_80126B96; +extern s32 D_801EC448; +extern u8 D_8018C134[]; +extern u8 D_8018F914[]; +extern s16 D_8018F9FC; +extern u8 D_801AE2C4[]; +extern u8 D_801AE3A4[]; +extern u8 D_801AE7CC[]; +extern void func_8018222C(s32 a0); +extern u8 D_801AE734[]; +extern s32 D_8018F8D4; +extern void func_80182494(void *a0); +extern void func_80182698(s32 a0); +extern s16 D_8018FA0C; +extern s16 D_8018FA0E; +extern s16 D_8018FA10; +extern s32 D_801EC450; +extern void func_80182780(s32 a0); +extern void func_80180B44(s32 a0); +extern void func_801828DC(s32 a0); +extern u8 D_801ADCEC[]; +extern s32 D_8018F9D8[]; +extern s32 D_8018F9DC[]; +extern s32 D_8018F9E0[]; +extern void func_801829F0(void *a0); +extern void func_80182C20(s32 a0); +extern s16 D_8018F9FE; +extern s16 D_8018FA00; +extern s32 D_8018FF60[]; +extern void func_80182E2C(void *a0); +extern void (*D_80190068[])(void); +extern void func_80183020(void *a0); +extern void func_801830B0(s32 a0); +extern void func_8012C218(void *a0); +extern MatEntry D_80190078[]; +extern void func_80183104(s32 param_1); +extern void (*D_801900B8[])(void); +extern void func_80183228(void *a0); +extern void func_8012B23C(s32 a0); +extern void func_80184E9C(s32 a0, s32 a1, s32 a2); +extern void func_80183264(s32 a0); +extern u8 D_801901A8[]; +extern u8 D_801901B4[]; +extern u8 D_801901BC[]; +extern u8 D_801901C4[]; +extern u8 D_801901CC[]; +extern void func_801833D8(void *a0); +extern void func_80184E9C(); +extern void func_80183580(void *arg0); +extern s32 D_801900F8[]; +extern s32 D_80190138[]; +extern s32 D_80190190[]; +extern void (*D_801901D4[])(void *); +extern void func_80183728(void *arg0); +extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); +extern s32 D_8018BD04; +extern s32 D_8019024C; +extern void func_801838B0(s32 a0); +extern void (*D_8019025C[])(void); +extern void func_80183A38(void *a0); +extern void (*D_801902C0[])(void); +extern void func_80183DC8(void *a0); +extern u8 D_8018F968[]; +extern u32 D_801902C8[]; +extern u8 D_801902D4[]; +extern u8 D_801902D5[]; +extern u8 D_801902D6[]; +extern u8 D_801902D7[]; +extern u8 D_801902E4[]; +extern u8 D_801902E5[]; +extern u8 D_801902E6[]; +extern u8 D_801902E7[]; +extern u8 D_801902F4[]; +extern u8 D_801902F5[]; +extern u8 D_801902F6[]; +extern u8 D_801902F7[]; +extern void func_80183E04(void *a0); +extern void func_80184228(void); +extern u8 D_80190314[]; +extern u8 D_8019031C[]; +extern void (*D_80190370[])(void *); +extern void func_80184230(void *arg0); +extern void func_801439FC(s32 a0); +extern void func_8018430C(s32 a0); +extern s32 func_80143994(s32 arg0, s32 arg1); +extern s32 func_801843D8(void *a0); +extern void func_801843FC(s32 param_1); +extern void func_8018449C(s32 param_1); +extern void (*D_80190400[])(void); +extern void func_80184524(void *a0); +extern void func_80184560(void); +extern void (*D_8019040C[])(void); +extern void func_80184568(void *a0); +/* ==== end §8b carried decl layer ==== */ + +extern void func_800D0C48(s32 a0); +extern s32 func_801789AC(s32 arg0); +extern void func_80178D18(void); + +void func_80184914(void *a0) { + u32 v; + + switch (*(s32 *)((s32)a0 + 0xF8)) { + case 1: + *(u32 *)((s32)a0 + 0xDC) ^= 1; + break; + case 2: + *(u32 *)((s32)a0 + 0xE0) ^= 1; + break; + case 3: + *(u32 *)((s32)a0 + 0xE4) ^= 1; + break; + case 4: + v = *(u32 *)((s32)a0 + 0xE8) ^ 1; + goto st_e8; + case 5: + *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 2) = 1; + break; + case 6: + *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 2) = 2; + break; + case 7: + v = 6; + goto multi; + case 8: + *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 2) = 0x28; + break; + case 9: + func_800D0C48(1); + *(u32 *)((s32)a0 + 0xF8) = 0; + goto tail; + case 10: + v = 7; + goto multi; + case 11: + v = 8; + multi: + *(u32 *)((s32)a0 + 0xDC) = v; + *(u32 *)((s32)a0 + 0xE0) = v; + *(u32 *)((s32)a0 + 0xE4) = v; + st_e8: + *(u32 *)((s32)a0 + 0xE8) = v; + break; + } + *(u32 *)((s32)a0 + 0xF8) = 0; +tail: + if (func_801789AC((s32)a0) != 0) { + ((void (*)(s32))func_80178D18)((s32)a0); + *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) - 1; + } +} + + +extern void (*D_80190460[])(void *); + +void func_80184A40(void *a0) { + s32 mask; + + if (*(s16 *)((s32)a0 + 0x100) == 0) { + mask = func_8014CB2C() & 0x7FFFFFFF; + if (mask == 2) { + u16 state = *(u16 *)((s32)a0 + 0x2); + if ((u32)(state - 3) >= 2) { + *(u16 *)((s32)a0 + 0x34) = state; + *(u16 *)((s32)a0 + 0x2) = 3; + *(s32 *)((s32)a0 + 0xDC) = mask; + *(s32 *)((s32)a0 + 0xE0) = mask; + *(s32 *)((s32)a0 + 0xE4) = mask; + *(s32 *)((s32)a0 + 0xE8) = mask; + } + } else { + if (*(u16 *)(*(s32 *)((s32)a0 + 0x64) + 2) == 0x1D) { + *(s32 *)((s32)a0 + 0xDC) = 1; + *(s32 *)((s32)a0 + 0xE0) = 1; + *(s32 *)((s32)a0 + 0xE4) = 1; + *(s32 *)((s32)a0 + 0xE8) = 1; + } else { + *(s32 *)((s32)a0 + 0xDC) = 0; + *(s32 *)((s32)a0 + 0xE0) = 0; + *(s32 *)((s32)a0 + 0xE4) = 0; + *(s32 *)((s32)a0 + 0xE8) = 0; + } + } + } + + D_80190460[*(u16 *)((s32)a0 + 0x2)](a0); +} + + +#include "common.h" + +extern u16 D_80126B66; +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_8012C218(void *a0); +extern s32 func_80047948(s32 a0); +extern s32 func_8004787C(s32 a0); + +void func_80184B28(void *a0) { + void *v1; + s32 v0; + s16 t; + + v1 = *(void **)((s32)a0 + 0x64); + if (*(s16 *)(*(s32 *)((s32)v1 + 0x20) + 0x1A) < 0x1801) { + if (*(s16 *)((s32)v1 + 0xFC) > 0) { + func_8012C588(0xC4, (s32)a0); + v1 = *(void **)((s32)a0 + 0x64); + *(u16 *)((s32)v1 + 0xFC) = *(u16 *)((s32)v1 + 0xFC) - 1; + } else { + *(s16 *)((s32)v1 + 0xFC) = 0; + func_8012C218(a0); + } + } else { + *(u16 *)((s32)a0 + 0x6) = *(u16 *)((s32)v1 + 0x6); + t = *(s16 *)&D_80126B66; + if (t >= 0x3C1) { + t = (t - 0x3C0) << 1; + v0 = func_80047948(t); + *(u16 *)((s32)a0 + 0xA) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA) - (v0 >> 9); + v0 = func_8004787C(t); + *(u16 *)((s32)a0 + 0xE) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xE) - (v0 >> 9); + } else { + *(u16 *)((s32)a0 + 0xA) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA) - 8; + *(u16 *)((s32)a0 + 0xE) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xE); + } + } +} + + + +extern void (*D_801904A0[])(void); + +void func_80184C54(void *a0) { + D_801904A0[*(u16 *)((s32)a0 + 0x2)](); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80184914", func_80184C90); + + +extern void (*D_80190594[])(void); + +void func_80184E00(void *a0) { + D_80190594[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8012C218(void *a0); +extern void (*D_801905BC[])(); + +void func_80184E3C(s32 param_1) +{ + if ((*(unsigned short *)(param_1 + 0x5c) & 1) != 0) { + func_8012C218((void *)param_1); + } else { + D_801905BC[*(unsigned short *)(param_1 + 2)](); + } +} + + +#include "common.h" + +/* ---- decls copied verbatim from src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c (destination TU) ---- */ +extern s32 func_8012E544(s32 a0); +extern void RotTransSV(void *a0, void *a1, void *a2); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); + +/* Same GTE control-register-load macros already used verbatim in this TU (func_80183E04, MATCH + * 102 ins) -- reused here for identical byte shape rather than re-deriving raw ctc2 asm. */ +#define gte_SetRotMatrix(r0) __asm__ volatile ( \ + "lw $12, 0( %0 );" \ + "lw $13, 4( %0 );" \ + "ctc2 $12, $0;" \ + "ctc2 $13, $1;" \ + "lw $12, 8( %0 );" \ + "lw $13, 12( %0 );" \ + "lw $14, 16( %0 );" \ + "ctc2 $12, $2;" \ + "ctc2 $13, $3;" \ + "ctc2 $14, $4" \ + : \ + : "r"( r0 ) \ + : "$12", "$13", "$14" ) +#define gte_SetTransMatrix(r0) __asm__ volatile ( \ + "lw $12, 20( %0 );" \ + "lw $13, 24( %0 );" \ + "ctc2 $12, $5;" \ + "lw $14, 28( %0 );" \ + "ctc2 $13, $6;" \ + "ctc2 $14, $7" \ + : \ + : "r"( r0 ) \ + : "$12", "$13", "$14" ) + +void func_80184E9C(s32 a0, s32 a1, s32 a2) +{ + s32 result; + s32 m; + + result = func_8012E544(0xCB); + if (result != 0) { + if ((*(u16 *)(result + 0x5C) != 0) && ((*(u16 *)(result + 0x5C) & 1) == 0)) { + s32 sp10[2]; + s32 sp18[2]; + s32 sp20[2]; + + m = *(s32 *)((s32)a0 + 0x20) + 0x34; + gte_SetRotMatrix(m); + gte_SetTransMatrix(m); + + RotTransSV(a1, sp10, sp20); + RotTransSV(a2, sp18, sp20); + + if (func_80135888(*(s32 *)(result + 0x20), *(s32 *)(result + 0x58), (s32)sp10, (s32)sp18) != 0) { + *(u16 *)(result + 0x5E) = 0x1D; + *(u16 *)(result + 0x5C) = *(u16 *)(result + 0x5C) | 1; + } + } + } +} + + +void func_80184FAC(s32 *a0) { + *(s16*)((s32)a0 + 0x5C) = 0; + } + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80184914", func_80184FB4); + +extern void func_8012B2CC(s32 a0); +extern void func_8012B23C(s32 a0); +extern void func_8012B14C(s32 a0, s32 a1); +extern u8 D_801905D8[]; + +void func_80185028(void *a0) { + void *p1; + void *p2; + s32 v0; + + p1 = *(void **)((s32)a0 + 0x20); + *(u16 *)(p1 + 0x12) = (*(u16 *)((s32)a0 + 0x62) + 0x800) & 0xFFF; + p2 = *(void **)((s32)a0 + 0x20); + *(u16 *)(p2 + 0x14) = 0; + *(u16 *)(p2 + 0x10) = 0; + func_8012B2CC((s32)a0); + func_8012B23C((s32)a0); + func_8012B14C((s32)a0, (s32)&D_801905D8); + v0 = 5; + *(u16 *)((s32)a0 + 0x5C) = 0; + *(u8 *)((s32)a0 + 0xC1) = 0; + *(u16 *)((s32)a0 + 2) = v0; +} + + +#include "common.h" + +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012C218(void *a0); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_8018509C(void *arg0) { + s32 i; + s16 val; + + for (i = 0; i < 8; i++) { + func_8012C658(0xCC, i * 0x200, (s32)arg0); + } + + if (*(u16 *)((s32)arg0 + 2) < 2) { + *(u16 *)(*(s32 *)((s32)arg0 + 0x64) + 0xFC) = 0; + val = *(s16 *)(*(s32 *)((s32)arg0 + 0x64) + 0x12); + if (val < 0) { + if (val != -4) { + *(s16 *)(*(s32 *)((s32)arg0 + 0x64) + 0x12) = -4; + } + } else { + if (val != 4) { + *(s16 *)(*(s32 *)((s32)arg0 + 0x64) + 0x12) = 4; + } + } + } + + func_8012C218((void *)arg0); + func_8002D4C8(0x62A, 0); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80184914", func_80185158); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80184914", func_80185344); + +extern void (*D_8019066C[])(void); + +void func_801854D8(void *a0) { + D_8019066C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void (*D_801906C8[])(void); + +void func_80185514(void *a0) { + D_801906C8[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void (*D_80190724[])(void); + +void func_80185550(void *a0) { + D_80190724[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern u16 D_80078E92; + +void func_8018558C(s32 a0) { + *(u16 *)(a0 + 0x5C) = 0; + *(u16 *)(a0 + 0x5E) = 0; + *(u8 *)(a0 + 0xC1) = 0; + *(u16 *)(a0 + 2) = *(u16 *)(a0 + 0x10A); + *(u16 *)(a0 + 0xDE) = D_80078E92 + 0x3C; + func_8012C658(0xC8, 4, a0); + func_8012C658(0xC8, 5, a0); + func_8012C658(0xC8, 6, a0); + func_8002D4C8(0xBF2, 0); + func_8002D4C8(0x563, 0); +} + + +extern void func_800183E0(s32 a0); +extern s32 D_801907B0[]; + +void func_8018561C(s32 arg0) { + u16 var; + + var = *(u16 *)(arg0 + 0xFC); + var = var + 1; + *(u16 *)(arg0 + 0xFC) = var; + if ((s16)var < 9) { + func_800183E0(D_801907B0[(s16)var >> 1]); + } else { + *(s16 *)(arg0 + 2) = 2; + *(u8 *)(arg0 + 0xC1) = 0; + *(u16 *)(arg0 + 0x5C) = 0x8000; + } +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80184914", func_8018568C); + +extern void (*D_801907E4[])(void); + +void func_801857AC(void *a0) { + *(u16 *)((s32)a0 + 0xFC) = (*(u16 *)((s32)a0 + 0xFC) + 1) & 0xFFF; + D_801907E4[*(u16 *)((s32)a0 + 2)](); +} + + +extern void func_800183E0(s32 a0); +extern s32 D_80190884[]; + +void func_801857F4(s32 arg0) { + u16 var; + + var = *(u16 *)(arg0 + 0xFC); + var = var + 1; + *(u16 *)(arg0 + 0xFC) = var; + if ((s16)var < 9) { + func_800183E0(D_80190884[(s16)var >> 1]); + } else { + *(s16 *)(arg0 + 2) = 2; + *(u8 *)(arg0 + 0xC1) = 0; + *(u16 *)(arg0 + 0x5C) = 0x8000; + } +} + diff --git a/src/ov_SC03_028/ov_SC03_028_jr_80185864.c b/src/ov_SC03_028/ov_SC03_028_jr_80185864.c new file mode 100644 index 000000000..7389b71a9 --- /dev/null +++ b/src/ov_SC03_028/ov_SC03_028_jr_80185864.c @@ -0,0 +1,3156 @@ +#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 { + 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; } PrimDF98; +typedef struct { u8 *vtx; u32 f4; u32 xx, yy, zz; PrimDF98 *prim, *end; } CellDF98; +typedef struct { s16 vx, vy; } DVEC2_DF98; +typedef struct { s16 vx, vy, vz, pad; } SVEC2_DF98; +typedef struct { s16 m[3][3]; s32 t[3]; } MTX_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2; } PF3_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_DF98; +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_DF98; +typedef struct { + u16 f0; + u16 f2; + u16 f4; + u16 f6; + u16 f8; + u16 fA; + s32 fC; + s32 f10; + s32 f14; + s32 f18; +} SubRec_801EB5C8; /* 0x1C */ +typedef struct { + u16 g0; + u16 g2; + s32 g4; + s32 g8; + s32 gC; + SubRec_801EB5C8 subs[16]; +} GroupRec_801EB5C8; /* 0x1D0 */ +typedef struct { u16 x, y, z, w; } __attribute__((aligned(2))) V; +typedef struct { s16 vx, vy, vz, pad; } SV_80182494; +typedef struct { + u8 pad_0[0xCC]; + void *arr[4]; +} D_801EC450_t; +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_8018DF10; +extern u8 D_8018DE80; +extern u8 D_8018DE5C; +extern u8 D_8018DE38; +extern u8 D_8018DEEC; +extern u8 D_8018DEC8; +extern u8 D_8018DEA4; +extern u8 D_8018DE14; +extern void func_80145934(void); +extern u8 D_8018DFA0; +extern u8 D_8018DF7C; +extern u8 D_8018DF58; +extern u8 D_8018DF34; +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 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_8018D398[]; +extern unsigned char D_8018D3C8[]; +extern unsigned char D_8018D418[]; +extern unsigned char D_8018D448[]; +extern unsigned char D_8018D478[]; +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_8018D4C8[])(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 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 u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D590[]; +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 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_8018D618[]; +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_8018D620; +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_801EA340; +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_801EA344; +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_8018D650; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +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_8018D6F8[])(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_8018D71C[])(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_8018D70C; +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_8018D730[])(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_8018D73C[]; +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_8018D74C[])(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_8018D764[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D754; +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_8018D778[])(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_8018D794[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D784; +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_8018D7A8[])(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_8018D7BC[])(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_8018D7D0; +extern void (*D_8018D7F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D7D8; +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_8018D844[])(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_8018D848[])(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_8018DCAC[]; +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_8018DCBC[])(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_801EA378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DCE4[])(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_8018DCC4; +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_8018DCD4; +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_8018DD24[])(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_8018DD2C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DCF8; +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_8018DD38[])(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_8018DD08; +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_801EA380; +extern s32 D_801EA38C; +extern s32 D_801EA390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DD74[])(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_8018DD48[]; +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_801EA388; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018DFC4[])(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_8018DDE4[]; +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_8018E068[])(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_8018E1BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018DFD8; +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_8018E1C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018DFE8; +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_8018E008; +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_8018E1CC[])(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_8018E1F4[])(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_8018E200[])(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_8018E074[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018E2A4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018D388[]; +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_8018E2B8[]; +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_8018E2F4[]; +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_8018E33C; +extern u16 D_8018E33E; +extern u16 D_8018E340; +extern s32 D_8018E344; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018E34C; +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_8018E058; +extern void func_8015EE7C(s32 param_1); +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_8018E3D0[]; +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_8018E480[])(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_8018E4B0[]; +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_8018E514; +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_801EA398[]; +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_8018E538[])(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_801EA3F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018E580[])(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_8018E570; +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_801E99A4[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_8018E588[])(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_8018E5DC[])(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_8018E5A4; +extern s16 D_8018E5D8; +extern s16 D_8018E5D6; +extern s16 D_8018E5D4; +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_8018E5E8[])(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_801EA450; +extern u8 D_801EA451; +extern u8 D_801EA452; +extern u8 D_801EA453; +extern u8 D_801EA454; +extern u8 D_801EA455; +extern u8 D_801EA456; +extern u8 D_801EA457; +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_8018E5F8[])(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_801EA490; +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_8018E63C[])(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_8018E6B8[]; +extern s32 D_8018E6D8[]; +extern u8 D_8018E754[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018E774[]; +extern u8 D_8018E794[]; +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_8018E830[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E8AC[])(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_801E99B4; +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_8018E8B8[])(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_8018E8C0[])(void); +extern void func_801663FC(void *a0); +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_8018E988[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018E998[])(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_8018E9A8[])(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_8018E9B4[])(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_8018E914[]; +extern u8 D_8018E928[]; +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_8018E9CC[])(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_8018E9D4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018E9DC[])(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_8018E9E4[])(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_8018E9EC[])(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_8018E9F4[])(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_8018E9FC[])(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_8018EAB0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018EAB8[])(void); +extern void func_80169F00(void *a0); +extern char D_8018EA68[]; +extern char D_8018EA28[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018EAF0[])(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_8018EAFC[])(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_8018EB44[])(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_8018EBC0[])(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_801EA7B0; +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_8018EBB4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018EBF8[]; +extern unsigned short D_8018EC00[]; +extern unsigned short D_8018EC08[]; +extern unsigned char D_801EA7B8[]; +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_801EA7B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018EC10[])(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_801EA8EC; +extern M2C_UNK D_801EA8F0; +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_801EA878; +extern void (*D_8018EC40[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EA8F4[]; +extern u8 D_801EA8FC[]; +extern u8 D_801EA8AC[]; +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_8018EC48[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018EC64[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018EC6C[])(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_8018ECD4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EC78; +extern u8 D_8018EC84; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018ED08[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018ED10[])(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_8018ED64[])(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_8018ED98[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018ED88[]; +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_8018EDB4; +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_8018EE2C[])(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_8018EE34[])(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_8018EE3C[])(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_8018EE44[])(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_8018EE4C[])(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_8018EE54[])(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_8018EE60[])(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_8018EE6C[])(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_8018EE78[])(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_8018EE88[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018EE98[])(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_8018EEA0[])(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_8018EEA8[])(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_8018EEB0[])(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_8018EEB8[])(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_8018EEC0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018EEC8[])(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_8018EED0[])(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_8018EED8[])(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_8018EEE0[])(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_8018EEE8[])(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_8018EEF0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018EEF8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018EF00[])(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_8018EF08[])(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_8018EF10[])(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_8018EF18[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018EF20[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018EF28[])(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_8018EF30[])(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_8018EF38[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018EF40[])(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_8018EF48[])(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_8018EF8C[])(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_8018EF50; +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_8018EFBC[])(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_8018EFF8[])(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_80126954; +extern s32 D_80126950; +extern s32 D_8012695C; +extern s16 D_80126968; +extern s16 D_8012696A; +extern s16 D_8012696C; +extern s16 D_80126976; +extern s16 D_80126978; +extern s16 D_8012697A; +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_8018F050[])(); +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_8018F060[])(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_8018F068[])(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_8018F1D0[])(); +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_8018F1DC[])(); +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_801E9BFC; +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_801EC590; +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_801EB030; +extern short D_801EC604; +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_801EB45C; +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_801EB484; +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_801EB440; +extern s32 func_8017A3B0(void); +extern short D_801EB47C; +extern short D_801EB478; +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_801EC560; +extern s16 D_801EC562; +extern s16 D_801EC56C; +extern void func_8017AE2C(s32 param_1); +extern void func_8017B0E4(int param_1, int param_2); +extern s16 D_801EB444; +extern u16 D_801EB4C4; +extern u16 D_801EB4C6; +extern u16 D_801EB4C8; +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_801EB4BC; +extern s16 D_801EB4BE; +extern s16 D_801EB4C0; +extern s16 D_801EB4B4; +extern s16 D_801EB4B6; +extern s16 D_801EB4B8; +extern void func_8017B7A8(void); +extern s16 D_801EB4D4; +extern s16 D_801EB4D6; +extern s16 D_801EB4D8; +extern s16 D_801EB4DC; +extern s16 D_801EB4DE; +extern s16 D_801EB4E0; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801EB4CC; +extern short D_801EB4CE; +extern short D_801EB4D0; +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_801EB464; +extern SV4 D_801EB46C; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801EB48C[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_801EB488)(void); +extern void func_8017BD50(int param_1); +extern void (*D_8018F3B8[])(void); +extern void func_8017BE60(void *a0); +extern void func_8017BE9C(void); +extern void func_8017BEA4(void); +extern void func_8017BEAC(void); +extern void func_8017BEB4(void); +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2); +extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); +extern s32 func_8012C750(s32 a0); +extern s32 D_8018F3E8[]; +extern void func_8017BFBC(s32 a0, s32 a1); +extern void func_8017C010(s32 a0, s32 a1, s32 a2); +extern void func_8017C068(void); +extern void (*D_8018F418[])(void); +extern void func_8017C114(void *a0); +extern void func_8017C150(void *a0); +extern void func_800176F0(void *a0); +extern void func_8017C43C(void *a0); +extern void func_8012A828(s32 a0, void * a1); +extern void func_8012CAE4(void *a0); +extern s32 func_8012C354(s32 a0, s32 a1); +extern s32 func_80143970(s32 a0); +extern void func_8017C8D0(void *a0); +extern void func_8017D220(s32 a0, s16 a1, s16 a2); +extern void func_8017D294(s16 *a0); +extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8017CA6C(s32 a0); +extern void func_8012ADE4(u8 *a0); +extern void func_8012B200(u8 *a0); +extern s32 func_8012B864(s32 a0); +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern void func_8012BD14(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012CBA4(s32 a0); +extern void func_8017D370(s32 a0); +extern void func_8017CC70(s32 a0); +extern s32 func_8012E778(int param_1, int param_2); +extern s32 func_801439C0(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_8017D064(s32 a0); +extern void (*D_8018F6F4[])(void); +extern void func_8017D1E4(void *a0); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8017D584(s32 a0); +extern void func_8012CBCC(s32); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8017D658(s32 a0); +extern void func_8012C218(void*); +extern void func_8017D728(s32 a0); +extern s32 func_8012E778(s32 param_1, s32 param_2); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_8017D780(s32 a0); +extern void func_8017D878(s32 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_8017DC90(u16 *a0, void *a1); +extern int func_8017DD34(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_8017DF2C(s32 a0, s32 a1); +extern void func_8017DF98(s32 arg0); +extern void func_8017EE64(void *arg0); +extern void func_8017F04C(u8 *a0); +extern void (*D_8018F774[])(int); +extern void func_8017EE90(int param_1); +extern void (*D_8018F718[])(void); +extern s8 D_8018F724[]; +extern void func_8017EEDC(s32 param_1); +extern void func_8017EFA8(s32 param_1); +extern void (*D_8018F77C[])(void); +extern void func_8017F094(void *a0); +extern GroupRec_801EB5C8 D_801EB5C8[8]; +extern void func_8017F0D0(s32 param_1); +extern void func_8017F278(void *arg0); +extern s32 func_80017E30(void *a0, void *a1); +extern void func_80016ED4(void *a0); +extern SVECTOR_8017F40C D_8018F784[4]; +extern void func_8017F40C(s32 a0, s32 a1); +extern void (*D_8018F818[])(void); +extern void func_8017F6C4(void *a0); +extern void func_8017F8EC(void); +extern s32 func_8017F700(s32 a0); +extern s32 func_8017F744(void); +extern void (*D_8018F820[])(void); +extern void func_8017F768(void *a0); +extern void func_8017F914(void); +extern s32 func_8017F7A4(s32 a0); +extern void func_8001BFD0(void); +extern void func_800D1E28(void); +extern s32 func_8017F7E4(s32 a0); +extern s32 func_800D1EBC(void); +extern void func_8017F880(void); +extern void func_8017F8A0(s32 *a0); +extern M2C_UNK D_8018F834; +extern void func_8012A018(s32 a0, s32 a1); +extern void func_8012A094(s32 a0); +extern void func_8017FBA4(void*); +extern void func_8017F93C(void); +extern void func_8017FBA4(void *); +extern void func_8017F9D8(void); +extern void func_8017FA44(void); +extern void func_8017FABC(void); +extern s32 D_80126E60[]; +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A100(s8 a0); +extern void func_8017FADC(void); +extern void func_8017FB84(void); +extern void (*D_8018F860[])(void); +extern void func_8017FBA4(void *a0); +extern s16 D_80126940; +extern s16 D_80126942; +extern s16 D_80126944; +extern s32 func_800130D0(s32 a0, s32 a1, s32 a2); +extern void func_8017FF68(s32 param_1, s16 *param_2); +extern void func_8017FBE0(s32 param_1); +extern void func_8017FD64(s32 arg0); +extern s32 func_8012E544(s32 a0); +extern void func_8017FDC0(s32 param_1); +extern s32 func_80013294(void*, void*); +extern void func_8017FE18(s32 param_1); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern s16 D_8018FA14; +extern s32 D_801AE99C[]; +extern s32 D_801AE944[]; +extern s32 D_801AE8D4[]; +extern void func_80180120(s32 a0); +extern s32 D_801EC44C; +extern s32 func_801802B8(void); +extern s32 func_801802F4(s32 a0); +extern s32 D_800A651C; +extern u8 D_800AF648; +extern u8 D_8018F958[]; +extern u32 D_8018FF24[]; +extern u8 D_8018FF30[]; +extern u8 D_8018FF31[]; +extern u8 D_8018FF32[]; +extern u8 D_8018FF33[]; +extern u8 D_8018FF40[]; +extern u8 D_8018FF41[]; +extern u8 D_8018FF42[]; +extern u8 D_8018FF43[]; +extern u8 D_8018FF50[]; +extern u8 D_8018FF51[]; +extern u8 D_8018FF52[]; +extern u8 D_8018FF53[]; +extern void *func_80010A08(s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 AddPrim(s32, void *); +extern void func_80180494(void *a0); +extern s32 func_8012DE2C(s32 a0); +extern s32 func_8012DDA4(void); +extern s32 func_800133E4(s16 *a0, s16 *a1); +extern u8 D_8018F9A0[]; +extern void func_801808CC(s32 a0, s32 a1, s32 a2, s32 a3); +extern volatile s32 D_801EC44C; +extern s32 func_80180A08(s32 param_1, u16 param_2); +extern void func_80180AC4(s32 arg0, s32 arg1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_80181374(void *a0); +extern s32 func_8012BA10(s32 a0, s32 a1); +extern u8 D_801ADC24[]; +extern void func_80181414(void *a0); +extern void func_80181BD8(s32 a0); +extern s32 D_801AE6DC[]; +extern void func_80181D4C(s32 a0); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8012CBCC(s32 a0); +extern void func_80180B44(s32); +extern void func_8018305C(s32 a0); +extern u16 D_80126B96; +extern s32 D_801EC448; +extern u8 D_8018C134[]; +extern u8 D_8018F914[]; +extern s16 D_8018F9FC; +extern u8 D_801AE2C4[]; +extern u8 D_801AE3A4[]; +extern u8 D_801AE7CC[]; +extern void func_8018222C(s32 a0); +extern u8 D_801AE734[]; +extern s32 D_8018F8D4; +extern void func_80182494(void *a0); +extern void func_80182698(s32 a0); +extern s16 D_8018FA0C; +extern s16 D_8018FA0E; +extern s16 D_8018FA10; +extern s32 D_801EC450; +extern void func_80182780(s32 a0); +extern void func_80180B44(s32 a0); +extern void func_801828DC(s32 a0); +extern u8 D_801ADCEC[]; +extern s32 D_8018F9D8[]; +extern s32 D_8018F9DC[]; +extern s32 D_8018F9E0[]; +extern void func_801829F0(void *a0); +extern void func_80182C20(s32 a0); +extern s16 D_8018F9FE; +extern s16 D_8018FA00; +extern s32 D_8018FF60[]; +extern void func_80182E2C(void *a0); +extern void (*D_80190068[])(void); +extern void func_80183020(void *a0); +extern void func_801830B0(s32 a0); +extern void func_8012C218(void *a0); +extern MatEntry D_80190078[]; +extern void func_80183104(s32 param_1); +extern void (*D_801900B8[])(void); +extern void func_80183228(void *a0); +extern void func_8012B23C(s32 a0); +extern void func_80184E9C(s32 a0, s32 a1, s32 a2); +extern void func_80183264(s32 a0); +extern u8 D_801901A8[]; +extern u8 D_801901B4[]; +extern u8 D_801901BC[]; +extern u8 D_801901C4[]; +extern u8 D_801901CC[]; +extern void func_801833D8(void *a0); +extern void func_80184E9C(); +extern void func_80183580(void *arg0); +extern s32 D_801900F8[]; +extern s32 D_80190138[]; +extern s32 D_80190190[]; +extern void (*D_801901D4[])(void *); +extern void func_80183728(void *arg0); +extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); +extern s32 D_8018BD04; +extern s32 D_8019024C; +extern void func_801838B0(s32 a0); +extern void (*D_8019025C[])(void); +extern void func_80183A38(void *a0); +extern void (*D_801902C0[])(void); +extern void func_80183DC8(void *a0); +extern u8 D_8018F968[]; +extern u32 D_801902C8[]; +extern u8 D_801902D4[]; +extern u8 D_801902D5[]; +extern u8 D_801902D6[]; +extern u8 D_801902D7[]; +extern u8 D_801902E4[]; +extern u8 D_801902E5[]; +extern u8 D_801902E6[]; +extern u8 D_801902E7[]; +extern u8 D_801902F4[]; +extern u8 D_801902F5[]; +extern u8 D_801902F6[]; +extern u8 D_801902F7[]; +extern void func_80183E04(void *a0); +extern void func_80184228(void); +extern u8 D_80190314[]; +extern u8 D_8019031C[]; +extern void (*D_80190370[])(void *); +extern void func_80184230(void *arg0); +extern void func_801439FC(s32 a0); +extern void func_8018430C(s32 a0); +extern s32 func_80143994(s32 arg0, s32 arg1); +extern s32 func_801843D8(void *a0); +extern void func_801843FC(s32 param_1); +extern void func_8018449C(s32 param_1); +extern void (*D_80190400[])(void); +extern void func_80184524(void *a0); +extern void func_80184560(void); +extern void (*D_8019040C[])(void); +extern void func_80184568(void *a0); +extern void (*D_80190460[])(void *); +extern void func_80184A40(void *a0); +extern void func_80184B28(void *a0); +extern void (*D_801904A0[])(void); +extern void func_80184C54(void *a0); +extern void (*D_80190594[])(void); +extern void func_80184E00(void *a0); +extern void (*D_801905BC[])(); +extern void func_80184E3C(s32 param_1); +extern void func_80184FAC(s32 *a0); +extern u8 D_801905D8[]; +extern void func_80185028(void *a0); +extern void func_8018509C(void *arg0); +extern void (*D_8019066C[])(void); +extern void func_801854D8(void *a0); +extern void (*D_801906C8[])(void); +extern void func_80185514(void *a0); +extern void (*D_80190724[])(void); +extern void func_80185550(void *a0); +extern u16 D_80078E92; +extern void func_8018558C(s32 a0); +extern s32 D_801907B0[]; +extern void func_8018561C(s32 arg0); +extern void (*D_801907E4[])(void); +extern void func_801857AC(void *a0); +extern s32 D_80190884[]; +extern void func_801857F4(s32 arg0); +/* ==== end §8b carried decl layer ==== */ + + +extern u8 D_801D533C[]; +extern s32 D_80190834[]; + +void func_80185864(s32 arg0) { + s16 var; + s32 val; + s32 ptr; + + switch (*(s32 *)(*(s32 *)(arg0 + 0x64) + 0xE0)) { + case 0: + func_800183E0((s32)&D_801D533C); + break; + case 1: + var = *(u16 *)(arg0 + 0xFC); + func_800183E0(D_80190834[((s16)var >> 1) % 8]); + break; + case 2: + *(u16 *)(arg0 + 0xFC) = 0; + *(u16 *)(arg0 + 2) = 4; + break; + case 3: + *(u16 *)(arg0 + 0xFE) = 0xC3; + *(u16 *)(arg0 + 2) = 3; + *(u16 *)(arg0 + 0xFC) = 0; + break; + case 4: + *(u16 *)(arg0 + 0xFE) = 0xCB; + *(u16 *)(arg0 + 2) = 3; + *(u16 *)(arg0 + 0xFC) = 0; + break; + case 5: + *(u16 *)(arg0 + 0xFE) = 0xC5; + *(u16 *)(arg0 + 2) = 3; + *(u16 *)(arg0 + 0xFC) = 0; + break; + case 6: + ptr = *(s32 *)(arg0 + 0x20); + val = *(s16 *)(ptr + 0x18); + *(s16 *)(ptr + 0x18) = -val; + *(s32 *)(arg0 + 0x1C) = 0x20; + *(u16 *)(arg0 + 2) = 6; + break; + case 7: + case 8: + *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xE0) = 0; + break; + } +} + + +extern void (*D_801908A8[])(void); + +void func_80185984(void *a0) { + *(u16 *)((s32)a0 + 0xFC) = (*(u16 *)((s32)a0 + 0xFC) + 1) & 0xFFF; + D_801908A8[*(u16 *)((s32)a0 + 2)](); +} + + +extern void func_800183E0(s32 a0); +extern s32 D_80190948[]; + +void func_801859CC(s32 arg0) { + u16 var; + + var = *(u16 *)(arg0 + 0xFC); + var = var + 1; + *(u16 *)(arg0 + 0xFC) = var; + if ((s16)var < 9) { + func_800183E0(D_80190948[(s16)var >> 1]); + } else { + *(s16 *)(arg0 + 2) = 2; + *(u8 *)(arg0 + 0xC1) = 0; + *(u16 *)(arg0 + 0x5C) = 0x8000; + } +} + + +extern void func_800183E0(s32 a0); +extern u8 D_801E08BC[]; +extern u8 D_801908F8[]; + +void func_80185A3C(s32 arg0) { + s32 v1; + s32 t; + + switch (*(s32 *)(*(s32 *)(arg0 + 0x64) + 0xE4)) { + case 0: + func_800183E0((s32)D_801E08BC); + break; + case 1: + v1 = ((s32)*(u16 *)(arg0 + 0xFC) << 16) >> 17; + t = v1; + if (t < 0) { + t += 7; + } + func_800183E0(*(s32 *)((u8 *)D_801908F8 + (((v1 - (t >> 3 << 3)) << 16) >> 14))); + break; + case 2: + *(u16 *)(arg0 + 0xFC) = 0; + *(u16 *)(arg0 + 2) = 4; + break; + case 3: + *(u16 *)(arg0 + 0xFE) = 0xC3; + *(u16 *)(arg0 + 2) = 3; + *(u16 *)(arg0 + 0xFC) = 0; + break; + case 4: + *(u16 *)(arg0 + 0xFE) = 0xCB; + *(u16 *)(arg0 + 2) = 3; + *(u16 *)(arg0 + 0xFC) = 0; + break; + case 5: + *(u16 *)(arg0 + 0xFE) = 0xC5; + *(u16 *)(arg0 + 2) = 3; + *(u16 *)(arg0 + 0xFC) = 0; + break; + case 6: + v1 = *(s32 *)(arg0 + 0x20); + t = -*(s16 *)(v1 + 0x18); + *(s16 *)(v1 + 0x18) = t; + *(s32 *)(arg0 + 0x1C) = 0x20; + *(u16 *)(arg0 + 2) = 6; + break; + case 7: + case 8: + *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xE4) = 0; + break; + } +} + + +extern void (*D_8019096C[])(void); + +void func_80185B5C(void *a0) { + *(u16 *)((s32)a0 + 0xFC) = (*(u16 *)((s32)a0 + 0xFC) + 1) & 0xFFF; + D_8019096C[*(u16 *)((s32)a0 + 2)](); +} + + +#include "common.h" + +extern void func_800183E0(s32 a0); +extern void (*D_80190A0C[])(void *); + +void func_80185BA4(s32 arg0) { + u16 var; + + var = *(u16 *)(arg0 + 0xFC); + var = var + 1; + *(u16 *)(arg0 + 0xFC) = var; + if ((s16)var < 9) { + func_800183E0((s32)D_80190A0C[(s16)var >> 1]); + } else { + *(s16 *)(arg0 + 2) = 2; + *(u8 *)(arg0 + 0xC1) = 0; + *(u16 *)(arg0 + 0x5C) = 0x8000; + } +} diff --git a/src/ov_SC03_028/ov_SC03_028_jr_80185C14.c b/src/ov_SC03_028/ov_SC03_028_jr_80185C14.c new file mode 100644 index 000000000..80ee44f45 --- /dev/null +++ b/src/ov_SC03_028/ov_SC03_028_jr_80185C14.c @@ -0,0 +1,4851 @@ +#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 { + 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; } PrimDF98; +typedef struct { u8 *vtx; u32 f4; u32 xx, yy, zz; PrimDF98 *prim, *end; } CellDF98; +typedef struct { s16 vx, vy; } DVEC2_DF98; +typedef struct { s16 vx, vy, vz, pad; } SVEC2_DF98; +typedef struct { s16 m[3][3]; s32 t[3]; } MTX_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2; } PF3_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_DF98; +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_DF98; +typedef struct { + u16 f0; + u16 f2; + u16 f4; + u16 f6; + u16 f8; + u16 fA; + s32 fC; + s32 f10; + s32 f14; + s32 f18; +} SubRec_801EB5C8; /* 0x1C */ +typedef struct { + u16 g0; + u16 g2; + s32 g4; + s32 g8; + s32 gC; + SubRec_801EB5C8 subs[16]; +} GroupRec_801EB5C8; /* 0x1D0 */ +typedef struct { u16 x, y, z, w; } __attribute__((aligned(2))) V; +typedef struct { s16 vx, vy, vz, pad; } SV_80182494; +typedef struct { + u8 pad_0[0xCC]; + void *arr[4]; +} D_801EC450_t; +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_8018DF10; +extern u8 D_8018DE80; +extern u8 D_8018DE5C; +extern u8 D_8018DE38; +extern u8 D_8018DEEC; +extern u8 D_8018DEC8; +extern u8 D_8018DEA4; +extern u8 D_8018DE14; +extern void func_80145934(void); +extern u8 D_8018DFA0; +extern u8 D_8018DF7C; +extern u8 D_8018DF58; +extern u8 D_8018DF34; +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 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_8018D398[]; +extern unsigned char D_8018D3C8[]; +extern unsigned char D_8018D418[]; +extern unsigned char D_8018D448[]; +extern unsigned char D_8018D478[]; +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_8018D4C8[])(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 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 u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D590[]; +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 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_8018D618[]; +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_8018D620; +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_801EA340; +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_801EA344; +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_8018D650; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +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_8018D6F8[])(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_8018D71C[])(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_8018D70C; +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_8018D730[])(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_8018D73C[]; +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_8018D74C[])(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_8018D764[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D754; +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_8018D778[])(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_8018D794[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D784; +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_8018D7A8[])(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_8018D7BC[])(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_8018D7D0; +extern void (*D_8018D7F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D7D8; +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_8018D844[])(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_8018D848[])(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_8018DCAC[]; +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_8018DCBC[])(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_801EA378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DCE4[])(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_8018DCC4; +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_8018DCD4; +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_8018DD24[])(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_8018DD2C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DCF8; +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_8018DD38[])(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_8018DD08; +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_801EA380; +extern s32 D_801EA38C; +extern s32 D_801EA390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DD74[])(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_8018DD48[]; +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_801EA388; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018DFC4[])(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_8018DDE4[]; +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_8018E068[])(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_8018E1BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018DFD8; +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_8018E1C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018DFE8; +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_8018E008; +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_8018E1CC[])(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_8018E1F4[])(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_8018E200[])(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_8018E074[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018E2A4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018D388[]; +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_8018E2B8[]; +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_8018E2F4[]; +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_8018E33C; +extern u16 D_8018E33E; +extern u16 D_8018E340; +extern s32 D_8018E344; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018E34C; +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_8018E058; +extern void func_8015EE7C(s32 param_1); +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_8018E3D0[]; +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_8018E480[])(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_8018E4B0[]; +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_8018E514; +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_801EA398[]; +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_8018E538[])(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_801EA3F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018E580[])(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_8018E570; +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_801E99A4[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_8018E588[])(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_8018E5DC[])(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_8018E5A4; +extern s16 D_8018E5D8; +extern s16 D_8018E5D6; +extern s16 D_8018E5D4; +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_8018E5E8[])(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_801EA450; +extern u8 D_801EA451; +extern u8 D_801EA452; +extern u8 D_801EA453; +extern u8 D_801EA454; +extern u8 D_801EA455; +extern u8 D_801EA456; +extern u8 D_801EA457; +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_8018E5F8[])(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_801EA490; +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_8018E63C[])(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_8018E6B8[]; +extern s32 D_8018E6D8[]; +extern u8 D_8018E754[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018E774[]; +extern u8 D_8018E794[]; +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_8018E830[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E8AC[])(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_801E99B4; +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_8018E8B8[])(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_8018E8C0[])(void); +extern void func_801663FC(void *a0); +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_8018E988[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018E998[])(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_8018E9A8[])(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_8018E9B4[])(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_8018E914[]; +extern u8 D_8018E928[]; +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_8018E9CC[])(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_8018E9D4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018E9DC[])(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_8018E9E4[])(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_8018E9EC[])(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_8018E9F4[])(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_8018E9FC[])(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_8018EAB0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018EAB8[])(void); +extern void func_80169F00(void *a0); +extern char D_8018EA68[]; +extern char D_8018EA28[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018EAF0[])(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_8018EAFC[])(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_8018EB44[])(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_8018EBC0[])(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_801EA7B0; +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_8018EBB4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018EBF8[]; +extern unsigned short D_8018EC00[]; +extern unsigned short D_8018EC08[]; +extern unsigned char D_801EA7B8[]; +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_801EA7B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018EC10[])(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_801EA8EC; +extern M2C_UNK D_801EA8F0; +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_801EA878; +extern void (*D_8018EC40[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EA8F4[]; +extern u8 D_801EA8FC[]; +extern u8 D_801EA8AC[]; +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_8018EC48[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018EC64[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018EC6C[])(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_8018ECD4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EC78; +extern u8 D_8018EC84; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018ED08[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018ED10[])(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_8018ED64[])(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_8018ED98[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018ED88[]; +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_8018EDB4; +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_8018EE2C[])(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_8018EE34[])(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_8018EE3C[])(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_8018EE44[])(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_8018EE4C[])(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_8018EE54[])(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_8018EE60[])(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_8018EE6C[])(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_8018EE78[])(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_8018EE88[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018EE98[])(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_8018EEA0[])(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_8018EEA8[])(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_8018EEB0[])(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_8018EEB8[])(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_8018EEC0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018EEC8[])(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_8018EED0[])(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_8018EED8[])(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_8018EEE0[])(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_8018EEE8[])(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_8018EEF0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018EEF8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018EF00[])(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_8018EF08[])(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_8018EF10[])(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_8018EF18[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018EF20[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018EF28[])(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_8018EF30[])(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_8018EF38[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018EF40[])(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_8018EF48[])(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_8018EF8C[])(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_8018EF50; +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_8018EFBC[])(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_8018EFF8[])(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_80126954; +extern s32 D_80126950; +extern s32 D_8012695C; +extern s16 D_80126968; +extern s16 D_8012696A; +extern s16 D_8012696C; +extern s16 D_80126976; +extern s16 D_80126978; +extern s16 D_8012697A; +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_8018F050[])(); +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_8018F060[])(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_8018F068[])(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_8018F1D0[])(); +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_8018F1DC[])(); +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_801E9BFC; +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_801EC590; +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_801EB030; +extern short D_801EC604; +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_801EB45C; +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_801EB484; +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_801EB440; +extern s32 func_8017A3B0(void); +extern short D_801EB47C; +extern short D_801EB478; +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_801EC560; +extern s16 D_801EC562; +extern s16 D_801EC56C; +extern void func_8017AE2C(s32 param_1); +extern void func_8017B0E4(int param_1, int param_2); +extern s16 D_801EB444; +extern u16 D_801EB4C4; +extern u16 D_801EB4C6; +extern u16 D_801EB4C8; +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_801EB4BC; +extern s16 D_801EB4BE; +extern s16 D_801EB4C0; +extern s16 D_801EB4B4; +extern s16 D_801EB4B6; +extern s16 D_801EB4B8; +extern void func_8017B7A8(void); +extern s16 D_801EB4D4; +extern s16 D_801EB4D6; +extern s16 D_801EB4D8; +extern s16 D_801EB4DC; +extern s16 D_801EB4DE; +extern s16 D_801EB4E0; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801EB4CC; +extern short D_801EB4CE; +extern short D_801EB4D0; +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_801EB464; +extern SV4 D_801EB46C; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801EB48C[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_801EB488)(void); +extern void func_8017BD50(int param_1); +extern void (*D_8018F3B8[])(void); +extern void func_8017BE60(void *a0); +extern void func_8017BE9C(void); +extern void func_8017BEA4(void); +extern void func_8017BEAC(void); +extern void func_8017BEB4(void); +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2); +extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); +extern s32 func_8012C750(s32 a0); +extern s32 D_8018F3E8[]; +extern void func_8017BFBC(s32 a0, s32 a1); +extern void func_8017C010(s32 a0, s32 a1, s32 a2); +extern void func_8017C068(void); +extern void (*D_8018F418[])(void); +extern void func_8017C114(void *a0); +extern void func_8017C150(void *a0); +extern void func_800176F0(void *a0); +extern void func_8017C43C(void *a0); +extern void func_8012A828(s32 a0, void * a1); +extern void func_8012CAE4(void *a0); +extern s32 func_8012C354(s32 a0, s32 a1); +extern s32 func_80143970(s32 a0); +extern void func_8017C8D0(void *a0); +extern void func_8017D220(s32 a0, s16 a1, s16 a2); +extern void func_8017D294(s16 *a0); +extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8017CA6C(s32 a0); +extern void func_8012ADE4(u8 *a0); +extern void func_8012B200(u8 *a0); +extern s32 func_8012B864(s32 a0); +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern void func_8012BD14(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012CBA4(s32 a0); +extern void func_8017D370(s32 a0); +extern void func_8017CC70(s32 a0); +extern s32 func_8012E778(int param_1, int param_2); +extern s32 func_801439C0(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_8017D064(s32 a0); +extern void (*D_8018F6F4[])(void); +extern void func_8017D1E4(void *a0); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8017D584(s32 a0); +extern void func_8012CBCC(s32); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8017D658(s32 a0); +extern void func_8012C218(void*); +extern void func_8017D728(s32 a0); +extern s32 func_8012E778(s32 param_1, s32 param_2); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_8017D780(s32 a0); +extern void func_8017D878(s32 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_8017DC90(u16 *a0, void *a1); +extern int func_8017DD34(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_8017DF2C(s32 a0, s32 a1); +extern void func_8017DF98(s32 arg0); +extern void func_8017EE64(void *arg0); +extern void func_8017F04C(u8 *a0); +extern void (*D_8018F774[])(int); +extern void func_8017EE90(int param_1); +extern void (*D_8018F718[])(void); +extern s8 D_8018F724[]; +extern void func_8017EEDC(s32 param_1); +extern void func_8017EFA8(s32 param_1); +extern void (*D_8018F77C[])(void); +extern void func_8017F094(void *a0); +extern GroupRec_801EB5C8 D_801EB5C8[8]; +extern void func_8017F0D0(s32 param_1); +extern void func_8017F278(void *arg0); +extern s32 func_80017E30(void *a0, void *a1); +extern void func_80016ED4(void *a0); +extern SVECTOR_8017F40C D_8018F784[4]; +extern void func_8017F40C(s32 a0, s32 a1); +extern void (*D_8018F818[])(void); +extern void func_8017F6C4(void *a0); +extern void func_8017F8EC(void); +extern s32 func_8017F700(s32 a0); +extern s32 func_8017F744(void); +extern void (*D_8018F820[])(void); +extern void func_8017F768(void *a0); +extern void func_8017F914(void); +extern s32 func_8017F7A4(s32 a0); +extern void func_8001BFD0(void); +extern void func_800D1E28(void); +extern s32 func_8017F7E4(s32 a0); +extern s32 func_800D1EBC(void); +extern void func_8017F880(void); +extern void func_8017F8A0(s32 *a0); +extern M2C_UNK D_8018F834; +extern void func_8012A018(s32 a0, s32 a1); +extern void func_8012A094(s32 a0); +extern void func_8017FBA4(void*); +extern void func_8017F93C(void); +extern void func_8017FBA4(void *); +extern void func_8017F9D8(void); +extern void func_8017FA44(void); +extern void func_8017FABC(void); +extern s32 D_80126E60[]; +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A100(s8 a0); +extern void func_8017FADC(void); +extern void func_8017FB84(void); +extern void (*D_8018F860[])(void); +extern void func_8017FBA4(void *a0); +extern s16 D_80126940; +extern s16 D_80126942; +extern s16 D_80126944; +extern s32 func_800130D0(s32 a0, s32 a1, s32 a2); +extern void func_8017FF68(s32 param_1, s16 *param_2); +extern void func_8017FBE0(s32 param_1); +extern void func_8017FD64(s32 arg0); +extern s32 func_8012E544(s32 a0); +extern void func_8017FDC0(s32 param_1); +extern s32 func_80013294(void*, void*); +extern void func_8017FE18(s32 param_1); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern s16 D_8018FA14; +extern s32 D_801AE99C[]; +extern s32 D_801AE944[]; +extern s32 D_801AE8D4[]; +extern void func_80180120(s32 a0); +extern s32 D_801EC44C; +extern s32 func_801802B8(void); +extern s32 func_801802F4(s32 a0); +extern s32 D_800A651C; +extern u8 D_800AF648; +extern u8 D_8018F958[]; +extern u32 D_8018FF24[]; +extern u8 D_8018FF30[]; +extern u8 D_8018FF31[]; +extern u8 D_8018FF32[]; +extern u8 D_8018FF33[]; +extern u8 D_8018FF40[]; +extern u8 D_8018FF41[]; +extern u8 D_8018FF42[]; +extern u8 D_8018FF43[]; +extern u8 D_8018FF50[]; +extern u8 D_8018FF51[]; +extern u8 D_8018FF52[]; +extern u8 D_8018FF53[]; +extern void *func_80010A08(s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 AddPrim(s32, void *); +extern void func_80180494(void *a0); +extern s32 func_8012DE2C(s32 a0); +extern s32 func_8012DDA4(void); +extern s32 func_800133E4(s16 *a0, s16 *a1); +extern u8 D_8018F9A0[]; +extern void func_801808CC(s32 a0, s32 a1, s32 a2, s32 a3); +extern volatile s32 D_801EC44C; +extern s32 func_80180A08(s32 param_1, u16 param_2); +extern void func_80180AC4(s32 arg0, s32 arg1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_80181374(void *a0); +extern s32 func_8012BA10(s32 a0, s32 a1); +extern u8 D_801ADC24[]; +extern void func_80181414(void *a0); +extern void func_80181BD8(s32 a0); +extern s32 D_801AE6DC[]; +extern void func_80181D4C(s32 a0); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8012CBCC(s32 a0); +extern void func_80180B44(s32); +extern void func_8018305C(s32 a0); +extern u16 D_80126B96; +extern s32 D_801EC448; +extern u8 D_8018C134[]; +extern u8 D_8018F914[]; +extern s16 D_8018F9FC; +extern u8 D_801AE2C4[]; +extern u8 D_801AE3A4[]; +extern u8 D_801AE7CC[]; +extern void func_8018222C(s32 a0); +extern u8 D_801AE734[]; +extern s32 D_8018F8D4; +extern void func_80182494(void *a0); +extern void func_80182698(s32 a0); +extern s16 D_8018FA0C; +extern s16 D_8018FA0E; +extern s16 D_8018FA10; +extern s32 D_801EC450; +extern void func_80182780(s32 a0); +extern void func_80180B44(s32 a0); +extern void func_801828DC(s32 a0); +extern u8 D_801ADCEC[]; +extern s32 D_8018F9D8[]; +extern s32 D_8018F9DC[]; +extern s32 D_8018F9E0[]; +extern void func_801829F0(void *a0); +extern void func_80182C20(s32 a0); +extern s16 D_8018F9FE; +extern s16 D_8018FA00; +extern s32 D_8018FF60[]; +extern void func_80182E2C(void *a0); +extern void (*D_80190068[])(void); +extern void func_80183020(void *a0); +extern void func_801830B0(s32 a0); +extern void func_8012C218(void *a0); +extern MatEntry D_80190078[]; +extern void func_80183104(s32 param_1); +extern void (*D_801900B8[])(void); +extern void func_80183228(void *a0); +extern void func_8012B23C(s32 a0); +extern void func_80184E9C(s32 a0, s32 a1, s32 a2); +extern void func_80183264(s32 a0); +extern u8 D_801901A8[]; +extern u8 D_801901B4[]; +extern u8 D_801901BC[]; +extern u8 D_801901C4[]; +extern u8 D_801901CC[]; +extern void func_801833D8(void *a0); +extern void func_80184E9C(); +extern void func_80183580(void *arg0); +extern s32 D_801900F8[]; +extern s32 D_80190138[]; +extern s32 D_80190190[]; +extern void (*D_801901D4[])(void *); +extern void func_80183728(void *arg0); +extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); +extern s32 D_8018BD04; +extern s32 D_8019024C; +extern void func_801838B0(s32 a0); +extern void (*D_8019025C[])(void); +extern void func_80183A38(void *a0); +extern void (*D_801902C0[])(void); +extern void func_80183DC8(void *a0); +extern u8 D_8018F968[]; +extern u32 D_801902C8[]; +extern u8 D_801902D4[]; +extern u8 D_801902D5[]; +extern u8 D_801902D6[]; +extern u8 D_801902D7[]; +extern u8 D_801902E4[]; +extern u8 D_801902E5[]; +extern u8 D_801902E6[]; +extern u8 D_801902E7[]; +extern u8 D_801902F4[]; +extern u8 D_801902F5[]; +extern u8 D_801902F6[]; +extern u8 D_801902F7[]; +extern void func_80183E04(void *a0); +extern void func_80184228(void); +extern u8 D_80190314[]; +extern u8 D_8019031C[]; +extern void (*D_80190370[])(void *); +extern void func_80184230(void *arg0); +extern void func_801439FC(s32 a0); +extern void func_8018430C(s32 a0); +extern s32 func_80143994(s32 arg0, s32 arg1); +extern s32 func_801843D8(void *a0); +extern void func_801843FC(s32 param_1); +extern void func_8018449C(s32 param_1); +extern void (*D_80190400[])(void); +extern void func_80184524(void *a0); +extern void func_80184560(void); +extern void (*D_8019040C[])(void); +extern void func_80184568(void *a0); +extern void (*D_80190460[])(void *); +extern void func_80184A40(void *a0); +extern void func_80184B28(void *a0); +extern void (*D_801904A0[])(void); +extern void func_80184C54(void *a0); +extern void (*D_80190594[])(void); +extern void func_80184E00(void *a0); +extern void (*D_801905BC[])(); +extern void func_80184E3C(s32 param_1); +extern void func_80184FAC(s32 *a0); +extern u8 D_801905D8[]; +extern void func_80185028(void *a0); +extern void func_8018509C(void *arg0); +extern void (*D_8019066C[])(void); +extern void func_801854D8(void *a0); +extern void (*D_801906C8[])(void); +extern void func_80185514(void *a0); +extern void (*D_80190724[])(void); +extern void func_80185550(void *a0); +extern u16 D_80078E92; +extern void func_8018558C(s32 a0); +extern s32 D_801907B0[]; +extern void func_8018561C(s32 arg0); +extern void (*D_801907E4[])(void); +extern void func_801857AC(void *a0); +extern s32 D_80190884[]; +extern void func_801857F4(s32 arg0); +extern u8 D_801D533C[]; +extern s32 D_80190834[]; +extern void func_80185864(s32 arg0); +extern void (*D_801908A8[])(void); +extern void func_80185984(void *a0); +extern s32 D_80190948[]; +extern void func_801859CC(s32 arg0); +extern void (*D_8019096C[])(void); +extern void func_80185B5C(void *a0); +extern void (*D_80190A0C[])(void *); +extern void func_80185BA4(s32 arg0); +/* ==== end §8b carried decl layer ==== */ + + +extern void func_800183E0(s32 a0); +extern u8 D_801DADFC[]; +extern void (*D_801909BC[])(void); + +void func_80185C14(s32 arg0) { + s16 idx; + u16 h; + + switch (*(s32 *)(*(s32 *)(arg0 + 0x64) + 0xE8)) { + case 0: + func_800183E0((s32)D_801DADFC); + break; + case 1: + h = *(u16 *)(arg0 + 0xFC); + idx = ((h << 16) >> 17) % 8; + func_800183E0((s32)D_801909BC[idx]); + break; + case 2: + *(u16 *)(arg0 + 0xFC) = 0; + *(u16 *)(arg0 + 2) = 4; + break; + case 3: + *(u16 *)(arg0 + 0xFE) = 0xC3; + *(u16 *)(arg0 + 2) = 3; + *(u16 *)(arg0 + 0xFC) = 0; + break; + case 4: + *(u16 *)(arg0 + 0xFE) = 0xCB; + *(u16 *)(arg0 + 2) = 3; + *(u16 *)(arg0 + 0xFC) = 0; + break; + case 5: + *(u16 *)(arg0 + 0xFE) = 0xC5; + *(u16 *)(arg0 + 2) = 3; + *(u16 *)(arg0 + 0xFC) = 0; + break; + case 6: { + s32 ent = *(s32 *)(arg0 + 0x20); + s32 ang = *(s16 *)(ent + 0x18); + *(s16 *)(ent + 0x18) = -ang; + *(s32 *)(arg0 + 0x1C) = 0x20; + *(u16 *)(arg0 + 2) = 6; + break; + } + case 7: + case 8: + *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xE8) = 0; + break; + } +} + + +extern void (*D_80190A30[])(void); + +void func_80185D34(void *a0) { + *(u16 *)((s32)a0 + 0xFC) = (*(u16 *)((s32)a0 + 0xFC) + 1) & 0xFFF; + D_80190A30[*(u16 *)((s32)a0 + 2)](); +} + + +#include "common.h" + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B23C(s32 a0); +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern void func_8012B2CC(s32 a0); +extern void func_8012B1B4(s32 a0, s32 a1); + +extern s32 D_80190A4C; +extern s32 D_80190ADC; +extern s32 D_80190B44; + +void func_80185D7C(s32 arg0) { + s32 v0; + s32 v1; + + *(s32 *)(arg0 + 0x20) = ((s32 (*)(void))func_8012C1B8)(); + if (*(s32 *)(arg0 + 0x20) == 0) { + ((void (*)(s32))func_8012CAE4)(arg0); + } else { + ((void (*)(s32, s32))func_8001CA1C)(*(s32 *)(arg0 + 0x20), (s32)&D_80190A4C); + func_8012A828(arg0, (void *)&D_80190ADC); + *(s16 *)(arg0 + 0x2) = 1; + func_8012B23C(arg0); + + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(arg0 + 0x70) & 0xFFF; + + *(s32 *)(arg0 + 0x4) -= + func_8004787C(*(s16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12)) * 640; + + v0 = func_80047948(*(s16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12)); + *(s32 *)(arg0 + 0x1C) = 0x96; + *(s32 *)(arg0 + 0xC) -= v0 * 640; + func_8012B2CC(arg0); + + ((void (*)(s32, s32))func_8012B1B4)(arg0, (s32)&D_80190B44); + + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x18) = 0x3000; + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x1A) = 0x3000; + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x1C) = 0x3000; + + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x2C) |= 0x10; + + *(s32 *)(*(s32 *)(arg0 + 0x20) + 0x4) |= 0x50000000; + } +} + + +#include "common.h" + +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012C218(void *a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8012CBCC(s32 a0); +extern void func_8012B2CC(s32 a0); +extern void func_8012B1B4(s32 a0, s32 a1); +extern s32 func_8012D624(s32 a0, s32 a1, s32 a2); +extern u16 D_80126B96; +extern s32 D_80190B44; + +void func_80185ED4(s32 a0) { + s32 cnt; + + cnt = *(s32 *)(a0 + 0x1C) - 1; + *(s32 *)(a0 + 0x1C) = cnt; + if (cnt == 0) { + s32 i; + + for (i = 0x100; i < 0xF00; i += 0x200) { + func_8012C658(0x142, i, a0); + } + func_8012C218((void *)a0); + func_8002D4C8(0x629, 0); + } else if (func_8012D624(a0, 0x30, 0xA) == 1) { + D_80126B96 = 0x4015; + func_8012C218((void *)a0); + } else { + register s32 s0 __asm__("$16"); + register s32 p20 __asm__("$2"); + s16 val; + s32 rnd; + + s0 = ((s32 (*)(s32))func_8012CBCC)(a0); + if ((s0 & 0x6000) != 0) { + *(s16 *)(a0 + 0x16) = -8; + } + { + register s32 mask8000 __asm__("$2"); + mask8000 = s0 & 0x8000; + if (mask8000 != 0) { + p20 = *(s32 *)(a0 + 0x20); + val = *(s16 *)(p20 + 0x12); + func_8012C658(0x142, val, a0); + p20 = *(s32 *)(a0 + 0x20); + val = *(s16 *)(p20 + 0x12); + func_8012C658(0x142, val, a0); + p20 = *(s32 *)(a0 + 0x20); + val = *(s16 *)(p20 + 0x12); + func_8012C658(0x142, val, a0); + rnd = rand(); + { + register s32 p20b __asm__("$5"); + + p20b = *(s32 *)(a0 + 0x20); + *(u16 *)(p20b + 0x12) = *(u16 *)(p20b + 0x12) + 0x600; + *(u16 *)(p20b + 0x12) = *(u16 *)(p20b + 0x12) + (rnd & 0x3FF); + } + func_8012B2CC(a0); + func_8012B1B4(a0, (s32)&(*(u8 *)&D_80190B44)); + func_8002D4C8(0x628, 0); + } + } + if (*(s16 *)(a0 + 0xA) >= 0x200) { + func_8012C218((void *)a0); + } + } +} + + + +extern void (*D_80190B50[])(void); + +void func_80186044(void *a0) { + D_80190B50[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80190BE4[])(void); + +void func_80186080(void *a0) { + D_80190BE4[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_80190BEC[])(void); + +void func_801860BC(void *a0) { + D_80190BEC[*(u16 *)((s32)a0 + 0x2)](); +} + + + +// @stuck: none — MATCH (42 ins), iteration 1, rtu_match clean. +// Saturating add of a 3-byte RGB triple by a signed delta. +// Idioms: (1) `s8` by-value param => entry `sll/sra 24` for the sign test only; +// combine folds the extension back out of `~a1`/`-a1`/`a0[i]+a1` because every +// consumer is 8-bit (andi 0xFF / sb), so $a1 is used RAW after the test. +// (2) branch sense read off the target `sltu` operand ORDER (§3-T4): positive arm +// `sltu lim,p[i]` => store when `p[i] <= lim`; negative arm `sltu p[i],lim` +// => store when `p[i] >= lim`. +// (3) the third `if` written out in BOTH arms; jump.c cross-jumps the identical +// tails into the shared `j .L8018C344` (§5a) — do not hoist it after the if/else. +void func_801860F8(u8 *a0, s8 a1) { + u8 lim; + + if (a1 == 0) { + return; + } + if (a1 > 0) { + lim = ~a1; + if (a0[0] <= lim) { + a0[0] = a0[0] + a1; + } + if (a0[1] <= lim) { + a0[1] = a0[1] + a1; + } + if (a0[2] <= lim) { + a0[2] = a0[2] + a1; + } + } else { + lim = -a1; + if (a0[0] >= lim) { + a0[0] = a0[0] + a1; + } + if (a0[1] >= lim) { + a0[1] = a0[1] + a1; + } + if (a0[2] >= lim) { + a0[2] = a0[2] + a1; + } + } +} + + + +extern void (*D_80190BF4[])(void); + +void func_801861A0(void *a0) { + D_80190BF4[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8012AD44(s32 *a0, s16 a1); + +void func_801861DC(s32 *a0) { + s32 *v0; + + v0 = *(s32 **)(((u8 *)a0) + 0x20); + *(s16 *)(((u8 *)v0) + 0x1C) = 0; + *(s16 *)(((u8 *)v0) + 0x1A) = 0; + *(s16 *)(((u8 *)v0) + 0x18) = 0; + func_8012AD44(a0, 1); +} + + +extern void func_8012AD44(s32 *a0, s16 a1); + void func_8018620C(u8 *a0) { + *(s8 *)(a0 + 0xFC) = 0x8; + ((void (*)(s32, s32))func_8012AD44)((s32)a0, 0x2); + } + + +extern s32 func_8012E504(s32 a0, s32 a1); +extern volatile s32 D_801EC450; + +void func_80186234(void *arg0) { + s32 s0; + s32 v0; + s32 *p; + + s0 = (s32)arg0; + func_8012AD44((s32 *)s0, 3); + v0 = *(s32 *)(s0 + 0x64); + p = *(s32 **)(v0 + 0x20); + *(volatile s32 *)(p + 1) &= 0x7FFFFFFF; + *(s16 *)((s32)D_801EC450 + 0x02) = 0x7; + *(s16 *)((s32)D_801EC450 + 0x06) = 0x180; + *(s16 *)((s32)D_801EC450 + 0x0A) = -0x1C8; + *(s16 *)((s32)D_801EC450 + 0x0E) = 0x3C0; + *(s16 *)((s32)D_801EC450 + 0x100) = 0x1; + *(s32 *)((s32)D_801EC450 + 0xF8) = 0xB; + while ((v0 = func_8012E504(s0, 0xC3)) != 0) { + func_8012C218((void *)v0); + } + while ((v0 = func_8012E504(s0, 0xCB)) != 0) { + func_8012C218((void *)v0); + } + func_8018ADD0(); +} + + +extern void (*D_80190BFC[])(void); + +void func_8018632C(void *a0) { + D_80190BFC[*(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_8001D0E8(s32 arg0, s32 arg1, s32 arg2); +extern void func_8002D4C8(s32 a0, s32 a1); + +extern u8 D_80190C1C[]; +extern u8 D_80190C68[]; +extern u8 *D_801E6214; + +void func_80186368(void *a0) { + s32 v1; + register u8 **abase __asm__("$4"); + u8 *p; + s16 *q; + register u8 bval __asm__("$3"); + s16 hval; + + if (func_8012C354((s32)a0, (s32)D_80190C1C) == 0) { + return; + } + v1 = *(s32 *)((s32)a0 + 0x20); + *(s32 *)(v1 + 0x4) |= 0x8040; + *(s16 *)((s32)a0 + 0x2) = 1; + *(s16 *)((s32)a0 + 0xAE) = -1; + *(s8 *)((s32)a0 + 0x75) = 0x8; + func_8012A828((s32)a0, D_80190C68); + func_8001D0E8(*(s32 *)((s32)a0 + 0x20), 0x280, 0x1E0); + func_8002D4C8(0xB21, 0); + + abase = &D_801E6214; + bval = 0x45; + p = *abase + 0x2D; asm("" : "=r"(p) : "0"(p)); + *p = 0; + p += 4; asm("" : "=r"(p) : "0"(p)); + *p = 0; + p += 4; asm("" : "=r"(p) : "0"(p)); + *p = 0; + p += 4; asm("" : "=r"(p) : "0"(p)); + *p = 0; + p += 0x14; asm("" : "=r"(p) : "0"(p)); + *p = bval; + p += 4; asm("" : "=r"(p) : "0"(p)); + *p = bval; + p += 4; asm("" : "=r"(p) : "0"(p)); + *p = bval; + p += 4; asm("" : "=r"(p) : "0"(p)); + *p = bval; + p += 0x14; asm("" : "=r"(p) : "0"(p)); + bval = 0xA1; + *p = bval; + p += 4; asm("" : "=r"(p) : "0"(p)); + *p = bval; + p += 4; asm("" : "=r"(p) : "0"(p)); + *p = bval; + p[4] = bval; + + hval = -0x360; + q = (s16 *)(*abase + 0xEA); asm("" : "=r"(q) : "0"(q)); + *q = hval; + q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); + *q = hval; + q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); + *q = hval; + q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); + *q = hval; + q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); + *q = hval; + q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); + *q = hval; + q = (s16 *)((u8 *)q + 8); asm("" : "=r"(q) : "0"(q)); + *q = hval; + *(s16 *)((u8 *)q + 8) = hval; +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80185C14", func_801864A8); + + +extern void (*D_80190C78[])(void); + +void func_80186754(void *a0) { + D_80190C78[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_80029124(s32 arg0, s32 arg1); + void func_80186790(void) { + func_80029124(0x8A, 1); + func_80029124(0xF3, 1); + } + + +extern void func_80180AC4(s32 arg0, s32 arg1); + void func_801867C0(s32 arg0) { + func_80180AC4(arg0, 0x14400); + } + + +extern void (*D_8018FEB0)(); +extern void func_8012B14C(s32 a0, s32 a1); + +void func_801867E4(s32 a0) { + *(s32 *)(a0 + 0xB4) = 0x8; + *(u8 *)(a0 + 0xC2) = 0; + *(u8 *)(a0 + 0xC3) = 0; + *(u16 *)(a0 + 0x98) = 0; + func_8012B14C(a0, (s32)&D_8018FEB0); + *(u16 *)(a0 + 0x5C) &= ~1; + *(s32 *)(a0 + 0x1C) = 0; +} + + +extern void func_8012B14C(s32 a0, s32 a1); +extern void (*D_8018FEBC)(); + +void func_80186838(s32 a0) { + *(s32 *)(a0 + 0xB4) = 0x80; + *(u8 *)(a0 + 0xC2) = 0; + *(u8 *)(a0 + 0xC3) = 0; + *(u16 *)(a0 + 0x98) = 0; + func_8012B14C(a0, (s32)&D_8018FEBC); + *(u16 *)(a0 + 0x5C) &= ~1; + *(s32 *)(a0 + 0x1C) = 0; +} + + +void func_8018688C(void *a0) { + *(s32 *)((s32)a0 + 0xb4) = 0; + } + + +#include "common.h" + +extern s32 func_80029504(void); +extern void func_8012CAE4(void *a0); +extern s32 func_8012C354(s32 a0, s32 a1); +extern s32 func_801843D8(void *a0); +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_8012C51C(void *a0, s32 a1); +extern void func_8018ADA0(void); + +extern u8 D_8018F924[]; +extern u8 D_8018FEC8[]; +extern s32 D_8018F9D8[]; +extern s32 D_8018F9DC[]; +extern s32 D_8018F9E0[]; +extern s16 D_8018F9FC; +extern u8 D_8018F870[]; +extern u8 D_801ADCEC[]; +extern s32 D_801EC448; +extern s32 D_801EC44C; +extern s32 D_801EC450; + +void func_80186894(void *a0) +{ + s32 v1; + s32 p; + u16 t; + s32 v0; + + if ((u32)func_80029504() >= 0xC8) { + func_8012CAE4(a0); + return; + } + + if (func_8012C354((s32)a0, (s32)D_8018F924) == 0) { + return; + } + + v1 = *(s32 *)((s32)a0 + 0xC4); + *(u8 *)((s32)a0 + 0xC0) = 1; + *(s32 *)((s32)a0 + 0xBC) = (s32)D_8018FEC8; + *(s32 *)((s32)a0 + 0xB4) = 0; + *(s16 *)((s32)a0 + 0xAE) = -1; + *(u8 *)((s32)a0 + 0x75) = 0; + v1 |= 2; + *(s32 *)((s32)a0 + 0xC4) = v1; + v0 = func_801843D8(a0); + *(s32 *)((s32)a0 + 0xCC) = v0; + *(s16 *)((s32)a0 + 0x2) = 0x27; + *(s32 *)((s32)a0 + 0x10) = D_8018F9D8[0]; + *(s32 *)((s32)a0 + 0x14) = D_8018F9DC[0]; + *(s32 *)((s32)a0 + 0x18) = D_8018F9E0[0]; + func_8012A828((s32)a0, D_801ADCEC); + + p = *(s32 *)((s32)a0 + 0x20); + t = *(u16 *)(p + 0x2C); + D_801EC448 = 0x10; + *(u16 *)(p + 0x2C) = t | 0x80; + *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x80) = (s32)((u8 *)&D_8018F9FC); + D_801EC44C = (s32)a0; + D_801EC450 = func_8012C51C(D_8018F870, (s32)a0); + func_8018ADA0(); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80185C14", func_801869C0); + +void func_80186A00(s32 a0) { + extern s32 func_8012B8E4(s32 a0, s32 a1); + extern void func_8012B2CC(s32 a0); + extern void func_8012B1B4(s32 a0, s32 a1); + extern void func_8012A828(s32 a0, void *a1); + extern void (*D_8018F9B4)(void *); + extern u8 D_801ADCEC[]; + + s32 v0; + s32 p; + + v0 = func_8012B8E4(a0, 4); + p = *(s32 *)(a0 + 0x20); + *(u16 *)(p + 0x12) += v0; + if (--*(s32 *)(a0 + 0x1C) == 0) { + func_8012B2CC(a0); + *(s16 *)(a0 + 2) = 0xB; + func_8012B1B4(a0, (s32)&D_8018F9B4); + func_8012A828(a0, D_801ADCEC); + } +} + + +extern void func_8012CBCC(s32 a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8002D4C8(s32 a0, s32 a1); +extern u8 D_801AE46C[]; +extern s32 D_801AE874[]; + +void func_80186A88(s32 a0) { + register s32 s0 __asm__("$16"); + s32 v0; + + s0 = a0; + v0 = ((s32 (*)(s32))func_8012CBCC)(a0); + if ((v0 & 0x8000) != 0) { + *(s16 *)(s0 + 0x2) = 0x11; + func_8012A828(s0, D_801AE46C); + func_8002D4C8(0x640, 0); + } else if (((*(u16 *)(s0 + 0x72)) & 0x4000) != 0) { + *(s16 *)(s0 + 0x2) = 0x10; + func_8012A828(s0, ((u8 *)D_801AE874)); + } +} + + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012CBCC(s32 a0); + +extern u8 D_801ADC24[]; +extern u8 D_801AE46C[]; +extern s32 D_8018F8D4; + +void func_80186B0C(void *a0) { + s32 v1 = ((s32 (*)(s32))func_8012CBCC)(a0); + s32 s0 = (s32)a0; + + if ((v1 & 0x2000) != 0) { + *(s16 *)(s0 + 0x2) = 5; + func_8012A828(s0, D_801ADC24); + { + s32 tag = (s32)&D_8018F8D4; + tag |= 0x40000000; + tag |= 0x20000000; + *(s32 *)(s0 + 0x58) = tag; + } + *(s32 *)(s0 + 0x1C) = 1; + } else if ((v1 & 0x8000) != 0) { + *(s16 *)(s0 + 0x2) = 0x11; + func_8012A828(s0, D_801AE46C); + func_8002D4C8(0x640, 0); + } +} + + +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_8014CB2C(void); +extern s32 D_801AE9C4[]; +extern s32 D_801AE99C[]; + +void func_80186BAC(s32 param_1) +{ + if (*(u16 *)(param_1 + 0x72) & 0x4000) { + func_8012A828(param_1, D_801AE9C4); + *(s32 *)(param_1 + 0x1C) = 1; + *(u16 *)(param_1 + 2) = 0x13; + } + if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { + func_8012A828(param_1, D_801AE99C); + *(u16 *)(param_1 + 2) = 0x1B; + *(s32 *)(param_1 + 0x1C) = 0; + *(s16 *)(param_1 + 0x12) = -*(s16 *)(param_1 + 6) >> 6; + *(s16 *)(param_1 + 0x16) = -0x10; + *(s16 *)(param_1 + 0x1A) = (0x3C0 - *(s16 *)(param_1 + 0xE)) >> 6; + *(s16 *)(param_1 + 0xFC) = (-*(s16 *)(param_1 + 0xA) - 0x40) / 5; + } +} + + +#include "common.h" + +extern void func_8012A828(s32 a0, void *a1); +extern s32 D_801AE874[]; + +void func_80186C98(s32 param_1) { + s32 v1; + + v1 = *(s32 *)(param_1 + 0x1C) - 0x100; + *(s32 *)(param_1 + 0x1C) = v1; + if (v1 >= 0xD01) { + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1C) = v1; + return; + } + func_8012A828(param_1, D_801AE874); + v1 = *(s32 *)(param_1 + 0x20); + *(s16 *)(param_1 + 2) = 0x15; + *(u16 *)(v1 + 0x2C) &= 0xFFEF; +} + + +#include "common.h" + +extern void func_8012CBCC(s32 a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8002D4C8(s32 a0, s32 a1); + +extern u8 D_801AE46C[]; + +void func_80186D0C(void *a0) +{ + if (((s32 (*)(s32))func_8012CBCC)(a0) & 0x8000) { + *(s16 *)((s32)a0 + 0x2) = 0x11; + func_8012A828(a0, D_801AE46C); + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = *(u16 *)((s32)a0 + 0xFC); + func_8002D4C8(0x640, 0); + } + + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) += 0x48; +} + + +#include "common.h" + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012C218(void *a0); +extern void func_8017F93C(void); +extern void func_8017BFBC(s32 a0, s32 a1); +extern void func_80180494(); +extern u8 D_8018F924[]; +extern u8 D_801AE3A4[]; +extern s32 D_801EC448; + +void func_80186D84(void *a0) { + register s32 v0 __asm__("$2"); + register s32 v1 __asm__("$3"); + + v0 = *(s32 *)((s32)a0 + 0x1C); + if (v0 != 0) { + v0 = v0 - 1; + *(s32 *)((s32)a0 + 0x1C) = v0; + if (v0 != 0) { + goto tail; + } + } + + v0 = *(s16 *)((s32)a0 + 0x76); + if (v0 > 0) { + func_8017F93C(); + *(u16 *)((s32)a0 + 0x5C) &= 0xFDFF; + func_8017BFBC((s32)a0 + 0x76, (s32)D_8018F924); + func_8012A828((s32)a0, D_801AE3A4); + *(s16 *)((s32)a0 + 0x2) = 0x1E; + if (*(s32 *)((s32)a0 + 0x6C) != 0) { + func_8012C218((void *)(*(s32 *)((s32)a0 + 0x6C))); + } + func_8002D4C8(0x59A, 0); + v1 = *(s16 *)((s32)a0 + 0x76); + v0 = (v1 < 0x28); + if (v0 == 0) { + v0 = 0x10; + } else { + v0 = (v1 < 0x29); + if (v0 == 0) { + v0 = 0x18; + } else { + v0 = 0x20; + } + } + D_801EC448 = v0; + } +tail: + func_80180494((s32)a0); +} + + +#include "common.h" + +extern void func_8012A828(s32 a0, void *a1); +extern u8 D_801ADC24[]; +extern s32 D_8018F8D4; +extern s16 D_8018FA14; + +void func_80186E60(void *a0) { + if (*(s32 *)((s32)a0 + 0x94) == 0x10) { + { + s32 tag = (s32)&D_8018F8D4; + tag |= 0x40000000; + tag |= 0x20000000; + *(s32 *)((s32)a0 + 0x58) = tag; + } + } + + if ((*(u16 *)((s32)a0 + 0x72) & 0x4000) != 0) { + *(s16 *)((s32)a0 + 0x2) = 5; + func_8012A828((s32)a0, D_801ADC24); + *(s32 *)((s32)a0 + 0x1C) = 1; + D_8018FA14 = 0x80; + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) |= 0x80; + *(s16 *)((s32)a0 + 0xAC) = 0; + } +} + + +#include "common.h" + +extern void func_8012CBCC(s32 a0); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8012A828(s32 a0, void *a1); + +extern u8 D_801AE89C[]; +extern u8 D_8018F8F4[]; + +void func_80186F04(s32 param_1) +{ + s32 v; + unsigned short *p; + s32 frame_pad[4]; + + (void)&frame_pad; + func_8012CBCC(param_1); + v = func_8012B8E4(param_1, 8); + p = (unsigned short *)(*(s32 *)(param_1 + 0x20) + 0x12); + *p = (unsigned short)(*p + v); + + if (*(s32 *)(param_1 + 0x94) == 8) { + *(unsigned short *)(param_1 + 0x98) = 0; + } + + if (*(s32 *)(param_1 + 0x14) < 0) { + return; + } + + *(s16 *)(param_1 + 2) = 0x17; + func_8012A828(param_1, D_801AE89C); + *(s32 *)(param_1 + 0x58) = (s32)D_8018F8F4 | 0x40000000 | 0x20000000; +} + + +extern u8 D_801ADC24[]; +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012CBCC(s32 a0); + +void func_80186FA4(void *a0) { + register s32 s0 __asm__("$16"); + s32 dz; + s32 dzsq; + s32 dy; + s32 thresh; + + s0 = (s32)a0; + __asm__("" ::: "$4"); + if (*(s32 *)(s0 + 0x94) == 6) { + *(u16 *)(s0 + 0x98) = 0; + } + + thresh = 0xE100; + dz = *(s16 *)(s0 + 0xE) - 0x3C0; + dzsq = dz * dz; + dy = (s16)*(u16 *)(s0 + 0x6); + if (dzsq < 0x1901) { + dzsq += 0x4000; + } + dzsq += dy * dy; + if (dzsq < thresh) goto skip_escape; + + *(s32 *)(s0 + 0x10) = 0; + *(s32 *)(s0 + 0x18) = 0; + *(u16 *)(s0 + 0x6) -= dy >> 5; + *(u16 *)(s0 + 0xE) -= dz >> 5; +skip_escape:; + + if ((((s32 (*)(s32))func_8012CBCC)(s0) & 0x2000) != 0) { + func_8002D4C8(0x560, 0); + *(s16 *)(s0 + 0x2) = 5; + func_8012A828(s0, D_801ADC24); + *(s32 *)(s0 + 0x1C) = 1; + } +} + + +#include "common.h" + +/* ---- decls copied verbatim from the destination TU (src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c) ---- */ +extern s32 func_801789AC(s32 arg0); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void RotTransSV(void *a0, void *a1, void *a2); +extern void func_8002D4C8(s32 a0, s32 a1); +extern u8 D_800AF648; + +/* ---- new decls (not present elsewhere in the TU) ---- */ +extern u8 *func_8012913C(s32 a0); +extern s16 D_8018F960[]; + +#define gte_SetRotMatrix(r0) __asm__ volatile ( \ + "lw $12, 0( %0 );" \ + "lw $13, 4( %0 );" \ + "ctc2 $12, $0;" \ + "ctc2 $13, $1;" \ + "lw $12, 8( %0 );" \ + "lw $13, 12( %0 );" \ + "lw $14, 16( %0 );" \ + "ctc2 $12, $2;" \ + "ctc2 $13, $3;" \ + "ctc2 $14, $4" \ + : \ + : "r"( r0 ) \ + : "$12", "$13", "$14" ) +#define gte_SetTransMatrix(r0) __asm__ volatile ( \ + "lw $12, 20( %0 );" \ + "lw $13, 24( %0 );" \ + "ctc2 $12, $5;" \ + "lw $14, 28( %0 );" \ + "ctc2 $13, $6;" \ + "ctc2 $14, $7" \ + : \ + : "r"( r0 ) \ + : "$12", "$13", "$14" ) + +void func_80187084(void *a0) +{ + s16 sxy[4]; + s32 pz; + u8 *obj; + s32 cnt; + s32 m; + s32 v1; + + func_801789AC((s32)a0); + + *(u16 *)((s32)a0 + 0xA) ^= 2; + cnt = *(s32 *)((s32)a0 + 0x1C) - 1; + *(s32 *)((s32)a0 + 0x1C) = cnt; + + if ((cnt & 0xF) == 0) { + obj = func_8012913C(0x1F); + if (obj != 0) { + m = *(s32 *)((s32)a0 + 0x20) + 0x34; + gte_SetRotMatrix(m); + gte_SetTransMatrix(m); + + RotTransSV(D_8018F960, sxy, &pz); + func_8004914C(&D_800AF648); + func_800491AC(&D_800AF648); + + *(s32 *)(obj + 0x4) = *(s32 *)((s32)a0 + 0x4); + *(s32 *)(obj + 0x8) = *(s32 *)((s32)a0 + 0x8) - 0x800000; + *(s32 *)(obj + 0xC) = *(s32 *)((s32)a0 + 0xC); + + v1 = *(s32 *)((s32)a0 + 0x1C); + if (v1 & 0x40) { + *(s32 *)(obj + 0x2C) = (v1 & 0x30) << 6; + } else { + *(s32 *)(obj + 0x2C) = ((v1 & 0x30) << 6) + 0x200; + } + + *(s32 *)(obj + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 0x24; + func_8002D4C8(0x564, 0); + } + } + + if (*(s32 *)((s32)a0 + 0x1C) == 0) { + *(s32 *)((s32)a0 + 0x1C) = 0x10; + *(u16 *)((s32)a0 + 0x2) = 0x22; + } +} + + +#include "common.h" + +extern s32 func_801789AC(s32 arg0); +extern void func_8017C068(void); +extern s32 func_8012C588(s32 a0, s32 a1); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_801871EC(s32 a0) { + register s32 s0 __asm__("$16"); + s32 cnt; + s32 pad[2]; + + s0 = a0; + func_801789AC(a0); + + *(u16 *)(s0 + 0xA) ^= 2; + cnt = *(s32 *)(s0 + 0x1C) - 1; + *(s32 *)(s0 + 0x1C) = cnt; + + if (cnt == 0) { + func_8017C068(); + *(s32 *)(s0 + 0x1C) = 0xF; + func_8012C588(0x144, s0); + func_80132EF4(s0, 0x35); + *(u16 *)(s0 + 0x2) = 0x23; + func_8002D4C8(0x565, 0); + } +} + + +#include "common.h" + +extern s32 func_801789AC(s32 arg0); +extern s32 func_801439C0(s32 a0); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8002AC00(s32 a0); + +extern M2C_UNK D_8018BD04; +extern s32 D_8018FA1C[]; +extern s16 D_8018FA0C; +extern s32 D_801EC454; +extern s32 D_801ADBA4; +extern s32 D_801EC44C; + +void func_8018726C(void *a0) +{ + register s32 *s1 __asm__("$17"); + register s32 s2 __asm__("$18"); + s32 cnt; + s32 ret, sub; + register s32 obj __asm__("$3"); + register s32 health __asm__("$2"); + + func_801789AC((s32) a0); + + cnt = *(s32 *)((char *) a0 + 0x1C) - 1; + *(u16 *)((char *) a0 + 0xA) ^= 2; + *(s32 *)((char *) a0 + 0x1C) = cnt; + + if (cnt == 0) { + s1 = D_8018FA1C; + func_801439C0(*(s32 *)((char *) a0 + 0xCC)); + + for (s2 = 0; s2 < 21; s2++, s1++) { + ret = func_8012C588(0xE7, (s32) a0); + if (ret != 0) { + sub = *(s32 *)(ret + 0x20); + *(s32 *)(sub + 0x24) = *s1; + } + } + + *(s16 *)(D_801EC454 + 0xFC) = 0xA; + *(s32 *)(*(s32 *)((char *) a0 + 0x20) + 0x24) = (s32) &D_801ADBA4; + func_8012A828((s32) a0, &D_8018BD04); + + *(s16 *)((char *) a0 + 0xE) = 0x3C0; + *(s16 *)((char *) a0 + 0x2) = 0x24; + + __asm__ __volatile__("" ::: "memory"); + + obj = *(s32 *)((char *) a0 + 0x20); + health = *(u16 *)((char *) a0 + 0xA); + *(s16 *)((char *) a0 + 0x6) = 0; + *(s16 *)((char *) a0 + 0x70) = 0; + health -= 8; + *(u16 *)((char *) a0 + 0xA) = (u16) health; + + *(u16 *)(obj + 0x2C) |= 0x80; + *(s32 *)(*(s32 *)((char *) a0 + 0x20) + 0x80) = (s32) ((s32 *)&D_8018FA0C); + *(u32 *)(*(s32 *)((char *) a0 + 0x20) + 0x4) |= 0x80000000; + + D_801EC44C = 0; + func_8002AC00(0xC); + } +} + + +#include "common.h" + +extern s32 func_801789AC(s32 arg0); +extern s16 D_801EC590; +extern void func_80178D18(void); +extern void func_8012C218(void *); +extern s32 D_801EC450; + +void func_801873A8(s32 param_1) { + *(s32 *)((s32)D_801EC450 + 0xF8) = *(s32 *)(param_1 + 0xF8); + *(s32 *)(param_1 + 0xF8) = 0; + if (func_801789AC(param_1) != 0) { + if (D_801EC590 == 0) { + ((void (*)(s32))func_80178D18)(param_1); + func_8012C218((void *)param_1); + } + } +} + + +void func_80187414(void) { +} + +#include "common.h" + +extern void func_8018B234(s32 a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); +extern void func_8017FADC(void); +extern s32 func_801439C0(s32 a0); +extern u8 D_801ADC24[]; +extern u8 D_8018F924[]; + +void func_8018741C(s32 a0) +{ + if (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) != 0) { + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) -= 0x80; + } else { + func_8018B234(1); + func_8012A828(a0, D_801ADC24); + *(s32 *)(a0 + 0x1C) = 0x14; + *(u16 *)(a0 + 0x2) = 0x2A; + *(u16 *)(a0 + 0x76) = *(u16 *)D_8018F924; + func_8017BF08((void *)(a0 + 0x76), (void *)(a0 + 0x76), 1, 0x78); + func_8017FADC(); + if (*(s32 *)(a0 + 0xCC) != 0) { + func_801439C0(*(s32 *)(a0 + 0xCC)); + *(s32 *)(a0 + 0xCC) = 0; + } + } +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80185C14", func_801874D0); + +#include "common.h" + +extern void func_8018B260(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B23C(s32 a0); +extern u8 D_801ADC24[]; + +void func_8018753C(void *a0) { + register s32 s0 __asm__("$16"); + s32 v0; + s32 v1; + + s0 = (s32)a0; + v0 = *(s32 *)(s0 + 0x1C); + if (v0 == 0) { + v1 = *(s32 *)(s0 + 0x94); + if (v1 == 0xA) { + if (*(s16 *)(s0 + 0x98) == 1) { + func_8002D4C8(0x55B, 0); + } + v1 = *(s32 *)(s0 + 0x94); + } + if (v1 == 0x22) { + func_8012A828(s0, D_801ADC24); + *(s32 *)(s0 + 0x1C) = 0x23; + } + } else { + v0--; + *(s32 *)(s0 + 0x1C) = v0; + if (v0 == 0) { + func_8018B260(); + *(s16 *)(s0 + 2) = 4; + func_8012B23C(s0); + *(s16 *)(s0 + 0x16) = -0x10; + *(s16 *)(s0 + 0x1A) = -0xC; + } + if ((*(u16 *)(s0 + 0x72) & 0x4000) != 0) { + func_8002D4C8(0x619, 0); + } + } +} + + +extern void func_8017BEBC(s32 a0, s32 a1); +extern void func_8012B23C(s32 a0); +extern u8 D_8018F924[]; + +void func_80187610(s32 a0) { + s32 a1; + s16 v; + + a1 = *(s32 *)((s32)a0 + 0x20); + v = *(s16 *)(a1 + 0x12); + if (v != 0) { + *(s16 *)(a1 + 0x12) = v - 0x80; + } else { + func_8017BEBC((s32)a0 + 0x76, (s32)D_8018F924); + *(s16 *)((s32)a0 + 2) = 4; + func_8012B23C((s32)a0); + *(s16 *)((s32)a0 + 0x16) = -0x10; + *(s16 *)((s32)a0 + 0x1A) = -0xC; + } +} + + +#include "common.h" + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8012CBCC(s32 a0); +extern void func_8013C9C4(void *a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80180B44(s32); +extern s32 func_801843D8(void *a0); + +extern u8 D_8018C134[]; +extern u8 D_801ADC24[]; + +void func_80187688(void *arg0) { + s32 s0 = (s32)arg0; + + if ((*(s16 *)(s0 + 0x16) > 0) && (*(s32 *)(s0 + 0xCC) == 0)) { + *(s32 *)(s0 + 0xCC) = func_801843D8(arg0); + } + + if ((((s32 (*)(s32))func_8012CBCC)(s0) & 0x2000) != 0) { + func_8002D4C8(0x560, 0); + func_8013C9C4(D_8018C134); + ((void (*)(s32, s32))func_80180B44)(s0, 0); + *(s16 *)(s0 + 0x2) = 5; + *(s32 *)(s0 + 0x1C) = 0x5A; + func_8012A828(s0, D_801ADC24); + } +} + + +#include "common.h" + +extern s32 D_801EC448; +extern u8 D_801AE2C4[]; +extern u8 D_801AE3A4[]; +extern u8 D_8018F914[]; +extern s16 D_8018F9FC; + +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_8018305C(s32 a0); +extern void func_8017F9D8(void); + +void func_80187730(s32 a0) { + s32 ret; + s16 x; + if (*(s32 *)(a0 + 0x94) == 0xC) { + if (D_801EC448 <= 0) { + *(s32 *)(a0 + 0x58) = ((s32)D_8018F914 | 0x40000000) | 0x20000000; + func_8012A828(a0, D_801AE2C4); + *(s16 *)(a0 + 0x2) = 0x1D; + func_8017F9D8(); + *(s32 *)(*(s32 *)(a0 + 0x20) + 0x80) = (s32)((u8 *)&D_8018F9FC); + *(u16 *)(a0 + 0x5C) |= 0x200; + x = *(s16 *)(a0 + 0x76); + if (x >= 0x51) { + *(s32 *)(a0 + 0x1C) = 0xD2; + } else if (x >= 0x29) { + *(s32 *)(a0 + 0x1C) = 0x96; + } else { + *(s32 *)(a0 + 0x1C) = 0x5A; + } + ret = func_8012C588(0xB8, a0); + *(s32 *)(a0 + 0x6C) = ret; + if (ret == 0) { + *(s32 *)(a0 + 0x1C) = 1; + } + func_8018305C(a0); + } else { + func_8012A828(a0, D_801AE3A4); + *(s16 *)(a0 + 0x2) = 0x1E; + *(s32 *)(a0 + 0x58) = ((s32)D_8018F914 | 0x40000000) | 0x20000000; + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) &= 0xFF7F; + } + } +} + + +void func_80187860(void *arg0) { + extern s32 D_8018FB48; + + func_80178B18((s32)arg0, (s32)&D_8018FB48); + func_801746DC(); + *(s16 *)((u8 *)arg0 + 0x2) = 0x21; + *(s32 *)((u8 *)arg0 + 0x1C) = 0x80; +} + + +#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 s32 D_80190050; +extern u8 D_8019001C[]; +extern s32 D_8018BD04; + +void func_801878A8(s32 arg0) { + s32 t; + + if (func_8012C354(arg0, (s32)D_8019001C)) { + *(u8 *)(arg0 + 0xC0) = 1; + *(s32 *)(arg0 + 0xBC) = (s32)&D_80190050; + t = *(s32 *)(arg0 + 0x64); + *(u8 *)(arg0 + 0xC1) = 0; + *(s32 *)(arg0 + 0xB4) = 0; + *(u32 *)(arg0 + 0xC4) |= 2; + *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(t + 0x20) + 0x12); + *(s16 *)(arg0 + 2) = 1; + func_8012A828(arg0, (void *)&D_8018BD04); + *(u32 *)(*(s32 *)(arg0 + 0x20) + 4) |= 0x80000000; + func_8012B2CC(arg0); + *(s16 *)(arg0 + 0xAE) = -0x40F3; + } +} + + +void func_80187954(void *a0) +{ + s32 t1 = *(volatile s32 *)((s32)a0 + 0x64); + s32 t2 = *(volatile s32 *)((s32)a0 + 0x64); + + *(s32 *)((s32)a0 + 0x4) = *(s32 *)(t1 + 0x4); + *(s32 *)((s32)a0 + 0x8) = *(s32 *)(t2 + 0x8); + *(s32 *)((s32)a0 + 0xC) = *(s32 *)(*(volatile s32 *)((s32)a0 + 0x64) + 0xC); + *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = + *(u16 *)(*(s32 *)(*(volatile s32 *)((s32)a0 + 0x64) + 0x20) + 0x12); + func_8012B2CC((s32)a0); +} + + +#include "common.h" + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_800D0C48(s32 a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012C218(void *a0); +extern void func_8017F93C(void); +extern s32 D_801EC448; +extern u8 D_801AE2DC; + +void func_801879AC(void *a0) { + register s32 v0 __asm__("$2"); + register s32 v1 __asm__("$3"); + + v0 = *(s32 *)((s32)a0 + 0x1C); + if (v0 != 0) { + *(s32 *)((s32)a0 + 0x1C) = v0 - 1; + return; + } + + v1 = *(s32 *)((s32)a0 + 0x64); + if (*(s16 *)(v1 + 0x76) <= 0) { + *(s16 *)(v1 + 0x5C) = 0; + v0 = *(s32 *)((s32)a0 + 0x64); + *(s16 *)(v0 + 0x2) = 0x29; + func_800D0C48(4); + func_8002D4C8(0x5E0, 0); + func_8017F93C(); + v0 = *(s32 *)((s32)a0 + 0x64); + *(s32 *)(v0 + 0x6C) = 0; + func_8012C218(a0); + } else { + func_8012A828(v1, &D_801AE2DC); + v1 = *(s32 *)((s32)a0 + 0x64); + *(s16 *)(v1 + 0x2) = 0x1E; + func_8002D4C8(0x566, 0); + v0 = *(s32 *)((s32)a0 + 0x64); + v1 = *(s16 *)(v0 + 0x76); + if (v1 >= 0x51) { + v0 = 0x10; + } else { + v0 = (v1 < 0x29); + if (v0 == 0) { + v0 = 0x18; + } else { + v0 = 0x20; + } + } + D_801EC448 = v0; + *(s32 *)((s32)a0 + 0x1C) = 0xF; + *(s16 *)((s32)a0 + 0x2) = 3; + } +} + + +void func_80187AB0(void *a0) { + if (*(s32 *)((s32)a0 + 0x1C) != 0) { + (*(s32 *)((s32)a0 + 0x1C))--; + } else { + func_8017F93C(); + *(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0x6C) = 0; + func_8012C218(a0); + } +} + + +#include "common.h" + +typedef struct { + u8 pad[8]; /* 0x00 */ + u16 f8; /* 0x08 */ + u16 fa; /* 0x0a */ +} MatEntry_80187B04; + +extern MatEntry D_80190078[]; +extern void ApplyMatrixSV(void *a0, void *a1, void *a2); +extern void func_8012C218(void*); + +void func_80187B04(s32 param_1) { + s32 iVar3; + MatEntry_80187B04 *p; + s32 entity; + s32 sVar4; + + *(s32 *)(param_1 + 0x4) = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x4); + *(s32 *)(param_1 + 0x8) = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x8) - 0x400000; + p = &((MatEntry_80187B04 *)D_80190078)[*(u16 *)(param_1 + 0x70) & 3]; + *(s32 *)(param_1 + 0xC) = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0xC); + iVar3 = *(s32 *)(param_1 + 0x20); + *(s16 *)(iVar3 + 0x14) = p->f8; + *(u16 *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) + p->fa; + sVar4 = 0x1000; + ApplyMatrixSV((void *)(*(s32 *)(param_1 + 0x20) + 0x34), p, (void *)(param_1 + 0x50)); + + if (*(s16 *)(param_1 + 0xFE) != 0) goto do_call; + entity = *(s32 *)(param_1 + 0x64); + if (entity == 0 || *(s16 *)(entity + 0x36) != *(s16 *)(param_1 + 0xFC) || + *(u16 *)(entity + 0x5C) != 0) { + *(s16 *)(param_1 + 0xFE) = 1; + } + goto tail; +do_call: + func_8012C218((void *)param_1); + return; +tail: + *(s16 *)(iVar3 + 0x18) = *(s16 *)(iVar3 + 0x1A) = *(s16 *)(iVar3 + 0x1C) = sVar4; +} + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8001CA1C(s32 a0, s32 a1); + +extern s32 D_8019009C; +extern u8 D_801900A8; + +void func_80187C28(void *a0) +{ + register void *s0 __asm__("$16"); + s32 v0; + s32 v1; + + s0 = a0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(s0); + return; + } + + func_8001CA1C(v0, (s32)&D_8019009C); + + *(u16 *)((s32)s0 + 0xA) -= 0x100; + v1 = *(s32 *)((s32)s0 + 0x64); + if (*(u16 *)v1 != 0) { + *(u16 *)((s32)s0 + 0xFC) = *(u16 *)(v1 + 0x36); + } + + func_8012A828((s32)s0, &D_801900A8); + + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x12) = + (*(u16 *)((s32)s0 + 0x70) & 3) * 0x1000 / 3; + + if ((*(u16 *)((s32)s0 + 0x70) & 4) != 0) { + *(u16 *)((s32)s0 + 0x2) = 2; + } else { + *(u16 *)((s32)s0 + 0x2) = 1; + } +} + + +extern void func_80183264(s32 a0); + +void func_80187CF4(void *a0) { + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1C) += 0xA00; + if (*(s16 *)((s32)a0 + 0xFC) == 4) { + *(u16 *)((s32)a0 + 0x2) = 2; + *(s32 *)((s32)a0 + 0x1C) = 0x79; + } + func_80183264((s32)a0); +} + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_80183264(s32 a0); +extern s32 D_801900C4; +extern s32 D_8018BD04; + +void func_80187D48(void *a0) { + s32 v1; + s32 s0; + + s0 = (s32)a0; + if (func_8012C354(s0, (s32)&D_801900C4) != 0) { + *(u8 *)(s0 + 0xC0) = 1; + *(s32 *)(s0 + 0xB4) = 1; + func_8012A828(s0, &D_8018BD04); + v1 = *(s32 *)(s0 + 0x64); + *(s16 *)(s0 + 0x2) = 1; + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(v1 + 0x20) + 0x12); + func_80183264(s0); + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0x30; + *(s32 *)(s0 + 0x1C) = 6; + *(u16 *)(s0 + 0xFC) = 0; + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x18) = 0x3000; + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x1A) = 0x1000; + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x1C) = 0xC00; + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) |= 0x10; + } +} + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_801838B0(s32 a0); +extern void func_8012B2CC(s32 a0); +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 D_80190218; + +void func_80187E14(s32 param_1) +{ + s32 iVar1; + + iVar1 = ((s32 (*)(s32, void *))func_8012C354)(param_1, &D_80190218); + if (iVar1 != 0) { + func_801838B0(param_1); + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x18) = 0x2000; + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1A) = 0x2000; + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1C) = 0x333; + func_8012B2CC(param_1); + iVar1 = func_8004787C(*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) & 0xFFF); + *(s32 *)(param_1 + 0x10) = (iVar1 << 0xC) / 10; + iVar1 = func_80047948(*(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) & 0xFFF); + *(s16 *)(param_1 + 2) = 2; + *(s32 *)(param_1 + 0x18) = (iVar1 << 0xC) / 10; + } +} + + +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012C218(void *a0); + +void func_80187EEC(s32 a0) { + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) += 0x333; + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A) += 0x333; + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1C) += 0x333; + + *(s32 *)(a0 + 0x1C) += 1; + if (*(s32 *)(a0 + 0x1C) == 6) { + func_8012C658(0xFE, 0, a0); + } + + if (*(s32 *)(a0 + 0x1C) >= 0xB) { + func_8012C218((void *)a0); + } +} + + +extern void func_8012C218(void *a0); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); + +void func_80187F98(s32 a0) { + s32 v0; + s32 v1; + s32 p20; + + *(s32 *)(a0 + 4) = *(s32 *)(a0 + 4) + *(s32 *)(a0 + 0x10); + *(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0xC) + *(s32 *)(a0 + 0x18); + p20 = *(s32 *)(a0 + 0x20); + *(u16 *)(p20 + 0x1C) = *(u16 *)(p20 + 0x1C) + 0x333; + v0 = *(s32 *)(a0 + 0x1C) + 1; + *(s32 *)(a0 + 0x1C) = v0; + if (v0 == 6) { + func_8012C658(0xFE, 0, a0); + } + if (*(s32 *)(a0 + 0x1C) >= 0xB) { + func_8012C218((void *)a0); + } +} + + +extern void func_8012CBCC(s32); +extern void func_8012C218(void *); + +void func_80188034(s32 a0) +{ + s32 s0; + s32 ret; + s32 cnt; + s16 val; + + s0 = a0; + ret = ((s32 (*)(s32))func_8012CBCC)(a0); + if ((ret & 0x2000) != 0) { + *(s32 *)(s0 + 0x14) = -*(s32 *)(s0 + 0x14); + cnt = *(s32 *)(s0 + 0x1C) + 1; + *(s32 *)(s0 + 0x1C) = cnt; + if (cnt == 2) { + goto kill; + } + } + val = *(u16 *)(s0 + 0xFC) - 1; + *(u16 *)(s0 + 0xFC) = val; + if (val != 0) { + return; + } +kill: + func_8012C218((void *)s0); +} + + +extern void func_8012A828(s32 a0, void *a1); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_8012C354(s32 a0, s32 a1); + +extern u8 D_80190324[]; +extern s32 D_80190358; +extern s32 D_801E2458; +extern u16 D_80126B5E; +extern u16 D_80126B66; + +void func_801880AC(s32 a0) +{ + s32 s0; + s32 v0; + s32 v1; + + if (func_8012C354(a0, (s32)D_80190324) == 0) { + return; + } + + s0 = a0; + *(s8 *)(s0 + 0xC0) = 1; + *(s32 *)(s0 + 0xBC) = (s32)&D_80190358; + v0 = *(s32 *)(s0 + 0xC4); + v1 = *(u16 *)(s0 + 0x5C); + *(s8 *)(s0 + 0xC1) = 0; + *(s32 *)(s0 + 0xB4) = 0; + *(s8 *)(s0 + 0x75) = 0; + *(s32 *)(s0 + 0xC4) = v0 | 2; + *(u16 *)(s0 + 0x5C) = v1 | 0x4000; + func_8012A828(s0, &D_801E2458); + + *(s16 *)(s0 + 6) = D_80126B5E; + *(s16 *)(s0 + 0xA) = 0xC0; + *(s16 *)(s0 + 0xE) = D_80126B66; + *(s16 *)(s0 + 2) = 1; + *(s32 *)(s0 + 0x1C) = 0xF; + func_8002D4C8(0x562, 0); +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80185C14", func_80188164); + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_80185C14", func_801881CC); + +extern void func_8012C218(void *a0); +extern void func_80183E04(void *a0); + +void func_80188238(s32 *a0) +{ + s16 v = *(u16 *)((s32)a0 + 0xA) + 0x18; + *(u16 *)((s32)a0 + 0xA) = v; + if (v >= 0xA0) { + func_8012C218(a0); + } else { + func_80183E04(a0); + } +} + + + +extern void func_801292C8(u8 *a0); + s32 func_8018828C(s32 arg0) { + *(s32 *)(arg0 + 0x1c) -= 1; + if (*(s32 *)(arg0 + 0x1c) == 0) { + ((void (*)(void))func_801292C8)(); + } + } + + +#include "common.h" + +extern void func_8012CBCC(s32); +extern void func_8012C218(void*); + +void func_801882C0(s32 a0) +{ + s32 s0; + s32 v0; + + s0 = a0; + v0 = ((s32 (*)(s32))func_8012CBCC)(a0); + if (v0 != 0) { + *(u16 *)(s0 + 0xFC) = -*(u16 *)(s0 + 0xFC); + *(u16 *)(s0 + 0xFE) = -*(u16 *)(s0 + 0xFE); + *(u16 *)(s0 + 0x100) = -*(u16 *)(s0 + 0x100); + if (v0 & 0x8000) { + *(s32 *)(s0 + 0x10) = -*(s32 *)(s0 + 0x10); + *(s32 *)(s0 + 0x18) = -*(s32 *)(s0 + 0x18); + } else { + *(s32 *)(s0 + 0x14) = -*(s32 *)(s0 + 0x14); + } + } + + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x10) += *(u16 *)(s0 + 0xFC); + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x12) += *(u16 *)(s0 + 0xFE); + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x14) += *(u16 *)(s0 + 0x100); + + if (--*(s32 *)(s0 + 0x1C) < 0x10) { + *(u32 *)(*(s32 *)(s0 + 0x20) + 4) ^= 0x80000000; + if (*(s32 *)(s0 + 0x1C) == 0) { + func_8012C218((void *)s0); + } + } +} + + +#include "common.h" + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B23C(s32 a0); +extern s32 rand(void); +extern s32 D_801900C4; +extern s32 D_8018BD04; + +void func_801883E4(s32 param_1) { + if (((s32 (*)(s32, void *))func_8012C354)(param_1, &D_801900C4) == 0) { + return; + } + *(u8 *)(param_1 + 0xC0) = 1; + *(s32 *)(param_1 + 0xB4) = 1; + ((void (*)(s32, void *))func_8012A828)(param_1, &D_8018BD04); + *(u16 *)(param_1 + 0x2) = 1; + ((void (*)(s32))func_8012B23C)(param_1); + + *(s16 *)(param_1 + 0xFC) = (rand() & 0xFF) - 0x80; + *(s16 *)(param_1 + 0xFE) = (rand() & 0xFF) - 0x80; + *(s16 *)(param_1 + 0x100) = (rand() & 0xFF) - 0x80; + *(s16 *)(param_1 + 0x12) = (rand() & 0xF) - 0x8; + *(s16 *)(param_1 + 0x1A) = (rand() & 0xF) - 0x8; + *(s16 *)(param_1 + 0x16) = -0x38; + *(s32 *)(param_1 + 0x1C) = 0x5A; +} + + +void func_801884AC(void *a0) +{ + s32 t0; + s32 t1; + s32 v0; + + if (*(s16 *)((s32)a0 + 0x12) > 0) { + t0 = *(s32 *)((s32)a0 + 0xCC); + t1 = *(s32 *)((s32)a0 + 0xD0); + } else { + t0 = *(s32 *)((s32)a0 + 0xD4); + t1 = *(s32 *)((s32)a0 + 0xD8); + } + + if (*(u16 *)(t0 + 2) != 5) { + if (*(u16 *)(t1 + 2) != 5) { + if (*(u16 *)(*(s32 *)((s32)a0 + 0x64) + 2) != 29) { + *(s32 *)((s32)a0 + 0x1C) -= 1; + } + } + } + + if (*(s32 *)((s32)a0 + 0x1C) == 0) { + v0 = *(s16 *)((s32)a0 + 0x12); + *(u16 *)((s32)a0 + 0xFE) = 0x310; + *(s16 *)((s32)a0 + 2) = 2; + *(s16 *)((s32)a0 + 0x12) = -v0; + } +} + + +void func_8018854C(s32 a0) { + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A) -= 0x200; + if (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x1A) < 0x1001) { + *(u16 *)(a0 + 2) = 4; + } +} + + +#include "common.h" + +void func_8018858C(s32 arg) { + s32 ptr1; + s32 ptr2; + s32 cnt; + u16 val; + u16 state; + s16 chk; + + ptr1 = *(s32 *)(arg + 0x20); + val = *(u16 *)(ptr1 + 0x1A); + val = val + 0x200; + *(u16 *)(ptr1 + 0x1A) = val; + + ptr2 = *(s32 *)(arg + 0x20); + chk = *(s16 *)(ptr2 + 0x1A); + if (chk < 0x2000) { + return; + } + + state = *(u16 *)(arg + 0x34); + cnt = *(s16 *)(arg + 0x12); + *(u16 *)(arg + 0x2) = state; + if (cnt < 0) { + if (cnt != -4) { + *(s16 *)(arg + 0x12) = -4; + } + } else { + if (cnt != 4) { + *(s16 *)(arg + 0x12) = 4; + } + } +} + + +#include "common.h" + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_80143970(s32 a0); +extern s32 func_8012C51C(void *a0, s32 a1); + +extern s32 D_80190414; +extern s32 D_80190420; +extern u8 D_8018F884[]; +extern u8 D_8018F898[]; +extern u8 D_8018F8AC[]; +extern u8 D_8018F8C0[]; + +void func_80188600(s32 param_1) +{ + s32 v0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(param_1 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4((void *)param_1); + } else { + func_8001CA1C(v0, (s32)&D_80190414); + func_8012A828(param_1, &D_80190420); + *(s16 *)(param_1 + 2) = 5; + *(s16 *)(param_1 + 0x12) = 4; + *(s32 *)(param_1 + 0x1c) = 0x1e; + func_80143970(param_1); + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x18) = 0x2000; + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1a) = 0x2000; + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1c) = 0x2000; + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2c) |= 0x10; + *(s32 *)(param_1 + 0xcc) = func_8012C51C(D_8018F884, param_1); + *(s32 *)(param_1 + 0xd0) = func_8012C51C(D_8018F898, param_1); + *(s32 *)(param_1 + 0xd4) = func_8012C51C(D_8018F8AC, param_1); + *(s32 *)(param_1 + 0xd8) = func_8012C51C(D_8018F8C0, param_1); + *(s16 *)(param_1 + 0x100) = 1; + } +} + + +#include "common.h" + +extern void (*D_8018FCB8)(); +extern s32 func_80178B18(s32 param_1, s32 param_2); +extern void func_801746DC(void); +extern s32 func_8012C588(s32 a0, s32 a1); +extern s32 D_801EC454; + +void func_8018870C(s32 a0) +{ + s32 *counter; + s32 ret; + + counter = (s32 *)(a0 + 0x1C); + (*counter)--; + if (*counter != 0) { + return; + } + + func_80178B18(a0, (s32)&D_8018FCB8); + func_801746DC(); + + *(s16 *)(a0 + 0x2) = 6; + *(s32 *)(a0 + 0x1C) = 0xA; + + ret = func_8012C588(0x379, a0); + if (ret != 0) { + D_801EC454 = ret; + *(s16 *)(ret + 0xA) = 0x17E; + *(s16 *)(ret + 0x6) = 0; + *(s16 *)(ret + 0xE) = 0x220; + *(s16 *)(*(s32 *)(ret + 0x20) + 0x10) = 0x40; + } +} + + diff --git a/src/ov_SC03_028/ov_SC03_028_jr_801887A8.c b/src/ov_SC03_028/ov_SC03_028_jr_801887A8.c new file mode 100644 index 000000000..cae2dc618 --- /dev/null +++ b/src/ov_SC03_028/ov_SC03_028_jr_801887A8.c @@ -0,0 +1,5240 @@ +#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 { + 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; } PrimDF98; +typedef struct { u8 *vtx; u32 f4; u32 xx, yy, zz; PrimDF98 *prim, *end; } CellDF98; +typedef struct { s16 vx, vy; } DVEC2_DF98; +typedef struct { s16 vx, vy, vz, pad; } SVEC2_DF98; +typedef struct { s16 m[3][3]; s32 t[3]; } MTX_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2; } PF3_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_DF98; +typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_DF98; +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_DF98; +typedef struct { + u16 f0; + u16 f2; + u16 f4; + u16 f6; + u16 f8; + u16 fA; + s32 fC; + s32 f10; + s32 f14; + s32 f18; +} SubRec_801EB5C8; /* 0x1C */ +typedef struct { + u16 g0; + u16 g2; + s32 g4; + s32 g8; + s32 gC; + SubRec_801EB5C8 subs[16]; +} GroupRec_801EB5C8; /* 0x1D0 */ +typedef struct { u16 x, y, z, w; } __attribute__((aligned(2))) V; +typedef struct { s16 vx, vy, vz, pad; } SV_80182494; +typedef struct { + u8 pad_0[0xCC]; + void *arr[4]; +} D_801EC450_t; +typedef struct { + u8 pad[8]; /* 0x00 */ + u16 f8; /* 0x08 */ + u16 fa; /* 0x0a */ +} MatEntry_80187B04; +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_8018DF10; +extern u8 D_8018DE80; +extern u8 D_8018DE5C; +extern u8 D_8018DE38; +extern u8 D_8018DEEC; +extern u8 D_8018DEC8; +extern u8 D_8018DEA4; +extern u8 D_8018DE14; +extern void func_80145934(void); +extern u8 D_8018DFA0; +extern u8 D_8018DF7C; +extern u8 D_8018DF58; +extern u8 D_8018DF34; +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 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_8018D398[]; +extern unsigned char D_8018D3C8[]; +extern unsigned char D_8018D418[]; +extern unsigned char D_8018D448[]; +extern unsigned char D_8018D478[]; +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_8018D4C8[])(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 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 u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_8018D590[]; +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 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_8018D618[]; +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_8018D620; +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_801EA340; +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_801EA344; +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_8018D650; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +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_8018D6F8[])(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_8018D71C[])(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_8018D70C; +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_8018D730[])(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_8018D73C[]; +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_8018D74C[])(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_8018D764[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_8018D754; +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_8018D778[])(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_8018D794[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_8018D784; +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_8018D7A8[])(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_8018D7BC[])(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_8018D7D0; +extern void (*D_8018D7F8[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018D7D8; +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_8018D844[])(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_8018D848[])(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_8018DCAC[]; +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_8018DCBC[])(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_801EA378; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_8018DCE4[])(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_8018DCC4; +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_8018DCD4; +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_8018DD24[])(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_8018DD2C[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018DCF8; +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_8018DD38[])(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_8018DD08; +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_801EA380; +extern s32 D_801EA38C; +extern s32 D_801EA390; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_8018DD74[])(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_8018DD48[]; +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_801EA388; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018DFC4[])(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_8018DDE4[]; +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_8018E068[])(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_8018E1BC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018DFD8; +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_8018E1C4[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018DFE8; +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_8018E008; +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_8018E1CC[])(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_8018E1F4[])(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_8018E200[])(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_8018E074[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018E2A4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018D388[]; +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_8018E2B8[]; +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_8018E2F4[]; +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_8018E33C; +extern u16 D_8018E33E; +extern u16 D_8018E340; +extern s32 D_8018E344; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018E34C; +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_8018E058; +extern void func_8015EE7C(s32 param_1); +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_8018E3D0[]; +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_8018E480[])(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_8018E4B0[]; +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_8018E514; +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_801EA398[]; +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_8018E538[])(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_801EA3F0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018E580[])(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_8018E570; +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_801E99A4[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_8018E588[])(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_8018E5DC[])(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_8018E5A4; +extern s16 D_8018E5D8; +extern s16 D_8018E5D6; +extern s16 D_8018E5D4; +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_8018E5E8[])(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_801EA450; +extern u8 D_801EA451; +extern u8 D_801EA452; +extern u8 D_801EA453; +extern u8 D_801EA454; +extern u8 D_801EA455; +extern u8 D_801EA456; +extern u8 D_801EA457; +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_8018E5F8[])(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_801EA490; +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_8018E63C[])(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_8018E6B8[]; +extern s32 D_8018E6D8[]; +extern u8 D_8018E754[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_8018E774[]; +extern u8 D_8018E794[]; +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_8018E830[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_8018E8AC[])(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_801E99B4; +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_8018E8B8[])(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_8018E8C0[])(void); +extern void func_801663FC(void *a0); +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_8018E988[])(void); +extern void func_80166618(void *a0); +extern void (*D_8018E998[])(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_8018E9A8[])(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_8018E9B4[])(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_8018E914[]; +extern u8 D_8018E928[]; +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_8018E9CC[])(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_8018E9D4[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8018E9DC[])(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_8018E9E4[])(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_8018E9EC[])(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_8018E9F4[])(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_8018E9FC[])(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_8018EAB0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_8018EAB8[])(void); +extern void func_80169F00(void *a0); +extern char D_8018EA68[]; +extern char D_8018EA28[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_8018EAF0[])(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_8018EAFC[])(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_8018EB44[])(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_8018EBC0[])(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_801EA7B0; +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_8018EBB4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018EBF8[]; +extern unsigned short D_8018EC00[]; +extern unsigned short D_8018EC08[]; +extern unsigned char D_801EA7B8[]; +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_801EA7B0; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_8018EC10[])(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_801EA8EC; +extern M2C_UNK D_801EA8F0; +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_801EA878; +extern void (*D_8018EC40[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801EA8F4[]; +extern u8 D_801EA8FC[]; +extern u8 D_801EA8AC[]; +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_8018EC48[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_8018EC64[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_8018EC6C[])(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_8018ECD4[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018EC78; +extern u8 D_8018EC84; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018ED08[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_8018ED10[])(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_8018ED64[])(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_8018ED98[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_8018ED88[]; +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_8018EDB4; +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_8018EE2C[])(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_8018EE34[])(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_8018EE3C[])(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_8018EE44[])(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_8018EE4C[])(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_8018EE54[])(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_8018EE60[])(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_8018EE6C[])(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_8018EE78[])(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_8018EE88[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_8018EE98[])(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_8018EEA0[])(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_8018EEA8[])(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_8018EEB0[])(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_8018EEB8[])(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_8018EEC0[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018EEC8[])(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_8018EED0[])(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_8018EED8[])(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_8018EEE0[])(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_8018EEE8[])(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_8018EEF0[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018EEF8[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018EF00[])(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_8018EF08[])(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_8018EF10[])(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_8018EF18[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018EF20[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018EF28[])(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_8018EF30[])(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_8018EF38[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_8018EF40[])(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_8018EF48[])(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_8018EF8C[])(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_8018EF50; +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_8018EFBC[])(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_8018EFF8[])(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_80126954; +extern s32 D_80126950; +extern s32 D_8012695C; +extern s16 D_80126968; +extern s16 D_8012696A; +extern s16 D_8012696C; +extern s16 D_80126976; +extern s16 D_80126978; +extern s16 D_8012697A; +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_8018F050[])(); +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_8018F060[])(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_8018F068[])(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_8018F1D0[])(); +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_8018F1DC[])(); +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_801E9BFC; +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_801EC590; +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_801EB030; +extern short D_801EC604; +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_801EB45C; +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_801EB484; +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_801EB440; +extern s32 func_8017A3B0(void); +extern short D_801EB47C; +extern short D_801EB478; +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_801EC560; +extern s16 D_801EC562; +extern s16 D_801EC56C; +extern void func_8017AE2C(s32 param_1); +extern void func_8017B0E4(int param_1, int param_2); +extern s16 D_801EB444; +extern u16 D_801EB4C4; +extern u16 D_801EB4C6; +extern u16 D_801EB4C8; +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_801EB4BC; +extern s16 D_801EB4BE; +extern s16 D_801EB4C0; +extern s16 D_801EB4B4; +extern s16 D_801EB4B6; +extern s16 D_801EB4B8; +extern void func_8017B7A8(void); +extern s16 D_801EB4D4; +extern s16 D_801EB4D6; +extern s16 D_801EB4D8; +extern s16 D_801EB4DC; +extern s16 D_801EB4DE; +extern s16 D_801EB4E0; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801EB4CC; +extern short D_801EB4CE; +extern short D_801EB4D0; +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_801EB464; +extern SV4 D_801EB46C; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801EB48C[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_801EB488)(void); +extern void func_8017BD50(int param_1); +extern void (*D_8018F3B8[])(void); +extern void func_8017BE60(void *a0); +extern void func_8017BE9C(void); +extern void func_8017BEA4(void); +extern void func_8017BEAC(void); +extern void func_8017BEB4(void); +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8017BEE0(s32 arg0, s32 arg1, s16 arg2); +extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); +extern s32 func_8012C750(s32 a0); +extern s32 D_8018F3E8[]; +extern void func_8017BFBC(s32 a0, s32 a1); +extern void func_8017C010(s32 a0, s32 a1, s32 a2); +extern void func_8017C068(void); +extern void (*D_8018F418[])(void); +extern void func_8017C114(void *a0); +extern void func_8017C150(void *a0); +extern void func_800176F0(void *a0); +extern void func_8017C43C(void *a0); +extern void func_8012A828(s32 a0, void * a1); +extern void func_8012CAE4(void *a0); +extern s32 func_8012C354(s32 a0, s32 a1); +extern s32 func_80143970(s32 a0); +extern void func_8017C8D0(void *a0); +extern void func_8017D220(s32 a0, s16 a1, s16 a2); +extern void func_8017D294(s16 *a0); +extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8017CA6C(s32 a0); +extern void func_8012ADE4(u8 *a0); +extern void func_8012B200(u8 *a0); +extern s32 func_8012B864(s32 a0); +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern void func_8012BD14(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern void func_8012CBA4(s32 a0); +extern void func_8017D370(s32 a0); +extern void func_8017CC70(s32 a0); +extern s32 func_8012E778(int param_1, int param_2); +extern s32 func_801439C0(s32 a0); +extern void func_8012CBF4(s32 a0); +extern void func_8017D064(s32 a0); +extern void (*D_8018F6F4[])(void); +extern void func_8017D1E4(void *a0); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8017D584(s32 a0); +extern void func_8012CBCC(s32); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8017D658(s32 a0); +extern void func_8012C218(void*); +extern void func_8017D728(s32 a0); +extern s32 func_8012E778(s32 param_1, s32 param_2); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_8017D780(s32 a0); +extern void func_8017D878(s32 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_8017DC90(u16 *a0, void *a1); +extern int func_8017DD34(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_8017DF2C(s32 a0, s32 a1); +extern void func_8017DF98(s32 arg0); +extern void func_8017EE64(void *arg0); +extern void func_8017F04C(u8 *a0); +extern void (*D_8018F774[])(int); +extern void func_8017EE90(int param_1); +extern void (*D_8018F718[])(void); +extern s8 D_8018F724[]; +extern void func_8017EEDC(s32 param_1); +extern void func_8017EFA8(s32 param_1); +extern void (*D_8018F77C[])(void); +extern void func_8017F094(void *a0); +extern GroupRec_801EB5C8 D_801EB5C8[8]; +extern void func_8017F0D0(s32 param_1); +extern void func_8017F278(void *arg0); +extern s32 func_80017E30(void *a0, void *a1); +extern void func_80016ED4(void *a0); +extern SVECTOR_8017F40C D_8018F784[4]; +extern void func_8017F40C(s32 a0, s32 a1); +extern void (*D_8018F818[])(void); +extern void func_8017F6C4(void *a0); +extern void func_8017F8EC(void); +extern s32 func_8017F700(s32 a0); +extern s32 func_8017F744(void); +extern void (*D_8018F820[])(void); +extern void func_8017F768(void *a0); +extern void func_8017F914(void); +extern s32 func_8017F7A4(s32 a0); +extern void func_8001BFD0(void); +extern void func_800D1E28(void); +extern s32 func_8017F7E4(s32 a0); +extern s32 func_800D1EBC(void); +extern void func_8017F880(void); +extern void func_8017F8A0(s32 *a0); +extern M2C_UNK D_8018F834; +extern void func_8012A018(s32 a0, s32 a1); +extern void func_8012A094(s32 a0); +extern void func_8017FBA4(void*); +extern void func_8017F93C(void); +extern void func_8017FBA4(void *); +extern void func_8017F9D8(void); +extern void func_8017FA44(void); +extern void func_8017FABC(void); +extern s32 D_80126E60[]; +extern void func_8012A048(void *a0, s32 a1, u8 a2); +extern void func_8012A100(s8 a0); +extern void func_8017FADC(void); +extern void func_8017FB84(void); +extern void (*D_8018F860[])(void); +extern void func_8017FBA4(void *a0); +extern s16 D_80126940; +extern s16 D_80126942; +extern s16 D_80126944; +extern s32 func_800130D0(s32 a0, s32 a1, s32 a2); +extern void func_8017FF68(s32 param_1, s16 *param_2); +extern void func_8017FBE0(s32 param_1); +extern void func_8017FD64(s32 arg0); +extern s32 func_8012E544(s32 a0); +extern void func_8017FDC0(s32 param_1); +extern s32 func_80013294(void*, void*); +extern void func_8017FE18(s32 param_1); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern s16 D_8018FA14; +extern s32 D_801AE99C[]; +extern s32 D_801AE944[]; +extern s32 D_801AE8D4[]; +extern void func_80180120(s32 a0); +extern s32 D_801EC44C; +extern s32 func_801802B8(void); +extern s32 func_801802F4(s32 a0); +extern s32 D_800A651C; +extern u8 D_800AF648; +extern u8 D_8018F958[]; +extern u32 D_8018FF24[]; +extern u8 D_8018FF30[]; +extern u8 D_8018FF31[]; +extern u8 D_8018FF32[]; +extern u8 D_8018FF33[]; +extern u8 D_8018FF40[]; +extern u8 D_8018FF41[]; +extern u8 D_8018FF42[]; +extern u8 D_8018FF43[]; +extern u8 D_8018FF50[]; +extern u8 D_8018FF51[]; +extern u8 D_8018FF52[]; +extern u8 D_8018FF53[]; +extern void *func_80010A08(s32); +extern s32 func_8005A600(s32, s32, s32, s32, s32); +extern s32 GetTPage(s32, s32, s32, s32); +extern s32 AddPrim(s32, void *); +extern void func_80180494(void *a0); +extern s32 func_8012DE2C(s32 a0); +extern s32 func_8012DDA4(void); +extern s32 func_800133E4(s16 *a0, s16 *a1); +extern u8 D_8018F9A0[]; +extern void func_801808CC(s32 a0, s32 a1, s32 a2, s32 a3); +extern volatile s32 D_801EC44C; +extern s32 func_80180A08(s32 param_1, u16 param_2); +extern void func_80180AC4(s32 arg0, s32 arg1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_80181374(void *a0); +extern s32 func_8012BA10(s32 a0, s32 a1); +extern u8 D_801ADC24[]; +extern void func_80181414(void *a0); +extern void func_80181BD8(s32 a0); +extern s32 D_801AE6DC[]; +extern void func_80181D4C(s32 a0); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8012CBCC(s32 a0); +extern void func_80180B44(s32); +extern void func_8018305C(s32 a0); +extern u16 D_80126B96; +extern s32 D_801EC448; +extern u8 D_8018C134[]; +extern u8 D_8018F914[]; +extern s16 D_8018F9FC; +extern u8 D_801AE2C4[]; +extern u8 D_801AE3A4[]; +extern u8 D_801AE7CC[]; +extern void func_8018222C(s32 a0); +extern u8 D_801AE734[]; +extern s32 D_8018F8D4; +extern void func_80182494(void *a0); +extern void func_80182698(s32 a0); +extern s16 D_8018FA0C; +extern s16 D_8018FA0E; +extern s16 D_8018FA10; +extern s32 D_801EC450; +extern void func_80182780(s32 a0); +extern void func_80180B44(s32 a0); +extern void func_801828DC(s32 a0); +extern u8 D_801ADCEC[]; +extern s32 D_8018F9D8[]; +extern s32 D_8018F9DC[]; +extern s32 D_8018F9E0[]; +extern void func_801829F0(void *a0); +extern void func_80182C20(s32 a0); +extern s16 D_8018F9FE; +extern s16 D_8018FA00; +extern s32 D_8018FF60[]; +extern void func_80182E2C(void *a0); +extern void (*D_80190068[])(void); +extern void func_80183020(void *a0); +extern void func_801830B0(s32 a0); +extern void func_8012C218(void *a0); +extern MatEntry D_80190078[]; +extern void func_80183104(s32 param_1); +extern void (*D_801900B8[])(void); +extern void func_80183228(void *a0); +extern void func_8012B23C(s32 a0); +extern void func_80184E9C(s32 a0, s32 a1, s32 a2); +extern void func_80183264(s32 a0); +extern u8 D_801901A8[]; +extern u8 D_801901B4[]; +extern u8 D_801901BC[]; +extern u8 D_801901C4[]; +extern u8 D_801901CC[]; +extern void func_801833D8(void *a0); +extern void func_80184E9C(); +extern void func_80183580(void *arg0); +extern s32 D_801900F8[]; +extern s32 D_80190138[]; +extern s32 D_80190190[]; +extern void (*D_801901D4[])(void *); +extern void func_80183728(void *arg0); +extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); +extern s32 D_8018BD04; +extern s32 D_8019024C; +extern void func_801838B0(s32 a0); +extern void (*D_8019025C[])(void); +extern void func_80183A38(void *a0); +extern void (*D_801902C0[])(void); +extern void func_80183DC8(void *a0); +extern u8 D_8018F968[]; +extern u32 D_801902C8[]; +extern u8 D_801902D4[]; +extern u8 D_801902D5[]; +extern u8 D_801902D6[]; +extern u8 D_801902D7[]; +extern u8 D_801902E4[]; +extern u8 D_801902E5[]; +extern u8 D_801902E6[]; +extern u8 D_801902E7[]; +extern u8 D_801902F4[]; +extern u8 D_801902F5[]; +extern u8 D_801902F6[]; +extern u8 D_801902F7[]; +extern void func_80183E04(void *a0); +extern void func_80184228(void); +extern u8 D_80190314[]; +extern u8 D_8019031C[]; +extern void (*D_80190370[])(void *); +extern void func_80184230(void *arg0); +extern void func_801439FC(s32 a0); +extern void func_8018430C(s32 a0); +extern s32 func_80143994(s32 arg0, s32 arg1); +extern s32 func_801843D8(void *a0); +extern void func_801843FC(s32 param_1); +extern void func_8018449C(s32 param_1); +extern void (*D_80190400[])(void); +extern void func_80184524(void *a0); +extern void func_80184560(void); +extern void (*D_8019040C[])(void); +extern void func_80184568(void *a0); +extern void (*D_80190460[])(void *); +extern void func_80184A40(void *a0); +extern void func_80184B28(void *a0); +extern void (*D_801904A0[])(void); +extern void func_80184C54(void *a0); +extern void (*D_80190594[])(void); +extern void func_80184E00(void *a0); +extern void (*D_801905BC[])(); +extern void func_80184E3C(s32 param_1); +extern void func_80184FAC(s32 *a0); +extern u8 D_801905D8[]; +extern void func_80185028(void *a0); +extern void func_8018509C(void *arg0); +extern void (*D_8019066C[])(void); +extern void func_801854D8(void *a0); +extern void (*D_801906C8[])(void); +extern void func_80185514(void *a0); +extern void (*D_80190724[])(void); +extern void func_80185550(void *a0); +extern u16 D_80078E92; +extern void func_8018558C(s32 a0); +extern s32 D_801907B0[]; +extern void func_8018561C(s32 arg0); +extern void (*D_801907E4[])(void); +extern void func_801857AC(void *a0); +extern s32 D_80190884[]; +extern void func_801857F4(s32 arg0); +extern void (*D_801908A8[])(void); +extern void func_80185984(void *a0); +extern s32 D_80190948[]; +extern void func_801859CC(s32 arg0); +extern void (*D_8019096C[])(void); +extern void func_80185B5C(void *a0); +extern void (*D_80190A0C[])(void *); +extern void func_80185BA4(s32 arg0); +extern void (*D_80190A30[])(void); +extern void func_80185D34(void *a0); +extern void func_8012C1B8(void); +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012B1B4(s32 a0, s32 a1); +extern s32 D_80190A4C; +extern s32 D_80190ADC; +extern s32 D_80190B44; +extern void func_80185D7C(s32 arg0); +extern s32 func_8012D624(s32 a0, s32 a1, s32 a2); +extern void func_80185ED4(s32 a0); +extern void (*D_80190B50[])(void); +extern void func_80186044(void *a0); +extern void (*D_80190BE4[])(void); +extern void func_80186080(void *a0); +extern void (*D_80190BEC[])(void); +extern void func_801860BC(void *a0); +extern void func_801860F8(u8 *a0, s8 a1); +extern void (*D_80190BF4[])(void); +extern void func_801861A0(void *a0); +extern void func_8012AD44(s32 *a0, s16 a1); +extern void func_801861DC(s32 *a0); +extern void func_8018620C(u8 *a0); +extern s32 func_8012E504(s32 a0, s32 a1); +extern volatile s32 D_801EC450; +extern void func_80186234(void *arg0); +extern void (*D_80190BFC[])(void); +extern void func_8018632C(void *a0); +extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); +extern u8 D_80190C1C[]; +extern u8 D_80190C68[]; +extern u8 *D_801E6214; +extern void func_80186368(void *a0); +extern void (*D_80190C78[])(void); +extern void func_80186754(void *a0); +extern void func_80029124(s32 arg0, s32 arg1); +extern void func_80186790(void); +extern void func_801867C0(s32 arg0); +extern void (*D_8018FEB0)(); +extern void func_801867E4(s32 a0); +extern void (*D_8018FEBC)(); +extern void func_80186838(s32 a0); +extern void func_8018688C(void *a0); +extern s32 func_8012C51C(void *a0, s32 a1); +extern void func_8018ADA0(void); +extern u8 D_8018F924[]; +extern u8 D_8018FEC8[]; +extern u8 D_8018F870[]; +extern void func_80186894(void *a0); +extern void func_80186A00(s32 a0); +extern u8 D_801AE46C[]; +extern s32 D_801AE874[]; +extern void func_80186A88(s32 a0); +extern void func_80186B0C(void *a0); +extern s32 D_801AE9C4[]; +extern void func_80186BAC(s32 param_1); +extern void func_80186C98(s32 param_1); +extern void func_80186D0C(void *a0); +extern void func_80180494(); +extern void func_80186D84(void *a0); +extern void func_80186E60(void *a0); +extern u8 D_801AE89C[]; +extern u8 D_8018F8F4[]; +extern void func_80186F04(s32 param_1); +extern void func_80186FA4(void *a0); +extern u8 *func_8012913C(s32 a0); +extern s16 D_8018F960[]; +extern void func_80187084(void *a0); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern void func_801871EC(s32 a0); +extern void func_8002AC00(s32 a0); +extern M2C_UNK D_8018BD04; +extern s32 D_8018FA1C[]; +extern s32 D_801EC454; +extern s32 D_801ADBA4; +extern void func_8018726C(void *a0); +extern void func_8012C218(void *); +extern void func_801873A8(s32 param_1); +extern void func_80187414(void); +extern void func_8018B234(s32 a0); +extern void func_8018741C(s32 a0); +extern void func_8018B260(void); +extern void func_8018753C(void *a0); +extern void func_8017BEBC(s32 a0, s32 a1); +extern void func_80187610(s32 a0); +extern void func_80187688(void *arg0); +extern void func_80187730(s32 a0); +extern void func_80187860(void *arg0); +extern s32 D_80190050; +extern u8 D_8019001C[]; +extern void func_801878A8(s32 arg0); +extern void func_80187954(void *a0); +extern u8 D_801AE2DC; +extern void func_801879AC(void *a0); +extern void func_80187AB0(void *a0); +extern void func_80187B04(s32 param_1); +extern s32 D_8019009C; +extern u8 D_801900A8; +extern void func_80187C28(void *a0); +extern void func_80187CF4(void *a0); +extern s32 D_801900C4; +extern void func_80187D48(void *a0); +extern s32 D_80190218; +extern void func_80187E14(s32 param_1); +extern void func_80187EEC(s32 a0); +extern void func_80187F98(s32 a0); +extern void func_80188034(s32 a0); +extern u8 D_80190324[]; +extern s32 D_80190358; +extern s32 D_801E2458; +extern void func_801880AC(s32 a0); +extern void func_80188238(s32 *a0); +extern void func_801292C8(u8 *a0); +extern s32 func_8018828C(s32 arg0); +extern void func_801882C0(s32 a0); +extern void func_801883E4(s32 param_1); +extern void func_801884AC(void *a0); +extern void func_8018854C(s32 a0); +extern void func_8018858C(s32 arg); +extern s32 D_80190414; +extern s32 D_80190420; +extern u8 D_8018F884[]; +extern u8 D_8018F898[]; +extern u8 D_8018F8AC[]; +extern u8 D_8018F8C0[]; +extern void func_80188600(s32 param_1); +extern void (*D_8018FCB8)(); +extern void func_8018870C(s32 a0); +/* ==== end §8b carried decl layer ==== */ + + +void func_801887A8(s32 param_1) +{ + s32 v0; + + switch (*(s32 *)(param_1 + 0xF8)) { + case 1: + *(u32 *)(param_1 + 0xDC) ^= 1; + break; + case 2: + *(u32 *)(param_1 + 0xE0) ^= 1; + break; + case 3: + *(u32 *)(param_1 + 0xE4) ^= 1; + break; + case 4: + *(u32 *)(param_1 + 0xE8) ^= 1; + break; + case 5: + *(s16 *)(*(s32 *)(param_1 + 0x64) + 2) = 1; + break; + case 6: + *(s16 *)(*(s32 *)(param_1 + 0x64) + 2) = 2; + break; + case 7: + v0 = 6; + goto block4; + case 8: + *(s16 *)(*(s32 *)(param_1 + 0x64) + 2) = 0x28; + break; + case 9: + func_800D0C48(1); + *(s32 *)(param_1 + 0xF8) = 0; + return; + case 10: + v0 = 7; + goto block4; + case 11: + v0 = 8; + block4: + *(u32 *)(param_1 + 0xDC) = v0; + *(u32 *)(param_1 + 0xE0) = v0; + *(u32 *)(param_1 + 0xE4) = v0; + *(u32 *)(param_1 + 0xE8) = v0; + } + *(s32 *)(param_1 + 0xF8) = 0; +} + + +#include "common.h" + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +extern s32 D_80190484; +extern s32 D_80190490; + +void func_801888AC(s32 param_1) +{ + s32 v0; + s32 s0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + s0 = param_1; + *(s32 *)(s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4((void *)s0); + } else { + func_8001CA1C(v0, (s32)&D_80190484); + func_8012A828((s32)s0, &D_80190490); + *(s16 *)(s0 + 2) = 1; + *(s16 *)(*(s32 *)(s0 + 0x20) + 0x18) = 0x2000; + *(s16 *)(*(s32 *)(s0 + 0x20) + 0x1A) = 0x2000; + *(s16 *)(*(s32 *)(s0 + 0x20) + 0x1C) = 0x2000; + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) |= 0x10; + } +} + + +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); +extern s32 func_8012D624(s32 a0, s32 a1, s32 a2); +extern s32 func_8012E544(s32 a0); + +void func_80188950(s32 arg0) { + s32 a0; + + func_8012D624(arg0, 0x30, 0xA); + a0 = func_8012E544(0xCB); + if (a0 != 0) { + s32 dy = *(s16 *)(arg0 + 6) - *(s16 *)(a0 + 6); + s32 dx = *(s16 *)(arg0 + 0xE) - *(s16 *)(a0 + 0xE); + if (dy * dy + dx * dx < 0x4000) { + u16 f = *(u16 *)(a0 + 0x5C); + if (f & 0x8000) { + *(u16 *)(a0 + 0x5C) = f | 1; + *(u16 *)(a0 + 0x5E) = 0x1D; + } + } + } + if (func_8012BEE8(arg0) != 0) { + func_8012C218((void *)arg0); + } +} + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B23C(s32 a0); +extern s32 rand(void); + +extern u8 D_801904A8; +extern u8 D_801904B4; + +void func_80188A0C(s32 param_1) +{ + s32 v0; + s32 s0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + s0 = param_1; + *(s32 *)(s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4((void *)s0); + } else { + func_8001CA1C(v0, (s32)&D_801904A8); + func_8012A828((s32)s0, &D_801904B4); + *(s16 *)(s0 + 2) = 1; + func_8012B23C((s32)s0); + + *(s32 *)(s0 + 0x10) = ((rand() & 0xFF) - 0x80) << 12; + *(s32 *)(s0 + 0x18) = ((rand() & 0xFF) - 0x80) << 12; + + *(s16 *)(*(s32 *)(s0 + 0x20) + 0x18) = 0x2000; + *(s16 *)(*(s32 *)(s0 + 0x20) + 0x1A) = 0x2000; + *(s16 *)(*(s32 *)(s0 + 0x20) + 0x1C) = 0x2000; + + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) |= 0x10; + } +} + + +#include "common.h" + +extern u16 D_80126B66; +extern s32 func_80047948(s32 a0); +extern s32 func_8004787C(s32 a0); +extern s32 rand(void); + +void func_80188AE4(s32 param_1) { + s32 v1; + s32 v0; + s16 state; + + v1 = *(s32 *)(param_1 + 0x64); + state = *(s16 *)(*(s32 *)(v1 + 0x20) + 0x1A); + if (state < 0x1801) { + *(s16 *)(v1 + 0xFC) = 0; + *(s16 *)(param_1 + 2) = 2; + *(s16 *)(param_1 + 0xFC) = rand(); + *(s16 *)(param_1 + 0xFE) = rand(); + *(s16 *)(param_1 + 0x5C) = 0x100; + } else { + s16 t; + + *(s16 *)(param_1 + 6) = *(u16 *)(v1 + 6); + t = D_80126B66; + if (t >= 0x3C1) { + s16 arg; + s32 r; + + arg = (t - 0x3C0) << 1; + r = func_80047948(arg); + v1 = *(s32 *)(param_1 + 0x64); + *(s16 *)(param_1 + 0xA) = *(u16 *)(v1 + 0xA) - (r >> 9); + r = func_8004787C(arg); + v1 = *(s32 *)(param_1 + 0x64); + *(s16 *)(param_1 + 0xE) = *(u16 *)(v1 + 0xE) - (r >> 9); + } else { + v0 = *(s32 *)(param_1 + 0x64); + *(s16 *)(param_1 + 0xA) = *(u16 *)(v0 + 0xA) - 8; + v1 = *(s32 *)(param_1 + 0x64); + *(s16 *)(param_1 + 0xE) = *(u16 *)(v1 + 0xE); + } + } +} + + +extern void func_8012CBCC(s32 a0); +extern s32 rand(void); +extern s32 func_8004787C(s32 a0); + +void func_80188BEC(s32 a0) { + register s32 s0 __asm__("$16"); + s32 rnd; + + s0 = a0; + rnd = rand(); + *(u16 *)(s0 + 0xFC) = (*(u16 *)(s0 + 0xFC) + ((rnd & 0xFFF) >> 5)) & 0xFFF; + rnd = rand(); + *(u16 *)(s0 + 0xFC) += (rnd & 0xFFF) >> 5; + *(u16 *)(s0 + 0xFE) &= 0xFFF; + *(u16 *)(s0 + 6) += func_8004787C(*(s16 *)(s0 + 0xFC)) >> 10; + *(u16 *)(s0 + 0xE) += func_8004787C(*(s16 *)(s0 + 0xFE)) >> 10; + *(u16 *)(s0 + 0xA) += 0xC; + if (((((s32 (*)(s32))func_8012CBCC)(s0)) & 0x2000) != 0) { + *(u16 *)(s0 + 2) = 3; + *(s32 *)(s0 + 0x1C) = 0x78; + } +} + + +#include "common.h" + +extern void func_8012C218(void *a0); + +void func_80188CAC(s32 a0) { + s32 v0 = *(s32 *)(a0 + 0x1C) - 1; + *(s32 *)(a0 + 0x1C) = v0; + + if (v0 < 0x1E) { + *(s32 *)(*(s32 *)(a0 + 0x20) + 4) ^= 0x80000000; + if (*(s32 *)(a0 + 0x1C) == 0) { + func_8012C218((void *)a0); + } + } +} + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8001CA1C(s32 a0, s32 a1); + +void func_80188D14(void *a0) +{ + register void *s0 __asm__("$16"); + s32 v0; + + s0 = a0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + *(s16 *)(*(s32 *)((s32)s0 + 0x64) + 0xFC) = 0; + func_8012CAE4(s0); + } else { + extern u8 D_801905A0; + extern u8 D_801905AC; + + func_8001CA1C(v0, (s32)&D_801905A0); + func_8012A828((s32)s0, &D_801905AC); + *(s16 *)((s32)s0 + 0x2) = 1; + + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x2000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x2000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x2000; + + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; + } +} + + +#include "common.h" + +extern void func_8012B23C(s32 a0); +extern u16 D_80126B66; +extern s32 func_80047948(s32 a0); +extern s32 func_8004787C(s32 a0); + +void func_80188DC0(s32 param_1) { + s32 v1; + s32 v0; + s16 state; + + v1 = *(s32 *)(param_1 + 0x64); + state = *(s16 *)(*(s32 *)(v1 + 0x20) + 0x1A); + if (state < 0x1801) { + func_8012B23C((s32)param_1); + *(s16 *)(param_1 + 2) = 2; + *(s16 *)(*(s32 *)(param_1 + 0x64) + 0xFC) = 0; + } else { + s16 t; + + *(s16 *)(param_1 + 6) = *(u16 *)(v1 + 6); + t = D_80126B66; + if (t >= 0x3C1) { + s16 arg; + s32 r; + + arg = (t - 0x3C0) << 1; + r = func_80047948(arg); + v1 = *(s32 *)(param_1 + 0x64); + *(s16 *)(param_1 + 0xA) = *(u16 *)(v1 + 0xA) - (r >> 9); + r = func_8004787C(arg); + v1 = *(s32 *)(param_1 + 0x64); + *(s16 *)(param_1 + 0xE) = *(u16 *)(v1 + 0xE) - (r >> 9); + } else { + v0 = *(s32 *)(param_1 + 0x64); + *(s16 *)(param_1 + 0xA) = *(u16 *)(v0 + 0xA) - 8; + v1 = *(s32 *)(param_1 + 0x64); + *(s16 *)(param_1 + 0xE) = *(u16 *)(v1 + 0xE); + } + } +} + + +extern s32 D_801EC44C; +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_8012C218(void *a0); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_80188EC0(void *arg0) { + if (*(u16 *)(D_801EC44C + 2) == 0x1F) { + *(u16 *)((s32)arg0 + 6) ^= 2; + } else { + s32 i; + + for (i = 0; i < 8; i++) { + func_8012C658(0xCC, i * 0x200, (s32)arg0); + } + func_8012C218(arg0); + func_8002D4C8(0x62A, 0); + } +} + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_80188F4C(void *a0) +{ + register void *s0 __asm__("$16"); + s32 v0; + + s0 = a0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(s0); + } else { + extern u8 D_801905E4[]; + extern u8 D_801905F0[]; + + func_8001CA1C(v0, (s32)&D_801905E4); + func_8012A828((s32)s0, &D_801905F0); + *(s16 *)((s32)s0 + 0x2) = 1; + + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x2800; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x2800; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x2800; + + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; + } +} + + +INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_801887A8", func_80188FF0); + +extern void func_8012C218(void *a0); + +void func_80189094(s32 param_1) { + s32 v0; + + *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) ^= 0x80000000; + v0 = *(s32 *)(param_1 + 0x1C) - 1; + *(s32 *)(param_1 + 0x1C) = v0; + if (v0 == 0) { + func_8012C218((void *)param_1); + } +} + + +extern void func_8012CBCC(s32 a0); + extern void func_8012C218(void *a0); + void func_801890E4(s32 param_1) { + if (((int (*)(void))func_8012CBCC)() != 0) { + ((void (*)(int))func_8012C218)(param_1); + } + } + + +#include "common.h" + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B23C(s32 a0); +extern void func_8012B2CC(s32 a0); +extern void func_8012B14C(s32 a0, s32 a1); +extern s32 rand(void); + +void func_8018911C(void *a0) +{ + extern u8 D_80190688[]; + extern u8 D_801906A0[]; + extern s32 D_801906C0; + + s32 v0; + void *s0; + s32 t; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + s0 = a0; + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(s0); + } else { + func_8001CA1C(v0, (s32)D_80190688); + func_8012A828((s32)s0, (void *)D_801906A0); + + *(s16 *)((s32)s0 + 0x2) = 1; + func_8012B23C((s32)s0); + + t = rand(); + *(s32 *)((s32)s0 + 0x94) = t & 1; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x12) = *(u16 *)((s32)s0 + 0x70); + func_8012B2CC((s32)s0); + + { + s32 *p = &D_801906C0; + t = rand(); + *p = -(((t & 3) + 2) << 16); + func_8012B14C((s32)s0, (s32)p - 8); + } + + t = rand(); + *(s16 *)((s32)s0 + 0x16) = -(t & 7) - 8; + + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x3000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x3000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x3000; + + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; + } +} + + +void func_80189234(void) { +} + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_8018923C(void *a0) +{ + register void *s0 __asm__("$16"); + s32 v0; + + s0 = a0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(s0); + } else { + extern u8 D_801906D0; + extern u8 D_801906F4; + s16 t; + + func_8001CA1C(v0, (s32)&D_801906D0); + func_8012A828((s32)s0, &D_801906F4); + *(s16 *)((s32)s0 + 0x2) = 1; + + t = 0x1800; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = t; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = t; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = t; + + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; + } +} + + +void func_801892E0(s32 arg0) { + s16 var; + s16 t; + s16 idx; + s32 s0; + + extern s32 D_80190748[]; + + s0 = arg0; + var = *(u16 *)(s0 + 0xFC); + t = var >> 1; + idx = t % 6; + func_800183E0(D_80190748[idx]); + *(u16 *)(s0 + 6) -= 8; + if (--*(s32 *)(s0 + 0x1C) == 0) { + *(u16 *)(s0 + 2) = 2; + } +} + + +extern void func_800183E0(s32 a0); +extern s32 func_8012C588(s32 a0, s32 a1); +extern s32 D_80190780[]; + +void func_80189380(s32 arg0) +{ + u16 var; + s16 cmp; + s32 a0; + + var = *(u16 *)(arg0 + 0xFC); + if ((s16)var < 13) { + func_800183E0(D_80190780[(s16)var >> 1]); + cmp = *(s16 *)(arg0 + 0xFC); + if (cmp == 5) { + if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) == 0) { + a0 = func_8012C588(*(s16 *)(arg0 + 0xFE), arg0); + if (a0 != 0) { + *(s32 *)(a0 + 0x64) = *(s32 *)(arg0 + 0x64); + *(s32 *)(a0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4); + *(s32 *)(a0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - 0x40000; + *(s32 *)(a0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC); + *(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) = 8; + } + } + } + } else { + *(s16 *)(arg0 + 2) = 2; + } +} + + +void func_8018947C(s32 arg0) { + extern u8 D_8019079C[]; + u16 var; + s16 cmp; + + if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { + cmp = *(s16 *)(arg0 + 0xFC); + if (cmp == 5) { + *(u16 *)(arg0 + 0xFC) = cmp - 1; + } + } + var = *(u16 *)(arg0 + 0xFC); + if ((s16)var < 9) { + func_800183E0(*(s32 *)((s32)D_8019079C + (((s16)var >> 1) * 4))); + } else { + *(s16 *)(arg0 + 2) = 2; + } +} + + +void func_80189518(s32 arg0) +{ + extern void func_800183E0(s32); + extern u8 D_801CFAFC[]; + extern u8 D_801CFB1C[]; + extern u8 D_80078E78[]; + u8 *base; + s32 a; + s32 b; + s32 cond; + + base = D_80078E78; + if (*(u16 *)(arg0 + 0xFC) & 0xF) { + func_800183E0(D_801CFB1C); + } else { + func_800183E0(D_801CFAFC); + } + + a = *(s16 *)(arg0 + 0xDE); + if (a >= 0x564 && (b = *(s16 *)(base + 0x1A)) < 0x3D) { + cond = b + 0x5A0 < a; + } else { + cond = *(s16 *)(arg0 + 0xDE) > *(s16 *)(base + 0x1A); + } + if (cond == 0) { + *(s16 *)(arg0 + 2) = 2; + *(u8 *)(arg0 + 0xC1) = 0; + *(u16 *)(arg0 + 0x5C) = 0x8000; + } +} + + +extern s32 D_80190748[]; +extern void func_800183E0(s32 a0); +extern void func_8012C218(void*); + +void func_801895CC(arg0) +s32 arg0; +{ + s16 var; + s32 s0; + + extern s32 D_80190748[]; + extern void func_8012C218(void *a0); + + s0 = arg0; + var = *(u16 *)(s0 + 0xFC); + func_800183E0(D_80190748[(var >> 1) % 6]); + *(u16 *)(s0 + 6) += 8; + if (--*(s32 *)(s0 + 0x1C) == 0) { + func_8012C218((void *)s0); + } +} + + +void func_8018966C(void *a0) +{ + register void *s0 __asm__("$16"); + s32 v0; + + extern void func_8012C1B8(void); + extern void func_8012CAE4(void *a0); + extern void func_8001CA1C(s32 a0, s32 a1); + extern void func_8012A828(s32 a0, void *a1); + extern u8 D_8019072C; + extern u8 D_80190738; + extern u8 D_801907D4; + extern u8 D_801907C4; + + s0 = a0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(s0); + } else { + register s32 t __asm__("$2"); + + func_8001CA1C(v0, (s32)&D_8019072C); + func_8012A828((s32)s0, &D_80190738); + *(s16 *)((s32)s0 + 0x2) = 1; + *(s8 *)((s32)s0 + 0xC0) = 1; + *(s32 *)((s32)s0 + 0xBC) = (s32)&D_801907D4; + *(u16 *)((s32)s0 + 0x5C) = 0x8000; + __asm__("" ::: "memory"); + t = *(s32 *)((s32)s0 + 0xC4); + *(s32 *)((s32)s0 + 0x58) = (s32)&D_801907C4; + *(s32 *)((s32)s0 + 0xC4) = t | 0x2; + *(s8 *)((s32)s0 + 0xC1) = 0; + *(s32 *)((s32)s0 + 0xB4) = 0; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x4000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x4000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x4000; + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; + *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) = 0x01000000; + *(s32 *)((s32)s0 + 0x1C) = 0x20; + *(s16 *)((s32)s0 + 0x10A) = 0x5; + } +} + + +void func_80189768(s32 arg0) { + s16 var; + s16 t; + s16 idx; + s32 s0; + + extern s32 D_8019081C[]; + + s0 = arg0; + var = *(u16 *)(s0 + 0xFC); + t = var >> 1; + idx = t % 6; + func_800183E0(D_8019081C[idx]); + *(u16 *)(s0 + 6) -= 8; + if (--*(s32 *)(s0 + 0x1C) == 0) { + *(u16 *)(s0 + 2) = 2; + } +} + + +extern void func_800183E0(s32 a0); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void (*D_80190854[])(void *); + +void func_80189808(s32 arg0) +{ + u16 var; + s16 cmp; + s32 a0; + + var = *(u16 *)(arg0 + 0xFC); + if ((s16)var < 13) { + func_800183E0((s32)D_80190854[(s16)var >> 1]); + cmp = *(s16 *)(arg0 + 0xFC); + if (cmp == 5) { + if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) == 0) { + a0 = func_8012C588(*(s16 *)(arg0 + 0xFE), arg0); + if (a0 != 0) { + *(s32 *)(a0 + 0x64) = *(s32 *)(arg0 + 0x64); + *(s32 *)(a0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4); + *(s32 *)(a0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - 0x40000; + *(s32 *)(a0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC); + *(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) = 8; + } + } + } + } else { + *(s16 *)(arg0 + 2) = 2; + } +} + + +extern s32 func_8014CB2C(void); +extern u8 D_80190870[]; +extern void func_800183E0(s32 a0); + +void func_80189904(arg0) +s32 arg0; +{ + extern u8 D_80190870[]; + u16 var; + s16 cmp; + + if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { + cmp = *(s16 *)(arg0 + 0xFC); + if (cmp == 5) { + *(u16 *)(arg0 + 0xFC) = cmp - 1; + } + } + var = *(u16 *)(arg0 + 0xFC); + if ((s16)var < 9) { + func_800183E0(*(s32 *)((s32)D_80190870 + (((s16)var >> 1) * 4))); + } else { + *(s16 *)(arg0 + 2) = 2; + } +} + + +void func_801899A0(s32 arg0) +{ + extern void func_800183E0(s32); + extern u8 D_801D55BC[]; + extern u8 D_801D55DC[]; + extern u8 D_80078E78[]; + u8 *base; + s32 a; + s32 b; + s32 cond; + + base = D_80078E78; + if (*(u16 *)(arg0 + 0xFC) & 0xF) { + func_800183E0(D_801D55DC); + } else { + func_800183E0(D_801D55BC); + } + + a = *(s16 *)(arg0 + 0xDE); + if (a >= 0x564 && (b = *(s16 *)(base + 0x1A)) < 0x3D) { + cond = b + 0x5A0 < a; + } else { + cond = *(s16 *)(arg0 + 0xDE) > *(s16 *)(base + 0x1A); + } + if (cond == 0) { + *(s16 *)(arg0 + 2) = 2; + *(u8 *)(arg0 + 0xC1) = 0; + *(u16 *)(arg0 + 0x5C) = 0x8000; + } +} + + +void func_80189A54(s32 arg0) { + s16 var; + s32 s0; + + extern s32 D_8019081C[]; + extern void func_8012C218(void *a0); + + s0 = arg0; + var = *(u16 *)(s0 + 0xFC); + func_800183E0(D_8019081C[(var >> 1) % 6]); + *(u16 *)(s0 + 6) += 8; + if (--*(s32 *)(s0 + 0x1C) == 0) { + func_8012C218((void *)s0); + } +} + + +void func_80189AF4(void *a0) +{ + register void *s0 __asm__("$16"); + s32 v0; + + extern void func_8012C1B8(void); + extern void func_8012CAE4(void *a0); + extern void func_8001CA1C(s32 a0, s32 a1); + extern void func_8012A828(s32 a0, void *a1); + extern u8 D_80190800; + extern u8 D_8019080C; + extern u8 D_80190898; + extern u8 D_801907C4; + + s0 = a0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(s0); + } else { + register s32 t __asm__("$2"); + + func_8001CA1C(v0, (s32)&D_80190800); + func_8012A828((s32)s0, (void *)&D_8019080C); + *(s16 *)((s32)s0 + 0x2) = 1; + *(s8 *)((s32)s0 + 0xC0) = 1; + *(s32 *)((s32)s0 + 0xBC) = (s32)&D_80190898; + *(u16 *)((s32)s0 + 0x5C) = 0x8000; + __asm__("" ::: "memory"); + t = *(s32 *)((s32)s0 + 0xC4); + *(s32 *)((s32)s0 + 0x58) = (s32)&D_801907C4; + *(s32 *)((s32)s0 + 0xC4) = t | 0x2; + *(s8 *)((s32)s0 + 0xC1) = 0; + *(s32 *)((s32)s0 + 0xB4) = 0; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x4000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x4000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x4000; + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; + *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) = 0x01000000; + *(s32 *)((s32)s0 + 0x1C) = 0x20; + *(s16 *)((s32)s0 + 0x10A) = 0x5; + } +} + + +void func_80189BF0(s32 arg0) { + s16 var; + s32 s0; + + extern s32 D_801908E0[]; + extern void func_800183E0(s32 a0); + + s0 = arg0; + var = *(u16 *)(s0 + 0xFC); + func_800183E0(D_801908E0[(var >> 1) % 6]); + *(u16 *)(s0 + 6) += 8; + if (--*(s32 *)(s0 + 0x1C) != 0) { + return; + } + *(u16 *)(s0 + 2) = 2; +} + + +extern void func_800183E0(s32 a0); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void (*D_80190918[])(void *); + +void func_80189C90(s32 arg0) +{ + u16 var; + s16 cmp; + s32 a0; + + var = *(u16 *)(arg0 + 0xFC); + if ((s16)var < 13) { + func_800183E0((s32)D_80190918[(s16)var >> 1]); + cmp = *(s16 *)(arg0 + 0xFC); + if (cmp == 5) { + if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) == 0) { + a0 = func_8012C588(*(s16 *)(arg0 + 0xFE), arg0); + if (a0 != 0) { + *(s32 *)(a0 + 0x64) = *(s32 *)(arg0 + 0x64); + *(s32 *)(a0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4); + *(s32 *)(a0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - 0x40000; + *(s32 *)(a0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC); + *(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) = 8; + } + } + } + } else { + *(s16 *)(arg0 + 2) = 2; + } +} + + +extern void func_800183E0(s32 a0); +extern s32 func_8014CB2C(void); +extern s32 D_80190934[]; + +void func_80189D8C(s32 arg0) +{ + u16 var; + s16 cmp; + + if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { + cmp = *(s16 *)(arg0 + 0xFC); + if (cmp == 5) { + *(u16 *)(arg0 + 0xFC) = cmp - 1; + } + } + var = *(u16 *)(arg0 + 0xFC); + if ((s16)var < 9) { + func_800183E0(D_80190934[(s16)var >> 1]); + } else { + *(s16 *)(arg0 + 2) = 2; + } +} + + +void func_80189E28(s32 arg0) +{ + extern void func_800183E0(s32); + extern u8 D_801E0B3C[]; + extern u8 D_801E0B5C[]; + extern u8 D_80078E78[]; + u8 *base; + s32 a; + s32 b; + s32 cond; + + base = D_80078E78; + if (*(u16 *)(arg0 + 0xFC) & 0xF) { + func_800183E0(D_801E0B5C); + } else { + func_800183E0(D_801E0B3C); + } + + a = *(s16 *)(arg0 + 0xDE); + if (a >= 0x564 && (b = *(s16 *)(base + 0x1A)) < 0x3D) { + cond = b + 0x5A0 < a; + } else { + cond = *(s16 *)(arg0 + 0xDE) > *(s16 *)(base + 0x1A); + } + if (cond == 0) { + *(s16 *)(arg0 + 2) = 2; + *(u8 *)(arg0 + 0xC1) = 0; + *(u16 *)(arg0 + 0x5C) = 0x8000; + } +} + + +void func_80189EDC(s32 arg0) { + s16 var; + s32 s0; + + extern s32 D_801908E0[]; + extern void func_8012C218(void *a0); + + s0 = arg0; + var = *(u16 *)(s0 + 0xFC); + func_800183E0(D_801908E0[(var >> 1) % 6]); + *(u16 *)(s0 + 6) -= 8; + if (--*(s32 *)(s0 + 0x1C) == 0) { + func_8012C218((void *)s0); + } +} + + +void func_80189F7C(void *a0) +{ + register void *s0 __asm__("$16"); + s32 v0; + + extern void func_8012C1B8(void); + extern void func_8012CAE4(void *a0); + extern void func_8001CA1C(s32 a0, s32 a1); + extern void func_8012A828(s32 a0, void *a1); + extern u8 D_801908C4; + extern u8 D_801908D0; + extern u8 D_8019095C; + extern u8 D_801907C4; + + s0 = a0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(s0); + } else { + register s32 t __asm__("$2"); + register s32 v1 __asm__("$3"); + + func_8001CA1C(v0, (s32)&D_801908C4); + func_8012A828((s32)s0, (void *)&D_801908D0); + *(s16 *)((s32)s0 + 0x2) = 1; + *(s8 *)((s32)s0 + 0xC0) = 1; + *(s32 *)((s32)s0 + 0xBC) = (s32)&D_8019095C; + *(u16 *)((s32)s0 + 0x5C) = 0x8000; + __asm__("" ::: "memory"); + v1 = 0x4000; + t = *(s32 *)((s32)s0 + 0xC4); + *(s32 *)((s32)s0 + 0x58) = (s32)&D_801907C4; + *(s32 *)((s32)s0 + 0xC4) = t | 0x2; + *(s8 *)((s32)s0 + 0xC1) = 0; + *(s32 *)((s32)s0 + 0xB4) = 0; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = v1; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = v1; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = v1; + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; + *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) = 0x01000000; + *(s32 *)((s32)s0 + 0x1C) = 0x20; + *(s16 *)((s32)s0 + 0x10A) = 0x5; + } +} + + +typedef struct { + u8 pad00[2]; /* 0x00 */ + s16 unk2; /* 0x02 */ + u8 pad04[2]; /* 0x04 */ + s16 unk6; /* 0x06 */ + u8 pad08[0x14];/* 0x08 */ + s32 unk1C; /* 0x1C */ + u8 pad20[0xDC];/* 0x20 */ + u16 unkFC; /* 0xFC */ +} Struct_8018A078; + +extern s32 D_801909A4[]; +extern void func_800183E0(s32 a0); + +void func_8018A078(Struct_8018A078 *arg0) +{ + func_800183E0(D_801909A4[((s16)arg0->unkFC >> 1) % 6]); + arg0->unk6 = arg0->unk6 + 8; + if (--arg0->unk1C == 0) { + arg0->unk2 = 2; + } +} + + +extern void func_800183E0(s32 a0); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void (*D_801909DC[])(void *); + +void func_8018A118(s32 arg0) { + u16 var; + s16 cmp; + s32 a0; + + var = *(u16 *)(arg0 + 0xFC); + if ((s16)var < 13) { + func_800183E0((s32)D_801909DC[(s16)var >> 1]); + cmp = *(s16 *)(arg0 + 0xFC); + if (cmp == 5) { + if (*(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) == 0) { + a0 = func_8012C588(*(s16 *)(arg0 + 0xFE), arg0); + if (a0 != 0) { + *(s32 *)(a0 + 0x64) = *(s32 *)(arg0 + 0x64); + *(s32 *)(a0 + 4) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 4); + *(s32 *)(a0 + 8) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 8) - 0x40000; + *(s32 *)(a0 + 0xC) = *(s32 *)(*(s32 *)(arg0 + 0x64) + 0xC); + *(s16 *)(*(s32 *)(arg0 + 0x64) + 0xFC) = 8; + } + } + } + } else { + *(s16 *)(arg0 + 2) = 2; + } +} + + +void func_8018A214(s32 arg0) { + extern u8 D_801909F8[]; + s16 var; + s16 cmp; + + if ((func_8014CB2C() & 0x7FFFFFFF) == 2) { + cmp = *(s16 *)(arg0 + 0xFC); + if (cmp == 5) { + *(s16 *)(arg0 + 0xFC) = cmp - 1; + } + } + var = *(u16 *)(arg0 + 0xFC); + if ((s16)var < 9) { + func_800183E0(*(s32 *)((s32)D_801909F8 + (((s16)var >> 1) * 4))); + } else { + *(s16 *)(arg0 + 2) = 2; + } +} + + +void func_8018A2B0(s32 arg0) +{ + extern void func_800183E0(s32); + extern u8 D_801DB05C[]; + extern u8 D_801DB07C[]; + extern u8 D_80078E78[]; + u8 *base; + s32 a; + s32 b; + s32 cond; + + base = D_80078E78; + if (*(u16 *)(arg0 + 0xFC) & 0xF) { + func_800183E0(D_801DB07C); + } else { + func_800183E0(D_801DB05C); + } + + a = *(s16 *)(arg0 + 0xDE); + if (a >= 0x564 && (b = *(s16 *)(base + 0x1A)) < 0x3D) { + cond = b + 0x5A0 < a; + } else { + cond = *(s16 *)(arg0 + 0xDE) > *(s16 *)(base + 0x1A); + } + if (cond == 0) { + *(s16 *)(arg0 + 2) = 2; + *(u8 *)(arg0 + 0xC1) = 0; + *(u16 *)(arg0 + 0x5C) = 0x8000; + } +} + + +void func_8018A364(s32 arg0) { + s16 var; + s32 s0; + + extern s32 D_801909A4[]; + extern void func_8012C218(void *a0); + + s0 = arg0; + var = *(u16 *)(s0 + 0xFC); + func_800183E0(D_801909A4[(var >> 1) % 6]); + *(u16 *)(s0 + 6) -= 8; + if (--*(s32 *)(s0 + 0x1C) == 0) { + func_8012C218((void *)s0); + } +} + + +void func_8018A404(void *a0) { + register void *s0 __asm__("$16"); + s32 v0; + + extern void func_8012C1B8(void); + extern void func_8012CAE4(void *a0); + extern void func_8001CA1C(s32 a0, s32 a1); + extern void func_8012A828(s32 a0, void *a1); + extern u8 D_80190988; + extern u8 D_80190994; + extern u8 D_80190A20; + extern u8 D_801907C4; + + s0 = a0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(s0); + } else { + register s32 t __asm__("$2"); + + func_8001CA1C(v0, (s32)&D_80190988); + func_8012A828((s32)s0, (void *)&D_80190994); + *(s16 *)((s32)s0 + 0x2) = 1; + *(s8 *)((s32)s0 + 0xC0) = 1; + *(s32 *)((s32)s0 + 0xBC) = (s32)&D_80190A20; + *(u16 *)((s32)s0 + 0x5C) = 0x8000; + __asm__("" ::: "memory"); + t = *(s32 *)((s32)s0 + 0xC4); + *(s32 *)((s32)s0 + 0x58) = (s32)&D_801907C4; + *(s32 *)((s32)s0 + 0xC4) = t | 0x2; + *(s8 *)((s32)s0 + 0xC1) = 0; + *(s32 *)((s32)s0 + 0xB4) = 0; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x4000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x4000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x4000; + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; + *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) = 0x01000000; + *(s32 *)((s32)s0 + 0x1C) = 0x20; + *(s16 *)((s32)s0 + 0x10A) = 0x5; + } +} + + +#include "common.h" + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B2CC(s32 a0); + +extern void func_8001CA1C(s32 a0, s32 a1); +extern void func_8012B23C(s32 a0); +extern void func_8012B1B4(s32 a0, s32 a1); + +void func_8018A500(void *a0) +{ + register void *s0 __asm__("$16"); + s32 v0; + + s0 = a0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)s0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(s0); + } else { + extern u8 D_80190B58; + extern u8 D_80190BA0; + extern u8 D_80190BD8; + s32 t; + u16 v1; + + func_8001CA1C(v0, (s32)&D_80190B58); + func_8012A828((s32)s0, &D_80190BA0); + *(s16 *)((s32)s0 + 0x2) = 1; + func_8012B23C((s32)s0); + + t = (rand() & 0x3FF) + 0x600; + v1 = (*(u16 *)((s32)s0 + 0x70) + t) & 0xFFF; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x12) = v1; + func_8012B2CC((s32)s0); + + func_8012B1B4((s32)s0, (s32)&D_80190BD8); + + *(s16 *)((s32)s0 + 0x16) = -((rand() & 3) + 5); + + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x18) = 0x3000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1A) = 0x3000; + *(s16 *)(*(s32 *)((s32)s0 + 0x20) + 0x1C) = 0x3000; + + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x2C) |= 0x10; + *(s32 *)(*(s32 *)((s32)s0 + 0x20) + 0x4) |= 0x50000000; + } +} + + +extern void func_8012C218(void *a0); +extern void func_8012CBCC(s32 a0); + +void func_8018A618(s32 arg0) { + if ((((s32 (*)(s32))func_8012CBCC)(arg0) != 0) || (*(s16 *)((s32)arg0 + 0xA) >= 0x200)) { + func_8012C218((void *)arg0); + } +} + + + + +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); + +void func_8018A664(s32 param_1) +{ + + extern u8 D_800D387C[]; + extern u8 D_800D3888[]; + *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_800D387C; + + *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000; + + *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x9c; + + func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, (s32)&D_800D3888); + + *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; +} + + +extern s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_801292C8(u8 *a0); +extern void func_8012931C(void *); + +void func_8018A6E0(s32 a0) { + s32 s0 = a0; + func_8012931C((void *)a0); + if (((s32 (*)(s32, void *))func_80128ED8)(*(s32 *)(s0 + 0x20), (void *)(s0 + 0x24)) != 0) { + ((void (*)(s32))func_801292C8)(s0); + } +} + + + +/* ---- externs ------------------------------------------------------------ */ +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_800233CC(void *a0, unsigned short a1); + + +/* align-1 4-byte block: lowers via emit_block_move (unaligned lwl/lwr + swl/swr) + * with ZERO memcpy-symbol reference, so the TU's `extern memcpy` cannot turn + * this into a CALL. (house idiom, cf. func_8017B238 / func_8017B614) */ + +void func_8018A724(s32 param_1) +{ + + extern u8 D_801EC458; + extern u8 D_801EC45C; + extern u8 D_801EA170; + extern u8 D_801EA174; + func_8001CD50(*(s32 *)(param_1 + 0x20), (s32)&D_801EC458); + + *(u16 *)(param_1 + 0xA) -= 0x100; + *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000; + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0x400; + *(s16 *)(param_1 + 0x2C) = 0x10; + + func_800233CC(&D_801EC458, 0x10); + + *(Blk4_8018CE04_8018A724 *)&D_801EC458 = *(Blk4_8018CE04_8018A724 *)&D_801EA170; + *(Blk4_8018CE04_8018A724 *)&D_801EC45C = *(Blk4_8018CE04_8018A724 *)&D_801EA174; + + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1E) = 0xC00; + *(u16 *)(param_1 + 2) += 1; +} + + +void func_8018A800(void *a0) +{ + s16 val; + extern u8 D_801EC45C; + + val = *(s16 *)((s32)a0 + 0x2C); + if (val < 0x700) { + *(s16 *)((s32)a0 + 0x2C) = val + 0x30; + func_801860F8(&D_801EC45C, -4); + func_800233CC(&D_801EC45C - 4, *(u16 *)((s32)a0 + 0x2C)); + } else { + func_801292C8(a0); + } +} + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C810(s32 a0, s32 a1); + +extern u8 D_801E2B98; +extern u8 D_801E3348; + +void func_8018A878(s32 param_1) +{ + s32 v0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(s32))func_8012CAE4)(param_1); + return; + } + + ((void (*)(s32, s32))func_8001C810)(v0, (s32)&D_801E2B98); + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(param_1 + 0xCC) = v0; + if (v0 == 0) { + ((void (*)(s32))func_8012CAE4)(param_1); + v0 = *(s32 *)(param_1 + 0x20); + *(s16 *)v0 = 0; + return; + } + + ((void (*)(s32, s32))func_8001C810)(v0, (s32)&D_801E3348); + + *(u8 *)(param_1 + 0xC0) = 0; + *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000; + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2C) |= 0x10; + *(u32 *)(*(s32 *)(param_1 + 0xCC) + 4) |= 0x50000000; + *(u16 *)(*(s32 *)(param_1 + 0xCC) + 0x2C) |= 0x10; + + func_801861DC((s32 *)param_1); +} + + +void func_8018A960(s32 param_1) +{ + s32 a1; + u16 v0; + u16 v1; + + a1 = *(s32 *)(param_1 + 0xCC); + v1 = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x18); + if (v1 < 0x3000) { + s32 p20; + + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x18) = v1 + 0x100; + + p20 = *(s32 *)(param_1 + 0x20); + v1 = *(u16 *)(p20 + 0x18); + *(u16 *)(p20 + 0x1C) = v1; + *(u16 *)(p20 + 0x1A) = v1; + + v0 = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = v0 + 0x100; + + *(u16 *)(a1 + 0x12) = *(u16 *)(a1 + 0x12) - 0x100; + + *(u16 *)(a1 + 0x8) = *(u16 *)(param_1 + 0x6) + *(u16 *)(param_1 + 0x50); + *(u16 *)(a1 + 0xA) = *(u16 *)(param_1 + 0xA) + *(u16 *)(param_1 + 0x52); + *(u16 *)(a1 + 0xC) = *(u16 *)(param_1 + 0xE) + *(u16 *)(param_1 + 0x54); + + *(u16 *)(a1 + 0x18) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x18); + *(u16 *)(a1 + 0x1A) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1A); + *(u16 *)(a1 + 0x1C) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x1C); + } else { + func_8018620C((u8 *)param_1); + } +} + + +extern s32 func_8012BEE8(s32 a0); +extern void func_80186234(); +extern void func_80016450(s32 a0, s32 a1); + +void func_8018AA58(s32 param_1) +{ + switch (*(u16 *)(param_1 + 0x34)) { + case 0: + { + u8 v0 = *(u8 *)(param_1 + 0xFC) + 0x10; + *(u8 *)(param_1 + 0xFC) = v0; + if (v0 >= 0xF1) { + *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x80000000; + *(u32 *)(*(s32 *)(param_1 + 0xCC) + 4) |= 0x80000000; + *(s32 *)(param_1 + 0x1C) = 8; + *(u16 *)(param_1 + 0x34) += 1; + } + break; + } + case 1: + if (func_8012BEE8(param_1) != 0) { + func_80186234(param_1); + } + break; + } + + func_80016450(*(u8 *)(param_1 + 0xFC), 0); +} + + +extern void func_8012C218(void *a0); +extern void func_80016450(s32 a0, s32 a1); + +void func_8018AB28(s32 param_1) +{ + u8 b; + + b = *(u8 *)(param_1 + 0xFC) - 3; + *(u8 *)(param_1 + 0xFC) = b; + if (b >= 9) { + func_80016450(b, 0); + } else { + func_8012C218((void *)param_1); + } +} + + +void func_8018AB7C(void *arg0) { + s16 temp_v0; + s16 temp_v0_2; + + temp_v0 = *(s16 *)((s32)arg0 + 0xFC); + if (temp_v0 != 0) { + temp_v0_2 = temp_v0 - 1; + *(s16 *)((s32)arg0 + 0xFC) = temp_v0_2; + if ((temp_v0_2 << 0x10) == 0) { + *(s16 *)((s32)arg0 + 2) = 3; + *(u16 *)((s32)arg0 + 0xA) -= 0x80; + *(s16 *)((s32)arg0 + 0x98) = 1; + } + } +} + + +#include "common.h" + +extern void func_8012B23C(s32 a0); +extern s32 rand(void); + +void func_8018ABC4(void *a0) +{ + void *s0; + s32 t; + + s0 = a0; + *(s16 *)((s32)s0 + 0x5C) = 0; + func_8012B23C((s32)s0); + + t = rand(); + *(s16 *)((s32)s0 + 0xFC) = (t & 0xFF) - 0x80; + t = rand(); + *(s16 *)((s32)s0 + 0xFE) = (t & 0xFF) - 0x80; + t = rand(); + *(s16 *)((s32)s0 + 0x100) = (t & 0xFF) - 0x80; + t = rand(); + *(s16 *)((s32)s0 + 0x12) = (t & 0xF) - 8; + t = rand(); + *(s16 *)((s32)s0 + 0x1A) = (t & 0xF) - 8; + + *(s16 *)((s32)s0 + 0x16) = -0x38; + *(s32 *)((s32)s0 + 0x1C) = 0x5A; + *(s16 *)((s32)s0 + 2) = 4; +} + + +#include "common.h" + +extern void func_8012CBCC(s32 a0); +extern void func_8012C218(void *a0); + +void func_8018AC5C(s32 a0) { + s32 s0 = a0; + s32 v0 = ((s32 (*)(s32))func_8012CBCC)(a0); + s32 cnt; + + if (v0 != 0) { + *(u16 *)(s0 + 0xFC) = -*(u16 *)(s0 + 0xFC); + *(u16 *)(s0 + 0xFE) = -*(u16 *)(s0 + 0xFE); + *(u16 *)(s0 + 0x100) = -*(u16 *)(s0 + 0x100); + + if (v0 & 0x8000) { + *(s32 *)(s0 + 0x10) = -*(s32 *)(s0 + 0x10); + *(s32 *)(s0 + 0x18) = -*(s32 *)(s0 + 0x18); + } else { + *(s32 *)(s0 + 0x14) = -*(s32 *)(s0 + 0x14); + } + } + + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x10) += *(u16 *)(s0 + 0xFC); + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x12) += *(u16 *)(s0 + 0xFE); + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x14) += *(u16 *)(s0 + 0x100); + + cnt = *(s32 *)(s0 + 0x1C) - 1; + *(s32 *)(s0 + 0x1C) = cnt; + + if (cnt < 0x10) { + *(s32 *)(*(s32 *)(s0 + 0x20) + 4) ^= 0x80000000; + + if (*(s32 *)(s0 + 0x1C) == 0) { + func_8012C218((void *)s0); + } + } +} + + +extern void func_8013CB84(void); + void func_8018AD80(void) { + func_8013CB84(); + } + + +extern void func_8013C414(void *a0, void *a1); + extern s32 D_80191734; + extern s32 D_801E461C; + void func_8018ADA0(void) { + func_8013C414(&D_80191734, &D_801E461C); + } + + +extern s32 func_8013C360(s32 *a0); +void func_8018ADD0(void) { + + extern s32 D_801E461C; + func_8013C360(&D_801E461C); +} + + +int func_8018ADF8(int param_1) + +{ + int uVar1; + + uVar1 = 0x18; + if (param_1 - 0x96U < 0x32) { + uVar1 = 0x21; + } + return uVar1; +} + + + +extern void (*D_80190CAC[])(void); + +void func_8018AE14(void *a0) { + D_80190CAC[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +s32 func_8018AE50(void *a0, s32 *p) { + s32 cur = *(s32 *)((s32)a0 + 0xDC); + + if (p[0] != cur) { + p += 2; + for (;;) { + s32 t = p[0]; + if (t == 0) { + return cur; + } + p += 2; + if (t == cur) { + break; + } + } + p -= 2; + } + return p[1]; +} + + + +// @class: plumbing +// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(int, int); +extern int D_80190C9C; + +void func_8018AE98(int param_1) +{ + int v0; + + v0 = ((int (*)(void))func_8012C1B8)(); + *(int *)(param_1 + 0x20) = v0; + if (v0 == 0) { + ((void (*)(int))func_8012CAE4)(param_1); + } else { + func_8001C214(v0, 0); + *(int *)(param_1 + 0x58) = (int)&D_80190C9C; + *(short *)(param_1 + 0x5c) = 0x80; + *(unsigned short *)(param_1 + 2) += 1; + } +} + + +extern s32 func_80029504(void); +extern s32 func_80029178(s32); +extern s32 D_80190C8C; + +void func_8018AF04(void *a0) { + if (func_80029504() == 0xC8) { + if ((func_80029178(0x118) & 0xFF) == 0) { + *(s32 *)((s32)a0 + 0xDC) = func_8018AE50(a0, &D_80190C8C); + } + } +} + + + +extern void (*D_80190E28[])(void); + +void func_8018AF60(void *a0) { + D_80190E28[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +extern void func_801465C0(void); +extern void func_80146C3C(void); + +extern void func_8001CBDC(s32 a0, s32 a1, s32 a2, s32 a3); + + + +void func_8018AF9C(void *a0) { + + extern s16 D_80190CB4[][2]; + extern u8 D_80190CE0[]; + extern EffectSlot4_8018AF9C D_80190CEC[]; + extern u8 D_80190D18[]; + extern EffectSlot4_8018AF9C D_80190D50; + extern EffectSlot4_8018AF9C D_80190D78; + extern EffectSlot4_8018AF9C D_80190D7C; + extern EffectSlot4_8018AF9C D_80190DAC; + extern EffectSlot4_8018AF9C D_80190DB0; + extern EffectSlot4_8018AF9C D_80190DE0; + extern EffectSlot4_8018AF9C D_80190DE4; + extern EffectSlot4_8018AF9C D_80190E14; + extern EffectSlot4_8018AF9C D_80190E18; + 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_80190D18, D_80190CB4[idx][0], D_80190CB4[idx][1]); + uVar1 = D_80190CE0[*(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_80190E14 + 4 == &D_80190E18`, 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_8018AF9C *)((s32)&D_80190E14 + 4) = D_80190CEC[*(s32 *)((s32)s0 + 0x2C)]; + if (COND) { D_80190E14 = D_80190E18; } else { D_80190E14 = D_80190E18; } + if (COND) { D_80190DE4 = D_80190E14; } else { D_80190DE4 = D_80190E14; } + if (COND) { D_80190DE0 = D_80190DE4; } else { D_80190DE0 = D_80190DE4; } + if (COND) { D_80190DB0 = D_80190DE0; } else { D_80190DB0 = D_80190DE0; } + if (COND) { D_80190DAC = D_80190DB0; } else { D_80190DAC = D_80190DB0; } + if (COND) { D_80190D7C = D_80190DAC; } else { D_80190D7C = D_80190DAC; } +#undef COND + D_80190D78 = D_80190D7C; + D_80190D50 = D_80190D78; + + *(s16 *)((s32)s0 + 0x2) = *(s16 *)((s32)s0 + 0x2) + 1; + } else { + ((void (*)(void *))func_80146C3C)(s0); + } +} + + +extern s32 func_8018B1DC(void); + s32 func_8018B19C(void) { + return func_8018B1DC(); + } + + +extern void func_80146C3C(void); + void func_8018B1BC(void) { + func_80146C3C(); + } + + + +extern void func_80017254(void *a0); +extern void func_800176F0(void *a0); + +void aF8018B1DC(void) __asm__("func_8018B1DC"); +void aF8018B1DC(void) +{ + + extern u8 D_80190D30[]; + extern u8 D_80190D58[]; + u8 *p; + s32 i; + + func_80017254(D_80190D30); + i = 0; + p = D_80190D58; + do { + func_800176F0(p); + i++; + p += 0x34; + } while (i < 4); +} + + +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); + +void func_8018B234(s32 a0) +{ + ((void (*)(s32, s32, s32, s32))func_80146994)(0x28, 0, a0, 0); +} + + + +extern s32 func_8014C050(s32 a0, s32 a1); + +void func_8018B260(void) { + + extern s32 D_80126B58; + s32 t; + + t = func_8014C050((s32)&D_80126B58, 0x28); + if (t != 0) { + *(u16 *)(t + 2) += 1; + } +} + + + +extern void (*D_80190E8C[])(void); + +void func_8018B2A4(void *a0) { + D_80190E8C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8018B310(s32 *a0); +extern void func_80146CA0(void *a0); + +void func_8018B2E0(s32 *a0) { + func_8018B310(a0); + ((s32 (*)(s32))func_80146CA0)((s32)a0); +} + + +#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_801477E8(s32 *a0, s32 a1); +extern void func_80149020(s32 *a0); +extern void func_80147324(s32 a0); +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_80146CA0(void *a0); +extern s32 D_80062C14; +extern u8 D_80190E34[]; + +void func_8018B310(s32 *a0) { + func_80019064(&D_80062C14); + func_801511E0((s32)a0); + func_80154274(a0, (s32)&D_80190E34); + *(s32 *)((s32)a0 + 0x234) = 0; + func_801477E8(a0, -0x400000); + func_80149020(a0); + func_80147324(0x451); + func_80146E90(a0, 0x12C); + func_80146CA0((void *)a0); +} + + +#include "common.h" + +/* Local layout for the sub-struct at *(a0+0x20). Only the two BAM-style + * fields this function touches are named; sizes come from the load/store + * widths seen in the target .s (lhu/lh/sh at +0x10 and +0x12). */ +typedef struct SubEnt8018B390 { + u8 pad0[0x10]; + s16 unk10; /* +0x10 */ + s16 unk12; /* +0x12 */ +} SubEnt8018B390; + +/* Local layout for the a0 struct. Only the offsets this function touches + * are named (0x20 ptr, 0x34 s32, 0xB8/0xBA u16 pair, 0x234 s32). */ +typedef struct Ent8018B390 { + u8 pad0[0x20]; + SubEnt8018B390 *unk20; /* +0x20 */ + u8 pad24[0x34 - 0x24]; + s32 unk34; /* +0x34 */ + u8 pad38[0xB8 - 0x38]; + u16 unkB8; /* +0xB8 */ + u16 unkBA; /* +0xBA */ + u8 padBC[0x234 - 0xBC]; + s32 unk234; /* +0x234 */ +} Ent8018B390; + +extern void func_80149020(s32 *a0); +extern void func_80148038(s32 a0, s32 a1); +extern void func_80147460(s32 a0); +extern s32 func_801535F4(void *arg0); +extern void func_8018B540(); +extern void func_80159B3C(void *a0); +extern void func_8015BF48(s32 *a0); +extern s32 func_80146E98(s32 a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_80165718(s32 a0); + +void func_8018B390(void *a0) { + Ent8018B390 *s0 = a0; + s32 v1; + s32 pad[8]; + + func_80149020((s32 *)a0); + + s0->unk20->unk12 = (s0->unk20->unk12 + 0x5B) & 0xFFF; + s0->unk20->unk10 = (*(u16 *)&s0->unk20->unk10 - 0x16) & 0xFFF; + if (s0->unk20->unk10 < 0xC00) { + s0->unk20->unk10 = -0x400; + } + + func_80148038((s32)s0, 0x10000); + func_80147460((s32)s0); + + if (s0->unk234 == 0 && s0->unk34 >= 0 && (s0->unkB8 & 0x8000)) { + s0->unkB8 = s0->unkBA; + } + + v1 = func_801535F4(s0); + switch (v1) { + case 1: + func_8018B540(s0); + func_80159B3C(s0); + func_80146A6C(2, s0, 0, 0, 0, 1, 0); + break; + case 2: + func_8018B540(s0); + func_8015BF48((s32 *)s0); + func_80146A6C(2, s0, 0, 0, 0, 1, 0); + break; + case 0: + default: + if (func_80146E98((s32)s0) == 0) { + return; + } + func_8018B540(s0); + func_80159B3C(s0); + func_80146A6C(2, s0, 0, 0, 0, 1, 0); + break; + } + + func_80165718((s32)s0); +} + + +extern void func_8014BC44(s32 a0, s32 a1); +extern void func_80151664(void); + +void func_8018B540(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); +} + + + +extern void (*D_80190EB4[])(void); + +void func_8018B588(void *a0) { + D_80190EB4[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern void func_8018B5F4(s32 arg0); + extern void func_80146CA0(void *a0); + void func_8018B5C4(s32 arg0) { + func_8018B5F4(arg0); + ((s32 (*)(s32))func_80146CA0)(arg0); + } + + +extern void func_80019064(void *a0); +extern int func_801511E0(int arg); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); +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 u8 D_80190E34[]; + +void func_8018B5F4(s32 arg0) { + s32 *s0 = (s32 *)arg0; + s32 t; + + func_80019064(&D_80062C14); + func_801511E0((int)s0); + t = (*(u16 *)((s32)s0 + 0x42) + 0x800) & 0xFFF; + *(u16 *)(*(s32 *)((s32)s0 + 0x20) + 0x12) = (u16)t; + func_80154274(s0, (s32)&D_80190E34); + func_80146E90(s0, 0x20); + func_80146DE8(s0, 0, 0xffff0000, 0xffe80000); + func_801477E8(s0, 0xfff00000); + func_80149020(s0); + func_80147324(0x451); + func_80146CA0(s0); +} + + +extern void func_8014C010(s32 a0, s32 a1); +extern u16 D_800B99DA; +extern void func_8013C9C4(void *a0); +extern s32 D_80190E98; + +void func_8018B698(s32 *s0) { + s32 pad[8]; /* dead: forces target's 0x38 frame */ + + func_80149020(s0); + func_80147A84((s32)s0); + func_801473EC(s0); + func_80148038((s32)s0, 0x18000); + func_80147460((s32)s0); + + if ((D_800B99DA & 1) == 0) { + func_8014C010((s32)s0, 2); + } + + if (func_801535F4(s0) == 4) { + func_8013C9C4(&D_80190E98); + } else if (func_80146E98((s32)s0) == 0) { + goto clamp; + } + func_801477E8(s0, 0x40000); + func_80146CA0(s0); + return; +clamp: + if (*(s16 *)((u8 *)s0 + 0xE) >= 0x240) { + return; + } + *(s16 *)((u8 *)s0 + 0xE) = 0x240; +} + + +#include "common.h" + +extern void func_80149020(s32 *a0); +extern void func_80148038(s32 a0, s32 a1); +extern void func_80147460(s32 a0); +extern s32 func_801535F4(void *arg0); +extern void func_8018B87C(s32 a0); +extern void func_80159B3C(void *a0); +extern void func_8015BF48(s32 *a0); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_80165718(s32 a0); + +void func_8018B774(s32 param_1) +{ + s32 v1; + s32 one; + s32 pad[8]; /* dead: forces target's 0x50 frame */ + + func_80149020((s32 *)param_1); + func_80148038(param_1, 0x18000); + func_80147460(param_1); + + if (*(s32 *)(param_1 + 0x234) == 0) { + if (*(s32 *)(param_1 + 0x34) >= 0) { + if (*(u16 *)(param_1 + 0xB8) & 0x8000) { + *(u16 *)(param_1 + 0xB8) = *(u16 *)(param_1 + 0xBA); + } + } + } + + v1 = func_801535F4((void *)param_1); + one = 1; + if (v1 == one) goto case1; + if (v1 < 2) return; + if (v1 == 2) goto case2; + return; +case1: + func_8018B87C(param_1); + func_80159B3C((void *)param_1); + goto join; +case2: + func_8018B87C(param_1); + func_8015BF48((s32 *)param_1); +join: + func_80146A6C(2, (void *)param_1, 0, 0, 0, one, 0); + func_80165718(param_1); +} + + +extern void func_8014BC44(s32 a0, s32 a1); +extern void func_80151664(void); + +void func_8018B87C(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); +} + + + +extern void (*D_80190EC4[])(void); + +void func_8018B8C4(void *a0) { + D_80190EC4[*(u16 *)((s32)a0 + 0x2)](); +} + + +#include "common.h" + +extern void func_8017EE64(void *arg0); +extern void func_80019064(void *a0); +extern int func_801511E0(int arg); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_801477E8(s32 *a0, s32 a1); +extern void func_80149020(s32 *a0); +extern void func_80147324(s32 a0); +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_80146CA0(void *a0); +extern s32 D_80062C14; +extern u8 D_80190E34[]; + +void func_8018B900(s32 param_1) { + func_8017EE64((void *)param_1); + func_80019064(&D_80062C14); + func_801511E0(param_1); + func_80154274((s32 *)param_1, (s32)D_80190E34); + *(s32 *)((s32)param_1 + 0x234) = 0; + func_801477E8((s32 *)param_1, -0x400000); + func_80149020((s32 *)param_1); + func_80147324(0x451); + func_80146E90((s32 *)param_1, 0x12C); + func_80146CA0((void *)param_1); + func_80146CA0((void *)param_1); +} + + + + + + + diff --git a/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c b/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c index 4e674e1f7..c0e697d35 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c @@ -3876,1122 +3876,3 @@ void func_8017F0A0(s32 a0) { INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_8017F268); - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_8017F65C); - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_8017F98C); - -extern u8 * func_8012913C(s32 a0); -extern s32 rand(void); - -void func_8017FBA4(s32 param_1) -{ - u8 *obj; - s32 i; - - for (i = 0; i < 4; i++) { - obj = func_8012913C(0x23); - if (obj != NULL) { - *(s16 *)(obj + 6) = *(u16 *)(param_1 + 6) + (rand() % 160) - 0x50; - *(s16 *)(obj + 0xA) = *(u16 *)(param_1 + 0xA) - (rand() % 160); - *(s16 *)(obj + 0xE) = *(u16 *)(param_1 + 0xE) + (rand() % 160) - 0x50; - *(s16 *)(obj + 0x34) = 0x7000; - *(s32 *)(obj + 0x18) = 0; - *(s32 *)(obj + 0x14) = 0; - *(s32 *)(obj + 0x10) = 0; - } - } - - *(s32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x80000000; - *(s32 *)(param_1 + 0x1C) = 6; - *(s16 *)(param_1 + 2) = 5; -} - - -extern void (*D_80185DDC[])(void); -extern u16 D_80126B96; -extern s32 func_8012D624(s16*, s32, s32); -extern void func_8002D4C8(s32, s32); - -void func_8017FCF4(void *param_1) { - u16 *q; - D_80185DDC[*(u16 *)((s32)param_1 + 0x2)](); - if (*(u16 *)((s32)param_1 + 0x0) != 0) { - *(s16 *)((s32)param_1 + 0xa) = *(u16 *)((s32)param_1 + 0xa) - 0x40; - if (*(u16 *)((s32)param_1 + 0x2) >= 5) { - if (((s32 (*)(void *, s32, s32))func_8012D624)(param_1, 0xA0, 0x78) == 1) { - q = &D_80126B96; - *q |= 0x4000; - } - } else { - if (((s32 (*)(void *, s32, s32))func_8012D624)(param_1, 0x10, 0x78) == 1) { - *(u16 *)((s32)param_1 + 0x2) = 4; - func_8002D4C8(0x941, 0); - q = &D_80126B96; - *q |= 0x4000; - } - } - *(s16 *)((s32)param_1 + 0xa) = *(u16 *)((s32)param_1 + 0xa) + 0x40; - } -} - - -extern void (*D_80185E08[])(void *); -extern void func_8012B370(s32 a0); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); - -void func_8017FDDC(void *a0) { - s32 i; - s16 pos[3]; - s16 vel[3]; - - D_80185E08[*(u16 *)((s32)a0 + 2)](a0); - if (*(u16 *)a0 != 0) { - func_8012B370((s32)a0); - i = 0; - pos[0] = 0; - vel[1] = 0; - pos[1] = 0; - pos[2] = 0; - while (i < 0x1000) { - vel[0] = func_8004787C(i) >> 7; - vel[2] = func_80047948(i) >> 7; - func_8012D5E4((s32)a0, (s32)pos, (s32)vel, 0x40); - i += 0x200; - } - } -} - - -#include "common.h" - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012CBCC(s32 a0); -extern void func_8012C218(s32 a0); - -extern u8 D_800AF648; - -void func_8017FE9C(s32 a0) { - struct { - s16 v[3]; /* sp+0x10 */ - s16 pad0; /* sp+0x16 */ - u16 sxy[2]; /* sp+0x18 */ - s32 z; /* sp+0x1C */ - s32 flag; /* sp+0x20 */ - s32 padend; /* frame padding: vars must be 0x28 */ - } L; - - if (*(s16 *)(a0 + 0x84) != 0) { - *(s16 *)(a0 + 0x84) = *(s16 *)(a0 + 0x84) - 1; - } else { - *(s16 *)(a0 + 0x84) = 0xF; - L.v[0] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x48); - L.v[1] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C); - L.v[2] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x50); - { register void *r4 __asm__("$4"); r4 = &D_800AF648; func_8004914C(r4); } - { register void *r4 __asm__("$4"); r4 = &D_800AF648; func_800491AC(r4); } - RotTransPers((s32)L.v, (s32)L.sxy, &L.z, &L.flag); - if (L.flag >= 0 && (u32)((L.sxy[0] + 0x9F) & 0xFFFF) < 0x13F - && (u32)((L.sxy[1] + 0x77) & 0xFFFF) < 0xEF) { - s32 x = (s16)L.sxy[0]; - register s32 ax __asm__("$5"); - s32 vol; - ax = x; - if (x < 0) { - ax = -x; - } - vol = ((0xA0 - ax) * 0x7F) / 0xA0; - __asm__("" : "=r"(vol) : "0"(vol)); - x = (x + 0xA0) / 0x14; - if (x == 0x10) { - x = 0xF; - } - x = x << 8; - { - s32 flg = 0x3000; - func_8002D4C8(0x93E, ((vol | flg) | x) & 0xFFFF); - } - } - } - - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x300; - if (((s32 (*)(s32))func_8012CBCC)(a0) != 0) { - func_8012C218(a0); - } - - if ((*(s32 *)(a0 + 0x1C) -= 1) == 0) { - func_8012C218(a0); - } -} - - - -extern void (*D_80185E24[])(void); -extern s16 D_80126B9A; -extern s32 func_8012D624(s16 *a0, s32 a1, s32 a2); -extern s32 func_8012B8A4(s16 *a0); - -void func_80180058(s16 *param_1) { - D_80185E24[*(u16 *)(param_1 + 1)](); - if (*(u16 *)param_1 != 0 && func_8012D624(param_1, 0x1E, 100) != 0) { - D_80126B9A = func_8012B8A4(param_1); - } -} - - - -extern void (*D_80185E2C[])(void); - -void func_801800D4(void *a0) { - D_80185E2C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern u16 D_801B9F00; -extern u16 D_801B9F02; -extern u16 D_801B9F04; -extern u16 D_801B9F08; -extern u16 D_801B9F0A; -extern u16 D_801B9F0C; - -void func_80180110(void *a0) { - u16 var_v1; - u16 var_a1; - *(u16 *)((s32)a0 + 0xDC) = D_801B9F00; - *(u16 *)((s32)a0 + 0xDE) = D_801B9F02; - *(u16 *)((s32)a0 + 0xE0) = D_801B9F04; - *(u16 *)((s32)a0 + 0xE4) = D_801B9F08; - *(u16 *)((s32)a0 + 0xE6) = D_801B9F0A; - var_v1 = *(u16 *)((s32)a0 + 2); - var_a1 = D_801B9F0C; - *(u16 *)((s32)a0 + 2) = var_v1 + 1; - *(u16 *)((s32)a0 + 0xE8) = var_a1; -} - - -#include "common.h" - -extern u16 D_801B9F00; -extern u16 D_801B9F02; -extern u16 D_801B9F04; -extern u16 D_801B9F08; -extern u16 D_801B9F0A; -extern u16 D_801B9F0C; - -void func_8018017C(void *a0) { - u16 v1; - u16 a1; - *(u16 *)((s32)a0 + 0xFC) = D_801B9F00; - v1 = *(u16 *)((s32)a0 + 2); - *(u16 *)((s32)a0 + 0xFE) = D_801B9F02; - *(u16 *)((s32)a0 + 0x100) = D_801B9F04; - *(u16 *)((s32)a0 + 0x104) = D_801B9F08; - *(u16 *)((s32)a0 + 0x106) = D_801B9F0A; - a1 = D_801B9F0C; - *(u32 *)((s32)a0 + 0x1C) = 0x10; - *(u16 *)((s32)a0 + 2) = v1 + 1; - *(u16 *)((s32)a0 + 0x108) = a1; -} - - -extern void func_80180228(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(s32 a0); -void func_801801E8(s32 a0) { - func_80180228(a0); - if (func_8012BEE8(a0)) { - func_8012C218(a0); - } -} - - -#include "common.h" - -/* func_80180228 — ov_SC06_030 / ov_SC06_030_jr_8017C8D0 (132 ins) - * - * Remap variant of the banked family func_80187EE8 (ov_SC03_014_jr_801848E4, - * MATCH): builds ONE 4-vertex gouraud packet on the stack (verts sp+0x10, - * colours sp+0x30, code sp+0x40), colour ramp derived from the s32 at a0+0x1C - * (*15, >>1, -0x10 clamped-at-0 for the far pair), then loads the camera matrix - * cached at D_800AF630+0x18 and runs one rtpt+rtps+avsz4 group over the - * SVECTORs at a0+0xFC / a0+0x104 / a0+0xDC / a0+0xE4, with the shared - * OT-range guard (otz>0, flag>=0, OT slot < &D_800AE610, (flag&~0x1000)==0). - * - * REMAP vs twin: the HALVED channel is BLUE here (twin: green). Target store - * order per vertex pair is b1,b0,r1,r0,g1,g0 — reproduced by three chained - * statements (right-to-left evaluation), b/r/g. - */ - -extern u8 D_800AF630[]; /* TU line 53, verbatim */ - -typedef struct { s16 vx, vy, vz, pad; } SV_80180228; -typedef struct { u8 r, g, b, cd; } CV_80180228; -typedef struct { - SV_80180228 v[4]; /* +0x00 : sxy0..3 (v[0].vz doubles as the otz slot) */ - CV_80180228 rgb[4]; /* +0x20 */ - u32 code; /* +0x30 */ - u32 pad; /* +0x34 */ -} PKT_80180228; - -/* every macro is suffixed: this TU already #defines the unsuffixed gte_* family - * (func_8017C8D0 region), so an unsuffixed name would clash. */ -#define gte_ldv0_80180228(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) - -#define gte_ldv3_80180228(r0, r1, r2) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 );" \ - "lwc2 $2, 0( %1 );" \ - "lwc2 $3, 4( %1 );" \ - "lwc2 $4, 0( %2 );" \ - "lwc2 $5, 4( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) ) - -#define gte_rtps_80180228() __asm__ volatile ("nop;nop;rtps") -#define gte_rtpt_80180228() __asm__ volatile ("nop;nop;rtpt") -#define gte_avsz4_80180228() __asm__ volatile ("nop;nop;avsz4") - -#define gte_stsxy_80180228(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stsxy3_80180228(r0, r1, r2) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 0( %1 );" \ - "swc2 $14, 0( %2 )" \ - : \ - : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ - : "memory" ) - -#define gte_stotz_80180228(r0) __asm__ volatile ( \ - "swc2 $7, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stflg_80180228(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -#define gte_SetRotMatrix_80180228(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) - -#define gte_SetTransMatrix_80180228(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) - -void func_80180228(s32 a0) -{ - extern void func_80017714(void *); - extern s16 D_800B9A02; - /* §183 TYPE-shadowed-block-scope: adopt the twin's spelling for D_800A651C. - * The typedef is declared BLOCK-SCOPE here so it shadows (never redefines) - * the file-scope copy in src/shared/engine_types.h, which is byte-identical. */ - typedef struct { s32 a; s32 b[4]; } Ot_8018B23C; - extern Ot_8018B23C D_800A651C[]; - extern u8 D_800AE610[]; - - PKT_80180228 pkt; /* sp+0x10 .. sp+0x47 */ - s32 flag1; /* sp+0x48 */ - s32 flag2; /* sp+0x4C */ - s32 otz; /* sp+0x50 */ - u8 *base; - s32 *m; - s16 c, p, q; - s32 d; - - c = *(s32 *)(a0 + 0x1C) * 15; - base = D_800AF630; - p = c; - d = c >> 1; - q = d; - - /* REMAP: halved channel is BLUE (twin func_80187EE8: green). - Store order b1,b0,r1,r0,g1,g0 == target's sb sequence. */ - pkt.rgb[0].b = pkt.rgb[1].b = q; - pkt.rgb[0].r = pkt.rgb[1].r = p; - pkt.rgb[0].g = pkt.rgb[1].g = p; - - c -= 0x10; - p = c; - if (c < 0) { - p = 0; - } - { - s16 e; /* block-scoped: one pseudo (§136/L1) */ - e = d - 0x10; - q = e; - if (e < 0) { - q = 0; - } - } - pkt.rgb[2].b = pkt.rgb[3].b = q; - pkt.rgb[2].r = pkt.rgb[3].r = p; - pkt.rgb[2].g = pkt.rgb[3].g = p; - - pkt.code = 0x50000000; - - m = (s32 *)(base + 0x18); - gte_SetRotMatrix_80180228(m); - gte_SetTransMatrix_80180228(m); - - gte_ldv3_80180228((SV_80180228 *)(a0 + 0xFC), (SV_80180228 *)(a0 + 0x104), - (SV_80180228 *)(a0 + 0xDC)); - gte_rtpt_80180228(); - gte_stflg_80180228(&flag1); - gte_stsxy3_80180228(&pkt.v[0], &pkt.v[1], &pkt.v[2]); - gte_ldv0_80180228((SV_80180228 *)(a0 + 0xE4)); - gte_rtps_80180228(); - gte_stflg_80180228(&flag2); - flag1 = flag1 | flag2; - gte_stsxy_80180228(&pkt.v[3]); - gte_avsz4_80180228(); - gte_stotz_80180228(&otz); - - if (otz > 0 && flag1 >= 0 && - !((u32)&D_800AE610 < - (u32)(*(s32 *)((u8 *)&D_800A651C + (*(u16 *)&D_800B9A02) * 0x14) - + otz * 4)) && - (flag1 & 0xFFFFEFFF) == 0) { - pkt.v[0].vz = (s16)otz; - func_80017714(&pkt.v[0]); - } -} - - -extern void func_8001AAA0(s32 arg); - s32 func_80180438(void) { - return ((s32 (*)(s32))func_8001AAA0)(0x7C) != 0; - } - - -s32 func_80180458(s32 a0) { - if (*(s16 *)(a0 + 0x10A) != 0) { - *(s16 *)(a0 + 0x10A) = 0; - return 1; - } - return 0; -} - - -extern void func_800D0C48(s32 arg); - void func_8018047C(void) { - func_800D0C48(0x1); - } - - -extern s32 func_80180C5C(void); - s32 func_8018049C(void) { - return func_80180C5C() != 0; - } - - -extern void func_80016714(void *a0, s32 a1); -extern void func_8002A04C(s32 a0); -extern void func_8012C218(s32 a0); - -void func_801804BC(void *a0) { - if (*(u32 *)(a0 + 0xCC) != 0) { - func_80016714(*(void **)(a0 + 0xCC), 0x84); - } - func_8002A04C((s32)a0); - func_8012C218((s32)a0); -} - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_80143970(s32 a0); - -void func_80180508(void *a0) { - extern u8 D_80185D14[]; - extern u8 D_8018E4E4[]; - extern u8 D_80182184[]; - extern u8 D_8019EC8C; - extern u8 D_80185D48; - s32 s1; - - if (func_8012C354((s32)a0, (s32)D_80185D14) != 0) { - s1 = ((s32 (*)(void))func_8012C1B8)(); - if (s1 == 0) { - func_8012CAE4(a0); - } else { - *(s32 *)((s32)a0 + 0xCC) = s1; - func_8001C214(s1, (s32)D_8018E4E4); - *(s32 *)(s1 + 0x20) = *(s32 *)D_80182184; - *(s32 *)(s1 + 4) |= 0x80000000; - *(u8 *)((s32)a0 + 0xC0) = 1; - *(s32 *)((s32)a0 + 0xC4) = 3; - *(s32 *)((s32)a0 + 0xB4) = 0; - *(u16 *)((s32)a0 + 2) = 1; - func_8012A828((s32)a0, (void *)&D_8019EC8C); - *(u8 *)((s32)a0 + 0x75) = 0; - *(s32 *)((s32)a0 + 0xBC) = (s32)&D_80185D48; - func_80143970((s32)a0); - *(s32 *)((s32)a0 + 0x48) = 0xFFFE8000; - func_8012B2CC((s32)a0); - *(s32 *)((s32)a0 + 0x1C) = 0xF; - } - } -} - - -#include "common.h" - -extern u8 D_80185C2C[]; -extern u8 D_8019FFA4; -extern s32 func_80178B18(s32, s32); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_80178970(void); -extern void func_80178D18(void); -extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_801805F8(s32 a0) { - switch (*(u16 *)(a0 + 0x34)) { - case 0: - if (--*(s32 *)(a0 + 0x1C) == 0) { - ((void (*)(s32, s32))func_80178B18)(a0, (s32)D_80185C2C); - *(u16 *)(a0 + 0x34) = 1; - func_8012A828(a0, &D_8019FFA4); - } - break; - - case 1: - if (((s32 (*)(s32))func_80178970)(a0) != 0) { - ((void (*)(s32))func_80178D18)(a0); - *(u16 *)(a0 + 2) = 2; - func_8017BF08((void *)(a0 + 0x76), (void *)(a0 + 0x76), 6, 0xD2); - } else if (*(s32 *)(a0 + 0x94) == 0x22) { - func_8002D4C8(0xC7C, 0); - } - break; - } -} - - -void func_801806D4(s32 a0) { - s32 v0; - - v0 = *(s32 *)(a0 + 0x1C); - if (v0 != 0) { - *(s32 *)(a0 + 0x1C) = v0 - 1; - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + func_8012BA10(a0, 8); - } else { - *(s16 *)(a0 + 0x34) = 0; - switch (*(s16 *)(a0 + 0xFC)) { - case 0: - *(s16 *)(a0 + 2) = 3; - return; - case 1: - *(s16 *)(a0 + 2) = 4; - *(s16 *)(a0 + 0x106) = *(u16 *)(a0 + 0x76); - return; - case 2: - *(s16 *)(a0 + 2) = 5; - return; - case 3: - if (*(s16 *)(a0 + 0x76) < *(s16 *)(a0 + 0x106)) { - *(s16 *)(a0 + 2) = 6; - } else { - *(s16 *)(a0 + 2) = 3; - } - return; - } - } -} - - -extern M2C_UNK D_80185DB8; -extern u8 D_80185DA0[]; -extern void func_8001CA1C(s32, s32); -extern void func_8012A828(s32, void*); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); - - void func_801807B4(void *a0) { - s32 v0 = ((s32 (*)(void *))func_8012C1B8)(a0); - *(int *)((char *)a0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(a0); - } else { - ((void (*)(s32, u8 *))func_8001CA1C)(v0, D_80185DA0); - ((void (*)(void *, u8 *))func_8012A828)(a0, ((u8 *)&D_80185DB8)); - *(short *)((char *)a0 + 0x2) = 1; - } - } - - -void func_8018081C(s32 a0) { - *(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 1; - *(s32 *)(a0 + 4) = (*(s16 *)(a0 + 0x88) * 0x10000) + *(s32 *)(a0 + 0x10) * *(s32 *)(a0 + 0x1C); - *(s32 *)(a0 + 8) = (*(s16 *)(a0 + 0x8A) * 0x10000) + *(s32 *)(a0 + 0x14) * *(s32 *)(a0 + 0x1C); - *(s32 *)(a0 + 0xC) = (*(s16 *)(a0 + 0x8C) * 0x10000) + *(s32 *)(a0 + 0x18) * *(s32 *)(a0 + 0x1C); - *(s32 *)(a0 + 8) = *(s32 *)(a0 + 8) - (func_8004787C(*(s32 *)(a0 + 0x1C) << 6) << 11); - if (*(s32 *)(a0 + 0x1C) == 0x20) { - *(s16 *)(a0 + 2) = 2; - *(s32 *)(a0 + 0x1C) = 0x80; - func_8002D4C8(0x943, 0); - } -} - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_801808F0); - -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_800599B8(s32 a0, s32 a1); -extern u8 D_80185AB0[]; -extern s16 D_80185DC8[]; -extern u8 D_80185928[]; - -void func_80180940(s32 param_1) { - s32 iVar1; - iVar1 = *(s32 *)(param_1 + 0x1C) - 1; - *(s32 *)(param_1 + 0x1C) = iVar1; - if (iVar1 <= 0) { - *(s16 *)(param_1 + 2) = 4; - func_8002D4C8(0x941, 0); - } else { - func_800599B8((s32)&D_80185AB0, (s32)&D_80185928[D_80185DC8[iVar1 % 10]]); - } -} - - -extern u8 D_801202A0[]; -extern void func_8012C218(s32 a0); -extern s32 func_80013350(s32 *a0, s32 *a1); - -void func_801809DC(s32 a0) -{ - s32 v1; - u16 *p; - s32 i; - - v1 = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = v1; - if (v1 == 0) { - func_8012C218(a0); - } else if (v1 == 3) { - i = 0; - p = (u16 *)D_801202A0; - for (; i < 0x60; i++) { - if (*p == 0x30B && p[1] < 5 && - func_80013350((s32 *)(a0 + 4), (s32 *)(p + 2)) < 0x6400) { - p[1] = 4; - } - p += 0x86; - } - } -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern s32 func_80143970(s32 a0); - -void func_80180ABC(s32 a0) { - extern u8 D_8018F280[]; - s32 v1; - - v1 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(a0 + 0x20) = v1; - if (v1 == 0) { - func_8012CAE4((void *)a0); - } else { - func_8001C214(v1, (s32)D_8018F280); - *(u8 *)(a0 + 0xC0) = 1; - *(u16 *)(a0 + 2) = 1; - func_80143970(a0); - *(s32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x8000000; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x14) = 0x400; - *(s32 *)(a0 + 0x1C) = 0x78; - } -} - - -extern void func_8012CBCC(s32 a0); -extern void func_8012C218(s32 a0); - -void func_80180B50(s32 a0) { - s32 v1; - s32 v0; - - v1 = *(s32 *)(a0 + 0x20); - *(u16 *)(v1 + 0x10) = *(u16 *)(v1 + 0x10) + 0x300; - if (((s32 (*)(s32))func_8012CBCC)(a0) != 0) { - func_8012C218(a0); - } - v0 = *(s32 *)(a0 + 0x1c) - 1; - *(s32 *)(a0 + 0x1c) = v0; - if (v0 == 0) { - func_8012C218(a0); - } -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern s32 func_80143970(s32 a0); - -void func_80180BBC(s32 a0) { - extern u8 D_8018F000[]; - s32 v1; - - v1 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(a0 + 0x20) = v1; - if (v1 == 0) { - func_8012CAE4((void *)a0); - } else { - func_8001C214(v1, (s32)D_8018F000); - *(u16 *)(a0 + 2) = 1; - *(u8 *)(a0 + 0xC0) = 1; - func_80143970(a0); - *(s32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x8000000; - *(s32 *)(a0 + 0x1C) = 0x78; - } -} - - - - - - - - - - - - - - - - - - - - -s32 func_80180C44(s32 arg0) -{ - s32 ret; - ret = 0x6F; if (0x514 > arg0) { ret = 0x8A; - } - else - { - } - return ret; -} - - -extern void func_8001AAA0(s32 arg); - s32 func_80180C5C(void) -{ - func_8001AAA0(0x6F); - } - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -void func_80180C7C(void) { - - extern s32 D_801B4C6C(void *a0); - ((void (*)(void *, s32))func_8016EE40)((void *)D_801B4C6C, 0x1000000); -} - - - -extern void (*D_801B4C84[])(void); - -void func_80180CA4(void *a0) { - D_801B4C84[*(u8 *)((s32)a0 + 0x216)](); -} - - -void func_80180CE0(void *a0) { - void *s0 = a0; - - func_80180FF4(a0); - if (*(s16 *)((s32)s0 + 0x210) >= 0) { - *(s16 *)((s32)s0 + 0x210) = 0x30; - } else { - *(s16 *)((s32)s0 + 0x210) = -0x30; - } - func_80171990((u8 *)s0); -} - - - -extern s32 func_801810D0(); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80171928(void *a0); - -void func_80180D28(void *param) -{ - void *s0 = param; - - if (func_801810D0() != 0) { - func_8002D4C8(0x8B1, 0); - func_80171928(s0); - } -} - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); -extern s32 D_801B4C8C; - -void func_80180D68(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_801B4C8C, 0x1000000); -} - - - -extern void (*D_801B4C98[])(void); - -void func_80180D90(void *a0) { - D_801B4C98[*(u8 *)((s32)a0 + 0x216)](); -} - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_80180DCC); - - -extern s32 func_801810D0(); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80171990(u8*); - -void func_80180ED4(void *param) -{ - void *s0 = param; - - if (func_801810D0() != 0) { - func_8002D4C8(0x8B1, 0); - ((void (*)(void *))func_80171990)(s0); - } -} - - -extern s32 func_80013328(s32 a0, s32 a1); -extern u8 D_801202A0[]; -extern void func_800D1724(s32 a0); -extern void func_80171928(void *a0); - -void func_80180F14(arg0) -void *arg0; -{ - u8 *p; - u8 *found; - s32 i; - s32 best; - s16 t; - - found = 0; - best = 0x7FFFFFFF; - for (i = 0; i < 0x60; i++) { - p = &D_801202A0[i * 0x10C]; - if ((*(u16 *)(p + 0) != 0) && ((*(u16 *)(p + 0x5C) & 0x80) != 0)) { - t = (s16)func_80013328((s32)arg0 + 4, (s32)p + 4); - if (t < best) { - best = t; - found = p; - } - } - } - if (found != 0) { - func_800D1724(*(s32 *)(found + 0xDC)); - } - func_80171928(arg0); -} - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_80180FF4); - -extern void func_80015954(s32 a0, s32 a1); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); - -s32 func_801810D0(param_1) -s32 param_1; -{ - s32 sp10[2]; - s32 p; - s32 q; - short v; - - p = *(s32 *)(param_1 + 0x204); - q = *(s32 *)(p + 0x20); - if (p != 0) { - *(u16 *)(q + 0x12) = *(u16 *)(q + 0x12) + 0x80; - func_8012F14C(q + 0x34, param_1 + 0x20C, (s32)sp10); - func_80015954((s32)sp10, param_1 + 4); - } - q = *(s32 *)(param_1 + 0x20); - *(u16 *)(q + 0x12) = *(u16 *)(q + 0x12) + 0x80; - v = *(u16 *)(param_1 + 0x208) + 0x80; - *(u16 *)(param_1 + 0x208) = v; - return v == 0x800; -} - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_80181164); - - - -extern s32 rand(void); -extern s32 func_800CF8B4(); -extern s32 func_8014CB8C(void); -extern s32 func_801726C4(s32 *a0); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80143C74(s32 a0, s32 a1); - -void func_80181588(s32 param_1) -{ - - extern u16 D_80126B62; - extern u16 D_80126B66; - s32 diff; - s32 obj; - s32 quotient; - s16 sVar1; - u16 uVar2; - - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + *(u16 *)(param_1 + 0xFC); - - obj = (s32)&D_80126B62; - /* §137 zero-byte barrier: closes the $s2<->$s3 REGALLOC-PERM. global.c:allocno_compare - * ranks pri = floor_log2(R)*R/L*1e4*size; without this, diff (R=7,L=46) = 3043 outranks - * obj (R=11,L=109) = 3027 and takes $s2. This adds ONE reference to obj (R 11->12, - * L 109->110 => 3272) with no emitted bytes, so obj wins $s2 and diff falls to $s3. */ - __asm__ __volatile__("" :: "r"(obj)); - if (*(s16 *)obj < -0x4E0) { - diff = (s32)(s16)D_80126B66 - *(s16 *)(param_1 + 0xE); - if (diff < 0x140) { - uVar2 = *(u16 *)(param_1 + 0xFC) - 0x10; - *(u16 *)(param_1 + 0xFC) = uVar2; - if ((s16)uVar2 < 0) { - *(u16 *)(param_1 + 0xFC) = 0; - } - } else { - sVar1 = *(u16 *)(param_1 + 0xFC) + 0x10; - *(u16 *)(param_1 + 0xFC) = sVar1; - if (sVar1 > 0x300) { - *(u16 *)(param_1 + 0xFC) = 0x300; - } - if ((diff < 0x900) && (func_800CF8B4() != 0) && (func_8014CB8C() == 0)) { - quotient = (*(s16 *)(param_1 + 0xFC) * 0xD) / 0x300; - quotient = (quotient * (0x900 - diff)) / 0x900; - if (func_801726C4((s32 *)(obj - 0xA)) != 0) { - quotient = quotient * 2; - } - D_80126B66 = D_80126B66 + quotient; - func_8002D4C8(0x978, ((quotient * 0x7F / 0xD) | 0x1000) & 0xFFFF); - *(u16 *)(param_1 + 0xFE) = 1; - } - } - } else { - sVar1 = *(u16 *)(param_1 + 0xFC) + 0x10; - *(u16 *)(param_1 + 0xFC) = sVar1; - if (sVar1 > 0x300) { - *(u16 *)(param_1 + 0xFC) = 0x300; - } - } - - if (*(s32 *)(param_1 + 0x1C) != 0) { - *(s32 *)(param_1 + 0x1C) = *(s32 *)(param_1 + 0x1C) - 1; - } else { - if (*(s16 *)(param_1 + 0xFC) > 0x40) { - *(s32 *)(param_1 + 0x1C) = 3; - obj = func_80143C74(param_1, 0); - if (obj != 0) { - *(s16 *)(obj + 6) = rand() % 0x120 - 0xE0; - *(u16 *)(obj + 0xA) = -(rand() & 0x3F) - 0x502; - diff = rand() % 0x560 + 0x140; - *(u16 *)(obj + 0xE) = *(u16 *)(obj + 0xE) + diff; - quotient = (*(s16 *)(param_1 + 0xFC) * 0xD) / 0x300; - quotient = (quotient * (0x800 - diff)) / 0x800; - *(s16 *)(obj + 0x1A) = quotient * 2; - *(s32 *)(obj + 0x48) = -((rand() & 0x1FF) << 7); - } - } - } - - if (*(s16 *)(param_1 + 0xFE) == 2) { - *(u16 *)(param_1 + 0xFE) = 0; - func_8002D4C8(4, 0x978); - } - if (*(s16 *)(param_1 + 0xFE) == 1) { - *(u16 *)(param_1 + 0xFE) = 2; - } -} - - - -extern void (*D_801B4D2C[])(void); - -void func_801818FC(void *a0) { - D_801B4D2C[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012A828(s32, void*); -extern void func_8012B23C(void *a0); - - -void func_80181938(void *a0) { - - extern u8 D_801B4D44[]; - extern s32 D_801B4D78[]; - extern u8 D_80182184[]; - if (func_8012C354((s32)a0, (s32)D_801B4D44) != 0) { - u16 v1 = *(u16 *)((s32)a0 + 0x70); - - if (v1 & 0x10) { - u16 v0 = v1 & ~0x10; - *(u16 *)((s32)a0 + 0x70) = v0; - func_8001C214(*(s32 *)((s32)a0 + 0x20), D_801B4D78[(s16)v0]); - *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040; - } else { - func_8001C214(*(s32 *)((s32)a0 + 0x20), D_801B4D78[(s16)v1]); - } - - if (*(s16 *)((s32)a0 + 0x70) == 8 || *(s16 *)((s32)a0 + 0x70) == 0xA) { - *(s16 *)((s32)a0 + 0x34) = 3; - *(u16 *)((s32)a0 + 0x5C) = 0x8800; - } - if (*(s16 *)((s32)a0 + 0x70) == 9) { - *(s16 *)((s32)a0 + 0x34) = 2; - *(u16 *)((s32)a0 + 0x5C) = 0x8800; - } - if (*(s16 *)((s32)a0 + 0x70) == 0xB) { - *(s16 *)((s32)a0 + 0x34) = 4; - } - - *(u8 *)((s32)a0 + 0xC0) = 1; - *(s32 *)((s32)a0 + 0xB4) = -1; - *(u8 *)((s32)a0 + 0x75) = 8; - ((void (*)(s32 *, s32))func_8012A828)((s32 *)a0, (s32)D_80182184); - - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - func_8012B23C(a0); - *(s16 *)((s32)a0 + 0xAE) = -1; - } -} - - -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_80181A80); - - -extern void (*D_801B4DA8[])(void); - -void func_80181C30(void *a0) { - D_801B4DA8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801B4DE4[])(void); - -void func_80181C6C(void *a0) { - D_801B4DE4[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); - -void func_80181CA8(void *a0) { - - extern u8 D_801B4CF8[]; - extern u8 D_80182184[]; - - if (func_8012C354((s32)a0, (s32)D_801B4CF8) != 0) { - *(u8 *)((s32)a0 + 0xC0) = 1; - *(s16 *)((s32)a0 + 0xAE) = -1; - func_8012A828(a0, D_80182184); - - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) = - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) | 0x10; - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18) = 0xE00; - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1A) = 0xE00; - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1C) = 0xE00; - *(u16 *)((s32)a0 + 0xFC) = 0x300; - *(u8 *)((s32)a0 + 0x75) = 8; - } -} - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); - -void func_80181D50(void *a0) { - - extern u8 D_801B4DB0[]; - extern u8 D_80182184[]; - - if (func_8012C354((s32)a0, (s32)D_801B4DB0) != 0) { - *(u8 *)((s32)a0 + 0xC0) = 1; - func_8012A828(a0, D_80182184); - *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) = - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) | 0x10; - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18) = 0xAAA; - *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1C) = 0xAAA; - } -} - - -extern void func_80181164(void); - void func_80181DD4(s32 arg0) { - s32 temp_v0; - func_80181164(); - temp_v0 = *(s32 *)(arg0 + 0x1c) + 1; - *(s32 *)(arg0 + 0x1c) = temp_v0; - } - - - - diff --git a/src/ov_SC06_030/ov_SC06_030_jr_8017F65C.c b/src/ov_SC06_030/ov_SC06_030_jr_8017F65C.c new file mode 100644 index 000000000..584c9db31 --- /dev/null +++ b/src/ov_SC06_030/ov_SC06_030_jr_8017F65C.c @@ -0,0 +1,4028 @@ +#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 { + 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 { + s16 v[4]; +} Blk8_80126940_8017DB94; +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_80184390; +extern u8 D_80184300; +extern u8 D_801842DC; +extern u8 D_801842B8; +extern u8 D_8018436C; +extern u8 D_80184348; +extern u8 D_80184324; +extern u8 D_80184294; +extern void func_80145934(void); +extern u8 D_80184420; +extern u8 D_801843FC; +extern u8 D_801843D8; +extern u8 D_801843B4; +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_80183818[]; +extern unsigned char D_80183848[]; +extern unsigned char D_80183898[]; +extern unsigned char D_801838C8[]; +extern unsigned char D_801838F8[]; +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_80183948[])(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 u8 D_801202A0[]; +extern s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_80149FA8(void); +extern s32 D_80183A10[]; +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_80183A98[]; +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_80183AA0; +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_801B8C90; +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_801B8C94; +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_80183AD0; +extern s32 D_80126990; +extern s32 D_80126994; +extern u8 D_80126948[]; +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_80183B78[])(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_80183B9C[])(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_80183B8C; +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_80183BB0[])(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_80183BBC[]; +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_80183BCC[])(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_80183BE4[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80183BD4; +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_80183BF8[])(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_80183C14[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80183C04; +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_80183C28[])(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_80183C3C[])(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_80183C50; +extern void (*D_80183C78[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80183C58; +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_80183CC4[])(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_80183CC8[])(void); +extern s32 func_80161104(void); +extern void func_801555F4(void *); +extern void func_801555BC(void *a0); +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_8018412C[]; +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_8018413C[])(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_801B8CC8; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80184164[])(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_80184144; +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_80184154; +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_801841A4[])(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_801841AC[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80184178; +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_801841B8[])(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_80184188; +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_801B8CD0; +extern s32 D_801B8CDC; +extern s32 D_801B8CE0; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_801841F4[])(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_801841C8[]; +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_801B8CD8; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80184444[])(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_80184264[]; +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_801844E8[])(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_8018463C[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_80184458; +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_80184644[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_80184468; +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_80184488; +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_8018464C[])(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_80184674[])(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_80184680[])(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_801844F4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_80184724; +extern void func_8015D380(s32 a0); +extern unsigned char D_80183808[]; +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_80184738[]; +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_80184774[]; +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_801847BC; +extern u16 D_801847BE; +extern u16 D_801847C0; +extern s32 D_801847C4; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_801847CC; +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_801844D8; +extern void func_8015EE7C(s32 param_1); +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_80184850[]; +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_80184900[])(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_80184930[]; +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_80184994; +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_801B8CE8[]; +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_801849B8[])(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_801B8D40[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80184A00[])(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_801849F0; +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_801B8418[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_80184A08[])(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_80184A5C[])(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_80184A24; +extern s16 D_80184A58; +extern s16 D_80184A56; +extern s16 D_80184A54; +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_80184A68[])(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_801B8DA0; +extern u8 D_801B8DA1; +extern u8 D_801B8DA2; +extern u8 D_801B8DA3; +extern u8 D_801B8DA4; +extern u8 D_801B8DA5; +extern u8 D_801B8DA6; +extern u8 D_801B8DA7; +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_80184A78[])(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_801B8DE0; +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_80184ABC[])(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_80184B38[]; +extern s32 D_80184B58[]; +extern u8 D_80184BD4[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80184BF4[]; +extern u8 D_80184C14[]; +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_80184CB0[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80184D2C[])(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_801B8428; +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_80184D38[])(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_80184D40[])(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_80184E08[])(void); +extern void func_80166618(void *a0); +extern void (*D_80184E18[])(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_80184E28[])(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_80184E34[])(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_80184D94[]; +extern u8 D_80184DA8[]; +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_80184E4C[])(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_80184E54[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80184E5C[])(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_80184E64[])(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_80184E6C[])(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_80184E74[])(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_80184E7C[])(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_80184F30[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80184F38[])(void); +extern void func_80169F00(void *a0); +extern char D_80184EE8[]; +extern char D_80184EA8[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80184F70[])(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_80184F7C[])(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 void func_8016AA50(s32 param_1, s32 param_2); +extern void (*D_80184FC4[])(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_80185040[])(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_801B9100; +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_80185034[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80185078[]; +extern unsigned short D_80185080[]; +extern unsigned short D_80185088[]; +extern unsigned char D_801B9108[]; +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_801B9100; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80185090[])(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_801B923C; +extern M2C_UNK D_801B9240; +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_801B91C8; +extern void (*D_801850C0[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801B9244[]; +extern u8 D_801B924C[]; +extern u8 D_801B91FC[]; +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_801850C8[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801850E4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801850EC[])(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_80185154[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801850F8; +extern u8 D_80185104; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80185188[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80185190[])(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_801851E4[])(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_80185218[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80185208[]; +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_80185234; +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_801852AC[])(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_801852B4[])(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_801852BC[])(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_801852C4[])(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_801852CC[])(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_801852D4[])(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_801852E0[])(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_801852EC[])(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_801852F8[])(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_80185308[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80185318[])(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_80185320[])(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_80185328[])(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_80185330[])(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_80185338[])(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_80185340[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80185348[])(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_80185350[])(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_80185358[])(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_80185360[])(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_80185368[])(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_80185370[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80185378[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80185380[])(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_80185388[])(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_80185390[])(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_80185398[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_801853A0[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_801853A8[])(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_801853B0[])(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_801853B8[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_801853C0[])(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_801853C8[])(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_8018540C[])(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_801853D0; +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_8018543C[])(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_80185478[])(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_80126954; +extern s32 D_80126950; +extern s32 D_8012695C; +extern s16 D_80126968; +extern s16 D_8012696A; +extern s16 D_8012696C; +extern s16 D_80126976; +extern s16 D_80126978; +extern s16 D_8012697A; +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_801854D0[])(); +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_801854E0[])(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_801854E8[])(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_80185650[])(); +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_8018565C[])(); +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_801B8670; +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_801BA010; +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_801B9980; +extern short D_801BA084; +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_801B9DAC; +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_801B9DD4; +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_801B9D90; +extern s32 func_8017A3B0(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 void func_8017B0E4(int param_1, int param_2); +extern s16 D_801B9D94; +extern u16 D_801B9E14; +extern u16 D_801B9E16; +extern u16 D_801B9E18; +extern void func_8017B1D8(void); +extern s32 func_8017B238(s32 param_1, s32 param_2); +extern s32 func_8017B368(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_801B9E0C; +extern s16 D_801B9E0E; +extern s16 D_801B9E10; +extern s16 D_801B9E04; +extern s16 D_801B9E06; +extern s16 D_801B9E08; +extern void func_8017B7A8(void); +extern s16 D_801B9E24; +extern s16 D_801B9E26; +extern s16 D_801B9E28; +extern s16 D_801B9E2C; +extern s16 D_801B9E2E; +extern s16 D_801B9E30; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801B9E1C; +extern short D_801B9E1E; +extern short D_801B9E20; +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_801B9DB4; +extern SV4 D_801B9DBC; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801B9DDC[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_801B9DD8)(void); +extern void func_8017BD50(int param_1); +extern void (*D_80185838[])(void); +extern void func_8017BE60(void *a0); +extern void func_8017BE9C(void); +extern void func_8017BEA4(void); +extern void func_8017BEAC(void); +extern void func_8017BEB4(void); +extern void func_8017BF34(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); +extern void (*D_80185898[])(void); +extern void func_8017C114(void *a0); +extern void func_8017C8D0(s32 arg0); +extern void (*D_801858F0[])(void); +extern void func_8017D7B0(void *a0); +extern void func_8017DA6C(void); +extern s32 func_8017D7EC(s32 a0); +extern s32 func_8017D830(void); +extern void (*D_801858F8[])(void); +extern void func_8017D854(void *a0); +extern void func_8017DA94(void); +extern s32 func_8017D890(s32 a0); +extern void func_8001BFD0(void); +extern void func_800D1E28(void); +extern s32 func_8017D8D0(u8 *a0); +extern void func_800D1EBC(void); +extern void func_8017D94C(void); +extern void (*D_80185904[])(void); +extern void func_8017D96C(void *a0); +extern s32 func_8017D9A8(void *a0); +extern void func_8002931C(void); +extern void func_80029514(s32 a0); +extern void func_8002AED0(void); +extern s32 func_8017DA24(void); +extern void func_8012A094(s32 a0); +extern void func_8017DB58(void *a0); +extern void func_8017DABC(void); +extern void (*D_80185920[])(void); +extern void func_8017DB94(s32 a0); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern void func_8017DC70(s32 param_1, s16 *param_2); +extern void func_8012A828(s32 a0, void *a1); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern s32 func_8012C588(s32 a0, s32 a1); +extern s32 func_8012BA10(s32 a0, s32 a1); +extern void func_800599B8(s32 a0, s32 a1); +extern u8 D_800AF648; +extern u8 D_8019F454; +extern u8 D_8019F51C; +extern u8 D_8019F32C; +extern u8 D_8019F644; +extern u8 D_8019EC8C; +extern u8 D_80185D70; +extern u8 D_80185AA8; +extern u8 D_80185928[]; +extern s32 D_8019F75C[]; +extern s32 D_8019F89C[]; +extern s32 D_8019FAD4[]; +extern s32 D_8019F9C4[]; +extern s16 D_80185B6C[]; +extern s16 D_80185B18[]; +extern s16 D_80185B1A[]; +extern void func_8017E120(s32 a0); +extern s32 func_8012B864(s32 a0); +extern u8 D_8019EF7C; +extern u8 D_80185D78; +extern void func_8017F0A0(s32 a0); +/* ==== end §8b carried decl layer ==== */ + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_800D0C48(s32 a0); +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 func_80178B18(s32 param_1, s32 param_2); +extern int func_80178970(); +extern void func_80178D18(void); +extern void func_8012CBCC(s32 a0); +extern void func_8012ADE4(s32 a0); +extern void func_8017DE08(s32 a0); +extern void func_8017C068(void); +extern s32 *D_80126B78; +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u8 D_801202A0[]; +extern s32 D_8019EB9C; +extern u8 D_8019FEFC; +extern u8 D_80185C9C; +extern s16 D_80185C0C; +extern s16 D_80185C10; +extern s16 D_80185C14; + +void func_8017F65C(s32 a0) +{ + s32 v1; + s32 t; + u16 *p; + s32 i; + extern s16 D_80126B66; + + *(u8 *)(a0 + 0xC2) = 0x10; + switch (*(u16 *)(a0 + 0x34)) { + case 0: + v1 = func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x100); + D_80185C0C = *(u16 *)(a0 + 6) - (v1 >> 4); + v1 = func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x100); + D_80185C10 = *(u16 *)(a0 + 0xE) - (v1 >> 4); + D_80185C14 = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x100; + *(s32 *)(*(s32 *)(a0 + 0x20) + 0x20) = D_8019EB9C; + *(s16 *)(a0 + 0x98) = 0; + *(s32 *)(*(s32 *)(a0 + 0xCC) + 4) |= 0x80000000; + func_80178B18(a0, (s32)&D_80185C9C); + *(s16 *)(a0 + 0x34) = 1; + *(s16 *)(a0 + 0x16) = -4; + *(s32 *)(a0 + 0x48) = 0xC00; + *(s32 *)(a0 + 0x44) = 0; + *(s32 *)(a0 + 0x4C) = 0; + *(s32 *)(a0 + 0x10) = func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 3; + *(s32 *)(a0 + 0x18) = func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 3; + *(s32 *)(a0 + 0x1C) = 0; + func_800D0C48(1); + break; + + case 1: + ((void (*)(s32))func_80178970)(a0); + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) - 0x10; + if (((s32 (*)(s32))func_8012CBCC)(a0) != 0) { + ((void (*)(s32))func_8012ADE4)(a0); + } + *(s32 *)(a0 + 0x1C) += 4; + func_8017DE08(a0); + if (*(s32 *)(a0 + 0x1C) >= 0xFC) { + *(s32 *)(a0 + 0x1C) = 0xFF; + *(s16 *)(a0 + 0x34) = 2; + func_8012A828(a0, &D_8019FEFC); + t = -0x182; + *(s16 *)(a0 + 6) = 0; + *(s16 *)(a0 + 0xA) = t; + *(s16 *)(a0 + 0xE) = 0x80; + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = 0; + *(s16 *)(a0 + 0x10A) = 3; + *(s16 *)(a0 + 0x108) = 0x1E; + v1 = (s32)D_80126B78; + D_80126B66 = -0x80; + D_80126B5E = 0; + D_80126B62 = t; + *(s16 *)(v1 + 0x12) = 0x800; + func_8017C068(); + } + break; + + case 2: + ((void (*)(s32))func_80178970)(a0); + func_8017DE08(a0); + if (--*(s16 *)(a0 + 0x108) == 0) { + *(s16 *)(a0 + 0x34) = 3; + } + break; + + case 3: + ((void (*)(s32))func_80178970)(a0); + func_8017DE08(a0); + if ((*(s32 *)(a0 + 0x1C) -= 0x10) <= 0) { + *(s16 *)(a0 + 0x10A) = 4; + *(s16 *)(a0 + 0x34) = 4; + } + break; + + case 4: + if (((s32 (*)(s32))func_80178970)(a0) != 0) { + ((void (*)(s32))func_80178D18)(a0); + *(s16 *)(a0 + 0x34) = 5; + p = (u16 *)D_801202A0; + for (i = 0; i < 0x60; i++) { + if (*p == 0x26E) { + p[0x2E] = 0x9000; + p[0x1A] = 0; + } + p += 0x86; + } + } else { + if (*(s32 *)(a0 + 0x94) == 0x35) { + func_8002D4C8(0xA47, 0); + } + } + break; + + case 5: + break; + } +} + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017F65C", func_8017F98C); + +extern u8 * func_8012913C(s32 a0); +extern s32 rand(void); + +void func_8017FBA4(s32 param_1) +{ + u8 *obj; + s32 i; + + for (i = 0; i < 4; i++) { + obj = func_8012913C(0x23); + if (obj != NULL) { + *(s16 *)(obj + 6) = *(u16 *)(param_1 + 6) + (rand() % 160) - 0x50; + *(s16 *)(obj + 0xA) = *(u16 *)(param_1 + 0xA) - (rand() % 160); + *(s16 *)(obj + 0xE) = *(u16 *)(param_1 + 0xE) + (rand() % 160) - 0x50; + *(s16 *)(obj + 0x34) = 0x7000; + *(s32 *)(obj + 0x18) = 0; + *(s32 *)(obj + 0x14) = 0; + *(s32 *)(obj + 0x10) = 0; + } + } + + *(s32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x80000000; + *(s32 *)(param_1 + 0x1C) = 6; + *(s16 *)(param_1 + 2) = 5; +} + + +extern void (*D_80185DDC[])(void); +extern u16 D_80126B96; +extern s32 func_8012D624(s16*, s32, s32); +extern void func_8002D4C8(s32, s32); + +void func_8017FCF4(void *param_1) { + u16 *q; + D_80185DDC[*(u16 *)((s32)param_1 + 0x2)](); + if (*(u16 *)((s32)param_1 + 0x0) != 0) { + *(s16 *)((s32)param_1 + 0xa) = *(u16 *)((s32)param_1 + 0xa) - 0x40; + if (*(u16 *)((s32)param_1 + 0x2) >= 5) { + if (((s32 (*)(void *, s32, s32))func_8012D624)(param_1, 0xA0, 0x78) == 1) { + q = &D_80126B96; + *q |= 0x4000; + } + } else { + if (((s32 (*)(void *, s32, s32))func_8012D624)(param_1, 0x10, 0x78) == 1) { + *(u16 *)((s32)param_1 + 0x2) = 4; + func_8002D4C8(0x941, 0); + q = &D_80126B96; + *q |= 0x4000; + } + } + *(s16 *)((s32)param_1 + 0xa) = *(u16 *)((s32)param_1 + 0xa) + 0x40; + } +} + + +extern void (*D_80185E08[])(void *); +extern void func_8012B370(s32 a0); +extern s32 func_8004787C(s32 a0); +extern s32 func_80047948(s32 a0); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); + +void func_8017FDDC(void *a0) { + s32 i; + s16 pos[3]; + s16 vel[3]; + + D_80185E08[*(u16 *)((s32)a0 + 2)](a0); + if (*(u16 *)a0 != 0) { + func_8012B370((s32)a0); + i = 0; + pos[0] = 0; + vel[1] = 0; + pos[1] = 0; + pos[2] = 0; + while (i < 0x1000) { + vel[0] = func_8004787C(i) >> 7; + vel[2] = func_80047948(i) >> 7; + func_8012D5E4((s32)a0, (s32)pos, (s32)vel, 0x40); + i += 0x200; + } + } +} + + +#include "common.h" + +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8012CBCC(s32 a0); +extern void func_8012C218(s32 a0); + +extern u8 D_800AF648; + +void func_8017FE9C(s32 a0) { + struct { + s16 v[3]; /* sp+0x10 */ + s16 pad0; /* sp+0x16 */ + u16 sxy[2]; /* sp+0x18 */ + s32 z; /* sp+0x1C */ + s32 flag; /* sp+0x20 */ + s32 padend; /* frame padding: vars must be 0x28 */ + } L; + + if (*(s16 *)(a0 + 0x84) != 0) { + *(s16 *)(a0 + 0x84) = *(s16 *)(a0 + 0x84) - 1; + } else { + *(s16 *)(a0 + 0x84) = 0xF; + L.v[0] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x48); + L.v[1] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C); + L.v[2] = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x50); + { register void *r4 __asm__("$4"); r4 = &D_800AF648; func_8004914C(r4); } + { register void *r4 __asm__("$4"); r4 = &D_800AF648; func_800491AC(r4); } + RotTransPers((s32)L.v, (s32)L.sxy, &L.z, &L.flag); + if (L.flag >= 0 && (u32)((L.sxy[0] + 0x9F) & 0xFFFF) < 0x13F + && (u32)((L.sxy[1] + 0x77) & 0xFFFF) < 0xEF) { + s32 x = (s16)L.sxy[0]; + register s32 ax __asm__("$5"); + s32 vol; + ax = x; + if (x < 0) { + ax = -x; + } + vol = ((0xA0 - ax) * 0x7F) / 0xA0; + __asm__("" : "=r"(vol) : "0"(vol)); + x = (x + 0xA0) / 0x14; + if (x == 0x10) { + x = 0xF; + } + x = x << 8; + { + s32 flg = 0x3000; + func_8002D4C8(0x93E, ((vol | flg) | x) & 0xFFFF); + } + } + } + + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x300; + if (((s32 (*)(s32))func_8012CBCC)(a0) != 0) { + func_8012C218(a0); + } + + if ((*(s32 *)(a0 + 0x1C) -= 1) == 0) { + func_8012C218(a0); + } +} + + + +extern void (*D_80185E24[])(void); +extern s16 D_80126B9A; +extern s32 func_8012D624(s16 *a0, s32 a1, s32 a2); +extern s32 func_8012B8A4(s16 *a0); + +void func_80180058(s16 *param_1) { + D_80185E24[*(u16 *)(param_1 + 1)](); + if (*(u16 *)param_1 != 0 && func_8012D624(param_1, 0x1E, 100) != 0) { + D_80126B9A = func_8012B8A4(param_1); + } +} + + + +extern void (*D_80185E2C[])(void); + +void func_801800D4(void *a0) { + D_80185E2C[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern u16 D_801B9F00; +extern u16 D_801B9F02; +extern u16 D_801B9F04; +extern u16 D_801B9F08; +extern u16 D_801B9F0A; +extern u16 D_801B9F0C; + +void func_80180110(void *a0) { + u16 var_v1; + u16 var_a1; + *(u16 *)((s32)a0 + 0xDC) = D_801B9F00; + *(u16 *)((s32)a0 + 0xDE) = D_801B9F02; + *(u16 *)((s32)a0 + 0xE0) = D_801B9F04; + *(u16 *)((s32)a0 + 0xE4) = D_801B9F08; + *(u16 *)((s32)a0 + 0xE6) = D_801B9F0A; + var_v1 = *(u16 *)((s32)a0 + 2); + var_a1 = D_801B9F0C; + *(u16 *)((s32)a0 + 2) = var_v1 + 1; + *(u16 *)((s32)a0 + 0xE8) = var_a1; +} + + +#include "common.h" + +extern u16 D_801B9F00; +extern u16 D_801B9F02; +extern u16 D_801B9F04; +extern u16 D_801B9F08; +extern u16 D_801B9F0A; +extern u16 D_801B9F0C; + +void func_8018017C(void *a0) { + u16 v1; + u16 a1; + *(u16 *)((s32)a0 + 0xFC) = D_801B9F00; + v1 = *(u16 *)((s32)a0 + 2); + *(u16 *)((s32)a0 + 0xFE) = D_801B9F02; + *(u16 *)((s32)a0 + 0x100) = D_801B9F04; + *(u16 *)((s32)a0 + 0x104) = D_801B9F08; + *(u16 *)((s32)a0 + 0x106) = D_801B9F0A; + a1 = D_801B9F0C; + *(u32 *)((s32)a0 + 0x1C) = 0x10; + *(u16 *)((s32)a0 + 2) = v1 + 1; + *(u16 *)((s32)a0 + 0x108) = a1; +} + + +extern void func_80180228(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(s32 a0); +void func_801801E8(s32 a0) { + func_80180228(a0); + if (func_8012BEE8(a0)) { + func_8012C218(a0); + } +} + + +#include "common.h" + +/* func_80180228 — ov_SC06_030 / ov_SC06_030_jr_8017C8D0 (132 ins) + * + * Remap variant of the banked family func_80187EE8 (ov_SC03_014_jr_801848E4, + * MATCH): builds ONE 4-vertex gouraud packet on the stack (verts sp+0x10, + * colours sp+0x30, code sp+0x40), colour ramp derived from the s32 at a0+0x1C + * (*15, >>1, -0x10 clamped-at-0 for the far pair), then loads the camera matrix + * cached at D_800AF630+0x18 and runs one rtpt+rtps+avsz4 group over the + * SVECTORs at a0+0xFC / a0+0x104 / a0+0xDC / a0+0xE4, with the shared + * OT-range guard (otz>0, flag>=0, OT slot < &D_800AE610, (flag&~0x1000)==0). + * + * REMAP vs twin: the HALVED channel is BLUE here (twin: green). Target store + * order per vertex pair is b1,b0,r1,r0,g1,g0 — reproduced by three chained + * statements (right-to-left evaluation), b/r/g. + */ + +extern u8 D_800AF630[]; /* TU line 53, verbatim */ + +typedef struct { s16 vx, vy, vz, pad; } SV_80180228; +typedef struct { u8 r, g, b, cd; } CV_80180228; +typedef struct { + SV_80180228 v[4]; /* +0x00 : sxy0..3 (v[0].vz doubles as the otz slot) */ + CV_80180228 rgb[4]; /* +0x20 */ + u32 code; /* +0x30 */ + u32 pad; /* +0x34 */ +} PKT_80180228; + +/* every macro is suffixed: this TU already #defines the unsuffixed gte_* family + * (func_8017C8D0 region), so an unsuffixed name would clash. */ +#define gte_ldv0_80180228(r0) __asm__ volatile ( \ + "lwc2 $0, 0( %0 );" \ + "lwc2 $1, 4( %0 )" \ + : \ + : "r"( r0 ) ) + +#define gte_ldv3_80180228(r0, r1, r2) __asm__ volatile ( \ + "lwc2 $0, 0( %0 );" \ + "lwc2 $1, 4( %0 );" \ + "lwc2 $2, 0( %1 );" \ + "lwc2 $3, 4( %1 );" \ + "lwc2 $4, 0( %2 );" \ + "lwc2 $5, 4( %2 )" \ + : \ + : "r"( r0 ), "r"( r1 ), "r"( r2 ) ) + +#define gte_rtps_80180228() __asm__ volatile ("nop;nop;rtps") +#define gte_rtpt_80180228() __asm__ volatile ("nop;nop;rtpt") +#define gte_avsz4_80180228() __asm__ volatile ("nop;nop;avsz4") + +#define gte_stsxy_80180228(r0) __asm__ volatile ( \ + "swc2 $14, 0( %0 )" \ + : \ + : "r"( r0 ) \ + : "memory" ) + +#define gte_stsxy3_80180228(r0, r1, r2) __asm__ volatile ( \ + "swc2 $12, 0( %0 );" \ + "swc2 $13, 0( %1 );" \ + "swc2 $14, 0( %2 )" \ + : \ + : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ + : "memory" ) + +#define gte_stotz_80180228(r0) __asm__ volatile ( \ + "swc2 $7, 0( %0 )" \ + : \ + : "r"( r0 ) \ + : "memory" ) + +#define gte_stflg_80180228(r0) __asm__ volatile ( \ + "cfc2 $12, $31;" \ + "nop;" \ + "sw $12, 0( %0 )" \ + : \ + : "r"( r0 ) \ + : "$12", "memory" ) + +#define gte_SetRotMatrix_80180228(r0) __asm__ volatile ( \ + "lw $12, 0( %0 );" \ + "lw $13, 4( %0 );" \ + "ctc2 $12, $0;" \ + "ctc2 $13, $1;" \ + "lw $12, 8( %0 );" \ + "lw $13, 12( %0 );" \ + "lw $14, 16( %0 );" \ + "ctc2 $12, $2;" \ + "ctc2 $13, $3;" \ + "ctc2 $14, $4" \ + : \ + : "r"( r0 ) \ + : "$12", "$13", "$14" ) + +#define gte_SetTransMatrix_80180228(r0) __asm__ volatile ( \ + "lw $12, 20( %0 );" \ + "lw $13, 24( %0 );" \ + "ctc2 $12, $5;" \ + "lw $14, 28( %0 );" \ + "ctc2 $13, $6;" \ + "ctc2 $14, $7" \ + : \ + : "r"( r0 ) \ + : "$12", "$13", "$14" ) + +void func_80180228(s32 a0) +{ + extern void func_80017714(void *); + extern s16 D_800B9A02; + /* §183 TYPE-shadowed-block-scope: adopt the twin's spelling for D_800A651C. + * The typedef is declared BLOCK-SCOPE here so it shadows (never redefines) + * the file-scope copy in src/shared/engine_types.h, which is byte-identical. */ + typedef struct { s32 a; s32 b[4]; } Ot_8018B23C; + extern Ot_8018B23C D_800A651C[]; + extern u8 D_800AE610[]; + + PKT_80180228 pkt; /* sp+0x10 .. sp+0x47 */ + s32 flag1; /* sp+0x48 */ + s32 flag2; /* sp+0x4C */ + s32 otz; /* sp+0x50 */ + u8 *base; + s32 *m; + s16 c, p, q; + s32 d; + + c = *(s32 *)(a0 + 0x1C) * 15; + base = D_800AF630; + p = c; + d = c >> 1; + q = d; + + /* REMAP: halved channel is BLUE (twin func_80187EE8: green). + Store order b1,b0,r1,r0,g1,g0 == target's sb sequence. */ + pkt.rgb[0].b = pkt.rgb[1].b = q; + pkt.rgb[0].r = pkt.rgb[1].r = p; + pkt.rgb[0].g = pkt.rgb[1].g = p; + + c -= 0x10; + p = c; + if (c < 0) { + p = 0; + } + { + s16 e; /* block-scoped: one pseudo (§136/L1) */ + e = d - 0x10; + q = e; + if (e < 0) { + q = 0; + } + } + pkt.rgb[2].b = pkt.rgb[3].b = q; + pkt.rgb[2].r = pkt.rgb[3].r = p; + pkt.rgb[2].g = pkt.rgb[3].g = p; + + pkt.code = 0x50000000; + + m = (s32 *)(base + 0x18); + gte_SetRotMatrix_80180228(m); + gte_SetTransMatrix_80180228(m); + + gte_ldv3_80180228((SV_80180228 *)(a0 + 0xFC), (SV_80180228 *)(a0 + 0x104), + (SV_80180228 *)(a0 + 0xDC)); + gte_rtpt_80180228(); + gte_stflg_80180228(&flag1); + gte_stsxy3_80180228(&pkt.v[0], &pkt.v[1], &pkt.v[2]); + gte_ldv0_80180228((SV_80180228 *)(a0 + 0xE4)); + gte_rtps_80180228(); + gte_stflg_80180228(&flag2); + flag1 = flag1 | flag2; + gte_stsxy_80180228(&pkt.v[3]); + gte_avsz4_80180228(); + gte_stotz_80180228(&otz); + + if (otz > 0 && flag1 >= 0 && + !((u32)&D_800AE610 < + (u32)(*(s32 *)((u8 *)&D_800A651C + (*(u16 *)&D_800B9A02) * 0x14) + + otz * 4)) && + (flag1 & 0xFFFFEFFF) == 0) { + pkt.v[0].vz = (s16)otz; + func_80017714(&pkt.v[0]); + } +} + + +extern void func_8001AAA0(s32 arg); + s32 func_80180438(void) { + return ((s32 (*)(s32))func_8001AAA0)(0x7C) != 0; + } + + +s32 func_80180458(s32 a0) { + if (*(s16 *)(a0 + 0x10A) != 0) { + *(s16 *)(a0 + 0x10A) = 0; + return 1; + } + return 0; +} + + +extern void func_800D0C48(s32 arg); + void func_8018047C(void) { + func_800D0C48(0x1); + } + + +extern s32 func_80180C5C(void); + s32 func_8018049C(void) { + return func_80180C5C() != 0; + } + + +extern void func_80016714(void *a0, s32 a1); +extern void func_8002A04C(s32 a0); +extern void func_8012C218(s32 a0); + +void func_801804BC(void *a0) { + if (*(u32 *)(a0 + 0xCC) != 0) { + func_80016714(*(void **)(a0 + 0xCC), 0x84); + } + func_8002A04C((s32)a0); + func_8012C218((s32)a0); +} + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B2CC(s32 a0); +extern s32 func_80143970(s32 a0); + +void func_80180508(void *a0) { + extern u8 D_80185D14[]; + extern u8 D_8018E4E4[]; + extern u8 D_80182184[]; + extern u8 D_8019EC8C; + extern u8 D_80185D48; + s32 s1; + + if (func_8012C354((s32)a0, (s32)D_80185D14) != 0) { + s1 = ((s32 (*)(void))func_8012C1B8)(); + if (s1 == 0) { + func_8012CAE4(a0); + } else { + *(s32 *)((s32)a0 + 0xCC) = s1; + func_8001C214(s1, (s32)D_8018E4E4); + *(s32 *)(s1 + 0x20) = *(s32 *)D_80182184; + *(s32 *)(s1 + 4) |= 0x80000000; + *(u8 *)((s32)a0 + 0xC0) = 1; + *(s32 *)((s32)a0 + 0xC4) = 3; + *(s32 *)((s32)a0 + 0xB4) = 0; + *(u16 *)((s32)a0 + 2) = 1; + func_8012A828((s32)a0, (void *)&D_8019EC8C); + *(u8 *)((s32)a0 + 0x75) = 0; + *(s32 *)((s32)a0 + 0xBC) = (s32)&D_80185D48; + func_80143970((s32)a0); + *(s32 *)((s32)a0 + 0x48) = 0xFFFE8000; + func_8012B2CC((s32)a0); + *(s32 *)((s32)a0 + 0x1C) = 0xF; + } + } +} + + +#include "common.h" + +extern u8 D_80185C2C[]; +extern u8 D_8019FFA4; +extern s32 func_80178B18(s32, s32); +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_80178970(void); +extern void func_80178D18(void); +extern void func_8017BF08(void *a0, void *a1, s32 a2, s32 a3); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_801805F8(s32 a0) { + switch (*(u16 *)(a0 + 0x34)) { + case 0: + if (--*(s32 *)(a0 + 0x1C) == 0) { + ((void (*)(s32, s32))func_80178B18)(a0, (s32)D_80185C2C); + *(u16 *)(a0 + 0x34) = 1; + func_8012A828(a0, &D_8019FFA4); + } + break; + + case 1: + if (((s32 (*)(s32))func_80178970)(a0) != 0) { + ((void (*)(s32))func_80178D18)(a0); + *(u16 *)(a0 + 2) = 2; + func_8017BF08((void *)(a0 + 0x76), (void *)(a0 + 0x76), 6, 0xD2); + } else if (*(s32 *)(a0 + 0x94) == 0x22) { + func_8002D4C8(0xC7C, 0); + } + break; + } +} + + +void func_801806D4(s32 a0) { + s32 v0; + + v0 = *(s32 *)(a0 + 0x1C); + if (v0 != 0) { + *(s32 *)(a0 + 0x1C) = v0 - 1; + *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + func_8012BA10(a0, 8); + } else { + *(s16 *)(a0 + 0x34) = 0; + switch (*(s16 *)(a0 + 0xFC)) { + case 0: + *(s16 *)(a0 + 2) = 3; + return; + case 1: + *(s16 *)(a0 + 2) = 4; + *(s16 *)(a0 + 0x106) = *(u16 *)(a0 + 0x76); + return; + case 2: + *(s16 *)(a0 + 2) = 5; + return; + case 3: + if (*(s16 *)(a0 + 0x76) < *(s16 *)(a0 + 0x106)) { + *(s16 *)(a0 + 2) = 6; + } else { + *(s16 *)(a0 + 2) = 3; + } + return; + } + } +} + + +extern M2C_UNK D_80185DB8; +extern u8 D_80185DA0[]; +extern void func_8001CA1C(s32, s32); +extern void func_8012A828(s32, void*); +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); + + void func_801807B4(void *a0) { + s32 v0 = ((s32 (*)(void *))func_8012C1B8)(a0); + *(int *)((char *)a0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(a0); + } else { + ((void (*)(s32, u8 *))func_8001CA1C)(v0, D_80185DA0); + ((void (*)(void *, u8 *))func_8012A828)(a0, ((u8 *)&D_80185DB8)); + *(short *)((char *)a0 + 0x2) = 1; + } + } + + +void func_8018081C(s32 a0) { + *(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 1; + *(s32 *)(a0 + 4) = (*(s16 *)(a0 + 0x88) * 0x10000) + *(s32 *)(a0 + 0x10) * *(s32 *)(a0 + 0x1C); + *(s32 *)(a0 + 8) = (*(s16 *)(a0 + 0x8A) * 0x10000) + *(s32 *)(a0 + 0x14) * *(s32 *)(a0 + 0x1C); + *(s32 *)(a0 + 0xC) = (*(s16 *)(a0 + 0x8C) * 0x10000) + *(s32 *)(a0 + 0x18) * *(s32 *)(a0 + 0x1C); + *(s32 *)(a0 + 8) = *(s32 *)(a0 + 8) - (func_8004787C(*(s32 *)(a0 + 0x1C) << 6) << 11); + if (*(s32 *)(a0 + 0x1C) == 0x20) { + *(s16 *)(a0 + 2) = 2; + *(s32 *)(a0 + 0x1C) = 0x80; + func_8002D4C8(0x943, 0); + } +} + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017F65C", func_801808F0); + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_800599B8(s32 a0, s32 a1); +extern u8 D_80185AB0[]; +extern s16 D_80185DC8[]; +extern u8 D_80185928[]; + +void func_80180940(s32 param_1) { + s32 iVar1; + iVar1 = *(s32 *)(param_1 + 0x1C) - 1; + *(s32 *)(param_1 + 0x1C) = iVar1; + if (iVar1 <= 0) { + *(s16 *)(param_1 + 2) = 4; + func_8002D4C8(0x941, 0); + } else { + func_800599B8((s32)&D_80185AB0, (s32)&D_80185928[D_80185DC8[iVar1 % 10]]); + } +} + + +extern u8 D_801202A0[]; +extern void func_8012C218(s32 a0); +extern s32 func_80013350(s32 *a0, s32 *a1); + +void func_801809DC(s32 a0) +{ + s32 v1; + u16 *p; + s32 i; + + v1 = *(s32 *)(a0 + 0x1C) - 1; + *(s32 *)(a0 + 0x1C) = v1; + if (v1 == 0) { + func_8012C218(a0); + } else if (v1 == 3) { + i = 0; + p = (u16 *)D_801202A0; + for (; i < 0x60; i++) { + if (*p == 0x30B && p[1] < 5 && + func_80013350((s32 *)(a0 + 4), (s32 *)(p + 2)) < 0x6400) { + p[1] = 4; + } + p += 0x86; + } + } +} + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern s32 func_80143970(s32 a0); + +void func_80180ABC(s32 a0) { + extern u8 D_8018F280[]; + s32 v1; + + v1 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(a0 + 0x20) = v1; + if (v1 == 0) { + func_8012CAE4((void *)a0); + } else { + func_8001C214(v1, (s32)D_8018F280); + *(u8 *)(a0 + 0xC0) = 1; + *(u16 *)(a0 + 2) = 1; + func_80143970(a0); + *(s32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x8000000; + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x14) = 0x400; + *(s32 *)(a0 + 0x1C) = 0x78; + } +} + + +extern void func_8012CBCC(s32 a0); +extern void func_8012C218(s32 a0); + +void func_80180B50(s32 a0) { + s32 v1; + s32 v0; + + v1 = *(s32 *)(a0 + 0x20); + *(u16 *)(v1 + 0x10) = *(u16 *)(v1 + 0x10) + 0x300; + if (((s32 (*)(s32))func_8012CBCC)(a0) != 0) { + func_8012C218(a0); + } + v0 = *(s32 *)(a0 + 0x1c) - 1; + *(s32 *)(a0 + 0x1c) = v0; + if (v0 == 0) { + func_8012C218(a0); + } +} + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern s32 func_80143970(s32 a0); + +void func_80180BBC(s32 a0) { + extern u8 D_8018F000[]; + s32 v1; + + v1 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(a0 + 0x20) = v1; + if (v1 == 0) { + func_8012CAE4((void *)a0); + } else { + func_8001C214(v1, (s32)D_8018F000); + *(u16 *)(a0 + 2) = 1; + *(u8 *)(a0 + 0xC0) = 1; + func_80143970(a0); + *(s32 *)(*(s32 *)(a0 + 0x20) + 4) |= 0x8000000; + *(s32 *)(a0 + 0x1C) = 0x78; + } +} + + + + + + + + + + + + + + + + + + + + +s32 func_80180C44(s32 arg0) +{ + s32 ret; + ret = 0x6F; if (0x514 > arg0) { ret = 0x8A; + } + else + { + } + return ret; +} + + +extern void func_8001AAA0(s32 arg); + s32 func_80180C5C(void) +{ + func_8001AAA0(0x6F); + } + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +void func_80180C7C(void) { + + extern s32 D_801B4C6C(void *a0); + ((void (*)(void *, s32))func_8016EE40)((void *)D_801B4C6C, 0x1000000); +} + + + +extern void (*D_801B4C84[])(void); + +void func_80180CA4(void *a0) { + D_801B4C84[*(u8 *)((s32)a0 + 0x216)](); +} + + +void func_80180CE0(void *a0) { + void *s0 = a0; + + func_80180FF4(a0); + if (*(s16 *)((s32)s0 + 0x210) >= 0) { + *(s16 *)((s32)s0 + 0x210) = 0x30; + } else { + *(s16 *)((s32)s0 + 0x210) = -0x30; + } + func_80171990((u8 *)s0); +} + + + +extern s32 func_801810D0(); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80171928(void *a0); + +void func_80180D28(void *param) +{ + void *s0 = param; + + if (func_801810D0() != 0) { + func_8002D4C8(0x8B1, 0); + func_80171928(s0); + } +} + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern s32 D_801B4C8C; + +void func_80180D68(void) { + ((void (*)(void *, s32))func_8016EE40)(&D_801B4C8C, 0x1000000); +} + + + +extern void (*D_801B4C98[])(void); + +void func_80180D90(void *a0) { + D_801B4C98[*(u8 *)((s32)a0 + 0x216)](); +} + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017F65C", func_80180DCC); + + +extern s32 func_801810D0(); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_80171990(u8*); + +void func_80180ED4(void *param) +{ + void *s0 = param; + + if (func_801810D0() != 0) { + func_8002D4C8(0x8B1, 0); + ((void (*)(void *))func_80171990)(s0); + } +} + + +extern s32 func_80013328(s32 a0, s32 a1); +extern u8 D_801202A0[]; +extern void func_800D1724(s32 a0); +extern void func_80171928(void *a0); + +void func_80180F14(arg0) +void *arg0; +{ + u8 *p; + u8 *found; + s32 i; + s32 best; + s16 t; + + found = 0; + best = 0x7FFFFFFF; + for (i = 0; i < 0x60; i++) { + p = &D_801202A0[i * 0x10C]; + if ((*(u16 *)(p + 0) != 0) && ((*(u16 *)(p + 0x5C) & 0x80) != 0)) { + t = (s16)func_80013328((s32)arg0 + 4, (s32)p + 4); + if (t < best) { + best = t; + found = p; + } + } + } + if (found != 0) { + func_800D1724(*(s32 *)(found + 0xDC)); + } + func_80171928(arg0); +} + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017F65C", func_80180FF4); + +extern void func_80015954(s32 a0, s32 a1); +extern void func_8012F14C(s32 a0, s32 a1, s32 a2); + +s32 func_801810D0(param_1) +s32 param_1; +{ + s32 sp10[2]; + s32 p; + s32 q; + short v; + + p = *(s32 *)(param_1 + 0x204); + q = *(s32 *)(p + 0x20); + if (p != 0) { + *(u16 *)(q + 0x12) = *(u16 *)(q + 0x12) + 0x80; + func_8012F14C(q + 0x34, param_1 + 0x20C, (s32)sp10); + func_80015954((s32)sp10, param_1 + 4); + } + q = *(s32 *)(param_1 + 0x20); + *(u16 *)(q + 0x12) = *(u16 *)(q + 0x12) + 0x80; + v = *(u16 *)(param_1 + 0x208) + 0x80; + *(u16 *)(param_1 + 0x208) = v; + return v == 0x800; +} + + +INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017F65C", func_80181164); + + + +extern s32 rand(void); +extern s32 func_800CF8B4(); +extern s32 func_8014CB8C(void); +extern s32 func_801726C4(s32 *a0); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_80143C74(s32 a0, s32 a1); + +void func_80181588(s32 param_1) +{ + + extern u16 D_80126B62; + extern u16 D_80126B66; + s32 diff; + s32 obj; + s32 quotient; + s16 sVar1; + u16 uVar2; + + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) + *(u16 *)(param_1 + 0xFC); + + obj = (s32)&D_80126B62; + /* §137 zero-byte barrier: closes the $s2<->$s3 REGALLOC-PERM. global.c:allocno_compare + * ranks pri = floor_log2(R)*R/L*1e4*size; without this, diff (R=7,L=46) = 3043 outranks + * obj (R=11,L=109) = 3027 and takes $s2. This adds ONE reference to obj (R 11->12, + * L 109->110 => 3272) with no emitted bytes, so obj wins $s2 and diff falls to $s3. */ + __asm__ __volatile__("" :: "r"(obj)); + if (*(s16 *)obj < -0x4E0) { + diff = (s32)(s16)D_80126B66 - *(s16 *)(param_1 + 0xE); + if (diff < 0x140) { + uVar2 = *(u16 *)(param_1 + 0xFC) - 0x10; + *(u16 *)(param_1 + 0xFC) = uVar2; + if ((s16)uVar2 < 0) { + *(u16 *)(param_1 + 0xFC) = 0; + } + } else { + sVar1 = *(u16 *)(param_1 + 0xFC) + 0x10; + *(u16 *)(param_1 + 0xFC) = sVar1; + if (sVar1 > 0x300) { + *(u16 *)(param_1 + 0xFC) = 0x300; + } + if ((diff < 0x900) && (func_800CF8B4() != 0) && (func_8014CB8C() == 0)) { + quotient = (*(s16 *)(param_1 + 0xFC) * 0xD) / 0x300; + quotient = (quotient * (0x900 - diff)) / 0x900; + if (func_801726C4((s32 *)(obj - 0xA)) != 0) { + quotient = quotient * 2; + } + D_80126B66 = D_80126B66 + quotient; + func_8002D4C8(0x978, ((quotient * 0x7F / 0xD) | 0x1000) & 0xFFFF); + *(u16 *)(param_1 + 0xFE) = 1; + } + } + } else { + sVar1 = *(u16 *)(param_1 + 0xFC) + 0x10; + *(u16 *)(param_1 + 0xFC) = sVar1; + if (sVar1 > 0x300) { + *(u16 *)(param_1 + 0xFC) = 0x300; + } + } + + if (*(s32 *)(param_1 + 0x1C) != 0) { + *(s32 *)(param_1 + 0x1C) = *(s32 *)(param_1 + 0x1C) - 1; + } else { + if (*(s16 *)(param_1 + 0xFC) > 0x40) { + *(s32 *)(param_1 + 0x1C) = 3; + obj = func_80143C74(param_1, 0); + if (obj != 0) { + *(s16 *)(obj + 6) = rand() % 0x120 - 0xE0; + *(u16 *)(obj + 0xA) = -(rand() & 0x3F) - 0x502; + diff = rand() % 0x560 + 0x140; + *(u16 *)(obj + 0xE) = *(u16 *)(obj + 0xE) + diff; + quotient = (*(s16 *)(param_1 + 0xFC) * 0xD) / 0x300; + quotient = (quotient * (0x800 - diff)) / 0x800; + *(s16 *)(obj + 0x1A) = quotient * 2; + *(s32 *)(obj + 0x48) = -((rand() & 0x1FF) << 7); + } + } + } + + if (*(s16 *)(param_1 + 0xFE) == 2) { + *(u16 *)(param_1 + 0xFE) = 0; + func_8002D4C8(4, 0x978); + } + if (*(s16 *)(param_1 + 0xFE) == 1) { + *(u16 *)(param_1 + 0xFE) = 2; + } +} + + + +extern void (*D_801B4D2C[])(void); + +void func_801818FC(void *a0) { + D_801B4D2C[*(u16 *)((s32)a0 + 0x2)](); +} + + + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32, void*); +extern void func_8012B23C(void *a0); + + +void func_80181938(void *a0) { + + extern u8 D_801B4D44[]; + extern s32 D_801B4D78[]; + extern u8 D_80182184[]; + if (func_8012C354((s32)a0, (s32)D_801B4D44) != 0) { + u16 v1 = *(u16 *)((s32)a0 + 0x70); + + if (v1 & 0x10) { + u16 v0 = v1 & ~0x10; + *(u16 *)((s32)a0 + 0x70) = v0; + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_801B4D78[(s16)v0]); + *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040; + } else { + func_8001C214(*(s32 *)((s32)a0 + 0x20), D_801B4D78[(s16)v1]); + } + + if (*(s16 *)((s32)a0 + 0x70) == 8 || *(s16 *)((s32)a0 + 0x70) == 0xA) { + *(s16 *)((s32)a0 + 0x34) = 3; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 9) { + *(s16 *)((s32)a0 + 0x34) = 2; + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + } + if (*(s16 *)((s32)a0 + 0x70) == 0xB) { + *(s16 *)((s32)a0 + 0x34) = 4; + } + + *(u8 *)((s32)a0 + 0xC0) = 1; + *(s32 *)((s32)a0 + 0xB4) = -1; + *(u8 *)((s32)a0 + 0x75) = 8; + ((void (*)(s32 *, s32))func_8012A828)((s32 *)a0, (s32)D_80182184); + + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + func_8012B23C(a0); + *(s16 *)((s32)a0 + 0xAE) = -1; + } +} + + +extern u8 D_801202A0[]; +extern void *D_80126CC8; +extern u8 D_801B72B4[]; +extern u8 D_801B6914[]; +extern void func_8001C214(s32 a0, s32 a1); +extern void func_80180D68(void); + +void func_80181A80(void *a0) { + u16 state = *(u16 *)((s32)a0 + 0x34); + + switch (state) { + case 4: + { + u8 *p = D_801202A0; + s32 i; + + for (i = 0; i < 0x60; i++, p += 0x10C) { + if (*(u16 *)(p + 0) == 0x2E7 && *(u16 *)(p + 2) == 4) { + func_8001C214(*(s32 *)((s32)a0 + 0x20), (s32)D_801B72B4); + *(u16 *)((s32)a0 + 0x5C) = 0x8800; + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = 0x400; + *(s16 *)((s32)a0 + 0x34) = 3; + } + } + /* fall through */ + } + case 0: + if (D_80126CC8 == a0) { + u16 t0 = *(u16 *)((s32)a0 + 0x88); + u16 t1 = *(u16 *)((s32)a0 + 0x8A); + u16 t2 = *(u16 *)((s32)a0 + 0x8C); + + *(s16 *)((s32)a0 + 0x34) = 1; + *(s16 *)((s32)a0 + 0x5C) = 0; + *(u16 *)((s32)a0 + 0x6) = t0; + *(u16 *)((s32)a0 + 0xA) = t1; + *(u16 *)((s32)a0 + 0xE) = t2; + func_80180D68(); + } + break; + case 1: + break; + case 2: + { + u8 *p = D_801202A0; + s32 i; + + for (i = 0; i < 0x60; i++, p += 0x10C) { + if (*(u16 *)(p + 0) == 0x2E7 && *(u16 *)(p + 2) == 4) { + func_8001C214(*(s32 *)((s32)a0 + 0x20), (s32)D_801B6914); + *(s32 *)(*(s32 *)((s32)a0 + 0x20) + 0x4) |= 0x60000040; + *(u16 *)((s32)a0 + 0x5C) = 0x9000; + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = 0x400; + *(s16 *)((s32)a0 + 0x34) = 0; + } + } + break; + } + case 3: + break; + default: + break; + } +} + + + +extern void (*D_801B4DA8[])(void); + +void func_80181C30(void *a0) { + D_801B4DA8[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void (*D_801B4DE4[])(void); + +void func_80181C6C(void *a0) { + D_801B4DE4[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_80181CA8(void *a0) { + + extern u8 D_801B4CF8[]; + extern u8 D_80182184[]; + + if (func_8012C354((s32)a0, (s32)D_801B4CF8) != 0) { + *(u8 *)((s32)a0 + 0xC0) = 1; + *(s16 *)((s32)a0 + 0xAE) = -1; + func_8012A828(a0, D_80182184); + + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) = + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) | 0x10; + *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18) = 0xE00; + *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1A) = 0xE00; + *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1C) = 0xE00; + *(u16 *)((s32)a0 + 0xFC) = 0x300; + *(u8 *)((s32)a0 + 0x75) = 8; + } +} + + +extern s32 func_8012C354(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_80181D50(void *a0) { + + extern u8 D_801B4DB0[]; + extern u8 D_80182184[]; + + if (func_8012C354((s32)a0, (s32)D_801B4DB0) != 0) { + *(u8 *)((s32)a0 + 0xC0) = 1; + func_8012A828(a0, D_80182184); + *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) = + *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) | 0x10; + *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x18) = 0xAAA; + *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x1C) = 0xAAA; + } +} + + +extern void func_80181164(void); + void func_80181DD4(s32 arg0) { + s32 temp_v0; + func_80181164(); + temp_v0 = *(s32 *)(arg0 + 0x1c) + 1; + *(s32 *)(arg0 + 0x1c) = temp_v0; + } + + + + +