diff --git a/config/splat.ov_SC01_077.yaml b/config/splat.ov_SC01_077.yaml index 99c2aab97f..ea178af4ca 100644 --- a/config/splat.ov_SC01_077.yaml +++ b/config/splat.ov_SC01_077.yaml @@ -87,6 +87,7 @@ segments: - [0x58a0c, c, ov_SC01_077_jr_80180B64] - [0x58ee4, c, ov_SC01_077_jr_8018103C] - [0x59a8c, c, ov_SC01_077_jr_80181BE4] + - [0x59db0, c, ov_SC01_077_jr_80181F08] - [0x59f84, c, ov_SC01_077_jr_801820DC] - [0x5a110, c, ov_SC01_077_jr_80182268] - [0x5ad24, c, ov_SC01_077_jr_80182E7C] @@ -147,6 +148,8 @@ segments: - [0xb1000, .rodata, ov_SC01_077_jr_8018103C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb1098, .rodata, ov_SC01_077_jr_80181BE4] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb10ac, data, tail17] + - [0xb10c0, .rodata, ov_SC01_077_jr_80181F08] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb1124, data, tail18] - [0xb1128, .rodata, ov_SC01_077_jr_801820DC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb1148, .rodata, ov_SC01_077_jr_80182268] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb11a8, .rodata, ov_SC01_077_jr_80182E7C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) @@ -154,7 +157,7 @@ segments: - [0xb12a8, .rodata, ov_SC01_077_jr_80183AF0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb12c8, .rodata, ov_SC01_077_jr_80183BAC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb1308, .rodata, ov_SC01_077_jr_80183CF4] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb1328, data, tail18] + - [0xb1328, data, tail19] - [0xB29D4, bin, trailing] # final 3 bytes (EOF 0xB29D7 not word-aligned; spimdisasm drops # a trailing partial word and a <4-byte `data` carve emits nothing, # so use `bin` = raw .incbin, byte-exact). Word-aligned overlays omit this. diff --git a/config/splat.ov_SC06_022.yaml b/config/splat.ov_SC06_022.yaml index 4c933d0a29..3bd0f99126 100644 --- a/config/splat.ov_SC06_022.yaml +++ b/config/splat.ov_SC06_022.yaml @@ -169,11 +169,10 @@ segments: - [0xb8960, .rodata, ov_SC06_022_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8980, data, tail18] - [0xb8998, .rodata, ov_SC06_022_jr_80180CD0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb89b4, data, tail19] - [0xb89d4, .rodata, ov_SC06_022_jr_80182D08] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8ab4, .rodata, ov_SC06_022_jr_80184304] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8acc, .rodata, ov_SC06_022_jr_80184A28] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb8ae0, data, tail20] + - [0xb8ae0, data, tail19] - [0xBA114, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xBA117] # 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_SC07_000.yaml b/config/splat.ov_SC07_000.yaml index bec7adfdb2..21354e3187 100644 --- a/config/splat.ov_SC07_000.yaml +++ b/config/splat.ov_SC07_000.yaml @@ -163,7 +163,7 @@ segments: - [0xa6534, data, tail17] - [0xa6538, .rodata, ov_SC07_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xa654c, .rodata, ov_SC07_000_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xa6588, data, tail18] + - [0xa65a0, data, tail18] - [0xA8B8C, bin, trailing] # final 3 bytes (EOF not 4-aligned; spimdisasm drops a partial word) - [0xA8B8F] # 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/md_MAIN_014/md_MAIN_014.c b/src/md_MAIN_014/md_MAIN_014.c index d7acc335e3..6a9ec912c0 100644 --- a/src/md_MAIN_014/md_MAIN_014.c +++ b/src/md_MAIN_014/md_MAIN_014.c @@ -88,7 +88,39 @@ void func_800CB164(void *a0) { } -INCLUDE_ASM("asm/md_MAIN_014/nonmatchings/md_MAIN_014", func_800CB254); +void func_800CB254(void *a0) { + typedef struct { s32 w[4]; } S16; + extern u8 D_80078EC1; + extern void func_80146C3C(void *a0); + extern void func_800CAF90(void *a0); + s32 a1; + s32 n; + s32 m; + s32 v0; + a1 = *(s32 *)((s32)a0 + 0x34); + if (D_80078EC1 == 5) { + if ((*(s32 *)((s32)a0 + 0x1C))++ < 10) { + *(u16 *)((s32)a0 + 0x28) += 0x120; + } else { + n = *(u16 *)((s32)a0 + 2); + n += 1; + *(u16 *)((s32)a0 + 0x12) = (s16)*(u16 *)(a1 + 0x12) >> 1; + m = *(u16 *)(a1 + 0x1A); + *(s32 *)((s32)a0 + 0x30) = 0x20; + *(s32 *)((s32)a0 + 0x1C) = -0xC0; + *(u16 *)((s32)a0 + 0x2A) = 0x500; + *(u16 *)((s32)a0 + 2) = n; + *(u16 *)((s32)a0 + 0x1A) = (s16)m >> 1; + } + v0 = *(s32 *)(a1 + 0x20); + *(S16 *)((s32)a0 + 0x38) = *(S16 *)(v0 + 0x34); + *(S16 *)((s32)a0 + 0x48) = *(S16 *)(v0 + 0x44); + func_800CAF90(a0); + } else { + func_80146C3C(a0); + } +} + #include "common.h" diff --git a/src/md_SC03_134/md_SC03_134.c b/src/md_SC03_134/md_SC03_134.c index efc5c98a65..25e21bd651 100644 --- a/src/md_SC03_134/md_SC03_134.c +++ b/src/md_SC03_134/md_SC03_134.c @@ -424,7 +424,41 @@ void func_801E2F08(void *param_1) { } -INCLUDE_ASM("asm/md_SC03_134/nonmatchings/md_SC03_134", func_801E303C); +extern s32 func_80029504(void); +extern s32 func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, s32 a1); +extern void func_8012E8E0(s32 a0, s32 a1); +extern s32 func_80178B18(s32 a0, s32 a1); + +void func_801E303C(void *a0) { + extern s32 D_801E988C; + extern s32 D_801E3644; + extern s16 D_801BEBF8; + extern s32 D_801E369C; + s32 v0; + + if ((u32)(func_80029504() - 0x122) < 0xA) { + func_8012CAE4(a0); + return; + } + + v0 = func_8012C1B8(); + *(s32 *)((s32)a0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(a0); + } else { + func_8001C214(v0, (s32)&D_801E988C); + *(s16 *)(*(s32 *)((s32)a0 + 0x68) + 0xC) = 0x7FFF; + func_8012E8E0((s32)a0, (s32)&D_801E3644); + *(s16 *)((s32)a0 + 0x2) = 1; + *(s16 *)((s32)a0 + 0x34) = 0; + func_8012A828((s32)a0, (s32)&D_801BEBF8); + func_80178B18((s32)a0, (s32)&D_801E369C); + } +} + extern s32 func_8012BA10(s32 a0, s32 a1); diff --git a/src/md_SC03_137/md_SC03_137.c b/src/md_SC03_137/md_SC03_137.c index 30362602f2..063011fd17 100644 --- a/src/md_SC03_137/md_SC03_137.c +++ b/src/md_SC03_137/md_SC03_137.c @@ -345,6 +345,31 @@ void func_801E2E18(void) { } -INCLUDE_ASM("asm/md_SC03_137/nonmatchings/md_SC03_137", func_801E2E44); +void func_801E2E44(void *param_1) { + + extern u8 *D_80126B10; + extern s32 D_801E30EC; + extern s32 func_801789AC(s32 a0); + extern void func_80178CBC(s32 a0, s32 a1); + extern void func_80174438(s32 a0); + + switch (*(u16 *)((s32)param_1 + 0x34)) { + case 0: + if (func_801789AC((s32)param_1) != 0) { + func_80178CBC((s32)param_1, (s32)&D_801E30EC); + *(u16 *)((s32)param_1 + 0x34) = 1; + } + break; + case 1: + if (func_801789AC((s32)param_1) != 0) { + func_80174438((s32)D_80126B10); + *(u16 *)((s32)param_1 + 0x34) = 2; + } + break; + case 2: + break; + } +} + INCLUDE_ASM("asm/md_SC03_137/nonmatchings/md_SC03_137", func_801E2ED8); diff --git a/src/md_SC04_030/md_SC04_030.c b/src/md_SC04_030/md_SC04_030.c index 726b56bba6..d032fdafae 100644 --- a/src/md_SC04_030/md_SC04_030.c +++ b/src/md_SC04_030/md_SC04_030.c @@ -297,7 +297,59 @@ void func_801E8284(void) { void func_801E828C(void) { } -INCLUDE_ASM("asm/md_SC04_030/nonmatchings/md_SC04_030", func_801E8294); +extern s32 func_801789AC(s32 a0); +extern void func_80178CBC(s32 a0, s32 a1); +extern void func_80174438(s32 a0); +extern void func_80186460(s32 a0); +extern s16 func_80186450(void); +extern u8 *D_80126B10; + +void func_801E8294(void *a0) { + + extern s32 D_801E877C; + extern s32 D_801E8794; + extern s32 D_801E8718; + extern u8 D_800D39CC[]; + + switch (*(u16 *)((s32)a0 + 0x34)) { + case 0: { + s32 v1 = func_801789AC((s32)a0); + switch (v1) { + case 1: + *(u16 *)((s32)a0 + 0x34) = 2; + func_80186460(5); + break; + case 2: + func_80178CBC((s32)a0, (s32)&D_801E877C); + *(u16 *)((s32)a0 + 0x34) = 0; + break; + case 3: + func_80178CBC((s32)a0, (s32)&D_801E8794); + *(u16 *)((s32)a0 + 0x34) = 3; + break; + } + break; + } + case 1: + break; + case 2: + if (func_80186450() != 0) { + func_800D1724(D_800D39CC); + *(u16 *)((s32)a0 + 0x34) = 1; + } else { + func_80178CBC((s32)a0, (s32)&D_801E8718); + *(u16 *)((s32)a0 + 0x34) = 0; + } + break; + case 3: + if (func_801789AC((s32)a0) != 0) { + func_80174438((s32)D_80126B10); + *(u16 *)((s32)a0 + 0x34) = 1; + } + break; + } +} + diff --git a/src/ov_SC01_077/ov_SC01_077_jr_80181BE4.c b/src/ov_SC01_077/ov_SC01_077_jr_80181BE4.c index ba82fc93be..f0b2d1c133 100644 --- a/src/ov_SC01_077/ov_SC01_077_jr_80181BE4.c +++ b/src/ov_SC01_077/ov_SC01_077_jr_80181BE4.c @@ -3205,7 +3205,3 @@ void func_80181BE4(s32 p) return; } } - - -INCLUDE_ASM("asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80181BE4", func_80181F08); - diff --git a/src/ov_SC01_077/ov_SC01_077_jr_80181F08.c b/src/ov_SC01_077/ov_SC01_077_jr_80181F08.c new file mode 100644 index 0000000000..142fd67363 --- /dev/null +++ b/src/ov_SC01_077/ov_SC01_077_jr_80181F08.c @@ -0,0 +1,3162 @@ +#include "common.h" +#include "../shared/engine_core.h" + +/* ==== Phase-17 canonical-sig layer (tools/derive_canonical_sigs.py) =================== + * ONE byte-neutral canonical signature per undeclared-stub conflict callee, so the parallel + * hand-matching wave declares each shared callee consistently and the one-big-TU build stops + * failing on `conflicting types` (hand-matching-process.md §7c). Form: s32 return (void->s32 + * byte-neutral, §3a-1) + s32 params (matched bodies cast int->ptr), arity from Ghidra-C + asm + * read-before-write $a0-$a3 (agree on all 14 cached; 6 stubs call-site-validated). LOCAL to + * this TU on purpose (reach-1 names like func_801809BC differ across overlays, so NOT in the + * shared engine_core.h). Whole-binary harvest_verify byte-gate remains the sole arbiter (G3/P9). */ +extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_8012B4B8(); /* match-first, arity 1 */ +extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); /* derive-decl, arity 4 */ +extern s32 func_80169A4C(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_8016A8FC(s32 a0); /* match-first, arity 1 */ +extern s32 func_8012B8E4(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_8015E1B8(s32 a0); /* match-first, arity 1 */ +extern s32 func_8015EE08(s32 a0); /* match-first, arity 1 */ +extern s32 func_8015F7D4(s32 a0); /* match-first, arity 1 */ +extern s32 func_80160B34(s32 a0); /* match-first, arity 1 */ +extern s32 func_80165140(s32 a0); /* match-first, arity 1 */ +extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_80175268(s32 a0); /* match-first, arity 1 */ +extern s32 func_8017EC7C(s32 a0); /* match-first, arity 1 */ +extern s32 func_801809BC(s32 a0, s32 a1); /* match-first, arity 2 */ +extern s32 func_8012DE2C(s32 a0); /* derive-decl, arity 1 */ +extern s32 func_8012DDA4(void); /* derive-decl, arity 0 */ +extern s32 func_801759D8(void); /* derive-decl, arity 0 */ +extern s32 func_80175820(void); /* derive-decl, arity 0 */ +extern s32 func_801758FC(void); /* derive-decl, arity 0 */ +/* ==== end canonical-sig layer ==================================================== */ +/* ==== 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. */ +struct S; +struct Obj; +typedef struct { + SVECTOR 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 *); +struct vec; +struct PrimBE4 { s16 f0, f2, f4, f6, f8, fA, fC, fE; s32 f10; }; +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_80189054; +extern u8 D_80188FC4; +extern u8 D_80188FA0; +extern u8 D_80188F7C; +extern u8 D_80189030; +extern u8 D_8018900C; +extern u8 D_80188FE8; +extern u8 D_80188F58; +extern void func_80145934(void); +extern u8 D_801890E4; +extern u8 D_801890C0; +extern u8 D_8018909C; +extern u8 D_80189078; +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_801884DC[]; +extern unsigned char D_8018850C[]; +extern unsigned char D_8018855C[]; +extern unsigned char D_8018858C[]; +extern unsigned char D_801885BC[]; +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_8018860C[])(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 D_801151D4; +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 u8 D_80126C01; +extern u16 D_80126C02; +extern u16 D_80126C06; +extern s32 D_80188654[]; +extern s32 func_80148D44(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 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_801886D4[]; +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_8018875C[]; +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_80188764; +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); +s32 func_80135888(s32, s32, M2C_UNK, M2C_UNK); /* extern */ +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_801D9618; +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_801D961C; +extern void func_8014FA04(s32 a0); +extern int func_8014FBC0(void); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int param_1); +extern void func_8014FCFC(void); +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_80188794; +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 (*D_80188798[])(void); +extern void func_80150B28(int 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_8018883C[])(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_80188860[])(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_80188850; +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_80188874[])(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_80188880[]; +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_80188890[])(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_801888A8[])(void *); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80188898; +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_801888BC[])(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_801888D8[])(void *); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_801888C8; +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_801888EC[])(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_80188900[])(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); +void func_8014ED28(s32 a0); +void func_80146D90(s32 a0); +void func_8014CC28(s32 a0); +void func_8014FA04(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_80188914; +extern void (*D_8018893C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_8018891C; +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); +void func_80154C24(s32 a0, s32 *a1, s32 *a2); +void func_80154F9C(s32 a0); +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_80188988[])(void); +extern s32 func_80155458(s32 param_1); +s32 func_800D02D0(u8); /* extern */ +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_8018898C[])(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 s32 func_80161208(void); +void func_80155E30(void *a0); +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 void func_80156044(int param_1, int param_2); +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 void func_80013E94(void *a0, void *a1); +extern void func_80156A1C(s32 a0, s32 a1); +extern u8 D_80126730[]; +extern void func_80156848(s32 param_1, s32 param_2); +extern unsigned char D_8011520C[]; +extern unsigned short D_80188DF0[]; +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_80188E00[])(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_801599A4(void *a0); /* canonical: void(*)(void *) */ +extern void func_80159B3C(void *a0); /* canonical: void(*)(void *) */ +extern s32 func_80161208(void); /* canonical: s32(*)(void) — call-site cast to pass arg0 */ +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_801D9650; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80188E28[])(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_80188E08; +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_80188E18; +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_80188E68[])(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_80188E70[])(void *); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_80188E3C; +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_80188E7C[])(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_80188E4C; +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_801D9658; +extern s32 D_801D9664; +extern s32 D_801D9668; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80188EB8[])(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_80188E8C[]; +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_801D9660; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_80189108[])(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_80188F28[]; +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_801891AC[])(void *); +extern void (*D_801891B8[])(void *); +extern void func_80159A20(); +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_80189300[])(void *); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018911C; +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_80189308[])(void *); +extern void func_8015A2A0(s32 a0); +extern int D_8018912C; +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_8018914C; +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_80189310[])(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 void (*D_8018932C[])(void); +extern s32 func_8015BE74(void); +extern void func_80161124(void *a0); +extern s32 func_8015BE94(s32 *a0); +extern s32 func_8015AE2C(void); +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_80189338[])(void *); +extern void func_8015C0C4(s32); +extern void func_8015C08C(s32 a0); +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_80189344[])(void *); +extern void func_8015C788(s32); +extern void func_8015C750(s32 a0); +extern void func_80161240(void *a0); +extern void func_80161C24(s32, s32); +extern void (*D_801891B8[])(); +extern void func_8015C944(int param_1); +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); +void func_80147078(s32 *a0, s16 a1); +s32 func_8015CCD0(); +extern void func_8015CC0C(s32 *param_1); +extern void func_8015CC74(s32 *a0); +extern void func_8015CC40(s32 *a0); +extern void (*D_80189354[])(void); +extern void func_8015CC74(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 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 (*D_8018938C[])(void); +extern void func_8015CFC0(s32 * a0); +extern void func_8015CFFC(void); +extern void func_8015D01C(int param_1); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801893E8; +extern void func_8015D380(s32 a0); +extern unsigned char D_801884CC[]; +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 s32 (*D_801893F0[])(); +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_801893FC[]; +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_80189438[]; +extern void func_8015DCB8(s32 param_1); +s32 func_80029AAC(); +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 (*D_80189450[])(void); +extern void func_8015DE58(s32 * param_1); +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); +void func_8014C1A0(s32 arg0, s32 arg1); +void func_80015978(s32 a0, s32 *a1); +s32 func_80029AAC(void); +void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); +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 (*D_80189470[])(void); +extern s32 func_8015E1B8(s32 param_1); +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_80189480; +extern u16 D_80189482; +extern u16 D_80189484; +extern s32 D_80189488; +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80189490; +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 (*D_801894A4[])(void); +extern void func_8015E8E8(s32 * param_1); +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 (*D_801894AC[])(void); +extern void func_8015EE44(s32 a0); +extern int D_800D4C48; +extern int D_8018919C; +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 (*D_801894B4[])(void); +extern void func_8015F00C(s32 * param_1); +extern void func_8015F048(s32 a0); +extern void func_8015F080(s32 a0); +extern s32 D_80062BE8; +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 (*D_801894BC[])(void); +extern void func_8015F324(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 (*D_801894F4[])(void); +extern s32 func_8015F7D4(s32 param_1); +extern void func_8015F810(s32 *a0); +extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); +extern void func_80147078(s32 *, s16); +extern void func_80159B70(void *); +extern void func_8015F89C(void *arg0); +void func_80154150(s32 a0, s32 a1); +void func_80154A74(s32 a0, s32 a1); +void func_80146C98(s32 *a0, s16 a1); +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_80189514[]; +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 (*D_80189590[])(void *); +extern void func_80160138(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 (*D_801895A8[])(void *); +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 (*D_801895B4[])(void); +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 func_80160EA4(int param_1); +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_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_801895F4[]; +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_80189658; +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_801D9670[]; +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_8018967C[])(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_801D96C8[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern s32 D_8011F750; /* canonical: engine_core.h `extern s32 D_8011F750;` (read here as a byte) */ +extern void (*D_801896C0[])(void); /* word-stride table of dispatch fn pointers */ +extern void func_801627E8(void); +extern void (*D_801896C4[])(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_801896B4; +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_801D8BB0[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_801896CC[])(void); +extern void func_80163A58(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern s32 D_800DE5A0; +extern s32 D_800636C8; +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(); +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_80189720[])(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_801896E8; +extern u16 D_8018971C; +extern s16 D_8018971A; +extern s16 D_80189718; +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_8018972C[])(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_801D9728; +extern u8 D_801D9729; +extern u8 D_801D972A; +extern u8 D_801D972B; +extern u8 D_801D972C; +extern u8 D_801D972D; +extern u8 D_801D972E; +extern u8 D_801D972F; +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 s32 (*D_8018973C[])(); +extern s32 func_80164EA4(s16 *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_801D9768; +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_80189780[])(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_801897FC[]; +extern s32 D_8018981C[]; +extern u8 D_80189898[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801898B8[]; +extern u8 D_801898D8[]; +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 s32 (*D_801898F8[])(); +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_80189974[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801899F0[])(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 s32 D_80126728; +extern void func_80165CA0(void); +M2C_UNK func_8001534C(M2C_UNK, M2C_UNK *, M2C_UNK, M2C_UNK, s32, s32); /* extern */ +M2C_UNK func_800153CC(M2C_UNK, u16, M2C_UNK, M2C_UNK, s32, s32); /* extern */ +extern M2C_UNK D_801D8BC0; +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 s32 (*D_801899FC[])(); +extern s32 func_80166018(s16 *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 s32 (*D_80189A04[])(); +extern s32 func_801663FC(s16 *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 s32 (*D_80189ACC[])(); +extern s32 func_80166618(s16 *a0); +extern s32 (*D_80189ADC[])(); +extern s32 func_80166654(s16 *a0); +extern s32 func_80017758(void *a0, void *a1); +extern u8 D_801D97E8[]; +extern s32 func_80166690(s32 param_1, s32 param_2); +extern s32 func_80166994(); +extern void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern s32 func_80167540(s32 arg0); +extern s32 (*D_80189AEC[])(); +extern s32 func_801678B4(s16 *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 s32 (*D_80189AF8[])(); +extern s32 func_80167A9C(s16 *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_80189A58[]; +extern u8 D_80189A6C[]; +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 void func_80166F58(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern u8 D_80189AB0[]; +extern u8 D_80189A80[]; +extern u8 D_80189A81[]; +extern void func_801681FC(s32 param_1); +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); +s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); +s32 func_80166690(s32 a0, s32 a1); +extern void func_801683D8(s32 a0); +extern u8 D_80189ABC[]; +extern u8 D_80189A94[]; +extern u8 D_80189A95[]; +extern void func_80168430(s32 param_1); +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 s32 (*D_80189B10[])(); +extern s32 func_80168744(s16 *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 s32 (*D_80189B18[])(); +extern s32 func_801689D8(s16 *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern s32 (*D_80189B20[])(); +extern s32 func_80168AA8(s16 *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 s32 (*D_80189B28[])(); +extern s32 func_80168D58(s16 *a0); +extern void func_80168D94(int a0); +extern void func_80168F40(); +extern void func_80168EC4(s32 a0); +extern s32 func_80016A5C(); +extern void func_80168F40(void *arg0); +extern s32 func_8016901C(void *a0); +extern void func_80169058(s32 a0); +extern s32 func_80169228(); +extern void func_801691B8(void *a0); +extern void (*D_80189B38[])(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_80017DC4(void *a0, void *a1); +extern void func_801696D8(s32 a0, s32 a1); +extern void (*D_80189B40[])(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_80189BF4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_80189BFC[])(void); +extern void func_80169F00(void *a0); +extern char D_80189BAC[]; +extern char D_80189B6C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80189C34[])(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_80189C40[])(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_80189C88[])(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_80189D04[])(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_801D9A88; +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_80189CF8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80189D3C[]; +extern unsigned short D_80189D44[]; +extern unsigned short D_80189D4C[]; +extern unsigned char D_801D9A90[]; +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_801D9A88; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80189D54[])(void); +extern void func_8016BBA4(void *a0); +extern s32 func_8016BBE0(s32 param_1); +M2C_UNK func_8016BF50(); /* extern */ +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); +extern M2C_UNK D_801D9BC4; +extern M2C_UNK D_801D9BC8; +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_801D9B50; +extern void (*D_80189D84[])(void); +extern void func_8016C14C(void *a0); +extern void func_8016C188(s32 param); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801D9BCC[]; +extern u8 D_801D9BD4[]; +extern u8 D_801D9B84[]; +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_80189D8C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80189DA8[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80189DB0[])(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_80189E18[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_80189DBC; +extern u8 D_80189DC8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern s16 D_801DA2C0; +extern s16 D_801DA2C4; +extern s32 D_80189E20; +extern s32 D_80189E2C; +extern s32 func_8016DC20(s32 param_1); +extern void (*D_80189E4C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80189E54[])(void); +extern void func_8016DF20(void *a0); +extern void func_8016DF5C(s32 param_1); +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_80189EA8[])(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_80189EDC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_80189ECC[]; +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(); +extern s32 func_8016EFA8(s32 a0); +extern void func_8016F094(s32 *a0); +extern s32 func_8016F0AC(); +extern s32 D_80189EF8; +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_80189F70[])(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_80189F78[])(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_80189F80[])(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_80189F88[])(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_80189F90[])(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_80189F98[])(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_80189FA4[])(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_80189FB0[])(void); +extern void func_8016FC90(u8 *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_80189FBC[])(void); +extern void func_8016FDB4(u8 *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_80189FCC[])(void); +extern void func_8016FF30(u8 *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_80189FDC[])(void); +extern void func_8016FFDC(u8 *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_80189FE4[])(void); +extern void func_80170150(u8 *a0); +extern void func_801701C8(u8 *a0); +extern void func_8017018C(u8 *a0); +extern void func_801701C8(u8 * a0); +extern void (*D_80189FEC[])(void); +extern void func_80170240(u8 *a0); +extern void func_801702B8(s32 a0); +extern void func_8017027C(u8 *a0); +extern s16 func_80171AB0(s32 a0, void *a1); +extern void (*D_80189FF4[])(void); +extern void func_801702FC(u8 *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_80189FFC[])(void); +extern void func_801703E0(u8 *a0); +extern void func_8017044C(u8 *a0); +extern void func_8017041C(u8 *a0); +extern void func_8017044C(u8 * a0); +extern void (*D_8018A004[])(void); +extern void func_801704B0(u8 *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_8018A00C[])(void); +extern void func_80170548(u8 *a0); +extern void func_801705C0(u8 *a0); +extern void func_80170584(u8 *a0); +extern void func_801705C0(u8 * a0); +extern void (*D_8018A014[])(void); +extern void func_801705F8(u8 *a0); +extern void func_80170670(void *a0); +extern void func_80170634(u8 *a0); +extern void func_8012A568(void (*a0)(void)); +extern void (*D_8018A01C[])(void); +extern void func_801706AC(u8 *a0); +extern void func_80170718(void *a0); +extern void func_801706E8(u8 *a0); +extern void func_80129FF4(void); +extern void (*D_8018A024[])(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_8018A02C[])(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_8018A034[])(void *); +extern void func_80170B14(int a0); +void func_8014706C(void *a0); +void func_80154274(s32 *a0, s32 a1); +s32 func_80171990(u8 *a0); +void func_80170B90(u8 *a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018A03C[])(void *); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_8018A044[])(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_8018A04C[])(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_8018A054[])(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_8018A05C[])(void *); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_8018A064[])(void *); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018A06C[])(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_8018A074[])(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_8018A07C[])(void *); +extern void func_801711C0(void *a0); +void func_801719A4(int a0, int a1); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern s32 (*D_8018A084[])(void *); +extern s32 func_80171260(void *a0); +extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80171384(void *a0); +extern s32 (*D_8018A08C[])(void *); +extern s32 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 s32 ratan2(s32 a0, s32 a1); /* ratan2 */ +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_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 s32 (*D_8018A09C[])(void *); +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 s32 (*D_8018A0A8[])(void *); +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 s32 (*D_8018A0B4[])(void *); +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_8018A0C4[])(void *); +extern s32 D_801150F8; +extern void func_80172BC8(void *a0); +extern void func_80172B80(u8 *a0); +extern void func_80172C48(void); +extern s32 (*D_8018A0D0[])(void *); +extern s32 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 s32 (*D_8018A0DC[])(void *); +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 s32 (*D_8018A0E8[])(void *); +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 s32 (*D_8018A0F4[])(void *); +extern u8 D_800D5AA0[]; +extern void func_80173220(void *a0); +extern void func_801731D8(s32 *a0); +extern M2C_UNK D_8018A094; +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); +void func_80174684(void *); +extern void func_801734BC(s32 arg0, s32 _unused1); +extern s32 (*D_8018A100[])(void *); +extern s32 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 s32 (*D_8018A114[])(void *); +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 s32 (*D_8018A120[])(void *); +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 s32 (*D_8018A12C[])(void *); +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 s32 (*D_8018A13C[])(void *); +extern s32 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 s32 (*D_8018A15C[])(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 s32 (*D_8018A168[])(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 s32 (*D_8018A174[])(void *); +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 (*D_8018A180[])(void *); +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 s32 (*D_8018A188[])(void *); +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 (*D_8018A190[])(void *); +extern s32 func_801749C8(s32); +extern s32 func_801749A8(s32 a0); +extern s16 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern void func_80049CAC(s32 a0, s32 a1); +extern s32 func_801749C8(s32 param_1); +extern void func_80174BBC(void *a0); +extern void func_8012A0E0(void); +extern void func_80174BF4(void *a0); +extern void (*D_8018A194[])(); +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 (*D_8018A19C[])(void *); +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_8018A1A4[])(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_8018A1AC[])(s32); +extern s32 func_80175218(void * param_1); +extern s32 func_80175268(s32 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_8018A314[])(); +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_8018A320[])(void); +extern void func_80175690(void *a0); +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(); +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_801D8E08; +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 void func_80131E00(struct S80131E00 *a0, s32 a1); +extern int D_8018A360; +extern int D_8018A36C[]; +extern void func_80178840(int param_1); +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_801DAAB8; +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); +void func_80178BF8(s32 a0, s32 a1); +void func_80178CBC(s32 a0, s32 a1); +extern void func_80178BB8(s32 a0, s32 a1); +extern void func_80178BF8(s32 _unused0, s32 _unused1); +M2C_UNK func_80178D40(s32, s32); /* extern */ +extern s32 D_801DA308; +extern short D_801DAB2C; +extern void func_80178CBC(s32 arg0, s32 arg1); +extern void func_80178D18(void); +extern M2C_UNK 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_801DA734; +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_801DA75C; +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_801DA718; +extern s32 func_8017A3B0(void); +extern short D_801DA754; +extern short D_801DA750; +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_801DAA88; +extern s16 D_801DAA8A; +extern s16 D_801DAA94; +extern void func_8017AE2C(s32 param_1); +extern void func_8017B0E4(int param_1, int param_2); +void func_8012A418(void); /* extern (Phase-18 reconciled) */ +extern s16 D_801DA71C; +extern u16 D_801DA79C; +extern u16 D_801DA79E; +extern u16 D_801DA7A0; +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_801DA794; +extern s16 D_801DA796; +extern s16 D_801DA798; +extern s16 D_801DA78C; +extern s16 D_801DA78E; +extern s16 D_801DA790; +extern void func_8017B7A8(void); +extern s16 D_801DA7AC; +extern s16 D_801DA7AE; +extern s16 D_801DA7B0; +extern s16 D_801DA7B4; +extern s16 D_801DA7B6; +extern s16 D_801DA7B8; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801DA7A4; +extern short D_801DA7A6; +extern short D_801DA7A8; +extern void func_8017B940(void); +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void RotTransSV(void *a0, void *a1, void *a2); +extern SV4 D_801DA73C; +extern SV4 D_801DA744; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801DA764[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_801DA760)(void); +extern void func_8017BD50(int param_1); +extern s32 (*D_8018A4FC[])(void *); +extern s32 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 s32 (*D_8018A520[])(void *); +extern s32 func_8017BEBC(void *a0); +extern s32 func_800D222C(s32 a0, void *a1, s32 a2); +extern s32 func_8001CF30(void *a0); +extern u8 D_8018A508; +extern void func_8017BEF8(s32 param_1); +extern void func_8017C0BC(u8 *p); +extern s32 (*D_8018A528[])(void *); +extern s32 func_8017C150(void *a0); +extern u8 D_8018A514; +extern void func_8017C18C(s32 a0); +extern void func_8017C230(int 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_8017C66C(u16 *a0, void *a1); +extern int func_8017C710(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_8017C908(s32 a0, s32 a1); +extern void func_8012A018(s32 a0, s32 a1); +extern void func_8012A094(s32 a0); +extern s32 func_8017DA08(void *a0); +extern void func_8017D840(void); +extern void func_8017D8DC(void); +extern void func_8017D8F0(void); +extern u8 D_801B1DAC; +extern M2C_UNK func_8017D900(void); +extern M2C_UNK func_8017D98C(void); +extern s32 (*D_8018A530[])(void *); +extern s32 func_8017DAEC(s32); +extern void func_8017DA44(void *arg0); +extern s32 func_8017DACC(s32 a0); +extern s32 (*D_8018A588[])(void *); +extern s32 func_8017DCB0(void *a0); +extern void func_8017DE84(void *arg0); +extern s32 func_8017DCEC(s32 param_1); +extern s32 func_8017DD3C(void); +extern s32 (*D_8018A590[])(void *); +extern s32 func_8017DD60(void *a0); +extern void func_8017E0EC(void *arg0); +extern s32 func_8017DD9C(s32 param_1); +extern void func_8001BFD0(void); +extern void func_800D1E28(void); +extern s32 func_8017DDE8(u8 *a0); +extern void func_800D1EBC(void); +extern void func_8017DE64(void); +extern void (*D_8018A740[])(); +M2C_UNK func_8017D900(); /* extern */ +extern void func_8017DEC0(void *arg0); +M2C_UNK func_8017D98C(); /* extern */ +extern void func_8017DEFC(void *arg0); +extern s32 func_800CF854(s32); +extern void func_8017DF5C(int param_1); +extern unsigned char D_8018A62C[]; +extern unsigned char D_8018A69C[]; +extern unsigned char D_8018A6E4[]; +extern void func_8017DFD8(int param_1); +extern void func_8017E0B4(s32 param_1); +extern void (*D_8018A754[])(); +extern void func_8017E170(s32 a0); +extern void func_8017E128(s32 a0); +extern void func_8017E170(int param_1); +extern void func_8017E1B4(void); +extern void (*D_8018A760[])(); +extern void func_8017E1D4(void *arg0); +extern s32 func_8017E210(u8 *a0); +extern u8 D_801B1720; +extern void func_8017E298(void *arg0); +extern s32 D_80126958; +extern M2C_UNK D_8018A59C; +extern M2C_UNK D_801B17AC; +extern void func_8017E350(void *arg0); +extern s32 D_8018A5E4; +extern void func_8017E3EC(s32 param_1); +M2C_UNK func_8017F240(); /* extern */ +extern void func_8017E460(void *arg0); +extern M2C_UNK D_801B17F0; +extern void func_8017E4B4(void *arg0); +extern u16 D_80126970; +extern u16 D_80126974; +extern void func_8017E51C(void *arg0); +extern u8 D_801B1848; +extern void func_8017E604(s32 a0); +extern void func_8017E668(u8 *a0); +extern void func_8017E6BC(s32 param_1); +extern void func_8017E6F4(s32 param_1); +extern void (*D_8018A790[])(); +extern void func_8017E748(void *arg0); +extern M2C_UNK D_801B19C0; +extern void func_8017E784(void *arg0); +extern void func_8017E7DC(u8 *a0); +extern void func_8017E830(s32 param_1); +extern void (*D_8018A79C[])(); +extern void func_8017E868(void *arg0); +extern s32 D_801270D4; +extern void func_8017E8A4(u16 *param_1); +extern void func_8017E924(int param_1); +extern void func_8017E974(s32 param_1); +extern void func_8017E9C0(void *arg0); +extern void func_8017EA2C(int param_1); +extern s32 (*D_8018A7B0[])(); +extern s32 func_8017EA5C(s16 *a0); +extern void func_8012AD44(s32 *a0, s16 a1); +extern void func_8017EA98(s32 *a0); +extern void func_8017EB2C(int a, int b); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); +extern void func_8017EAC0(int param_1); +extern u8 *func_8012913C(s32 a0); +extern void func_8017EB2C(int param_1, int param_2); +extern s32 (*D_8018A7B8[])(); +extern s32 func_8017EC40(s16 *a0); +extern s32 (*D_8018A7F0[])(); +extern s32 func_8017ED4C(s16 *a0); +extern void func_8017ED88(void *arg0); +extern s32 (*D_8018A7F8[])(); +extern s32 func_8017EDE4(s16 *a0); +extern s32 func_8012AD50(void *a0); +extern void func_8017EE20(void *a0); +extern void func_8017EE44(int param_1); +extern s32 func_8017EC7C(s32 a0); +extern u8 D_8018A7C0; +extern void func_8017EEC0(s32 param_1); +extern s32 func_8017EF50(s32 param_1); +extern void func_8017F024(int param_1); +extern void func_8012931C(struct vec *a0); +extern void func_801292C8(u8 *a0); +extern void func_8017F0B4(u8 *a0); +extern s32 D_801270D0; +extern u8 D_8018A868; +extern s32 func_8012C51C(void *a0, s32 a1); +extern M2C_UNK func_8017F240(void); +extern int D_801270CC; +extern int D_801270D4; +extern unsigned char D_80078EC1; +extern void func_8017F290(void); +extern s32 (*D_8018A87C[])(); +extern s32 func_8017F3E8(s16 *a0); +extern s32 (*D_8018A89C[])(); +extern s32 func_8017F424(s16 *a0); +extern s32 D_801270CC; +extern short D_8018A8FC[]; +extern int D_8018A8F8; +extern void func_8017F5BC(int param_1); +extern void func_8017F460(int param_1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_8017F694(void *arg0); +extern s32 (*D_8018A904[])(); +extern s32 func_8017F6D8(s16 *a0); +extern void (*D_8018A934[])(void); +extern s32 func_8012B4B8(); +extern s32 func_8012C0EC(s32 a0); +extern void func_8017F780(s32 *arg0); +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8012A828(s32, void *); +extern void *D_801D20B4; +extern u8 D_8018A800[]; +extern u8 D_8018A940[]; +extern u8 D_8018A942[]; +extern u8 D_8018A944[]; +extern void func_801800F8(int param_1); +extern s32 (*D_8018AA1C[])(); +extern s32 func_8018021C(s16 *a0); +extern s32 (*D_8018AA24[])(); +extern s32 func_80180258(s16 *a0); +extern void func_80180294(void *a0); +extern void func_8017F114(); +extern void func_801802CC(s32 *param_1); +extern s32 func_8012CE2C(s32 a0); +extern void func_8012CBCC(s32 a0); +extern void func_8018031C(int param_1); +extern int func_8012D714(int, int); +extern volatile unsigned short D_80126B96; +extern void func_8018047C(int param_1); +extern void func_80180588(void); +extern void func_8001D0E8(s32 a0, s32 a1, s32 a2); +extern void func_8012A828(s32 a0, void *a1); +extern int D_801D15C4; +extern int D_801D1CBC; +extern int D_8018A8A4; +extern int D_8018A8B4; +extern int D_8018A8C4; +extern M2C_UNK D_80186E48; +extern void func_80180590(int param_1); +extern s32 D_801270C8; +extern void func_8017F714(void); +extern void func_801806A8(void); +extern void func_8012CC1C(s32 arg0, s32 arg1); +extern unsigned char D_8018A92C[]; +extern int D_8018A924; +extern void func_801806D8(int param_1); +extern int D_801D100C; +extern unsigned char D_8018A914[]; +extern void func_801807B8(int param_1); +extern void func_80180898(void *arg0); +extern void func_801808DC(void *a0); +extern void func_80180930(void); +extern void func_80180910(void); +extern u32 D_801DA9AC; +extern u16 D_8018AA2C[]; +extern u16 D_801DA9E8[]; +extern s32 D_8018AA4C; +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern s32 ratan2(s32, s32); +extern void func_8012B0B4(SVEC *, s32, s32); +extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); +extern void func_8012ADE4(u8 *a0); +extern s32 func_801809BC(s32 param_1, s32 param_2); +extern s32 func_801809BC(s32 a0, s32 a1); +extern s32 func_8012AE00(s32 a0); +extern void func_80180AD4(s32 a0); +extern s16 D_8018AACC; +extern s16 D_8018AAD0; +extern s32 func_80013478(s32 a0, s32 a1); +extern s32 func_80180F10(s32 param_1, s32 param_2); +extern s32 func_80180F10(s32 a0, s32 a1); +extern void func_8012B14C(s32 a0, s32 a1); +extern void func_8012CBA4(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_80142414(s32 a0, s16 a1); +extern s32 func_80143B6C(s32 a0, s32 a1); +extern void func_8012B23C(s32 a0); +extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); +extern void func_80181B58(s32 a0); +extern void func_80181B9C(s32 a0); +extern void func_80182968(void); +extern void func_80180C90(s32 a0); +extern void func_80180B64(s32 a0); +extern char D_8018AA8C[]; +extern char D_8018AA98[]; +extern char D_8018AA80[]; +extern char D_801B0048[]; +extern char D_801AFFC0[]; +extern char D_801AFF18[]; +extern s32 D_801DA7C0; +extern s16 D_8018AAE4; +extern s16 D_8018AAE8; +extern void func_8018103C(s32 a0); +extern char D_801B0118[]; +extern void func_80181B58(int param_1); +extern s32 D_801B0D50; +extern void func_80181B9C(s32 param_1); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_8012B8E4(s32 a0, s32 a1); +extern void func_80184ED8(s32 a0, s32 a1); +extern u8 D_8018AAD4; +extern u8 D_8018AA6C[]; +extern char D_801AFD28[]; +extern char D_801B01E0[]; +extern u8 D_801B0E48[]; +extern void func_80181BE4(s32 p); +/* ==== end §8b carried decl layer ==== */ + + +#include "common.h" + +void func_80181F08(s32 arg0) +{ + typedef struct { u32 w[4]; } St801D9204; + extern void func_80019064(void *a0); + extern void func_8012A828(s32 a0, void *a1); + extern void func_8012B23C(s32 a0); + extern void func_8012B2CC(s32 a0); + extern void func_8012E9C0(s32 a0); + extern s32 func_80143B6C(s32 a0, s32 a1); + extern void func_80182254(s32 a0); + extern void func_80182268(s32 a0); + extern void func_801822E4(s32 a0); + extern void func_801822FC(s32 a0); + extern void func_80182338(s32 a0); + extern void func_801823A0(s32 a0); + extern void func_80182420(s32 a0); + extern void func_801827A4(s32 a0); + extern void func_8018301C(s32 a0); + extern u8 D_80062BDC; + extern char D_801B02A8[]; + extern St801D9204 D_801D9204; + St801D9204 local = D_801D9204; + + if (*(u8 *)(arg0 + 0x5E) == 5) { + func_80019064(&D_80062BDC); + } + if (*(u16 *)(arg0 + 0x5E) == 0x1F) { + func_8018301C(arg0); + return; + } + *(u8 *)(arg0 + 0xC1) = 0; + func_8012E9C0(arg0); + *(u16 *)(arg0 + 0x76) = *(u16 *)(arg0 + 0x76) - *(u16 *)(arg0 + 0x60); + *(u16 *)(arg0 + 0x5C) &= 0xFFFE; + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = (*(u16 *)(arg0 + 0x62) + 0x800) & 0xFFF; + func_8012B2CC(arg0); + func_8012B23C(arg0); + *(s16 *)(arg0 + 2) = 3; + func_80143B6C(arg0, 0); + switch (*(u8 *)(arg0 + 0x5E)) { + case 13: + func_80182254(arg0); + return; + case 14: + func_80182268(arg0); + return; + case 10: + func_801822FC(arg0); + return; + case 9: + func_80182338(arg0); + return; + case 17: + func_801823A0(arg0); + return; + case 33: + func_801822E4(arg0); + return; + case 15: + if (*(s16 *)(arg0 + 0x76) > 0) { + func_801827A4(arg0); + return; + } + break; + default: + if (*(s16 *)(arg0 + 0x76) > 0) { + *(u16 *)(arg0 + 0x34) = 0; + *(s32 *)(arg0 + 0x1C) = 0x10; + func_8012A828(arg0, D_801B02A8); + return; + } + break; + } + func_80182420(arg0); +} + + + diff --git a/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c b/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c index 32d9c31074..d403d321c1 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c @@ -3625,7 +3625,26 @@ void func_8017E6FC(void) { INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017E798); -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017E898); +void func_8017E898(void) +{ + typedef struct { s32 w[4]; } Blk16_E898; + extern u8 D_80126948[]; + extern s32 D_80126E60[]; + Blk16_E898 *src; + Blk16_E898 *dst; + Blk16_E898 *end; + + dst = (Blk16_E898 *)&D_80126948; + src = (Blk16_E898 *)D_80126E60; + end = src + 10; + do { + *dst = *src; + src++; + dst++; + } while (src != end); + *(s32 *)dst = *(s32 *)src; +} + extern void func_8012A018(s32 a, s32 b); diff --git a/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c b/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c index c03e9a57de..c5b730d6f6 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c @@ -6484,7 +6484,16 @@ void func_80187B0C(s32 arg0) { } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80187B48); +extern void func_80181F04(void *arg0); +extern void func_8017DF28(void); + +void func_80187B48(s32 arg0) { + s32 temp_s0 = arg0; + ((void (*)(void))func_80181F04)(); + *(s16 *)(temp_s0 + 0xDC) = 1; + ((void (*)(void))func_8017DF28)(); +} + extern s32 func_80185D84(s32 a0); extern s32 func_80181F70(); @@ -8743,7 +8752,18 @@ void func_8018B7F8(s32 param_1) } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018B8CC); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801921F8; + +void func_8018B8CC(s32 param_1) +{ + func_8001CB6C((u8 *)*(s32 *)(param_1 + 0x20), (s32)&D_801921F8, 0x250, 0x1A0); + *(s32 *)(*(s32 *)(param_1 + 0x20) + 4) = 0x60000000; + *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x14; + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0x400; + *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; +} + extern s32 D_801270C8; extern void func_801292C8(u8 *a0); diff --git a/src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c b/src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c index aa603ec667..2723ca7a9a 100644 --- a/src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c +++ b/src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c @@ -4306,7 +4306,156 @@ void func_80180B30(s32 a0) { } -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_80180BD8); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012A828(s32, s32); +extern void func_8012B178(s32 a0, s32 a1); +extern void func_8012CBA4(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern void func_80131E00(struct S80131E00 *a0, s32 a1); +extern void func_8012ADE4(u8 *a0); +extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80142414(s32 a0, s16 a1); +extern s32 func_80143B6C(s32 a0, s32 a1); +extern void func_8018035C(void *a0); +extern void func_8018109C(s32 a0, s32 a1); +extern void func_80180F6C(s32 a0); +extern void func_80180F98(s32 a0); +extern void func_80180FE0(s32 a0); +extern s32 func_8012B744(void *a0, void *a1); +extern void Square0(s32 *a0, s32 *a1); +extern s32 rand(void); + +extern s16 D_801AFBBC; +extern s16 D_801AFC44; +extern s16 D_801B04DC; +extern u8 D_801AFB14[]; +extern s32 D_8018861C; + +void func_80180BD8(s32 a0) +{ + u16 st; + s32 v; + s32 flags; + s32 d[3]; + s16 t; + s32 r; + s32 off; + void *target; + s32 b178arg; + unsigned short *p; + + st = *(u16 *)(a0 + 0x34); + switch (st) { + case 0: + v = func_8012B8E4(a0, 4); + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = + *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + v; + if (*(s32 *)(a0 + 0x1C) == 0xF) { + func_80142414(a0, -0x78); + func_8002D4C8(0x6A9, 0); + } + if (func_8012BEE8(a0) != 0) { + *(u16 *)(a0 + 0x2) = 3; + if ((*(u16 *)(a0 + 0x86) & 0x2) != 0) { + *(u16 *)(a0 + 0x34) = 1; + *(s32 *)(a0 + 0x1C) = 0x28; + if ((*(u16 *)(a0 + 0x70) & 0x200) != 0) { + ((void (*)(s32, void *))func_8012A828)(a0, &D_801B04DC); + } else { + ((void (*)(s32, void *))func_8012A828)(a0, &D_801AFBBC); + } + *(u16 *)(a0 + 0xFE) = 0; + } else { + *(u16 *)(a0 + 0x34) = 0; + ((void (*)(s32, void *))func_8012A828)(a0, &D_801AFC44); + *(s32 *)(a0 + 0x1C) = 0x19; + *(u16 *)(a0 + 0x86) = *(u16 *)(a0 + 0x86) | 0x2; + } + } + break; + case 1: + v = func_8012B8E4(a0, 6); + b178arg = D_8018861C; + { + register s32 newval __asm__("$6"); + + p = (unsigned short *)(*(s32 *)(a0 + 0x20) + 0x12); + newval = *p + v; + *p = (unsigned short)newval; + } + func_8012B178(a0, b178arg); + + flags = ((s32 (*)(s32))func_8012CBA4)(a0); + if ((flags & 0x1000) != 0) { + func_80131E00((struct S80131E00 *)a0, 0x12); + } else if (flags != 0x2000) { + func_8012ADE4((u8 *)a0); + } + + func_8018035C((void *)a0); + + t = *(u16 *)(a0 + 0xFE) - 1; + *(u16 *)(a0 + 0xFE) = t; + if (t <= 0) { + func_80143B6C(a0, 0); + *(u16 *)(a0 + 0xFE) = 8; + } + + if ((*(u16 *)(a0 + 0x70) & 0x200) != 0) { + func_8018109C(a0, 0x11); + } + + target = (void *)(a0 + 0x88); + d[0] = *(s16 *)(a0 + 0x6) - *(s16 *)(a0 + 0x88); + d[1] = 0; + d[2] = *(s16 *)(a0 + 0xE) - *(s16 *)(a0 + 0x8C); + Square0(d, d); + if (d[0] + d[2] > 0x8FFFF || func_8012BCCC(a0) > 0x10000) { + *(u16 *)(a0 + 0x2) = 1; + *(u16 *)(a0 + 0x34) = 0; + *(u16 *)(a0 + 0x5C) = 0xAA10; + *(s32 *)(a0 + 0x1C) = (rand() & 0x1F) + 0x28; + + d[0] = *(s16 *)(a0 + 0x6) - *(s16 *)(a0 + 0x88); + d[1] = 0; + d[2] = *(s16 *)(a0 + 0xE) - *(s16 *)(a0 + 0x8C); + Square0(d, d); + if (d[0] + d[2] > 0x8FFFF) { + *(u16 *)(a0 + 0xFC) = + func_8012B744((void *)(a0 + 4), target); + } else { + r = rand() & 0x3FF; + off = r - 0x200; + if (off < 0) { + off = r - 0x500; + } else { + off = r + 0x100; + } + *(u16 *)(a0 + 0xFC) = + (*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + off) & 0xFFF; + } + ((void (*)(s32, void *))func_8012A828)(a0, D_801AFB14); + } + + if ((*(u16 *)(a0 + 0x70) & 0x100) == 0) { + if (func_8012BD3C(a0, 0x200, 0x1000) != 0) { + if ((*(u16 *)(a0 + 0x70) & 0xF00) == 0) { + func_80180F6C(a0); + } else { + func_80180F98(a0); + } + } + } else { + if (func_8012BD3C(a0, 0x400, 0x40000) != 0) { + func_80180FE0(a0); + } + } + break; + } +} + extern void func_80181054(s32 arg0, s32 arg1, s32 arg2, void *arg3); diff --git a/src/ov_SC03_011/ov_SC03_011_jr_8017C730.c b/src/ov_SC03_011/ov_SC03_011_jr_8017C730.c index 0e857d4371..c016b06606 100644 --- a/src/ov_SC03_011/ov_SC03_011_jr_8017C730.c +++ b/src/ov_SC03_011/ov_SC03_011_jr_8017C730.c @@ -5150,7 +5150,16 @@ void func_80180DBC(void) { } -INCLUDE_ASM("asm/ov_SC03_011/nonmatchings/ov_SC03_011_jr_8017C730", func_80180E04); +extern void func_8012A828(s32 a0, void *a1); +extern s32 D_801A2284; +extern void *D_801A2280; +extern u8 D_801859BC; + +void func_80180E04(void) { + func_8012A828(D_801A2284, &D_801859BC); + func_8012A828((s32)D_801A2280, &D_801859BC); +} + extern s32 *D_80126B78; extern u8 D_80126B5C; diff --git a/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.c b/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.c index 5f83ebd6bb..dee516d649 100644 --- a/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.c +++ b/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.c @@ -3864,7 +3864,23 @@ void func_8018089C(s32 a0) { } -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_8017EB7C", func_80180A68); +extern void func_80146CA0(void *a0); +extern s16 D_8018F544; +extern s16 D_8018F542; +extern s16 D_8018F540; + +void func_80180A68(void) { + s16 sVar1; + + sVar1 = *(u16 *)&D_8018F544 + 8; + D_8018F544 = sVar1; + D_8018F542 = sVar1; + D_8018F540 = sVar1; + if (sVar1 >= 0x101) { + ((void (*)(void))func_80146CA0)(); + } +} + extern s16 D_8018F540; extern s16 D_8018F542; diff --git a/src/ov_SC03_090/ov_SC03_090_jr_80188274.c b/src/ov_SC03_090/ov_SC03_090_jr_80188274.c index b8d20bcc9f..72f93626d1 100644 --- a/src/ov_SC03_090/ov_SC03_090_jr_80188274.c +++ b/src/ov_SC03_090/ov_SC03_090_jr_80188274.c @@ -4729,7 +4729,17 @@ void func_8018A5F4(void *a0) } -INCLUDE_ASM("asm/ov_SC03_090/nonmatchings/ov_SC03_090_jr_80188274", func_8018A84C); +extern void func_8012AD44(s32 *a0, s16 a1); + +void func_8018A84C(void *arg0) { + extern s32 D_801C9084; + s32 *base = &D_801C9084; + s32 v = (u32)*(u16 *)((s32)arg0 + 0x6) | ((s32)*(s16 *)((s32)arg0 + 0xE) << 16); + *base = v; + func_80178B18((s32)arg0, (s32)base - 4); + ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 0x2); +} + extern void (*D_801C9098[])(void); diff --git a/src/ov_SC03_099/ov_SC03_099_jr_8017BEBC.c b/src/ov_SC03_099/ov_SC03_099_jr_8017BEBC.c index 2a081e763d..3420216dc5 100644 --- a/src/ov_SC03_099/ov_SC03_099_jr_8017BEBC.c +++ b/src/ov_SC03_099/ov_SC03_099_jr_8017BEBC.c @@ -7296,7 +7296,33 @@ void func_80182BDC(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8017BEBC", func_80182DDC); +extern s32 func_80182E64(s32 a0); + +void func_80182DDC(s32 a0) +{ + s32 t; + s32 id; + + switch (*(s16 *)(a0 + 0x70)) { + case 0: + func_8002D4C8(0x6D5, 0); + return; + case 1: + t = func_80182E64(a0); + id = 0x856; + break; + case 2: + t = func_80182E64(a0); + id = 0x857; + break; + default: + return; + } + + t |= 0x2000; + func_8002D4C8(id, t & 0xFFFF); +} + INCLUDE_ASM("asm/ov_SC03_099/nonmatchings/ov_SC03_099_jr_8017BEBC", func_80182E64); diff --git a/src/ov_SC03_105/ov_SC03_105_jr_80189798.c b/src/ov_SC03_105/ov_SC03_105_jr_80189798.c index 547a8b5068..e713987a92 100644 --- a/src/ov_SC03_105/ov_SC03_105_jr_80189798.c +++ b/src/ov_SC03_105/ov_SC03_105_jr_80189798.c @@ -3248,7 +3248,30 @@ void func_8018A1F0(s32 a0) } -INCLUDE_ASM("asm/ov_SC03_105/nonmatchings/ov_SC03_105_jr_80189798", func_8018A278); +extern void func_80015978(s32 a0, s32 *a1); +extern void func_8012EFB8(s32 a0); + +s32 func_8018A278(a0) +s32 a0; +{ + extern void func_8012EFB8(s32 a0); + s32 sp10; + s32 v1; + + func_80015978(a0 + 4, &sp10); + if ((((s32 (*)(s32, s32))func_8012EFB8)((s32)&sp10, (s32)&sp10) & 0xFFFFEFFF) != 0) { + v1 = 1; + } else { + v1 = (*(s16 *)&sp10 * 64) / 160 + 0x40; + } + if (v1 <= 0) { + v1 = 1; + } else if (v1 >= 0x80) { + v1 = 0x7F; + } + return v1; +} + diff --git a/src/ov_SC03_110/ov_SC03_110_jr_8017FBC8.c b/src/ov_SC03_110/ov_SC03_110_jr_8017FBC8.c index 7663dec650..b103277e26 100644 --- a/src/ov_SC03_110/ov_SC03_110_jr_8017FBC8.c +++ b/src/ov_SC03_110/ov_SC03_110_jr_8017FBC8.c @@ -2914,7 +2914,126 @@ INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_801800F INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_80180270); -INCLUDE_ASM("asm/ov_SC03_110/nonmatchings/ov_SC03_110_jr_8017FBC8", func_8018035C); +void func_8018035C(s32 param_1) +{ + extern void func_80180C40(s32); + extern void func_80180D2C(); + extern s32 func_8012CC64(s32 a0, void *a1); + extern s32 func_8012CC1C(s32 a0, void *a1); + extern void func_8012B23C(s32 a0); + extern void func_80131C78(s32 a0); + extern s32 func_80143B6C(s32 a0, s32 a1); + extern void func_80131E00(s32 a0, s32 a1); + extern s32 D_8019C004; + + s32 iVar1; + + if (*(s16 *)(param_1 + 0xa) >= 0x10) { + func_80180C40(param_1); + return; + } + + switch (*(u16 *)(param_1 + 0x34)) { + case 0: + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) -= 0x100; + iVar1 = func_8012CC64(param_1, &D_8019C004); + if ((iVar1 & 0xff) == 0x1a) { + goto EXIT; + } + if ((iVar1 & 0x2000) != 0) { + *(u16 *)(param_1 + 0x34) += 1; + *(s32 *)(param_1 + 0x1c) = 0; + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0; + goto TAIL; + } + if ((iVar1 & 0x4000) != 0) { + *(u16 *)(param_1 + 0x34) = 4; + *(s32 *)(param_1 + 0x1c) = 0; + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0; + func_8012B23C(param_1); + goto TAIL; + } + *(s32 *)(param_1 + 0x1c) += 1; + if (*(s32 *)(param_1 + 0x1c) >= 0x3c) { + *(u16 *)(param_1 + 0x34) = 2; + } + goto TAIL; + + case 1: + *(s32 *)(param_1 + 0x10) = *(s32 *)(param_1 + 0x10) * 15 / 16; + *(s32 *)(param_1 + 0x18) = *(s32 *)(param_1 + 0x18) * 15 / 16; + iVar1 = func_8012CC1C(param_1, &D_8019C004); + if ((iVar1 & 0xff) == 0x1a) { + goto EXIT; + } + if ((iVar1 & 0x6000) == 0) { + *(s32 *)(param_1 + 0x1c) = 0; + *(u16 *)(param_1 + 0x34) += 1; + func_8012B23C(param_1); + goto TAIL; + } + if ((*(u32 *)(param_1 + 0x1c) % 4) == 0) { + func_80143B6C(param_1, 1); + } + *(s32 *)(param_1 + 0x1c) += 1; + if (*(s32 *)(param_1 + 0x1c) < 0x10) { + goto TAIL; + } + func_80131C78(param_1); + goto TAIL; + + case 2: + iVar1 = func_8012CC64(param_1, &D_8019C004); + if ((iVar1 & 0x2000) != 0) { + func_80143B6C(param_1, 1); + func_80131C78(param_1); + goto TAIL; + } + if ((iVar1 & 0x4000) == 0) { + goto L_E00; + } + *(u16 *)(param_1 + 0x34) = 4; + func_80143B6C(param_1, 1); + func_8012B23C(param_1); + goto TAIL; + + case 3: + *(s32 *)(param_1 + 0x1c) += 1; + if (*(s32 *)(param_1 + 0x1c) < 0x10) { + goto TAIL; + } + func_80131C78(param_1); + goto TAIL; + + case 4: + iVar1 = func_8012CC1C(param_1, &D_8019C004); + if ((iVar1 & 0xff) == 0x1a) { + EXIT: + func_80180C40(param_1); + return; + } + if ((iVar1 & 0x2000) == 0) { + goto C4_B; + } + func_80131C78(param_1); + goto TAIL; + C4_B: + if ((*(u32 *)(param_1 + 0x1c) % 4) == 0) { + func_80143B6C(param_1, 1); + } + L_E00: + *(s32 *)(param_1 + 0x1c) += 1; + if (*(s32 *)(param_1 + 0x1c) >= 0x3c) { + func_80131E00(param_1, 0xd); + } + } +TAIL: + ((s32 (*)(s32))func_80180D2C)(param_1); + if (0x100000 < *(s32 *)(param_1 + 0x14)) { + *(s32 *)(param_1 + 0x14) = 0x100000; + } +} + extern s32 D_8019BFAC; extern void func_80180D2C(); diff --git a/src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c b/src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c index 4a220e0457..76c2e22e0a 100644 --- a/src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c +++ b/src/ov_SC03_115/ov_SC03_115_jr_8017BEBC.c @@ -3981,7 +3981,14 @@ store5: } -INCLUDE_ASM("asm/ov_SC03_115/nonmatchings/ov_SC03_115_jr_8017BEBC", func_8017E220); +extern void func_8017E998(s32 a0); + +void func_8017E220(s32 a0) { + *(s32 *)(a0 + 0xDC) &= ~0x10; + func_8017E998(a0); + *(s32 *)(a0 + 0x1C) = 0xA; +} + extern s32 func_8012BEE8(s32 arg); diff --git a/src/ov_SC03_117/ov_SC03_117_jr_8017BEBC.c b/src/ov_SC03_117/ov_SC03_117_jr_8017BEBC.c index 0a82b85095..4ae2331b0f 100644 --- a/src/ov_SC03_117/ov_SC03_117_jr_8017BEBC.c +++ b/src/ov_SC03_117/ov_SC03_117_jr_8017BEBC.c @@ -4114,7 +4114,121 @@ void func_8017E6A0(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8017BEBC", func_8017E6EC); +extern void func_8013C9C4(void *a0); +extern s32 func_8012BEE8(s32 a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012A828(s32 a0, s32 a1); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8017EB34(s32); +extern void func_8017ECC4(s32 arg0, u16 arg1); +extern s32 func_8012C588(s32 a0, s32 a1); +extern void func_80029124(s32, s32); +extern void func_8002959C(void); +extern void func_80180C78(void); +extern s32 func_80178970(void); +extern void func_80178D18(void); +extern void func_8017E99C(s32 a0); +extern s16 D_8018503C; +extern u8 D_80185018; +extern u8 D_801884F4[]; + +void func_8017E6EC(void *arg0) { + register s32 t __asm__("$2"); + s32 c; + s32 s0; + + switch (*(u16 *)((s32)arg0 + 0x34)) { + case 0: + if ((*(u32 *)((s32)arg0 + 0x1C) & 7) == 0) { + func_8013C9C4(&D_8018503C); + } + if (func_8012BEE8((s32)arg0) != 0) { + *(u32 *)(*(s32 *)((s32)arg0 + 0x20) + 0x24) = 0; + s0 = 0; + do { + func_8012C658(0x1E0, s0, (s32)arg0); + s0 = s0 + 1; + } while (s0 < 0xB); + func_8012A828((s32)arg0, (s32)&D_801884F4); + func_8002D4C8(0x866, 0); + *(u16 *)((s32)arg0 + 0x34) = *(u16 *)((s32)arg0 + 0x34) + 1; + } + ((void (*)(void *))func_8017EB34)(arg0); + break; + case 1: + if ((*(u16 *)((s32)arg0 + 0x72) & 0x4000) != 0) { + func_8002D4C8(0x866, 0); + } + c = *(s32 *)((s32)arg0 + 0x94); + if (c == 0x10) { + t = *(u16 *)((s32)arg0 + 0x106) + 1; + *(u16 *)((s32)arg0 + 0x106) = t; + if ((t << 16) >> 16 == 2) { + *(u16 *)((s32)arg0 + 0x98) = 0; + t = *(u16 *)((s32)arg0 + 0x34) + 1; + *(u16 *)((s32)arg0 + 0x34) = t; + func_8002D4C8(0x865, 0); + } + } + if ((*(u32 *)((s32)arg0 + 0x1C) & 7) == 0) { + func_8013C9C4(&D_8018503C); + } + t = *(u32 *)((s32)arg0 + 0x1C) + 1; + *(u32 *)((s32)arg0 + 0x1C) = t; + ((void (*)(void *))func_8017EB34)(arg0); + break; + case 2: + func_8017ECC4((s32)arg0, 0); + ((void (*)(void *))func_8017EB34)(arg0); + c = *(s16 *)((s32)arg0 + 0xFE); + if (c != 6) { + break; + } + t = *(u16 *)((s32)arg0 + 0x34); + *(s32 *)((s32)arg0 + 0x1C) = 0x10; + goto lab_e958; + case 3: + func_8017ECC4((s32)arg0, 0); + if (func_8012BEE8((s32)arg0)) { + *(u16 *)((s32)arg0 + 0x5C) = 0; + *(u16 *)((s32)arg0 + 0x108) = 1; + *(u16 *)((s32)arg0 + 0x10A) = 1; + func_8012C588(0x23A, (s32)arg0); + *(u16 *)((s32)arg0 + 0xE2) = 0; + func_8002D4C8(0x868, 0); + goto lab_e954; + } + break; + case 4: + func_8017ECC4((s32)arg0, 1); + if ((*(u32 *)((s32)arg0 + 0x1C) & 0xF) == 0) { + func_8013C9C4(&D_80185018); + } + t = *(u32 *)((s32)arg0 + 0x1C) + 1; + *(u32 *)((s32)arg0 + 0x1C) = t; + if (*(s16 *)((s32)arg0 + 0xE2) == 0) { + break; + } + func_80029124(0xBB, 1); + func_8002959C(); + func_8002D4C8(4, 0x868); + func_80180C78(); +lab_e954: + t = *(u16 *)((s32)arg0 + 0x34); +lab_e958: + t = t + 1; + *(u16 *)((s32)arg0 + 0x34) = t; + break; + case 5: + break; + } + + if (((s32 (*)(void *))func_80178970)(arg0) != 0) { + ((void (*)(void *))func_80178D18)(arg0); + func_8017E99C((s32)arg0); + } +} + INCLUDE_ASM("asm/ov_SC03_117/nonmatchings/ov_SC03_117_jr_8017BEBC", func_8017E99C); diff --git a/src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c b/src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c index bf1229ae13..4a5e2fc650 100644 --- a/src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c +++ b/src/ov_SC03_121/ov_SC03_121_jr_8017BEBC.c @@ -3363,7 +3363,14 @@ void func_8017D104(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC03_121/nonmatchings/ov_SC03_121_jr_8017BEBC", func_8017D16C); +void func_8017D16C(void *a0) { + if (func_80146E98((s32)a0) != 0) { + func_80159B3C(a0); + func_8012DB84(); + func_80146CA0(a0); + } +} + void func_8017D1B4(void) { } diff --git a/src/ov_SC04_000/ov_SC04_000_jr_8017BEBC.c b/src/ov_SC04_000/ov_SC04_000_jr_8017BEBC.c index 6905cbc766..1664e6e021 100644 --- a/src/ov_SC04_000/ov_SC04_000_jr_8017BEBC.c +++ b/src/ov_SC04_000/ov_SC04_000_jr_8017BEBC.c @@ -5259,7 +5259,186 @@ void func_8017FEBC(s32 a0) { -INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8017BEBC", func_80180020); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8012C218(void *a0); +extern void func_800233CC(void *a0, unsigned short a1); +extern void func_80029514(s32 a0); +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_800D0F4C(s32 a0); +extern s32 func_80178970(); +extern void func_80178D18(); +extern u8 *func_8012913C(s32 a0); +extern u8 D_801A9CE8; +extern u8 D_801A9CE9; +extern u8 D_801A9CEA; +extern u8 D_801A9CEC; +extern u8 D_801A9D68; +extern u8 D_801A9D69; +extern u8 D_801A9D6A; +extern u8 D_801A9D6C; +extern u8 D_801A9D28; +extern u8 D_801A9D29; +extern u8 D_801A9D2A; +extern u8 D_801A9D2C; + +void func_80180020(s32 arg) { + register u8 *s0 __asm__("$16"); + register s32 s1 __asm__("$17"); + register s32 v1 __asm__("$3"); + register s32 t __asm__("$2"); + register s32 ca0 __asm__("$4"); + register s32 ca1 __asm__("$5"); + volatile u8 pad[40]; + s32 u34; + + s1 = arg; + + switch (*(s16 *)(s1 + 0x10A)) { + case 0: + goto tailjoin; + case 1: + v1 = (s32)func_8012913C(0x6D); + if (v1 == 0) { + goto tailjoin; + } + s0 = &D_801A9CE8; + *(s32 *)(s1 + 0xD0) = v1; + *(u16 *)(v1 + 6) = *(u16 *)(s1 + 6) + 0x80; + *(u16 *)(v1 + 0xA) = *(u16 *)(s1 + 0xA) - 0x38; + *(u16 *)(v1 + 0xE) = *(u16 *)(s1 + 0xE) - 0x28; + func_8001CD50(*(s32 *)(v1 + 0x20), (s32)s0); + D_801A9CE9 = 0; + D_801A9CEA = 0; + D_801A9CEC = 0; + D_801A9CE9 = 0; + D_801A9CEA = 0; + *s0 = 0xFF; + func_800233CC(s0, 0x40); + *(s16 *)(s1 + 0x10A) = 2; + *(s16 *)(s1 + 0xFC) = 0x20; + return; + case 2: + t = *(s16 *)(s1 + 0xFC); + v1 = t; + if (t != 0) { + goto decr; + } + v1 = (s32)func_8012913C(0x6D); + if (v1 == 0) { + goto tailjoin; + } + s0 = &D_801A9D68; + *(s32 *)(s1 + 0xD8) = v1; + *(u16 *)(v1 + 6) = *(u16 *)(s1 + 6) + 0x68; + *(u16 *)(v1 + 0xA) = *(u16 *)(s1 + 0xA) - 0x20; + *(u16 *)(v1 + 0xE) = *(u16 *)(s1 + 0xE) - 0x28; + func_8001CD50(*(s32 *)(v1 + 0x20), (s32)s0); + D_801A9D69 = 0; + D_801A9D6A = 0; + D_801A9D6C = 0; + *s0 = 0; + D_801A9D69 = 0; + D_801A9D6A = 0xFF; + func_800233CC(s0, 0x40); + *(s16 *)(s1 + 0x10A) = 3; + *(s16 *)(s1 + 0xFC) = 0x20; + return; + case 3: + t = *(s16 *)(s1 + 0xFC); + v1 = t; + if (t != 0) { + goto decr; + } + v1 = (s32)func_8012913C(0x6D); + if (v1 == 0) { + goto tailjoin; + } + s0 = &D_801A9D28; + *(s32 *)(s1 + 0xD4) = v1; + *(u16 *)(v1 + 6) = *(u16 *)(s1 + 6) + 0x9C; + *(u16 *)(v1 + 0xA) = *(u16 *)(s1 + 0xA) - 0x20; + *(u16 *)(v1 + 0xE) = *(u16 *)(s1 + 0xE) - 0x28; + func_8001CD50(*(s32 *)(v1 + 0x20), (s32)s0); + D_801A9D29 = 0; + D_801A9D2A = 0; + D_801A9D2C = 0; + *s0 = 0; + D_801A9D2A = 0; + D_801A9D29 = 0xFF; + func_800233CC(s0, 0x40); + *(s16 *)(s1 + 0x10A) = 4; + *(s16 *)(s1 + 0xFC) = 0x20; + return; + case 4: + t = *(s16 *)(s1 + 0xFC); + v1 = t; + if (t != 0) { + goto decr; + } + v1 = *(s32 *)(s1 + 0xD0); + *(u16 *)(v1 + 2) += 1; + v1 = *(s32 *)(s1 + 0xD4); + *(u16 *)(v1 + 2) += 1; + v1 = *(s32 *)(s1 + 0xD8); + *(u16 *)(v1 + 2) += 1; + *(s16 *)(s1 + 0x10A) = 5; + *(s16 *)(s1 + 0xFC) = 0x20; + return; + case 5: + t = *(s16 *)(s1 + 0xFC); + v1 = t; + if (t == 0) { + goto set6; + } + decr: + t = v1 - 1; + *(s16 *)(s1 + 0xFC) = t; + return; + set6: + t = 6; + *(s16 *)(s1 + 0x10A) = t; + ca0 = 0xC1F; + ca1 = 0; + goto c6call; + case 6: + *(u16 *)(s1 + 6) -= 2; + { + u8 *p = *(u8 **)(s1 + 0xCC); + *(u16 *)(s1 + 0xA) ^= 2; + *(u16 *)(p + 6) += 2; + *(u16 *)(p + 0xA) ^= 2; + if (*(s16 *)(s1 + 0x88) - *(s16 *)(s1 + 6) >= 0x81) { + *(s16 *)(s1 + 0x10A) = 0; + ca0 = 4; + ca1 = 0xC1F; + } else { + goto tailjoin; + } + } + c6call: + func_8002D4C8(ca0, ca1); + break; + } + +tailjoin: + if (((s32 (*)(s32))func_80178970)(s1) == 0) { + return; + } + ((void (*)(s32))func_80178D18)(s1); + u34 = *(u16 *)(s1 + 0x34); + *(s16 *)(s1 + 2) = 1; + if (u34 == 0) { + return; + } + func_80029514(0x30C); + func_8012C218((void *)*(s32 *)(s1 + 0xCC)); + func_8012C218((void *)*(s32 *)(s1 + 0x6C)); + func_8012C218((void *)s1); + func_800D0F4C(0x60); + func_800D0F4C(0x61); + func_800D0F4C(0x62); +} + INCLUDE_ASM("asm/ov_SC04_000/nonmatchings/ov_SC04_000_jr_8017BEBC", func_801803BC); diff --git a/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c b/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c index bf55a86ef1..0036cd07d1 100644 --- a/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c +++ b/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c @@ -7219,7 +7219,60 @@ void func_80181C9C(void *a0) { INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181D1C); -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181DAC); +extern s32 func_80181E90(); + +s32 func_80181DAC(s32 arg0) { + extern u8 D_801202A0[]; + register s32 zr __asm__("$0"); + u8 *pe; + u8 *ps; + s16 *ca; + s16 *cb; + u16 state; + u16 t; + s32 count; + + pe = D_801202A0; + count = 0; + ps = pe + 4; + do { + if ((s32)pe == arg0) { + goto next; + } + state = *(u16 *)pe; + ca = (s16 *)((s32)arg0 + zr); + if (state == 0x1FC) { + goto b1fc; + } + cb = (s16 *)((s32)ps + zr); + if (state == 0x239) { + goto b239; + } + goto next; + + b1fc: + cb = (s16 *)((s32)ps + zr); + t = (*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x18) * 9u) >> 9; + goto call; + + b239: + t = (u32)(*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x18) + *(s16 *)(*(s32 *)(ps + 0x1C) + 0x18)) >> 6; + /* fall through */ + call: + if (func_80181E90(ca, cb, t) == 0) { + goto next; + } + __asm__ __volatile__("" :: "r"(pe)); + return (s32)pe; + + next: + count++; + ps += 0x10C; + pe += 0x10C; + } while (count < 0x60); + return 0; +} + INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181E90); diff --git a/src/ov_SC04_016/.cdecl_func_8017F03C.c b/src/ov_SC04_016/.cdecl_func_8017F03C.c new file mode 100644 index 0000000000..3b249e428d --- /dev/null +++ b/src/ov_SC04_016/.cdecl_func_8017F03C.c @@ -0,0 +1,4035 @@ +#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. */ + /* 12-byte sub-table record (stride 0xC) */ + /* 0x20 bytes */ + /* 4 + 16*12 = 0xC4 stride */ + /* 0x08 */ + /* 0x20 */ +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 *); + /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ + /* 16-byte stride array element */ +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_80182534; +extern u8 D_801824A4; +extern u8 D_80182480; +extern u8 D_8018245C; +extern u8 D_80182510; +extern u8 D_801824EC; +extern u8 D_801824C8; +extern u8 D_80182438; +extern void func_80145934(void); +extern u8 D_801825C4; +extern u8 D_801825A0; +extern u8 D_8018257C; +extern u8 D_80182558; +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_801819BC[]; +extern unsigned char D_801819EC[]; +extern unsigned char D_80181A3C[]; +extern unsigned char D_80181A6C[]; +extern unsigned char D_80181A9C[]; +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_80181AEC[])(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_80181BB4[]; +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_80181C3C[]; +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_80181C44; +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_801A5958; +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_801A595C; +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_80181C74; +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_80181D1C[])(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_80181D40[])(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_80181D30; +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_80181D54[])(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_80181D60[]; +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_80181D70[])(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_80181D88[])(void); +extern void func_8015282C(void *a0); +extern void func_801528B0(s32 a0); +extern void func_80152868(s32 a0); +extern M2C_UNK D_80181D78; +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_80181D9C[])(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_80181DB8[])(void); +extern void func_80152D24(void *a0); +extern void func_80152DA8(s32 a0); +extern void func_80152D60(s32 a0); +extern M2C_UNK D_80181DA8; +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_80181DCC[])(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_80181DE0[])(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_80181DF4; +extern void (*D_80181E1C[])(void *a0); +extern void func_80153CCC(S80153CCC *a0); +extern void func_80153D7C(s32 a0); +extern void func_80153D34(s32 a0); +extern u8 D_80181DFC; +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_80181E68[])(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_80181E6C[])(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_801822D0[]; +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 s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); +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_801822E0[])(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_801A5990; +extern void func_801578C0(s32 a0); +extern void func_80157788(int param_1); +extern void func_801577C8(s32 arg0); +extern void (*D_80182308[])(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_801822E8; +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_801822F8; +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_80182348[])(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_80182350[])(void); +extern void func_80158038(void *); +extern void func_80158000(void *a0); +extern s32 D_800D51E0; +extern s32 D_8018231C; +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_8018235C[])(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_8018232C; +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_801A5998; +extern s32 D_801A59A4; +extern s32 D_801A59A8; +extern void func_80158880(s32 *param); +extern void func_8015879C(s32 param_1); +extern void func_80158814(void *arg0); +extern void (*D_80182398[])(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_8018236C[]; +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_801A59A0; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_801825E8[])(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_80182408[]; +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_8018268C[])(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_801827E0[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_801825FC; +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_801827E8[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018260C; +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_8018262C; +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_801827F0[])(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_80182818[])(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_80182824[])(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_80182698[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_801828C8; +extern void func_8015D380(s32 a0); +extern unsigned char D_801819AC[]; +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_801828DC[]; +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_80182918[]; +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_80182960; +extern u16 D_80182962; +extern u16 D_80182964; +extern s32 D_80182968; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_80182970; +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_8018267C; +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_801829F4[]; +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_80182AA4[])(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_80182AD4[]; +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_80182B38; +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_801A59B0[]; +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_80182B5C[])(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_801A5A08[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_80182BA4[])(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_80182B94; +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_801A523C[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_80182BAC[])(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_80182C00[])(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_80182BC8; +extern s16 D_80182BFC; +extern s16 D_80182BFA; +extern s16 D_80182BF8; +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_80182C0C[])(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_801A5A68; +extern u8 D_801A5A69; +extern u8 D_801A5A6A; +extern u8 D_801A5A6B; +extern u8 D_801A5A6C; +extern u8 D_801A5A6D; +extern u8 D_801A5A6E; +extern u8 D_801A5A6F; +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_80182C1C[])(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_801A5AA8; +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_80182C60[])(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_80182CDC[]; +extern s32 D_80182CFC[]; +extern u8 D_80182D78[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_80182D98[]; +extern u8 D_80182DB8[]; +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_80182E54[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_80182ED0[])(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_801A524C; +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_80182EDC[])(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_80182EE4[])(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_80182FAC[])(void); +extern void func_80166618(void *a0); +extern void (*D_80182FBC[])(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_80182FCC[])(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_80182FD8[])(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_80182F38[]; +extern u8 D_80182F4C[]; +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_80182FF0[])(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_80182FF8[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_80183000[])(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_80183008[])(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_80183010[])(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_80183018[])(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_80183020[])(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_801830D4[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801830DC[])(void); +extern void func_80169F00(void *a0); +extern char D_8018308C[]; +extern char D_8018304C[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80183114[])(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_80183120[])(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_80183168[])(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_801831E4[])(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_801A5DC8; +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_801831D8[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_8018321C[]; +extern unsigned short D_80183224[]; +extern unsigned short D_8018322C[]; +extern unsigned char D_801A5DD0[]; +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_801A5DC8; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80183234[])(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_801A5F04; +extern M2C_UNK D_801A5F08; +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_801A5E90; +extern void (*D_80183264[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801A5F0C[]; +extern u8 D_801A5F14[]; +extern u8 D_801A5EC4[]; +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_8018326C[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_80183288[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_80183290[])(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_801832F8[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8018329C; +extern u8 D_801832A8; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_8018332C[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80183334[])(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_80183388[])(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_801833BC[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801833AC[]; +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_801833D8; +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_80183450[])(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_80183458[])(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_80183460[])(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_80183468[])(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_80183470[])(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_80183478[])(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_80183484[])(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_80183490[])(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_8018349C[])(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_801834AC[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801834BC[])(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_801834C4[])(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_801834CC[])(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_801834D4[])(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_801834DC[])(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_801834E4[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_801834EC[])(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_801834F4[])(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_801834FC[])(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_80183504[])(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_8018350C[])(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_80183514[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_8018351C[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80183524[])(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_8018352C[])(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_80183534[])(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_8018353C[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80183544[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_8018354C[])(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_80183554[])(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_8018355C[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80183564[])(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_8018356C[])(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_801835B0[])(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_80183574; +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_801835E0[])(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_8018361C[])(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_80183674[])(); +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_80183684[])(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_8018368C[])(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_80175414(s32 _arg0); +extern void func_80175494(void); +extern void (*D_801837F4[])(); +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_80183800[])(); +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_801A5494; +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_801AC268; +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_801A6648; +extern short D_801AC2DC; +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_80179B74(u16 *p); +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_80179B74(u16 *p); +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_801A6A74; +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_801A6A9C; +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_801A6A58; +extern s32 func_8017A3B0(void); +extern short D_801A6A94; +extern short D_801A6A90; +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 void func_8017B0E4(int param_1, int param_2); +extern s16 D_801A6A5C; +extern u16 D_801A6ADC; +extern u16 D_801A6ADE; +extern u16 D_801A6AE0; +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_801A6AD4; +extern s16 D_801A6AD6; +extern s16 D_801A6AD8; +extern s16 D_801A6ACC; +extern s16 D_801A6ACE; +extern s16 D_801A6AD0; +extern void func_8017B7A8(void); +extern s16 D_801A6AEC; +extern s16 D_801A6AEE; +extern s16 D_801A6AF0; +extern s16 D_801A6AF4; +extern s16 D_801A6AF6; +extern s16 D_801A6AF8; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801A6AE4; +extern short D_801A6AE6; +extern short D_801A6AE8; +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_801A6A7C; +extern SV4 D_801A6A84; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801A6AA4[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_801A6AA0)(void); +extern void func_8017BD50(int param_1); +extern void (*D_801839DC[])(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); +/* ==== end §8b carried decl layer ==== */ + +/* func_8017BEBC — ov_SC01_000_after — TMD-style model renderer (952 ins, jr-function). + * Outer loop: per-part bbox -> RTPT/RTPS projection -> g.otz + screen cull. + * Inner loop: per-prim RTPT -> g.flag/nclip/g.opz cull -> switch(code&7): + * 4,5=POLY_F3 / 6,7=POLY_FT3 / 0,1=POLY_F4 / 2,3=POLY_FT4 -> OT insert. + * GTE ops are verbatim PsyQ inline_c.h macro bodies (rtps/rtpt/nclip spelled via + * the project gas macros from include/gte_macros.inc, pulled in by common.h).* + * CLOSED 2026-07-13 (Phase 26 session 8, Fable5 Max): match_one MATCH 952/952, PIN-FREE. + * The close=2 residual (two transposed preheader addius) was a global.c allocno-priority TIE: + * pseudo 228 = &g.sz1 (sp+0xD0): refs 13, live_length 783 -> pri int(3*13*10000/783) = 498 + * pseudo 230 = &g.sz2 (sp+0xD4): refs 13, live_length 782 -> pri int(3*13*10000/782) = 498 + * Tie -> creation-order tie-break -> sz1 allocated first (t8) = swapped. The shipped workaround + * permuted the stsz3 operand list (creation sz0,sz2,sz1) which fixed allocation but transposed + * the preheader emission (close=2). TRUE FIX: natural operand order restored (emission correct) + * + ONE zero-byte `__asm__ volatile ("")` inside the common live range (between two existing GTE + * volatile asms, so no new cse/sched barrier) -> L 784/783 -> pri 497 vs 498 -> the tie SPLITS + * toward the shorter-lived allocno (sz2) -> sz2 first -> t8. All 10 grants cascade. The slider + * emits nothing (#APP/#NO_APP only); the tie can ONLY split toward the target's allocation + * because the later-defined pseudo always has the shorter range. Cookbook §47. + */ + +#define gte_ldv0(r0) __asm__ volatile ( \ + "lwc2 $0, 0( %0 );" \ + "lwc2 $1, 4( %0 )" \ + : \ + : "r"( r0 ) ) + +#define gte_ldv3(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_ldv3c(r0) __asm__ volatile ( \ + "lwc2 $0, 0( %0 );" \ + "lwc2 $1, 4( %0 );" \ + "lwc2 $2, 8( %0 );" \ + "lwc2 $3, 12( %0 );" \ + "lwc2 $4, 16( %0 );" \ + "lwc2 $5, 20( %0 )" \ + : \ + : "r"( r0 ) ) + +#define gte_rtps() __asm__ volatile ("nop;nop;rtps") +#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt") +#define gte_nclip() __asm__ volatile ("nop;nop;nclip") + +#define gte_stsxy(r0) __asm__ volatile ( \ + "swc2 $14, 0( %0 )" \ + : \ + : "r"( r0 ) \ + : "memory" ) + +#define gte_stsxy3(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_stsxy3c(r0) __asm__ volatile ( \ + "swc2 $12, 0( %0 );" \ + "swc2 $13, 4( %0 );" \ + "swc2 $14, 8( %0 )" \ + : \ + : "r"( r0 ) \ + : "memory" ) + +#define gte_stsxy3_f3(r0) __asm__ volatile ( \ + "swc2 $12, 8( %0 );" \ + "swc2 $13, 12( %0 );" \ + "swc2 $14, 16( %0 )" \ + : \ + : "r"( r0 ) \ + : "memory" ) + +#define gte_stsxy3_ft3(r0) __asm__ volatile ( \ + "swc2 $12, 8( %0 );" \ + "swc2 $13, 16( %0 );" \ + "swc2 $14, 24( %0 )" \ + : \ + : "r"( r0 ) \ + : "memory" ) + +#define gte_stsxy3_f4(r0) __asm__ volatile ( \ + "swc2 $12, 8( %0 );" \ + "swc2 $13, 12( %0 );" \ + "swc2 $14, 16( %0 )" \ + : \ + : "r"( r0 ) \ + : "memory" ) + +#define gte_stsz3(r0, r1, r2) __asm__ volatile ( \ + "swc2 $17, 0( %0 );" \ + "swc2 $18, 0( %1 );" \ + "swc2 $19, 0( %2 )" \ + : \ + : "r"( r0 ), "r"( r1 ), "r"( r2 ) \ + : "memory" ) + +#define gte_stsz4(r0, r1, r2, r3) __asm__ volatile ( \ + "swc2 $16, 0( %0 );" \ + "swc2 $17, 0( %1 );" \ + "swc2 $18, 0( %2 );" \ + "swc2 $19, 0( %3 )" \ + : \ + : "r"( r0 ), "r"( r1 ), "r"( r2 ), "r"( r3 ) \ + : "memory" ) + +#define gte_stszotz(r0) __asm__ volatile ( \ + "mfc2 $12, $19;" \ + "nop;" \ + "sra $12, $12, 2;" \ + "sw $12, 0( %0 )" \ + : \ + : "r"( r0 ) \ + : "$12", "memory" ) + +#define gte_stflg(r0) __asm__ volatile ( \ + "cfc2 $12, $31;" \ + "nop;" \ + "sw $12, 0( %0 )" \ + : \ + : "r"( r0 ) \ + : "$12", "memory" ) + +#define gte_stopz(r0) __asm__ volatile ( \ + "swc2 $24, 0( %0 )" \ + : \ + : "r"( r0 ) \ + : "memory" ) + +void func_8017BEBC(s32 arg0) +{ + typedef struct { u32 w0, w1, w2; } Prim; + + extern s32 func_800491EC(void); + extern void func_800547D8(s32, MATRIX2 *); + extern void func_80052E38(MATRIX2 *); + extern u8 *D_800A5E60; + extern u8 D_800A6610[]; + extern short D_800B9A02; /* TU-visible spelling (engine_core.h + ov_SC01_000.c col-0); unsigned access forced at use — §8d sub-class (b) */ + + DVECTOR2 tmpxy[4]; + SVECTOR2 box[8]; + SVECTOR2 sxy[8]; + MATRIX2 mtx; + struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g; + + s32 lim; + s32 nparts; + s32 j; + u32 nprim; + u32 i; + Part *part; + Prim *prim; + u8 *pkt; + u32 ot; + u8 *vtx; + u8 *va, *vb, *vc, *vd; + u32 w, code; + u32 wx, wy, wz; + s32 xa32, xb32, t32; + s32 xmn1, xmx1, xmn2, xmx2; + s32 mnc, mxc; + s16 my, mny, mx, mn; + + lim = func_800491EC() + *(s32 *)(arg0 + 0x64); + func_800547D8(arg0 + 0x10, &mtx); + func_80052E38(&mtx); + + pkt = D_800A5E60; + part = *(Part **)(arg0 + 0xC); + nparts = *(s32 *)(*(s32 *)(arg0 + 8) + 8); + vtx = *(u8 **)(*(s32 *)(arg0 + 8) + 0x10); + ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14]; + + for (j = 0; j < nparts; j++, part++) { + wx = part->xx; + mn = wx; + mx = wx >> 16; + wy = part->yy; + mny = wy; + my = wy >> 16; + wz = part->zz; + box[0].vx = mn; box[0].vy = mny; + box[1].vx = mx; box[1].vy = mny; + box[2].vx = mn; box[2].vy = mny; + box[3].vx = mx; box[3].vy = mny; + box[4].vx = mn; box[4].vy = my; + box[5].vx = mx; box[5].vy = my; + box[6].vx = mn; box[6].vy = my; + box[7].vx = mx; box[7].vy = my; + wy = wz >> 16; + box[0].vz = wz; + box[1].vz = wz; + box[4].vz = wz; + box[5].vz = wz; + box[2].vz = wy; + box[3].vz = wy; + box[6].vz = wy; + box[7].vz = wy; + + gte_ldv3c(&box[0]); + gte_rtpt(); + gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]); + gte_ldv0(&box[3]); + gte_rtps(); + gte_stsxy(&sxy[3]); + gte_ldv3c(&box[4]); + __asm__ volatile (""); /* §45-B live-length slider: +1 static insn splits the 228/230 allocno-priority tie (498/498 -> 497/498) */ + gte_rtpt(); + gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]); + gte_ldv0(&box[7]); + gte_rtps(); + gte_stsxy(&sxy[7]); + gte_stszotz(&g.otz); + + if (lim >= g.otz) { + xa32 = sxy[0].vx; + xb32 = sxy[1].vx; + if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } + t32 = sxy[2].vx; + if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; + t32 = sxy[3].vx; + if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; + xa32 = sxy[4].vx; + xb32 = sxy[5].vx; + if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } + t32 = sxy[6].vx; + if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; + t32 = sxy[7].vx; + if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; + mnc = xmn1; + if (xmn2 < xmn1) mnc = xmn2; + mxc = xmx1; + if (mxc < xmx2) mxc = xmx2; + if ((s16)mxc >= -0xA0 && (s16)mnc < 0xA1) { + xa32 = sxy[0].vy; + xb32 = sxy[1].vy; + if (xb32 < xa32) { xmx1 = xa32; xmn1 = xb32; } else { xmn1 = xa32; xmx1 = xb32; } + t32 = sxy[2].vy; + if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; + t32 = sxy[3].vy; + if (xmx1 < t32) xmx1 = t32; else if (t32 < xmn1) xmn1 = t32; + xa32 = sxy[4].vy; + xb32 = sxy[5].vy; + if (xb32 < xa32) { xmx2 = xa32; xmn2 = xb32; } else { xmn2 = xa32; xmx2 = xb32; } + t32 = sxy[6].vy; + if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; + t32 = sxy[7].vy; + if (xmx2 < t32) xmx2 = t32; else if (t32 < xmn2) xmn2 = t32; + mnc = xmn1; + if (xmn2 < xmn1) mnc = xmn2; + mxc = xmx1; + if (mxc < xmx2) mxc = xmx2; + if ((s16)mxc >= -0x78 && (s16)mnc < 0x79) { + prim = (Prim *)part->prim; + nprim = part->nprim; + for (i = 0; i < nprim; i++, prim++) { + w = prim->w1; + va = vtx + (w & 0xFFFF); + vb = vtx + (w >> 16); + w = prim->w2; + vc = vtx + (w & 0xFFFF); + w = w >> 16; + gte_ldv3(va, vb, vc); + gte_rtpt(); + gte_stflg(&g.flag); + if (!(g.flag & 0x7F85E000)) { + gte_nclip(); + code = w & 7; + vd = vtx + (w & 0xFFF8); + gte_stopz(&g.opz); + if (g.opz > 0) { + switch (code) { + case 4: + case 5: + gte_stsxy3_f3(pkt); + gte_stsz3(&g.sz0, &g.sz1, &g.sz2); + if (((PolyF3 *)pkt)->x0 > ((PolyF3 *)pkt)->x1) { + mx = ((PolyF3 *)pkt)->x0; + mn = ((PolyF3 *)pkt)->x1; + } else { + mn = ((PolyF3 *)pkt)->x0; + mx = ((PolyF3 *)pkt)->x1; + } + if (((PolyF3 *)pkt)->x2 > mx) mx = ((PolyF3 *)pkt)->x2; + else if (((PolyF3 *)pkt)->x2 < mn) mn = ((PolyF3 *)pkt)->x2; + if (mx >= -0xA0 && mn < 0xA1) { + if (((PolyF3 *)pkt)->y0 > ((PolyF3 *)pkt)->y1) { + my = ((PolyF3 *)pkt)->y0; + mny = ((PolyF3 *)pkt)->y1; + } else { + mny = ((PolyF3 *)pkt)->y0; + my = ((PolyF3 *)pkt)->y1; + } + if (((PolyF3 *)pkt)->y2 > my) my = ((PolyF3 *)pkt)->y2; + else if (((PolyF3 *)pkt)->y2 < mny) mny = ((PolyF3 *)pkt)->y2; + if (my >= -0x78 && mny < 0x79) { + s32 za, zb; + u32 *otp; + if (g.sz0 > g.sz1) { + za = g.sz0; + if (za < g.sz2) za = g.sz2; + } else { + za = g.sz1; + if (za < g.sz2) za = g.sz2; + } + g.opz = za; + if (code != 4) g.opz = za + 0x200; + ((PolyF3 *)pkt)->rgbc = prim->w0; + otp = (u32 *)(((g.opz >> 2) << 2) + ot); + *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x4000000; + *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); + pkt += 0x14; + } + } + break; + case 6: + case 7: + gte_stsxy3_ft3(pkt); + gte_stsz3(&g.sz0, &g.sz1, &g.sz2); + if (((PolyFT3 *)pkt)->x0 > ((PolyFT3 *)pkt)->x1) { + mx = ((PolyFT3 *)pkt)->x0; + mn = ((PolyFT3 *)pkt)->x1; + } else { + mn = ((PolyFT3 *)pkt)->x0; + mx = ((PolyFT3 *)pkt)->x1; + } + if (((PolyFT3 *)pkt)->x2 > mx) mx = ((PolyFT3 *)pkt)->x2; + else if (((PolyFT3 *)pkt)->x2 < mn) mn = ((PolyFT3 *)pkt)->x2; + if (mx >= -0xA0 && mn < 0xA1) { + if (((PolyFT3 *)pkt)->y0 > ((PolyFT3 *)pkt)->y1) { + my = ((PolyFT3 *)pkt)->y0; + mny = ((PolyFT3 *)pkt)->y1; + } else { + mny = ((PolyFT3 *)pkt)->y0; + my = ((PolyFT3 *)pkt)->y1; + } + if (((PolyFT3 *)pkt)->y2 > my) my = ((PolyFT3 *)pkt)->y2; + else if (((PolyFT3 *)pkt)->y2 < mny) mny = ((PolyFT3 *)pkt)->y2; + if (my >= -0x78 && mny < 0x79) { + s32 za, zb; + u32 *otp; + u32 *tp; + if (g.sz0 > g.sz1) { + za = g.sz0; + if (za < g.sz2) za = g.sz2; + } else { + za = g.sz1; + if (za < g.sz2) za = g.sz2; + } + g.opz = za; + if (code == 7) g.opz = za + 0x200; + tp = (u32 *)prim->w0; + ((PolyFT3 *)pkt)->rgbc = tp[0]; + ((PolyFT3 *)pkt)->uvc0 = tp[1]; + ((PolyFT3 *)pkt)->uvp1 = tp[2]; + ((PolyFT3 *)pkt)->uv2 = tp[3]; + otp = (u32 *)(((g.opz >> 2) << 2) + ot); + *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x7000000; + *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); + pkt += 0x20; + } + } + break; + case 0: + case 1: + gte_stsxy3_f4(pkt); + gte_ldv0(vd); + gte_rtps(); + if (((PolyF4 *)pkt)->x0 > ((PolyF4 *)pkt)->x1) { + mx = ((PolyF4 *)pkt)->x0; + mn = ((PolyF4 *)pkt)->x1; + } else { + mn = ((PolyF4 *)pkt)->x0; + mx = ((PolyF4 *)pkt)->x1; + } + if (((PolyF4 *)pkt)->x2 > mx) mx = ((PolyF4 *)pkt)->x2; + else if (((PolyF4 *)pkt)->x2 < mn) mn = ((PolyF4 *)pkt)->x2; + if (((PolyF4 *)pkt)->y0 > ((PolyF4 *)pkt)->y1) { + my = ((PolyF4 *)pkt)->y0; + mny = ((PolyF4 *)pkt)->y1; + } else { + mny = ((PolyF4 *)pkt)->y0; + my = ((PolyF4 *)pkt)->y1; + } + if (((PolyF4 *)pkt)->y2 > my) my = ((PolyF4 *)pkt)->y2; + else if (((PolyF4 *)pkt)->y2 < mny) mny = ((PolyF4 *)pkt)->y2; + gte_stflg(&g.flag); + if (!(g.flag & 0x7F85E000)) { + gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); + gte_stsxy((long *)&((PolyF4 *)pkt)->x3); + if (((PolyF4 *)pkt)->x3 < mn) mn = ((PolyF4 *)pkt)->x3; + else if (mx < ((PolyF4 *)pkt)->x3) mx = ((PolyF4 *)pkt)->x3; + if (mx >= -0xA0 && mn < 0xA1) { + if (((PolyF4 *)pkt)->y3 < mny) mny = ((PolyF4 *)pkt)->y3; + else if (my < ((PolyF4 *)pkt)->y3) my = ((PolyF4 *)pkt)->y3; + if (my >= -0x78 && mny < 0x79) { + s32 za, zb; + u32 *otp; + zb = g.sz2; + if (zb < g.sz3) zb = g.sz3; + za = g.sz0; + if (za < g.sz1) za = g.sz1; + if (za < zb) za = zb; + g.opz = za; + ((PolyF4 *)pkt)->rgbc = prim->w0; + otp = (u32 *)(((za >> 2) << 2) + ot); + *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x5000000; + *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); + pkt += 0x18; + } + } + } + break; + case 2: + case 3: + gte_stsxy3c(&tmpxy[0]); + gte_ldv0(vd); + gte_rtps(); + if (tmpxy[0].vx > tmpxy[1].vx) { + mx = tmpxy[0].vx; + mn = tmpxy[1].vx; + } else { + mn = tmpxy[0].vx; + mx = tmpxy[1].vx; + } + if (tmpxy[2].vx > mx) mx = tmpxy[2].vx; + else if (tmpxy[2].vx < mn) mn = tmpxy[2].vx; + if (tmpxy[0].vy > tmpxy[1].vy) { + my = tmpxy[0].vy; + mny = tmpxy[1].vy; + } else { + mny = tmpxy[0].vy; + my = tmpxy[1].vy; + } + if (tmpxy[2].vy > my) my = tmpxy[2].vy; + else if (tmpxy[2].vy < mny) mny = tmpxy[2].vy; + gte_stflg(&g.flag); + if (!(g.flag & 0x7F85E000)) { + gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); + gte_stsxy((long *)&((PolyFT4 *)pkt)->x3); + if (((PolyFT4 *)pkt)->x3 < mn) mn = ((PolyFT4 *)pkt)->x3; + else if (mx < ((PolyFT4 *)pkt)->x3) mx = ((PolyFT4 *)pkt)->x3; + if (mx >= -0xA0 && mn < 0xA1) { + if (((PolyFT4 *)pkt)->y3 < mny) mny = ((PolyFT4 *)pkt)->y3; + else if (my < ((PolyFT4 *)pkt)->y3) my = ((PolyFT4 *)pkt)->y3; + if (my >= -0x78 && mny < 0x79) { + s32 za, zb; + u32 *otp; + u32 *tp; + u32 uvw; + zb = g.sz2; + if (zb < g.sz3) zb = g.sz3; + za = g.sz0; + if (za < g.sz1) za = g.sz1; + if (za < zb) za = zb; + g.opz = za; + if (code == 3) g.opz = za + 0x200; + *(u32 *)&((PolyFT4 *)pkt)->x0 = *(u32 *)&tmpxy[0]; + *(u32 *)&((PolyFT4 *)pkt)->x1 = *(u32 *)&tmpxy[1]; + *(u32 *)&((PolyFT4 *)pkt)->x2 = *(u32 *)&tmpxy[2]; + tp = (u32 *)prim->w0; + ((PolyFT4 *)pkt)->rgbc = tp[0]; + ((PolyFT4 *)pkt)->uvc0 = tp[1]; + ((PolyFT4 *)pkt)->uvp1 = tp[2]; + uvw = tp[3]; + ((PolyFT4 *)pkt)->uv2 = uvw; + ((PolyFT4 *)pkt)->uv3 = uvw >> 16; + otp = (u32 *)(((g.opz >> 2) << 2) + ot); + *(u32 *)pkt = (*otp & 0xFFFFFF) | 0x9000000; + *otp = (*otp & 0xFF000000) | ((u32)pkt & 0xFFFFFF); + pkt += 0x28; + } + } + } + break; + } + } + } + } + } + } + } + } + D_800A5E60 = pkt; +} + + + +extern void (*D_80183A38[])(void); + +void func_8017CD9C(void *a0) { + D_80183A38[*(u8 *)((s32)a0 + 0x15)](); +} + + + + +extern void func_8017CF70(void); +extern void func_800167B8(s32 a0); + +s32 func_8017CDD8(s32 a0) { + func_8017CF70(); + func_800167B8(0); + *(u8 *)(a0 + 0x15) += 1; + return 0; +} + + + +extern s32 func_800167F0(s32 a0); + +s32 func_8017CE1C(void) { + return (func_800167F0(0) & 0xffff) != 0; +} + + + +extern void (*D_80183A40[])(void); + +void func_8017CE40(void *a0) { + D_80183A40[*(u8 *)((s32)a0 + 0x15)](); +} + + + + +extern void func_8017CF98(void); + +s32 func_8017CE7C(s32 a0) { + func_8017CF98(); + *(s32 *)(a0 + 0x28) = 10; + *(u8 *)(a0 + 0x15) += 1; + return 0; +} + + + + +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8001BFD0(void); +extern void func_800D0C48(s32 a0); +extern void func_800167B8(s32 a0); + +s32 func_8017CEBC(void *a0) { + s32 v0; + s32 v1 = -1; + v0 = *(s32 *)(a0 + 0x28); + v0 += -1; + *(s32 *)(a0 + 0x28) = v0; + if (v0 == v1) { + func_8002D4C8(0x1C, 0); + func_8001BFD0(); + func_8002D4C8(0x1D, 0); + func_800D0C48(1); + func_800167B8(4); + *(u8 *)(a0 + 0x15) = *(u8 *)(a0 + 0x15) + 1; + } + return 0; +} + + + +extern s32 func_800167F0(s32 arg); +extern void func_800CFBCC(s32 arg); + +s32 func_8017CF38(void) { + if ((func_800167F0(0x4) & 0xFFFF) == 0) { + return 0; + } else { + func_800CFBCC(0x3); + return 1; + } +} + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +void func_8017CF70(void) { + + extern s32 D_80183A4C(void *a0); + ((void (*)(void *, s32))func_8016EE40)((void *)D_80183A4C, 0x1000000); +} + + +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +void func_8017CF98(void) { + + extern s32 D_80183A58(void *a0); + ((void (*)(void *, s32))func_8016EE40)((void *)D_80183A58, 0x1000000); +} + + +extern u8 D_80126948[]; +extern s32 D_80126954; +extern s32 D_80126950; +extern s32 D_8012695C; +extern s32 D_80126958; +extern void func_8017D010(void *a0); + +void func_8017CFC0(void) { + D_80126954 = 400; + D_80126950 = 400; + D_8012695C = 1200; + D_80126958 = 1200; + func_8017D010(&D_80126948); +} + + + +extern void (*D_80183A5C[])(void); + +void func_8017D010(void *a0) { + D_80183A5C[*(u8 *)((s32)a0 + 0x4)](); +} + + + +/* 8 bytes, align 2 -> lwl/lwr/swl/swr copy (cookbook §48-C2) */ + +extern u16 func_80148800(s32 *a0); +extern void func_8017D0EC(s32*); + +void func_8017D04C(s32 a0) { + + extern s32 D_80126B58; + extern s16 D_80183A60[]; + extern Blk8_80126940_8017D04C D_80126940; + Blk8_80126940_8017D04C sp10; + u8 t; + + if (func_80148800(&D_80126B58) & 3) { + t = (*(u8 *)(a0 + 5) + 1) & 1; + *(u8 *)(a0 + 5) = t; + *(s32 *)(a0 + 0x14) = D_80183A60[t]; + } + sp10 = D_80126940; + ((void (*)(s32, s16 *))func_8017D0EC)(a0, sp10.v); +} + + +void func_8017D0EC(s32 *a0) { + *(s32 *)((s32)a0 + 0x3C) = 0x18C; + *(s32 *)((s32)a0 + 0x40) = -0x610; + *(s32 *)((s32)a0 + 0x48) = -0xCD; + *(s32 *)((s32)a0 + 0x44) = 0; + *(s32 *)((s32)a0 + 0x4C) = -0x202; + *(s32 *)((s32)a0 + 0x50) = 0; + } + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017D118); + +void func_8017D588(void *a0) { + extern s32 func_800149E0(s32); + extern s32 func_800CF8B4(); + extern s32 func_80029178(s32 arg); + extern s32 func_8017B368(); + extern void func_80029124(s32, s32); + extern s32 func_8012A828(void *a0, void *a1); + extern s32 func_801789AC(s32 arg0); + extern void func_80178D18(); + extern u8 D_8018492C; + extern u8 D_80183C54; + extern u8 D_80183EAC; + extern u8 D_8018458C; + + if (!((func_800149E0(0) & 0x840) && func_800CF8B4())) { + if (func_80029178(0x125) & 0xFF) { + ((s32 (*)(s32, s32))func_8017B368)((s32)a0, (s32)&D_8018492C); + } + if (func_80029178(0x126) & 0xFF) { + func_80029124(0x126, 0); + ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(a0, s32 *, 0xCC), &D_80183C54); + } + if (func_80029178(0x131) & 0xFF) { + func_80029124(0x131, 0); + ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(a0, s32 *, 0xCC), &D_80183EAC); + } + if (func_80029178(0x127) & 0xFF) { + *(short *)(*(int *)((char *)a0 + 0xd4) + 0x10a) = -0x7300; + } else { + *(short *)(*(int *)((char *)a0 + 0xd4) + 0x10a) = -0x7100; + } + if (func_80029178(0x133) & 0xFF) { + func_80029124(0x133, 0); + ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(a0, s32 *, 0xD4), &D_8018458C); + } + if (func_801789AC((s32)a0)) { + ((void (*)(void *))func_80178D18)(a0); + } else { + return; + } + } + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 2) + 1; +} + + +extern s32 func_8012A828(); +extern void func_8017DD18(); +extern s32 func_80029178(s32 arg); +extern void func_80029124(s32 a0, s32 a1); +extern void func_800183E0(s32 a0); +extern s32 rand(void); +extern s32 D_80183A64; +extern s32 D_80183B5C; +extern u8 D_80183C54; +extern s32 D_80183DFC; +extern s32 D_80195274; +extern s32 D_801954C4; +extern s32 D_801946E4; +extern s32 D_80194934; +extern s32 D_80194B84; +extern s32 D_80194DD4; +extern s32 D_80195024; + +void func_8017D6D8(s32 a0) { + s32 s1; + s32 v1; + + if (*(s32 *)(a0 + 0x90) == (s32)&D_80183A64 && *(s16 *)(a0 + 0x98) == 0) { + ((void (*)(s32, s32))func_8012A828)((s32)a0, (s32)&D_80183B5C); + } + s1 = *(s32 *)(a0 + 0x90); + if (s1 == (s32)&D_80183C54) { + if (*(s16 *)(a0 + 0x98) == 0) { + ((void (*)(s32, s32))func_8012A828)((s32)a0, (s32)&D_80183DFC); + } + if (*(s32 *)(a0 + 0x90) == s1 && *(s16 *)(a0 + 0x98) == 0) { + ((void (*)(s32, s32))func_8012A828)((s32)a0, (s32)&D_80183DFC); + } + } + func_8017DD18((void *)a0); + if (func_80029178(0x128) & 0xFF) { + func_80029124(0x128, 0); + *(s32 *)(a0 + 0x1C) = 0; + } + if (func_80029178(0x129) & 0xFF) { + v1 = *(s32 *)(a0 + 0x1C); + if (v1 == 0) { + func_800183E0((s32)&D_80195274); + *(s32 *)(a0 + 0x1C) = (rand() & 0x1F) + 0x1E; + } else { + if (v1 == 2) { + func_800183E0((s32)&D_801954C4); + } + *(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) - 1; + } + } + if (func_80029178(0x12A) & 0xFF) { + v1 = *(s32 *)(a0 + 0x1C); + if (v1 == 0) { + func_800183E0((s32)&D_801946E4); + *(s32 *)(a0 + 0x1C) = (rand() & 0x1F) + 0x23; + } else { + if (v1 == 2) { + func_800183E0((s32)&D_80194934); + } + *(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) - 1; + } + } + if (func_80029178(0x12B) & 0xFF) { + func_800183E0((s32)&D_80194B84); + *(s32 *)(a0 + 0x1C) = 0; + } + if (func_80029178(0x12C) & 0xFF) { + func_800183E0((s32)&D_80194DD4); + *(s32 *)(a0 + 0x1C) = 0; + } + if (func_80029178(0x130) & 0xFF) { + func_800183E0((s32)&D_80195024); + *(s32 *)(a0 + 0x1C) = 0; + } +} + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017D924); + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017DA50); + + +extern void (*D_80184C34[])(void); + +void func_8017DCDC(void *a0) { + D_80184C34[*(u16 *)((s32)a0 + 0x2)](); +} + + +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern s32 func_8012A828(void *a0, void *a1); + +void func_8017DD18(void *arg0) { + s16 hval; + s32 temp; + + hval = *(s16 *)((char *)arg0 + 0x10A); + if (hval & 0x8000) { + *(s16 *)(*(s32 *)((char *)arg0 + 0x20) + 0x12) = + func_80012ABC(*(s16 *)(*(s32 *)((char *)arg0 + 0x20) + 0x12), hval & 0xFFF, 4); + } + temp = *(s32 *)((char *)arg0 + 0xF8); + if (temp != 0 && *(s32 *)((char *)arg0 + 0x90) != temp) { + ((void (*)(s32, s32))func_8012A828)((s32)arg0, temp); + *(s32 *)((char *)arg0 + 0xF8) = 0; + } +} + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017DDA0); + +extern u8 D_80184C6C[]; +extern u8 D_80184C74[]; +extern s32 D_80184C80; +extern s32 D_80184C84; +extern s32 func_8017FED4(); + +void func_8017DE80(s32 param_1, s16 param_2) +{ + s32 buf[4]; + u16 pos[4]; + s32 ret; + s32 t; + + func_800139C8(param_2, D_80184C6C, pos); + pos[0] = pos[0] + *(u16 *)(param_1 + 6); + t = rand(); + pos[1] = pos[1] + (*(u16 *)(param_1 + 0xA) - ((t & 0xF) + 0x38)); + pos[2] = pos[2] + *(u16 *)(param_1 + 0xE); + pos[3] = 5; + func_8001382C(param_2, D_80184C74, buf); + buf[3] = D_80184C80; + ret = func_8017FED4(pos, buf, D_80184C84); + if (ret != 0) { + *(s16 *)(*(s32 *)(ret + 0x20) + 0x18) = 0x124; + } +} + + + +extern s32 D_801A6B40; + void func_8017DF68(void) { + s32 i = 0x4FB0; + do { + *(s32 *)((s32)&D_801A6B40 + i) = 0; + i -= 0x50; + } while (i >= 0); + } + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017DF8C); + +void func_8017E26C() { + __asm__ __volatile__(".set\tnoreorder\n" + "addiu $sp, $sp, -88\n" + "lui $a0, %hi(D_801AC280)\n" + "addiu $a0, $a0, %lo(D_801AC280)\n" + "sw $ra, 80($sp)\n" + "jal func_800547D8\n" + " addiu $a1, $sp, 16\n" + "jal func_80052E38\n" + " addiu $a0, $sp, 16\n" + "addiu $t9, $sp, 48\n" + "addiu $t3, $sp, 56\n" + "addiu $t8, $sp, 68\n" + "addiu $t6, $zero, 32\n" + "lui $t2, 255\n" + "ori $t2, $t2, 65535\n" + "lui $t5, 65280\n" + "lui $t1, %hi(D_801A6B40)\n" + "addiu $t1, $t1, %lo(D_801A6B40)\n" + "addu $a2, $zero, $zero\n" + "lui $v1, %hi(D_800A6610)\n" + "addiu $v1, $v1, %lo(D_800A6610)\n" + "lui $v0, %hi(D_800B9A02)\n" + "lhu $v0, %lo(D_800B9A02)($v0)\n" + "lui $t0, %hi(D_800A5E60)\n" + "lw $t0, %lo(D_800A5E60)($t0)\n" + "sll $v0, $v0, 14\n" + "addu $t7, $v0, $v1\n" + "addiu $a3, $t0, 18\n" + ".L8017E2D8:\n" + "lw $v0, 0($t1)\n" + "nop\n" + "beqz $v0, .L8017E670\n" + " nop\n" + "lui $at, %hi(D_801A6B4A)\n" + "addu $at, $at, $a2\n" + "lhu $v0, %lo(D_801A6B4A)($at)\n" + "nop\n" + "sh $v0, 48($sp)\n" + "lui $at, %hi(D_801A6B4E)\n" + "addu $at, $at, $a2\n" + "lhu $v0, %lo(D_801A6B4E)($at)\n" + "nop\n" + "sh $v0, 50($sp)\n" + "lui $at, %hi(D_801A6B52)\n" + "addu $at, $at, $a2\n" + "lhu $v0, %lo(D_801A6B52)($at)\n" + "nop\n" + "sh $v0, 52($sp)\n" + "lui $at, %hi(D_801A6B6E)\n" + "addu $at, $at, $a2\n" + "lhu $v0, %lo(D_801A6B6E)($at)\n" + "nop\n" + "sh $v0, 56($sp)\n" + "lui $at, %hi(D_801A6B72)\n" + "addu $at, $at, $a2\n" + "lhu $v0, %lo(D_801A6B72)($at)\n" + "nop\n" + "sh $v0, 58($sp)\n" + "lui $at, %hi(D_801A6B76)\n" + "addu $at, $at, $a2\n" + "lhu $v0, %lo(D_801A6B76)($at)\n" + "nop\n" + "sh $v0, 60($sp)\n" + "lui $at, %hi(D_801A6B48)\n" + "addu $at, $at, $a2\n" + "lw $v0, %lo(D_801A6B48)($at)\n" + "lui $at, %hi(D_801A6B78)\n" + "addu $at, $at, $a2\n" + "lw $a0, %lo(D_801A6B78)($at)\n" + "lui $at, %hi(D_801A6B4C)\n" + "addu $at, $at, $a2\n" + "lw $v1, %lo(D_801A6B4C)($at)\n" + "lui $at, %hi(D_801A6B7C)\n" + "addu $at, $at, $a2\n" + "lw $a1, %lo(D_801A6B7C)($at)\n" + "addu $v0, $v0, $a0\n" + "lui $at, %hi(D_801A6B48)\n" + "addu $at, $at, $a2\n" + "sw $v0, %lo(D_801A6B48)($at)\n" + "lui $at, %hi(D_801A6B50)\n" + "addu $at, $at, $a2\n" + "lw $v0, %lo(D_801A6B50)($at)\n" + "addu $v1, $v1, $a1\n" + "lui $at, %hi(D_801A6B4C)\n" + "addu $at, $at, $a2\n" + "sw $v1, %lo(D_801A6B4C)($at)\n" + "lui $at, %hi(D_801A6B80)\n" + "addu $at, $at, $a2\n" + "lw $v1, %lo(D_801A6B80)($at)\n" + "lui $at, %hi(D_801A6B44)\n" + "addu $at, $at, $a2\n" + "lw $a0, %lo(D_801A6B44)($at)\n" + "addu $v0, $v0, $v1\n" + "lui $at, %hi(D_801A6B50)\n" + "addu $at, $at, $a2\n" + "sw $v0, %lo(D_801A6B50)($at)\n" + "bnez $a0, .L8017E46C\n" + " addiu $v0, $a0, -1\n" + "lui $at, %hi(D_801A6B6C)\n" + "addu $at, $at, $a2\n" + "lw $v0, %lo(D_801A6B6C)($at)\n" + "lui $at, %hi(D_801A6B78)\n" + "addu $at, $at, $a2\n" + "lw $v1, %lo(D_801A6B78)($at)\n" + "lui $at, %hi(D_801A6B7C)\n" + "addu $at, $at, $a2\n" + "lw $a0, %lo(D_801A6B7C)($at)\n" + "lui $at, %hi(D_801A6B80)\n" + "addu $at, $at, $a2\n" + "lw $a1, %lo(D_801A6B80)($at)\n" + "addu $v0, $v0, $v1\n" + "lui $at, %hi(D_801A6B6C)\n" + "addu $at, $at, $a2\n" + "sw $v0, %lo(D_801A6B6C)($at)\n" + "lui $at, %hi(D_801A6B70)\n" + "addu $at, $at, $a2\n" + "lw $v0, %lo(D_801A6B70)($at)\n" + "lui $at, %hi(D_801A6B74)\n" + "addu $at, $at, $a2\n" + "lw $v1, %lo(D_801A6B74)($at)\n" + "addu $v0, $v0, $a0\n" + "addu $v1, $v1, $a1\n" + "lui $at, %hi(D_801A6B70)\n" + "addu $at, $at, $a2\n" + "sw $v0, %lo(D_801A6B70)($at)\n" + "lui $at, %hi(D_801A6B74)\n" + "addu $at, $at, $a2\n" + "sw $v1, %lo(D_801A6B74)($at)\n" + "j .L8017E478\n" + " nop\n" + ".L8017E46C:\n" + "lui $at, %hi(D_801A6B44)\n" + "addu $at, $at, $a2\n" + "sw $v0, %lo(D_801A6B44)($at)\n" + ".L8017E478:\n" + "lui $at, %hi(D_801A6B78)\n" + "addu $at, $at, $a2\n" + "lw $v0, %lo(D_801A6B78)($at)\n" + "lui $at, %hi(D_801A6B84)\n" + "addu $at, $at, $a2\n" + "lw $a0, %lo(D_801A6B84)($at)\n" + "lui $at, %hi(D_801A6B7C)\n" + "addu $at, $at, $a2\n" + "lw $v1, %lo(D_801A6B7C)($at)\n" + "lui $at, %hi(D_801A6B88)\n" + "addu $at, $at, $a2\n" + "lw $a1, %lo(D_801A6B88)($at)\n" + "addu $v0, $v0, $a0\n" + "lui $at, %hi(D_801A6B78)\n" + "addu $at, $at, $a2\n" + "sw $v0, %lo(D_801A6B78)($at)\n" + "lui $at, %hi(D_801A6B80)\n" + "addu $at, $at, $a2\n" + "lw $v0, %lo(D_801A6B80)($at)\n" + "addu $v1, $v1, $a1\n" + "lui $at, %hi(D_801A6B7C)\n" + "addu $at, $at, $a2\n" + "sw $v1, %lo(D_801A6B7C)($at)\n" + "lui $at, %hi(D_801A6B8C)\n" + "addu $at, $at, $a2\n" + "lw $v1, %lo(D_801A6B8C)($at)\n" + "lui $at, %hi(D_801A6B78)\n" + "addu $at, $at, $a2\n" + "lw $a0, %lo(D_801A6B78)($at)\n" + "addu $v0, $v0, $v1\n" + "lui $at, %hi(D_801A6B80)\n" + "addu $at, $at, $a2\n" + "sw $v0, %lo(D_801A6B80)($at)\n" + "blez $a0, .L8017E524\n" + " nop\n" + "lui $at, %hi(D_801A6B48)\n" + "addu $at, $at, $a2\n" + "lw $v1, %lo(D_801A6B48)($at)\n" + "lui $at, %hi(D_801A6B54)\n" + "addu $at, $at, $a2\n" + "lw $v0, %lo(D_801A6B54)($at)\n" + "j .L8017E544\n" + " slt $v0, $v0, $v1\n" + ".L8017E524:\n" + "lui $at, %hi(D_801A6B48)\n" + "addu $at, $at, $a2\n" + "lw $v0, %lo(D_801A6B48)($at)\n" + "lui $at, %hi(D_801A6B54)\n" + "addu $at, $at, $a2\n" + "lw $v1, %lo(D_801A6B54)($at)\n" + "nop\n" + "slt $v0, $v0, $v1\n" + ".L8017E544:\n" + "beqz $v0, .L8017E558\n" + " nop\n" + "lui $at, %hi(D_801A6B40)\n" + "addu $at, $at, $a2\n" + "sw $zero, %lo(D_801A6B40)($at)\n" + ".L8017E558:\n" + "lw $v0, 0($t1)\n" + "nop\n" + "beqz $v0, .L8017E670\n" + " nop\n" + "lwc2 $0, 0($t9)\n" + "lwc2 $1, 4($t9)\n" + "lwc2 $2, 0($t3)\n" + "lwc2 $3, 4($t3)\n" + "lwc2 $4, 0($t3)\n" + "lwc2 $5, 4($t3)\n" + "nop\n" + "nop\n" + "rtpt\n" + "addiu $v0, $sp, 64\n" + "cfc2 $t4, $31\n" + "nop\n" + "sw $t4, 0($v0)\n" + "lui $v1, 32645\n" + "lw $v0, 64($sp)\n" + "ori $v1, $v1, 57344\n" + "and $v0, $v0, $v1\n" + "bnez $v0, .L8017E670\n" + " addiu $v1, $t0, 12\n" + "addiu $v0, $t0, 20\n" + "swc2 $12, 0($v1)\n" + "swc2 $13, 0($v0)\n" + "addiu $v1, $sp, 72\n" + "addiu $v0, $sp, 76\n" + "swc2 $17, 0($t8)\n" + "swc2 $18, 0($v1)\n" + "swc2 $19, 0($v0)\n" + "lw $v1, 68($sp)\n" + "lw $v0, 72($sp)\n" + "nop\n" + "addu $a1, $v1, $v0\n" + "bgez $a1, .L8017E5F0\n" + " lui $v1, 57600\n" + "addiu $a1, $a1, 7\n" + ".L8017E5F0:\n" + "ori $v1, $v1, 32\n" + "addiu $v0, $zero, 5\n" + "sb $v0, -15($a3)\n" + "addiu $v0, $zero, 82\n" + "sb $v0, -7($a3)\n" + "addiu $v0, $zero, 224\n" + "sb $v0, -9($a3)\n" + "addiu $v0, $zero, 128\n" + "sb $v0, -8($a3)\n" + "addiu $v0, $zero, 8\n" + "sb $v0, -2($a3)\n" + "addiu $v0, $zero, 64\n" + "sw $v1, -14($a3)\n" + "sb $t6, -10($a3)\n" + "sb $v0, -1($a3)\n" + "sb $t6, 0($a3)\n" + "addiu $a3, $a3, 24\n" + "sra $v1, $a1, 3\n" + "sll $v1, $v1, 2\n" + "addu $v1, $v1, $t7\n" + "lw $a0, 0($t0)\n" + "lw $v0, 0($v1)\n" + "and $a0, $a0, $t5\n" + "and $v0, $v0, $t2\n" + "or $a0, $a0, $v0\n" + "sw $a0, 0($t0)\n" + "and $a0, $t0, $t2\n" + "lw $v0, 0($v1)\n" + "addiu $t0, $t0, 24\n" + "and $v0, $v0, $t5\n" + "or $v0, $v0, $a0\n" + "sw $v0, 0($v1)\n" + ".L8017E670:\n" + "addiu $t1, $t1, 80\n" + "lui $v0, %hi(D_801ABB40)\n" + "addiu $v0, $v0, %lo(D_801ABB40)\n" + "slt $v0, $t1, $v0\n" + "bnez $v0, .L8017E2D8\n" + " addiu $a2, $a2, 80\n" + "lui $at, %hi(D_800A5E60)\n" + "sw $t0, %lo(D_800A5E60)($at)\n" + "lw $ra, 80($sp)\n" + "addiu $sp, $sp, 88\n" + ".set\treorder\n" + ); +} + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E6A0); + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E6E0); + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017E960); + +extern u8 D_801ABB40[]; +extern u8 D_801ABB44[]; +extern void func_80016714(void *a0, s32 a1); +extern s32 D_801A6B40; + +void func_8017EA74(void) { + s32 p; /* s0 */ + s32 i; /* s1 */ + s32 end; /* s2 */ + s32 one; /* s3 */ + s32 tbl; + s32 v; + s32 lim; + + one = 1; + p = (s32)D_801ABB40; + i = 0; + end = p + 0x5F0; + do { + if (*(s32 *)p != 0) { + tbl = *(s32 *)(D_801ABB44 + i); + v = *(u16 *)tbl; + if (v == one) { + func_80016714((void *)tbl, 0x84); + } else if (tbl != 0) { + func_80016714((void *)tbl, 0x38); + } + *(s32 *)p = 0; + } + p += 0x4C; + i += 0x4C; + } while (p < end); + lim = 0x4FB0; + do { + *(s32 *)((s32)((u8 *)&D_801A6B40) + lim) = 0; + lim -= 0x50; + } while (lim >= 0); +} + + + +extern s32 func_8012A828(void *a0, void *a1); + extern s32 D_80183A64; + void func_8017EB30(void *arg0) { + ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xCC), &D_80183A64); + } + + + +extern s32 func_8012A828(void *a0, void *a1); + extern s32 D_80183FF4; + void func_8017EB5C(void *arg0) { + ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xCC), &D_80183FF4); + } + + + +extern s32 func_8012A828(void *a0, void *a1); + extern s32 D_80183DFC; + void func_8017EB88(void *arg0) { + ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xCC), &D_80183DFC); + } + + +void func_8017EBB4(void *a0) { + *(short *)(*(int *)((char *)a0 + 0xcc) + 0x10a) = -29952; + } + + +void func_8017EBC4(void *a0) { + *(short *)(*(int *)((char *)a0 + 0xcc) + 0x10a) = -29696; + } + + +void func_8017EBD4(void *a0) { + *(short *)(*(int *)((char *)a0 + 0xcc) + 0x10a) = -29440; + } + + +void func_8017EBE4(void *a0) { + *(short *)(*(int *)((char *)a0 + 0xcc) + 0x10a) = -29184; + } + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017EBF4); + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017EC48); + +extern s32 func_8012A828(void *a0, void *a1); +extern s32 D_801849AC; +extern s32 D_8018430C; + +void func_8017EC90(void *arg0) { + /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every + LATER function in this TU, which blocks a byte-true decl of a different type. + Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ + extern s32 D_80184174; + s32 *s0 = M2C_FIELD(arg0, s32 *, 0xD0); + ((void (*)(s32, s32))func_8012A828)(s0, &D_80184174); + *(s32 *)((s32)s0 + 0xDC) = (s32)&D_801849AC; + *(s32 *)((s32)s0 + 0x1C) = 0; + *(s32 *)((s32)s0 + 0xEC) = (s32)&D_8018430C; +} + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017ECE0); + + +extern s32 func_8012A828(void *a0, void *a1); + +void func_8017ED48(void *arg0) { + + extern s32 D_80184174; + extern s32 D_801849CC; + extern s32 D_801840EC; + s32 *s0 = M2C_FIELD(arg0, s32 *, 0xD0); + ((void (*)(s32, s32))func_8012A828)(s0, &D_80184174); + *(s32 *)((s32)s0 + 0xDC) = (s32)&D_801849CC; + *(s32 *)((s32)s0 + 0x1C) = 0; + *(s32 *)((s32)s0 + 0xEC) = (s32)&D_801840EC; +} + + + +extern s32 func_8012A828(void *a0, void *a1); + extern s32 D_801840EC; + void func_8017ED98(void *arg0) { + ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xD0), &D_801840EC); + } + + +extern s32 func_8012C51C(void *arg0, s32 arg1); + +typedef struct { + s16 f0; + s16 f1; + s16 f2; + s16 f3; + s16 f4; + s16 f5; + s16 f6; + s16 f7; + s32 f8; +} St_8017EDC4; + +void func_8017EDC4(s32 arg0) { + St_8017EDC4 st; + + st.f3 = 0x337; + st.f4 = 6; + st.f0 = -0x100; + st.f1 = -0x202; + st.f5 = 0; + st.f6 = 0; + st.f7 = 0; + st.f8 = 0; + st.f2 = 0x60; + func_8012C51C(&st, arg0); +} + + +extern s32 func_8012C51C(void *arg0, s32 arg1); + + + +void func_8017EE20(s32 arg0) { + St_8017EDC4 st; + + st.f3 = 0x337; + st.f4 = 7; + st.f0 = 0x120; + st.f5 = 0; + st.f6 = 0; + st.f7 = 0; + st.f8 = 0; + st.f1 = -0x202; + st.f2 = 0; + func_8012C51C(&st, arg0); +} + + +INCLUDE_ASM("asm/ov_SC04_016/nonmatchings/ov_SC04_016_jr_8017BEBC", func_8017EE78); + +extern s32 D_80183A0C; +extern void func_800D1724(s32); + +void func_8017EF58(void *a0) { + ((void (*)(s32 *))func_800D1724)(&D_80183A0C); + *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; +} + + +void func_8017EF9C(void) { +} + +extern s32 func_8012A828(void *a0, void *a1); +void func_8017EFA4(s32 a0) { + extern s32 D_8018435C; + extern s32 D_80184174; + extern void (*D_80184404[])(void); + s32 *s0 = (s32 *)a0; + s32 v1; + v1 = *(s32 *)((s32)s0 + 0x90); + if (v1 == (s32)&D_8018435C && *(s16 *)((s32)s0 + 0x98) == 0) { + ((void (*)(s32, s32))func_8012A828)((s32)s0, (s32)&D_80184404); + v1 = *(s32 *)((s32)s0 + 0x90); + } + if (v1 == (s32)&D_80184174 && (*(s32 *)((s32)s0 + 0x94) == 0 || *(s32 *)((s32)s0 + 0x94) == 8)) { + func_8002D4C8(0xB8F, 0); + } + func_8017DDA0(s0); +} + + diff --git a/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c b/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c index 3c0a2f80a0..bead5bab5d 100644 --- a/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c +++ b/src/ov_SC04_018/ov_SC04_018_jr_8017AE2C.c @@ -6043,7 +6043,60 @@ DEFINE_func_8018178C() /* dedup: shared engine-core @0x8018178C (src/shared) */ INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_801817B8); -INCLUDE_ASM("asm/ov_SC04_018/nonmatchings/ov_SC04_018_jr_8017AE2C", func_80181804); +#include "common.h" + +extern s32 func_80185BE0(s32 a0); +extern s32 func_80184FA4(s32); +extern void func_80184ED4(s32, s32, s32, s32); +extern void func_80184CB8(s32*, s32); +extern u8 D_801B66C0[]; +extern u8 D_801B6670[]; +extern u8 D_801B662C[]; +extern short D_80191B34; + +void func_80181804(void *a0) +{ + switch (*(u16 *)((s32)a0 + 0x34)) { + case 0: + if (func_80185BE0(0xD) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x34) = 1; + func_80184ED4((s32)a0, (s32)D_801B66C0, 1, 0x80); + return; + case 1: + func_80185BE0(0xD); + if (func_80184FA4((s32)a0) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x34) = 2; + func_80184ED4((s32)a0, (s32)D_801B6670, 1, 0x80); + return; + case 2: + if (func_80184FA4((s32)a0) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x34) = 3; + *(s32 *)((s32)a0 + 0x1C) = 0x20; + return; + case 3: + if (func_80185BE0(3) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x34) = 4; + func_80184ED4((s32)a0, (s32)D_801B662C, 1, 0x80); + return; + case 4: + func_80185BE0(3); + if (func_80184FA4((s32)a0) == 0) { + return; + } + *(u16 *)((s32)a0 + 0x2) = 1; + func_80184CB8((s32 *)a0, (s32)&D_80191B34); + return; + } +} + extern void (*D_80191BDC[])(void); diff --git a/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c b/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c index 8ba8ef3164..b384dc9d77 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c @@ -5634,7 +5634,46 @@ void func_80180B28(s32 a0) { } -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_80180B70); +extern void func_80019064(void *a0); +extern void func_80149020(s32 *a0); +extern void func_80147324(s32 a0); +extern int func_801511E0(int a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_80146CA0(void *a0); +extern u8 D_80062BF4[]; +extern M2C_UNK D_800D5880; +extern s32 D_800D58AC; + +void func_80180B70(s32 a0) +{ + s32 s1; + s32 s0; + + s1 = a0; + func_80019064(D_80062BF4); + func_80149020((s32 *)s1); + func_80147324(0x451); + func_801511E0(s1); + if ((s16)func_80012A60(*(s16 *)(*(s32 *)(s1 + 0x20) + 0x12), *(s16 *)(s1 + 0xF4)) >= 0x401) { + func_80154274((s32 *)s1, (s32)&D_800D5880); + } else { + func_80154274((s32 *)s1, (s32)&D_800D58AC); + } + s0 = 1; + func_80154A74(s1, 0x16); + func_80149020((s32 *)s1); + func_80146994(0x42, s1, 0, 0); + func_80146A6C(0x42, (void *)s1, 0x20, 0, 0, s0, 0); + func_80146A6C(0x42, (void *)s1, 0, 0, 0x20, s0, 0); + func_80146A6C(0x42, (void *)s1, -0x20, 0, 0, s0, 0); + func_80146A6C(0x42, (void *)s1, 0, 0, -0x20, s0, 0); + func_80146CA0((void *)s1); +} + void func_80180CC4(s32 arg0) { diff --git a/src/ov_SC05_007/ov_SC05_007_jr_8017BEBC.c b/src/ov_SC05_007/ov_SC05_007_jr_8017BEBC.c index 13cc20465a..1c959d2a15 100644 --- a/src/ov_SC05_007/ov_SC05_007_jr_8017BEBC.c +++ b/src/ov_SC05_007/ov_SC05_007_jr_8017BEBC.c @@ -4574,7 +4574,21 @@ void func_8017EF48(s32 arg0) { } -INCLUDE_ASM("asm/ov_SC05_007/nonmatchings/ov_SC05_007_jr_8017BEBC", func_8017F020); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_8019292C[]; + +s32 aF8017F020(s32 arg0) __asm__("func_8017F020"); +s32 aF8017F020(s32 arg0) { + if (*(s32 *)(arg0 + 0xDC) & 1) { + return 0; + } + if (func_8012D5E4(arg0, (s32)&D_8019292C, (s32)&D_8019292C + 8, 0x13) != 1) { + return 0; + } + *(s32 *)(arg0 + 0xDC) |= 1; + return 1; +} + typedef struct { s32 a; diff --git a/src/ov_SC06_020/ov_SC06_020_jr_80180B04.c b/src/ov_SC06_020/ov_SC06_020_jr_80180B04.c index 0a7a141e84..d507becaba 100644 --- a/src/ov_SC06_020/ov_SC06_020_jr_80180B04.c +++ b/src/ov_SC06_020/ov_SC06_020_jr_80180B04.c @@ -4539,7 +4539,22 @@ s32 aF8018353C(s32 a0, s16 a1) } -INCLUDE_ASM("asm/ov_SC06_020/nonmatchings/ov_SC06_020_jr_80180B04", func_801835BC); +s32 func_801835BC(s32 param_1, s32 a1, s32 a2) +{ + s32 e; + + if (func_8012BEE8(param_1) != 0) { + e = func_80132EF4(param_1, 0x22); + if (e != 0) { + *(u16 *)(e + 0x34) = 0x7FFF; + *(u16 *)(*(s32 *)(e + 0x20) + 0x2C) = 0xC006; + *(s32 *)(e + 0x14) = 0xFFFE0000; + } + return 1; + } + return 0; +} + extern void (*D_8019EDB0[])(void); diff --git a/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c b/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c index 7aad5ae8dd..df97b0dbb8 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c @@ -3220,7 +3220,51 @@ void func_801815CC(s32 param_1) { void func_8018165C(void) { } -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80181664); +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern void func_80180CB0(s32 a0); + +void func_80181664(s32 param_1) +{ + s32 v1; + + v1 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(param_1 + 0x20) = v1; + if (v1 == 0) { + ((void (*)(s32))func_8012CAE4)(param_1); + return; + } + + *(u16 *)v1 = 1; + *(u16 *)(*(s32 *)(param_1 + 0x20) + 2) = 9; + + switch (*(s16 *)(param_1 + 0x70)) { + case 0: + *(s32 *)(param_1 + 0x6C) = func_8012C658(0x2F9, 2, *(s32 *)(param_1 + 0x64)); + break; + + case 1: + *(s32 *)(param_1 + 0x6C) = func_8012C658(0x2F9, 3, *(s32 *)(param_1 + 0x64)); + break; + + case 2: + case 3: + *(s32 *)(param_1 + 0x6C) = + func_8012C658(0x2F9, *(s16 *)(param_1 + 0x70) + 2, param_1); + break; + + case 4: + case 5: + *(s32 *)(param_1 + 0xD0) = func_8012C658(0x2F9, 6, param_1); + /* fall through */ + case 6: + default: + func_80180CB0(param_1); + break; + } +} + INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80181744); diff --git a/src/ov_SC06_024/ov_SC06_024_jr_801867DC.c b/src/ov_SC06_024/ov_SC06_024_jr_801867DC.c index 993253a05d..656eb9f111 100644 --- a/src/ov_SC06_024/ov_SC06_024_jr_801867DC.c +++ b/src/ov_SC06_024/ov_SC06_024_jr_801867DC.c @@ -3046,7 +3046,16 @@ void func_80186D6C(s32 a0) { } -INCLUDE_ASM("asm/ov_SC06_024/nonmatchings/ov_SC06_024_jr_801867DC", func_80186DBC); +extern void func_80186E94(); + +void func_80186DBC(s32 a0) { + *(u16 *)(a0 + 0x52) = 0; + *(u32 *)(a0 + 0xE0) |= 0x28; + *(u16 *)(a0 + 0xAE) |= 1; + *(u32 *)(a0 + 0xC4) |= 4; + func_80186E94(a0); +} + extern void func_8012E8A8(u8 *a0); extern void func_8018956C(s32 a0, s32 a1); diff --git a/src/ov_SC06_029/ov_SC06_029_jr_8017C954.c b/src/ov_SC06_029/ov_SC06_029_jr_8017C954.c index 99fe5dcd02..166466259a 100644 --- a/src/ov_SC06_029/ov_SC06_029_jr_8017C954.c +++ b/src/ov_SC06_029/ov_SC06_029_jr_8017C954.c @@ -5360,7 +5360,166 @@ void func_80182DB0(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_80182ED8); +extern void func_80183478(); +extern void func_8002D4C8(); +extern void func_8012F214(); +extern void func_80183534(); +extern s32 func_80013478(s32 a0, s32 a1); +extern s32 D_801DDB28; +extern s32 D_801DDB3C; +extern u16 D_800B99DA; +extern u8 D_80126B5C; +extern u8 D_80190858[]; +extern u8 D_801908D8[]; +extern s32 D_801DFE54[]; +extern s32 D_801DFDD4[]; + +void func_80182ED8(s32 arg0) { + s32 val; + s16 top[4]; + s16 bot[4]; + s32 *q; + s32 ctr; + s32 *p; + u8 *p8; + s32 r; + s32 *w; + s32 t; + s32 dd4; + s32 pbase; + u16 vol; + + switch (*(u16 *)(arg0 + 0x34)) { + case 0: + *(u16 *)(arg0 + 0x100) += 0x20; + if (*(s16 *)(arg0 + 0x100) >= 0x121) { + *(u16 *)(arg0 + 0x100) = 0x120; + *(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1; + func_80183478(arg0, 1); + } + break; + case 1: + if (*(s32 *)(arg0 + 0xE0) != 0) { + func_801834D8(arg0, 0); + *(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1; + } + if ((*(s16 *)(D_801DDB28 + 0x100) == 2) && ((D_800B99DA & 0x7F) == 0)) { + func_801834D8(arg0, 0); + *(u16 *)(arg0 + 0x34) = 4; + } + break; + case 2: + *(u16 *)(arg0 + 0xFE) += 0x20; + if (*(s16 *)(arg0 + 0xFE) >= 0x121) { + *(u16 *)(arg0 + 0xFE) = 0x120; + *(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1; + func_801834D8(arg0, 0); + func_801834D8(arg0, 1); + } + break; + case 3: + *(u16 *)(arg0 + 2) = 2; + if (*(s16 *)(arg0 + 0x70) == 3) { + func_8002D4C8(4, 0x9CF); + } + break; + case 4: + *(u16 *)(arg0 + 0xFE) += 0x20; + if (*(s16 *)(arg0 + 0xFE) >= 0x121) { + *(u16 *)(arg0 + 0xFE) = 0; + *(u16 *)(arg0 + 0x100) = 0; + *(u16 *)(arg0 + 0x34) = 0; + if (*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x64) == D_801DDB3C) { + if (*(s32 *)(arg0 + 8) == 0) { + *(s16 *)(arg0 + 0xA) = 0x200; + } else { + *(s16 *)(arg0 + 0xA) = 0; + } + } else { + if (*(s32 *)(arg0 + 8) == 0) { + *(s16 *)(arg0 + 0xA) = -0x200; + } else { + *(s16 *)(arg0 + 0xA) = 0; + } + } + func_80183478(arg0, 0); + func_801834D8(arg0, 1); + } + break; + } + + w = (s32 *)(arg0 + 0xE4); + ctr = 0; + t = *(s16 *)(arg0 + 0x70); + p8 = D_80190858 + (t << 5); + r = (s32)&D_801DFE54[t * 4]; + dd4 = (s32)D_801DFDD4; + pbase = dd4 + 4; + p = (s32 *)(pbase + (t << 5)); + q = (s32 *)(dd4 + (t << 5)); + + while (ctr < 4) { + func_8012F214(*(s32 *)(arg0 + 0x64), (s32)p8, (s32)top); + bot[0] = top[0]; + bot[1] = top[1]; + bot[2] = top[2]; + top[1] += *(u16 *)(arg0 + 0xFE) + *(u16 *)(arg0 + 0xA); + bot[1] += *(u16 *)(arg0 + 0x100) + *(u16 *)(arg0 + 0xA); + if (*q != 0) { + *(s16 *)(*q + 8) = top[0]; + *(s16 *)(*q + 10) = top[1]; + *(s16 *)(*q + 12) = top[2]; + } + if (*p != 0) { + *(s16 *)(*p + 8) = bot[0]; + *(s16 *)(*p + 10) = bot[1]; + *(s16 *)(*p + 12) = bot[2]; + } + func_80183534(arg0, (s32)top, (s32)bot, (s32)w); + func_80183848(arg0, (s32)top, (s32)bot); + top[0] = (top[0] + bot[0]) >> 1; + top[1] = (top[1] + bot[1]) >> 1; + top[2] = (top[2] + bot[2]) >> 1; + *(s32 *)r = func_80013478((s32)&D_80126B5C, (s32)top); + r += 4; + ctr++; + p8 += 8; + p += 2; + q += 2; + w++; + } + + func_8012F214(*(s32 *)(arg0 + 0x64), + (s32)(D_801908D8 + (*(s16 *)(arg0 + 0x70) << 3)), (s32)top); + bot[0] = top[0]; + bot[1] = top[1]; + bot[2] = top[2]; + top[1] += *(u16 *)(arg0 + 0xFE) + *(u16 *)(arg0 + 0xA); + bot[1] += *(u16 *)(arg0 + 0x100) + *(u16 *)(arg0 + 0xA); + func_80183848(arg0, (s32)top, (s32)bot); + + if ((*(u16 *)(arg0 + 0x34) != 3) && (*(s16 *)(arg0 + 0x70) == 3)) { + val = D_801DFE54[0]; + for (ctr = 1; ctr < 0x10; ctr++) { + if (D_801DFE54[ctr] < val) { + val = D_801DFE54[ctr]; + } + } + val -= 0x4000; + if (val <= 0) { + func_8002D4C8(0x9CF, 0x107F); + } else { + vol = 0x7F; + if (val <= 0xFFFFF) { + vol -= (val * 111) / 1048576; + } else { + vol = 0x10; + } + func_8002D4C8(0x9CF, vol | 0x1000); + } + } +} + INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_801833FC); 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 a57c4d34ce..9252b2e98a 100644 --- a/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c +++ b/src/ov_SC06_030/ov_SC06_030_jr_8017C8D0.c @@ -4859,7 +4859,71 @@ void func_80181938(void *a0) { } -INCLUDE_ASM("asm/ov_SC06_030/nonmatchings/ov_SC06_030_jr_8017C8D0", func_80181A80); +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); diff --git a/src/ov_SC06_032/ov_SC06_032_jr_80182890.c b/src/ov_SC06_032/ov_SC06_032_jr_80182890.c index 1c98bd9330..f658029b05 100644 --- a/src/ov_SC06_032/ov_SC06_032_jr_80182890.c +++ b/src/ov_SC06_032/ov_SC06_032_jr_80182890.c @@ -9326,7 +9326,36 @@ void func_8018CD54(s32 a0) { } -INCLUDE_ASM("asm/ov_SC06_032/nonmatchings/ov_SC06_032_jr_80182890", func_8018CDB4); +extern void func_8012C1B8(void); +extern void func_8012CAE4(s32 a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_8018CDB4(s32 param_1) { + + extern s32 D_801CC5A8; + extern u8 D_80193650[]; + + s32 v0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)(param_1 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(param_1); + } else { + func_8001C214(v0, (s32)&D_801CC5A8); + func_8012A828(param_1, D_80193650); + *(s16 *)(param_1 + 2) = 1; + *(s32 *)(param_1 + 0x1C) = 0x40; + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = + *(u16 *)(*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x10); + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = + *(u16 *)(*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x12); + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = + *(u16 *)(*(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x14); + } +} + extern u8 D_801CA8D4[]; extern u8 D_801CA8E0[]; diff --git a/src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c b/src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c index 4f6af5aa1b..64feafcbcb 100644 --- a/src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c +++ b/src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c @@ -5063,7 +5063,32 @@ void func_80180B54(void *a0) { INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017BEBC", func_80180B90); -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017BEBC", func_80180C2C); +void func_80180C2C(s32 param_1) +{ + extern u16 D_801AAD8C; + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern u16 D_80126BE2; + extern u16 D_80126BE4; + extern u8 D_80126BE0[]; + extern void func_8012E014(s32 a0); + + u16 t; + + if (D_801AAD8C == 3) { + t = D_801AAD8C + 1; + *(u16 *)((s32)param_1 + 0x34) = 0; + D_801AAD8C = t; + } + if (*(u8 *)((s32)param_1 + 0x74) != 0) { + func_8012E014(param_1); + *(u16 *)&D_80126BE0[0] = D_80126B5E; + D_80126BE2 = D_80126B62; + D_80126BE4 = D_80126B66; + } +} + extern s32 func_8012C1B8(void); extern void func_8012CAE4(void *a0); diff --git a/src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c b/src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c index 5aa393d305..732d42e1eb 100644 --- a/src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c +++ b/src/ov_SC07_002/ov_SC07_002_jr_8017C8D0.c @@ -5463,7 +5463,24 @@ void func_8018247C(void) } -INCLUDE_ASM("asm/ov_SC07_002/nonmatchings/ov_SC07_002_jr_8017C8D0", func_80182538); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern s32 rand(void); + +void func_80182538(s32 param_1) +{ + s32 p; + s32 t; + + p = func_80132EF4(param_1, 0x72); + if (p != 0) { + t = *(u16 *)(p + 6) - 0x30 + rand() % 96; + *(u16 *)(p + 6) = t; + *(u16 *)(p + 0xA) = *(u16 *)(param_1 + 0x52) + (*(u16 *)(p + 0xA) + 0x80); + t = *(u16 *)(p + 0xE) - 0x30 + rand() % 96; + *(u16 *)(p + 0xE) = t; + } +} + extern void func_8012AD44(s32 *a0, s16 a1); extern u16 D_8018A464[]; diff --git a/src/ov_SC07_006/ov_SC07_006_jr_801457A4.c b/src/ov_SC07_006/ov_SC07_006_jr_801457A4.c index 6191d73b21..8bd63165ca 100644 --- a/src/ov_SC07_006/ov_SC07_006_jr_801457A4.c +++ b/src/ov_SC07_006/ov_SC07_006_jr_801457A4.c @@ -2247,7 +2247,50 @@ DEFINE_func_801498C0() /* dedup: shared engine-core @0x801498c0 (src/shared) */ } /* dedup: shared engine-core @0x801498e0 (src/shared) */ -INCLUDE_ASM("asm/ov_SC07_006/nonmatchings/ov_SC07_006_jr_801457A4", func_80149954); +extern void func_80015978(s32 a0, s32 *a1); +extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_80147364(); +extern s32 func_800CCF28(s32 a0); +extern u16 *func_80146750(u16 *param_1); +extern s16 currentLocationId; +s32 func_80149954(s32 s0) { + + extern u8 D_80126B5C; + extern void *D_8012707C; + s32 sp10[2]; + s16 buf[10]; + if (*(s32 *)(s0 + 0x44) & 0x404) { + return 0; + } + if ((*(u16 *)(s0 + 0xAA) & 0x90) == 0) { + if (currentLocationId == 0x308D) { + func_80015978((s32)&D_80126B5C, sp10); + ((s32 (*)(s32, s32, s32))func_8012E5CC)((s32)sp10, 0x4, 0x8E0); + return 0; + } + func_8002D4C8(0x4, 0x8E0); + return 0; + } + if (*(u16 *)(s0 + 0xAC) & 0x90) { + if ((s32)D_8012707C == 0x8E0) { + D_8012707C = 0; + } else { + func_80147364(0x8E0, 0); + } + } + func_800CCF28(s0); + *(s16 *)((s32)buf + 0x0) = 0x12; + *(s32 *)((s32)buf + 0x8) = s0; + *(s16 *)((s32)buf + 0x2) = 0; + *(s16 *)((s32)buf + 0x4) = -0x1E; + *(s16 *)((s32)buf + 0x6) = 0; + *(s32 *)((s32)buf + 0xC) = 0; + *(s32 *)((s32)buf + 0x10) = 0; + func_80146750(buf); + return 1; +} + DEFINE_func_80149A64() /* dedup: shared engine-core @0x80149a64 (src/shared) */