diff --git a/.run/P35/baseline/twin_ov_SC02_003_extract.log b/.run/P35/baseline/twin_ov_SC02_003_extract.log new file mode 100644 index 000000000..a56201337 --- /dev/null +++ b/.run/P35/baseline/twin_ov_SC02_003_extract.log @@ -0,0 +1,135 @@ +splat 0.41.0 (powered by spimdisasm 1.41.0) + 0%| | 0/1096 [00:00 func_801287B8(); } - * Manipulating $sp is not expressible in C; full inline asm (manages its own frame). - * - * NOTE (maspsx --aspsx-version=2.56): the inline ".set noreorder" is written with a - * SPACE, so maspsx's own is_reorder tracker stays True and it auto-fills EVERY - * jal/j/branch delay slot with a nop (GNU as honors noreorder and adds none). So do - * NOT write explicit delay-slot nops after jal/j/bne — that yields a double nop. - * bnez is written as `bne $v0,$zero` so maspsx recognizes it (bnez isn't in its - * branch set). The load-delay nop after `lw $v0,%lo(...)($v0)` is auto-inserted too. - * %hi/%lo escaped as %%hi/%%lo (bare % is an operand placeholder). - */ -void func_80128714(void) { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_800D19F0\n" - "lui $at, %%hi(D_801E6CCC)\n" - "sw $v0, %%lo(D_801E6CCC)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6CCC)\n" - "lw $v0, %%lo(D_801E6CCC)($v0)\n" - "bne $v0, $zero, 1f\n" - "jal func_8014607C\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801287B8\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "j 2f\n" - "1:\n" - "jal func_8001903C\n" - "jal func_80018FC8\n" - "2:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - - - -// @class: remat -// @stuck: none — MATCH (62 ins). D_801E87C0 read needed the address REMATERIALIZED -// (lui;addiu;lw 0(reg), not the folded lui;lw %lo) AND pinned to $a0. volatile forces the -// remat; register __asm__("$4") forces the a0 allocation (gcc otherwise picks v0). Both levers -// required — pin-alone folds, volatile-alone lands in v0. - -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern u8 D_800B9A64; - -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); - -void func_801287B8(void) { - func_80129CF8(); - func_8017849C(); - ((void (*)(void *))func_8014FDF4)(&D_80126B58); - ((void (*)(void *))func_801505FC)(&D_80126B58); - func_801508B4(&D_80126B58); - func_80165E90(); - func_801627E8(); - func_80162B1C(); - func_80165CA0(); - func_80129010(); - func_8013CA14(); - func_800190AC(); - func_8012956C(); - func_8016E95C(); - func_801754A8(); - { - /* D_801E87C0 read: the target materializes &sym into $a0 then lw 0($a0) (not the folded - * lui;lw %lo). volatile forces the rematerialize; the $4 pin forces the a0 allocation. */ - register volatile s32 *p __asm__("$4") = &D_801E87C0; - if (*p == 0) { - func_8013BC7C(); - } - } - func_8013BCDC(); - func_801379FC(); - D_800B99DA++; - if (D_800B9A64 != 0) { - func_8001212C(); - } -} - - - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern s32 D_801E5794; -extern u8 D_800AEFD0; - -s32 func_801288B0(void) { - func_8001ABBC(0, 0, &D_800AEFD0, D_801E5794, 0); -} - - - -// @class: remat -// @stuck: none — MATCH. &D_800C7C60 CSE'd once via pointer local `p` so the same reg feeds the *p=0x60 store AND arg5; writing D_800C7C60=0x60 directly would emit a 2nd address materialization (+1 ins). Mirrors matched sibling func_80128998. - -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -int func_801288E8(int arg0) -{ - int *p = &D_800C7C60; - *p = 0x60; - D_800C7C64 = &D_800A2E20; - ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AF558, D_801E5794, p); -} - - - - -// @class: remat -// @stuck: none — MATCH (pointer-var forces single materialization of &D_800C7C60, reused as store base + arg5) - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern u8 D_800AF560; -extern s32 D_801E5794; - -s32 func_80128940(s32 _arg0) -{ - s32 *p = &D_800C7C60; - *p = 0x5E; - D_800C7C64 = &D_800A2E20; - ((void (*)(s32, s32, void *, s32, void *))func_8001ABBC)(0, 0, &D_800AF560, D_801E5794, p); -} - - - - -// @class: remat -// @stuck: none — MATCH. &D_800C7C60 must be CSE'd once (pointer local `p`) so the same reg feeds the *p=13 store AND arg5; writing D_800C7C60=13 directly emits a 2nd address materialization (+1 ins). - -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AECB0; -extern s32 D_801E5794; - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -s32 func_80128998(void) -{ - int *p = &D_800C7C60; - *p = 13; - D_800C7C64 = &D_800A2E20; - ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AECB0, D_801E5794, p); -} - - - -extern s32 D_801E5794; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_801289F0(void) { - func_8001ABBC(0, 0, &D_800AECB8, D_801E5794, 0); -} - - -extern void func_80011B7C(int); -extern void func_80011C10(void); -extern u16 D_800B99F6; -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); - -void func_80128A28(void) { - s16 temp_v0; - - switch (D_800B99F6) { /* irregular */ - case 1: - D_8018ABD0(); - /* fallthrough */ - case 0: - func_80011C10(); - return; - case 2: - temp_v0 = D_8018ABD4(); - if (temp_v0 != 0) { - if (temp_v0 < 0) { - func_80011B7C(0); - D_800B9A00 = 1; - return; - } - func_80010DE0(); - } else { - return; - } - break; - } -} - - -extern u16 D_800B99F6; -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; - -void func_80128AF4(void) { - switch (D_800B99F6) { /* irregular */ - case 0: - D_801E6CC8 = func_8002AF08(); - func_80011C10(); - return; - case 1: - D_8018ABDC(); - func_80011C10(); - return; - case 2: - if ((D_8018ABE0() << 0x10) != 0) { - if (D_801E6CC8 == 1) { - if (func_800CFBE8() != 0) { - func_800CFBBC(); - func_80011B7C(0x13); - } else { - func_80011B7C(4); - } - } else { - func_80010DE0(); - } - func_8002AEF8(); - } - return; - } -} - - -DEFINE_func_80128C14() /* dedup: shared engine-core @0x80128C14 (src/shared) */ - - - -extern CdFileLoc_80128C98 cdFileLocTable[]; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_80128C98(s32 arg0) { - - extern s16 D_8018AEAC[]; - s16 idx = D_8018AEAC[arg0]; - - if (idx >= 0) { - func_8001ABBC(0, 0, (u8 *)&cdFileLocTable[idx], D_801E5794, 0); - } else { - return 1; - } -} - - - - -extern CdFileLoc cdFileLocTable[]; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_80128CFC(s32 arg0) { - - extern s16 D_8018AEBC[]; - s16 idx = D_8018AEBC[arg0]; - - if (idx >= 0) { - func_8001ABBC(0, 0, (u8 *)&cdFileLocTable[idx], D_801E5794, 0); - } else { - return 1; - } -} - - -DEFINE_func_80128D60() /* dedup: shared engine-core @0x80128D60 (src/shared) */ - -DEFINE_func_80128DB4() /* dedup: shared engine-core @0x80128DB4 (src/shared) */ - -DEFINE_func_80128EA8() /* dedup: shared engine-core @0x80128EA8 (src/shared) */ - -DEFINE_func_80128ED8() /* dedup: shared engine-core @0x80128ED8 (src/shared) */ - -extern M2C_UNK D_801E5798; - -void func_80128FAC(u16 *arg0) { - func_8001534C(4, &D_801E5798, 0x80, 0x90, 0, 0); - func_800153CC(5, *arg0, 0xA8, 0x90, 0x40, 0); -} - - -DEFINE_func_80129010() /* dedup: shared engine-core @0x80129010 (src/shared) */ - -DEFINE_func_801290DC() /* dedup: shared engine-core @0x801290DC (src/shared) */ - -DEFINE_func_8012913C() /* dedup: shared engine-core @0x8012913C (src/shared) */ - -DEFINE_func_801291C0() /* dedup: shared engine-core @0x801291C0 (src/shared) */ - -DEFINE_func_80129220() /* dedup: shared engine-core @0x80129220 (src/shared) */ - -DEFINE_func_80129248() /* dedup: shared engine-core @0x80129248 (src/shared) */ - -DEFINE_func_80129258() /* dedup: shared engine-core @0x80129258 (src/shared) */ - -DEFINE_func_8012927C() /* dedup: shared engine-core @0x8012927C (src/shared) */ - -DEFINE_func_801292C8() /* dedup: shared engine-core @0x801292C8 (src/shared) */ - -DEFINE_func_8012931C() /* dedup: shared engine-core @0x8012931C (src/shared) */ - -DEFINE_func_80129350() /* dedup: shared engine-core @0x80129350 (src/shared) */ - -DEFINE_func_80129374() /* dedup: shared engine-core @0x80129374 (src/shared) */ - -DEFINE_func_80129398() /* dedup: shared engine-core @0x80129398 (src/shared) */ - -DEFINE_func_80129428() /* dedup: shared engine-core @0x80129428 (src/shared) */ - -DEFINE_func_8012943C() /* dedup: shared engine-core @0x8012943C (src/shared) */ - -DEFINE_func_8012944C() /* dedup: shared engine-core @0x8012944C (src/shared) */ - - - - -extern s32 D_801E6CCC; - -extern void func_801299C8(); -extern void func_80015B6C(s32, s16, s32, s16, s32, s32, s32, s32, s32, s32); -extern void GsSortBg(s32 *, void *, u16, s32 *); -extern void GsSortFastBg(s32 *, void *, u16, s32 *); - -void func_8012956C(void) { - - extern s16 D_80114EE0; - extern u8 D_800B9A78; - extern u8 D_801E6CCD[]; - extern u8 D_801E6CCE[]; - extern u8 D_801E6CD0[]; - extern u8 D_801E6CD1[]; - extern u8 D_801E6CD2[]; - extern u8 D_801E8774; - extern u8 D_800AF630[]; - extern u8 D_800A6518[]; - register s32 *sp10 __asm__("$21"); - register u8 *afbase __asm__("$22"); - register s32 *sp0 __asm__("$23"); - Ent_956C *base; - s32 i; - s16 a1; - register u32 temp_a3 __asm__("$7"); - register u32 arg0 __asm__("$4"); - register u32 s __asm__("$2"); - register u32 s2 __asm__("$3"); - register u32 t6 __asm__("$8"); - s32 code; - - sp10 = (s32 *)0x1F800010; - sp0 = (s32 *)0x1F800000; - afbase = (u8 *)&D_800AF630; - if (D_80114EE0 == 0) { - return; - } - base = (Ent_956C *)&D_800B9A78; - __asm__("" : "=r"(base) : "0"(base)); - i = 0; - do { - s32 idx = i * 8 + 4; - code = base->f34; - if (code == 0x7FFE) { - goto case_7FFE; - } - if (code < 0x7FFF) { - a1 = i + 3; - if (code == 0x7FFD) { - goto case_7FFD; - } - goto do_default; - } - a1 = i + 3; - if (code != 0x7FFF) { - goto do_default; - } - goto next; - case_7FFD: - if (i == 0) { - func_801299C8(D_801E8774, 1, base); - } - func_80015B6C(-0xA0, -0x74, 0x140, 0x8C, - D_801E6CD0[0], D_801E6CD0[1], D_801E6CD0[2], - D_801E6CD0[4], D_801E6CD0[5], D_801E6CD0[6]); - func_80015B6C(-0xA0, 0x18, 0x140, 0x3C, - D_801E6CD0[4], D_801E6CD0[5], D_801E6CD0[6], - D_801E6CD0[8], D_801E6CD0[9], D_801E6CD0[0xA]); - func_80015B6C(-0xA0, 0x54, 0x140, 0x28, - D_801E6CD0[8], D_801E6CD0[9], D_801E6CD0[0xA], - D_801E6CD0[0xC], D_801E6CD0[0xD], D_801E6CD0[0xE]); - goto next; - case_7FFE: - func_801299C8(D_801E8774, (s16)(i * 2), base); - func_80015B6C(-0xA0, *(s16 *)&base->f3A, 0x140, base->f3E, - ((u8 *)&D_801E6CCC)[idx], D_801E6CCD[idx], D_801E6CCE[idx], - D_801E6CD0[idx], D_801E6CD1[idx], D_801E6CD2[idx]); - goto next; - do_default: - __asm__(""); - arg0 = D_801E8774; - s = base->f40; - temp_a3 = base->f38; - s += temp_a3; - base->f1C = s; - s2 = base->f42; - t6 = base->f3A; - s2 += t6; - base->f1E = s2; - ((void (*)(s32, s32, void *, s32))func_801299C8)(arg0, a1, base, temp_a3); - *(Blk16_956C *)sp0 = *(Blk16_956C *)base; - { - s32 *dst = sp10; - s32 *src = (s32 *)((u8 *)base + 0x10); - s32 *end = (s32 *)((u8 *)base + 0x30); - do { - *(Blk16_956C *)dst = *(Blk16_956C *)src; - src += 4; - dst += 4; - } while (src != end); - *dst = *src; - sp10[5] = (s32)sp0; - if (base->f36 == 0) { - GsSortFastBg(sp10, &D_800A6518[(*(u16 *)(afbase + 0xA3D2)) * 0x14], base->f34, dst); - } else { - GsSortBg(sp10, &D_800A6518[(*(u16 *)(afbase + 0xA3D2)) * 0x14], base->f34, dst); - } - } - next: - base += 1; - i += 1; - } while (i < 2); -} - - -DEFINE_func_801298F4() /* dedup: shared engine-core @0x801298F4 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (158 ins, match_one relocation-masked) -// -// Levers that landed it (2 iterations, 56 mismatched -> MATCH): -// 1. §43 K&R s16-param definition: `void f(a0,a1,a2) s16 a0; s16 a1; u8 *a2;` reproduces the -// in-place `sll $a0,$a0,16` zero-test on the arg reg + the raw-$a1 copy (`addu $a3,$a1,$zero`) -// stashed in the jtbl branch delay slot and RE-extended per use in the case body. -// 2. §18 array-of-struct %lo-fold: three sibling extern arrays D_801E6CD0/1/2[] (a 4-row x 3-comp -// RGB gradient table, stride 4) give `lui $at,%hi(sym); addu $at,$at,idx4; sb $v0,%lo(sym)($at)` -// for the indexed case and plain `lui/sb %lo(sym+k)` for the constant-index case. -// 3. Switch CASE-ORDER = source order: the jump table dispatches case 1 to the FIRST emitted block, -// so `case 1:` must be written before `case 0/2:` and `case 3/4:`. -// 4. THE residual (56 -> 0): the case-1 body must be written ROW-MAJOR (BE0[0],BE1[0],BE2[0], -// BE0[4],BE1[4],BE2[4],...), i.e. the natural table fill. gcc-2.7.2's sched pass then REORDERS -// the stores itself (BE0,BE1,BE5,BE8,BE4,BEC,BE9,BED,BE2,BE6,BEA,BEE) because the three arrays -// are distinct declarations => provably non-aliasing. Writing the source in the target's STORE -// order is the trap: it pins the b*255 / r*143 CSEs at their late store sites instead of letting -// them hoist into $a0/$v1 at rows 0/1, and mis-schedules the D_801E8670 load. -// 5. Shift signedness: `u32` component locals give `srl` for r*5>>3 and g*25>>1; an explicit -// `(s32)(x * 255) >> 4` gives `sra` for the *255 / *143 / *45 terms (mixed within one block). - -extern u8 D_801E87BE; -extern u8 D_801E8692; -extern u8 D_801E8670; -extern u8 D_801E6CD0[]; -extern u8 D_801E6CD1[]; -extern u8 D_801E6CD2[]; - -void func_801299C8(arg0, arg1, arg2) -s16 arg0; -s16 arg1; -u8 *arg2; -{ - u32 r; - u32 g; - u32 b; - s32 i; - - if (arg0 != 0) { - switch (arg1) { - case 1: - r = D_801E87BE; - g = D_801E8692; - b = D_801E8670; - D_801E6CD0[0] = r * 5 >> 3; - D_801E6CD1[0] = g << 3; - D_801E6CD2[0] = (s32)(b * 255) >> 4; - D_801E6CD0[4] = (s32)(r * 143) >> 4; - D_801E6CD1[4] = g * 25 >> 1; - D_801E6CD2[4] = (s32)(b * 255) >> 4; - D_801E6CD0[8] = (s32)(r * 255) >> 4; - D_801E6CD1[8] = (s32)(g * 255) >> 4; - D_801E6CD2[8] = (s32)(b * 255) >> 4; - D_801E6CD0[12] = (s32)(r * 143) >> 4; - D_801E6CD1[12] = (s32)(g * 255) >> 4; - D_801E6CD2[12] = (s32)(b * 45) >> 2; - break; - case 0: - case 2: - i = arg1 * 4; - D_801E6CD0[i] = arg2[0x44] * D_801E87BE >> 4; - D_801E6CD1[i] = arg2[0x45] * D_801E8692 >> 4; - D_801E6CD2[i] = arg2[0x46] * D_801E8670 >> 4; - i = (arg1 + 1) * 4; - D_801E6CD0[i] = arg2[0x47] * D_801E87BE >> 4; - D_801E6CD1[i] = arg2[0x48] * D_801E8692 >> 4; - D_801E6CD2[i] = arg2[0x49] * D_801E8670 >> 4; - break; - case 3: - case 4: - arg2[0x20] = D_801E87BE << 3; - arg2[0x21] = D_801E8692 << 3; - arg2[0x22] = D_801E8670 << 3; - break; - } - } -} - -DEFINE_func_80129C40() /* dedup: shared engine-core @0x80129C40 (src/shared) */ - -DEFINE_func_80129CF8() /* dedup: shared engine-core @0x80129CF8 (src/shared) */ - -DEFINE_func_80129FF4() /* dedup: shared engine-core @0x80129FF4 (src/shared) */ - -DEFINE_func_8012A018() /* dedup: shared engine-core @0x8012A018 (src/shared) */ - - -DEFINE_func_8012A048() /* dedup: shared engine-core @0x8012A048 (src/shared) */ - -DEFINE_func_8012A094() /* dedup: shared engine-core @0x8012A094 (src/shared) */ - -DEFINE_func_8012A0E0() /* dedup: shared engine-core @0x8012A0E0 (src/shared) */ - -DEFINE_func_8012A100() /* dedup: shared engine-core @0x8012A100 (src/shared) */ - -DEFINE_func_8012A110() /* dedup: shared engine-core @0x8012A110 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (78 ins, relocation-masked). Register pins ($2-$5 reused for -// the D_x200-x20C words then the D_x220-x226 halfwords; $6-$10 held across for the -// D_x228/x22A/x294/x298/x29A tail) force the frameless 9-deep allocation the default -// -O2 pre-reload scheduler otherwise blows to a 3-reg spill (all 720 stmt orders spill -// without the pins). A single zero-byte scheduling/memory barrier after the 4 word -// stores stops gcc hoisting the first 8-byte block copy above them. - - - - -DEFINE_func_8012A1BC() /* dedup: shared engine-core @0x8012A1BC (src/shared) */ - - -DEFINE_func_8012A2F4() /* dedup: shared engine-core @0x8012A2F4 (src/shared) */ - -DEFINE_func_8012A304() /* dedup: shared engine-core @0x8012A304 (src/shared) */ - - - - - - - - - -DEFINE_func_8012A328() /* dedup: shared engine-core @0x8012A328 (src/shared) */ - - -DEFINE_func_8012A418() /* dedup: shared engine-core @0x8012A418 (src/shared) */ - - - - - -DEFINE_func_8012A464() /* dedup: shared engine-core @0x8012A464 (src/shared) */ - - -DEFINE_func_8012A4BC() /* dedup: shared engine-core @0x8012A4BC (src/shared) */ - -DEFINE_func_8012A568() /* dedup: shared engine-core @0x8012A568 (src/shared) */ - -DEFINE_func_8012A598() /* dedup: shared engine-core @0x8012A598 (src/shared) */ - -DEFINE_func_8012A5F8() /* dedup: shared engine-core @0x8012A5F8 (src/shared) */ - -DEFINE_func_8012A62C() /* dedup: shared engine-core @0x8012A62C (src/shared) */ - -DEFINE_func_8012A68C() /* dedup: shared engine-core @0x8012A68C (src/shared) */ - -DEFINE_func_8012A6D0() /* dedup: shared engine-core @0x8012A6D0 (src/shared) */ - -DEFINE_func_8012A758() /* dedup: shared engine-core @0x8012A758 (src/shared) */ - -DEFINE_func_8012A79C() /* dedup: shared engine-core @0x8012A79C (src/shared) */ - -DEFINE_func_8012A7D4() /* dedup: shared engine-core @0x8012A7D4 (src/shared) */ - -DEFINE_func_8012A828() /* dedup: shared engine-core @0x8012A828 (src/shared) */ - -DEFINE_func_8012A860() /* dedup: shared engine-core @0x8012A860 (src/shared) */ - -DEFINE_func_8012A8B0() /* dedup: shared engine-core @0x8012A8B0 (src/shared) */ - -DEFINE_func_8012A8E8() /* dedup: shared engine-core @0x8012A8E8 (src/shared) */ - -DEFINE_func_8012A908() /* dedup: shared engine-core @0x8012A908 (src/shared) */ - -DEFINE_func_8012A988() /* dedup: shared engine-core @0x8012A988 (src/shared) */ - - -extern void func_8012AAAC(void *arg0); - -void func_8012AAAC(void *arg0) { - void *ptr; - s32 link; - s32 next; - s32 saved; - s32 cnt; - s32 back; - s32 head; - - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xBFFF); - ptr = (void *) (M2C_FIELD(arg0, s32 *, 0x90) + (M2C_FIELD(arg0, s32 *, 0x94) * 8)); - if (M2C_FIELD(ptr, s16 *, 4) < 0) { - switch (M2C_FIELD(ptr, s16 *, 4)) { - case -2: - link = M2C_FIELD(arg0, s32 *, 0x9C); - if (link == 0) { - M2C_FIELD(arg0, s16 *, 0x98) = 0; - break; - } - goto pop; - case -1: - link = M2C_FIELD(arg0, s32 *, 0x9C); - if (link != 0) { -pop: - back = M2C_FIELD(arg0, s16 *, 0x9A); - M2C_FIELD(arg0, s32 *, 0x90) = link; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, s32 *, 0x94) = back; - func_8012AAAC(arg0); - break; - } - M2C_FIELD(arg0, s32 *, 0x94) = 0; - func_8012AAAC(arg0); - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) | 0x4000); - break; - case -4: - head = M2C_FIELD(ptr, s32 *, 0); - M2C_FIELD(arg0, s32 *, 0x94) = 0; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, s32 *, 0x90) = head; - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xF9FF); - func_8012AAAC(arg0); - break; - case -3: - cnt = M2C_FIELD(arg0, s32 *, 0x94) + 1; - M2C_FIELD(arg0, s32 *, 0x94) = cnt; - if (M2C_FIELD(arg0, s32 *, 0x9C) != 0) { - func_8012AAAC(arg0); - break; - } - saved = M2C_FIELD(arg0, s32 *, 0x90); - next = M2C_FIELD(ptr, s32 *, 0); - M2C_FIELD(arg0, s32 *, 0x94) = 0; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, s32 *, 0x90) = next; - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xF9FF); - func_8012AAAC(arg0); - M2C_FIELD(arg0, s32 *, 0x9C) = saved; - M2C_FIELD(arg0, s16 *, 0x9A) = (s16) cnt; - break; - case -50: - M2C_FIELD(arg0, s32 *, 0x94) = M2C_FIELD(arg0, s32 *, 0x94) + 1; - func_8012AAAC(arg0); - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) | 0x2000); - break; - case -5: - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) | 0x400); - M2C_FIELD(arg0, s32 *, 0x94) = M2C_FIELD(arg0, s32 *, 0x94) - 1; - func_8012AAAC(arg0); - break; - } - } else { - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s32 *, 0x20) = M2C_FIELD(ptr, s32 *, 0); - M2C_FIELD(arg0, s16 *, 0x98) = M2C_FIELD(ptr, s16 *, 4); - } -} - - -extern void func_8012AAAC(); -extern M2C_UNK D_8018AF28; - -void func_8012ACA0(void *arg0) { - M2C_FIELD(arg0, M2C_UNK **, 0x90) = &D_8018AF28; - M2C_FIELD(arg0, s32 *, 0x94) = 0; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xF9FF); - ((void (*)(void))func_8012AAAC)(); -} diff --git a/src/ov_SC02_003/ov_SC02_003_after.c b/src/ov_SC02_003/ov_SC02_003_after.c deleted file mode 100644 index 1471bdfc5..000000000 --- a/src/ov_SC02_003/ov_SC02_003_after.c +++ /dev/null @@ -1,3096 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* func_801457A4 (@0x801457A4) is an -O0 function; its definition lives in ov_SC02_003_o0b.c (the -O0 - * whale object, whose .text ends exactly at this address). Mirrors ov_SC01_077. §116 */ -DEFINE_func_801458E0() /* dedup: shared engine-core @0x801458E0 (src/shared) */ - -DEFINE_func_801458E8() /* dedup: shared engine-core @0x801458E8 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (else-if >= ladder + §5a cross-jump barrier in the first D_8018D134 block defeats the tail-merge of the two identical D_8018D134 loads; barrier emits zero bytes, load-bearing) - -extern s32 func_80029504(void); -extern void func_800D185C(u8 *a0); -extern void func_80145B24(void); - -extern u8 D_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; - -void func_80145934(void) { - s32 v; - void *p; - - v = func_80029504(); - if (v >= 0x6A4) { - p = &D_8018D134; - /* §5a cross-jump barrier — LOAD-BEARING: keeps this D_8018D134 load from being - * tail-merged with the v>=0x384 D_8018D134 load below (emits zero machine code). */ - __asm__ __volatile__("" ::: "memory"); - } else if (v >= 0x5DC) { - p = &D_8018D0A4; - } else if (v >= 0x578) { - p = &D_8018D080; - } else if (v >= 0x514) { - p = &D_8018D05C; - } else if (v >= 0x384) { - p = &D_8018D134; - } else if (v >= 0x258) { - p = &D_8018D110; - } else if (v >= 0xC8) { - p = &D_8018D0EC; - } else if (v >= 0xA) { - p = &D_8018D0C8; - } else { - p = &D_8018D038; - } - ((void (*)(void *))func_800D185C)(p); - func_80145B24(); -} - - - - -// @class: other -// @stuck: none — MATCH (62 ins). Sibling func_80145934 (byte-matched, same shape) is the template. Tail is default-then-conditional-override (matches asm .L80145AEC), and a §5a cross-jump barrier prevents the two identical D_8018D1C4 loads (>=0x6A4 and >=0x384) from being tail-merged. - -extern s32 func_80029504(void); -extern void func_800D185C(u8 *a0); -extern void func_80145B24(void); - -extern u8 D_8018D1C4; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D038; -extern u8 D_8018D158; - -void func_80145A2C(void) { - s32 v; - void *p; - - v = func_80029504(); - if (v >= 0x6A4) { - p = &D_8018D1C4; - /* §5a cross-jump barrier — LOAD-BEARING: keeps this D_8018D1C4 load from being - * tail-merged with the v>=0x384 D_8018D1C4 load below (emits zero machine code). */ - __asm__ __volatile__("" ::: "memory"); - } else if (v >= 0x5DC) { - p = &D_8018D0A4; - } else if (v >= 0x578) { - p = &D_8018D080; - } else if (v >= 0x514) { - p = &D_8018D05C; - } else if (v >= 0x384) { - p = &D_8018D1C4; - } else if (v >= 0x258) { - p = &D_8018D1A0; - } else if (v >= 0xC8) { - p = &D_8018D17C; - } else { - p = &D_8018D038; - if (v >= 0xA) { - p = &D_8018D158; - } - } - ((void (*)(void *))func_800D185C)(p); - func_80145B24(); -} - - -DEFINE_func_80145B24() /* dedup: shared engine-core @0x80145B24 (src/shared) */ - -DEFINE_func_80145BF8() /* dedup: shared engine-core @0x80145BF8 (src/shared) */ - -DEFINE_func_80145C54() /* dedup: shared engine-core @0x80145C54 (src/shared) */ - -// @class: struct -// @stuck: 2 residuals — (1) target RELOADS global ptr D_80126B78 before each of its 5 field accesses (f28/f18/f1a/f1c/f2c); gcc-2.7.2 CSEs the single pointer load in every clean-C form I tried (int-cast, (s8*)/(s32) M2C_FIELD, struct*), keeping ONE load. volatile forces reloads but hoists them + leaves delay-slot nops the target fills (target is NOT volatile). (2) frame 0x20 not 0x18: target reserves an unused 8-byte stack local @0x10 (address-taken local — reproduced, but every code-free escape optimizes away and a visible escape corrupts the func_80145EE8(0) arg). Structure/order/values/callees all match; only the alias-driven reload chain + the phantom frame local remain. Family exemplar (~130 overlays). - - - -s32 func_80145CEC() { - extern int func_80016714(); - extern int func_8001C320(); - extern int func_801552F4(); - extern int func_80147084(); - extern int func_80147098(); - extern int func_801470AC(); - extern int func_80149210(); - extern int func_8014BE9C(); - extern int func_8016533C(); - extern int func_801627C0(); - extern int func_80162AF4(); - extern int func_80165C78(); - extern int func_801468C8(); - extern int func_80145EE8(); - extern int func_8014C968(); - extern int func_8014C6D0(); - extern int func_80165938(); - extern int func_80153C8C(); - extern int func_800290BC(); - extern s32 D_800AFAE8; - extern s32 D_800DE2A4; - extern s32 D_801152C8; - extern s32 D_8018C5AC; - extern s32 * D_80126B78[1]; - extern s32 * D_800AF7C8; - extern s32 * D_80126B90; - extern s16 D_80126BB8; - extern s16 D_80126BBA; - extern s16 D_80126BBC; - extern s16 D_80126BC0; - extern s16 D_80126BC2; - extern s16 D_80126BC4; - extern s16 D_80126BC8; - extern s16 D_80126BCA; - extern s16 D_80126BCC; - extern s16 D_80126D10; - extern s16 D_80126D12; - extern s16 D_80126C4E; - extern s16 currentLocationId; - extern s32 D_8011F9C4; - extern s32 D_8012707C; - extern s32 D_8011DB10; - - unsigned int uVar1; - s32 pad[2]; - (void)&pad; - - func_80016714(&D_80126B58, 0x254); - D_80126B78[0] = (s32 *)&D_800AFAE8; - D_800AF7C8 = (s32 *)&D_801152C8; - func_8001C320(&D_800AFAE8, &D_800DE2A4); - *(s32 *)((s32)D_80126B78[0] + 0x28) = 0x7fff7fff; - D_80126B90 = (s32 *)&D_8018C5AC; - *(u16 *)((s32)D_80126B78[0] + 0x18) = 0x1000; - D_80126BC8 = 0x1000; - D_80126BC0 = 0x1000; - D_80126BB8 = 0x1000; - *(u16 *)((s32)D_80126B78[0] + 0x1a) = 0x1000; - D_80126BCA = 0x1000; - D_80126BC2 = 0x1000; - D_80126BBA = 0x1000; - *(u16 *)((s32)D_80126B78[0] + 0x1c) = 0x1000; - D_80126BCC = 0x1000; - D_80126BC4 = 0x1000; - D_80126BBC = 0x1000; - D_80126D12 = 0x1000; - D_80126D10 = 0x1000; - D_80126C4E = 0x1000; - func_801552F4(&D_80126B58); - func_80147084(&D_80126B58); - func_80147098(&D_80126B58); - func_801470AC(&D_80126B58); - *(u16 *)((s32)D_80126B78[0] + 0x2c) = *(u16 *)((s32)D_80126B78[0] + 0x2c) | 0x50; - func_80149210(&D_80126B58, 8); - func_8014BE9C(); - func_8016533C(); - func_801627C0(); - func_80162AF4(); - func_80165C78(); - func_801468C8(&D_80126B58, 1); - if (currentLocationId != 0x30a2 && currentLocationId != 0x30a5) { - func_80145EE8(0); - } - func_8014C968(); - func_8014C6D0(); - D_8011F9C4 = 0; - func_80165938(); - func_80153C8C(); - D_8012707C = 0; - D_8011DB10 = 0; - uVar1 = ((int(*)())func_80029504)(); - if (uVar1 >= 10) { - func_800290BC(); - } -} - - - - -// @class: schedule -// @stuck: branch layout — 3-way dispatch on param_1; trying switch form - -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); - -extern unsigned char D_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; - -void func_80145EE8(s32 param_1) -{ - switch (param_1) { - case 0: - if (((unsigned char (*)(int))func_80029178)(0x1F) != 0) { - ((void (*)(void *))func_80146014)(D_8018C5BC); - } - if (((unsigned char (*)(int))func_80029178)(0x21) != 0) { - ((void (*)(void *))func_80146014)(D_8018C5EC); - } - if (((unsigned char (*)(int))func_80029178)(0x1E) != 0) { - ((void (*)(void *))func_80146014)(D_8018C63C); - } - if (((unsigned char (*)(int))func_80029178)(0x1D) != 0) { - ((void (*)(void *))func_80146014)(D_8018C66C); - } - if (((unsigned char (*)(int))func_80029178)(0x20) == 0) { - return; - } - ((void (*)(void *))func_80146014)(D_8018C69C); - break; - case 1: - ((void (*)(void *))func_80146014)(D_8018C5BC); - ((void (*)(void *))func_80146014)(D_8018C5EC); - ((void (*)(void *))func_80146014)(D_8018C63C); - ((void (*)(void *))func_80146014)(D_8018C66C); - ((void (*)(void *))func_80146014)(D_8018C69C); - break; - } -} - - -DEFINE_func_80146014() /* dedup: shared engine-core @0x80146014 (src/shared) */ - -DEFINE_func_80146074() /* dedup: shared engine-core @0x80146074 (src/shared) */ - - -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); - -void func_8014607C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_80146128\n" - "lui $at, %%hi(D_801E6E58)\n" - "sw $v0, %%lo(D_801E6E58)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E58)\n" - "lw $v0, %%lo(D_801E6E58)($v0)\n" - "nop\n" - "beqz $v0, .L80146114\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_80146360\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801463A0\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - ".L80146114:\n" - "nop\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_80146128() /* dedup: shared engine-core @0x80146128 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (fnptr-table idiom: D_8018C6EC[u8 idx](&arg)) -extern void (*D_8018C6EC[])(void *); -extern u8 D_80126BA4; - -void func_80146360(void) -{ - /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every - LATER function in this TU, which blocks a byte-true decl of a different type. - Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ - extern s32 D_80126B58; - D_8018C6EC[D_80126BA4](&D_80126B58); -} - - - - - - /* size 8, align 1 -> unaligned block move */ - -DEFINE_func_801463A0() /* dedup: shared engine-core @0x801463A0 (src/shared) */ - - -DEFINE_func_80146534() /* dedup: shared engine-core @0x80146534 (src/shared) */ - -DEFINE_func_80146554() /* dedup: shared engine-core @0x80146554 (src/shared) */ - -DEFINE_func_80146578() /* dedup: shared engine-core @0x80146578 (src/shared) */ - -DEFINE_func_8014659C() /* dedup: shared engine-core @0x8014659C (src/shared) */ - -DEFINE_func_801465C0() /* dedup: shared engine-core @0x801465C0 (src/shared) */ - -DEFINE_func_801465E4() /* dedup: shared engine-core @0x801465E4 (src/shared) */ - -DEFINE_func_80146608() /* dedup: shared engine-core @0x80146608 (src/shared) */ - -DEFINE_func_801466B4() /* dedup: shared engine-core @0x801466B4 (src/shared) */ - -DEFINE_func_801466F0() /* dedup: shared engine-core @0x801466F0 (src/shared) */ - - - -DEFINE_func_80146750() /* dedup: shared engine-core @0x80146750 (src/shared) */ - - -DEFINE_func_8014680C() /* dedup: shared engine-core @0x8014680C (src/shared) */ - -DEFINE_func_801468C8() /* dedup: shared engine-core @0x801468C8 (src/shared) */ - -DEFINE_func_80146924() /* dedup: shared engine-core @0x80146924 (src/shared) */ - -DEFINE_func_80146994() /* dedup: shared engine-core @0x80146994 (src/shared) */ - -DEFINE_func_801469C8() /* dedup: shared engine-core @0x801469C8 (src/shared) */ - -extern void func_80146AFC(void*); -void aF80146A6C(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6) __asm__("func_80146A6C"); -void aF80146A6C(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6) -{ - u8 sp[0x18]; - *(s16 *)(sp + 0x0) = a0; - *(s32 *)(sp + 0x8) = a1; - *(s16 *)(sp + 0x2) = a2; - *(s16 *)(sp + 0x4) = a3; - *(s16 *)(sp + 0x6) = a4; - *(s32 *)(sp + 0xC) = a5; - *(s32 *)(sp + 0x10) = a6; - ((s32 (*)(void *))func_80146AFC)(sp); -} - - -DEFINE_func_80146AB4() /* dedup: shared engine-core @0x80146AB4 (src/shared) */ - -extern s32 func_80146B9C(void * arg0); - -/* func_80146AFC — ASCENDING twin of the byte-proven DEFINE_func_80146B9C() - * in src/shared/engine_core.h (cookbook §71: find the already-matched sibling first). - * Same 0x58-stride slot table (base D_8011D030), same 7-store copy body in the same - * order, same $a2/$a1 giv pair. 80146B9C walks DOWN; this one walks UP, so the guard - * is `p < end`, end = p + 0xA50 (30 slots x 0x58). - * - * DECAY ROOT CAUSE (this redraft): the stored backlog draft had been rewritten to - * `void func_80146AFC(...)`, which drops BOTH `return 0` paths' `addu $v0,$zero,$zero` - * and the hit path's `j .L80146B94` => LENGTH-DRIFT -2 (38 vs 40) plus $v0/$v1 regalloc - * drift on the final lw/sw pair. Restoring the s32 return type (the fleet spelling the - * banked sibling func_80146B9C already uses) restores MATCH at 40/40. - * - * RECONCILE (2026-08-01) — the whole-binary gate failed with - * ov_SC01_077_after.c:592: conflicting types for `D_8011D030' (previous decl :564) - * TWO file-scope collisions were present; both are fixed HERE, with NO edit to - * src/shared/engine_core.h and NO change to the generated code (re-verified MATCH - * after each step): - * - * 1. D_8011D030 (the reported one). DEFINE_func_801469C8() emits - * `extern s32 D_8011D030;` at FILE scope (engine_core.h:10811, above the - * `s32 func_801469C8(...) {` line), and this TU expands that macro at :564 — - - extern s32 D_8011D030; - * i.e. before the splice point :570. The draft's `extern u16` therefore - * redeclared it incompatibly at :592. Conformed to the TU's `extern s32`. - * Codegen-neutral: the sole use is `(u8 *)&D_8011D030`, an address-of, so the - * declared object type never reaches a load/store width (cookbook §20). - * - * 2. func_80146AFC ITSELF (latent, would have surfaced next). DEFINE_func_8014C010() - * (:13510) and DEFINE_func_8014AD30() (:13524) each emit a file-scope - * `extern void func_80146AFC(void *a0);`, and this TU expands them at :1386 and - * :1541 — after the splice — so an `s32 func_80146AFC` definition collides on the - * RETURN axis. Fixed with the §37/§124 ASM-LABEL ALIAS: the C identifier is - * aF80146AFC, the emitted label is func_80146AFC, so the canonical void decl and - * this s32 definition never share a namespace. Callers discard the result, so the - * void-typed call sites stay codegen-identical. - * - * Both were reproduced and then cleared against the real cpp+cc1-2.7.2 pair using a - * synthetic copy of this TU's declaration environment (.run/uc2/_recon_probe_80146AFC.c): - * the pre-reconcile spelling emits exactly the gate's error pair; the spelling below - * compiles clean. - * - * ORACLE: tools/match_one.py func_80146AFC --c .run/uc2/func_80146AFC.c - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_after -> MATCH (40 ins) - */ - - -s32 aF80146AFC(void *arg0) __asm__("func_80146AFC"); - -s32 aF80146AFC(void *arg0) -{ - register u8 *p __asm__("$6"); - register u8 *q __asm__("$5"); - u8 *end; - p = (u8 *)&D_8011D030; - end = p + 0xA50; - if ((u32)p < (u32)end) { - q = p + 0x30; - do { - if (*(u16 *)p == 0) { - *(s32 *)(q + 0x4) = *(s32 *)((u8 *)arg0 + 0x8); - *(s16 *)p = *(u16 *)((u8 *)arg0 + 0x0); - *(s16 *)(q - 0x2A) = *(u16 *)((u8 *)arg0 + 0x2); - *(s16 *)(q - 0x26) = *(u16 *)((u8 *)arg0 + 0x4); - *(s16 *)(q - 0x22) = *(u16 *)((u8 *)arg0 + 0x6); - *(s32 *)(q - 0x4) = *(s32 *)((u8 *)arg0 + 0xC); - *(s32 *)(q + 0x0) = *(s32 *)((u8 *)arg0 + 0x10); - return (s32)p; - } - p += 0x58; - q += 0x58; - } while ((u32)p < (u32)end); - } - return 0; -} - - -DEFINE_func_80146B9C() /* dedup: shared engine-core @0x80146B9C (src/shared) */ - -DEFINE_func_80146C3C() /* dedup: shared engine-core @0x80146C3C (src/shared) */ - -DEFINE_func_80146C98() /* dedup: shared engine-core @0x80146C98 (src/shared) */ - -DEFINE_func_80146CA0() /* dedup: shared engine-core @0x80146CA0 (src/shared) */ - -DEFINE_func_80146CB4() /* dedup: shared engine-core @0x80146CB4 (src/shared) */ - -DEFINE_func_80146CC8() /* dedup: shared engine-core @0x80146CC8 (src/shared) */ - -DEFINE_func_80146D30() /* dedup: shared engine-core @0x80146D30 (src/shared) */ - -DEFINE_func_80146D80() /* dedup: shared engine-core @0x80146D80 (src/shared) */ - -DEFINE_func_80146D90() /* dedup: shared engine-core @0x80146D90 (src/shared) */ - -DEFINE_func_80146DB8() /* dedup: shared engine-core @0x80146DB8 (src/shared) */ - -DEFINE_func_80146DE8() /* dedup: shared engine-core @0x80146DE8 (src/shared) */ - -DEFINE_func_80146DF8() /* dedup: shared engine-core @0x80146DF8 (src/shared) */ - -DEFINE_func_80146E90() /* dedup: shared engine-core @0x80146E90 (src/shared) */ - -DEFINE_func_80146E98() /* dedup: shared engine-core @0x80146E98 (src/shared) */ - -DEFINE_func_80146EC0() /* dedup: shared engine-core @0x80146EC0 (src/shared) */ - -DEFINE_func_80146F58() /* dedup: shared engine-core @0x80146F58 (src/shared) */ - -DEFINE_func_80146FC4() /* dedup: shared engine-core @0x80146FC4 (src/shared) */ - -DEFINE_func_8014704C() /* dedup: shared engine-core @0x8014704C (src/shared) */ - -DEFINE_func_80147054() /* dedup: shared engine-core @0x80147054 (src/shared) */ - -DEFINE_func_80147060() /* dedup: shared engine-core @0x80147060 (src/shared) */ - -DEFINE_func_8014706C() /* dedup: shared engine-core @0x8014706C (src/shared) */ - -DEFINE_func_80147078() /* dedup: shared engine-core @0x80147078 (src/shared) */ - -DEFINE_func_80147084() /* dedup: shared engine-core @0x80147084 (src/shared) */ - -DEFINE_func_8014708C() /* dedup: shared engine-core @0x8014708C (src/shared) */ - -DEFINE_func_80147098() /* dedup: shared engine-core @0x80147098 (src/shared) */ - -DEFINE_func_801470A0() /* dedup: shared engine-core @0x801470A0 (src/shared) */ - -DEFINE_func_801470AC() /* dedup: shared engine-core @0x801470AC (src/shared) */ - -DEFINE_func_801470B4() /* dedup: shared engine-core @0x801470B4 (src/shared) */ - -DEFINE_func_801470C0() /* dedup: shared engine-core @0x801470C0 (src/shared) */ - -DEFINE_func_80147118() /* dedup: shared engine-core @0x80147118 (src/shared) */ - -DEFINE_func_80147264() /* dedup: shared engine-core @0x80147264 (src/shared) */ - -DEFINE_func_80147290() /* dedup: shared engine-core @0x80147290 (src/shared) */ - -DEFINE_func_801472B4() /* dedup: shared engine-core @0x801472B4 (src/shared) */ - -DEFINE_func_801472C8() /* dedup: shared engine-core @0x801472C8 (src/shared) */ - -DEFINE_func_801472DC() /* dedup: shared engine-core @0x801472DC (src/shared) */ - -DEFINE_func_801472F0() /* dedup: shared engine-core @0x801472F0 (src/shared) */ - -DEFINE_func_80147300() /* dedup: shared engine-core @0x80147300 (src/shared) */ - -DEFINE_func_80147324() /* dedup: shared engine-core @0x80147324 (src/shared) */ - -DEFINE_func_80147364() /* dedup: shared engine-core @0x80147364 (src/shared) */ - -DEFINE_func_801473DC() /* dedup: shared engine-core @0x801473DC (src/shared) */ - -DEFINE_func_801473EC() /* dedup: shared engine-core @0x801473EC (src/shared) */ - -DEFINE_func_80147460() /* dedup: shared engine-core @0x80147460 (src/shared) */ - -DEFINE_func_80147478() /* dedup: shared engine-core @0x80147478 (src/shared) */ - -DEFINE_func_801474D8() /* dedup: shared engine-core @0x801474D8 (src/shared) */ - -DEFINE_func_801474EC() /* dedup: shared engine-core @0x801474EC (src/shared) */ - -DEFINE_func_80147514() /* dedup: shared engine-core @0x80147514 (src/shared) */ - -DEFINE_func_80147628() /* dedup: shared engine-core @0x80147628 (src/shared) */ - -DEFINE_func_80147718() /* dedup: shared engine-core @0x80147718 (src/shared) */ - -DEFINE_func_80147788() /* dedup: shared engine-core @0x80147788 (src/shared) */ - -DEFINE_func_801477A8() /* dedup: shared engine-core @0x801477A8 (src/shared) */ - -DEFINE_func_801477C8() /* dedup: shared engine-core @0x801477C8 (src/shared) */ - -DEFINE_func_801477E8() /* dedup: shared engine-core @0x801477E8 (src/shared) */ - -DEFINE_func_80147814() /* dedup: shared engine-core @0x80147814 (src/shared) */ - -DEFINE_func_80147860() /* dedup: shared engine-core @0x80147860 (src/shared) */ - -DEFINE_func_801478B8() /* dedup: shared engine-core @0x801478B8 (src/shared) */ - -DEFINE_func_80147928() /* dedup: shared engine-core @0x80147928 (src/shared) */ - -DEFINE_func_80147948() /* dedup: shared engine-core @0x80147948 (src/shared) */ - -DEFINE_func_8014799C() /* dedup: shared engine-core @0x8014799C (src/shared) */ - -DEFINE_func_801479BC() /* dedup: shared engine-core @0x801479BC (src/shared) */ - -DEFINE_func_80147A10() /* dedup: shared engine-core @0x80147A10 (src/shared) */ - -DEFINE_func_80147A30() /* dedup: shared engine-core @0x80147A30 (src/shared) */ - -DEFINE_func_80147A84() /* dedup: shared engine-core @0x80147A84 (src/shared) */ - -DEFINE_func_80147AAC() /* dedup: shared engine-core @0x80147AAC (src/shared) */ - -DEFINE_func_80147AD4() /* dedup: shared engine-core @0x80147AD4 (src/shared) */ - -DEFINE_func_80147B18() /* dedup: shared engine-core @0x80147B18 (src/shared) */ - -DEFINE_func_80147B5C() /* dedup: shared engine-core @0x80147B5C (src/shared) */ - -DEFINE_func_80147C30() /* dedup: shared engine-core @0x80147C30 (src/shared) */ - -DEFINE_func_80147CC8() /* dedup: shared engine-core @0x80147CC8 (src/shared) */ - -DEFINE_func_80147D38() /* dedup: shared engine-core @0x80147D38 (src/shared) */ - -DEFINE_func_80147DC0() /* dedup: shared engine-core @0x80147DC0 (src/shared) */ - -DEFINE_func_80147E44() /* dedup: shared engine-core @0x80147E44 (src/shared) */ - -DEFINE_func_80147F50() /* dedup: shared engine-core @0x80147F50 (src/shared) */ - -DEFINE_func_80147F78() /* dedup: shared engine-core @0x80147F78 (src/shared) */ - -DEFINE_func_80148038() /* dedup: shared engine-core @0x80148038 (src/shared) */ - -DEFINE_func_80148094() /* dedup: shared engine-core @0x80148094 (src/shared) */ - -DEFINE_func_801483E8() /* dedup: shared engine-core @0x801483E8 (src/shared) */ - -DEFINE_func_801484B0() /* dedup: shared engine-core @0x801484B0 (src/shared) */ - -DEFINE_func_801484E8() /* dedup: shared engine-core @0x801484E8 (src/shared) */ - -DEFINE_func_80148534() /* dedup: shared engine-core @0x80148534 (src/shared) */ - -DEFINE_func_8014856C() /* dedup: shared engine-core @0x8014856C (src/shared) */ - -DEFINE_func_801485B8() /* dedup: shared engine-core @0x801485B8 (src/shared) */ - -DEFINE_func_80148634() /* dedup: shared engine-core @0x80148634 (src/shared) */ - -DEFINE_func_80148648() /* dedup: shared engine-core @0x80148648 (src/shared) */ - -DEFINE_func_801487F4() /* dedup: shared engine-core @0x801487F4 (src/shared) */ - -DEFINE_func_80148800() /* dedup: shared engine-core @0x80148800 (src/shared) */ - -DEFINE_func_8014880C() /* dedup: shared engine-core @0x8014880C (src/shared) */ - -DEFINE_func_80148818() /* dedup: shared engine-core @0x80148818 (src/shared) */ - -DEFINE_func_80148824() /* dedup: shared engine-core @0x80148824 (src/shared) */ - -DEFINE_func_801488A8() /* dedup: shared engine-core @0x801488A8 (src/shared) */ - -DEFINE_func_8014891C() /* dedup: shared engine-core @0x8014891C (src/shared) */ - -DEFINE_func_80148980() /* dedup: shared engine-core @0x80148980 (src/shared) */ - -DEFINE_func_801489E8() /* dedup: shared engine-core @0x801489E8 (src/shared) */ - -DEFINE_func_80148A48() /* dedup: shared engine-core @0x80148A48 (src/shared) */ - -DEFINE_func_80148AAC() /* dedup: shared engine-core @0x80148AAC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (71 ins). switch binary-tree; s1 angle = pin-source-of-copy ($5 temp + retie); 2nd-block double-load + 0x80-clobber via $v1/$v0/$a0 pins + lazy hi-pin reusing dead c80 reg - -extern s32 ratan2(s32 a0, s32 a1); - -int func_80148AFC(void *a0) { - - extern s32 D_801151D4; - extern ActorFn D_8018C6F4[]; - s32 p = (s32)a0; - s32 iVar5 = *(s32 *)(p + 0x20); - register s32 tmp __asm__("$5") = (ratan2(*(s32 *)(D_801151D4 + 0x44) - *(s32 *)(D_801151D4 + 0x50), - *(s32 *)(D_801151D4 + 0x48) - *(s32 *)(D_801151D4 + 0x3C)) - 0x400) & 0xFFF; - s32 sVar3; - u8 bVar1; - __asm__("" : "=r"(tmp) : "0"(tmp)); - sVar3 = tmp; - bVar1 = *(u8 *)(p + 0xA9); - - switch (bVar1) { - case 0x41: - return D_8018C6F4[*(u16 *)(p + 0xAA) >> 12](a0) & 0xFF; - case 0x53: - case 0x73: - { - register u32 bb __asm__("$3"); - register s32 c80 __asm__("$2") = 0x80; - register s32 lo __asm__("$4"); - register s32 hi __asm__("$2"); - bb = *(u16 *)(p + 0xAE); - lo = bb & 0xFF; - if (lo != c80 || (hi = bb >> 8) != 0x80) { - s32 sVar4; - __asm__ __volatile__("" : : : "memory"); - sVar4 = ratan2((*(u16 *)(p + 0xAE) & 0xFF) - 0x80, 0x80 - (*(u16 *)(p + 0xAE) >> 8)); - *(u16 *)(iVar5 + 0x12) = (sVar3 + sVar4) & 0xFFF; - return 1; - } - return 0; - } - } -} - - -DEFINE_func_80148C18() /* dedup: shared engine-core @0x80148C18 (src/shared) */ - -DEFINE_func_80148C20() /* dedup: shared engine-core @0x80148C20 (src/shared) */ - -DEFINE_func_80148C34() /* dedup: shared engine-core @0x80148C34 (src/shared) */ - -DEFINE_func_80148C4C() /* dedup: shared engine-core @0x80148C4C (src/shared) */ - -DEFINE_func_80148C64() /* dedup: shared engine-core @0x80148C64 (src/shared) */ - -DEFINE_func_80148C7C() /* dedup: shared engine-core @0x80148C7C (src/shared) */ - -DEFINE_func_80148C84() /* dedup: shared engine-core @0x80148C84 (src/shared) */ - -DEFINE_func_80148C9C() /* dedup: shared engine-core @0x80148C9C (src/shared) */ - -DEFINE_func_80148CB4() /* dedup: shared engine-core @0x80148CB4 (src/shared) */ - -DEFINE_func_80148CCC() /* dedup: shared engine-core @0x80148CCC (src/shared) */ - -DEFINE_func_80148CE4() /* dedup: shared engine-core @0x80148CE4 (src/shared) */ - -DEFINE_func_80148CEC() /* dedup: shared engine-core @0x80148CEC (src/shared) */ - -DEFINE_func_80148CF4() /* dedup: shared engine-core @0x80148CF4 (src/shared) */ - -DEFINE_func_80148D0C() /* dedup: shared engine-core @0x80148D0C (src/shared) */ - -DEFINE_func_80148D24() /* dedup: shared engine-core @0x80148D24 (src/shared) */ - -DEFINE_func_80148D3C() /* dedup: shared engine-core @0x80148D3C (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (68 ins) -extern s32 ratan2(s32 a0, s32 a1); - -s32 func_80148D44(void) { - - extern s32 D_801151D4; - extern u8 D_80126C01; - extern u16 D_80126C02; - extern u16 D_80126C06; - extern s32 D_8018C734[]; - register s32 ang __asm__("$16"); - register s32 a __asm__("$4"); - s32 p; - s32 res; - s32 d; - - p = D_801151D4; - a = (ratan2(*(s32 *)(p + 0x44) - *(s32 *)(p + 0x50), - *(s32 *)(p + 0x48) - *(s32 *)(p + 0x3c)) - 0x400) & 0xFFF; - d = (s32)D_80126C01; - __asm__ __volatile__("" : : "r"(a)); - ang = a; - if (d == 0x53) { - goto final; - } - if (d < 0x54) { - if (d == 0x41) { - goto call; - } - return 0x41; - } - if (d != 0x73) { - return 0x73; - } - goto final; -call: - return (s32)(s16)((s16 (*)())(D_8018C734[D_80126C02 >> 0xc]))(); -final: - { - u32 e = D_80126C06; - if (((e & 0xff) == 0x80) && ((e >> 8) == (e & 0xff))) { - return -1; - } - __asm__ __volatile__("" : : : "memory"); - res = (ang + ratan2((D_80126C06 & 0xff) - 0x80, 0x80 - (D_80126C06 >> 8))) & 0xFFF; - } - return res; -} - - - -extern s32 ratan2(s32, s32); -/* derived from asm: lui/addu/lw %lo(D_8018C774) indexed by (u16>>12)*4, then jalr with no args; - * the result is sign-extended from 16 bits => the table's functions return s16. */ - -s32 func_80148E54(s32 arg0) { - - extern s32 D_801151D4; - extern s16 (*D_8018C774[])(); - register s32 tmp __asm__("$4") = (ratan2(*(s32 *)(D_801151D4 + 0x44) - *(s32 *)(D_801151D4 + 0x50), - *(s32 *)(D_801151D4 + 0x48) - *(s32 *)(D_801151D4 + 0x3C)) - 0x400) & 0xFFF; - s32 ang; - __asm__("" : "=r"(tmp) : "0"(tmp)); - ang = tmp; - - switch (*(u8 *)(arg0 + 0xA9)) { - case 0x41: - return D_8018C774[*(u16 *)(arg0 + 0xAA) >> 12](); - case 0x53: - case 0x73: - if ((*(u16 *)(arg0 + 0xAE) & 0xFF) == 0x80 && (*(u16 *)(arg0 + 0xAE) >> 8) == 0x80) { - return -1; - } - return (ang + ratan2((*(u16 *)(arg0 + 0xAE) & 0xFF) - 0x80, - 0x80 - (*(u16 *)(arg0 + 0xAE) >> 8))) & 0xFFF; - } -} - - -DEFINE_func_80148F60() /* dedup: shared engine-core @0x80148F60 (src/shared) */ - -DEFINE_func_80148F68() /* dedup: shared engine-core @0x80148F68 (src/shared) */ - -DEFINE_func_80148F74() /* dedup: shared engine-core @0x80148F74 (src/shared) */ - -DEFINE_func_80148F80() /* dedup: shared engine-core @0x80148F80 (src/shared) */ - -DEFINE_func_80148F8C() /* dedup: shared engine-core @0x80148F8C (src/shared) */ - -DEFINE_func_80148F98() /* dedup: shared engine-core @0x80148F98 (src/shared) */ - -DEFINE_func_80148FA0() /* dedup: shared engine-core @0x80148FA0 (src/shared) */ - -DEFINE_func_80148FAC() /* dedup: shared engine-core @0x80148FAC (src/shared) */ - -DEFINE_func_80148FB8() /* dedup: shared engine-core @0x80148FB8 (src/shared) */ - -DEFINE_func_80148FC4() /* dedup: shared engine-core @0x80148FC4 (src/shared) */ - -DEFINE_func_80148FD0() /* dedup: shared engine-core @0x80148FD0 (src/shared) */ - -DEFINE_func_80148FD8() /* dedup: shared engine-core @0x80148FD8 (src/shared) */ - -DEFINE_func_80148FE0() /* dedup: shared engine-core @0x80148FE0 (src/shared) */ - -DEFINE_func_80148FEC() /* dedup: shared engine-core @0x80148FEC (src/shared) */ - -DEFINE_func_80148FF8() /* dedup: shared engine-core @0x80148FF8 (src/shared) */ - -DEFINE_func_80149004() /* dedup: shared engine-core @0x80149004 (src/shared) */ - -DEFINE_func_8014900C() /* dedup: shared engine-core @0x8014900C (src/shared) */ - -DEFINE_func_80149020() /* dedup: shared engine-core @0x80149020 (src/shared) */ - -DEFINE_func_80149034() /* dedup: shared engine-core @0x80149034 (src/shared) */ - -DEFINE_func_80149048() /* dedup: shared engine-core @0x80149048 (src/shared) */ - -DEFINE_func_8014905C() /* dedup: shared engine-core @0x8014905C (src/shared) */ - -DEFINE_func_80149078() /* dedup: shared engine-core @0x80149078 (src/shared) */ - -DEFINE_func_801490E0() /* dedup: shared engine-core @0x801490E0 (src/shared) */ - -DEFINE_func_801490E8() /* dedup: shared engine-core @0x801490E8 (src/shared) */ - -DEFINE_func_801490F0() /* dedup: shared engine-core @0x801490F0 (src/shared) */ - -DEFINE_func_801490F8() /* dedup: shared engine-core @0x801490F8 (src/shared) */ - -DEFINE_func_80149184() /* dedup: shared engine-core @0x80149184 (src/shared) */ - -DEFINE_func_801491C4() /* dedup: shared engine-core @0x801491C4 (src/shared) */ - -DEFINE_func_80149204() /* dedup: shared engine-core @0x80149204 (src/shared) */ - -DEFINE_func_80149210() /* dedup: shared engine-core @0x80149210 (src/shared) */ - -DEFINE_func_80149228() /* dedup: shared engine-core @0x80149228 (src/shared) */ - -DEFINE_func_80149284() /* dedup: shared engine-core @0x80149284 (src/shared) */ - -DEFINE_func_80149290() /* dedup: shared engine-core @0x80149290 (src/shared) */ - -DEFINE_func_80149350() /* dedup: shared engine-core @0x80149350 (src/shared) */ - -DEFINE_func_80149374() /* dedup: shared engine-core @0x80149374 (src/shared) */ - -DEFINE_func_801493D0() /* dedup: shared engine-core @0x801493D0 (src/shared) */ - -DEFINE_func_8014942C() /* dedup: shared engine-core @0x8014942C (src/shared) */ - -DEFINE_func_80149450() /* dedup: shared engine-core @0x80149450 (src/shared) */ - -DEFINE_func_801494CC() /* dedup: shared engine-core @0x801494CC (src/shared) */ - -DEFINE_func_80149544() /* dedup: shared engine-core @0x80149544 (src/shared) */ - -DEFINE_func_80149584() /* dedup: shared engine-core @0x80149584 (src/shared) */ - -DEFINE_func_801495C4() /* dedup: shared engine-core @0x801495C4 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (34 ins). param_2 pinned to $s0; the two stack out-bufs (in@0x10, -// mid@0x20,out@0x18) would be HOISTED into $s1 across call1 (frame 0x38, +s1 save) — break -// that with a per-use CSE-break barrier (`__asm__("":"=r"(p):"0"(p))`) on &in, mid(call1), -// mid(call2) so each rematerializes `addiu reg,$sp,off` (frame 0x30, only $s0 saved). The -// two independent arg setups (`lw $a0,0x20($a0)` vs `addiu $a2,$sp,0x20`) tie in sched2 — -// force target order with VOLATILE barriers in textual order pin(&in)->mtx-load->mid. - -DEFINE_func_8014964C() /* dedup: shared engine-core @0x8014964C (src/shared) */ - - -DEFINE_func_801496D4() /* dedup: shared engine-core @0x801496D4 (src/shared) */ - -DEFINE_func_80149704() /* dedup: shared engine-core @0x80149704 (src/shared) */ - -DEFINE_func_80149724() /* dedup: shared engine-core @0x80149724 (src/shared) */ - -DEFINE_func_80149744() /* dedup: shared engine-core @0x80149744 (src/shared) */ - -DEFINE_func_80149788() /* dedup: shared engine-core @0x80149788 (src/shared) */ - - -DEFINE_func_801497A8() /* dedup: shared engine-core @0x801497A8 (src/shared) */ - - -DEFINE_func_80149864() /* dedup: shared engine-core @0x80149864 (src/shared) */ - -DEFINE_func_80149884() /* dedup: shared engine-core @0x80149884 (src/shared) */ - -DEFINE_func_801498C0() /* dedup: shared engine-core @0x801498C0 (src/shared) */ - -DEFINE_func_801498E0() /* dedup: shared engine-core @0x801498E0 (src/shared) */ - -DEFINE_func_80149954() /* dedup: shared engine-core @0x80149954 (src/shared) */ - -DEFINE_func_80149A64() /* dedup: shared engine-core @0x80149A64 (src/shared) */ - -DEFINE_func_80149AA8() /* dedup: shared engine-core @0x80149AA8 (src/shared) */ - -DEFINE_func_80149AD4() /* dedup: shared engine-core @0x80149AD4 (src/shared) */ - -DEFINE_func_80149B14() /* dedup: shared engine-core @0x80149B14 (src/shared) */ - -DEFINE_func_80149B54() /* dedup: shared engine-core @0x80149B54 (src/shared) */ - -DEFINE_func_80149BAC() /* dedup: shared engine-core @0x80149BAC (src/shared) */ - -DEFINE_func_80149BEC() /* dedup: shared engine-core @0x80149BEC (src/shared) */ - -DEFINE_func_80149C08() /* dedup: shared engine-core @0x80149C08 (src/shared) */ - -DEFINE_func_80149C94() /* dedup: shared engine-core @0x80149C94 (src/shared) */ - -DEFINE_func_80149CB4() /* dedup: shared engine-core @0x80149CB4 (src/shared) */ - -DEFINE_func_80149CD4() /* dedup: shared engine-core @0x80149CD4 (src/shared) */ - -DEFINE_func_80149D10() /* dedup: shared engine-core @0x80149D10 (src/shared) */ - -DEFINE_func_80149D9C() /* dedup: shared engine-core @0x80149D9C (src/shared) */ - -DEFINE_func_80149DD8() /* dedup: shared engine-core @0x80149DD8 (src/shared) */ - -DEFINE_func_80149E94() /* dedup: shared engine-core @0x80149E94 (src/shared) */ - -DEFINE_func_80149F2C() /* dedup: shared engine-core @0x80149F2C (src/shared) */ - -DEFINE_func_80149FA8() /* dedup: shared engine-core @0x80149FA8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (38 ins) -extern s32 D_8018C7B4[]; -extern u8 D_80078E78[]; -extern s16 currentLocationId; - -s32 func_80149FB0(s32 a0) { - s32 *p = &D_8018C7B4[0]; - register s32 v __asm__("$3") = *p; - u8 *q = &D_80078E78[0]; - s32 loc; - - if (v != 0) { - loc = currentLocationId; - p = p + 1; - do { - if (loc == v) { - goto ret0; - } - v = *p; - p = p + 1; - } while (v != 0); - } - - if ((*(u32 *)(a0 + 0x44) & 0x400) != 0) { - return 0; - } - if (*(s16 *)(a0 + 0x1C8) != 0) { - return 0; - } - if ((*(u16 *)(a0 + 0xAC) & 0x100) == 0) { - ret0: - return 0; - } - v = q[0x48]; - q[0x48] = v ^ 0x80; - return 1; -} - - - -// @class: struct -// @stuck: none — MATCH (90 ins). Keys: (1) single Loc struct pins the 0x10..0x25 stack -// region (frame 0x40) for the func_8012F14C/func_80135260 out-params; (2) loop is a -// while(1) with the 6 checks &&-chained in the loop CONDITION + the "found" block AFTER -// the loop (fall-through) so the success path is a forward j .L8014A190 — matches the -// target CFG (Ghidra-C while-form); (3) the base &D_801202A0 must be RECOMPUTED inside -// the loop, not hoisted: `s0 = (s32)D_801202A0 + s2;` + the in-place re-tie barrier -// `__asm__ __volatile__("":"=r"(s0):"0"(s0));` (cookbook §21) forces the lui/addiu/addu -// per iteration instead of caching the symbol addr in $s4 (kills 1 ins + $s4); (4) u32 -// counter -> sltiu; (5) bef8-fail uses `goto ret0;` to a ret0 label placed AFTER the -// success block -> gives the bef8 v0=0 its own .L8014A18C block (delay slot = a1 setup); -// (6) setup-store SOURCE order a30,a2e,a2c,a1e,a20,a1c makes the scheduler hold a2c(0xE) -// in $v1 (loaded early, stored last at 0x14) while a2e(0xA) stores immediately at 0x12. - -DEFINE_func_8014A048() /* dedup: shared engine-core @0x8014A048 (src/shared) */ - - -DEFINE_func_8014A1B0() /* dedup: shared engine-core @0x8014A1B0 (src/shared) */ - -DEFINE_func_8014A218() /* dedup: shared engine-core @0x8014A218 (src/shared) */ - -DEFINE_func_8014A238() /* dedup: shared engine-core @0x8014A238 (src/shared) */ - -DEFINE_func_8014A2E4() /* dedup: shared engine-core @0x8014A2E4 (src/shared) */ - -DEFINE_func_8014A380() /* dedup: shared engine-core @0x8014A380 (src/shared) */ - -DEFINE_func_8014A3E0() /* dedup: shared engine-core @0x8014A3E0 (src/shared) */ - -DEFINE_func_8014A454() /* dedup: shared engine-core @0x8014A454 (src/shared) */ - -DEFINE_func_8014A4B4() /* dedup: shared engine-core @0x8014A4B4 (src/shared) */ - -DEFINE_func_8014A4FC() /* dedup: shared engine-core @0x8014A4FC (src/shared) */ - -DEFINE_func_8014A51C() /* dedup: shared engine-core @0x8014A51C (src/shared) */ - -DEFINE_func_8014A59C() /* dedup: shared engine-core @0x8014A59C (src/shared) */ - -DEFINE_func_8014A638() /* dedup: shared engine-core @0x8014A638 (src/shared) */ - -DEFINE_func_8014A674() /* dedup: shared engine-core @0x8014A674 (src/shared) */ - -DEFINE_func_8014A680() /* dedup: shared engine-core @0x8014A680 (src/shared) */ - -DEFINE_func_8014A69C() /* dedup: shared engine-core @0x8014A69C (src/shared) */ - -DEFINE_func_8014A6A8() /* dedup: shared engine-core @0x8014A6A8 (src/shared) */ - -DEFINE_func_8014A6C4() /* dedup: shared engine-core @0x8014A6C4 (src/shared) */ - -DEFINE_func_8014A71C() /* dedup: shared engine-core @0x8014A71C (src/shared) */ - - - - - - - - - -DEFINE_func_8014A738() /* dedup: shared engine-core @0x8014A738 (src/shared) */ - - -DEFINE_func_8014A830() /* dedup: shared engine-core @0x8014A830 (src/shared) */ - -DEFINE_func_8014A850() /* dedup: shared engine-core @0x8014A850 (src/shared) */ - -DEFINE_func_8014AA04() /* dedup: shared engine-core @0x8014AA04 (src/shared) */ - -DEFINE_func_8014AA28() /* dedup: shared engine-core @0x8014AA28 (src/shared) */ - -DEFINE_func_8014AB5C() /* dedup: shared engine-core @0x8014AB5C (src/shared) */ - -DEFINE_func_8014AB7C() /* dedup: shared engine-core @0x8014AB7C (src/shared) */ - -DEFINE_func_8014ABF0() /* dedup: shared engine-core @0x8014ABF0 (src/shared) */ - -DEFINE_func_8014AC10() /* dedup: shared engine-core @0x8014AC10 (src/shared) */ - -DEFINE_func_8014ACC0() /* dedup: shared engine-core @0x8014ACC0 (src/shared) */ - -DEFINE_func_8014ACE8() /* dedup: shared engine-core @0x8014ACE8 (src/shared) */ - -DEFINE_func_8014AD30() /* dedup: shared engine-core @0x8014AD30 (src/shared) */ - -DEFINE_func_8014AD7C() /* dedup: shared engine-core @0x8014AD7C (src/shared) */ - -DEFINE_func_8014ADA8() /* dedup: shared engine-core @0x8014ADA8 (src/shared) */ - -DEFINE_func_8014ADE0() /* dedup: shared engine-core @0x8014ADE0 (src/shared) */ - -DEFINE_func_8014B00C() /* dedup: shared engine-core @0x8014B00C (src/shared) */ - -DEFINE_func_8014B034() /* dedup: shared engine-core @0x8014B034 (src/shared) */ - -DEFINE_func_8014B084() /* dedup: shared engine-core @0x8014B084 (src/shared) */ - -DEFINE_func_8014B12C() /* dedup: shared engine-core @0x8014B12C (src/shared) */ - -DEFINE_func_8014B154() /* dedup: shared engine-core @0x8014B154 (src/shared) */ - -DEFINE_func_8014B160() /* dedup: shared engine-core @0x8014B160 (src/shared) */ - -DEFINE_func_8014B190() /* dedup: shared engine-core @0x8014B190 (src/shared) */ - -DEFINE_func_8014B2A8() /* dedup: shared engine-core @0x8014B2A8 (src/shared) */ - -DEFINE_func_8014B2D0() /* dedup: shared engine-core @0x8014B2D0 (src/shared) */ - -DEFINE_func_8014B2F8() /* dedup: shared engine-core @0x8014B2F8 (src/shared) */ - -DEFINE_func_8014B310() /* dedup: shared engine-core @0x8014B310 (src/shared) */ - -DEFINE_func_8014B33C() /* dedup: shared engine-core @0x8014B33C (src/shared) */ - -DEFINE_func_8014B350() /* dedup: shared engine-core @0x8014B350 (src/shared) */ - -DEFINE_func_8014B4C4() /* dedup: shared engine-core @0x8014B4C4 (src/shared) */ - -DEFINE_func_8014B4D4() /* dedup: shared engine-core @0x8014B4D4 (src/shared) */ - -DEFINE_func_8014B504() /* dedup: shared engine-core @0x8014B504 (src/shared) */ - -DEFINE_func_8014B598() /* dedup: shared engine-core @0x8014B598 (src/shared) */ - -DEFINE_func_8014B5B0() /* dedup: shared engine-core @0x8014B5B0 (src/shared) */ - -DEFINE_func_8014B5B8() /* dedup: shared engine-core @0x8014B5B8 (src/shared) */ - -DEFINE_func_8014B5C4() /* dedup: shared engine-core @0x8014B5C4 (src/shared) */ - -DEFINE_func_8014B5D0() /* dedup: shared engine-core @0x8014B5D0 (src/shared) */ - -DEFINE_func_8014B5D8() /* dedup: shared engine-core @0x8014B5D8 (src/shared) */ - -DEFINE_func_8014B6F0() /* dedup: shared engine-core @0x8014B6F0 (src/shared) */ - -DEFINE_func_8014B768() /* dedup: shared engine-core @0x8014B768 (src/shared) */ - -DEFINE_func_8014B7A4() /* dedup: shared engine-core @0x8014B7A4 (src/shared) */ - -DEFINE_func_8014B944() /* dedup: shared engine-core @0x8014B944 (src/shared) */ - -DEFINE_func_8014BB0C() /* dedup: shared engine-core @0x8014BB0C (src/shared) */ - -DEFINE_func_8014BB24() /* dedup: shared engine-core @0x8014BB24 (src/shared) */ - -DEFINE_func_8014BC0C() /* dedup: shared engine-core @0x8014BC0C (src/shared) */ - -DEFINE_func_8014BC44() /* dedup: shared engine-core @0x8014BC44 (src/shared) */ - -DEFINE_func_8014BC80() /* dedup: shared engine-core @0x8014BC80 (src/shared) */ - -DEFINE_func_8014BCC0() /* dedup: shared engine-core @0x8014BCC0 (src/shared) */ - -DEFINE_func_8014BCEC() /* dedup: shared engine-core @0x8014BCEC (src/shared) */ - -DEFINE_func_8014BD24() /* dedup: shared engine-core @0x8014BD24 (src/shared) */ - -DEFINE_func_8014BD60() /* dedup: shared engine-core @0x8014BD60 (src/shared) */ - -DEFINE_func_8014BD98() /* dedup: shared engine-core @0x8014BD98 (src/shared) */ - -DEFINE_func_8014BDC8() /* dedup: shared engine-core @0x8014BDC8 (src/shared) */ - -DEFINE_func_8014BDE0() /* dedup: shared engine-core @0x8014BDE0 (src/shared) */ - -DEFINE_func_8014BDE8() /* dedup: shared engine-core @0x8014BDE8 (src/shared) */ - -DEFINE_func_8014BE78() /* dedup: shared engine-core @0x8014BE78 (src/shared) */ - -DEFINE_func_8014BE9C() /* dedup: shared engine-core @0x8014BE9C (src/shared) */ - -DEFINE_func_8014BEC0() /* dedup: shared engine-core @0x8014BEC0 (src/shared) */ - -DEFINE_func_8014BEF8() /* dedup: shared engine-core @0x8014BEF8 (src/shared) */ - -DEFINE_func_8014BF18() /* dedup: shared engine-core @0x8014BF18 (src/shared) */ - -DEFINE_func_8014BF48() /* dedup: shared engine-core @0x8014BF48 (src/shared) */ - -DEFINE_func_8014BF6C() /* dedup: shared engine-core @0x8014BF6C (src/shared) */ - -DEFINE_func_8014BF8C() /* dedup: shared engine-core @0x8014BF8C (src/shared) */ - -DEFINE_func_8014BFB0() /* dedup: shared engine-core @0x8014BFB0 (src/shared) */ - -DEFINE_func_8014BFD4() /* dedup: shared engine-core @0x8014BFD4 (src/shared) */ - -DEFINE_func_8014BFF4() /* dedup: shared engine-core @0x8014BFF4 (src/shared) */ - -DEFINE_func_8014C010() /* dedup: shared engine-core @0x8014C010 (src/shared) */ - -DEFINE_func_8014C050() /* dedup: shared engine-core @0x8014C050 (src/shared) */ - -DEFINE_func_8014C088() /* dedup: shared engine-core @0x8014C088 (src/shared) */ - -DEFINE_func_8014C0C8() /* dedup: shared engine-core @0x8014C0C8 (src/shared) */ - -DEFINE_func_8014C118() /* dedup: shared engine-core @0x8014C118 (src/shared) */ - -DEFINE_func_8014C168() /* dedup: shared engine-core @0x8014C168 (src/shared) */ - - - -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018C83C[]; - -void func_8014C1A0(s32 arg0, s32 arg1) { - func_8014C1C8(arg0, arg1, D_8018C83C); -} - - -DEFINE_func_8014C1C8() /* dedup: shared engine-core @0x8014C1C8 (src/shared) */ - -DEFINE_func_8014C278() /* dedup: shared engine-core @0x8014C278 (src/shared) */ - -DEFINE_func_8014C2B0() /* dedup: shared engine-core @0x8014C2B0 (src/shared) */ - -DEFINE_func_8014C308() /* dedup: shared engine-core @0x8014C308 (src/shared) */ - -DEFINE_func_8014C3A4() /* dedup: shared engine-core @0x8014C3A4 (src/shared) */ - -DEFINE_func_8014C3D0() /* dedup: shared engine-core @0x8014C3D0 (src/shared) */ - -DEFINE_func_8014C43C() /* dedup: shared engine-core @0x8014C43C (src/shared) */ - - -/* §37/§73/§124 asm-label alias: the fleet canon declares this `extern void` (engine_core.h, inside 8 - * DEFINE_func_* macros); the byte-true body must return s32. Aliasing the C name sidesteps the - * RETURN-axis conflict with no header edit. This line MUST travel with the body. */ -s32 aF8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4) __asm__("func_8014C4AC"); - -DEFINE_func_8014C4AC() /* dedup: shared engine-core @0x8014C4AC (src/shared) */ - - - -DEFINE_func_8014C568() /* dedup: shared engine-core @0x8014C568 (src/shared) */ - - -DEFINE_func_8014C59C() /* dedup: shared engine-core @0x8014C59C (src/shared) */ - - -extern u8 D_8018C844; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); - -s16 func_8014C5D0(s32 a0, s32 a1) { - return func_8014C5FC(a0, a1, &D_8018C844); -} - - -DEFINE_func_8014C5FC() /* dedup: shared engine-core @0x8014C5FC (src/shared) */ - -DEFINE_func_8014C6AC() /* dedup: shared engine-core @0x8014C6AC (src/shared) */ - -DEFINE_func_8014C6C0() /* dedup: shared engine-core @0x8014C6C0 (src/shared) */ - -DEFINE_func_8014C6D0() /* dedup: shared engine-core @0x8014C6D0 (src/shared) */ - -DEFINE_func_8014C6E0() /* dedup: shared engine-core @0x8014C6E0 (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH (match_one 91/91) -// -// Levers used (all byte-gated on ov_SC07_006): -// 1. §struct 8-byte alignment-1 struct copy `*(M8_8014C6F4*)(a+0x164) = *(M8_8014C6F4*)(p+0x10)` -// -> the lwl/lwr,lwl/lwr,swl/swr,swl/swr block (engine_types.h M8_xxx convention). -// 2. §17 base-pointer cache: `u8 *p = D_80078E78;` (NOT a direct D_80078E78[0x49]) so gcc pins -// the base into callee-saved $s1 and hoists the la into the prologue (live across the jal). -// 3. §17 register pins: the search result `e` MUST be $v0 and the limit `lim` $v1, else -// local-alloc swaps the loop IV/limit pair ($v1<->$a0) and coalesces `e` into the IV. -// 4. DELAY-SLOT lever (new): writing the compare constant as its own pre-loop statement -// (`want = 0x22;`) instead of the literal `0x22` inside the loop test. With the literal, -// loop.c hoists the `li $a1,0x22` into the loop PREHEADER (after the duplicated entry test), -// so reorg.c's guard branch has nothing local to take and instead COPIES the branch-target -// insn (`addu $v0,$zero,$zero`) into its delay slot and redirects past it — a +1 shift that -// also lets the loop-back branch steal the same insn (nop -> move). Materialising the -// constant in the block BEFORE the entry test makes fill_simple_delay_slots take it from -// the preceding insns, reproducing `beqz $v0,.L8014C7F4 / addiu $a1,$zero,0x22` and leaving -// the loop-back delay slot a nop. `want` needs no pin — gcc lands it in $a1 on its own. - - -DEFINE_func_8014C6F4() /* dedup: shared engine-core @0x8014C6F4 (src/shared) */ - - -DEFINE_func_8014C860() /* dedup: shared engine-core @0x8014C860 (src/shared) */ - -DEFINE_func_8014C88C() /* dedup: shared engine-core @0x8014C88C (src/shared) */ - - -DEFINE_func_8014C8C8() /* dedup: shared engine-core @0x8014C8C8 (src/shared) */ - - -DEFINE_func_8014C8F0() /* dedup: shared engine-core @0x8014C8F0 (src/shared) */ - -DEFINE_func_8014C918() /* dedup: shared engine-core @0x8014C918 (src/shared) */ - -DEFINE_func_8014C968() /* dedup: shared engine-core @0x8014C968 (src/shared) */ - -DEFINE_func_8014C978() /* dedup: shared engine-core @0x8014C978 (src/shared) */ - -DEFINE_func_8014C98C() /* dedup: shared engine-core @0x8014C98C (src/shared) */ - -DEFINE_func_8014C99C() /* dedup: shared engine-core @0x8014C99C (src/shared) */ - -DEFINE_func_8014CA00() /* dedup: shared engine-core @0x8014CA00 (src/shared) */ - -DEFINE_func_8014CA14() /* dedup: shared engine-core @0x8014CA14 (src/shared) */ - -DEFINE_func_8014CA70() /* dedup: shared engine-core @0x8014CA70 (src/shared) */ - -DEFINE_func_8014CA88() /* dedup: shared engine-core @0x8014CA88 (src/shared) */ - -DEFINE_func_8014CAE4() /* dedup: shared engine-core @0x8014CAE4 (src/shared) */ - -DEFINE_func_8014CAFC() /* dedup: shared engine-core @0x8014CAFC (src/shared) */ - -DEFINE_func_8014CB0C() /* dedup: shared engine-core @0x8014CB0C (src/shared) */ - -DEFINE_func_8014CB1C() /* dedup: shared engine-core @0x8014CB1C (src/shared) */ - -DEFINE_func_8014CB2C() /* dedup: shared engine-core @0x8014CB2C (src/shared) */ - -DEFINE_func_8014CB58() /* dedup: shared engine-core @0x8014CB58 (src/shared) */ - -DEFINE_func_8014CB68() /* dedup: shared engine-core @0x8014CB68 (src/shared) */ - -DEFINE_func_8014CB7C() /* dedup: shared engine-core @0x8014CB7C (src/shared) */ - -DEFINE_func_8014CB8C() /* dedup: shared engine-core @0x8014CB8C (src/shared) */ - -DEFINE_func_8014CB9C() /* dedup: shared engine-core @0x8014CB9C (src/shared) */ - -DEFINE_func_8014CBD8() /* dedup: shared engine-core @0x8014CBD8 (src/shared) */ - -DEFINE_func_8014CBE8() /* dedup: shared engine-core @0x8014CBE8 (src/shared) */ - -DEFINE_func_8014CBF8() /* dedup: shared engine-core @0x8014CBF8 (src/shared) */ - -DEFINE_func_8014CC28() /* dedup: shared engine-core @0x8014CC28 (src/shared) */ - - -extern void func_8014CD0C(u8 *a0); - -void func_8014CCB4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014CD0C\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014CD0C() /* dedup: shared engine-core @0x8014CD0C (src/shared) */ - -DEFINE_func_8014CD80() /* dedup: shared engine-core @0x8014CD80 (src/shared) */ - -DEFINE_func_8014CF04() /* dedup: shared engine-core @0x8014CF04 (src/shared) */ - - - -extern void func_8014D0A4(s32 a0); - -void func_8014D04C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D0A4\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D0A4() /* dedup: shared engine-core @0x8014D0A4 (src/shared) */ - - -DEFINE_func_8014D12C() /* dedup: shared engine-core @0x8014D12C (src/shared) */ - - - -DEFINE_func_8014D2A0() /* dedup: shared engine-core @0x8014D2A0 (src/shared) */ - - - -extern void func_8014D438(s32 a0); - -void func_8014D3E0(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D438\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D438() /* dedup: shared engine-core @0x8014D438 (src/shared) */ - -DEFINE_func_8014D4C0() /* dedup: shared engine-core @0x8014D4C0 (src/shared) */ - - -DEFINE_func_8014D610() /* dedup: shared engine-core @0x8014D610 (src/shared) */ - - - -extern void func_8014D790(s32 a0); - -void func_8014D738(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D790\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D790() /* dedup: shared engine-core @0x8014D790 (src/shared) */ - -extern void func_8012AAAC(void *arg0); - -// @class: schedule -// @stuck: none — MATCH (304/304), symcheck SYMS-OK 12/12, and the whole-TU cc1 stage now compiles CLEAN -// -// ══════════════════════════════════════════════════════════════════════════════ -// SESSION-22 RE-DERIVATION + THE ROOT-CAUSE FIX FOR THE "ASSEMBLER-STAGE" FAILURE -// ══════════════════════════════════════════════════════════════════════════════ -// The SESSION-21 draft did reach match_one MATCH (re-verified this session, 304/304) -// and symcheck SYMS-OK — but the whole-binary build died with an opaque `Error 33` -// that was logged as "an ASSEMBLER-stage failure I did not finish diagnosing". -// -// IT IS NOT AN ASSEMBLER FAILURE. Stage-by-stage isolation of the real pipeline -// (cpp | cc1 | maspsx | as) over a scratch copy of src/ov_SC01_077/ov_SC01_077_after.c -// with this function spliced in place of its INCLUDE_ASM gives: -// cpp rc=0 -// cc1 rc=33 <-- ".../tu.c:1901: conflicting types for `Ent'" -// "src/shared/engine_types.h:434: previous declaration of `Ent'" -// maspsx rc=0 -// as rc=0 (only benign "used $at without .set noat" warnings) -// `33` is CC1's exit code, surfaced by the recipe's `set -o pipefail` (Makefile:560). -// Because `as` is the LAST stage in that pipe, make attributes the failure to the -// assembler — the same misread that made func_8012AAAC's "opaque Error 33" look -// assembler-shaped until it was isolated stage by stage. -// -// ROOT CAUSE: the draft declared `typedef struct Ent { ... } Ent;` at FILE scope. -// `Ent` is already a shared engine type (src/shared/engine_types.h:434, -// typedef struct { u16 guard; u16 pad; u16 field; u8 rest[14]; } Ent; -// a 20-byte struct), pulled into every overlay TU through -// src/ov_SC01_077/../shared/engine_core.h. gcc-2.7.2 rejects the redefinition -// outright (an ERROR, not the "type mismatch with previous external decl" -// WARNING that the rest of this TU is full of), so cc1 aborts. -// -// THE FIX, and why this shape: all three helper types are now declared at BLOCK -// scope inside func_8014D820 itself. That is strictly better than renaming to -// `Ent_8014D820` at file scope, because this function is an h_seq family EXEMPLAR -// with 138 members: a file-scope type name has to stay unique against 138 distinct -// overlay TUs *and* against whatever engine_types.h grows next, while a block-scope -// typedef can never collide with anything, in any TU, ever. It also matches the -// fleet convention — src/shared/engine_core.h contains ZERO `typedef struct` -// (all 0 of them); every DEFINE_ macro body uses engine_types.h types or local ones. -// Typedefs emit no code and create no allocno, so the move is byte-neutral: -// re-verified MATCH (304 ins) after the change, and the local DECLARATION ORDER -// below is untouched (§76 — declaration order is the dominant regalloc lever here). -// -// ══════════════════════════════════════════════════════════════════════════════ -// THE BODY (SESSION-21 derivation, each lever re-verified this session) -// ══════════════════════════════════════════════════════════════════════════════ -// func_8014D820 (304 ins, ov_SC01_077, h_seq family exemplar, 138 members). -// The whole residual off the SESSION-18 close=9 seed was a sched1 PERMUTATION -// inside ONE basic block (idx 79..101, the pos/desc set-up between the `slti 0x400` -// guard and the `currentLocationId` test): identical multiset of insns, identical -// register assignment, wrong positions. §66d-5 exactly — classed WIDTH [structural] -// at every waypoint and not structural at all. -// -// The lever (reusable): that block is 12 statements over a small dependency poset -// (load x0/y0/z0 -> add -> store pos.* / desc.*), so source ORDER is the only -// control and the space of linear extensions is enumerable. A dependency-respecting -// sweep found MATCH at -// x0; pos.x; y0; pos.y; z0; tx; pos.z; tz; desc.x; desc.z; ty; desc.y -// i.e. all three loads and both pos stores first, then the two adds, then the desc -// stores, with the y accumulator (`ty`) computed LAST. No pin, no barrier, no -// permuter run. Eleven hand attempts on this window (SESSION-18) were inert or -// worse — hand-reading a 12-statement schedule permutation is the wrong tool; -// brute-forcing the linear extensions is the right one. -// -// Load-bearing levers (each re-verified by removal this session): -// * the `a0v` launder (`__asm__("" : "=r"(a0v) : "0"(a0))`) — drop => 9 mismatched -// * the `a2` $7 pin — drop => 5 -// * the `a2x -> a2` launder (vs a plain copy) — drop => 1 -// * `new_var3` (the s16 stash of dx feeding ratan2) — drop => 2 -// * `new_var2` (the desc.y + 0x10 accumulator) — drop => 2 -// The `a2` pin's live range ENDS before the first `jal` (last use is -// `desc.z = a2[2] - a1[2]`), so it is §42e-CORRECTION / §74-safe to propagate. -// -// SYMBOLS (§58 rule 1/2): all five data externs use the canonical splat spelling and -// the engine_core.h type — `u8 D_801202A0[]`, `u8 D_801152A8[]`, `s16 D_801152AC`, -// `u8 D_8018C84C[]`, `s16 currentLocationId`. symcheck: SYMS-OK, 12 symbols agree. -// -// The one deliberate divergence (§27 step 2 / rule 3): func_80135A4C's canonical -// extern is 4-arg but this call site sets only $a0-$a2, so the canonical decl is -// kept verbatim (it is also the TU's own spelling at ov_SC01_077_after.c:1651/1709) -// and the ARITY is cast at the call site. -// -// BANKING NOTE for the orchestrator (carried forward from SESSION-18, still true): -// 1 `self_decl_hdr` axis remains — DEFINE_func_8014D790's body declares -// func_8014D820, so that macro in engine_core.h needs the §85 return-axis widen -// (already applied). With the `Ent` collision gone the TU's cc1 stage is clean. - - - - - - - - - - -extern s16 currentLocationId; -extern s32 ratan2(s32 a0, s32 a1); -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 a0, s32 a1, s32 a2); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -s32 func_8014D820(s32 a0, u16 *a1, u16 *a2x) -{ - - extern u8 D_801202A0[]; - extern u8 D_8018C84C[]; - extern u8 D_801152A8[]; - extern s16 D_801152AC; - /* BLOCK-SCOPE types — see the header note. `Ent` at file scope collides with - src/shared/engine_types.h:434 and kills the TU's cc1 stage (exit 33). */ - typedef struct - { - u16 x; - u16 y; - u16 z; - u16 w; - } V4; - typedef struct EntD820 - { - u16 f0; - u16 f2; - u16 f4; - u16 x; - u16 f8; - u16 y; - u16 fC; - u16 z; - u8 p10[0x10]; - s32 f20; - u8 p24[0x34]; - s32 f58; - u16 f5C; - u16 f5E; - u8 p60[0x10C - 0x60]; - } Ent; - int new_var2; - s16 new_var3; -register u16 *a2 __asm__("$7"); - V4 out[3]; - V4 pos; - Desc desc; - Ent *ent; - Ent *p; - s32 dx; - s32 dz; - s32 ex; - s32 ez; - s32 r1; - s32 r2; - s32 r3; - s32 ang; - s32 x0; - s32 y0; - s32 z0; - s32 tx; - s32 tz; - s32 ty; - s32 r; - s32 t; - s32 u; - s32 a0v; -__asm__ __volatile__("" : "=r"(a2) : "0"(a2x)); - t = a2[0]; - u = a1[0]; - dx = t - u; -__asm__ __volatile__("" : "=r"(a0v) : "0"(a0)); - new_var3 = (s16) dx; - t = a2[2]; - u = a1[2]; - dz = t - u; - if (((s16) (dx | dz)) == 0) - { - goto fail; - } - desc.x = dx; - desc.y = a2[1] - a1[1]; - desc.z = a2[2] - a1[2]; - ent = *((Ent **) (a0v + 0x170)); - if (ent->f0 == 0) - { - goto fail; - } - if ((ent->f5C & 0x1000) == 0) - { - goto fail; - } - if (ent->f58 == 0) - { - goto fail; - } - if (((s32 (*)(s32, s32, s32)) func_80135A4C)(ent->f20, ent->f58, (s32) a1) == 0) - { - goto fail; - } - ex = ent->x - (*((u16 *) (a0v + 6))); - ez = ent->z - (*((u16 *) (a0v + 0xE))); - r1 = (s16) ratan2((s16) dz, new_var3); - r2 = (s16) ratan2((s16) ez, (s16) ex); - r3 = (s16) func_80012A60(r1, r2); - if (0x400 <= r3) - { - goto fail; - } - desc.f20 = 0; - desc.f1C = 0; - desc.f18 = 0; - x0 = ent->x; - pos.x = x0; - y0 = ent->y; - pos.y = y0; - z0 = ent->z; - tx = x0 + desc.x; - pos.z = z0; - tz = z0 + desc.z; - desc.x = tx; - desc.z = tz; - ty = (y0 + desc.y) + 8; - desc.y = ty; - if (currentLocationId != 0x3008) - { - for (p = (Ent *) D_801202A0; p < (Ent *) (D_801202A0 + 0x6480); p++) - { - if (p == ent) - { - continue; - } - if (p->f0 == 0) - { - continue; - } - if (p->f5C == 0) - { - continue; - } - if (p->f58 == 0) - { - continue; - } - func_80135888(p->f20, p->f58, (s32) (&pos), (s32) (&desc)); - } - - } - else - { - ang = ratan2(((s16) x0) - ((s16) tx), ((s16) z0) - ((s16) tz)) & 0xFFF; - func_800139C8(ang, D_8018C84C, &out[0]); - func_800139C8((s16) (ang - 0x155), D_8018C84C, &out[1]); - func_800139C8((s16) (ang + 0x155), D_8018C84C, &out[2]); - out[0].x += pos.x; - out[0].y = pos.y; - out[0].z += pos.z; - out[1].x += pos.x; - out[1].y = pos.y; - out[1].z += pos.z; - out[2].x += pos.x; - out[2].y = pos.y; - out[2].z += pos.z; - for (p = (Ent *) D_801202A0; p < (Ent *) (D_801202A0 + 0x6480); p++) - { - if (p == ent) - { - continue; - } - if (p->f0 == 0) - { - continue; - } - if (p->f5C == 0) - { - continue; - } - if (p->f58 == 0) - { - continue; - } - if (func_8014DCE0((s32) p, (s32) (&pos), (s32) (&out[0])) != 0) - { - __builtin_memcpy((void *) ((s32) (&desc)), (void *) ((s32) (&pos)), 8); - } - } - - } - r = func_80133784(0, &pos, (s32) (&desc)); - if ((r == 0) || ((r == 0x2000) && (((*(u16 *) D_801152A8) | ((u16) D_801152AC)) == 0))) - { - ent->x = desc.x - desc.f18; - ent->y = desc.y; - ent->z = desc.z - desc.f20; - desc.x -= pos.x; - desc.y -= pos.y; - desc.z -= pos.z; - *((u16 *) (a0v + 6)) = a1[0] + desc.x; - new_var2 = desc.y; - new_var2 = new_var2 + 0x10; - *((u16 *) (a0v + 0xA)) = a1[1] + new_var2; - *((u16 *) (a0v + 0xE)) = a1[2] + desc.z; - } - else - { - *((u16 *) (a0v + 6)) = a1[0]; - *((u16 *) (a0v + 0xA)) = a1[1] + 0x10; - *((u16 *) (a0v + 0xE)) = a1[2]; - } - return 1; - fail: - *((s32 *) (a0v + 0x170)) = 0; - - return 0; -} - - -DEFINE_func_8014DCE0() /* dedup: shared engine-core @0x8014DCE0 (src/shared) */ - - -DEFINE_func_8014DD8C() /* dedup: shared engine-core @0x8014DD8C (src/shared) */ - - - -extern void func_8014DF94(s32 arg0); - -void func_8014DF3C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014DF94\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014DF94() /* dedup: shared engine-core @0x8014DF94 (src/shared) */ - -DEFINE_func_8014E048() /* dedup: shared engine-core @0x8014E048 (src/shared) */ - -DEFINE_func_8014E284() /* dedup: shared engine-core @0x8014E284 (src/shared) */ - - -extern void func_8014E48C(s32 a0); - -void func_8014E434(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E48C\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E48C() /* dedup: shared engine-core @0x8014E48C (src/shared) */ - -DEFINE_func_8014E514() /* dedup: shared engine-core @0x8014E514 (src/shared) */ - -// — the guard makes $v1, CSE turns the in-body `e = p + 0x6480` into a copy of it, and -// regalloc does not coalesce (gcc-2.7.2 has no coalescing, regalloc.md K8). The back edge -// then uses the register ($s5), NOT a rematerialised %hi/%lo(D_80126720) as in -// func_8014CF04 — so do NOT reuse that sibling's absolute-bound half here. -// -// (2) TWO INDUCTION VARIABLES, secondary base +0xE. `q = p + 0xE` carries every access except -// the two that use the entry pointer itself (`*(u16 *)p` and `*(u8 **)(a0+0x17C) = p`): -// offsets -0x8 / 0x0 / 0x12 / 0x4A / 0x4E off q == 0x6 / 0xE / 0x20 / 0x58 / 0x5C off p. -// A single-pointer spelling is NOT equivalent: gcc emits ONE base and the function comes -// out 56 ins (verified). The negative displacement is the tell that the second pointer is -// in the source, not a compiler-made giv. -// -// (3) REGISTER PINS ($16/$17) — the one non-obvious lever, and it is a genuine density -// knife-edge (regalloc.md K2 / §RC-15). Unpinned, the .lreg reads -// p: 9 refs / 24 insns -> floor_log2(9)*9/24 = 1.125 -// q: 8 refs / 22 insns -> floor_log2(8)*8/22 = 1.091 -// so p wins $s0 by ~3% and the whole function comes out with p/q SWAPPED (17 mismatches, -// every one of them a bare $s0<->$s1 rename). The target wants q in $s0. Decl-order swap -// does nothing (ties are not what decides it — p genuinely out-scores q). Rather than -// hunt a +1-ref anchor (§RC-11 `#APP` would sit next to three delay slots that maspsx -// fills: the `beqz $a1` slot, the `jal` slot and the `bnez` slot), pin both: -// register u8 *p __asm__("$17"); register u8 *q __asm__("$16"); -// Both are callee-saved, so the live-across-`jal` range is §42e/§74-safe by construction -// (the ov_SC03_099 func_8014D820 caveat only applies to caller-saved pins). Everything -// else falls out naturally: a0->$s2, a1->$s3, a2->$s4, e->$s5. -// -// (4) `t = *(s32 *)(q + 0x4A)` is loaded ONCE and reused as arg1 of func_80135888 — that is -// why `lw $a1, 0x4A($s0)` sits at the zero-test rather than at the call. -// -// The func_80135888 decl below is byte-compatible with the one this TU already carries at -// ov_SC01_077_after.c:2303, so it is not a second conflict axis. - -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); - -/* §37/§124 asm-label alias: the fleet canon declares this `extern void` (engine_core.h:13392, - * inside DEFINE_func_8014E48C()); the byte-true body must return s32. Aliasing the C name - * sidesteps the RETURN-axis conflict with no header edit. This line MUST travel with the body. */ -s32 aF8014E5B4(s32 a0, void *a1, void *a2) __asm__("func_8014E5B4"); - -DEFINE_func_8014E5B4() /* dedup: shared engine-core @0x8014E5B4 (src/shared) */ - - - -extern void func_8014E6F8(struct SubE6F8 *a0); - -void func_8014E6A0(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E6F8\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E6F8() /* dedup: shared engine-core @0x8014E6F8 (src/shared) */ - -DEFINE_func_8014E790() /* dedup: shared engine-core @0x8014E790 (src/shared) */ - -DEFINE_func_8014E83C() /* dedup: shared engine-core @0x8014E83C (src/shared) */ - - -void func_8014E934(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E98C\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E98C() /* dedup: shared engine-core @0x8014E98C (src/shared) */ - -DEFINE_func_8014EA4C() /* dedup: shared engine-core @0x8014EA4C (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (handwritten full inline-asm scratchpad-stack-switch wrapper; no trailing .set reorder — that adds a stray epilogue nop) -/* - * HANDWRITTEN scratchpad-stack-switch wrapper: temporarily repoints $sp into the - * D-cache scratchpad stack held at *(0x1F8003FC), calls func_8014ED80, stashes the - * return value through D_801E6E60, restores $sp and returns it. - * Manipulating $sp is not expressible in C; full inline asm (manages its own frame). - */ -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801E6E60; - -void func_8014ED28(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014ED80\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014ED80() /* dedup: shared engine-core @0x8014ED80 (src/shared) */ - -DEFINE_func_8014EE14() /* dedup: shared engine-core @0x8014EE14 (src/shared) */ - - -extern s32 func_8014F24C(struct SubF24C *a0); - -void func_8014F1F4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F24C\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F24C() /* dedup: shared engine-core @0x8014F24C (src/shared) */ - -DEFINE_func_8014F2E0() /* dedup: shared engine-core @0x8014F2E0 (src/shared) */ - -DEFINE_func_8014F3E8() /* dedup: shared engine-core @0x8014f3e8 (src/shared) */ - - - -extern s32 func_8014F4C0(); - -s32 func_8014F468(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F4C0\n" - "lui $at, %%hi(D_801E6E64)\n" - "sw $v0, %%lo(D_801E6E64)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E64)\n" - "lw $v0, %%lo(D_801E6E64)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F4C0() /* dedup: shared engine-core @0x8014F4C0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (22 ins, relocation-masked). Handwritten scratchpad-stack-switch -// wrapper, full inline asm like DEFINE_func_80155FF8. NOTE: do NOT write an explicit -// "nop" after "jal func_8014F74C" — maspsx --aspsx-version=2.56 auto-fills the jal -// delay slot with a nop; an explicit one yields a double-nop (+1 ins). %hi/%lo must be -// escaped as %%hi/%%lo inside __asm__ (bare % is read as an operand placeholder). - -/* HANDWRITTEN scratchpad-stack-switch wrapper (same idiom as func_80155FF8 / - * func_80128564): temporarily repoints $sp into the D-cache scratchpad stack held - * at *(0x1F8003FC), calls func_8014F74C, stores its $v0 result to D_801E6E64, then - * restores $sp and returns the stored value. Manipulating $sp is not expressible in - * C; full inline asm (manages its own frame). */ - -extern int func_8014F74C(); - -int func_8014F6F4(void) { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F74C\n" - "lui $at, %%hi(D_801E6E64)\n" - "sw $v0, %%lo(D_801E6E64)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E64)\n" - "lw $v0, %%lo(D_801E6E64)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F74C() /* dedup: shared engine-core @0x8014F74C (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (full inline-asm $sp-switch trampoline w/ 0x40000 guard, jal func_8014FA70, stash D_801E6E64; maspsx auto-fills jal delay slot) - -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E6E64; - -void func_8014FA04(s32 a0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "sw $ra, 16($sp)\n" - "lw $v0, 68($a0)\n" - "lui $v1, 0x4\n" - "and $v0, $v0, $v1\n" - "bnez $v0, 1f\n" - "addu $v0, $zero, $zero\n" - "lui $a1, 0x1f80\n" - "ori $a1, $a1, 0x03fc\n" - "addu $t0, $a1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FA70\n" - "lui $at, %%hi(D_801E6E64)\n" - "sw $v0, %%lo(D_801E6E64)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E64)\n" - "lw $v0, %%lo(D_801E6E64)($v0)\n" - "1:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014FA70() /* dedup: shared engine-core @0x8014FA70 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (22 ins, relocation-masked). Handwritten scratchpad-stack-switch -// trampoline: byte-identical to the matched in-TU sibling func_8014F6F4 (line ~2005), -// differing ONLY in the callee (func_8014FC18 vs func_8014F74C). Full inline asm manages -// its own frame; both the callee and the D_801E6E64 global live inside the asm, so NO C -// externs are declared — this sidesteps the canonical-sig-layer reconcile that CC1_FAILed -// the register-asm draft (func_8014FC18/D_801E6E64 are declared elsewhere in the TU). -// maspsx --aspsx-version=2.56 auto-fills the jal delay slot with a nop, so do NOT write an -// explicit nop after `jal` (double-nop = +1 ins); %hi/%lo escaped as %% inside __asm__. -// gcc emits only the `jr $ra; nop` epilogue (leaf, no locals it can see) → exactly 22 ins. -s32 func_8014FBC0() { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FC18\n" - "lui $at, %%hi(D_801E6E64)\n" - "sw $v0, %%lo(D_801E6E64)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E64)\n" - "lw $v0, %%lo(D_801E6E64)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - - -DEFINE_func_8014FC18() /* dedup: shared engine-core @0x8014FC18 (src/shared) */ - - -extern int func_8014FD54(int param_1); - -void func_8014FCFC(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FD54\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014FD54() /* dedup: shared engine-core @0x8014FD54 (src/shared) */ - -DEFINE_func_8014FDF4() /* dedup: shared engine-core @0x8014FDF4 (src/shared) */ - -DEFINE_func_8014FE60() /* dedup: shared engine-core @0x8014FE60 (src/shared) */ - - - - -DEFINE_func_8014FFDC() /* dedup: shared engine-core @0x8014FFDC (src/shared) */ - - -DEFINE_func_80150150() /* dedup: shared engine-core @0x80150150 (src/shared) */ - -DEFINE_func_80150170() /* dedup: shared engine-core @0x80150170 (src/shared) */ - - -DEFINE_func_801502EC() /* dedup: shared engine-core @0x801502EC (src/shared) */ - - -DEFINE_func_80150460() /* dedup: shared engine-core @0x80150460 (src/shared) */ - - -extern void func_801504D8(u16 *a0); - -s32 func_80150480(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_801504D8\n" - "lui $at, %%hi(D_801E6E60)\n" - "sw $v0, %%lo(D_801E6E60)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801E6E60)\n" - "lw $v0, %%lo(D_801E6E60)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_801504D8() /* dedup: shared engine-core @0x801504D8 (src/shared) */ - -DEFINE_func_80150528() /* dedup: shared engine-core @0x80150528 (src/shared) */ - -DEFINE_func_801505FC() /* dedup: shared engine-core @0x801505FC (src/shared) */ - - - -s32 func_801506A4(s32 arg0, s32 arg1) { - extern void func_80150820(int, unsigned short); - extern void func_8015086C(int); - extern unsigned short D_8018C85C[]; - extern unsigned short D_8018C864[]; - extern unsigned short D_8018C86C[]; - - int mode; - - mode = ((struct Ent_801506A4 *)arg1)->unk0; - ((struct Ent_801506A4 *)arg1)->unk5C |= 1; - switch (mode) { - case 0x31: - ((void(*)(int))func_80147324)(0x452); - ((void(*)(int, unsigned))func_8014ADA8)(((int)arg0), D_8018C85C[((struct Ent_801506A4 *)arg1)->unk70]); - ((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 3, D_8018C85C[((struct Ent_801506A4 *)arg1)->unk70]); - break; - case 0x32: - if ((*(unsigned short*)&D_80078EB4) != 0) { - ((void(*)(int))func_80147324)(0x452); - ((void(*)(int, unsigned, int))func_8014BB24)(((int)arg0), D_8018C864[((struct Ent_801506A4 *)arg1)->unk70], 1); - ((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 2, D_8018C864[((struct Ent_801506A4 *)arg1)->unk70]); - } - break; - case 0x33: - ((void(*)(int))func_80147324)(0x452); - func_80150820(((int)arg0), D_8018C86C[((struct Ent_801506A4 *)arg1)->unk70]); - break; - case 0xC5: - case 0x27B: - ((void(*)(int))func_80147324)(0x452); - func_8015086C(((int)arg0)); - break; - } -} - - - -DEFINE_func_80150820() /* dedup: shared engine-core @0x80150820 (src/shared) */ - -DEFINE_func_8015086C() /* dedup: shared engine-core @0x8015086C (src/shared) */ - -DEFINE_func_801508B4() /* dedup: shared engine-core @0x801508B4 (src/shared) */ - -DEFINE_func_801508F8() /* dedup: shared engine-core @0x801508F8 (src/shared) */ - - -extern S16 D_801E6128; -extern s32 D_8018C874; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); - -s32 func_8015094C(s32 param_1) { - struct { s32 x, mid, y; s32 _pad[9]; } arg; /* 0x30 @ 0x10 */ - S16 local; /* 0x10 @ 0x40 */ - s32 pad1[4]; /* 0x10 @ 0x50 */ - register u8 *cam __asm__("$17") = D_80126948; - s32 ret; - - local = D_801E6128; - arg.x = *(short *)(param_1 + 6); - arg.mid = D_80126994; - arg.y = *(short *)(param_1 + 0xe); - ret = func_80021174(D_8018C874, (s32)&arg); - if (ret == 0) { - { - short cur = *(short *)(param_1 + 6); - s32 diff = D_80126990 - cur; - s32 av = (diff < 0) ? -diff : diff; - if (av >= 5) { - *(short *)(param_1 + 6) = (diff >= 0) ? cur + 4 : cur - 4; - } - } - { - short cur = *(short *)(param_1 + 0xe); - s32 diff = *(s32 *)(cam + 0x50) - cur; - s32 av = (diff < 0) ? -diff : diff; - if (av >= 5) { - *(short *)(param_1 + 0xe) = (diff >= 0) ? cur + 4 : cur - 4; - } - } - (void)&pad1; - return 1; - } - return 0; -} - - - -extern s32 func_8014FA70(s32 a0); -extern void func_80015978(s32 a0, s32 *a1); -extern s32 D_801E6E64; - -void func_80150A70(s32 a0) -{ - __asm__ __volatile__( - ".set\tnoreorder\n" - "addiu $sp, $sp, -24\n" - "sw $s0, 16($sp)\n" - "addu $s0, $a0, $zero\n" - "sw $ra, 20($sp)\n" - "lh $v1, 6($s0)\n" - "lh $v0, 136($s0)\n" - "nop\n" - "bne $v1, $v0, 1f\n" - "nop\n" - "lh $v1, 10($s0)\n" - "lh $v0, 138($s0)\n" - "nop\n" - "bne $v1, $v0, 1f\n" - "nop\n" - "lh $v1, 14($s0)\n" - "lh $v0, 140($s0)\n" - "nop\n" - "beq $v1, $v0, 3f\n" - "nop\n" - "1:\n" - "lw $v0, 68($s0)\n" - "lui $v1, 0x4\n" - "and $v0, $v0, $v1\n" - "bnez $v0, 2f\n" - "addiu $a0, $s0, 4\n" - "lui $a2, 0x1f80\n" - "ori $a2, $a2, 0x03fc\n" - "addu $t0, $a2, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FA70\n" - "addu $a0, $s0, $zero\n" - "lui $at, %%hi(D_801E6E64)\n" - "sw $v0, %%lo(D_801E6E64)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "addiu $a0, $s0, 4\n" - "2:\n" - "jal func_80015978\n" - "addiu $a1, $s0, 136\n" - "3:\n" - "lw $ra, 20($sp)\n" - "lw $s0, 16($sp)\n" - "addiu $sp, $sp, 24\n" - ".set\treorder\n" - : : : "memory"); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (fn-ptr table; split idx-1 into a $v0-pinned temp to stop (idx-1)*4 strength-reducing into a -4 load offset AND land the subtract in $v0) - - -void func_80150B28(int param_1) { - - extern s32 D_800AE6B0; - extern void (*D_8018C878[])(void); - u32 idx; - register u32 sub __asm__("$2"); - - if ((D_800AE6B0 & 0x80FFFFFF) == 0) { - idx = *(u16 *)(param_1 + 0x16C); - if (idx != 0 && idx < 0x26) { - sub = idx - 1; - D_8018C878[sub](); - } - } - *(u16 *)(param_1 + 0x16C) = 0; -} - - -DEFINE_func_80150B9C() /* dedup: shared engine-core @0x80150B9C (src/shared) */ - -DEFINE_func_80150BA4() /* dedup: shared engine-core @0x80150BA4 (src/shared) */ - -DEFINE_func_80150BC8() /* dedup: shared engine-core @0x80150BC8 (src/shared) */ - -DEFINE_func_80150C48() /* dedup: shared engine-core @0x80150C48 (src/shared) */ - -DEFINE_func_80150CA0() /* dedup: shared engine-core @0x80150CA0 (src/shared) */ - -DEFINE_func_80150CC4() /* dedup: shared engine-core @0x80150CC4 (src/shared) */ - -DEFINE_func_80150CE4() /* dedup: shared engine-core @0x80150CE4 (src/shared) */ - -DEFINE_func_80150D04() /* dedup: shared engine-core @0x80150D04 (src/shared) */ - -DEFINE_func_80150D24() /* dedup: shared engine-core @0x80150D24 (src/shared) */ - -DEFINE_func_80150D44() /* dedup: shared engine-core @0x80150D44 (src/shared) */ - -DEFINE_func_80150D64() /* dedup: shared engine-core @0x80150D64 (src/shared) */ - -DEFINE_func_80150D84() /* dedup: shared engine-core @0x80150D84 (src/shared) */ - -DEFINE_func_80150DA4() /* dedup: shared engine-core @0x80150DA4 (src/shared) */ - -DEFINE_func_80150DC4() /* dedup: shared engine-core @0x80150DC4 (src/shared) */ - -DEFINE_func_80150DE4() /* dedup: shared engine-core @0x80150DE4 (src/shared) */ - -DEFINE_func_80150E04() /* dedup: shared engine-core @0x80150E04 (src/shared) */ - -DEFINE_func_80150E24() /* dedup: shared engine-core @0x80150E24 (src/shared) */ - -DEFINE_func_80150E44() /* dedup: shared engine-core @0x80150E44 (src/shared) */ - -DEFINE_func_80150E64() /* dedup: shared engine-core @0x80150E64 (src/shared) */ - -DEFINE_func_80150E84() /* dedup: shared engine-core @0x80150E84 (src/shared) */ - -DEFINE_func_80150EA4() /* dedup: shared engine-core @0x80150EA4 (src/shared) */ - -DEFINE_func_80150EC4() /* dedup: shared engine-core @0x80150EC4 (src/shared) */ - -DEFINE_func_80150F78() /* dedup: shared engine-core @0x80150F78 (src/shared) */ - -DEFINE_func_80150F80() /* dedup: shared engine-core @0x80150F80 (src/shared) */ - -DEFINE_func_80150FB4() /* dedup: shared engine-core @0x80150FB4 (src/shared) */ - -DEFINE_func_80150FD8() /* dedup: shared engine-core @0x80150FD8 (src/shared) */ - -DEFINE_func_80151014() /* dedup: shared engine-core @0x80151014 (src/shared) */ - -DEFINE_func_80151038() /* dedup: shared engine-core @0x80151038 (src/shared) */ - -DEFINE_func_80151070() /* dedup: shared engine-core @0x80151070 (src/shared) */ - -DEFINE_func_80151094() /* dedup: shared engine-core @0x80151094 (src/shared) */ - -DEFINE_func_801510B8() /* dedup: shared engine-core @0x801510B8 (src/shared) */ - -DEFINE_func_801510C0() /* dedup: shared engine-core @0x801510C0 (src/shared) */ - -DEFINE_func_801510C8() /* dedup: shared engine-core @0x801510C8 (src/shared) */ - -DEFINE_func_801510EC() /* dedup: shared engine-core @0x801510EC (src/shared) */ - -DEFINE_func_80151110() /* dedup: shared engine-core @0x80151110 (src/shared) */ - -DEFINE_func_80151130() /* dedup: shared engine-core @0x80151130 (src/shared) */ - -DEFINE_func_80151138() /* dedup: shared engine-core @0x80151138 (src/shared) */ - -DEFINE_func_8015115C() /* dedup: shared engine-core @0x8015115C (src/shared) */ - -DEFINE_func_80151164() /* dedup: shared engine-core @0x80151164 (src/shared) */ - -DEFINE_func_80151184() /* dedup: shared engine-core @0x80151184 (src/shared) */ - -DEFINE_func_801511A8() /* dedup: shared engine-core @0x801511A8 (src/shared) */ - -DEFINE_func_801511C4() /* dedup: shared engine-core @0x801511C4 (src/shared) */ - -DEFINE_func_801511E0() /* dedup: shared engine-core @0x801511E0 (src/shared) */ - -DEFINE_func_80151204() /* dedup: shared engine-core @0x80151204 (src/shared) */ - -DEFINE_func_80151238() /* dedup: shared engine-core @0x80151238 (src/shared) */ - -DEFINE_func_8015126C() /* dedup: shared engine-core @0x8015126C (src/shared) */ - - -/* func_80151664 — INTEGRATE lane. - * Fleet canon (src/shared/engine_core.h:2924, inside DEFINE_func_8015410C()) declares - * extern void func_80151664(void); - * so a `void func_80151664(s32 a0)` definition is `conflicting types` in every TU that - * expands that macro (ov_SC01_077_after.c:3910 does). Cookbook §73 PARAMS axis / §42: - * keep the canonical (void) signature and read the incoming argument through a $a0 pin. - * The decl below is reproduced verbatim so this file compiles the real conflict. */ -extern void func_80151664(void); - -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801470AC(s32 *a0); -extern void func_801472B4(void *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80153C18(); /* fleet canon: K&R empty prototype (engine_core.h:75, :1682 defines it (void)); - * a prototyped (s32) decl is `conflicting types` in this TU. Arg still - * passes in $a0 under default promotions -> codegen unchanged. */ - -void func_80151664(void) { - register s32 a0v __asm__("$4"); - s32 s0; - s32 v1; - - s0 = a0v; - func_80154A74(s0, 0x11); - func_801553C0(s0); - func_801470AC((s32 *)s0); - func_801472B4((void *)s0); - v1 = *(s32 *)(s0 + 0x20); - *(s16 *)(s0 + 0x3E) = 0; - *(s16 *)(s0 + 0x40) = 0; - *(s16 *)(s0 + 0x42) = 0; - *(s8 *)(s0 + 0xDD) = 0; - *(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; - *(s16 *)(v1 + 0x10) = 0; - *(s16 *)(s0 + 0x60) = 0x1000; - *(s16 *)(s0 + 0x62) = 0x1000; - *(s16 *)(s0 + 0x64) = 0x1000; - func_801477E8((s32 *)s0, 0); - func_80153C18(s0); -} - - -DEFINE_func_801516F0() /* dedup: shared engine-core @0x801516F0 (src/shared) */ - -DEFINE_func_8015173C() /* dedup: shared engine-core @0x8015173C (src/shared) */ - -DEFINE_func_80151780() /* dedup: shared engine-core @0x80151780 (src/shared) */ - -DEFINE_func_80151878() /* dedup: shared engine-core @0x80151878 (src/shared) */ - -DEFINE_func_80151880() /* dedup: shared engine-core @0x80151880 (src/shared) */ - -DEFINE_func_801518D8() /* dedup: shared engine-core @0x801518D8 (src/shared) */ - -DEFINE_func_80151924() /* dedup: shared engine-core @0x80151924 (src/shared) */ - - - -void func_80151944(void *a0) { - - extern void (*D_8018C90C[])(void); - D_8018C90C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80151980() /* dedup: shared engine-core @0x80151980 (src/shared) */ - -DEFINE_func_801519C8() /* dedup: shared engine-core @0x801519C8 (src/shared) */ - -DEFINE_func_80151AE4() /* dedup: shared engine-core @0x80151AE4 (src/shared) */ - -DEFINE_func_80151B98() /* dedup: shared engine-core @0x80151B98 (src/shared) */ - -DEFINE_func_80151C54() /* dedup: shared engine-core @0x80151C54 (src/shared) */ - - -extern void (*D_8018C91C[])(void); - -void func_80151D24(void *a0) { - D_8018C91C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80151D60() /* dedup: shared engine-core @0x80151D60 (src/shared) */ - -DEFINE_func_80151DB0() /* dedup: shared engine-core @0x80151DB0 (src/shared) */ - -DEFINE_func_80151E78() /* dedup: shared engine-core @0x80151E78 (src/shared) */ - -DEFINE_func_80151ECC() /* dedup: shared engine-core @0x80151ECC (src/shared) */ - -DEFINE_func_80151F38() /* dedup: shared engine-core @0x80151F38 (src/shared) */ - -DEFINE_func_80151FB4() /* dedup: shared engine-core @0x80151FB4 (src/shared) */ - - -extern void (*D_8018C940[])(void); - -void func_80152058(void *a0) { - D_8018C940[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152094() /* dedup: shared engine-core @0x80152094 (src/shared) */ - - -extern void func_80019064(void *a0); -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 void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018C930; - -void func_801520DC(s32 arg0) -{ - func_80019064(&D_80062C04); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_801472C8(arg0); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - func_80146DB8(arg0, &D_8018C930); - func_801477E8(arg0, 0x40000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146A6C(0x10, arg0, M2C_FIELD(arg0, s16 *, 6), M2C_FIELD(arg0, s16 *, 0xA), (s32) M2C_FIELD(arg0, s16 *, 0xE), 0, 0); - func_80147324(0x441); - func_80146CA0(arg0); -} - - -DEFINE_func_80152194() /* dedup: shared engine-core @0x80152194 (src/shared) */ - -DEFINE_func_8015220C() /* dedup: shared engine-core @0x8015220C (src/shared) */ - -DEFINE_func_80152254() /* dedup: shared engine-core @0x80152254 (src/shared) */ - -DEFINE_func_801522CC() /* dedup: shared engine-core @0x801522CC (src/shared) */ - - - -extern void (*D_8018C954[])(void); - -void func_80152370(void *a0) { - D_8018C954[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801523AC() /* dedup: shared engine-core @0x801523AC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (67 ins) - - -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80019064(void *a0); -extern int func_80151204(int arg, int a1); -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 void func_80149020(s32 *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147324(s32 arg0); -extern void func_80146CA0(void *a0); - -extern u8 D_80062C04[]; -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern u8 D_8018C960[]; - -void func_801523F4(s32 arg0) -{ - s32 pad[4]; - s32 buf[4]; - register s32 s0a __asm__("$16"); /* $s0 = buf */ - register s32 s2a __asm__("$18") = (s32)&D_8018C960; /* $s2 = &D_8018C960 */ - - ((void (*)(s32, s32))func_80146E90)(arg0, 0); - func_80019064(&D_80062C04); - ((void (*)(s32, s32))func_80151204)(arg0, *(s16 *)(arg0 + 0xF2)); - if ((s16)func_80012A60((s32)*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), - (s32)*(s16 *)(arg0 + 0xF4)) >= 0x401) { - ((void (*)(s32, s32))func_80154274)(arg0, (s32)&D_800D5880); - } else { - ((void (*)(s32, s32))func_80154274)(arg0, (s32)&D_800D58AC); - } - func_80154A74(arg0, 0x16); - ((void (*)(s32))func_80149020)(arg0); - s0a = (s32)buf; - ((void (*)(s32, s32, s32))func_8001382C)((*(u16 *)(arg0 + 0xF4) - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12)) & 0xFFF, - s2a, s0a); - ((void (*)(s32, s32))func_80146DB8)(arg0, s0a); - ((void (*)(s32, s32))func_801477E8)(arg0, *(s32 *)(s2a + 0xC)); - func_80147324(0x451); - ((void (*)(s32))func_80146CA0)(arg0); - (void)pad; -} - - -DEFINE_func_80152500() /* dedup: shared engine-core @0x80152500 (src/shared) */ - -DEFINE_func_801525F4() /* dedup: shared engine-core @0x801525F4 (src/shared) */ - - -extern void (*D_8018C970[])(void); - -void func_80152698(void *a0) { - D_8018C970[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801526D4() /* dedup: shared engine-core @0x801526D4 (src/shared) */ - -DEFINE_func_80152714() /* dedup: shared engine-core @0x80152714 (src/shared) */ - -DEFINE_func_80152790() /* dedup: shared engine-core @0x80152790 (src/shared) */ - - -extern void (*D_8018C988[])(void); - -void func_8015282C(void *a0) { - D_8018C988[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152868() /* dedup: shared engine-core @0x80152868 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern void func_80154274(s32 *a0, s32 a1); -extern u8 D_80062C04[]; -extern M2C_UNK D_800D5880; -extern M2C_UNK D_8018C978; - -void func_801528B0(s32 arg0) -{ - func_80019064(&D_80062C04); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_80154274(arg0, &D_800D5880); - func_80147324(0x451); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - func_80146DB8(arg0, &D_8018C978); - func_801477E8(arg0, 0xFFF00000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_8015294C() /* dedup: shared engine-core @0x8015294C (src/shared) */ - -DEFINE_func_80152A08() /* dedup: shared engine-core @0x80152A08 (src/shared) */ - -DEFINE_func_80152A50() /* dedup: shared engine-core @0x80152A50 (src/shared) */ - -DEFINE_func_80152AC8() /* dedup: shared engine-core @0x80152AC8 (src/shared) */ - - -extern void (*D_8018C99C[])(void); - -void func_80152B6C(void *a0) { - D_8018C99C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152BA8() /* dedup: shared engine-core @0x80152BA8 (src/shared) */ - -DEFINE_func_80152BF0() /* dedup: shared engine-core @0x80152BF0 (src/shared) */ - -DEFINE_func_80152C40() /* dedup: shared engine-core @0x80152C40 (src/shared) */ - -DEFINE_func_80152C80() /* dedup: shared engine-core @0x80152C80 (src/shared) */ - - -extern void (*D_8018C9B8[])(void); - -void func_80152D24(void *a0) { - D_8018C9B8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152D60() /* dedup: shared engine-core @0x80152D60 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern void func_80154274(s32 *a0, s32 a1); -extern s32 D_80062C14; -extern M2C_UNK D_800D5880; -extern M2C_UNK D_8018C9A8; - -void func_80152DA8(s32 arg0) -{ - func_80019064(&D_80062C14); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_80154274(arg0, &D_800D5880); - func_80147324(0x451); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - M2C_FIELD(arg0, s8 *, 0xDF) = 8; - func_80146DB8(arg0, &D_8018C9A8); - func_801477E8(arg0, 0xFFE40000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80152E4C() /* dedup: shared engine-core @0x80152E4C (src/shared) */ - -DEFINE_func_80152EFC() /* dedup: shared engine-core @0x80152EFC (src/shared) */ - -DEFINE_func_80152F44() /* dedup: shared engine-core @0x80152F44 (src/shared) */ - -DEFINE_func_80152FBC() /* dedup: shared engine-core @0x80152FBC (src/shared) */ - - -extern void (*D_8018C9CC[])(void); - -void func_80153060(void *a0) { - D_8018C9CC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015309C() /* dedup: shared engine-core @0x8015309C (src/shared) */ - -DEFINE_func_801530E4() /* dedup: shared engine-core @0x801530E4 (src/shared) */ - -DEFINE_func_80153150() /* dedup: shared engine-core @0x80153150 (src/shared) */ - -DEFINE_func_801531BC() /* dedup: shared engine-core @0x801531BC (src/shared) */ - -DEFINE_func_80153204() /* dedup: shared engine-core @0x80153204 (src/shared) */ - -DEFINE_func_8015327C() /* dedup: shared engine-core @0x8015327C (src/shared) */ - - -extern void (*D_8018C9E0[])(void); - -void func_80153320(void *a0) { - D_8018C9E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015335C() /* dedup: shared engine-core @0x8015335C (src/shared) */ - -DEFINE_func_801533A4() /* dedup: shared engine-core @0x801533A4 (src/shared) */ - -DEFINE_func_80153410() /* dedup: shared engine-core @0x80153410 (src/shared) */ - -DEFINE_func_80153490() /* dedup: shared engine-core @0x80153490 (src/shared) */ - -DEFINE_func_801534D8() /* dedup: shared engine-core @0x801534D8 (src/shared) */ - -DEFINE_func_80153550() /* dedup: shared engine-core @0x80153550 (src/shared) */ - - -DEFINE_func_801535F4() /* dedup: shared engine-core @0x801535F4 (src/shared) */ - - -DEFINE_func_8015369C() /* dedup: shared engine-core @0x8015369C (src/shared) */ - -DEFINE_func_801536DC() /* dedup: shared engine-core @0x801536DC (src/shared) */ - -DEFINE_func_80153800() /* dedup: shared engine-core @0x80153800 (src/shared) */ - -DEFINE_func_80153978() /* dedup: shared engine-core @0x80153978 (src/shared) */ - -DEFINE_func_801539F8() /* dedup: shared engine-core @0x801539F8 (src/shared) */ - -DEFINE_func_80153B58() /* dedup: shared engine-core @0x80153B58 (src/shared) */ - -DEFINE_func_80153BD8() /* dedup: shared engine-core @0x80153BD8 (src/shared) */ - -DEFINE_func_80153BF0() /* dedup: shared engine-core @0x80153BF0 (src/shared) */ - -DEFINE_func_80153C18() /* dedup: shared engine-core @0x80153C18 (src/shared) */ - -DEFINE_func_80153C30() /* dedup: shared engine-core @0x80153C30 (src/shared) */ - -DEFINE_func_80153C44() /* dedup: shared engine-core @0x80153C44 (src/shared) */ - -DEFINE_func_80153C74() /* dedup: shared engine-core @0x80153C74 (src/shared) */ - -DEFINE_func_80153C8C() /* dedup: shared engine-core @0x80153C8C (src/shared) */ - -DEFINE_func_80153C9C() /* dedup: shared engine-core @0x80153C9C (src/shared) */ - -DEFINE_func_80153CBC() /* dedup: shared engine-core @0x80153CBC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (expected); dispatch-table %lo-fold via extern fn-ptr array, s0 holds param across both calls -extern void func_80019064(void *a0); -extern s32 D_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern s16 D_8011DB0C; -extern u16 D_8011F748; - -void func_80153CCC(S80153CCC *a0) { - ((s32 (*)(s32))func_80019064)((s32)&D_8018C9F4); - D_8018CA1C[a0->idx](a0); - D_8011DB0C = 0; - D_8011F748 = 0; -} - - -DEFINE_func_80153D34() /* dedup: shared engine-core @0x80153D34 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (33/33) - -extern void func_80147324(s32 arg0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_80146CA0(void *a0); -extern s16 currentLocationId; -extern u8 D_8018C9FC; - -void func_80153D7C(s32 param_1) -{ - func_80147324(0x451); - func_80154274((s32 *)param_1, (s32)&D_8018C9FC); - func_80149020((s32 *)param_1); - *(u16 *)(param_1 + 0x244) = *(u16 *)(param_1 + 6); - *(u16 *)(param_1 + 0x246) = *(u16 *)(param_1 + 10); - *(u16 *)(param_1 + 0x248) = *(u16 *)(param_1 + 0xe); - if (currentLocationId == 0x3075) *(u8 *)(param_1 + 0xde) = 0x14; - else *(u8 *)(param_1 + 0xde) = 10; - *(u8 *)(param_1 + 0xdf) = 0; - __asm__ __volatile__("" ::: "memory"); - func_80146CA0((void *)param_1); -} - - -DEFINE_func_80153E00() /* dedup: shared engine-core @0x80153E00 (src/shared) */ - -DEFINE_func_8015410C() /* dedup: shared engine-core @0x8015410C (src/shared) */ - -DEFINE_func_80154134() /* dedup: shared engine-core @0x80154134 (src/shared) */ - -DEFINE_func_80154150() /* dedup: shared engine-core @0x80154150 (src/shared) */ - -DEFINE_func_80154190() /* dedup: shared engine-core @0x80154190 (src/shared) */ - -DEFINE_func_801541D8() /* dedup: shared engine-core @0x801541D8 (src/shared) */ - -DEFINE_func_80154218() /* dedup: shared engine-core @0x80154218 (src/shared) */ - -DEFINE_func_80154274() /* dedup: shared engine-core @0x80154274 (src/shared) */ - -DEFINE_func_801542A4() /* dedup: shared engine-core @0x801542A4 (src/shared) */ - -DEFINE_func_801542DC() /* dedup: shared engine-core @0x801542DC (src/shared) */ - -DEFINE_func_8015430C() /* dedup: shared engine-core @0x8015430C (src/shared) */ - -DEFINE_func_80154358() /* dedup: shared engine-core @0x80154358 (src/shared) */ - -DEFINE_func_80154418() /* dedup: shared engine-core @0x80154418 (src/shared) */ diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8012ACE0.c b/src/ov_SC02_003/ov_SC02_003_jr_8012ACE0.c deleted file mode 100644 index 3280a525b..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8012ACE0.c +++ /dev/null @@ -1,3557 +0,0 @@ -#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. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -/* ==== end §8b carried decl layer ==== */ - - - - -// @class: iv-combine -// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - -s32 func_8012ACE0(void *o) { - int i; - for (i = 0; ; i++) { - switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { - case -2: - case -1: - case 0: - return i; - case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ - default: - break; - } - } -} - -DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ - -DEFINE_func_8012AD50() /* dedup: shared engine-core @0x8012AD50 (src/shared) */ - -void func_8012AD64(s32 *a0, s16 a1) { - *(s16 *)((s32)a0 + 0x34) = a1; - } - - -DEFINE_func_8012AD6C() /* dedup: shared engine-core @0x8012AD6C (src/shared) */ - -DEFINE_func_8012AD80() /* dedup: shared engine-core @0x8012AD80 (src/shared) */ - -DEFINE_func_8012ADE4() /* dedup: shared engine-core @0x8012ADE4 (src/shared) */ - -DEFINE_func_8012AE00() /* dedup: shared engine-core @0x8012AE00 (src/shared) */ - -DEFINE_func_8012AF0C() /* dedup: shared engine-core @0x8012AF0C (src/shared) */ - -DEFINE_func_8012B030() /* dedup: shared engine-core @0x8012B030 (src/shared) */ - -DEFINE_func_8012B0B4() /* dedup: shared engine-core @0x8012B0B4 (src/shared) */ - -DEFINE_func_8012B14C() /* dedup: shared engine-core @0x8012B14C (src/shared) */ - -DEFINE_func_8012B178() /* dedup: shared engine-core @0x8012B178 (src/shared) */ - -DEFINE_func_8012B1B4() /* dedup: shared engine-core @0x8012B1B4 (src/shared) */ - -DEFINE_func_8012B200() /* dedup: shared engine-core @0x8012B200 (src/shared) */ - -DEFINE_func_8012B21C() /* dedup: shared engine-core @0x8012B21C (src/shared) */ - -DEFINE_func_8012B23C() /* dedup: shared engine-core @0x8012B23C (src/shared) */ - -DEFINE_func_8012B260() /* dedup: shared engine-core @0x8012B260 (src/shared) */ - -DEFINE_func_8012B2CC() /* dedup: shared engine-core @0x8012B2CC (src/shared) */ - -DEFINE_func_8012B370() /* dedup: shared engine-core @0x8012B370 (src/shared) */ - -DEFINE_func_8012B414() /* dedup: shared engine-core @0x8012B414 (src/shared) */ - -DEFINE_func_8012B4B8() /* dedup: shared engine-core @0x8012B4B8 (src/shared) */ - -DEFINE_func_8012B608() /* dedup: shared engine-core @0x8012B608 (src/shared) */ - -DEFINE_func_8012B6D4() /* dedup: shared engine-core @0x8012B6D4 (src/shared) */ - -DEFINE_func_8012B70C() /* dedup: shared engine-core @0x8012B70C (src/shared) */ - -DEFINE_func_8012B744() /* dedup: shared engine-core @0x8012B744 (src/shared) */ - - -DEFINE_func_8012B77C() /* dedup: shared engine-core @0x8012B77C (src/shared) */ - - -DEFINE_func_8012B864() /* dedup: shared engine-core @0x8012B864 (src/shared) */ - -DEFINE_func_8012B8A4() /* dedup: shared engine-core @0x8012B8A4 (src/shared) */ - -DEFINE_func_8012B8E4() /* dedup: shared engine-core @0x8012B8E4 (src/shared) */ - -DEFINE_func_8012BA10() /* dedup: shared engine-core @0x8012BA10 (src/shared) */ - -DEFINE_func_8012BB3C() /* dedup: shared engine-core @0x8012BB3C (src/shared) */ - -DEFINE_func_8012BC60() /* dedup: shared engine-core @0x8012BC60 (src/shared) */ - -DEFINE_func_8012BCCC() /* dedup: shared engine-core @0x8012BCCC (src/shared) */ - -DEFINE_func_8012BD14() /* dedup: shared engine-core @0x8012BD14 (src/shared) */ - -DEFINE_func_8012BD3C() /* dedup: shared engine-core @0x8012BD3C (src/shared) */ - -DEFINE_func_8012BDBC() /* dedup: shared engine-core @0x8012BDBC (src/shared) */ - -DEFINE_func_8012BE54() /* dedup: shared engine-core @0x8012BE54 (src/shared) */ - -DEFINE_func_8012BE98() /* dedup: shared engine-core @0x8012BE98 (src/shared) */ - -DEFINE_func_8012BEE8() /* dedup: shared engine-core @0x8012BEE8 (src/shared) */ - -DEFINE_func_8012BF10() /* dedup: shared engine-core @0x8012BF10 (src/shared) */ - -void func_8012BF4C(s32 *a0, s32 a1) { - *(s32 *)((s32)a0 + 0x1C) = a1; - } - - -DEFINE_func_8012BF54() /* dedup: shared engine-core @0x8012BF54 (src/shared) */ - -DEFINE_func_8012BF68() /* dedup: shared engine-core @0x8012BF68 (src/shared) */ - -DEFINE_func_8012BF7C() /* dedup: shared engine-core @0x8012BF7C (src/shared) */ - -DEFINE_func_8012BFA8() /* dedup: shared engine-core @0x8012BFA8 (src/shared) */ - -DEFINE_func_8012C044() /* dedup: shared engine-core @0x8012C044 (src/shared) */ - -DEFINE_func_8012C098() /* dedup: shared engine-core @0x8012C098 (src/shared) */ - -DEFINE_func_8012C0EC() /* dedup: shared engine-core @0x8012C0EC (src/shared) */ - -DEFINE_func_8012C194() /* dedup: shared engine-core @0x8012C194 (src/shared) */ - -DEFINE_func_8012C1B8() /* dedup: shared engine-core @0x8012C1B8 (src/shared) */ - -DEFINE_func_8012C1DC() /* dedup: shared engine-core @0x8012C1DC (src/shared) */ - -DEFINE_func_8012C218() /* dedup: shared engine-core @0x8012C218 (src/shared) */ - -DEFINE_func_8012C284() /* dedup: shared engine-core @0x8012C284 (src/shared) */ - -DEFINE_func_8012C2D0() /* dedup: shared engine-core @0x8012C2D0 (src/shared) */ - -DEFINE_func_8012C31C() /* dedup: shared engine-core @0x8012C31C (src/shared) */ - -DEFINE_func_8012C354() /* dedup: shared engine-core @0x8012C354 (src/shared) */ - -DEFINE_func_8012C438() /* dedup: shared engine-core @0x8012C438 (src/shared) */ - -DEFINE_func_8012C51C() /* dedup: shared engine-core @0x8012C51C (src/shared) */ - -DEFINE_func_8012C588() /* dedup: shared engine-core @0x8012C588 (src/shared) */ - -DEFINE_func_8012C658() /* dedup: shared engine-core @0x8012C658 (src/shared) */ - -DEFINE_func_8012C724() /* dedup: shared engine-core @0x8012C724 (src/shared) */ - -DEFINE_func_8012C750() /* dedup: shared engine-core @0x8012C750 (src/shared) */ - -DEFINE_func_8012C820() /* dedup: shared engine-core @0x8012C820 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (149 ins). Counter (*(u16 *)&D_801270C4): gcc CSE's the two reads (store to -// dst+0x36 assumed non-aliasing the global) AND folds %lo per-access — target instead RELOADS -// and keeps &(*(u16 *)&D_801270C4) in one reg. Fix = pin a `u16*` to $v1 (register asm "$3"), read via -// `*(volatile u16*)pc` (defeats CSE -> 2 loads) but STORE via plain `*pc` (non-volatile store -// schedules store-before-sll, no extra `move`). count is s16 so `count==0` -> `sll 16;bnez`. -// else-block obj must be a BLOCK-LOCAL (gcc then picks $a1, not the shared if-branch $a0). - -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern void func_80016714(void *a0, s32 a1); - -s32 func_8012C890(s32 a0, s32 a1, s32 a2) { - u8 *src = (u8 *)a0; - u8 *dst = (u8 *)a1; - u16 *d; - s16 count; - u16 v2, v4; - s32 v10; - void *obj; - - *(u16 *)(dst + 0x0) = *(u16 *)(src + 0x6); - v2 = *(u16 *)(src + 0x0); - *(u16 *)(dst + 0x6) = v2; - *(u16 *)(dst + 0x88) = v2; - v2 = *(u16 *)(src + 0x2); - *(u16 *)(dst + 0xA) = v2; - *(u16 *)(dst + 0x8A) = v2; - v4 = *(u16 *)(src + 0x4); - *(u16 *)(dst + 0xC) = 0; - *(u16 *)(dst + 0x8) = 0; - *(u16 *)(dst + 0x4) = 0; - *(u16 *)(dst + 0xE) = v4; - *(u16 *)(dst + 0x8C) = v4; - *(u16 *)(dst + 0x70) = *(u16 *)(src + 0x8); - *(u16 *)(dst + 0x72) = *(u16 *)(src + 0xA) & 0xF7FF; - *(u16 *)(dst + 0xFC) = *(u16 *)(src + 0xE); - v10 = *(s32 *)(src + 0x10); - *(s32 *)(dst + 0x78) = (s32)&D_8018E40C; - *(s32 *)(dst + 0xDC) = v10; - - { - register u16 *pc __asm__("$3"); - pc = &(*(u16 *)&D_801270C4); - *(u16 *)(dst + 0x36) = *(volatile u16 *)pc; - count = *(volatile u16 *)pc + 1; - *pc = count; - if (count == 0) { - *pc = 1; - } - } - - if (a2 != 0) { - *(s32 *)(dst + 0x64) = a2; - *(s32 *)(dst + 0x68) = 0; - } else { - *(s32 *)(dst + 0x64) = 0; - *(s32 *)(dst + 0x68) = (s32)src; - } - - *(u16 *)(src + 0xA) |= 0x8000; - *(u16 *)(dst + 0x2) = 0; - d = D_801274E4; - *d &= 0xFFFE; - (*(void (**)(void *))(D_8011DB08 + *(u16 *)(dst + 0x0) * 4))(dst); - - if (*d & 1) { - s32 a1v; - obj = *(void **)(dst + 0x20); - if (obj != 0) { - s32 t = *(u16 *)obj; - if (t != 1) { - if (t != 2) { - goto done; - } - a1v = 0x38; - } else { - a1v = 0x84; - } - func_80016714(obj, a1v); - done:; - } - func_80016714(dst, 0x10C); - *(u16 *)(src + 0xA) &= 0x7FFF; - return 0; - } - - if (*(s32 *)(dst + 0x64) == 0) { - void *o = *(void **)(dst + 0x20); - if (o == 0) { - return (s32)dst; - } - if (*(u16 *)o == 1) { - s16 c = *(s16 *)(src + 0xC); - if (c != 0x7FFF) { - *(s16 *)((u8 *)o + 0x12) = c; - } - } - } - if (*(s32 *)(dst + 0x20) != 0) { - *(u16 *)(*(s32 *)(dst + 0x20) + 0x8) = *(u16 *)(dst + 0x6) + *(u16 *)(dst + 0x50); - *(u16 *)(*(s32 *)(dst + 0x20) + 0xA) = *(u16 *)(dst + 0xA) + *(u16 *)(dst + 0x52); - *(u16 *)(*(s32 *)(dst + 0x20) + 0xC) = *(u16 *)(dst + 0xE) + *(u16 *)(dst + 0x54); - } - return (s32)dst; -} - - -DEFINE_func_8012CAE4() /* dedup: shared engine-core @0x8012CAE4 (src/shared) */ - -DEFINE_func_8012CB64() /* dedup: shared engine-core @0x8012CB64 (src/shared) */ - -DEFINE_func_8012CBA4() /* dedup: shared engine-core @0x8012CBA4 (src/shared) */ - -DEFINE_func_8012CBCC() /* dedup: shared engine-core @0x8012CBCC (src/shared) */ - -DEFINE_func_8012CBF4() /* dedup: shared engine-core @0x8012CBF4 (src/shared) */ - -DEFINE_func_8012CC1C() /* dedup: shared engine-core @0x8012CC1C (src/shared) */ - -DEFINE_func_8012CC40() /* dedup: shared engine-core @0x8012CC40 (src/shared) */ - -DEFINE_func_8012CC64() /* dedup: shared engine-core @0x8012CC64 (src/shared) */ - - -DEFINE_func_8012CC88() /* dedup: shared engine-core @0x8012CC88 (src/shared) */ - - -DEFINE_func_8012CE2C() /* dedup: shared engine-core @0x8012CE2C (src/shared) */ - -DEFINE_func_8012CEB0() /* dedup: shared engine-core @0x8012CEB0 (src/shared) */ - -DEFINE_func_8012CFA8() /* dedup: shared engine-core @0x8012CFA8 (src/shared) */ - -DEFINE_func_8012D098() /* dedup: shared engine-core @0x8012D098 (src/shared) */ - -DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */ - -DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */ - -DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */ - -DEFINE_func_8012D4B4() /* dedup: shared engine-core @0x8012D4B4 (src/shared) */ - -DEFINE_func_8012D5DC() /* dedup: shared engine-core @0x8012D5DC (src/shared) */ - -DEFINE_func_8012D5E4() /* dedup: shared engine-core @0x8012D5E4 (src/shared) */ - -DEFINE_func_8012D624() /* dedup: shared engine-core @0x8012D624 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH - - - -int func_8012D664(int arg0, int arg1, int arg2) { - extern int func_8012F568(); - extern int D_8018AF38; - - struct S8012D664_8012D664 s; - int ret; - int t; - - s.a = (*(unsigned short*)&D_80126B5E); - s.b = (*(unsigned short*)&D_80126B62) - 0x40; - s.c = (*(unsigned short*)&D_80126B66); - ret = ((int(*)())func_800132BC)(arg0, &s); - t = arg1 + 0x20; - if (ret < t * t) { - func_8012F568(1, 1, 0, arg2, arg0, &D_8018AF38); - return 1; - } - return 0; -} - - - -DEFINE_func_8012D714() /* dedup: shared engine-core @0x8012D714 (src/shared) */ - - - -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; - -s32 func_8012DB84(void) -{ - func_8014C978(); - func_8012F568(1, 0xC001, 0, 0x3E8, &D_8018AF40, &D_8018AF48); -} - - -DEFINE_func_8012DBD0() /* dedup: shared engine-core @0x8012DBD0 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH - - - - -s32 func_8012DDA4() -{ - extern Entry_8012DDA4 * D_801E6CEC; - extern Entry_8012DDA4 * D_801E6CE8; - - Entry_8012DDA4 *p; - Entry_8012DDA4 *end = ((Entry_8012DDA4 *)D_80126720); - - while (D_801E6CEC != end) { - p = D_801E6CEC; - if (p->active != 0 && p != D_801E6CE8) { - D_801E6CEC = p + 1; - return p; - } - D_801E6CEC++; - } - D_801E6CEC = 0; - return 0; -} - - - -// @class: plumbing -// @stuck: none — MATCH (35/35 ins, relocation-masked) - - -s32 func_8012DE2C(s32 a0) { - extern u8 * D_801E6CEC; - extern u8 * D_801E6CE8; - - u8 *base; - u8 *end; - u8 *p; - - base = D_801202A0; - end = base + 0x6480; - D_801E6CEC = base; - D_801E6CE8 = ((u8 *)a0); - - while (D_801E6CEC != end) { - p = D_801E6CEC; - if (*(u16 *)p != 0 && p != ((u8 *)a0)) { - D_801E6CEC = p + 0x10C; - return p; - } - D_801E6CEC += 0x10C; - } - D_801E6CEC = 0; - return 0; -} - - - -DEFINE_func_8012DEB8() /* dedup: shared engine-core @0x8012DEB8 (src/shared) */ - -DEFINE_func_8012DF34() /* dedup: shared engine-core @0x8012DF34 (src/shared) */ - -DEFINE_func_8012DFBC() /* dedup: shared engine-core @0x8012DFBC (src/shared) */ - -DEFINE_func_8012DFCC() /* dedup: shared engine-core @0x8012DFCC (src/shared) */ - -DEFINE_func_8012DFD4() /* dedup: shared engine-core @0x8012DFD4 (src/shared) */ - -DEFINE_func_8012E014() /* dedup: shared engine-core @0x8012E014 (src/shared) */ - -DEFINE_func_8012E138() /* dedup: shared engine-core @0x8012E138 (src/shared) */ - -s32 func_8012E27C(void) { - return 0x1; - } - - -DEFINE_func_8012E284() /* dedup: shared engine-core @0x8012E284 (src/shared) */ - -DEFINE_func_8012E28C() /* dedup: shared engine-core @0x8012E28C (src/shared) */ - -DEFINE_func_8012E32C() /* dedup: shared engine-core @0x8012E32C (src/shared) */ - - -/* func_8012E364 (ov_SC01_077_jr_8012ACE0) — MATCH, 67/67 ins, 0 mismatched (reloc-masked). - * - * Verified: - * python3 tools/match_one.py func_8012E364 --c .run/near6/wave23/func_8012E364.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8012ACE0 - * -> MATCH (67 ins) func_8012E364 - * - * Symbols: sig_hints listed no callees and no data decls for this fn, so the three externs below - * are derived from the asm's %hi/%lo pairs: - * D_80126CE0 -> `lh` (0x8012E370) => s16 - * D_801E6CE0 -> `lw`/`sw` => s32 - * D_801E6CE4 -> `lw`/`sw` => s32 - * D_80126CE0 is already declared `extern s16 D_80126CE0;` inside ov_SC03_099_jr_8016AB6C.c etc., - * so the s16 typing is consistent with the rest of the tree. - * - * --------------------------------------------------------------------------------------------- - * HOW THE LAST 7 SLOTS CAME OFF (wave22 plateaued here at closeness 7; that header's - * "genuine regalloc hard tail / not C-expressible" verdict was WRONG on both clusters). - * - * CLUSTER B - idx 59-62 (`nop`/`negu $v1,$v1` vs `addu $v0,$v1,$zero`/`negu $v0,$v0`): 7 -> 3. - * NOT a delay-slot (dbr) residual at all. `mips.md:1526 abssi2` is a 3-instruction `multi` - * template that emits its OWN branch AND fills its OWN slot: - * REGNO(op0) == REGNO(op1): "bgez %1,1f%#\n\tsubu %0,%z2,%0\n1:" (slot -> maspsx nop) - * REGNO(op0) != REGNO(op1): "%(bgez %1,1f\n\tmove %0,%1\n\tsubu %0,%z2,%0\n1:%)" - * The target IS the second form (`.set noreorder` + `move` in the slot). So the whole residual - * was one question: does the abs DEST get a different hard reg from its SOURCE? - * Two edits, both required: - * (a) spell the abs as `__builtin_abs(v)` so a real `(abs:SI ...)` insn exists. A hand-rolled - * `d = v; if (d<0) d = -d;` is equivalent (cse folds it to the same abs insn - the wave22 - * draft was ALREADY going through abssi2, it just hit the dest==src arm), but a - * `(v<0) ? -v : v` ternary does NOT fold here: 68 ins, 19 off. - * (b) PIN the abs result to $2. Unpinned, local-alloc's combine_regs (K8) ties the abs dest - * into its dying input `v` -> REGNO(op0)==REGNO(op1) -> the nop form. Measured: the same - * file with `s32 d;` instead of the pin is 5 off; with the pin, 3 off. - * (Rejected on measurement: `d = v; asm("" :: "r"(v))` dead-read to break the tie = 68 ins/13; - * RC-12 `$0`-add opaque copy = 9; pinning d to $3 = 5.) - * - * CLUSTER A - idx 43-45 (the D_801E6CE4 load vs the 0x20($a2) load, swapped): 3 -> MATCH. - * Pure sched1 rank, and it IS steerable (sched.md S2, the birthing boost). The `.i.sched` dump - * of the wave22 draft says it outright: - * ;; insn[ 104]: priority = 1 (prev = D_801E6CE4) - * ;; insn[ 107]: priority = 1 (a = *(arg0+0x20)) - * ;; ready list at T-17: 107 (1) 104 (7f000001), now 104 107 - * Equal base priority, but 104 carries the `adjust_priority`/`birthing_insn_p` boost - * (sched.c:2506/2469 - `reg_n_sets[dest] == 1`) and 107 does NOT, because wave22 reused ONE - * variable `a` for four roles (hint value, division result, both tail entity loads) -> 4 sets. - * Backward scheduling means picked-first = placed-LAST, so the boosted 104 got pushed BELOW 107. - * Fix: give each tail entity load its own single-set local (`e1`, `e2`). Now both loads are - * boosted, the rank falls through to `rank_for_schedule`'s LUID tie-break (sched.c:2427, - * "highest LUID first" = ascending source order forward) and the two loads come out in - * statement order = the target order. - * NB the wave22 header's claim "splitting `a` regresses 2 slots" only applies to splitting the - * FIRST two roles (hint value / division result) - those must stay one multi-set cross-block - * variable. Splitting only the TAIL roles is what pays. - * - * LOAD-BEARING constructs (do not "simplify"): - * 1. `spd` - a local holding 0x1000 SET BEFORE the if/else chain, so the constant lives in a - * pseudo across the branch: `addiu $a3,$zero,0x1000` in the `blez` slot at 0x8012E3DC and the - * `sw $a3` / `addu $v1,$v1,$a3` forms at L8012E410. - * 2. `a` reused for the D_80126CE0 value AND the division result (multi-set, cross-block) - that - * is what puts the quotient in $a0 (`subu $a0,$v0,$v1`) instead of coalescing into $v0. - * 3. `flags` pinned to $2 (dropping it = 13 off) and `prev` pinned to $5 (dropping it = 6 off). - * 4. `d` pinned to $2 - see CLUSTER B(b). - * 5. `e1`/`e2` must be SEPARATE single-set locals - see CLUSTER A. - * The `arg0` $6 pin is NOT load-bearing any more (verified: still MATCH without it); it is kept - * because it costs nothing and documents the target's `addu $a2,$a0,$zero`. - */ - -void func_8012E364(s32 arg0_) -{ - - extern s16 D_80126CE0; - extern s32 D_801E6CE0; - extern s32 D_801E6CE4; - register s32 arg0 __asm__("$6"); - register s32 prev __asm__("$5"); - register u16 flags __asm__("$2"); - s32 a; - s32 diff; - s32 v; - register s32 d __asm__("$2"); - s32 spd; - s32 e1; - s32 e2; - - arg0 = arg0_; - *(s16 *)(arg0 + 0x5C) = 0; - a = D_80126CE0; - if (a == 0) { - D_801E6CE0 = 0x1000; - D_801E6CE4 = 0x1000; - } - a = ((0x90 - a) << 12) / 0x90; - *(s32 *)(arg0 + 0x1C) += 1; - spd = 0x1000; - - diff = D_801E6CE0 - a; - if (diff > 0) { - D_801E6CE0 -= diff >> 2; - } else if (diff < 0) { - D_801E6CE0 += (-diff) / 4; - } - - prev = D_801E6CE4; - e1 = *(s32 *)(arg0 + 0x20); - v = D_801E6CE0 - prev + spd; - D_801E6CE4 = spd; - flags = *(u16 *)(e1 + 0x2C); - D_801E6CE0 = v; - *(u16 *)(e1 + 0x2C) = flags | 0x10; - - e2 = *(s32 *)(arg0 + 0x20); - d = __builtin_abs(v); - *(s16 *)(e2 + 0x1C) = d; - *(s16 *)(e2 + 0x18) = d; - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x1A) = 0x1000; -} - - -DEFINE_func_8012E470() /* dedup: shared engine-core @0x8012E470 (src/shared) */ - -DEFINE_func_8012E4C8() /* dedup: shared engine-core @0x8012E4C8 (src/shared) */ - -DEFINE_func_8012E504() /* dedup: shared engine-core @0x8012E504 (src/shared) */ - -DEFINE_func_8012E544() /* dedup: shared engine-core @0x8012E544 (src/shared) */ - -DEFINE_func_8012E57C() /* dedup: shared engine-core @0x8012E57C (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH -DEFINE_func_8012E5CC() /* dedup: shared engine-core @0x8012E5CC (src/shared) */ - - -DEFINE_func_8012E688() /* dedup: shared engine-core @0x8012E688 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldlv0(r0) __asm__ volatile ( \ - "lhu $13, 4( %0 );" \ - "lhu $12, 0( %0 );" \ - "sll $13, $13, 16;" \ - "or $12, $12, $13;" \ - "mtc2 $12, $0;" \ - "lwc2 $1, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "$13" ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - - - -DEFINE_func_8012E778() /* dedup: shared engine-core @0x8012E778 (src/shared) */ - - -DEFINE_func_8012E88C() /* dedup: shared engine-core @0x8012E88C (src/shared) */ - -DEFINE_func_8012E8A8() /* dedup: shared engine-core @0x8012E8A8 (src/shared) */ - -DEFINE_func_8012E8C4() /* dedup: shared engine-core @0x8012E8C4 (src/shared) */ - -DEFINE_func_8012E8E0() /* dedup: shared engine-core @0x8012E8E0 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (branch-polarity invert: `0x78 != 0` puts compute block as fall-through) - -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; - -void func_8012E9C0(int param_1) -{ - int iVar1; - - if (*(short *)(param_1 + 0x60) != 0) { - if (*(unsigned char *)(param_1 + 0x5e) == 0x1d) { - *(short *)(param_1 + 0x82) = 0; - *(short *)(param_1 + 0x7c) = *(unsigned short *)(param_1 + 6); - *(short *)(param_1 + 0x7e) = *(unsigned short *)(param_1 + 0xa); - *(short *)(param_1 + 0x80) = *(unsigned short *)(param_1 + 0xe); - } - if (*(int *)(param_1 + 0x78) != 0) { - iVar1 = *(short *)(param_1 + 0x60) * - *(short *)(*(int *)(param_1 + 0x78) + 0x30) >> 0xc; - if (iVar1 < 1) { - iVar1 = 1; - } - } else { - iVar1 = *(short *)(param_1 + 0x60); - } - func_8016AA50(param_1, iVar1); - if ((*(unsigned short *)(param_1 + 0x82) & 1) != 0) { - func_8016B428(param_1); - func_80019064(&D_8018AF50); - } - } - return; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (93 ins) - - -extern void func_80049CAC(s32 a0, s32 a1); - -/* Blk16 lifted to src/shared/engine_types.h (Phase 22). */ - -DEFINE_func_8012EA90() /* dedup: shared engine-core @0x8012EA90 (src/shared) */ - - -DEFINE_func_8012EC04() /* dedup: shared engine-core @0x8012EC04 (src/shared) */ - -DEFINE_func_8012EECC() /* dedup: shared engine-core @0x8012EECC (src/shared) */ - -DEFINE_func_8012EF34() /* dedup: shared engine-core @0x8012EF34 (src/shared) */ - -DEFINE_func_8012EF70() /* dedup: shared engine-core @0x8012EF70 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -/* §37/§124 asm-label alias: the fleet canon declares this `extern void - * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in - * src/shared/engine_core.h (the one at src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c:1169 - * comes from DEFINE_func_8012EF70()). The byte-true body returns s32 and takes - * TWO pointers, so it conflicts on BOTH the return axis and the arity axis. - * Aliasing the C name sidesteps both with no header edit and no codegen change. - * This declaration MUST travel with the body. */ -s32 aF8012EFB8(void *param_1, void *param_2) __asm__("func_8012EFB8"); - -DEFINE_func_8012EFB8() /* dedup: shared engine-core @0x8012EFB8 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (33 ins, match_one verified) - -DEFINE_func_8012F038() /* dedup: shared engine-core @0x8012F038 (src/shared) */ - - -DEFINE_func_8012F0BC() /* dedup: shared engine-core @0x8012F0BC (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (clone of confirmed func_8012F214 template; passthrough a0) -DEFINE_func_8012F14C() /* dedup: shared engine-core @0x8012F14C (src/shared) */ - - -DEFINE_func_8012F1A4() /* dedup: shared engine-core @0x8012F1A4 (src/shared) */ - -DEFINE_func_8012F214() /* dedup: shared engine-core @0x8012F214 (src/shared) */ - -DEFINE_func_8012F274() /* dedup: shared engine-core @0x8012F274 (src/shared) */ - -DEFINE_func_8012F2E8() /* dedup: shared engine-core @0x8012F2E8 (src/shared) */ - -DEFINE_func_8012F374() /* dedup: shared engine-core @0x8012F374 (src/shared) */ - - - -// @class: remat -// @stuck: none — MATCH - -DEFINE_func_8012F40C() /* dedup: shared engine-core @0x8012F40C (src/shared) */ - - -DEFINE_func_8012F49C() /* dedup: shared engine-core @0x8012F49C (src/shared) */ - -DEFINE_func_8012F568() /* dedup: shared engine-core @0x8012F568 (src/shared) */ - -DEFINE_func_8012F5F4() /* dedup: shared engine-core @0x8012F5F4 (src/shared) */ - -DEFINE_func_8012F68C() /* dedup: shared engine-core @0x8012F68C (src/shared) */ - -DEFINE_func_8012F75C() /* dedup: shared engine-core @0x8012F75C (src/shared) */ - -DEFINE_func_8012F7B4() /* dedup: shared engine-core @0x8012F7B4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; - -void func_8012F828(int param_1) -{ - *(unsigned char *)(param_1 + 0xC1) = 4; - if (*(unsigned int *)(param_1 + 0xB4) & 8) { - func_80131170(param_1, D_8018AF6C, 0xB); - } - func_80131CA8(param_1, 9); -} - - -DEFINE_func_8012F87C() /* dedup: shared engine-core @0x8012F87C (src/shared) */ - - -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern void func_80131CA8(int a0, int a1); -extern u8 D_8018AF78[]; - -void func_8012F8C8(u8* arg0) { - *(u8*)(arg0 + 0xC1) = 7; - if (*(u32*)(arg0 + 0xB4) & 0x80) { - ((void (*)(void*, void*, s32))func_80131170)(arg0, D_8018AF78, 0xB); - } - ((void (*)(void*, s32))func_80131CA8)(arg0, 0x16); -} - - -DEFINE_func_8012F91C() /* dedup: shared engine-core @0x8012F91C (src/shared) */ - -DEFINE_func_8012F968() /* dedup: shared engine-core @0x8012F968 (src/shared) */ - -DEFINE_func_8012FB54() /* dedup: shared engine-core @0x8012FB54 (src/shared) */ - -DEFINE_func_8012FC30() /* dedup: shared engine-core @0x8012FC30 (src/shared) */ - -DEFINE_func_8012FCA4() /* dedup: shared engine-core @0x8012FCA4 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (57 ins), byte-exact via rtu_match on the real TU. -// ROOT CAUSE of the prior 3-off "irreducible schedule-steal": the wave-2 draft had the WRONG ARITY for -// func_80131B14. It cast the call to (int,int) and passed (param_1, 0x1C), which forced `li a1,0x1C` to be -// func_80131B14's OWN arg. That premise made the beqz-delay `li a1,0x1C` / jal-delay `move a0,s0` look like an -// un-reorderable {li,move} schedule-steal (calls.c emits a0 first; sched2 keeps LUID; reorg swaps them). -// THE FIX: func_80131B14 takes ONE arg — ((void(*)(int))func_80131B14)(param_1). Then: -// - func_80131B14's own delay slot = `move a0,s0` (its a0 arg), and a1 is NOT live across it. -// - the `li a1,0x1C` in the beqz(0x100) delay slot is the TERMINAL func_80131CA8(param_1,0x1C)'s arg, which -// reorg fill_slots_from_thread shares into the delay slot for the beqz-taken (else) edge FOR FREE, because -// a1 is dead on the fall-through (1-arg func_80131B14 never reads a1) so there is no resource conflict. -// No barrier, no register pin, no schedule mutation — the correct arity makes the target schedule fall out -// of stock gcc-2.7.2 reorg. (Lesson for the cookbook: before conceding a delay-slot "steal" as irreducible, -// re-derive the CALLEE ARITY from the asm — a spurious extra register arg that is live across the call is what -// blocks reorg from sharing a downstream constant into a branch delay slot.) - - -s32 func_8012FCC4(s32 param_1) { - extern int D_8018AF84; - - int v1 = *(int *)(((int)param_1) + 0xC4); - *(char *)(((int)param_1) + 0xC1) = 8; - if (v1 & 2) { - *(char *)(((int)param_1) + 0xC1) = 1; - func_80131CA8(((int)param_1), 3); - return; - } - if (v1 & 1) { - ((void (*)(int, int))func_80131E00)(((int)param_1), 1); - return; - } - if (*(int *)(((int)param_1) + 0xB4) & 0x100) { - ((void (*)(int))func_80131B14)(((int)param_1)); - if (*(short *)(((int)param_1) + 0x76) <= 0) { - ((void (*)(int, int))func_80131E00)(((int)param_1), 0xC); - return; - } - if (((s32(*)(s32, s32))func_80131A34)(((int)param_1), 4) != 0) { - *(char *)(((int)param_1) + 0xC2) = 0; - } else { - *(short *)(((int)param_1) + 0x98) = 0; - *(char *)(((int)param_1) + 0xC2) = 1; - } - ((void (*)(int, void *))func_8012B14C)(((int)param_1), &D_8018AF84); - *(int *)(((int)param_1) + 0x1C) = 0; - func_80131CA8(((int)param_1), 0x1C); - return; - } - func_80131CA8(((int)param_1), 0x1C); -} - - - -DEFINE_func_8012FDA8() /* dedup: shared engine-core @0x8012FDA8 (src/shared) */ - -DEFINE_func_8012FE70() /* dedup: shared engine-core @0x8012FE70 (src/shared) */ - -DEFINE_func_8012FF00() /* dedup: shared engine-core @0x8012FF00 (src/shared) */ - -DEFINE_func_8012FF4C() /* dedup: shared engine-core @0x8012FF4C (src/shared) */ - -DEFINE_func_8012FF98() /* dedup: shared engine-core @0x8012FF98 (src/shared) */ - -DEFINE_func_8013001C() /* dedup: shared engine-core @0x8013001C (src/shared) */ - -DEFINE_func_80130088() /* dedup: shared engine-core @0x80130088 (src/shared) */ - -DEFINE_func_801300F4() /* dedup: shared engine-core @0x801300F4 (src/shared) */ - -DEFINE_func_801301E8() /* dedup: shared engine-core @0x801301E8 (src/shared) */ - -DEFINE_func_80130278() /* dedup: shared engine-core @0x80130278 (src/shared) */ - -DEFINE_func_80130314() /* dedup: shared engine-core @0x80130314 (src/shared) */ - -DEFINE_func_80130360() /* dedup: shared engine-core @0x80130360 (src/shared) */ - -DEFINE_func_801303A0() /* dedup: shared engine-core @0x801303A0 (src/shared) */ - -DEFINE_func_801303EC() /* dedup: shared engine-core @0x801303EC (src/shared) */ - -DEFINE_func_80130438() /* dedup: shared engine-core @0x80130438 (src/shared) */ - -DEFINE_func_80130514() /* dedup: shared engine-core @0x80130514 (src/shared) */ - -DEFINE_func_801305CC() /* dedup: shared engine-core @0x801305CC (src/shared) */ - -DEFINE_func_80130650() /* dedup: shared engine-core @0x80130650 (src/shared) */ - -DEFINE_func_80130740() /* dedup: shared engine-core @0x80130740 (src/shared) */ - -DEFINE_func_801307B0() /* dedup: shared engine-core @0x801307B0 (src/shared) */ - -DEFINE_func_80130858() /* dedup: shared engine-core @0x80130858 (src/shared) */ - -DEFINE_func_80130898() /* dedup: shared engine-core @0x80130898 (src/shared) */ - -DEFINE_func_801308DC() /* dedup: shared engine-core @0x801308DC (src/shared) */ - -DEFINE_func_80130974() /* dedup: shared engine-core @0x80130974 (src/shared) */ - -DEFINE_func_80130A18() /* dedup: shared engine-core @0x80130A18 (src/shared) */ - -DEFINE_func_80130AC4() /* dedup: shared engine-core @0x80130AC4 (src/shared) */ - -DEFINE_func_80130AF0() /* dedup: shared engine-core @0x80130AF0 (src/shared) */ - -DEFINE_func_80130C08() /* dedup: shared engine-core @0x80130C08 (src/shared) */ - - -extern void (*D_8018AF8C[])(void); - -void func_80130D0C(void *a0) { - D_8018AF8C[*(u8 *)((s32)a0 + 0xC1)](); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (266/266). Levers: pin pa=$s2 p=$s3, tbl=$s0 (NOT s1v — leave natural so switch-mask lands in $v1); tight-block pins for the table-addr temps `register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2")` force offset=$v1/base=$v0 (else compute-into-dest $s0); inline offset `TABLE + s1v*2` (late) keeps the 2-sll delay-slot dup; 0x60000 reuses `tbl` (not a fresh `e`) so it stays $s0 and materializes after rand(). -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; - -void func_80130D48(s32 arg0) -{ - register s16 *tbl __asm__("$16"); - register s32 pa __asm__("$18") = arg0; - register u8 *p __asm__("$19") = D_80078E78; - s32 s1v; - s32 call_a0; - s32 call_a1; - s32 cnt; - s32 r; - void *ret; - - s1v = func_80131CF4(*(s32 *)((s8 *)pa + 0xBC), 0x15); - if (s1v == 0) { - return; - } - - if (*(u8 *)((s8 *)pa + 0x5E) == 0xB) { - call_a0 = 0x33; - call_a1 = 0; - goto do_call; - } - - switch (s1v & 0xFFFF0000) { - case 0x10000: { - u32 x = D_80078EB4; - u32 y = D_80078EB2; - u32 b; - u32 a; - - s1v = 0; - if (x == y) { - s1v = 0xC; - } else if ((y >> 1) >= x) { - s1v = 3; - } - - b = *(u16 *)(p + 0x40); - a = *(u16 *)(p + 0x3E); - if (b == a) { - s1v += 0x18; - } else if ((a >> 1) >= b) { - s1v += 6; - } - { register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2"); v1 = s1v * 2; bp = (s8 *)D_8018B00C; tbl = (s16 *)(bp + v1); } - - r = rand() % 100; - cnt = 0; - loop27: - if (r >= *tbl) { - cnt += 1; - tbl += 1; - if (cnt < 3) { - goto loop27; - } - } - - s1v = 0; - switch (cnt) { - case 0: - tbl = D_8018B06C; - s1v = 0x31; - break; - case 1: { - s32 mx = *(u16 *)(p + 0x3A); - s32 cur = *(u16 *)(p + 0x3C); - if (((mx * 7) / 10) >= cur) { - s1v = 4; - if ((mx / 2) >= cur) { - s1v = 8; - if ((mx / 5) >= cur) { - s1v = 0xC; - } - } - } - { register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2"); v1 = s1v * 2; bp = (s8 *)D_8018B074; tbl = (s16 *)(bp + v1); } - s1v = 0x32; - break; - } - case 2: { - s32 mx = *(u16 *)(p + 0x3E); - s32 cur = *(u16 *)(p + 0x40); - if (((mx * 7) / 10) >= cur) { - s1v = 4; - if ((mx / 2) >= cur) { - s1v = 8; - if ((mx / 5) >= cur) { - s1v = 0xC; - } - } - } - { register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2"); v1 = s1v * 2; bp = (s8 *)D_8018B094; tbl = (s16 *)(bp + v1); } - s1v = 0x33; - break; - } - } - - r = rand() % 100; - call_a1 = 0; - loop50: - if (r >= *tbl) { - call_a1 += 1; - tbl += 1; - if (call_a1 < 4) { - goto loop50; - } - } - call_a0 = s1v; - goto do_call; - } - case 0x20000: - call_a0 = 0x33; - call_a1 = 0; - goto do_call; - case 0x30000: - call_a0 = 0x31; - call_a1 = 0; - goto do_call; - case 0x40000: - call_a0 = 0x32; - call_a1 = 0; - goto do_call; - case 0x50000: - call_a0 = 0x33; - call_a1 = 0; - goto do_call; - case 0x60000: { - s32 rr = rand() & 0xFF; - tbl = D_8018AFDC; - if (rr >= *tbl) { - do { - tbl += 3; - } while (rr >= *tbl); - } - call_a0 = tbl[1]; - if (*(u16 *)(p + 0x40) < 4U) { - call_a0 = 0x33; - } - call_a1 = tbl[2]; - goto do_call; - } - case 0x70000: - call_a0 = 0x27B; - call_a1 = 0; - goto do_call; - default: - return; - } - -do_call: - ret = func_8012C658(call_a0, call_a1, pa); - if (ret != 0) { - *(u16 *)((s8 *)ret + 0xA) -= 0x20; - } -} - - -// @class: loop-guard -// @stuck: none — MATCH (88 ins). Keys: duplicate the c!=0/c==0 bodies verbatim (gcc cross-jumps -// the shared "|=4;goto tail" into L240 on its own); tail dispatch as `if (((s32(*)(s32))func_8012BCCC)(p) <= 0x8FFF)` -// (the <= polarity makes the >0x8FFF/0x33-first block the bnez'd else=L298, fall-through = 0x32-first); -// both AC8 tails cross-jump-merge into the shared L2AC final call. Externs aligned to the file's -// existing decls for gate-safety: func_80131B14(void) [file line 1486], func_8012B14C/func_8012BCCC -// canonical (s32) [DEFINE macros], ((s32(*)())func_80131AC8)() no-proto (compatible w/ later 1-arg DEFINE, 2-arg call). - - -void func_80131170(s32 p, s32 b, s32 c) { - extern u8 D_8018AF60[]; - - func_80131B14(); - *(u8 *)(((u8 *)p) + 0xC2) = 0; - *(u8 *)(((u8 *)p) + 0xC3) = 0; - *(s16 *)(((u8 *)p) + 0x98) = 0; - if (((u8 *)b) == 0) { - ((u8 *)b) = D_8018AF60; - } - func_8012B14C((s32)((u8 *)p), (s32)((u8 *)b)); - *(s32 *)(((u8 *)p) + 0x1C) = 0; - if (c != 0) { - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), c) != 0) goto tail; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x24) != 0) goto tail; - *(s32 *)(((u8 *)p) + 0xC4) &= ~4; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x20) != 0) { - *(s32 *)(((u8 *)p) + 0xC4) |= 4; - } else { - *(s16 *)(((u8 *)p) + 0x98) = 0; - } - } else { - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x24) != 0) goto tail; - *(s32 *)(((u8 *)p) + 0xC4) &= ~4; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x20) != 0) { - *(s32 *)(((u8 *)p) + 0xC4) |= 4; - } else { - *(s16 *)(((u8 *)p) + 0x98) = 0; - } - } -tail: - if (*(s16 *)(((u8 *)p) + 0x76) > 0) { - return; - } - if (((s32(*)(s32))func_8012BCCC)((s32)((u8 *)p)) <= 0x8FFF) { - if (((s32(*)())func_80131AC8)(((u8 *)p), 0x32) != 0) return; - ((s32(*)())func_80131AC8)(((u8 *)p), 0x33); - } else { - if (((s32(*)())func_80131AC8)(((u8 *)p), 0x33) != 0) return; - ((s32(*)())func_80131AC8)(((u8 *)p), 0x32); - } -} - - - -// @class: struct -// @stuck: none — MATCH (8-byte alignment-1 struct copy → lwl/lwr/swl/swr) - - /* size 8, alignment 1 -> unaligned copy */ - - -s32 func_801312D0(s32 param_1, void *param_2) -{ - extern int func_80131CF4(int, int); - extern M8_801312D0 D_8018B0B4; - - int iVar5; - - iVar5 = func_80131CF4(*(int *)(((int)param_1) + 0xBC), 0x2E); - if (iVar5 != 0) { - ((short *)param_2)[2] = 0; - ((short *)param_2)[0] = 0; - ((short *)param_2)[1] = (short)iVar5; - } else { - *(M8_801312D0 *)((short *)param_2) = D_8018B0B4; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (424/424). Verified TWICE: match_one 424/424 standalone AND 424/424 -// relocation-masked through the REAL src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c at the -// func_80131340 slot (L1635) with every DEFINE_ macro expanded (cpp -> cc1 -> maspsx -// --expand-div -> as, exit 0, zero `conflicting types`). -// -// --------------------------------------------------------------------------------------- -// THE TWO LEVERS THAT CRACKED IT (both byte-proven; do not "clean up"): -// -// (1) `case 0: case 1:` SHARE one block. jtbl_801D8144 (read from the sibling overlay data, -// asm/ov_SC03_099/data/tail2.data.s @801BCE68) is -// [0]=0x80131440 [1]=0x80131440 [2]=0x80131634 [3]=0x8013174C [4]=0x801318F4 -// — two entries point at the SAME block. That is the ONLY reason the shared block -// re-tests `*(u8*)(a0+0xC2) == 0` to gate its vector-init half (gcc-2.7.2 has no VRP, -// so the switch value is not propagated into the case body). -// -// (2) CROSS-JUMP POLARITY (§5a, the 4-instruction shortfall). The `lh 0x76` / E00-vs-C78 -// if-else appears TWICE (case 3's tail @801318DC and case 4 @80131944). Both arms must -// be written `if (x <= 0) E00(a0,6); else C78(a0);` — the SAME polarity in BOTH sites. -// Writing case 3 as the "natural" `if (x > 0) C78 else E00` compiles 4 ins SHORT: gcc -// merges case 3's ENTIRE tail into case 4's (`j` straight to the shared `lh`). -// Why (ground-truthed against tools/reference/gcc-2.7.2/jump.c): -// - jump.c:1969 `find_cross_jump(insn, target, 2, ...)` pairs each `j Lend` with every -// OTHER jump to Lend (the jump_chain) and merges BACKWARD while -// `rtx_renumbered_equal_p` holds. The forward walk hits the LOWER address first, so -// case 3 is always e1 (deleted/redirected) and case 4 is e2 (kept) — hence the -// surviving .L80131954/.L80131964 bodies physically live in case 4. -// - With the matching polarity, case 3's FIRST `j` is the E00 body -> it merges into -// .L80131954, leaving `bgtz -> Lelse; j .L80131954; Lelse:`. Lelse now sits directly -// after the `j`, so jump.c's conditional-jump-around-an-unconditional-jump transform -// fires and INVERTS it to `blez -> .L80131954`; the C78 body then merges into -// .L80131964, giving exactly `blez .L80131954 / j .L80131964`. The two sites are now -// textually different (blez+j vs bgtz+fallthru), so find_cross_jump stops at the -// branch and both `lh` blocks survive. That asymmetric-looking output is EMITTED BY -// symmetric source — the inversion is what creates the asymmetry. -// - With the opposite polarity in case 3, the C78 body merges FIRST, the inversion -// fires the other way, and case 3 becomes byte-identical to case 4 -> fully merged. -// NOTE: the §5a volatile-asm barrier is the WRONG tool here — it would also un-merge the -// .L80131954/.L80131964 call bodies (+8 ins). The fix is polarity, not a barrier. -// -// OTHER BYTE-PROVEN KEYS: -// - Two SEPARATE locals for the two func_80131CF4 results. Reusing one `temp` lets gcc -// coalesce it into $a1 for the second call and emits an extra `move a1,v0` up at the -// FIRST call site (+1 ins, whole-function cascade). -// - The /3 store block: `*(s32*)(a0+0x14) = (-D_801E6CF4)/3;` must come FIRST (before the -// 0x1C/0xC2 stores). Written after them, gcc will not hoist the D_801E6CF4 load above -// `sw zero,0x1C($s0)` and the mult-latency slots fill differently (9 ins reordered). -// - sp10/18/20/28 are four 8-byte, 2-byte-aligned vectors. `sp28 = sp20` is a DEAD -// aggregate copy that gcc-2.7.2 KEEPS (no aggregate DSE) — it is load-bearing, not dead -// code. align(2) < 4 is what makes the copies lwl/lwr + swl/swr (cf. the TU's own `M8` -// align-1 idiom at L1614, used by func_801312D0 directly above this slot). -// - Every vector field read is `lhu` -> the fields are u16. Contrast `lh 0xA($s0)`, -// `lh 0x76($s0)`, `lh 0x12($v0)`, which are genuinely signed (s16 casts). -// - `func_801319E0(a0)` gets a NOP delay slot, not `addu $a0,$s0,$zero`: cse-2.7.2 deletes -// the redundant arg copy because $a0 still holds the param at the first call. Declaring -// it 0-arg to "explain" the nop would be wrong (canonical is 1-arg) — just call it. -// - `*(s32*)(a0+0x10) = *(s32*)(a0+0x10) * 15 / 16;` -> (x<<4)-x then the bgez/+0xF/sra-4 -// signed-div-by-16 fixup. `>>4` would drop the fixup. -// - func_80131D68 is 2-arg here — (a0, D_801E6CF0); a1 is reloaded from the global before -// all 5 of its call sites (the value is NOT cached in a callee reg: gcc-2.7.2's cse is -// extended-basic-block-local, so each join point reloads). -// -// DECL RECONCILE (§17a-1) — the TU declares these at FILE scope BEFORE this slot (L1635), -// so they are HARD `conflicting types` if redeclared differently. Sigs below are byte-copies -// of the canonical set; where the canonical return is `void` but the asm USES $v0, the read -// is done with a call-site cast (the codebase's own idiom, engine_core.h L17026) — which is -// codegen-neutral: -// - func_8012CBF4 / func_8012CBA4 / func_8012CC64: canonical `void`, $v0 used -> cast. -// - func_80131E00: canonical takes `struct S80131E00 *` -> declared K&R no-proto here -// (compatible with the prototyped decl at L1250; params are promotion-safe: ptr + s32), -// matching the TU's own precedent `extern void func_80131CA8();` at L1189. -// - func_8012B23C / func_8012CC64 / func_8012CEB0 / func_8012DBD0 / func_8012CBF4 are -// DEFINE_-instantiated ABOVE this slot — the decls here are exact-identical -// redeclarations (legal C), not new sigs. -// - func_80131CF4 is declared 2-arg `(int,int)`, mirroring func_801312D0's already-matched -// block-scope decl at L1619 (the engine_core canonical 1-arg form is the stale one). - -extern void func_801319E0(s32 a0); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern int func_80131D68(int, int); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012B23C(s32 a0); -extern void func_8012CBA4(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_80131E00(); -extern void func_80131C78(s32 a0); -extern void func_80131CA8(int a0, int a1); - -extern s32 D_801E6CF0; -extern s32 D_801E6CF4; - -void func_80131340(s32 a0) -{ - /* 8-byte, align-2 vector: align < 4 is what makes the assignments unaligned - * (lwl/lwr + swl/swr) block moves. Block-scope so the body stays self-contained - * for the dedup_propagate lift (§28-#1) and cannot collide with the TU's `M8`. */ - struct V8 { - u16 vx, vy, vz, pad; - }; - extern struct V8 D_8018B0B4; - /* BLOCK-scope, mirroring the already-matched func_801312D0's decl at TU L1619: the - * later DEFINE_func_80131AC8() (TU L1964, AFTER this slot) redeclares func_80131CF4 - * with the stale 1-arg engine_core canonical. A file-scope `extern int - * func_80131CF4(int,int);` here is a HARD `conflicting types` against it (cc1 rc=33, - * measured); block-scope goes out of scope before that macro and compiles clean. */ - extern int func_80131CF4(int, int); - - struct V8 sp10; - struct V8 sp18; - struct V8 sp20; - struct V8 sp28; - s32 temp; - s32 var_a1; - - if (*(s16 *)(a0 + 0xA) >= 0x10) { - func_801319E0(a0); - return; - } - - temp = func_80131CF4(*(s32 *)(a0 + 0xBC), 0x2E); - if (temp != 0) { - sp10.vz = 0; - sp10.vx = 0; - sp10.vy = temp; - } else { - sp10 = D_8018B0B4; - } - - if (*(s32 *)(a0 + 0x10) != 0 || *(s32 *)(a0 + 0x18) != 0) { - var_a1 = func_80131CF4(*(s32 *)(a0 + 0xBC), 0x19); - if (var_a1 == 0) { - var_a1 = 0x50; - } - func_8012DBD0(a0, var_a1, - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x800, 0x1D); - } - - switch (*(u8 *)(a0 + 0xC2)) { - case 0: - case 1: - if (*(s32 *)(a0 + 0xC4) & 4) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) -= 0x100; - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - if (*(u8 *)(a0 + 0xC2) == 0) { - *(u8 *)(a0 + 0xC2) = 1; - sp18.vx = *(u16 *)(a0 + 0x3A); - sp18.vy = *(u16 *)(a0 + 0x3E); - sp18.vz = *(u16 *)(a0 + 0x42); - sp20 = sp18; - sp20.vx += sp10.vx; - sp20.vy += sp10.vy; - sp20.vz += sp10.vz; - sp28 = sp20; /* load-bearing dead aggregate copy — gcc-2.7.2 has no aggregate DSE */ - func_8012CEB0((s32)&sp18, (s32)&sp20, 1); - sp20.vx -= sp10.vx; - sp20.vy -= sp10.vy; - sp20.vz -= sp10.vz; - *(u16 *)(a0 + 0x3A) = sp20.vx; - *(u16 *)(a0 + 0x3E) = sp20.vy; - *(u16 *)(a0 + 0x42) = sp20.vz; - *(u16 *)(a0 + 0x6) = sp20.vx; - *(u16 *)(a0 + 0xA) = sp20.vy; - *(u16 *)(a0 + 0xE) = sp20.vz; - } - D_801E6CF0 = ((s32 (*)(s32, s32))func_8012CC64)(a0, (s32)&sp10); - if (D_801E6CF0 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E6CF0 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - } else if (D_801E6CF0 & 0x2000) { - if (func_80131D68(a0, D_801E6CF0) == 1) { - return; - } - *(u8 *)(a0 + 0xC2) = 2; - func_80143B6C(a0, 1); - *(s32 *)(a0 + 0x14) = 0xFFF30000; - *(s32 *)(a0 + 0x1C) = 0; - } else if (D_801E6CF0 & 0x8000) { - *(u8 *)(a0 + 0xC2) = 2; - *(s32 *)(a0 + 0x1C) = 0; - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - break; - - case 2: - if (*(s32 *)(a0 + 0xC4) & 4) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) -= 0x100; - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - D_801E6CF4 = *(s32 *)(a0 + 0x14); - D_801E6CF0 = ((s32 (*)(s32, s32))func_8012CC64)(a0, (s32)&sp10); - if (D_801E6CF0 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E6CF0 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - } else if (D_801E6CF0 & 0x2000) { - if (func_80131D68(a0, D_801E6CF0) == 1) { - return; - } - func_80143B6C(a0, 1); - /* MUST precede the 0x1C/0xC2 stores — see the header note on the /3 block. */ - *(s32 *)(a0 + 0x14) = (-D_801E6CF4) / 3; - *(s32 *)(a0 + 0x1C) = 0; - *(u8 *)(a0 + 0xC2) = 3; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; - } else if (D_801E6CF0 & 0x8000) { - *(u8 *)(a0 + 0xC2) = 3; - *(s32 *)(a0 + 0x1C) = 0; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - break; - - case 3: - *(s32 *)(a0 + 0x10) = *(s32 *)(a0 + 0x10) * 15 / 16; - *(s32 *)(a0 + 0x18) = *(s32 *)(a0 + 0x18) * 15 / 16; - if (*(u8 *)(a0 + 0xC3) & 1) { - D_801E6CF0 = ((s32 (*)(s32))func_8012CBA4)(a0); - if (D_801E6CF0 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (func_80131D68(a0, D_801E6CF0) == 1) { - return; - } - if (!(D_801E6CF0 & 0x6000)) { - func_80131E00(a0, 0xD); - return; - } - } else { - D_801E6CF0 = ((s32 (*)(s32))func_8012CBF4)(a0); - if (D_801E6CF0 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E6CF0 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - break; - } else if (D_801E6CF0 & 0x2000) { - if (func_80131D68(a0, D_801E6CF0) == 1) { - return; - } - *(u8 *)(a0 + 0xC3) |= 1; - } else if (D_801E6CF0 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - } - if ((*(s32 *)(a0 + 0x1C) & 3) == 3) { - func_80143B6C(a0, 1); - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) < 0x11) { - break; - } - if (!(D_801E6CF0 & 0x6000)) { - func_80131E00(a0, 0xD); - return; - } - /* polarity MUST match case 4's — see the cross-jump note in the header. */ - if (*(s16 *)(a0 + 0x76) <= 0) { - func_80131E00(a0, 6); - } else { - func_80131C78(a0); - } - break; - - case 4: - D_801E6CF0 = ((s32 (*)(s32))func_8012CBA4)(a0); - if (D_801E6CF0 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801E6CF0 & 0x2000) { - if (func_80131D68(a0, D_801E6CF0) == 1) { - return; - } - if (*(s16 *)(a0 + 0x76) <= 0) { - func_80131E00(a0, 6); - } else { - func_80131C78(a0); - } - } else { - if ((*(s32 *)(a0 + 0x1C) & 3) == 3) { - func_80143B6C(a0, 1); - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - } - break; - } - - func_80131CA8(a0, 0x2F); -} - - -DEFINE_func_801319E0() /* dedup: shared engine-core @0x801319E0 (src/shared) */ - - - -/* func_80131A34 — MATCH (37/37). - * Keys: - * - func_80131CF4 is the TU's 2-arg canonical `(int,int)` and the SECOND arg is the - * incoming `a1` (kind). $a1 already holds it, so the call costs no arg-setup insn -- - * but the extra arg ref is what breaks the sched2 prologue save-order tie so - * `sw $s0` schedules before `sw $ra` (cookbook §52a RC-3 / sched.md S7). Without it - * the pair comes out ra-then-s0 (2 mismatches); the `const`-load form of RC-3 fixes - * the tie but OVER-frees (the `lw $a0` hoists above both saves, 3 mismatches). - * - Declaration is BLOCK-SCOPE on purpose, mirroring func_801312D0 (TU L1619) and - * func_80131340 (TU L1822): the later DEFINE_func_80131AC8() re-declares - * func_80131CF4 with the stale 1-arg engine_core canonical, so a file-scope 2-arg - * decl here is a hard `conflicting types` (cc1 rc=33). - * - func_8012A828 is the TU's file-scope canonical (L280) `(s32, void *)`; `p` rides in - * $a1 from the return of func_80131CF4, so no move is emitted. - */ -DEFINE_func_80131A34() /* dedup: shared engine-core @0x80131A34 (src/shared) */ - - -DEFINE_func_80131AC8() /* dedup: shared engine-core @0x80131AC8 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (89 ins). Reconcile: TU canonical decl is `void func_80131B14(void)` -// (ov_SC01_077_a.c L1676/L1756; callers cast to (void(*)(int)) when passing p), so the def MUST be -// (void) or cc1 hard-errors `conflicting types` (exit 33). §42c lever #6: capture incoming $a0 into a -// NORMAL pseudo (`register u8 *a0v __asm__("$4"); u8 *p = a0v;`) so p gets a callee-saved home ($s0). -// func_8012B2CC/func_8012B23C are file-scope DEFINE'd here (split L740/L744) as void(s32) — do NOT redeclare; -// the (void(*)(void*)) cast on the bare name is byte-neutral. Body keys: e(0x5E) as s32 not u8 (kills the -// compare-time andi 0xff); f76 dual-width via per-access casts (lhu in the decrement, lh in the <=0 compare); -// the p->f20 reload split into TWO separate temps so the 2nd load takes $v0 not $v1. - -void func_80131B14() { - extern void func_8002A520(void *); - extern void func_8002A790(void *); - extern u8 D_8018B0BC; - - register u8 *a0v __asm__("$4"); - u8 *p = a0v; - - - s32 e = *(u8 *)(p + 0x5E); - - if (*(s16 *)(p + 0x60) != 0) { - if (e == 0x1D) { - *(s16 *)(p + 0x82) = 0; - *(s16 *)(p + 0x7C) = *(u16 *)(p + 0x06); - *(s16 *)(p + 0x7E) = *(u16 *)(p + 0x0A); - *(s16 *)(p + 0x80) = *(u16 *)(p + 0x0E); - } - { - s32 dec; - s32 q = *(s32 *)(p + 0x78); - if (q != 0) { - dec = ((s32)*(s16 *)(p + 0x60) * (s32)*(s16 *)(q + 0x30)) >> 12; - if (dec <= 0) dec = 1; - } - *(u16 *)(p + 0x76) = *(u16 *)(p + 0x76) - dec; - } - ((void (*)(void *))func_8016AA50)(p); - if (*(u16 *)(p + 0x82) & 1) { - ((void (*)(void *))func_8016B428)(p); - ((void(*)(void *))func_80019064)(&D_8018B0BC); - } - } - - *(u16 *)(p + 0x5C) = *(u16 *)(p + 0x5C) & 0xFFFE; - - if (e != 0x1D) { - if (*(u8 *)(p + 0xC8)) func_8002A520(p); - if (*(u8 *)(p + 0xC9)) func_8002A790(p); - } - - if (*(s16 *)(p + 0x76) <= 0) *(s16 *)(p + 0x5C) = 0; - - { - s32 r = *(s32 *)(p + 0x20); - *(s16 *)(r + 0x12) = (*(u16 *)(p + 0x62) + 0x800) & 0xFFF; - { - s32 r2 = *(s32 *)(p + 0x20); - *(s16 *)(r2 + 0x14) = 0; - *(s16 *)(r2 + 0x10) = 0; - } - } - - ((void (*)(void *))func_8012B2CC)(p); - ((void (*)(void *))func_8012B23C)(p); -} - - - -DEFINE_func_80131C78() /* dedup: shared engine-core @0x80131C78 (src/shared) */ - - -/* func_80131CA8 — RECONCILE (§37/§124 asm-label alias) - * - * Declaration-environment conflict, NOT a body problem: - * The TU's DEFINE_func_80131C78() expansion (jr_8012ACE0.c L2232) and the later - * DEFINE_func_80131D68() expansion (L2250) each emit the canonical - * extern void func_80131CA8(int a0, int a1); - * (src/shared/engine_core.h, e.g. L1961/L4131). The byte-correct body is - * `s32 f(int)` — it disagrees on BOTH the return axis (s32 vs void) and the - * arity axis (1 vs 2), so it collides with the macro-emitted declaration on - * either side of the slot. Escape 1 (conform + cast at use) cannot apply: the - * conflict is on the DEFINED symbol itself. - * - * Fix: define under the C name aF80131CA8 with __asm__("func_80131CA8") so the - * C-level name never meets the canonical declaration, while the emitted symbol - * is unchanged. Codegen-neutral — match_one still prints MATCH (19/19). - * This declaration MUST travel with the body. - * - * func_80131CF4 is declared here 1-arg s32, matching the engine_core canonical - * at engine_core.h L6563; it does not collide anywhere in this TU (verified by - * a full preprocess+cc1 of the spliced TU: diagnostic-free apart from - * pre-existing warnings). - */ -extern s32 func_80131CF4(s32 a0); - -s32 aF80131CA8(int a0) __asm__("func_80131CA8"); - -DEFINE_func_80131CA8() /* dedup: shared engine-core @0x80131CA8 (src/shared) */ - - - - -/* func_80131CF4 — table lookup: walk (key, value) pairs; key 0xD chains to the - * next table via value; key == wanted returns value; key 0 terminates. - * - * The __asm__ inside the body is a matching pin, not logic. It does two things - * gcc-2.7.2 -O2 needs in order to reproduce the target's preheader exactly: - * 1. "0"(0xD) forces the 0xD compare constant to be materialised HERE - * (`addiu $v1,$zero,0xD`) instead of being loop-hoisted, which places it - * AFTER the preheader load and drops the load-delay nop at the loop head. - * 2. the "memory" clobber stops CSE folding the preheader re-read of a0[0] - * into the guard's read (that CSE costs the second `lw $v0,0x0($a0)`). - * The asm body is empty, so it emits no instruction of its own. - * - * RECONCILE (§37/§124 asm-label alias) — the gate error was - * jr_8012ACE0.c:2248 conflicting types for func_80131CF4 || :2164 previous declaration - * :2164 is `DEFINE_func_80131AC8()`, whose expansion (src/shared/engine_core.h:6563) - * carries the STALE 1-arg engine-core canonical `extern s32 func_80131CF4(s32 a0);`. - * That prototype is wrong for this function (the TU's own call sites at L1780/L1903/ - * L2147 all declare and call the real 2-arg form `int func_80131CF4(int, int)`), but - * it is file-visible before the splice point, so a file-scope definition with the true - * signature is a hard `conflicting types` (arity AND param type). Conforming the - * definition to the 1-arg prototype is impossible without changing codegen, and the - * §42 `register s32 a1 __asm__("$5")` route would still leave the param-type mismatch - * on a0 (s32 vs s32*). So the definition is given a different C identifier and pinned - * to the real symbol with an asm label: no declaration ever collides, the emitted - * label is still `func_80131CF4`, and the callers' `jal func_80131CF4` binds to it. - * Zero header edits; body byte-identical (match_one: MATCH, 29 ins). - */ -DEFINE_func_80131CF4() /* dedup: shared engine-core @0x80131CF4 (src/shared) */ - - -DEFINE_func_80131D68() /* dedup: shared engine-core @0x80131D68 (src/shared) */ - - -extern void (*D_8018B0CC[])(struct S80131E00 *a0); - -void func_80131E00(struct S80131E00 *a0, s32 a1) { - a0->field_B0 = a1; - D_8018B0CC[a1](a0); -} - - -DEFINE_func_80131E38() /* dedup: shared engine-core @0x80131E38 (src/shared) */ - -DEFINE_func_80131E7C() /* dedup: shared engine-core @0x80131E7C (src/shared) */ - -DEFINE_func_80131EE4() /* dedup: shared engine-core @0x80131EE4 (src/shared) */ - - -extern void (*D_8018B124[])(void); - -void func_80131EEC(void *a0) { - D_8018B124[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018B16C[])(void); - -void func_80131F28(void *a0) { - D_8018B16C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018B174[])(void); - -void func_80131F64(void *a0) { - D_8018B174[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018B17C[])(void); - -void func_80131FA0(void *a0) { - D_8018B17C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018B184[])(void); - -void func_80131FDC(void *a0) { - D_8018B184[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); - -/* §37 asm-label aliases: D_8018B124 is declared in this TU as `void (*[])(void)` - * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view - * below is this function's own. D_8018B128 == D_8018B124 + 4 is a SEPARATE - * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ - -void func_80132018(int param_1) -{ - - extern int tbl_D_80187044[][5] __asm__("D_8018B124"); - extern int tbl_D_80187048[][5] __asm__("D_8018B128"); - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; - *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; - *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; - } -} - - -DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_8018B12C; - -void func_801320D8(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_8018B12C; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - - -s32 func_80132144(s32 param_1) -{ - extern int D_8018B13C; - - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(((int)param_1) + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(((int)param_1)); - } else { - ((void(*)(int, int))func_8001C214)(v0, 0); - *(int *)(((int)param_1) + 0x58) = (int)&D_8018B13C; - *(short *)(((int)param_1) + 0x5c) = 0x80; - *(unsigned short *)(((int)param_1) + 2) += 1; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_8018B14C; - -void func_801321B0(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_8018B14C; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_8018B15C; - -void func_8013221C(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_8018B15C; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - -DEFINE_func_80132288() /* dedup: shared engine-core @0x80132288 (src/shared) */ - -DEFINE_func_8013240C() /* dedup: shared engine-core @0x8013240C (src/shared) */ - -DEFINE_func_801325B8() /* dedup: shared engine-core @0x801325B8 (src/shared) */ - -DEFINE_func_8013277C() /* dedup: shared engine-core @0x8013277C (src/shared) */ - -DEFINE_func_80132784() /* dedup: shared engine-core @0x80132784 (src/shared) */ - -DEFINE_func_80132DC4() /* dedup: shared engine-core @0x80132DC4 (src/shared) */ - -DEFINE_func_80132E6C() /* dedup: shared engine-core @0x80132E6C (src/shared) */ - -DEFINE_func_80132EC4() /* dedup: shared engine-core @0x80132EC4 (src/shared) */ - -DEFINE_func_80132EF4() /* dedup: shared engine-core @0x80132EF4 (src/shared) */ - - -/* func_80132F40 — ov_SC01_077 (jr_8012ACE0 region), 72 ins, -O2. *** MATCH *** - * - * Verified: - * python3 tools/match_one.py func_80132F40 --c .run/near6/wave23/func_80132F40.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8012ACE0 - * -> MATCH (72 ins) - * - * --------------------------------------------------------------------------- - * WHAT THE WAVE-22 SEED GOT WRONG (the 6-mismatch plateau, and why s32 "cost 3") - * --------------------------------------------------------------------------- - * The seed's note blamed the `addiu $s3,$sp,0x10` hoist on a *whole-function CSE - * fork keyed on s16-vs-s32 w/h*, and concluded the s32 world was unreachable. - * Both halves of that are wrong, and the real mechanism is a reusable idiom. - * - * The hoisted register is the block-move source-address pseudo (reg 83 = - * `(plus fp 16)`, created by expand for `v[1] = v[0]`). Whether it survives is - * decided by ONE thing: does CSE's *extended basic block* still contain it when - * CSE reaches the two `&v[0]` call arguments? - * - * cse.c:cse_end_of_basic_block scans `while (p && GET_CODE (p) != CODE_LABEL)`. - * It can walk PAST a conditional jump only via - * - follow_jumps : target label preceded by a BARRIER, LABEL_NUSES == 1, or - * - skip_blocks : "branch around a block", no labels inside (-O2 sets both) - * and it BREAKS EARLY on - * `if (! after_loop && NOTE_LINE_NUMBER (p) == NOTE_INSN_LOOP_END) break;` - * - * With s16 w the min block stayed a *diamond* (jump.c's `if(..) x=a; else x=b;` - * -> `x=b; if(..) x=a;` at jump.c:699 is blocked when the moved insn carries a - * REG_EQUAL note — the sign_extend note from the sll/sra pair). The diamond's - * BARRIER + join label ended CSE's block before the calls, so `&v[0]` was - * recomputed at each site. With s32 w the diamond was flattened in jump1, and - * skip_blocks then walked CSE straight through to both call sites -> reg 83 was - * substituted, went live across a call, and took a 5th callee-saved register. - * So the fork was never about the *type* — it was about the CFG shape at CSE. - * - * --------------------------------------------------------------------------- - * THE NEW LEVER (cookbook candidate: "zero-instruction CSE path cut") - * --------------------------------------------------------------------------- - * `do { } while (0);` emits NOTE_INSN_LOOP_BEG/CONT/END and ZERO instructions. - * A NOTE_INSN_LOOP_END is exactly what cse1 (after_loop == 0) breaks its - * extended basic block on. Dropping one between the struct copy and the call - * sites cuts the path, kills the hoist, and costs nothing: 73 ins -> 70 ins. - * (Measured: without it this same file is 75 ins / 58 mismatched.) - * It is *not* an ordering/pressure hack — 1..8 empty `__asm__ __volatile__("")` - * barriers, which lengthen live ranges but emit no LOOP notes, changed the hoist - * by exactly nothing, which refutes the global.c allocno-priority explanation. - * - * --------------------------------------------------------------------------- - * THE MIN BLOCK (idx 37..44) - * --------------------------------------------------------------------------- - * lh $v1,8($v0) w (both loads are SImode sign_extend -> `lh`) - * lh $v0,0xA($v0) h (reuses the dying pointer's $v0) - * nop (load-delay; nothing schedulable) - * addu $a0,$v0,$zero hh = h (a REAL source-level carrier) - * slt $v0,$v0,$v1 c = h 75 ins / 58 drop `p` pin -> 71 ins / 40 - * drop `h` pin -> 71 ins / 33 drop `c` pin -> 70 ins / 36 - * drop `hh` pin -> 71 ins / 32 drop `q` pin -> 72 ins / 12 - * adding a `w`->$3 pin or an `m`->$18 pin -> still MATCH (so both are omitted) - * - * Canonical decls (wave22_targets.json sig_hints) verbatim; D_80126BE0 is - * declared exactly as the 20+ sibling TUs already declare it. - */ -DEFINE_func_80132F40() /* dedup: shared engine-core @0x80132F40 (src/shared) */ - - -DEFINE_func_80133060() /* dedup: shared engine-core @0x80133060 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtv0tr() __asm__ volatile ( \ - "nop;" \ - "nop;" \ - "mvmva 1, 0, 0, 0, 0" \ - : \ - : \ - : "memory" ) -#define gte_stlvnl(r0) __asm__ volatile ( \ - "swc2 $25, 0( %0 );" \ - "swc2 $26, 4( %0 );" \ - "swc2 $27, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -DEFINE_func_801330E0() /* dedup: shared engine-core @0x801330E0 (src/shared) */ - - - -/* 32-byte opaque block: drives gcc's movstrsi block-move (4x lw / 4x sw, cookbook - * struct-fold) instead of 8 serial lw/sw pairs. Locally named (engine_types.h's - * identical `Blk32` is an anonymous-tag typedef -> a same-name redefinition here - * is a C89 error in the real TU). */ - - -DEFINE_func_80133298() /* dedup: shared engine-core @0x80133298 (src/shared) */ - - -DEFINE_func_8013339C() /* dedup: shared engine-core @0x8013339C (src/shared) */ - -DEFINE_func_8013361C() /* dedup: shared engine-core @0x8013361C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH - -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); - -void func_801336E8(void *a0, int a1, int a2) { - if (a0 != 0) { - (*(void * *)&D_801E6D38) = a0; - ((void (*)(void))func_80136BC4)(); - } - (*(int *)&D_801E6D3C) = a1; - D_801E6D40 = a2; -} - - - - -extern s32 D_801E6D3C[]; -extern s32 D_801E6D38; -extern void func_80136BC4(s32); - -void func_8013373C(s16 arg0) { - s32 temp = D_801E6D3C[arg0]; - if (temp != 0) { - D_801E6D38 = temp; - func_80136BC4(temp); - } -} - - -// @class: regalloc-order -#include "common.h" - - - -s32 func_80133784(s32 arg0, void *arg1, s32 arg2) { - extern s32 func_80047D3C(s32); - extern s32 func_80133AB0(s16, s16, s16, s32); - extern Box_80133784 * D_8018B18C; - extern Box_80133784 * D_8018B190; - extern s16 D_801E6D44; - extern u16 D_801E6D48; - - register s32 s1 __asm__("$17"); - s32 s2; - register s16 s3 __asm__("$19"); - register s32 s4 __asm__("$20"); - register s16 a0v __asm__("$4"); - register s16 arg0s __asm__("$21"); - s32 dx, dy, dz; - s32 r, ret; - - a0v = ((s16)arg0); - s1 = 0; - s3 = 0; - s4 = 0; - s2 = 0; - arg0s = a0v; - D_8018B18C->f6 = -0x7FFF; - D_8018B190->f6 = 0x7FFF; - D_8018B18C->f0 = ((Box_80133784 *)arg1)->f0; - D_8018B18C->f4 = ((Box_80133784 *)arg1)->f4; - D_8018B190->f0 = ((Box_80133784 *)arg2)->f0; - D_8018B190->f4 = ((Box_80133784 *)arg2)->f4; - D_801E6D48 = 0; - D_801E6D44 = 0; - - if ((s16)a0v == 0) { - s16 sx = ((Box_80133784 *)arg2)->f0 - ((Box_80133784 *)arg1)->f0; - s16 sy = ((Box_80133784 *)arg2)->f2 - ((Box_80133784 *)arg1)->f2; - s16 sz = ((Box_80133784 *)arg2)->f4 - ((Box_80133784 *)arg1)->f4; - if (sx == 0 && sy == 0) { - s32 zt = (sz == 0); - __asm__("addu %0,%1,$zero" : "=r"(s2) : "r"(zt)); - } - D_8018B18C->f2 = ((Box_80133784 *)arg1)->f2 - 4; - r = func_80047D3C(sx * sx + sz * sz); - if (r < 3) { - r = 4; - } else if (r < 5) { - r += 1; - } - D_8018B190->f2 = ((Box_80133784 *)arg2)->f2 + r + 1; - } else { - D_8018B18C->f2 = ((Box_80133784 *)arg1)->f2; - if ((s16)a0v == 2) { - D_8018B190->f0 = D_8018B18C->f0; - D_8018B190->f2 = D_8018B18C->f2 + 6; - s2 = 1; - D_8018B190->f4 = D_8018B18C->f4; - } else { - D_8018B190->f2 = ((Box_80133784 *)arg2)->f2; - } - } - - while (1) { - s32 ret0; - register s32 retc __asm__("$3"); - __asm__ __volatile__(""); - ret0 = func_80133AB0(arg0s, (s16)D_8018B18C->f0, (s16)D_8018B18C->f4, (*(s32*)&D_801E6D38)); - __asm__("addu %0,%1,$zero" : "=r"(retc) : "r"(ret0)); - ret = retc; - if (ret == 0) goto after; - s4 |= ret; - if (s2 != 0) goto after; - { - s16 oldc = s3; - s3 = s3 + 1; - if (oldc >= 5) break; - } - } - - D_8018B190->f0 = D_8018B18C->f0; - D_8018B190->f2 = D_8018B18C->f2; - s1 = 0x2000; - D_8018B190->f4 = D_8018B18C->f4; - goto store_out; - -after: - if ((s16)s4 != 0 || D_801E6D44 != 0) { - s16 t; - __asm__ __volatile__("" :: "r"(s4)); - t = D_8018B18C->f6; - if (t >= -0xBCB) { - if (t < -0x578) { - s1 |= 0x4000; - } else { - s1 |= 0x8000; - } - } - if ((s16)D_8018B190->f6 < -0xBCB) { - s1 |= 0x2000; - } - store_out: - ((Box_80133784 *)arg2)->f0 = D_8018B190->f0; - ((Box_80133784 *)arg2)->f2 = D_8018B190->f2; - ((Box_80133784 *)arg2)->f4 = D_8018B190->f4; - ((Box_80133784 *)arg2)->f6 = D_801E6D48; - return s1 & 0xFFFF; - } - ((Box_80133784 *)arg2)->f6 = D_801E6D48; - return 0; -} - - - - - -s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3) -{ - extern u8 D_8018B190; - extern u8 D_8018B18C; - extern u8 D_8018B198; - extern u16 D_801E6D48; - extern s16 D_801E6D44; - extern s32 func_80133CD4(); - - Map_80133AB0 *map = (Map_80133AB0 *)arg3; - u16 *pA = (*(u16 * *)&D_8018B190); - u16 *pB = (*(u16 * *)&D_8018B18C); - u16 *pC = (*(u16 * *)&D_8018B198); - register int zr __asm__("$0"); - u32 X, Y, cell, Xc, Yc; - u16 k, off; - int cnt; - u16 *cp, *lst; - u8 *s0; - u16 raw; - u32 hib; - register int harg __asm__("$4"); - s32 ret; - void *p0C, *p10; - u8 *p14, *p18, *p1C; - u16 *cells; - - pC[0] = pA[0] - pB[0]; - pC[1] = pA[1] - pB[1]; - pC[2] = pA[2] - pB[2]; - - X = ((((u16)x + 0x8000) >> 7) & 0x1ff) - map->ox; - __asm__("addu %0,%1,$zero" : "=r"(Xc) : "r"(X)); - if (!((X & 0xffff) < map->w)) - return 0; - Y = ((((u16)y + 0x8000) >> 7) & 0x1ff) - map->oy; - __asm__("addu %0,%1,$zero" : "=r"(Yc) : "r"(Y)); - if (!((Y & 0xffff) < map->h)) - return 0; - - cell = (Yc & 0xffff) * map->w + (Xc & 0xffff); - cells = map->cells; - p14 = map->p14; - p0C = map->p0C; - p10 = map->p10; - p18 = map->p18; - p1C = map->p1C; - k = cell * 2; - cp = (u16 *)(k * 2 + (u32)cells); - off = cp[0]; - cnt = cp[1]; - lst = (u16 *)(p14 + off); - - while (((cnt-- + zr) & 0xffff) != 0) { - raw = *lst; - hib = raw & 0x8000; - harg = hib + zr; - if (hib == 0) { - s0 = p18 + raw * 18; - } else { - s0 = p1C + (raw & 0x7fff) * 22; - } - ret = (s16)func_80133CD4((s16)(harg | flag), s0, p10, p0C); - if (ret != 0) { - if (ret > 0) - D_801E6D48 = *(u16 *)s0; - return 1; - } - lst++; - if (D_801E6D44 != 0) { - D_801E6D48 = *(u16 *)s0; - return 0; - } - } - return 0; -} - - - -s32 func_80133CD4(arg0, cmd, base, arr) - s16 arg0; - s16 *cmd; - s16 *base; - s32 *arr; -{ - - extern u16 *D_8018B190; - extern u16 *D_8018B18C; - extern s16 *D_8018B198; - extern s16 *D_8018B194; - extern s32 *D_8018B1A0; - extern s32 *D_8018B1A4; - extern u16 D_801E6D48; - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern u16 D_801152AE; - extern u8 D_801152B0; - extern s32 func_80134310(); - extern s32 func_8013435C(); - - s16 *s3 = ((ElemK *)base)[cmd[1]].e; - s32 s6 = arr[cmd[2]]; - s32 s0var, s1var; - s32 s2a; - s16 y; - - if (func_80134310(s3, D_8018B190, s6) >= 0) - return 0; - - s1var = func_80134310(s3, D_8018B18C, s6); - if (s1var < 0) - return 0; - - s0var = func_80134310(s3, D_8018B198, 0); - { - u16 *pac = D_8018B18C; - s16 *pb8 = D_8018B198; - s16 *pb4 = D_8018B194; - s32 neg = -s1var; - pb4[0] = pac[0] + neg * pb8[0] / s0var; - pb4[1] = pac[1] + neg * pb8[1] / s0var; - pb4[2] = pac[2] + neg * pb8[2] / s0var; - if (func_8013435C(((ElemK *)base)[cmd[3]].e, pb4, arr[cmd[4]], s3)) - return 0; - } - if (func_8013435C(((ElemK *)base)[cmd[5]].e, D_8018B194, arr[cmd[6]], s3)) - return 0; - if (func_8013435C(((ElemK *)base)[cmd[7]].e, D_8018B194, arr[cmd[8]], s3)) - return 0; - if (arg0 < 0) { - if (func_8013435C(((ElemK *)base)[cmd[9]].e, D_8018B194, arr[cmd[10]], s3)) - return 0; - } - if (arg0 & 0x10) { - if (*(u16 *)cmd & 0x100) - return 0; - } - if (*(u16 *)cmd & 0x200) { - D_801E6D48 = *(u16 *)cmd; - return 0; - } - - { - s32 ret = func_80134310(s3, D_8018B190, s6); - s32 *pc0; - s32 *pc4; - u16 *pb0; - s32 t, o2; - s32 q3v; - - { - s32 *pw = D_8018B1A0; - ((struct { s32 w; } *)pw)->w = s3[0]; - pw[1] = s3[1]; - pw[2] = s3[2]; - } - s1var = -ret; - - __asm__ __volatile__( - "lwc2 $9, 0(%0)\n" - "lwc2 $10, 4(%0)\n" - "lwc2 $11, 8(%0)\n" - "nop\n" - "nop\n" - "sqr 0\n" - : : "r"(D_8018B1A0) : "$9", "$10", "$11", "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"(D_8018B1A4) : "memory"); - - pc0 = D_8018B1A0; - pc4 = D_8018B1A4; - s0var = pc4[0] + pc4[1] + pc4[2]; - pb0 = D_8018B190; - pb0[0] += s1var * pc0[0] / s0var; - pb0[1] += s1var * pc0[1] / s0var; - q3v = s1var * pc0[2] / s0var; - - { - s32 h; - h = ((s16 *)pb0)[0]; - s1var = h << 16; - __asm__("lh %0, 2(%2)" : "=r"(h) : "0"(h), "r"(pb0) : "memory"); - s0var = h << 16; - } - pb0[2] += q3v; - s2a = (s16)pb0[2] << 16; - - t = pc0[0] << 4; - pc0[0] = t; - if (t < 0) s1var |= 0xFFFF; - t = pc0[1] << 4; - pc0[1] = t; - if (t < 0) s0var |= 0xFFFF; - o2 = pc0[2]; - t = o2 << 4; - pc0[2] = t; - if (t < 0) s2a |= 0xFFFF; - s2a += o2 << 5; - s1var += pc0[0] << 1; - s0var += pc0[1] << 1; - - do { - s32 *pl = D_8018B1A0; - u16 *pb; - s1var += pl[0]; - s0var += pl[1]; - s2a += pl[2]; - pb = D_8018B190; - pb[0] = s1var >> 16; - pb[1] = s0var >> 16; - pb[2] = s2a >> 16; - ret = func_80134310(s3, pb, s6); - } while (ret < ((s3[1] < -0xE00) ? 0x1800 : 0x2F00)); - } - - y = s3[1]; - if (y >= -0xBCB) { - D_8018B18C[3] = y; - { - typedef struct { s8 c[8]; } Blk8; - *(Blk8 *)&D_801152B0 = *(Blk8 *)s3; - } - if (*(u8 *)cmd != 0) - goto ret1; - return -1; - } - { - u16 *s3u = (u16 *)s3; - u16 *bp = D_8018B190; - u16 w; - ((H16 *)D_801152A8)->h = s3u[0]; - w = s3u[1]; - bp[3] = w; - ((H16 *)&D_801152AA)->h = w; - ((H16 *)&D_801152AC)->h = s3u[2]; - ((H16 *)&D_801152AE)->h = s3u[3]; - } -ret1: - return 1; -} - - - - - -DEFINE_func_80134310() /* dedup: shared engine-core @0x80134310 (src/shared) */ - - -DEFINE_func_8013435C() /* dedup: shared engine-core @0x8013435C (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (83 ins, relocation-masked) - - - -s32 func_801343C4(s32 angle, s32 p1, s32 p2) -{ - extern s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3); - extern s16 * D_8018B18C; - extern s16 * D_8018B190; - extern u16 D_801E6D48; - extern u16 D_801E6D44; - - s16 *pac; - s16 *pb0; - s16 *pacs, *pb0s; - u16 *pb0u; - int a1v, a2v, d94, b0; - int sangle = ((s16)angle); - - pac = D_8018B18C; - d94 = D_801E6D38; - pb0 = D_8018B190; - pac[0] = ((u16 *)p1)[0]; - pac[1] = ((u16 *)p1)[1]; - pac[2] = ((u16 *)p1)[2]; - pb0[0] = ((u16 *)p2)[0]; - pb0[1] = ((u16 *)p2)[1]; - pb0[2] = ((u16 *)p2)[2]; - - a1v = pac[0]; a2v = pac[2]; - __asm__ __volatile__("" ::: "memory"); - D_801E6D48 = 0; - D_801E6D44 = 0; - if (((int (*)(int, s16, s16, int))func_80133AB0)(sangle, a1v, a2v, d94)) { - setdst: - pb0u = (u16 *)D_8018B190; - ((u16 *)p2)[0] = pb0u[0]; - ((u16 *)p2)[1] = pb0u[1]; - ((u16 *)p2)[2] = pb0u[2]; - ((u16 *)p2)[3] = D_801E6D48; - return 1; - } - - pacs = D_8018B18C; - pb0s = D_8018B190; - b0 = pb0s[0]; - if ((pacs[0] & 0xFF80) == (b0 & 0xFF80) && - (pacs[2] & 0xFF80) == (pb0s[2] & 0xFF80)) { - return 0; - } - if (((int (*)(int, s16, s16, int))func_80133AB0)(sangle, b0, pb0s[2], D_801E6D38)) { - goto setdst; - } - return 0; -} - - - -// @class: schedule - - -s32 func_80134510(s32 param) { - extern s32 func_801345F8(s32); - extern Foo_80134510_80134510 * D_8018B18C; - extern Foo_80134510_80134510 * D_8018B190; - extern Foo_80134510_80134510 * D_8018B194; - extern u16 D_801E6D48; - - - s32 ret = 0; - Foo_80134510_80134510 *b0 = D_8018B190; - Foo_80134510_80134510 *ac = D_8018B18C; - u16 t0 = ((Foo_80134510_80134510 *)param)->f0; - u16 t2, t4; - - ((Foo_80134510_80134510 *)param)->f6 = 0; - ac->f0 = t0; - b0->f0 = t0; - t2 = ((Foo_80134510_80134510 *)param)->f2; - ac->f2 = t2 - 4; - b0->f2 = t2 + 0x2FC; - t4 = ((Foo_80134510_80134510 *)param)->f4; - ac->f4 = t4; - b0->f4 = t4; - - if (func_801345F8((*(s32*)&D_801E6D38)) != 0) { - s16 x; - ((Foo_80134510_80134510 *)param)->f2 = D_8018B194->f2 - 2; - x = D_8018B18C->f6; - if (x >= -3019) { - if (x < -1400) { - ret = 0x4000; - } else { - ret = 0x8000; - } - } else { - ret = 0x2000; - } - D_8018B18C->f6 = D_801E6D48; - } - return ret; -} - - - -// @class: regalloc-order -// @stuck: 26-mismatch near-miss (structure fully matches: while-loop test-first via j-to-bottom-test, s0=puVar7/s1=cnt/s2=scan/s3=iVar8/s4=iVar9/s5=uVar3/s6=uVar10, a1=param/a0=cc/a3=0x8000 pinned, both range-persist copies present, mult+GPU-index+call all byte-correct). Residual = 4 instances of ONE gcc-2.7.2 regalloc/copy-prop tie-break: target computes a preserved-then-masked value in $v0 and reads $v0 for the mask (`subu $v0; addu $persist,$v0; andi $v0,$v0`), gcc here reads the persist reg (`andi $v0,$t0`). (1) range-check-1 andi reads $t0 not $v0; (2) range-check-2 andi reads $a0 not $v0; (3) `hi=uVar1&0x8000` folds into $a0 — target computes in $v0 + copies to $a0 in the branch-delay (same-block copy, gcc coalesces mine); (4) loop-test `cnt&0xffff` folds to direct `andi $v0,$s1` — target copies `addu $v0,$s1` first. Splitting the value into compare-temp + persist-var produces the copy but gcc forward-propagates the copy DEST into the mask; persist-after-compare kills the copy; explicit `register __asm__` pins fold the whole expr chain into the pinned reg; `=r/0` barriers force bad materialization. Also minor: while-loop header-copy adds a `beqz s1` entry guard vs target `j`, and a2/a3 call-arg setup order. Permuter can't run (register __asm__ pins rejected by pycparser). Genuinely compiler-internal — hand-finish or accept as ceiling. - - -s32 func_801345F8(s32 arg) -{ - extern int func_801347A0(short, u16 *, int, int); - extern u16 * D_8018B18C; - extern u16 D_801E6D48; - - register u16 *param_1 __asm__("$5") = ((u16 *)arg); - register u16 *cc __asm__("$4") = D_8018B18C; - int c8000 = 0x8000; - register int zr __asm__("$0"); - u32 c1, c2, uVar6, uVar2, cnt, v14; - u16 *ptmp, *puVar4, *puVar7, uVar1; - int hi, harg, iVar9, iVar8, uVar3, uVar10, tbl; - - c1 = ((int)(cc[0] + c8000) >> 7 & 0x1ff) - (u32)param_1[0]; - uVar6 = c1 + zr; - if ((c1 & 0xffff) < (u32)param_1[2]) { - c2 = ((int)(cc[2] + c8000) >> 7 & 0x1ff) - (u32)param_1[1]; - uVar2 = c2 + zr; - if ((c2 & 0xffff) < (u32)param_1[3]) - goto do_mult; - return 0; - found: - D_801E6D48 = *puVar7; - return 1; - do_mult: - tbl = *(int *)(param_1 + 4); - uVar10 = *(int *)(param_1 + 6); - uVar3 = *(int *)(param_1 + 8); - iVar9 = *(int *)(param_1 + 0xc); - iVar8 = *(int *)(param_1 + 0xe); - ptmp = (u16 *)((((u32)(u16)uVar2 * (u32)param_1[2] + (u32)(u16)uVar6) * 2 & 0xffff) * 2 + tbl); - cnt = (u32)ptmp[1]; - v14 = *(int *)(param_1 + 10); - puVar4 = (u16 *)(v14 + (u32)*ptmp + cnt * 2) - 1; - while (((cnt-- + zr) & 0xffff) != 0) { - uVar1 = *puVar4; - hi = uVar1 & 0x8000; - harg = hi + zr; - if (hi == 0) - puVar7 = (u16 *)(iVar9 + (u32)uVar1 * 0x12); - else - puVar7 = (u16 *)(iVar8 + (uVar1 & 0x7fff) * 0x16); - if (func_801347A0((short)harg, puVar7, uVar3, uVar10) != 0) - goto found; - puVar4 = puVar4 - 1; - } - } - return 0; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (162 ins). iv pinned to $4 (a0) forces move+delay-slot negu; divisor-temp forces divisor-first schedule (load-delay nop). Globals declared pointer-typed (SVec_801347A0*/s16*) so %lo folds per-use instead of &sym address-CSE into callee regs. -#include "common.h" - - - - - - -s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); - extern s16 * D_8018B190; - extern SVec_801347A0 * D_8018B18C; - extern SVec_801347A0 * D_8018B194; - - Elem_801347A0 *pElem; - s32 val; - register s32 iv __asm__("$4"); - s32 q; - s32 dvsr; - - pElem = &((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f2]; - val = ((s32 *)arg3)[((S0_801347A0 *)arg1)->f4]; - if (func_80134A28((s32)pElem, (s32)D_8018B190, val) >= 0) { - return 0; - } - iv = func_80134A28((s32)pElem, (s32)D_8018B18C, val); - if (iv < 0) { - return 0; - } - iv = -iv; - dvsr = pElem->f2 * 48; - q = (iv * 48) / dvsr; - D_8018B194->f0 = D_8018B18C->f0; - D_8018B194->f2 = D_8018B18C->f2 + q; - D_8018B194->f4 = D_8018B18C->f4; - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f6], (s32)D_8018B194, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f8]) < -0x2F00) { - return 0; - } - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->fa], (s32)D_8018B194, ((s32 *)arg3)[((S0_801347A0 *)arg1)->fc]) < -0x2F00) { - return 0; - } - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->fe], (s32)D_8018B194, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f10]) < -0x2F00) { - return 0; - } - if ((s16)arg0) { - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f12], (s32)D_8018B194, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f14]) < -0x2F00) { - return 0; - } - } - if ((((S0_801347A0 *)arg1)->f0 & 0x300) != 0) { - return 0; - } - D_8018B194->f0 = D_8018B18C->f0; - D_8018B194->f4 = D_8018B18C->f4; - (*(Elem_801347A0*)D_801152A8) = *pElem; - D_8018B18C->f6 = pElem->f2; - return 1; -} - - - -DEFINE_func_80134A28() /* dedup: shared engine-core @0x80134A28 (src/shared) */ - - -int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4) -{ - extern u16 D_801E6D48; - extern s32 func_80134C20(s32, s32, s32, s32); - - u16 *param_4p = (u16 *)param_4; - register u32 zr __asm__("$0"); - u32 uVar6, uVar2, uVar2c; - register u32 uVar6c __asm__("$9"); - u16 *puVar4, *ptmp; - register u32 n __asm__("$18"); - register u32 p0 __asm__("$4"); - register int v14 __asm__("$3"); - u16 *puVar7, uVar1; - u32 hi, hic; - int iVar5, iVar9, iVar8, uVar3, uVar10; - - uVar6 = ((int)((param_2 & 0xffff) + 0x8000) >> 7 & 0x1ff) - (u32)param_4p[0]; - uVar6c = uVar6 + zr; - if ((uVar6 & 0xffff) < (u32)param_4p[2]) { - uVar2 = ((int)((param_3 & 0xffff) + 0x8000) >> 7 & 0x1ff) - (u32)param_4p[1]; - __asm__("addu %0,%1,$zero" : "=r"(uVar2c) : "r"(uVar2)); - if ((uVar2 & 0xffff) < (u32)param_4p[3]) goto work; - return 0; - found: - D_801E6D48 = *puVar7; - return 1; - work: - uVar10 = *(int *)(param_4p + 6); - uVar3 = *(int *)(param_4p + 8); - iVar9 = *(int *)(param_4p + 0xc); - iVar8 = *(int *)(param_4p + 0xe); - ptmp = (u16 *)((((uVar2c & 0xffff) * (u32)param_4p[2] + (uVar6c & 0xffff)) * 2 & 0xffff) * 2 + *(int *)(param_4p + 4)); - v14 = *(int *)(param_4p + 10); - __asm__ __volatile__("" :: "r"(uVar6c)); - p0 = (u32)*ptmp; - n = (u32)ptmp[1]; - puVar4 = (u16 *)(v14 + p0 + n * 2) - 1; - goto test; - body: - uVar1 = *puVar4; - hi = uVar1 & 0x8000; - hic = hi + zr; - if (hi == 0) - puVar7 = (u16 *)(iVar9 + (u32)uVar1 * 0x12); - else - puVar7 = (u16 *)(iVar8 + (uVar1 & 0x7fff) * 0x16); - puVar4 = puVar4 - 1; - iVar5 = func_80134C20((short)(hic | param_1), (s32)puVar7, uVar3, uVar10); - if (iVar5 != 0) goto found; - test: - { - u32 m; - __asm__("addu %0,%1,$zero" : "=r"(m) : "r"(n)); - n--; - if ((m & 0xffff) != 0) goto body; - } - } - return 0; -} - - -// @class: regalloc-order -// @try: variant B — direct pins m=$s5($21), c=$s6($22) - - -s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); - extern void * D_8018B18C; - extern void * D_8018B190; - extern void * D_8018B194; - extern void * D_8018B198; - extern u16 D_801E6D48; - - s32 temp_a3; - s32 temp_s1; - s32 temp_v0; - s32 temp_v0_2; - s32 var_v0; - u16 temp_a1; - s32 temp_s4; - s32 c = arg0; - __asm__ __volatile__("" : "=r"(c) : "0"(c)); - __asm__ __volatile__("" : : "r"(arg0)); - - temp_s4 = arg2 + (M2C_FIELD(((void *)arg1), s16 *, 2) * 8); - temp_s1 = *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 4) * 4)); - var_v0 = 0; - if (func_80134FB8(temp_s4, (s32) D_8018B190, temp_s1) >= 0) { - return var_v0; - } - temp_v0 = func_80134FB8(temp_s4, (s32) D_8018B18C, temp_s1); - if (temp_v0 < 0) { - goto block_13; - } - temp_v0_2 = func_80134FB8(temp_s4, (s32) D_8018B198, 0); - temp_a3 = -temp_v0; - { - u16 *pB4 = (u16 *)D_8018B194; - u16 *pAC = (u16 *)D_8018B18C; - s16 *pB8 = (s16 *)D_8018B198; - pB4[0] = pAC[0] + (temp_a3 * pB8[0]) / temp_v0_2; - pB4[1] = pAC[1] + (temp_a3 * pB8[1]) / temp_v0_2; - pB4[2] = pAC[2] + (temp_a3 * pB8[2]) / temp_v0_2; - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 6) * 8), (s32) pB4, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 8) * 4))) < -0x2F00) { - return var_v0; - } - } - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0xA) * 8), (s32) D_8018B194, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0xC) * 4))) < -0x2F00) { - return var_v0; - } - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0xE) * 8), (s32) D_8018B194, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0x10) * 4))) < -0x2F00) { - return var_v0; - } - if ((arg0 << 16) < 0) { - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0x12) * 8), (s32) D_8018B194, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0x14) * 4))) < -0x2F00) { - return var_v0; - } - } - if (c & 1) { - if (!(M2C_FIELD(((void *)arg1), u16 *, 0) & 0x300)) { - goto block_14; - } - return 0; - } - temp_a1 = M2C_FIELD(((void *)arg1), u16 *, 0); - if (!(temp_a1 & 0x200)) { - goto block_14; - } - D_801E6D48 = temp_a1; -block_13: - return 0; -block_14: - __builtin_memcpy(D_801152A8, (void *)temp_s4, 8); - VectorNormalSS(D_8018B198, D_8018B198); - { - u16 *pB8 = (u16 *)D_8018B198; - u16 *pB4b = (u16 *)D_8018B194; - pB4b[0] = pB4b[0] - ((pB8[0] << 0x10) >> 0x1B); - var_v0 = 1; - pB4b[1] = pB4b[1] - ((pB8[1] << 0x10) >> 0x1B); - pB4b[2] = pB4b[2] - ((pB8[2] << 0x10) >> 0x1B); - } - return var_v0; -} - - - -DEFINE_func_80134FB8() /* dedup: shared engine-core @0x80134FB8 (src/shared) */ - -// @class: plumbing -// @stuck: MATCH (89 ins). To BANK: retype D_8018B190 + D_8018B18C (u8 -> s16*) in sibling func_80135168's externs (src/ov_SC01_077/ov_SC01_077_a.c ~L1879); they hold pointers double-referenced across a call, so only a 4-byte/pointer decl folds %lo (u8 &-cast CSE's the address into a saved reg). Retype is byte-NEUTRAL for the sibling (verified: identical objdump bytes u8 vs s16*). - - - - -s32 func_80135004(s32 arg0, s32 p1, s32 p2) -{ - extern int func_80134A74(int, s16, s16, int); - extern s16 * D_8018B190; - extern s16 * D_8018B18C; - extern u8 D_8018B198; - extern s16 *D_8018B194; - extern u16 D_801E6D48; - - register s16 *pb0 __asm__("$9"); /* D_8018B190 -> $t1 */ - register s16 *pac __asm__("$6"); /* D_8018B18C -> $a2 */ - register s16 *pb8 __asm__("$8"); /* D_8018B198 -> $t0 */ - u16 *pb4; - u16 a, b; - int id; - int a1v, a2v, d94; - - pb0 = D_8018B190; - __asm__ __volatile__("" : : "r"(pb0)); - - a = ((u16 *)p2)[0]; pac = D_8018B18C; pb0[0] = a; b = ((u16 *)p1)[0]; pb8 = (*(s16 * *)&D_8018B198); pac[0] = b; pb8[0] = a - b; - a = ((u16 *)p2)[1]; pb0[1] = a; b = ((u16 *)p1)[1]; pac[1] = b; pb8[1] = a - b; - a = ((u16 *)p2)[2]; pb0[2] = a; b = ((u16 *)p1)[2]; pac[2] = b; pb8[2] = a - b; - - id = ((int)arg0) & 0xFFFF; - a1v = pac[0]; a2v = pac[2]; d94 = D_801E6D38; - __asm__ __volatile__("" ::: "memory"); - D_801E6D48 = 0; - - if (func_80134A74(id, a1v, a2v, d94)) { - found: - pb4 = (*(u16 * *)&D_8018B194); - ((u16 *)p2)[0] = pb4[0]; - ((u16 *)p2)[1] = pb4[1]; - ((u16 *)p2)[2] = pb4[2]; - ((u16 *)p2)[3] = D_801E6D48; - return 1; - } - { - register u16 *qb __asm__("$4"); /* D_8018B18C -> $a0 (reloaded) */ - register int qa0 __asm__("$5"); /* D_8018B190[0], kept in $a1 for the 2nd-call arg */ - register u16 *qa __asm__("$6"); /* D_8018B190 -> $a2 (reloaded) */ - qb = (u16 *)D_8018B18C; - qa = (u16 *)D_8018B190; - qa0 = qa[0]; - if (((qb[0] & 0xFF80) == (qa0 & 0xFF80)) && - ((qb[2] & 0xFF80) == (qa[2] & 0xFF80))) - return 0; - if (func_80134A74(id, (s16)qa0, (s16)qa[2], D_801E6D38)) - goto found; - return 0; - } -} - - - - -// @class: schedule -// @stuck: none — MATCH (62 ins, relocation-masked) - - -extern s16 *D_8018B194; -extern int D_801E6D38; -extern u16 D_801E6D48; - -extern int func_80134A74(int, s16, s16, int); - -int func_80135168(u16 arg0, u16 *p1, u16 *p2) -{ - /* [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 §100); the whole-binary byte-gate is the arbiter. */ - extern u8 D_8018B18C; - extern u8 D_8018B190; - extern u8 D_8018B198; - register s16 *pb0 __asm__("$8"); - register s16 *pac __asm__("$6"); - register s16 *pb8 __asm__("$7"); - u16 *pb4; - u16 a, b; - int a1v, a2v, d94; - - pb0 = (*(s16 * *)&D_8018B190); - __asm__ __volatile__("" : : "r"(pb0)); - - a = p2[0]; pac = (*(s16 * *)&D_8018B18C); pb0[0] = a; b = p1[0]; pb8 = (*(s16 * *)&D_8018B198); pac[0] = b; pb8[0] = a - b; - a = p2[1]; pb0[1] = a; b = p1[1]; pac[1] = b; pb8[1] = a - b; - a = p2[2]; pb0[2] = a; b = p1[2]; pac[2] = b; pb8[2] = a - b; - - a1v = pac[0]; a2v = pac[2]; d94 = D_801E6D38; - __asm__ __volatile__("" ::: "memory"); - D_801E6D48 = 0; - if (func_80134A74(arg0, a1v, a2v, d94)) { - pb4 = (*(u16 * *)&D_8018B194); - p2[0] = pb4[0]; - p2[1] = pb4[1]; - p2[2] = pb4[2]; - p2[3] = D_801E6D48; - return 1; - } - return 0; -} - - - - -/* func_80135260 — "is reachable/hittable" gate (136 ins, ov_SC01_077 jr_8012ACE0). - * - * Sibling of the already-banked func_80135D20 (src/ov_SC03_099/ov_SC03_099_jr_80135D20.c L659+): - * same func_80135480 switch (jtbl_801D8158, cases 0..4, default falls through with p/flag/q - * UNINITIALISED — reproduced by leaving the switch without a default), same peeled-probe + - * rotated list loop, different `elsepath`. - * - * Load-bearing details (all byte-proven by ablation against match_one): - * - func_80135480 is DEFINED later in this same TU (L3261) returning s16. Calling it through an - * `s32 (*)(...)` cast is REQUIRED: the target does NOT re-extend the callee result before the - * switch (`addu $v1,$v0,$zero` only); a plain s16-returning call costs an extra `sll/sra 16`. - * The cast is call-site-local, so func_80135480's own definition is untouched (no //@EDIT). - * - D_8018B18C / D_8018B190 / D_8018B198 MUST be declared as 4-byte POINTERS - * (`extern u16 *D_801870Bx;`), not the canonical `extern u8` + `(*(u16**)&sym)` cast. With the - * u8 form gcc CSEs `&sym` into two callee-saved regs ($s1/$s5), which costs a 7th saved - * register ($s6 for arg3) and 3 extra instructions. This is exactly the retype already - * documented in this TU's @stuck note at L3127. The decls are BLOCK-SCOPE-compatible with the - * TU's other `extern u8 D_8018B18C;` bodies (the TU already mixes both forms: L2461 vs L2587). - * - `u8 dead[56];` is a DEAD local that only sets the frame: without it the frame is 0x30, the - * target's is 0x68 (gcc-2.7.2 assign_stack_local runs at expand time, so an unreferenced - * aggregate still owns its slot). Body bytes are already exact at 136/136 without it — the 16 - * residual diffs are purely the sp/save-slot immediates. - * - explicit goto layout (loop / hit / body / elsepath) reproduces the target's block ORDER: the - * `hit` block sits physically between the loop test and the loop body, and its leading - * `move a0,flag` gets copied into all four branch delay slots. - * - the two D_801870xx compare fields are read `lhu` -> u16; the func_80134A74 args are `(s16)` - * casts of those u16 lvalues (combine folds the fresh ones into `lh`, and sll/sra the one that - * is still live in $a1 from the 0xFF80 compare). - * - func_80135D20's §5a cross-jump barrier is NOT needed here (ablated: MATCH either way). - */ -extern s16 func_80135480(void*, s32, s16*, s16*); -extern s32 func_80135EB0(void *arg0, s32 arg1_); -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_80134A74(int, s16, s16, int); - -s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3) -{ - /* BLOCK scope on purpose: this TU already declares D_8018B18C/B0/B8 as `extern u8` inside - * other function bodies (L2461-2463) and as `extern u16 *` inside others (L2587-2589). - * A FILE-scope pointer decl here would make those inner `extern u8` decls conflicting-types. - * The same reason keeps D_801E6D4C/D_801E6D6C local (cf. the TU's own L3268-3270). */ - extern u16 *D_8018B18C; - extern u16 *D_8018B190; - extern u16 *D_8018B198; - extern s32 D_801E6D4C; - extern s32 D_801E6D6C; - - u8 dead[56]; - s32 *p; - s32 flag; - s32 q; - u16 *pa; - u16 *pb; - u16 *pc; - u16 *pd; - u16 *pe; - u16 t; - - switch (((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)((void *)arg0, arg1, arg2, arg3)) { - case 0: - return 0; - case 1: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - q = arg0 + 0x34; - p = &D_801E6D6C; - flag = 0; - break; - case 4: - q = (s32)&D_801E6D4C; - p = &D_801E6D6C; - flag = 1; - break; - } - if (arg1 >= 0) { - goto elsepath; - } - if (func_80135EB0(p, 0) != 0) { - goto hit; - } - p = (s32 *)*p; - if (p == 0) { - return 0; - } -loop: - if (func_80135EB0(p, 0) == 0) { - goto body; - } -hit: - func_80136A94(flag, arg0, (s32)arg3, q); - return 1; -body: - p = (s32 *)*p; - if (p != 0) { - goto loop; - } - return 0; -elsepath: - pa = D_8018B190; - pb = D_8018B18C; - pc = D_8018B198; - pc[0] = pa[0] - pb[0]; - pc[1] = pa[1] - pb[1]; - pc[2] = pa[2] - pb[2]; - if (func_80134A74(0, (s16)pb[0], (s16)pb[2], (int)p) != 0) { - goto hit; - } - pd = D_8018B18C; - pe = D_8018B190; - t = pe[0]; - if (((pd[0] & 0xFF80) == (t & 0xFF80)) && ((pd[2] & 0xFF80) == (pe[2] & 0xFF80))) { - return 0; - } - if (func_80134A74(0, (s16)t, (s16)pe[2], (int)p) != 0) { - goto hit; - } - return 0; -} - - -/* func_80135480 — cull + coordinate-transform emitter (258 ins, ov_SC01_077 split _a, ×134 family). - * - * NOT a §43 s16-param giant. Params are (void*, s32, s16*, s16*); the sole `sll/sra 16` is the s16 - * RETURN narrowing on $s3 (result), not an in-place arg-reg narrow. So §43's K&R-s16-param map does - * not apply here — no //@EDIT, no ec_edit. func_80135480 has NO ambient prototype/caller anywhere in - * src/include, so the s16 return type is free (no void->s32 flip, no engine_core.h edit). - * - * THE CRACK (residual class = §31 regalloc/schedule, RC-4/RC-2 in gcc-2.7.2-map/regalloc.md): - * the two output buffers D_8018B18C / D_8018B190 are written through a pointer in each of the two - * return tails (mode!=0 and mode==0). A single function-scope `s16 *tmp` reused across both tails is a - * GLOBAL allocno (used in 2 blocks, dies 4x) -> forced onto one hard reg ($a1), which is WRONG and also - * perturbs the switch's first-`beq` delay-slot fill (extra nop). The target instead allocates each - * store-group's pointer as a LOCAL-ALLOC pseudo (set once, used 3x, dies once, single block) that picks - * the lowest-free scratch over its OWN window: - * mode!=0 tail: p_AC -> $v1, p_B0 -> $v1 (reused, $v0 = the load temp) - * mode==0 tail: p_AC -> $v1, p_B0 -> $a0 (the sub-scratch occupies $v1, so $v1 is unavailable) - * Reproduced by giving each of the four store-groups its OWN block-scoped pointer. With the tail - * allocation correct, the whole schedule (incl. the beq delay slot) re-derives to byte-identical. - * No register pins (§17 caveat: don't pin $v1 — the target reuses it for the cull; a pin cascades - * per RC-5). NOTE: the block-scope `s16 *p` intentionally shadows the function-scope `s32 p` (the - * case-0x20000000 pointer base); scopes never overlap — legal and byte-verified. - * - * Zero file-scope footprint (block-scoped typedefs + externs; D_8018B18C/B0 read via the ambient - * `extern u8` + `*(s16**)&` §30 anon-cast, matching neighbor func_80135168) -> ×134-clean for - * family_sweep --edit-remap with no cc1 crash. - * - * VERIFIED: tools/rtu_match.py func_80135480 --split ov_SC01_077_a -> MATCH (258 ins), 3x stable. - */ -s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4) -{ - /* [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 §100); the whole-binary byte-gate is the arbiter. */ - extern u8 D_8018B18C; - extern u8 D_8018B190; - extern void func_80048EAC(void *m0, void *m1); - extern void func_8004914C(void *m); - extern void ApplyTransposeMatrixLV(void *m, void *in, void *out); - extern void ApplyRotMatrixLV(void *in, void *out); - extern void ApplyRotMatrix(void *in, void *out); - extern s32 D_801E6D4C, D_801E6D50, D_801E6D54, D_801E6D58; - extern s16 D_801E6D5C; - extern s32 D_801E6D6C; - extern s16 D_801E6D70, D_801E6D72, D_801E6D74, D_801E6D76, D_801E6D78, D_801E6D7A; - - Vec32 in0, in1, rotout; - Mat32 mat2; - Vec16 vecin; - s32 result; - s32 mode; - s32 q1, q2; - s32 p; - s32 t18, t1A, t1C; - s32 *m; - - in0.vx = param_3[0] - *(s32 *)((s32)param_1 + 0x48); - in0.vz = param_3[2] - *(s32 *)((s32)param_1 + 0x50); - if ((param_2 & 0x10000000) == 0) { - if (in0.vx * in0.vx + in0.vz * in0.vz > 0x40000) { - return 0; - } - } - mode = param_2 & 0x60000000; - if (mode != 0) { - result = 1; - if (param_2 >= 0) { - mode &= 0x40000000; - } - in0.vy = param_3[1] - *(s32 *)((s32)param_1 + 0x4C); - in1.vx = param_4[0] - *(s32 *)((s32)param_1 + 0x48); - in1.vy = param_4[1] - *(s32 *)((s32)param_1 + 0x4C); - in1.vz = param_4[2] - *(s32 *)((s32)param_1 + 0x50); - switch (mode) { - case 0x60000000: - m = &D_801E6D4C; - *m = 0x1000000 / *(s16 *)((s32)param_1 + 0x18); - q1 = 0x1000000 / *(s16 *)((s32)param_1 + 0x1A); - q2 = 0x1000000 / *(s16 *)((s32)param_1 + 0x1C); - D_801E6D50 = 0; - D_801E6D58 = 0; - D_801E6D54 = q1; - D_801E6D5C = q2; - func_80048EAC((void *)((s32)param_1 + 0x34), m); - ApplyTransposeMatrixLV(m, &in0, &in0); - ApplyRotMatrixLV(&in1, &in1); - result = 2; - /* fallthrough */ - case 0x20000000: - p = (param_2 & 0xFFFFFFF) | 0x80000000; - t18 = *(s16 *)((s32)param_1 + 0x18); - t1A = *(s16 *)((s32)param_1 + 0x1A); - t1C = *(u16 *)((s32)param_1 + 0x1C); - mat2.w4 = 0; - mat2.wC = 0; - mat2.w0 = t18; - mat2.w8 = t1A; - mat2.h10 = t1C; - func_8004914C(&mat2); - vecin.vx = *(u16 *)(p + 4); - vecin.vy = *(u16 *)(p + 8); - vecin.vz = *(u16 *)(p + 0xC); - ApplyRotMatrix(&vecin, &rotout); - D_801E6D70 = rotout.vx; - D_801E6D74 = rotout.vy; - D_801E6D78 = rotout.vz; - vecin.vx = *(u16 *)(p + 6); - vecin.vy = *(u16 *)(p + 0xA); - vecin.vz = *(u16 *)(p + 0xE); - ApplyRotMatrix(&vecin, &rotout); - D_801E6D6C = 0; - D_801E6D72 = rotout.vx; - D_801E6D76 = rotout.vy; - D_801E6D7A = rotout.vz; - result += 2; - break; - case 0x40000000: - ApplyTransposeMatrixLV((void *)((s32)param_1 + 0x34), &in0, &in0); - ApplyRotMatrixLV(&in1, &in1); - result = 2; - break; - } - { - s16 *p = *(s16 **)&D_8018B18C; - p[0] = in0.vx; - p[1] = in0.vy; - p[2] = in0.vz; - } - { - s16 *p = *(s16 **)&D_8018B190; - p[0] = in1.vx; - p[1] = in1.vy; - p[2] = in1.vz; - } - return result; - } - { - s16 *p = *(s16 **)&D_8018B18C; - p[0] = in0.vx; - p[1] = ((u16 *)param_3)[1] - *(s32 *)((s32)param_1 + 0x4C); - p[2] = in0.vz; - } - { - s16 *p = *(s16 **)&D_8018B190; - p[0] = ((u16 *)param_4)[0] - *(s32 *)((s32)param_1 + 0x48); - p[1] = ((u16 *)param_4)[1] - *(s32 *)((s32)param_1 + 0x4C); - p[2] = ((u16 *)param_4)[2] - *(s32 *)((s32)param_1 + 0x50); - } - return 1; -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80135888.c b/src/ov_SC02_003/ov_SC02_003_jr_80135888.c deleted file mode 100644 index fdaa7c72c..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80135888.c +++ /dev/null @@ -1,709 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018AF78[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018AF8C[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801E6CF0; -extern s32 D_801E6CF4; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_8018B0CC[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018B124[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018B16C[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018B174[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018B17C[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018B184[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018B12C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018B14C; -extern void func_801321B0(int param_1); -extern int D_8018B15C; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern int D_801E6D38; -extern u16 D_801E6D48; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -/* ==== end §8b carried decl layer ==== */ - - - -extern s16 func_80135480(void*, s32, s16*, s16*); -extern s32 func_80135EB0(void *arg0, s32 arg1_); -extern int func_80134A74(int, s16, s16, int); -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); - -extern u8 D_8018B18C; -extern u8 D_8018B190; -extern u8 D_8018B198; -extern s32 D_801E6D4C; -extern s32 D_801E6D6C; - -s32 func_80135888(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - s32 pad_[8]; - register s32 m __asm__("$2"); - s32 sp; - register s32 p1 __asm__("$17"); - register s32 mode __asm__("$18"); - register s32 p0 __asm__("$19"); - register s32 base __asm__("$20"); - register s32 p3 __asm__("$21"); - - p0 = arg0; - p1 = arg1; - p3 = arg3; - - switch (((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)((void *)arg0, arg1, (s16 *)arg2, (s16 *)arg3)) { - case 0: - return 0; - case 1: - base = p0 + 0x34; - m = p1 & 0xFFFFFFF; - sp = m | 0x80000000; - mode = 0; - break; - case 2: - base = p0 + 0x34; - m = p1 & 0xFFFFFFF; - sp = m | 0x80000000; - mode = 1; - break; - case 3: - base = p0 + 0x34; - sp = (s32)&D_801E6D6C; - mode = 0; - break; - case 4: - base = (s32)&D_801E6D4C; - sp = (s32)&D_801E6D6C; - mode = 1; - break; - } - - if (p1 < 0) { - if (func_80135EB0(sp, 0) != 0) { - func_80136A94(mode, p0, p3, base); - return 1; - } - sp = *(s32 *)sp; - __asm__ __volatile__(""); - while (sp != 0) { - if (func_80135EB0(sp, 0) != 0) { -hit: - func_80136A94(mode, p0, p3, base); - return 1; - } - sp = *(s32 *)sp; - } - return 0; - } - { - u16 *pb = (*(u16 * *)&D_8018B190); - u16 *pa = (*(u16 * *)&D_8018B18C); - s16 *pc = (*(s16 * *)&D_8018B198); - pc[0] = pb[0] - pa[0]; - pc[1] = pb[1] - pa[1]; - pc[2] = pb[2] - pa[2]; - if (func_80134A74(0, (s16)pa[0], (s16)pa[2], sp) == 0) { - return 0; - } - } - goto hit; -} - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80135A4C.c b/src/ov_SC02_003/ov_SC02_003_jr_80135A4C.c deleted file mode 100644 index 67de4ab7f..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80135A4C.c +++ /dev/null @@ -1,732 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018AF78[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018AF8C[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801E6CF0; -extern s32 D_801E6CF4; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_8018B0CC[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018B124[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018B16C[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018B174[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018B17C[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018B184[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018B12C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018B14C; -extern void func_801321B0(int param_1); -extern int D_8018B15C; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern int D_801E6D38; -extern u16 D_801E6D48; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -/* ==== end §8b carried decl layer ==== */ - - -s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3) { - typedef struct { s8 c[8]; } Blk8; - extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); - extern s32 func_80135EB0(void *arg0, s32 arg1_); - extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); - extern s32 func_80133AB0(s16, s16, s16, s32); - extern u8 D_8018B18C; - extern u8 D_8018B190; - extern s16 *D_8018B194; - extern s16 D_801E6D44; - extern u16 D_801E6D48; - extern s32 D_801E6D4C; - extern s32 D_801E6D6C; - extern u8 D_801152A8[]; - extern u8 D_801152B0; - - s32 *p; - register s32 s7 __asm__("$23"); - s32 flag; - s32 acc; - s16 i; - s32 eq; - s32 ret; - s32 frame_pad[8]; - (void)&frame_pad; - - switch (((s32 (*)(void))func_80135480)()) { - case 0: - return 0; - case 1: - s7 = a0 + 0x34; - p = (s32 *)((a1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - s7 = a0 + 0x34; - p = (s32 *)((a1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - s7 = a0 + 0x34; - p = (s32 *)&D_801E6D6C; - flag = 0; - break; - case 4: - s7 = (s32)&D_801E6D4C; - p = (s32 *)&D_801E6D6C; - flag = 1; - break; - } - - acc = 0; - if (a1 < 0) { - if (func_80135EB0(p, -0x8000) == 0) { - p = (s32 *)*p; - if (p == 0) return 0; - loop: - if (func_80135EB0(p, -0x8000) == 0) goto next; - } - docall: - func_80136A94(flag, a0, a3, s7); - return 1; - next: - p = (s32 *)*p; - __asm__ __volatile__(""); - if (p != 0) goto loop; - return 0; - } - - i = 0; - *(s16 *)((*(u8 **)&D_8018B18C) + 6) = -0x7FFF; - *(s16 *)((*(u8 **)&D_8018B190) + 6) = 0x7FFF; - D_801E6D48 = 0; - D_801E6D44 = 0; - { - s32 t = 0; - if (((V3 *)a2)->x == ((V3 *)a3)->x && ((V3 *)a2)->y == ((V3 *)a3)->y) { - s32 zt = (((V3 *)a2)->z == ((V3 *)a3)->z); - __asm__("addu %0,%1,$zero" : "=r"(t) : "r"(zt)); - } - eq = t; - } - - while (1) { - ret = func_80133AB0(0, (s16)(*(Box **)&D_8018B18C)->f0, (s16)(*(Box **)&D_8018B18C)->f4, (s32)p); - if (ret == 0) goto out; - acc |= ret; - if (eq != 0) goto out; - { - s16 old = i; - i = i + 1; - if (old >= 5) return 0; - } - } - -out: - if ((s16)acc != 0 || D_801E6D44 != 0) { - if ((*(Box **)&D_8018B18C)->f6 >= -0xBCB) { - *(Blk8 *)D_801152A8 = *(Blk8 *)&D_801152B0; - } - (*(Box **)&D_8018B194)->f0 = (*(Box **)&D_8018B190)->f0; - (*(Box **)&D_8018B194)->f2 = (*(Box **)&D_8018B190)->f2; - (*(Box **)&D_8018B194)->f4 = (*(Box **)&D_8018B190)->f4; - goto docall; - } - return 0; -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80135D20.c b/src/ov_SC02_003/ov_SC02_003_jr_80135D20.c deleted file mode 100644 index cb75460d5..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80135D20.c +++ /dev/null @@ -1,1504 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018AF78[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018AF8C[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801E6CF0; -extern s32 D_801E6CF4; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_8018B0CC[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018B124[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018B16C[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018B174[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018B17C[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018B184[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018B12C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018B14C; -extern void func_801321B0(int param_1); -extern int D_8018B15C; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern int D_801E6D38; -extern u16 D_801E6D48; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -/* ==== end §8b carried decl layer ==== */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (match_one 100/100 + rtu_match real-TU); needs the PAIRED //@EDIT on ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(return s16->s32 + `s32 result;`->`s16 result;`, whole-TU byte-neutral, verified) + one $s1 pin on `flag` -//@EDIT s16 ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(void *param_1, s32 param_2, s16 *param_3, s16 *param_4)||s32 ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(void *param_1, s32 param_2, s16 *param_3, s16 *param_4) -//@EDIT s32 result;|| s16 result; - -/* func_80135D20 — "is visible/hittable from " gate (100 ins, ov_SC06_018 jr_8012ACE0). - * - * Builds a second probe point 0x300 above the caller's point on the stack, asks func_80135480 to - * cull/transform it, then dispatches on that result (jtbl_801D2A90, cases 0..4; default falls - * through with p/flag/q UNINITIALISED — reproduced by leaving the switch without a default). - * - * Load-bearing details (do not "clean up"): - * - `u8 dead[96];` is a DEAD aggregate whose only job is the frame layout: it forces the probe - * buffer to sp+0x70 and the frame to 0x98 (gcc-2.7.2 assign_stack_local runs at expand time, so - * an unreferenced aggregate still owns its slot). Remove it and every sp offset shifts by 0x60. - * - `__asm__ __volatile__("")` is the §5a CROSS-JUMP BARRIER: without it jump.c merges the peeled - * first func_80135EB0 probe into the list loop (100 ins -> 88). - * - the explicit goto layout (loop / hit / body / elsepath) reproduces the target's basic-block - * ORDER: the `hit` block sits physically between the loop test and the loop body. A structured - * while/do-while emits the inverted layout (-3 ins, 39 diffs). - * - `register s32 flag __asm__("$17")` is a §17 pin. WITHOUT it gcc ties `arg1`->$s1 / `flag`->$s2, - * the reverse of the target (12 diffs, everything else already byte-exact). Pin-free attempts - * (declaring `flag` before `p`; assigning `flag` first in every case body) were both tried and - * do NOT flip the tie-break. The pin's live range does cross calls, so prefer ×1 banking. - * - func_80135480 must be declared INT-returning here: the target does NOT re-extend the callee's - * result before the switch (`addu $v1,$v0,$zero` only), while an s16-returning prototype costs a - * `sll/sra 16` pair. The two //@EDIT lines flip the in-TU definition s16->s32 and narrow its local - * `result` to s16 instead — the narrowing simply moves from the return-type conversion to the - * assignment, so the WHOLE TU compiles byte-identically (objdump-diffed: only the filename line - * changes). Both edits are required; flipping the return type alone drops func_80135480's tail - * `sll/sra` and shortens it by one instruction. - */ -extern s16 func_80135480(void*, s32, s16*, s16*); -extern s32 func_80135EB0(void *arg0, s32 arg1_); -extern s32 func_801345F8(s32 arg); -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 D_801E6D4C; -extern s32 D_801E6D6C; - -s32 func_80135D20(s32 arg0, s32 arg1, u16 *arg2) -{ - u8 dead[96]; - u16 sp[3]; - s32 *p; - register s32 flag __asm__("$17"); - s32 q; - - sp[0] = arg2[0]; - sp[1] = arg2[1] + 0x300; - sp[2] = arg2[2]; - switch (((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)((void *)arg0, arg1, (s16 *)arg2, (s16 *)sp)) { - case 0: - return 0; - case 1: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - q = arg0 + 0x34; - p = &D_801E6D6C; - flag = 0; - break; - case 4: - q = (s32)&D_801E6D4C; - p = &D_801E6D6C; - flag = 1; - break; - } - if (arg1 >= 0) { - goto elsepath; - } - if (func_80135EB0(p, 0) != 0) { - goto hit; - } - p = (s32 *)*p; - if (p == NULL) { - return 0; - } - __asm__ __volatile__(""); -loop: - if (func_80135EB0(p, 0) == 0) { - goto body; - } -hit: - func_80136A94(flag, arg0, (s32)arg2, q); - return 1; -body: - p = (s32 *)*p; - if (p != NULL) { - goto loop; - } - return 0; -elsepath: - if (func_801345F8(arg1) != 0) { - goto hit; - } - return 0; -} - - -// @class: struct -// @stuck: none — MATCH (289 ins). symcheck: only the cosmetic jtbl_801D81B8 floor (§8 carve). -// -// func_80135EB0 — h_seq family exemplar (x138 across the overlay fleet). Levers that made it: -// 1. m2 (the y-axis mask) MUST be the if/else form, NOT `m2=0x10; if (a8<=t3) m2=...`. -// Both emit the same compact `bnez; li $s2,0x10` pair, but the pre-init form lets CSE carry -// the D_8018B18C pointer load into the (m1|m2)==0 block; the if/else form ends the CSE -// extended-BB so the block reloads `lui/lw D_8018B18C` (target does). Worth 2 ins + the whole -// big-block register assignment. -// 2. Zero-byte `__asm__ __volatile__("")` fences in case 1 and case 2 (DIFFERENT templates, "" vs " ") -// block gcc-2.7.2 cross_jump from folding those two bodies into case 6's second-call tail -// (they are byte-identical to it; the target keeps all three copies). Worth 10 ins. -// 3. Zero-byte fences between the three big-block coordinate groups stop sched2 hoisting the next -// group's `lhu` into the previous group's load-delay nop (restores 2 nops). -// 4. `D_801152AA = 0;` AFTER the h0 statement: it shortens the [6]-field temp's local-alloc live -// range so c0 wins $v1 and the field temps take $v0/$a0 (target), not $v1/$v0. -// 5. case 4 reaches case 8's tail through a shared `L288` label using `w = x << 16` / `w >> 16` -// so the shared block is exactly `sra $a1,$a1,16` — that is target's .L80136288. `w` pinned to -// $a1 ($5); it never spans a jal so §74 does not apply. -// 6. arg1 copied into a $s3-pinned local — without it global-alloc gives arg1 $s2 and m2 $s3 -// (arg1 has more refs; target's priority order is arg0, sext-temp, m2, arg1). -// 7. `ret0:` sits between case 8 and case 10 and `done:`/`case 0:` after case 10 — that is the -// target's basic-block order; reorg then produces the inline `move $v0,$zero` delay slots. - -extern u8 D_8018B18C; -extern u8 D_8018B190; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern s32 D_801150D8; -extern u8 D_80126720[]; - -extern s32 VectorNormalSS(void *a0, void *a1); -extern s32 func_801365B8(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32, s32, s32); - -s32 func_80135EB0(void *arg0, s32 arg1_) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - register s32 arg1 __asm__("$19") = arg1_; - s32 t1; - s32 t2; - s32 t3; - s32 m1; - s32 m2; - s32 t4; - s32 t5; - s32 t6; - s32 n1; - s32 n2; - s32 r; - s32 sv; - register s32 w __asm__("$5"); - void *q; - - t1 = (*(s16 **)&D_8018B18C)[0]; - if (t1 < M2C_FIELD(arg0, s16 *, 4)) { - m1 = 1; - } else { - m1 = (M2C_FIELD(arg0, s16 *, 6) < t1) << 1; - } - t2 = (*(s16 **)&D_8018B18C)[2]; - if (t2 < M2C_FIELD(arg0, s16 *, 0xC)) { - m1 |= 4; - } else if (M2C_FIELD(arg0, s16 *, 0xE) < t2) { - m1 |= 8; - } - t3 = (*(s16 **)&D_8018B18C)[1]; - if (t3 < M2C_FIELD(arg0, s16 *, 8)) { - m2 = 0x10; - } else { - m2 = (M2C_FIELD(arg0, s16 *, 0xA) < t3) << 5; - } - if ((m1 | m2) == 0) { - u16 *ac; - s16 *b4; - s32 c0; - s32 c1; - s32 h0; - s32 h1; - - ac = *(u16 **)&D_8018B18C; - b4 = D_8018B194; - c0 = ac[0]; - b4[0] = c0; - h0 = (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1; - D_801152AA = 0; - (*(s16 *)D_80126720) = h0; - (*(s16 *)D_801152A8) = c0 - h0; - __asm__ __volatile__(""); - c1 = ac[2]; - b4[2] = c1; - h1 = (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1; - D_80126724 = h1; - D_801152AC = c1 - h1; - __asm__ __volatile__(""); - b4[1] = ac[1]; - D_80126722 = (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1; - VectorNormalSS(D_801152A8, D_801152A8); - D_801150D8 |= 1; - return 1; - } - - t4 = (*(s16 **)&D_8018B190)[0]; - if (t4 < M2C_FIELD(arg0, s16 *, 4)) { - n1 = 1; - } else { - n1 = (M2C_FIELD(arg0, s16 *, 6) < t4) << 1; - } - t5 = (*(s16 **)&D_8018B190)[2]; - if (t5 < M2C_FIELD(arg0, s16 *, 0xC)) { - n1 |= 4; - } else if (M2C_FIELD(arg0, s16 *, 0xE) < t5) { - n1 |= 8; - } - t6 = (*(s16 **)&D_8018B190)[1]; - if (t6 < M2C_FIELD(arg0, s16 *, 8)) { - n2 = 0x10; - } else { - n2 = (M2C_FIELD(arg0, s16 *, 0xA) < t6) << 5; - } - if (((m1 | m2) & (n1 | n2)) != 0) { - goto ret0; - } - { - u16 *b0 = *(u16 **)&D_8018B190; - u16 *ac = *(u16 **)&D_8018B18C; - s16 *b8 = *(s16 **)&D_8018B198; - - b8[0] = b0[0] - ac[0]; - b8[1] = b0[1] - ac[1]; - b8[2] = b0[2] - ac[2]; - } - - switch (m1) { - case 4: - q = arg0; - sv = M2C_FIELD(arg0, s16 *, 0xC); - w = arg1 << 16; - goto L288; - case 1: - r = func_801365B8(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 4)); - __asm__ __volatile__(""); - goto done; - case 2: - r = func_801365B8(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 6)); - __asm__ __volatile__(" "); - goto done; - case 5: - if (func_80136334(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 0xC)) != 0) { - return 1; - } - r = func_801365B8(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 4)); - goto done; - case 6: - if (func_80136334(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 0xC)) != 0) { - return 1; - } - r = func_801365B8(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 6)); - goto done; - case 9: - if (func_801365B8(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 4)) != 0) { - return 1; - } - /* fallthrough */ - case 8: - q = arg0; - sv = M2C_FIELD(arg0, s16 *, 0xE); - w = (arg1 | 1) << 16; - L288: - r = func_80136334(q, w >> 16, sv); - goto done; - ret0: - return 0; - case 10: - if (func_801365B8(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 6)) != 0) { - return 1; - } - r = func_80136334(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 0xE)); - done: - if (r != 0) { - return 1; - } - case 0: - if (m2 == 0) { - goto ret0; - } - if (m2 == 0x10) { - if (((s32 (*)(void *, s32, s32))func_80136824)(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 8)) == 0) { - goto ret0; - } - } else { - if (((s32 (*)(void *, s32, s32))func_80136824)(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 0xA)) == 0) { - goto ret0; - } - } - default: - return 1; - } -} - - -s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - register s32 a1v __asm__("$11"); - register s32 a2v __asm__("$12"); - register s32 n __asm__("$5"); - register s16 *b4 __asm__("$7"); - s32 d; - s32 dx; - s32 denom; - s32 result; - s32 frame_pad[2]; - (void)&frame_pad; - __asm__("" : "=r"(a1v) : "0"(arg1)); - a2v = arg2; - - if (!(arg1 & 1)) { - dx = (s16) arg2 - (*(s16 **)&D_8018B18C)[2]; - d = dx; - denom = -(*(s16 **)&D_8018B198)[2]; - } else { - denom = (*(s16 **)&D_8018B198)[2]; - d = (*(s16 **)&D_8018B18C)[2] - (s16) arg2; - dx = -d; - } - n = -d; - { - register s16 *b8 __asm__("$6") = *(s16 **)&D_8018B198; - u16 *ac = *(u16 **)&D_8018B18C; - b4 = D_8018B194; - b4[0] = ac[0] + n * b8[0] / denom; - b4[1] = ac[1] + n * b8[1] / denom; - b4[2] = ac[2] + dx; - } - - if (b4[0] < M2C_FIELD(arg0, s16 *, 4)) return 0; - if (M2C_FIELD(arg0, s16 *, 6) < b4[0]) return 0; - if (b4[1] < M2C_FIELD(arg0, s16 *, 8)) return 0; - if (M2C_FIELD(arg0, s16 *, 0xA) < b4[1]) return 0; - if (a1v & 0x8000) { - u16 *b0 = *(u16 **)&D_8018B190; - b4[0] = b0[0]; - b4[1] = b0[1]; - } - D_801152AA = 0; - (*(s16 *)D_801152A8) = 0; - if (a1v & 1) { - D_8018B194[2] = a2v + 2; - __asm__ __volatile__(""); - D_801152AC = 0xFFF; - } else { - D_801152AC = -0xFFF; - D_8018B194[2] = a2v - 2; - } - __asm__ __volatile__("" :: "r"(a1v), "r"(a2v)); - (*(s16 *)D_80126720) = (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1; - D_80126722 = (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1; - result = 1; - D_80126724 = (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1; - return result; -} - - - - -// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). -// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). - -// D_8018B18C/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). -// D_8018B194 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` -// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs -// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern u8 D_80126720[]; - -s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - u16 *ac; - s16 *b8; - s16 *b4; - s16 temp_v0; - s16 temp_v1; - s32 var_a3; - s32 temp_a1; - s32 var_a1; - s32 var_v0; - s32 var_v1; - s32 a1c; - s32 a2c; - s32 cond; - register u32 zr __asm__("$0"); - - __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); - cond = arg1 & 1; - a2c = arg2 + zr; - if (!cond) { - var_v1 = (s16) arg2 - (*(s16 **)&D_8018B18C)[0]; - var_a1 = var_v1; - var_a3 = -(*(s16 **)&D_8018B198)[0]; - } else { - var_a3 = (*(s16 **)&D_8018B198)[0]; - var_v1 = (*(s16 **)&D_8018B18C)[0] - (s16) arg2; - var_a1 = -var_v1; - } - ac = *(u16 **)&D_8018B18C; - b4 = D_8018B194; - b8 = *(s16 **)&D_8018B198; - b4[0] = ac[0] + var_a1; - temp_a1 = -var_v1; - b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; - temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; - b4[2] = temp_v0; - var_v0 = 0; - if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { - return var_v0; - } - if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { - return var_v0; - } - temp_v1 = b4[1]; - if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { - return var_v0; - } - if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { - return var_v0; - } - __asm__("" :: "r"(a1c)); - __asm__("" :: "r"(a1c)); - if (a1c & 0x8000) { - b4[1] = (s16) (*(u16 **)&D_8018B190)[1]; - b4[2] = (s16) (*(u16 **)&D_8018B190)[2]; - } - D_801152AC = 0; - D_801152AA = 0; - if ((a1c & 1) != 0) { - *(s16 *)D_801152A8 = 0xFFF; - M2C_FIELD(D_8018B194, s16 *, 0) = a2c + 2; - } else { - *(s16 *)D_801152A8 = -0xFFF; - M2C_FIELD(D_8018B194, s16 *, 0) = a2c - 2; - } - *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); - D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); - var_v0 = 1; - D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); - return var_v0; -} - - - -// @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) -// D_8018B18C/B0/B8 are file-scope `extern u8`, D_8018B194 is `extern s32 []`; each HOLDS a -// pointer value that the target loads via lw then derefs. Read as pointer via *(T**)&sym. -// D_8018B194 must be a SCALAR pointer (not s32[]) — as an array it decays and gcc CSEs the -// base address into a held reg (lui;addiu;lw 0(reg)) across the 3 reloads; as a scalar -// pointer it folds %lo (lui;lw %lo). Retype all 3 file-TU occurrences (byte-neutral: the -// siblings read it once via *(u16**)&sym == direct lw either way). - -s32 func_80136824(s32 arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - - register u16 *ac __asm__("$4"); - register s16 *b8 __asm__("$6"); - register s16 *b4 __asm__("$9"); - register s32 r __asm__("$3"); - register s32 pos __asm__("$12"); - register s32 a1v __asm__("$5"); - s16 temp_v0; - s16 temp_v1; - s32 var_a3; - s16 var_v0_3; - s32 temp_a1; - s32 var_t0; - s32 var_v1; - s16 *b4b; - u16 *p; - - __asm__ ("" : "=r"(a1v) : "0"(arg1)); - pos = arg2; - if (!(a1v & 1)) { - var_t0 = (s16) arg2 - (*(s16 **)&D_8018B18C)[1]; - var_v1 = var_t0; - var_a3 = -(*(s16 **)&D_8018B198)[1]; - } else { - var_a3 = (*(s16 **)&D_8018B198)[1]; - var_v1 = (*(s16 **)&D_8018B18C)[1] - (s16) arg2; - var_t0 = -var_v1; - } - b8 = (*(s16 **)&D_8018B198); - ac = (*(u16 **)&D_8018B18C); - b4 = D_8018B194; - temp_a1 = -var_v1; - r = (temp_a1 * b8[0]) / var_a3; - b4[0] = ac[0] + r; - b4[1] = ac[1] + var_t0; - r = (temp_a1 * b8[2]) / var_a3; - temp_v0 = ac[2] + r; - b4[2] = temp_v0; - temp_v1 = b4[0]; - if (temp_v1 < M2C_FIELD(((void *)arg0), s16 *, 4)) { - return 0; - } - if (M2C_FIELD(((void *)arg0), s16 *, 6) < temp_v1) { - return 0; - } - if (temp_v0 < M2C_FIELD(((void *)arg0), s16 *, 0xC)) { - return 0; - } - if (M2C_FIELD(((void *)arg0), s16 *, 0xE) < temp_v0) { - return 0; - } - if (arg1 & 0x8000) { - p = (*(u16 **)&D_8018B190); - b4[0] = (s16) p[0]; - b4[2] = (s16) p[2]; - } - D_801152AC = 0; - (*(s16 *)D_801152A8) = 0; - if (arg1 & 1) { - b4b = D_8018B194; - D_801152AA = 0xFFF; - __asm__ __volatile__(""); - var_v0_3 = pos + 2; - } else { - b4b = D_8018B194; - D_801152AA = -0xFFF; - __asm__ __volatile__(""); - var_v0_3 = pos - 2; - } - b4b[1] = var_v0_3; - __asm__ __volatile__("" :: "r"(pos)); - (*(s16 *)D_80126720) = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 4) + M2C_FIELD(((void *)arg0), s16 *, 6)) >> 1); - D_80126722 = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 8) + M2C_FIELD(((void *)arg0), s16 *, 0xA)) >> 1); - D_80126724 = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 0xC) + M2C_FIELD(((void *)arg0), s16 *, 0xE)) >> 1); - return 1; -} - - -// @class: schedule -// @stuck: none — MATCH (76 ins, relocation-masked). Key lever: the D_80126720/22/24 tail is a -// global-short RMW `+=`. Writing it via a cast `*(u16*)&SYM = *(u16*)&SYM + x` makes gcc CSE -// the address into a base reg (base-reuse) for ALL three — but the target only base-reuses -// D_80126720 (a SCHEDULER artifact: its addr-lui fills the load-delay slot after the pb4[4] -// load, and since $v0 is live it lands in $a0, reused for load+store). D_80126722/24 use the -// plain inline 2-lui form. Fix = DIRECT scalar RMW `SYM = SYM + x` (no &/cast) → inline %hi/%lo; -// the scheduler alone forces base-reuse on #1. Also: `s16 D_80126724 = D_80126724 + int` emits -// LHU (gcc-2.7.2 drops the sign-extend because the sum is truncated to 16b on the sh) — so the -// canonical s16 decl is byte-safe here (no u16 retype needed, keeps the sign-sensitive callers). - - -extern s16 *D_8018B194; /* holds a pointer value (*(u16**)&D_8018B194) */ - -s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3) { - extern void ApplyMatrixSV(void *m, void *v0, void *v1); - extern void ApplyRotMatrix(void *v0, void *v1); - extern u16 D_80126722; - extern s16 D_80126724; - extern s16 D_801152AA; - extern s16 D_801152AC; - - s32 out[4]; - u16 *pb4; - - if (a0) { - ApplyMatrixSV((void *)a3, *(void **)&D_8018B194, *(void **)&D_8018B194); - ApplyMatrixSV((void *)a3, (void *)D_80126720, (void *)D_80126720); - ApplyRotMatrix((void *)D_801152A8, (void *)out); - *(s16 *)D_801152A8 = out[0]; - D_801152AA = out[1]; - D_801152AC = out[2]; - } - - pb4 = *(u16 **)&D_8018B194; - *(s16 *)(a2) = pb4[0] + *(s32 *)(a1 + 0x48); - *(s16 *)(a2 + 2) = pb4[1] + *(s32 *)(a1 + 0x4C); - *(s16 *)(a2 + 4) = pb4[2] + *(s32 *)(a1 + 0x50); - - *(u16 *)D_80126720 = *(u16 *)D_80126720 + *(s32 *)(a1 + 0x48); - D_80126722 = D_80126722 + *(s32 *)(a1 + 0x4C); - D_80126724 = D_80126724 + *(s32 *)(a1 + 0x50); -} - - - -DEFINE_func_80136BC4() /* dedup: shared engine-core @0x80136BC4 (src/shared) */ - -DEFINE_func_80136C1C() /* dedup: shared engine-core @0x80136C1C (src/shared) */ - -DEFINE_func_80136C3C() /* dedup: shared engine-core @0x80136C3C (src/shared) */ - -DEFINE_func_80136C44() /* dedup: shared engine-core @0x80136C44 (src/shared) */ - -DEFINE_func_80136C4C() /* dedup: shared engine-core @0x80136C4C (src/shared) */ - - -extern unsigned short D_800B99F0; -extern void (*D_8018B1A8[])(void); - -void func_80136C54(void) -{ - D_8018B1A8[D_800B99F0](); -} - - -// @class: struct -// @stuck: none — MATCH (28 ins). 10-byte 1-aligned struct copy (S10_80136C90{char s[10]}) from global D_801E59E8 into a stack buffer, then func_8001534C(0,&buf,0x78,0x10,0,0). gcc emits the block move as 2 unaligned words (lwl/lwr+swl/swr) + 2 bytes (lb/sb). - - -s32 func_80136C90() -{ - extern void func_8001534C(int, void *, int, int, int, int); - extern S10_80136C90 D_801E59E8; - - S10_80136C90 buf = D_801E59E8; - func_8001534C(0, &buf, 0x78, 0x10, 0, 0); -} - - - -DEFINE_func_80136D00() /* dedup: shared engine-core @0x80136D00 (src/shared) */ - -DEFINE_func_80136D08() /* dedup: shared engine-core @0x80136D08 (src/shared) */ - -DEFINE_func_80136DFC() /* dedup: shared engine-core @0x80136DFC (src/shared) */ - -DEFINE_func_80136EC4() /* dedup: shared engine-core @0x80136EC4 (src/shared) */ - -DEFINE_func_80136ECC() /* dedup: shared engine-core @0x80136ECC (src/shared) */ - -DEFINE_func_80136F3C() /* dedup: shared engine-core @0x80136F3C (src/shared) */ - -DEFINE_func_80137030() /* dedup: shared engine-core @0x80137030 (src/shared) */ - -DEFINE_func_80137178() /* dedup: shared engine-core @0x80137178 (src/shared) */ - -DEFINE_func_801372B0() /* dedup: shared engine-core @0x801372B0 (src/shared) */ - -DEFINE_func_801375EC() /* dedup: shared engine-core @0x801375EC (src/shared) */ - -extern void func_801375EC(s32 a0, s16 a1); - -// @class: schedule (arg-copy placement) — PIN-FREE -// match_one: MATCH (26 ins). rtu: MATCH (26 ins) with NO //@EDIT and NO header edit. -// -// ---- RECONCILE 2026-08-01 (uc2 -> uc3) --------------------------------------------------- -// GATE ERROR was: -// jr_80135D20.c:1412 conflicting types for func_80137614 || :1362 previous declaration -// :1362 is `DEFINE_func_801375EC()`, whose expansion (src/shared/engine_core.h:2819) carries -// extern void func_80137614(s32 a0, s32 a1, s32 a2); -// and it is instantiated two lines ABOVE this function's INCLUDE_ASM splice point (:1364). -// :1412 is this draft's own definition. So the conflicting symbol is func_80137614 ITSELF -// and the axis is the §73 RETURN type: the shared header says `void`, the target ends -// `addu $v0, $s0, $zero` and callers in other overlays consume the result -// (ov_SC03_099_jr_80178D40.c already declares it `extern s32 func_80137614(s32,s32,s32)`), -// so the definition MUST stay s32. Re-voiding the definition is the decay loop: gcc-2.7.2 -// silently drops the $v0 set and you get 25/26 ins, class LENGTH-DRIFT/-1. -// -// ESCAPE USED: §37/§124 ASM-LABEL ALIAS (escape #2). The definition is given a distinct C -// identifier `aF80137614` with __asm__("func_80137614"), so it never collides with the -// header's `extern void func_80137614` while still emitting the canonical symbol. Zero -// header edits, zero TU edits, blast radius 0 — this replaces uc2's //@EDIT §65b de-macroize -// of DEFINE_func_801375EC, which would have had to be repeated at all 138 sweep sites. -// The TU already uses this exact idiom 60-odd lines below -// (`void *aF801376E8(int a0, int a1) __asm__("func_801376E8");`), so it travels to siblings. -// The in-TU call from func_801375EC still binds to the header's extern declaration and -// resolves to the same symbol at link time; func_801375EC's own 10 instructions are unchanged. -// -// ---- CODEGEN (unchanged from uc2 — do not touch) ----------------------------------------- -// Residual before the lever: 4 mismatched, the (sw $sN / addu $sN,$aX) prologue PAIRS mirrored — -// target births $s2<-a2 then $s3<-a1; the naive draft births $s3<-a1 then $s2<-a2 (parm order), -// and drags `sw $s3` above `sw $s2` with it. Register ASSIGNMENT was already right in both, so -// this is NOT a regalloc problem. Measured INERT: body statement order, extra plain locals, -// K&R parm-declaration order (incl. declaring a2 before a1 in the K&R decl block). -// -// LEVER — cookbook §67 (arg-copy PLACEMENT). One zero-instruction launder of the a1 parameter -// pins WHERE its entry copy materialises; a2's copy then takes the earlier slot and the register -// saves fall back into ascending order. DIRECTION MATTERS and is the opposite of the intuition: -// laundering a2 (the copy that must move EARLIER) is inert — launder the copy that must land -// LATER. §67 rule 1 respected: the laundered local is NOT pinned. A pinned variant -// (register s32 __asm__("$18") / __asm__("$19") on a2/a1) also MATCHes, but pins are strictly -// worse for the ×138 family sweep (§42e/§86 pin guard), so the pin-free single launder is banked. -// -// Shape copied from the matched next-door sibling DEFINE_func_8013767C() (engine_core.h), -// which is this function minus the 0xD8 mask and the +0x1C halfword store. - -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); - -s32 aF80137614(s32 a0, s32 a1, s32 a2) __asm__("func_80137614"); - -DEFINE_func_80137614() /* dedup: shared engine-core @0x80137614 (src/shared) */ - - -DEFINE_func_8013767C() /* dedup: shared engine-core @0x8013767C (src/shared) */ - -DEFINE_func_801376C8() /* dedup: shared engine-core @0x801376C8 (src/shared) */ - - -/* @class: plumbing (globals-around-two-calls) - * @stuck: none — MATCH (51 ins). - * - * RECONCILE (§37/§124 ASM-LABEL ALIAS) — no TU / header edit required. - * Gate error: ov_SC01_077_jr_80135D20.c:1415: conflicting types for `func_801376E8' - * || previous declaration at :1368 - * :1368 is DEFINE_func_801376C8(), the shared engine-core macro that carries - * `extern void func_801376E8(int a0, int a1);` — a VOID return. The target's last - * pre-epilogue instruction is `addu $v0, $s1, $zero`, i.e. it RETURNS &D_801269F0, - * so the definition MUST be non-void; a `void` definition makes gcc-2.7.2 merely warn - * and DROP the returned value, killing that instruction (LENGTH-DRIFT/-1, 50 ins). - * The conflict is on func_801376E8 ITSELF and is a pure RETURN-type disagreement - * (params already agree: int,int), so the §37/§124 alias applies verbatim: - * define under the C name aF801376E8 with __asm__("func_801376E8") so the C-level - * declaration never collides, while the emitted symbol is still func_801376E8. - * Codegen is untouched — an asm label renames the symbol, nothing else. - * (The earlier draft's `//@EDIT` widening of the shared extern to `void *` is a - * T2 fleet-shared edit; the alias is T0 draft-only. Cookbook §124: fix the reader, - * not the source.) - * - * Byte levers (unchanged from the passing draft): - * - `obj` local holding (s32)&D_801269F0: the address is CSEd ONCE into $s1 and reused - * for both jal args and the return (same idiom as the neighbouring func_80137B80). - * - D_80126A24 is s16 (`lh`) but D_80126A26 is u16 (`lhu`) with an explicit (s16) cast - * at the use site: gcc combines the cast's `sll 16; sra 16` with the `>>1` into - * `sll 16; sra 17`, which is exactly what the target emits. A plain s16 D_80126A26 - * would give `lh; sra 1` instead. - * - D_80126A14 as u16[2] (`lhu` loads, `%lo(D_80126A14 + 0x2)` for element 1). - */ - - -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern void func_80139BE0(s32 a0); - -void *aF801376E8(int a0, int a1) __asm__("func_801376E8"); - -DEFINE_func_801376E8() /* dedup: shared engine-core @0x801376E8 (src/shared) */ - - -DEFINE_func_801377B4() /* dedup: shared engine-core @0x801377B4 (src/shared) */ - -DEFINE_func_80137840() /* dedup: shared engine-core @0x80137840 (src/shared) */ - - -extern void func_80016714(void *a0, s32 a1); -extern void func_8013A860(void); - -void func_801378F0(void) { - - extern u8 D_80127520[]; - extern u8 aD801269F0[] __asm__("D_801269F0"); /* §37 alias: TU canon is `extern int D_801269F0` */ - extern u8 D_80126A28[]; - extern u8 D_8018B1B0[]; - s32 i; - s32 si; - s32 di; - u8 *p; - - func_80016714(D_80127520, 0xBFC); - i = 0; - si = 0; - p = aD801269F0; - di = 0; - do { - func_80016714(p, 0x4C); - *(u16 *)&D_80126A28[di] = *(u16 *)&D_8018B1B0[si]; - *(u16 *)&D_80126A28[di + 2] = *(u16 *)&D_8018B1B0[si + 2]; - *(u16 *)&D_80126A28[di + 4] = *(u16 *)&D_8018B1B0[si + 4]; - *(u16 *)&D_80126A28[di + 6] = *(u16 *)&D_8018B1B0[si + 6]; - p += 0x4C; - i += 1; - si += 8; - di += 0x4C; - } while (i < 3); - func_8013A860(); -} - - -DEFINE_func_801379D8() /* dedup: shared engine-core @0x801379D8 (src/shared) */ - -DEFINE_func_801379EC() /* dedup: shared engine-core @0x801379EC (src/shared) */ - - -// @class: regalloc-order (walker-family, §52/§52a) — PIN-FREE -// Role-swap ($s0<->$s2 between loop1 and loops2/3) is driven by DENSITY (K2), not pins: -// - loop1 pointer has an extra ref (p != D_80127524 compare) -> wins $s0; index -> $s2 -// - loop2/3 index has >= pointer refs -> wins $s0; pointer -> $s2 -// Separate per-loop pointer/index vars => separate pseudos => can take different regs. - - -DEFINE_func_801379FC() /* dedup: shared engine-core @0x801379FC (src/shared) */ - - - -// @class: remat -// @stuck: target CSEs &D_801269F0 once for load+call arg; force via local pointer -extern s32 D_80127548[]; -extern int D_8018B1FC; -extern int D_801269F0; -extern void func_80138BE0(int p); - -void func_80137B80(void) { - int *p = &D_801269F0; - (*(int *)&D_80127548) = 0x24; - if (*p != 0) { - ((void (*)(int *))func_80138BE0)(p); - } - D_8018B1FC += 1; -} - - -DEFINE_func_80137BD8() /* dedup: shared engine-core @0x80137BD8 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Three globals stored/loaded around 3 calls; &D_801269F0 held in $s1, arg1 in $s0 across calls; return reloads global D_800A5E60. - -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int D_8018B1FC; -extern int D_801269F0; - -extern void func_801392FC(); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); - -int func_80137D08(int arg0, int arg1, short arg2) -{ - unsigned char buf[3]; - - D_800A5E60 = arg0; - D_80126A0A = arg2; - ((void (*)(void *, int, int))func_801392FC)(&D_801269F0, D_80126A0E, arg1); - if ((*(short *)&D_801269F4) == 7) { - buf[0] = 0x39; - buf[1] = 0xFF; - buf[2] = 0x71; - ((void (*)(void *, void *, int))func_80137DD4)(&D_801269F0, buf, arg1); - } else if ((*(short *)&D_801269F4) == 3) { - if (D_8018B1FC & 4) { - ((void (*)(void *, int))func_80139680)(&D_801269F0, arg1); - } - } - return D_800A5E60; -} - - -DEFINE_func_80137DD4() /* dedup: shared engine-core @0x80137DD4 (src/shared) */ - -DEFINE_func_80137FD8() /* dedup: shared engine-core @0x80137FD8 (src/shared) */ - - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_801380E0.c b/src/ov_SC02_003/ov_SC02_003_jr_801380E0.c deleted file mode 100644 index f3ddab467..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_801380E0.c +++ /dev/null @@ -1,1472 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018AF78[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018AF8C[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018B0CC[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018B124[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018B16C[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018B174[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018B17C[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018B184[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018B12C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018B14C; -extern void func_801321B0(int param_1); -extern int D_8018B15C; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern int D_801E6D38; -extern u16 D_801E6D48; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018B194; /* holds a pointer value (*(u16**)&D_8018B194) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018B1A8[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_8018B1FC; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -/* ==== end §8b carried decl layer ==== */ - -/* func_801380E0 (ov_SC01_077_a, 438 ins, jtbl_801D81F0) — Phase 26 crack - * Script-command interpreter: for(;;) fetch cmd byte, dispatch (>=0x20 -> extern - * handler; ==0 -> END; else 25-case jump table), loop while `cont`. - * PIN-FREE. Offset-pure (s32 arg0 + raw offsets) — x134 template-safe. - * - * match_one: MATCH (438 ins). jtbl VERIFIED: 25 entries, byte-identical offsets - * (0x17C 0x184 0x220 0x218 0x20C 0x254 0x13C 0x168 0x404 0x118 0x268 0x3C0 0x3D0 - * 0x424 0x444 0x454 0x47C 0x494 0x4EC 0x544 0x58C 0x1F8 0x5B4 0x5C0 0x5E4); - * bound `sltiu 0x19`; default -> +0x624; case 0 peel `beqz` -> +0x634; .text 0x6D8. - * - * FOUR levers made this land (all in the cookbook's §46/§47 family): - * L-A s32 (NOT pointer) address arithmetic. `pc + base` vs `base + pc` is a real - * byte difference (`addu $v0,$v0,$s3` vs `addu $v0,$s3,$v0`): C's - * pointer_int_sum() canonicalises ptr-first and DESTROYS source operand order, - * so a `u8 *base` can never emit the idx-first form. Plain int + a cast at the - * deref keeps gcc's PLUS operand order == source order. - * L-B `u32 cmd` — the `cmd >= 0x20` guard must be UNSIGNED (`sltiu`, not `slti`). - * L-C THE $s5 HOIST (this is the crack). The target holds &D_8012752E in a - * callee-saved reg across the whole loop and reaches D_8012752C at -2($s5). - * gcc will NOT do this for a plain global (a symbolic address is a legitimate - * MIPS address — GO_IF_LEGITIMATE_ADDRESS/CONSTANT_ADDRESS_P), and a local - * `s16 *snd = &D_8012752E;` written INSIDE case 11 gets constant-folded straight - * back into `sh $x, %lo(D_8012752E)-2($at)` by cse's find_best_addr. - * §46-L2 is the fix: set the pointer at the LOOP TOP, so its def and its uses - * live in DIFFERENT extended basic blocks (the case-11 body is only reachable - * through the `jr` table, so cse starts a fresh hash table there and cannot - * fold). The `la` then survives cse, loop.c's move_movables hoists it into the - * PREHEADER (exactly .L80138138), and global-alloc gives it $s5. - * Case 25 deliberately keeps the PLAIN global (lui/lh) — matching the target. - * L-D PER-CASE temps. Sharing one `q` across cases 18/19/20 makes the pseudo - * multi-block => it leaves local-alloc for global-alloc and both branches of - * case 18/19 land their result in $v0 — which lets the post-reload cross_jump - * tail-merge the `sh $v0,0($s0)` with the default block's store (2 ins short). - * Separate q18/q19/q20 keeps each block-local; the true-branch gets $v1, the - * false-branch $v0, and the tails stay APART (the §46-L5 register-divergence - * rule, here obtained for free by scoping rather than by pinning). - * - * Bonus (no lever needed, just don't fight it): the two out-of-line blocks at the top - * of the function (func_80139914+return, and state=0xD+return) are loop.c - * find_and_verify_loops (loop.c:2382) MOVING a loop-exiting block to the barrier - * before the loop and inverting the branch around it. Writing the natural - * `if (...) { call(); return; }` inside a real `for(;;)` reproduces it exactly. - - */ - - -s32 func_801380E0(s32 arg0) { - extern void func_8001931C(s32); - extern void func_8001AAD0(s32, s32); - extern s32 func_8001B22C(void); - extern void func_80029124(s32, s32); - extern s32 func_800CF864(s32, s32); - extern void func_80138AB4(s32, s32); - extern s32 func_80138C60(s32, s32); - extern void func_80138D58(s32, s32); - extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); - extern void func_801391F0(s32, s32); - extern void func_80139220(s32, s32); - extern void func_80139788(s32); - extern void func_80139914(s32); - extern void func_80139A8C(s32); - extern void func_80139B18(s32); - extern s16 D_8012752C; - extern s32 D_80127530[]; - - u16 *p; - s32 base; - s32 cont; - u32 cmd; - s32 sub; - s32 pc; - s32 t; - s32 f; - s32 f0; - s32 q18; - s32 q19; - s32 q20; - u32 idx; - s16 *snd; - - t = *(u8 *)(arg0 + 0xC); - if (t != 0) { - *(u8 *)(arg0 + 0xC) = t - 1; - goto done; - } - - for (;;) { - cont = 0; - snd = &D_8012752E; - if (*(s32 *)(arg0 + 8) & 0x400) { - base = D_80127530[*(u16 *)(arg0 + 0x4A)]; - p = (u16 *)(arg0 + 0x44); - } else { - p = (u16 *)(arg0 + 0x10); - base = *(s32 *)(arg0 + 0); - } - pc = *p; - cmd = *(u8 *)(pc + base); - sub = *(u8 *)(pc + base + 1); - - if (cmd >= 0x20) { - cont = ((s32 (*)(s32, s32, s32))func_80138DE0)(arg0, cmd, sub); - if (!(*(s32 *)(arg0 + 8) & 0x80220)) { - cont = 0; - } - } else if (cmd != 0) { - switch (cmd) { - case 10: - func_80139220(arg0, cmd); - *p += 1; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) & ~0x80000; - break; - - case 7: - if (*(s32 *)(arg0 + 8) & 0x10000) { - cont = 1; - } else { - *(s16 *)(arg0 + 4) = 3; - } - *p += 1; - break; - - case 8: - func_801391F0(arg0, cmd); - *p += 1; - break; - - case 1: - *(u8 *)(arg0 + 0x23) = sub; - cont = 1; - *p += 2; - break; - - case 2: - *(u8 *)(arg0 + 0x22) = sub; - *(u8 *)(arg0 + 0x20) = *(u8 *)(*p + base + 2); - *p += 3; - if (func_80138C60(arg0, cmd) == 0) { - func_80139914(arg0); - return; - } - *(s16 *)(arg0 + 4) = 9; - if (*(u8 *)(base + *p) == 5) { - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4000; - *p += 1; - } - break; - - case 22: - *(s32 *)(arg0 + 8) = (*(s32 *)(arg0 + 8) & ~0x20) | 0x4001; - cont = 1; - *p += 1; - break; - - case 5: - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4000; - cont = 1; - *p += 1; - break; - - case 4: - *(u8 *)(arg0 + 0xD) = sub; - cont = 1; - *p += 2; - break; - - case 3: - if (*(s32 *)(arg0 + 8) & 0x20000) { - cont = 1; - *p += 2; - } else { - *(s16 *)(arg0 + 4) = 0xB; - *(u8 *)(arg0 + 0xD) = sub; - *(s32 *)(arg0 + 8) = (*(s32 *)(arg0 + 8) | 0x8000) & ~0x20; - } - break; - - case 6: - *(s16 *)(arg0 + 4) = 4; - *p += 1; - break; - - case 11: - if ((*snd != 0) || (*(s32 *)(arg0 + 8) & 0x20) - || (func_800CF864(pc, cmd) == 0)) { - cont = 1; - *p += 4; - } else { - snd[-1] = *(u8 *)(*p + base + 2) + (*(u8 *)(*p + base + 3) << 8); - *p += 4; - *(s32 *)(arg0 + 8) = (*(s32 *)(arg0 + 8) & ~0x60020) | 0x10000; - if (snd[-1] != 0) { - func_8001AAD0(sub & 0x7F, snd[-1]); - if (sub & 0x80) { - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x40000; - } - if ((*(u8 *)(base + *p) == 2) || (*(s32 *)(arg0 + 8) & 0x40000)) { - cont = 1; - } else { - *(s16 *)(arg0 + 4) = 0x10; - } - if (func_8001B22C() == 0) { - f = *(s32 *)(arg0 + 8); - if (f & 1) { - func_8001931C(f); - } else { - *(s32 *)(arg0 + 8) = (f & ~0x10000) | 0x20020; - func_80139788(f); - } - *(s16 *)(arg0 + 4) = 2; - } - } else { - cont = 1; - } - } - break; - - case 12: - *(s16 *)(arg0 + 4) = 6; - *(u8 *)(arg0 + 0x21) = 2; - *p += 1; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4300; - break; - - case 13: - *(s16 *)(arg0 + 4) = 6; - *(u8 *)(arg0 + 0x21) = 3; - *p += 1; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4300; - break; - - case 9: - func_80138D58(arg0, sub); - cont = 1; - *p += 2; - break; - - case 14: - *(s16 *)(arg0 + 4) = 8; - *(u16 *)(arg0 + 0x44) = 0; - func_80138AB4(arg0, cmd); - *p += 1; - break; - - case 15: - *(u16 *)(arg0 + 0x44) = 0; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x400; - cont = 1; - *p += 1; - break; - - case 16: - func_80029124(sub | (*(u8 *)(*p + base + 2) << 8), 1); - cont = 1; - *p += 3; - break; - - case 17: - func_80029124(sub | (*(u8 *)(*p + base + 2) << 8), 0); - cont = 1; - *p += 3; - break; - - case 18: - if (((u8(*)(s32, s32))func_80029178)(sub | (*(u8 *)(*p + base + 2) << 8), cmd)) { - q18 = *p; - *p = *(u8 *)(q18 + base + 3) + (q18 + 4); - } else { - *p = *p + 4; - } - cont = 1; - break; - - case 19: - if (!((u8(*)(s32, s32))func_80029178)(sub | (*(u8 *)(*p + base + 2) << 8), cmd)) { - q19 = *p; - *p = *(u8 *)(q19 + base + 3) + (q19 + 4); - } else { - *p = *p + 4; - } - cont = 1; - break; - - case 20: - if (!(*(s32 *)(arg0 + 8) & 0x20000)) { - q20 = *p + base; - *(u16 *)(arg0 + 0xE) = *(u8 *)(q20 + 1) + (*(u8 *)(q20 + 2) << 8); - } - cont = 1; - *p += 3; - break; - - case 21: - if (*(u16 *)(arg0 + 0xE) != 0) { - *(s16 *)(arg0 + 4) = 0xF; - } else { - cont = 1; - } - *p += 1; - break; - - case 23: - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 2; - cont = 1; - *p += 1; - break; - - case 24: - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x80000; - cont = 1; - *p += 1; - break; - - case 25: - *p += 1; - if ((*(s32 *)(arg0 + 8) & 0x10000) && (D_8012752C != 0)) { - *(s16 *)(arg0 + 4) = 0x10; - } else { - cont = 1; - } - break; - - default: - *p = pc + 1; - cont = 1; - break; - } - } else { - f0 = *(s32 *)(arg0 + 8); - if (f0 & 0x400) { - idx = *(u16 *)(arg0 + 0x4A); - *(s32 *)(arg0 + 8) = f0 & ~0x400; - if (idx < 3) { - *(u16 *)(arg0 + 0x4A) = idx + 1; - } - } else if (f0 & 0x2000) { - *(s16 *)(arg0 + 4) = 0xD; - return; - } else { - *(s16 *)(arg0 + 4) = 0xA; - return; - } - } - - if (cont == 0) { - break; - } - } - - if (*(u8 *)(arg0 + 0xC) == 0) { - *(u8 *)(arg0 + 0xC) = *(u8 *)(arg0 + 0xD); - } -done: - func_80139A8C(arg0); - func_80139B18(arg0); -} - - -DEFINE_func_801387B8() /* dedup: shared engine-core @0x801387B8 (src/shared) */ - -DEFINE_func_80138948() /* dedup: shared engine-core @0x80138948 (src/shared) */ - -DEFINE_func_8013895C() /* dedup: shared engine-core @0x8013895C (src/shared) */ - -DEFINE_func_80138AB4() /* dedup: shared engine-core @0x80138AB4 (src/shared) */ - -DEFINE_func_80138B88() /* dedup: shared engine-core @0x80138B88 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (match_one: MATCH 20 ins) - -extern void (*D_8018B200[])(void); - -void func_80138BE0(int p) -{ - if (*(unsigned short *)(p + 0xe) != 0) { - *(unsigned short *)(p + 0xe) -= 1; - } - D_8018B200[*(short *)(p + 4)](); -} - - -DEFINE_func_80138C30() /* dedup: shared engine-core @0x80138C30 (src/shared) */ - -extern s32 func_80139BE0(s32); - -s32 func_80138C60(s32 arg0) -{ - extern Q_80138C60 D_8018B1CC[]; - u16 t; - u8 b; - s32 f; - s32 idx; - - if (*(s32 *)(arg0 + 8) & 0x2000) { - return 1; - } - - t = *(u8 *)(arg0 + 0x22) & 7; - *(s16 *)(arg0 + 0x18) = t; - if (t < 2) { - *(u8 *)(arg0 + 0x20) = 0; - } - - f = *(s32 *)(arg0 + 8); - if (f & 0x40) { - *(u8 *)(arg0 + 0x22) = (*(u8 *)(arg0 + 0x22) & 0x67) | (f & ~0x67); - } - - b = *(u8 *)(arg0 + 0x22); - if (b & 0x80) { - idx = (b & 0x18) >> 3; - } else { - idx = (b & 0x78) >> 3; - if (b & 0x60) { - *(s16 *)(arg0 + 0x1C) = 0; - } - } - - *(Q_80138C60 *)(arg0 + 0x24) = D_8018B1CC[idx]; - - func_80139BE0(arg0); - func_80139C7C((u8 *)arg0); - return func_8013A8FC(arg0); -} - - -DEFINE_func_80138D58() /* dedup: shared engine-core @0x80138D58 (src/shared) */ - -DEFINE_func_80138DB8() /* dedup: shared engine-core @0x80138DB8 (src/shared) */ - - -DEFINE_func_80138DE0() /* dedup: shared engine-core @0x80138DE0 (src/shared) */ - - -DEFINE_func_80138ED0() /* dedup: shared engine-core @0x80138ED0 (src/shared) */ - -DEFINE_func_8013914C() /* dedup: shared engine-core @0x8013914C (src/shared) */ - -DEFINE_func_801391F0() /* dedup: shared engine-core @0x801391F0 (src/shared) */ - -DEFINE_func_80139220() /* dedup: shared engine-core @0x80139220 (src/shared) */ - -DEFINE_func_801392C8() /* dedup: shared engine-core @0x801392C8 (src/shared) */ - -DEFINE_func_801392FC() /* dedup: shared engine-core @0x801392FC (src/shared) */ - -DEFINE_func_801395D4() /* dedup: shared engine-core @0x801395D4 (src/shared) */ - -DEFINE_func_80139634() /* dedup: shared engine-core @0x80139634 (src/shared) */ - -DEFINE_func_80139680() /* dedup: shared engine-core @0x80139680 (src/shared) */ - -DEFINE_func_80139788() /* dedup: shared engine-core @0x80139788 (src/shared) */ - - -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern u8 D_8018B244; -extern u8 D_8018B288; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); - -void func_801397B0(s32 arg0) -{ - register u8 *e __asm__("$7"); - register s32 off __asm__("$4"); - s32 buf[12]; - u8 *b164; - u8 *b1A8; - s32 sc; - s32 t2; - s32 t0; - s32 hi; - s32 lo; - s32 uu; - s32 vv; - - e = (u8 *)arg0; - b164 = (u8 *)&D_8018B244; - off = ((s32)*(u8 *)(e + 0x20) - 1) << 2; - b164 = off + b164; - - *(s32 *)((u8 *)buf + 0x00) = 0; - - t2 = *(s16 *)(b164 + 2); - t0 = *(s16 *)(b164 + 0); - hi = (t2 & 0x100) >> 4; - lo = ((t0 & 0x3C0) >> 6) | 0x20; - *(s16 *)((u8 *)buf + 0x0C) = hi | lo | ((t2 & 0x200) << 2); - - b1A8 = (u8 *)&D_8018B288 + off; - *(s16 *)((u8 *)buf + 0x10) = *(u16 *)(b1A8 + 0); - *(s16 *)((u8 *)buf + 0x12) = *(u16 *)(b1A8 + 2); - *(u8 *)((u8 *)buf + 0x16) = 0x80; - *(u8 *)((u8 *)buf + 0x15) = 0x80; - *(u8 *)((u8 *)buf + 0x14) = 0x80; - *(s16 *)((u8 *)buf + 0x06) = *(u16 *)(e + 0x32); - *(s16 *)((u8 *)buf + 0x08) = 0x20; - *(s16 *)((u8 *)buf + 0x0A) = 0x28; - - uu = (*(u16 *)(b164 + 0) & 0x3F) << 2; - *(u8 *)((u8 *)buf + 0x0E) = uu; - vv = *(u16 *)(b164 + 2); - *(u8 *)((u8 *)buf + 0x0F) = vv; - - if (*(u8 *)(e + 0x22) & 8) { - *(s16 *)((u8 *)buf + 0x04) = - *(u16 *)(e + 0x30) + *(u16 *)(e + 0x34) + 0x28; - sc = -*(u16 *)(e + 0x28); - } else { - *(s16 *)((u8 *)buf + 0x04) = *(u16 *)(e + 0x30) - 0x28; - sc = *(u16 *)(e + 0x28); - } - *(s16 *)((u8 *)buf + 0x1C) = sc; - *(s16 *)((u8 *)buf + 0x1E) = *(u16 *)(e + 0x2A); - *(s16 *)((u8 *)buf + 0x1A) = 0; - *(s16 *)((u8 *)buf + 0x18) = 0; - *(s32 *)((u8 *)buf + 0x20) = 0; - - GsSortSprite(buf, &D_800A6518[(u16)D_800B9A02 * 20], - *(u16 *)(e + 0x1A)); -} - - -DEFINE_func_80139914() /* dedup: shared engine-core @0x80139914 (src/shared) */ - -DEFINE_func_80139954() /* dedup: shared engine-core @0x80139954 (src/shared) */ - -DEFINE_func_801399A8() /* dedup: shared engine-core @0x801399A8 (src/shared) */ - -DEFINE_func_801399F0() /* dedup: shared engine-core @0x801399F0 (src/shared) */ - -DEFINE_func_80139A34() /* dedup: shared engine-core @0x80139A34 (src/shared) */ - -DEFINE_func_80139A44() /* dedup: shared engine-core @0x80139A44 (src/shared) */ - -DEFINE_func_80139A68() /* dedup: shared engine-core @0x80139A68 (src/shared) */ - -DEFINE_func_80139A8C() /* dedup: shared engine-core @0x80139A8C (src/shared) */ - -DEFINE_func_80139B18() /* dedup: shared engine-core @0x80139B18 (src/shared) */ - - -/* func_80139BE0 — ov_SC01_077 / ov_SC01_077_jr_801380E0, 39 ins, MATCH. - * - * REDRAFT of the decayed backlog draft: the stored draft was -1 instruction - * (LENGTH-DRIFT) because the target keeps a QI->SI zero-extend of the masked - * byte (`andi $a1,$v0,0xFF` after `andi $v0,$v0,0x60`) that gcc-2.7.2 folds - * away: combine proves nonzero_bits(x & 0x60) <= 0xff and simplifies the - * extend to nothing. No pure-C spelling survives that fold when the def and - * the extend sit in the SAME basic block (verified: u8 local, (u8) cast at - * the use, `& 0xff` at the use, u8-via-int, u16 hold, hard-register pins) — - * a cross-BB def keeps it but lands the andi in the wrong block. - * The opacity idiom (already used in src/ov_SC03_099) makes the value's range - * unprovable in place, so the extend survives at its original position. - * cookbook §1/I2 ("masked andi survives only if the value's range is - * unprovable"), §17 (pins/barriers). - */ - -s32 func_80139BE0(int param_1) -{ - - extern unsigned char D_8018B1C8[]; - int v; - - if ((*(unsigned int *)(param_1 + 8) & 0x2000) == 0) { - int t = *(unsigned char *)(param_1 + 0x22) & 0x60; - int h = *(unsigned short *)(param_1 + 0x18); - unsigned int idx; - - __asm__("" : "=r"(t) : "0"(t)); - idx = (unsigned char)t; - if (h < 7) { - if (h >= 2) { - v = D_8018B1C8[idx >> 5]; - } else { - v = D_8018B1C8[0]; - } - } else { - v = D_8018B1C8[0]; - } - *(short *)(param_1 + 0x2e) = 3; - *(short *)(param_1 + 0x2c) = v; - } - *(short *)(param_1 + 0x34) = *(short *)(param_1 + 0x2c) * 6; - { - int x = *(short *)(param_1 + 0x2e); - *(short *)(param_1 + 0x36) = x * 12 + (x - 1) * 2; - } -} - - -DEFINE_func_80139C7C() /* dedup: shared engine-core @0x80139C7C (src/shared) */ - -DEFINE_func_80139D04() /* dedup: shared engine-core @0x80139D04 (src/shared) */ - -DEFINE_func_80139DC8() /* dedup: shared engine-core @0x80139DC8 (src/shared) */ - -DEFINE_func_80139DEC() /* dedup: shared engine-core @0x80139DEC (src/shared) */ - -DEFINE_func_80139DF4() /* dedup: shared engine-core @0x80139DF4 (src/shared) */ - -DEFINE_func_80139E84() /* dedup: shared engine-core @0x80139E84 (src/shared) */ - -DEFINE_func_80139F0C() /* dedup: shared engine-core @0x80139F0C (src/shared) */ - -DEFINE_func_80139FBC() /* dedup: shared engine-core @0x80139FBC (src/shared) */ - -DEFINE_func_80139FE8() /* dedup: shared engine-core @0x80139FE8 (src/shared) */ - -DEFINE_func_8013A0A4() /* dedup: shared engine-core @0x8013A0A4 (src/shared) */ - -DEFINE_func_8013A164() /* dedup: shared engine-core @0x8013A164 (src/shared) */ - -DEFINE_func_8013A1E8() /* dedup: shared engine-core @0x8013A1E8 (src/shared) */ - -DEFINE_func_8013A250() /* dedup: shared engine-core @0x8013A250 (src/shared) */ - -DEFINE_func_8013A2BC() /* dedup: shared engine-core @0x8013A2BC (src/shared) */ - -DEFINE_func_8013A378() /* dedup: shared engine-core @0x8013A378 (src/shared) */ - -DEFINE_func_8013A380() /* dedup: shared engine-core @0x8013A380 (src/shared) */ - -DEFINE_func_8013A448() /* dedup: shared engine-core @0x8013A448 (src/shared) */ - -DEFINE_func_8013A4C4() /* dedup: shared engine-core @0x8013A4C4 (src/shared) */ - -DEFINE_func_8013A530() /* dedup: shared engine-core @0x8013A530 (src/shared) */ - -DEFINE_func_8013A860() /* dedup: shared engine-core @0x8013A860 (src/shared) */ - -DEFINE_func_8013A8B0() /* dedup: shared engine-core @0x8013A8B0 (src/shared) */ - -DEFINE_func_8013A8BC() /* dedup: shared engine-core @0x8013A8BC (src/shared) */ - -DEFINE_func_8013A8FC() /* dedup: shared engine-core @0x8013A8FC (src/shared) */ - -DEFINE_func_8013A9B4() /* dedup: shared engine-core @0x8013A9B4 (src/shared) */ - -DEFINE_func_8013A9F8() /* dedup: shared engine-core @0x8013A9F8 (src/shared) */ - -DEFINE_func_8013AA24() /* dedup: shared engine-core @0x8013AA24 (src/shared) */ - -DEFINE_func_8013AB54() /* dedup: shared engine-core @0x8013AB54 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (122 ins). GTE lerp+mvmva loop. Two levers: (1) flat `extern s16` -// source arrays indexed [2*i]/[2*i+1] force 4 separate walking IVs (t2/t3/t4/t5) instead of -// one shared offset-IV + symbol(reg) addressing; (2) INVERTED-arm if/else -// `if (flag<0) out3=-tbl; else out3=tbl;` gives the target's bgez polarity + reload-per-arm -// sign-flip block (a plain ?: hoists the common lbu; the inverted if/else does not, and gcc -// still merges the sb). out2[i]=out2[0] tail-copy of the align-2 Pair_8013AD38 emits lwl/lwr/swl/swr. -#include "common.h" - - -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018B2CC[]; /* sign table, alt (when a1 < 0xC00) */ - -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") - -#define gte_mvmva0() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") - -#define gte_stlvnl(r0) __asm__ __volatile__( \ - "swc2 $25, 0(%0)\n" \ - "swc2 $26, 4(%0)\n" \ - "swc2 $27, 8(%0)\n" \ - : : "r"(r0) : "memory") - -void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) -{ - extern s16 D_800D466C[]; - extern u8 D_8018B308[]; - - u8 *tbl; - s16 vec[4]; - s32 res[3]; - s32 i; - - tbl = D_8018B308; - if (((s16)a1) < 0xC00) { - tbl = D_8018B2CC; - } - - for (i = 0; i < 30; i++) { - vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); - vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); - gte_ldv0(vec); - gte_mvmva0(); - gte_stlvnl(res); - ((Pair_8013AD38 *)out2)[i].x = res[0]; - ((Pair_8013AD38 *)out2)[i].y = res[1]; - if (((s16 *)flag)[0] < 0) ((s8 *)out3)[2 * i] = -tbl[2 * i]; else ((s8 *)out3)[2 * i] = tbl[2 * i]; - if (((s16 *)flag)[1] < 0) ((s8 *)out3)[2 * i + 1] = -tbl[2 * i + 1]; else ((s8 *)out3)[2 * i + 1] = tbl[2 * i + 1]; - } - ((Pair_8013AD38 *)out2)[i] = ((Pair_8013AD38 *)out2)[0]; - if (((s16 *)flag)[0] < 0) ((s8 *)out3)[2 * i] = -tbl[0]; else ((s8 *)out3)[2 * i] = tbl[0]; - if (((s16 *)flag)[1] < 0) ((s8 *)out3)[2 * i + 1] = -tbl[1]; else ((s8 *)out3)[2 * i + 1] = tbl[1]; -} - - - -DEFINE_func_8013AF20() /* dedup: shared engine-core @0x8013AF20 (src/shared) */ - -DEFINE_func_8013B204() /* dedup: shared engine-core @0x8013B204 (src/shared) */ - - - -extern void *func_80010A08(s32); -extern s16 D_8018B344, D_8018B346, D_8018B348, D_8018B34A, D_8018B34C, D_8018B34E; -extern u16 D_800D45F6; - -void func_8013B274(s32 a0, s32 a1, void *a2) -{ - u8 *p; - s32 L[10]; - s16 sa; - s32 quot; - s16 ang; - - p = (u8 *)func_80010A08(0x28); - p[3] = 9; - p[7] = 0x2C; - p[4] = 0x80; - p[5] = 0x80; - p[6] = 0x80; - *(s16 *)(p + 0x16) = 0x37; - *(s16 *)(p + 0xE) = 0x6FD6; - p[0xC] = 0xE0; - p[0xD] = 0; - p[0x14] = 0xEF; - p[0x15] = 0; - p[0x1C] = 0xE0; - p[0x1D] = 0xF; - p[0x24] = 0xEF; - p[0x25] = 0xF; - - sa = (s16)a1; - if (sa == 0) { - *(s16 *)L = 0; - } else { - quot = ((s32)sa << 12) / ((s16*)a2)[0]; - ang = (s16)quot; - if (!(D_8018B346 < ang)) goto outer_else; - if (!(ang < D_8018B34C)) goto inner_else; - if (ang < D_8018B348) { *(s16 *)L = D_8018B348; goto done; } - if (D_8018B34A < ang) { *(s16 *)L = D_8018B34A; goto done; } - *(s16 *)L = quot; - goto done; - outer_else: - if (ang < D_8018B344) { *(s16 *)L = D_8018B344; goto done; } - *(s16 *)L = quot; - goto done; - inner_else: - if (D_8018B34E < ang) { *(s16 *)L = D_8018B34E; goto done; } - *(s16 *)L = quot; - done: ; - } - *(s16 *)((u8 *)L + 2) = D_800D45F6; - - __asm__ __volatile__( - "lwc2 $0, 0(%0)\n" - "lwc2 $1, 4(%0)\n" - "nop\n" "nop\n" - "mvmva 1, 0, 0, 0, 0\n" - : : "r"(L) : "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"((u8 *)L + 8) : "memory"); - - if (((s16*)a2)[1] > 0) - *(s32 *)((u8 *)L + 0xC) -= 1; - else - *(s32 *)((u8 *)L + 0xC) += 2; - - *(s16 *)L = 9; - *(s16 *)((u8 *)L + 2) = 9; - __asm__ __volatile__( - "lwc2 $0, 0(%0)\n" - "lwc2 $1, 4(%0)\n" - "nop\n" "nop\n" - "mvmva 1, 0, 0, 3, 0\n" - : : "r"(L) : "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"((u8 *)L + 0x18) : "memory"); - - *(s16 *)(p + 8) = *(volatile s32 *)((u8 *)L + 8); - *(s16 *)(p + 0xA) = *(volatile s32 *)((u8 *)L + 0xC); - *(s16 *)(p + 0x10) = *(volatile s32 *)((u8 *)L + 8) + *(volatile s32 *)((u8 *)L + 0x18); - *(s16 *)(p + 0x12) = *(volatile s32 *)((u8 *)L + 0xC); - *(s16 *)(p + 0x18) = *(volatile s32 *)((u8 *)L + 8); - *(s16 *)(p + 0x1A) = *(volatile s32 *)((u8 *)L + 0xC) + *(volatile s32 *)((u8 *)L + 0x1C); - *(s16 *)(p + 0x20) = *(volatile s32 *)((u8 *)L + 8) + *(volatile s32 *)((u8 *)L + 0x18); - *(s16 *)(p + 0x22) = *(volatile s32 *)((u8 *)L + 0xC) + *(volatile s32 *)((u8 *)L + 0x1C); - - ((P_TAG *)p)->addr = ((P_TAG *)a0)->addr; - ((P_TAG *)a0)->addr = (u32)p; -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8013C98C.c b/src/ov_SC02_003/ov_SC02_003_jr_8013C98C.c deleted file mode 100644 index 3bbdc57b8..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8013C98C.c +++ /dev/null @@ -1,2236 +0,0 @@ -#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. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018AF78[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018AF8C[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018B0CC[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018B124[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018B16C[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018B174[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018B17C[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018B184[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018B12C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018B14C; -extern void func_801321B0(int param_1); -extern int D_8018B15C; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern int D_801E6D38; -extern u16 D_801E6D48; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018B194; /* holds a pointer value (*(u16**)&D_8018B194) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018B1A8[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_8018B1FC; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018B200[])(void); -extern void func_80138C30(void *a0); -extern s32 func_80139BE0(s32); -extern s32 func_80138C60(s32 arg0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 D_80127548[]; -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_801395D4(void * a0); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018B244; -extern u8 D_8018B288; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018B2CC[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018B344, D_8018B346, D_8018B348, D_8018B34A, D_8018B34C, D_8018B34E; -extern u16 D_800D45F6; -/* ==== end §8b carried decl layer ==== */ - - -/* ==== 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(s32 a0); /* 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 ==================================================== */ - -extern void func_80016714(void *a0, s32 a1); -extern s32 D_801E6DB0; -extern s32 D_801269D4; -extern s32 D_801269C8; - -void func_8013C98C(void) { - func_80016714(&D_801E6DB0, 8); - D_801269D4 = 0; - D_801269C8 = 0; -} - - -extern M2C_UNK D_80062BC0; -extern s32 D_801E6DB0; -extern s8 D_801E6DB4; -extern s8 D_801E6DB5; - -void func_8013C9C4(void * arg0) -{ - D_801E6DB0 = arg0; - D_801E6DB4 = 0; - D_801E6DB5 = 0; - if (func_80019198() == 0) { - func_80019064(&D_80062BC0); - } -} - - - - -extern s32 D_801E6DB0; -extern s8 D_801E6DB4; -extern s8 D_801E6DB5; -extern s32 D_801269C8; -extern s32 D_801269D4; -void func_8013CA14(void) -{ - int *base = &D_801E6DB0; - signed char *p; - unsigned char c; - int t; - if ((*base) != 0) - { - c = D_801E6DB5; - if (c == 0) - { - p = (signed char *) ((((unsigned int) ((unsigned char) D_801E6DB4)) * 2) + D_801E6DB0); - t = (int) (*p); - D_801269D4 = t; - D_801269C8 = t; - D_801E6DB5 = (unsigned char) p[1]; - D_801E6DB4 = D_801E6DB4 + 1; - if (D_801E6DB5 == 0) - { - D_801269D4 = 0; - D_801269C8 = 0; - D_801E6DB4 = 0; - *base = 0; - } - } - else - { - D_801E6DB5 = c - 1; - } - } - return; -} - - - -extern s32 D_801E6DD4; -extern s32 D_801E6DC8; -extern s32 D_801E6DCC; -extern s32 D_801E6DD8; - -void func_8013CABC(void) { - D_801E6DD4 = 1; - D_801E6DC8 = 1; - D_801E6DCC = 0; - D_801E6DD8 = 1; -} - - - -extern s32 D_801E6DC8; -extern s32 D_801E6DCC; -extern s32 D_801E6DD0; -extern s32 D_801E6DD4; -extern s32 D_801E6DD8; - -void func_8013CAE8(void) { - D_801E6DC8 = 1; - D_801E6DD4 = 0; - D_801E6DCC = 0; - D_801E6DD0 = -1; - D_801E6DD8 = 0; -} - - - -extern s32 D_801E6DD4; -extern s32 D_801E6DD8; -extern s32 D_801E6E00; -extern s32 D_801E6E04; - -void func_8013CB20(void) -{ - D_801E6E00 = D_801E6DD8; - D_801E6E04 = D_801E6DD4; - D_801E6DD8 = 1; - D_801E6DD4 = 0; -} - - - -extern s32 D_801E6E00; -extern s32 D_801E6E04; -extern s32 D_801E6DD8; -extern s32 D_801E6DD4; - -void func_8013CB5C(void) { - D_801E6DD8 = D_801E6E00; - D_801E6DD4 = D_801E6E04; -} - - - - -extern s16 currentLocationId; -extern s32 D_801E6DD8; -extern s32 D_801E6DD0; -extern s32 D_801E6DD4; -extern s32 D_801E6DC8; -extern s32 D_801E6DCC; - -extern void func_8013DBE4(); -extern void func_8013D9B0(); -extern void func_8013D330(void); -extern void func_8013D178(void); -extern void func_8013CF68(void); - -void func_8013CB84(void) { - - extern u8 D_80078EAF; - extern s32 D_801E6DDC; - extern s32 D_801E6DE8; - extern s32 D_801E6DF0; - extern s32 D_801E8774; - extern s32 D_801E86E0; - extern s32 D_801E86D4[]; - extern u8 D_801E8691; - extern u8 D_801E8866; - extern u8 D_801E876C; - extern Rec12 D_8018B564[]; - extern Rec9 D_8018B52C[]; - extern u8 D_801E8740; /* canonical (§8d); Rec9 block-move via cast-at-use */ - s32 loc = currentLocationId; - s32 s0 = D_80078EAF; - s32 ta, tb, tc, t; - - D_801E8774 = 0; - if (D_801E6DD8 == 0 && s0 != D_801E6DD0) { - ta = D_8018B564[s0].a; - tb = D_8018B564[s0].b; - tc = D_8018B564[s0].c; - D_801E6DD0 = s0; - D_801E8691 = tc; - D_801E8866 = ta; - D_801E876C = tb; - *(Rec9 *)&D_801E8740 = D_8018B52C[s0]; - D_801E6DD4 = 1; - D_801E6DC8 = 1; - if (D_801E6DE8 & 2) { - if (s0 == 4) { D_801E86D4[0] = 0x100; D_801E86E0 = 0x80; } - if (s0 == 0) { D_801E86D4[0] = 0x100; D_801E86E0 = 0; } - } - } - if (D_801E6DD4 != 0) { - t = D_801E6DC8 - 1; - D_801E6DC8 = t; - if (t == 0) { - if (D_801E6DD8 == 0) { - if ((D_801E6DE8 & 2) && s0 == 4) { - if (D_801E6DF0 != 0) func_8013DBE4(6); - else func_8013D9B0(6); - } else { - if (D_801E6DF0 != 0) func_8013DBE4(s0); - else func_8013D9B0(s0); - } - func_8013D330(); - func_8013D178(); - func_8013CF68(); - D_801E6DC8 = 2; - if (D_801E6DD4 != 0) { - if (D_801E6DE8 & 2) { - if (s0 == 4) { - s32 *p = &D_801E86E0; - t = *p - 8; - *p = t; - if (t < 0) *p = 0; - } else if (s0 == 0) { - s32 *p = &D_801E86E0; - t = *p + 0x20; - *p = t; - if (t >= 0x81) *p = 0x80; - } - } - } else if (D_801E6DE8 & 2) { - if (s0 == 4) D_801E86E0 = 0; - if (s0 == 0) D_801E86E0 = 0x80; - } - } else { - if (D_801E6DF0 != 0) func_8013DBE4(5); - else func_8013D9B0(5); - D_801E6DC8 = 1; - } - } - } - D_801E6DDC = 0; - if (loc == 0x1010) { - if (s0 == 3) { - if (D_801E6DD4 != 0) D_801E6DDC = D_801E6DCC; - else D_801E6DDC = 0x1F; - } else if (s0 == 4) { - if (D_801E6DD4 != 0) D_801E6DDC = 0x1F - D_801E6DCC; - else D_801E6DDC = 0; - } - } -} - - -// @class: struct -// @stuck: none — MATCH (63 ins) -// -// Sets up 3 consecutive 16-byte records (at D_800A5E88[0..2]: {s32 a,b,c; u8 d,e,f,g}) -// and registers each via func_80028620(i, &rec[i]). -// -// Keys to the byte match: -// (1) The base pointer is anchored at D_800A5E94 (= &rec0.d, i.e. rec0+0xC) and materialized -// via a NON-volatile inline-asm `la` so gcc treats it as OPAQUE (not a const symbol). -// Opacity is what makes the base-relative stores FOLD into `off($s0)` instead of -// const-folding to a direct `lui $at; sw %lo(sym)`. A `__asm__ __volatile__` re-tie -// barrier (cookbook §21) also launders base, but the barrier pins the schedule and -// pushes the first call's `a0=0` down; the non-volatile `la` avoids the barrier so the -// scheduler still hoists `addu $a0,$zero,$zero` to the top (matches target idx1). -// (2) rec0's inner fields (E8C/E90 ints, E95/E96 bytes) are written as DIRECT globals, not -// base-relative — in the entry block gcc emits them as `lui $at; sw/sb %lo(sym)`. Only -// the address-taken E88 (= call arg base-0xC) and the offset-0 E94 fold via $s0. rec1/rec2 -// fold entirely (base opaque, all offsets small). -// (3) The three source bytes per record are loaded into temps t0/t1/t2 BEFORE the stores so -// gcc keeps them live in three registers ($v1/$a2/$a3) as a group (not one-at-a-time in $v0). -// (4) Statement order matches the target scheduler: rec1 stores b(=7) before the loads; -// rec2 stores b(=-0x12) AFTER the loads (the differing constants drive the scheduler). -#include "common.h" - - -void func_8013CF68() -{ - extern void func_80028620(); - extern u8 D_800A5E94[]; - extern s32 D_800A5E8C; - extern s32 D_800A5E90; - extern u8 D_800A5E95; - extern u8 D_800A5E96; - extern u8 D_801E8688; - extern u8 D_801E8689; - extern u8 D_801E868A; - extern u8 D_801E868B; - extern u8 D_801E868C; - extern u8 D_801E868D; - extern u8 D_801E868E; - extern u8 D_801E868F; - extern u8 D_801E8690; - - u8 t0, t1, t2; - u8 *base; - __asm__("la %0, D_800A5E94" : "=r"(base)); - - *(s32 *)(base - 0xC) = 0; - t0 = D_801E8688; t1 = D_801E8689; t2 = D_801E868A; - D_800A5E8C = 0x1E; - D_800A5E90 = 0; - base[0] = t0; D_800A5E95 = t1; D_800A5E96 = t2; - func_80028620(0, base - 0xC); - - *(s32 *)(base + 4) = 0; *(s32 *)(base + 8) = 7; - t0 = D_801E868B; t1 = D_801E868C; t2 = D_801E868D; - *(s32 *)(base + 0xC) = 0x14; - base[0x10] = t0; base[0x11] = t1; base[0x12] = t2; - func_80028620(1, base + 4); - - *(s32 *)(base + 0x14) = 0; - t0 = D_801E868E; t1 = D_801E868F; t2 = D_801E8690; - *(s32 *)(base + 0x18) = -0x12; - *(s32 *)(base + 0x1C) = 0; - base[0x20] = t0; base[0x21] = t1; base[0x22] = t2; - func_80028620(2, base + 0x14); -} - - - - -// @class: schedule -// @stuck: testing if/else-if with ==2 placed as the else (tail) block - -extern s32 D_801E6DE0; -extern s32 D_801E6DC8; -extern s32 D_801E6DE4; -extern s32 D_801E6DD4; -extern void func_8013D9B0(); - -void func_8013D064(void) -{ - if (D_801E6DE0 != 0) { - if (D_801E6DE0 != 2) { - if (((D_801E6DE0 < 3) && (D_801E6DE0 == 1)) && - (D_801E6DE4 = D_801E6DE4 + 1, 0x23a < D_801E6DE4)) { - D_801E6DC8 = D_801E6DE0; - D_801E6DE0 = 2; - } - } else { - D_801E6DC8 = D_801E6DC8 + -1; - if (D_801E6DC8 == 0) { - D_801E6DC8 = D_801E6DE0; - ((void (*)(s32))func_8013D9B0)(2); - if (D_801E6DD4 == 0) { - D_801E6DE0 = D_801E6DE0 + 1; - } - } - } - } - return; -} - - - - -extern void func_8013D9B0(); -extern s32 D_801E6DD4; - -s32 func_8013D13C(void) { - func_8013D9B0(); - return D_801E6DD4; -} - - - -extern s32 D_801E6DE0; - -void func_8013D164(void) { - D_801E6DE0 = 1; -} - - - -void func_8013D178(void) { - - extern u8 D_801E8688; - extern u8 D_801E8689; - extern u8 D_801E868A; - extern u8 D_801E868B; - extern u8 D_801E868C; - extern u8 D_801E868D; - extern u8 D_801E868E; - extern u8 D_801E868F; - extern u8 D_801E8690; - extern unsigned char D_801E8740, D_801E8741, D_801E8742, D_801E8743, D_801E8744, D_801E8745, D_801E8746, D_801E8747, D_801E8748; - extern unsigned char D_801E8740, D_801E8741, D_801E8742, D_801E8743, D_801E8744, D_801E8745, D_801E8746, D_801E8747, D_801E8748; - extern unsigned char D_801E8740, D_801E8741, D_801E8742, D_801E8743, D_801E8744, D_801E8745, D_801E8746, D_801E8747, D_801E8748; - extern unsigned char D_801E8740, D_801E8741, D_801E8742, D_801E8743, D_801E8744, D_801E8745, D_801E8746, D_801E8747, D_801E8748; - extern unsigned char D_801E8740, D_801E8741, D_801E8742, D_801E8743, D_801E8744, D_801E8745, D_801E8746, D_801E8747, D_801E8748; - extern unsigned char D_801E8740, D_801E8741, D_801E8742, D_801E8743, D_801E8744, D_801E8745, D_801E8746, D_801E8747, D_801E8748; - extern unsigned char D_801E8740, D_801E8741, D_801E8742, D_801E8743, D_801E8744, D_801E8745, D_801E8746, D_801E8747, D_801E8748; - extern unsigned char D_801E8740, D_801E8741, D_801E8742, D_801E8743, D_801E8744, D_801E8745, D_801E8746, D_801E8747, D_801E8748; - extern unsigned char D_801E8740, D_801E8741, D_801E8742, D_801E8743, D_801E8744, D_801E8745, D_801E8746, D_801E8747, D_801E8748; - unsigned char v, t; - register unsigned char *p __asm__("$5"); - - p = &D_801E8688; v = *p; t = D_801E8740; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E8689; v = *p; t = D_801E8741; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E868A; v = *p; t = D_801E8742; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E868B; v = *p; t = D_801E8743; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E868C; v = *p; t = D_801E8744; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E868D; v = *p; t = D_801E8745; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E868E; v = *p; t = D_801E8746; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E868F; v = *p; t = D_801E8747; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801E8690; v = *p; t = D_801E8748; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } -} - - - -// @class: other -// @stuck: none — MATCH (three step-toward-target byte clamps + word store) - -extern u8 D_801E87BE; -extern u8 D_801E8866; -extern u8 D_801E8692; -extern u8 D_801E876C; -extern u8 D_801E8670; -extern u8 D_801E8691; -extern s32 D_801E8774; - -void func_8013D330(void) { - if ((D_801E87BE & 0xff) != D_801E8866) { - D_801E87BE = ((D_801E87BE & 0xff) < D_801E8866) ? (D_801E87BE + 1) : (D_801E87BE - 1); - } - if ((D_801E8692 & 0xff) != D_801E876C) { - D_801E8692 = ((D_801E8692 & 0xff) < D_801E876C) ? (D_801E8692 + 1) : (D_801E8692 - 1); - } - if ((D_801E8670 & 0xff) != D_801E8691) { - D_801E8670 = ((D_801E8670 & 0xff) < D_801E8691) ? (D_801E8670 + 1) : (D_801E8670 - 1); - } - D_801E8774 = 1; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (match_one 90/90); base &D_80078E78 cached in a pointer local so gcc pins it into callee-saved $s1 and hoists the addr to the prologue (live across all 4 calls); direct array access D_80078E78[0x37] instead folds %lo per use (no $s1, frame 0x18 not 0x20) - -extern u8 D_80078E78[]; - -extern void *D_801E6DB8; -extern void *D_801E6DBC; -extern void *D_801E6DC0; -extern s32 D_801E6DE8; -extern s32 D_801E6DEC; -extern s32 D_801E6DF0; -extern s32 D_801E86D4[]; - -extern u8 D_8018B43C[]; -extern u8 D_8018B4E4[]; -extern u8 D_8018B394[]; -extern u8 D_8018B490[]; -extern u8 D_8018B510[]; -extern u8 D_8018B3E8[]; - -extern void func_8013D53C(); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); - -void func_8013D3D4(int param_1, int param_2) -{ - u8 *p = D_80078E78; - - D_801E6DE8 = param_2; - D_801E6DEC = (param_2 >> 2) & 3; - D_801E6DF0 = (param_2 >> 4) & 1; - if (((param_2 >> 2) & 3) == 0) { - D_801E6DB8 = D_8018B43C; - D_801E6DBC = D_8018B4E4; - D_801E6DC0 = D_8018B394; - } else { - D_801E6DB8 = D_8018B490; - D_801E6DBC = D_8018B510; - D_801E6DC0 = D_8018B3E8; - } - func_8013D53C(); - if ((param_2 & 1) != 0) { - if (D_801E6DF0 != 0) { - func_8013DD68(); - } else { - func_8013D8FC(); - } - func_8013CF68(); - if ((D_801E6DE8 & 2) != 0) { - D_801E86D4[0] = 0x140; - D_801E86D4[3] = 0x80; - if (p[0x37] == 4) { - D_801E86D4[0] = 0x140; - D_801E86D4[3] = 0; - } - if (p[0x37] == 0) { - D_801E86D4[0] = 0x140; - D_801E86D4[3] = 0x80; - } - } - } -} - - - - /* 9-byte, align-1 -> unaligned block copy */ - - -extern s32 D_801E6DE8; -extern s32 D_801E6DD0; - - -extern u8 D_801E87BE; -extern u8 D_801E8866; -extern u8 D_801E8692; -extern u8 D_801E876C; -extern u8 D_801E8670; -extern u8 D_801E8691; - - -extern s32 D_801E8774; -extern s32 D_801E6DE4; -extern s32 D_801E6DE0; -extern s32 D_801E6DC8; -extern s32 D_801E6DD4; -extern s32 D_801E6DD8; - -extern void *D_801E6DB8; -extern s32 D_801E6DF0; -extern void *D_801E6DC0; - -void func_8013D53C(void *arg0v) { - - extern Rec9 D_8018B52C[]; - extern Rec12 D_8018B564[]; - extern u8 D_80078EAF; - extern u8 D_801E8740; - extern s32 D_801E6DDC; - Cmd_8013D53C *arg0 = arg0v; - - extern u8 D_8018B568[]; - extern u8 D_8018B56C[]; - extern unsigned char D_801E8688; - extern s16 *D_801E6DC4; - extern s32 D_801E6DF4; - extern s32 D_801E6DF8; - extern s32 D_801E6DFC; - s32 s0v; - s32 t9v; - s32 t8v; - u8 b0, b1, b2; - u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */ - - if (!(D_801E6DE8 & 1)) { - D_801E6DD0 = 1; - } else { - D_801E6DD0 = D_80078EAF; - } - - b0 = ((u8 *)D_8018B564)[D_801E6DD0 * 12]; - D_801E87BE = b0; - D_801E8866 = b0; - b1 = D_8018B568[D_801E6DD0 * 12]; - D_801E8692 = b1; - D_801E876C = b1; - b2 = D_8018B56C[D_801E6DD0 * 12]; - D_801E8670 = b2; - D_801E8691 = b2; - - (*(S9 *)&D_801E8688) = ((S9 *)D_8018B52C)[D_801E6DD0]; - (*(S9 *)&D_801E8740) = *(S9 *)(&D_801E8670 + 0x18); /* same addr as (*(S9 *)&D_801E8688); distinct sym defeats cse, keeps %hi/%lo */ - - D_801E8774 = 1; - D_801E6DE4 = -1; - D_801E6DE0 = 0; - D_801E6DDC = -1; - D_801E6DC8 = 0; - D_801E6DD4 = 0; - D_801E6DD8 = 0; - - if ((D_801E6DE8 & 2) && (D_801E6DD0 == 4)) { - s0v = (*(s32 * *)&D_801E6DB8)[18]; - t9v = (*(s32 * *)&D_801E6DB8)[19]; - t8v = (*(s32 * *)&D_801E6DB8)[20]; - } else { - s32 *p = (s32 *)(D_801E6DD0 * 12 + (s32) (*(s32 * *)&D_801E6DB8)); /* block-local: local-alloc ties sum into mul chain */ - s0v = p[0]; - t9v = p[1]; - t8v = p[2]; - } - - (*(Cmd_8013D53C * *)&D_801E6DC4) = arg0; - if (arg0 != 0) { - if (D_801E6DF0 != 0) { - s32 *p = (s32 *)(D_801E6DD0 * 12 + (s32) (*(s32 * *)&D_801E6DC0)); - D_801E6DF4 = p[0]; - D_801E6DF8 = p[1]; - D_801E6DFC = p[2]; - } else { - while ((arg0->cmd & 0xFFFF) != 0xFF) { - if ((arg0->cmd & 0xFFFF) == 9) { - s32 n; - s32 i; - u16 *src; - u16 *dst; - n = arg0->w * arg0->h; - i = 0; - src = arg0->data; - __asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */ - dst = src + n; - if (n > 0) { - do { - u16 px; - s32 r, g, b, out; - __asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */ - px = *src; - r = ((px & 0x1F) * s0v) / 2560; - g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0; - b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00; - out = r | g | b | (px & 0x8000); - if (out == 0 && px != 0) { - out = 0x8000; - } - *dst = out; - dst++; - i++; - src++; - } while (i < n); - } - } - arg0++; - } - } - } -} - - - - - - - - -extern void func_800599B8(u16*); - -void func_8013D8FC(void) -{ - - extern s16 *D_801E6DC4; - register s16 *psVar3 __asm__("$17"); - register s16 *psVar2 __asm__("$16"); - register s32 c9 __asm__("$19"); - register s32 cff __asm__("$18"); - u16 sVar1; - s16 buf[4]; - - psVar3 = D_801E6DC4; - if (psVar3 != (s16 *)0x0 && (sVar1 = (u16)*psVar3, sVar1 != 0xff)) { - c9 = 9; - cff = 0xff; - psVar2 = psVar3 + 5; - do { - if (sVar1 == c9) { - s32 arg2 = *(s32 *)(psVar2 + 1) + psVar2[-1] * 2; - buf[0] = psVar2[-3]; - buf[1] = psVar2[-2]; - buf[2] = psVar2[-1]; - buf[3] = *psVar2; - ((void (*)(s32, s32))func_800599B8)((s32)buf, arg2); - } - psVar3 = psVar3 + 8; - sVar1 = (u16)*psVar3; - psVar2 = psVar2 + 8; - } while (sVar1 != cff); - } -} - - -extern void *D_801E6DBC; -extern s32 D_801E6DD4; -extern void func_800599B8(u16*); -#define gte_ldIR0z() __asm__ __volatile__("mtc2 $0, $8") -#define gte_ldrgb(p) __asm__ __volatile__("lwc2 $6, 0(%0)" :: "r"(p) : "memory") -#define gte_ldIRGB(p) __asm__ __volatile__("lwc2 $28, 0(%0)" :: "r"(p) : "memory") -#define gte_dpcl() __asm__ __volatile__("nop\n\tnop\n\tdpcl") -#define gte_stORGB(p) __asm__ __volatile__("swc2 $29, 0(%0)" :: "r"(p) : "memory") - -void func_8013D9B0(int param_1) -{ - - extern s16 *D_801E6DC4; - extern s32 D_801E6DDC; - u8 buf[0x20]; - register s32 uVar13 __asm__("$16"); - register u16 *psVar14 __asm__("$17"); - register u16 *psVar15 __asm__("$18"); - register s32 uVar16 __asm__("$19"); - register void *r0 __asm__("$20"); - register u16 *puVar10 __asm__("$11"); - register u16 *puVar9 __asm__("$10"); - register s32 iVar11 __asm__("$13"); - register s32 iVar12 __asm__("$14"); - u16 sVar4; - register u32 uVar5 __asm__("$3"); - register u32 uVar7 __asm__("$6"); - register u32 uVar1 __asm__("$7"); - register u32 uVar6 __asm__("$4"); - register u32 uVar8 __asm__("$8"); - register u32 uVar3 __asm__("$9"); - - psVar15 = (*(u16 * *)&D_801E6DC4); - if (psVar15 != 0) { - sVar4 = *psVar15; - *(u32 *)(buf + 8) = (*(u32 * *)&D_801E6DBC)[param_1]; - D_801E6DDC = -1; - uVar16 = 0; - if (sVar4 != 0xff) { - r0 = buf + 8; - psVar14 = psVar15 + 6; - do { - iVar11 = 0; - if (sVar4 == 9) { - *(s16 *)(buf + 0) = psVar14[-4]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 2) = psVar14[-3]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 4) = psVar14[-2]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 6) = psVar14[-1]; - __asm__ __volatile__("" ::: "memory"); - { - register s32 mw __asm__("$3") = (s32)((s16 *)psVar14)[-2]; - register s32 mh __asm__("$2") = (s32)((s16 *)psVar14)[-1]; - iVar12 = mw * mh; - } - uVar13 = 0; - puVar10 = *(u16 **)psVar14; - { - register s32 boff __asm__("$2") = iVar12 * 2; - register u16 *pi __asm__("$5"); - pi = (u16 *)((s32)puVar10 + boff); - __asm__ __volatile__("" : "=r"(pi) : "0"(pi)); - puVar9 = pi; - } - if (0 < iVar12) { - do { - register u32 pix __asm__("$2"); - register u32 out __asm__("$2"); - u32 result; - *(u32 *)(buf + 0xc) = (u32)*puVar10; - pix = (u32)*puVar9; - uVar5 = pix & 0x1f; - uVar7 = pix & 0x3e0; - uVar1 = pix & 0x7c00; - { - void *p1; - register void *pa __asm__("$2"); - register void *pb __asm__("$12"); - __asm__ __volatile__(""); - p1 = buf + 0xc; - __asm__ __volatile__("" : "=r"(p1) : "0"(p1)); - gte_ldIR0z(); - gte_ldrgb(r0); - gte_ldIRGB(p1); - gte_dpcl(); - pa = buf + 0x10; - __asm__ __volatile__("" : "=r"(pa) : "0"(pa)); - pb = pa; - gte_stORGB(pb); - } - out = *(u32 *)(buf + 0x10); - uVar6 = out & 0x1f; - uVar8 = out & 0x3e0; - uVar3 = out & 0x7c00; - if (uVar5 != uVar6) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar5 < (s32)uVar6) uVar5 = uVar5 + 1; - c = (s32)uVar6 < (s32)uVar5; - if (c) uVar5 = uVar5 - 1; - } - if (uVar7 != uVar8) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar7 < (s32)uVar8) uVar7 = uVar7 + 0x20; - c = (s32)uVar8 < (s32)uVar7; - if (c) uVar7 = uVar7 - 0x20; - } - if (uVar1 != uVar3) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar1 < (s32)uVar3) uVar1 = uVar1 + 0x400; - c = (s32)uVar3 < (s32)uVar1; - if (c) uVar1 = uVar1 - 0x400; - } - result = uVar5 | uVar7 | uVar1 | (*(u32 *)(buf + 0xc) & 0x8000); - if (result == 0 && *(u32 *)(buf + 0xc) != 0) { - result = 0x8000; - } - *puVar9 = (u16)result; - puVar9 = puVar9 + 1; - iVar11 = iVar11 + 1; - puVar10 = puVar10 + 1; - } while (iVar11 < iVar12); - } - if (uVar13 != 0) { - ((void (*)(void *))func_800599B8)(buf); - } - uVar16 = uVar16 | uVar13; - } - psVar15 = psVar15 + 8; - sVar4 = *psVar15; - psVar14 = psVar14 + 8; - } while (sVar4 != 0xff); - } - D_801E6DD4 = uVar16; - } - return; -} - - - -// @class: struct -// @stuck: none — MATCH (match_one 97/97). Two levers: (1) offset-first pointer arith -// `(int*)(param_1*12 + (int)D_801E6DC0)` makes the addu `offset+base` (dest=v0) so x/y/z -// load into a0/a1/a2 and each global loads LATE into v1 (base-first gave addu dest=v1 → -// global hoisted into a0, shifting x/y/z to a1/a2/a3). (2) the clamp must be NESTED -// if/else (slti dup'd inside each <,>= branch), NOT a merged `if(diff<5)` after the -// branch — gcc cross-jumps the identical `G=x` and `G=t` store tails into the two shared -// sites; the merged form emits one slti + unconditional store and diverges. - -extern void *D_801E6DC0; -extern s16 *D_801E6DC4; -extern s32 D_801E6DD4; -extern s32 D_801E6DF4; -extern s32 D_801E6DF8; -extern s32 D_801E6DFC; - -extern void func_8013DD68(void); - -void func_8013DBE4(int param_1) -{ - int *p; - int x, y, z; - int flag; - - if (D_801E6DC4 != 0) { - D_801E6DD4 = 0; - p = (int *)(param_1 * 12 + (int)D_801E6DC0); - x = p[0]; - y = p[1]; - z = p[2]; - flag = 0; - if (D_801E6DF4 != x) { - flag = 1; - if (D_801E6DF4 < x) { - if (x - D_801E6DF4 < 5) { - D_801E6DF4 = x; - } else { - D_801E6DF4 = D_801E6DF4 + 4; - } - } else { - if (D_801E6DF4 - x < 5) { - D_801E6DF4 = x; - } else { - D_801E6DF4 = D_801E6DF4 - 4; - } - } - } - if (D_801E6DF8 != y) { - flag = 1; - if (D_801E6DF8 < y) { - if (y - D_801E6DF8 < 5) { - D_801E6DF8 = y; - } else { - D_801E6DF8 = D_801E6DF8 + 4; - } - } else { - if (D_801E6DF8 - y < 5) { - D_801E6DF8 = y; - } else { - D_801E6DF8 = D_801E6DF8 - 4; - } - } - } - if (D_801E6DFC != z) { - flag = 1; - if (D_801E6DFC < z) { - if (z - D_801E6DFC < 5) { - D_801E6DFC = z; - } else { - D_801E6DFC = D_801E6DFC + 4; - } - } else { - if (D_801E6DFC - z < 5) { - D_801E6DFC = z; - } else { - D_801E6DFC = D_801E6DFC - 4; - } - } - } - if (flag != 0) { - func_8013DD68(); - } - D_801E6DD4 = flag; - } -} - - -// @class: regalloc-order -// @stuck: none — MATCH (187 ins). Levers: struct-assign DRAWENV copy (align via type); pbase local for $s2-relative D_800B9A02; two-biv SPRT loop (q anchored one-above -> gcc re-anchors, no bare-deref); P_TAG_8013DD68 addPrim; single p var coalesces puVar7->puVar15; pins uVar2=$v1,iVar14=$a3,c5=$t3; biv-increment order sets q-init-before-puVar10-init; Buf_8013DD68 0x68 -> frame 0xA0. - - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ - - -#define IDVAL (*(u16 *)(pbase + 0xA3D2)) -#define OTE ((P_TAG_8013DD68 *)(D_800BA0E4 + IDVAL * 0x10)) - -void func_8013DD68() { - extern void SetDrawEnv(void *p, void *env); - extern u16 D_800AF7B8; - extern u8 D_800BA0E4[]; - extern u8 D_8018B5A0[]; - - u32 *p; - u16 uVar1; - u16 *puVar16; - u16 *q; - u16 *puVar10; - register u16 uVar2 __asm__("$3"); - int uVar5; - register int iVar14 __asm__("$7"); - Buf_8013DD68 buf; - u8 *pbase; - u8 *base; - - pbase = D_800AF630; - puVar16 = (*(u16 * *)&D_801E6DC4); - p = (*(u32 * *)&D_800A5E60); - uVar1 = *puVar16; - puVar16 = puVar16 + 1; - base = pbase + (u32)D_800AF7B8 * 0x5C; - buf.env = *(DrawEnv_8013DD68 *)(base + 0x38); - *((u8 *)&buf + 0x18) = 0; - SetDrawEnv(p, &buf); - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - OTE->addr = (u32)p; - p = p + 0x10; - iVar14 = 0; - if (uVar1 != 0) { - register int c5 __asm__("$11") = 5; - puVar10 = (u16 *)((int)p + 0x18); - q = puVar16 + 8; - do { - *(u8 *)((int)puVar10 + -0x15) = c5; - uVar2 = q[-6]; - *(u8 *)((int)puVar10 + -0xd) = 100; - *(u8 *)((int)puVar10 + -0x10) = (u8)(*(int*)&D_801E6DF4); - *(u8 *)((int)puVar10 + -0xf) = (u8)(*(int*)&D_801E6DF8); - uVar5 = (*(int*)&D_801E6DFC); - *(u32 *)((int)puVar10 + -0x14) = uVar2 & 0x9ff | 0xe1000400; - *(u8 *)((int)puVar10 + -0xe) = (u8)uVar5; - *(u16 *)((int)puVar10 + -0xc) = q[-4]; - iVar14 = iVar14 + 1; - *(u16 *)((int)puVar10 + -0xa) = q[-3]; - *(u8 *)((int)puVar10 + -8) = (u8)*puVar16; - uVar2 = q[-7]; - *(u16 *)((int)puVar10 + -6) = 0x7800; - *(u8 *)((int)puVar10 + -7) = (u8)uVar2; - puVar16 = puVar16 + 8; - *(u16 *)((int)puVar10 + -4) = q[-2]; - *(u16 *)((int)puVar10 + -2) = q[-1]; - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - puVar10 = puVar10 + 0xc; - OTE->addr = (u32)p; - p = p + 6; - q = q + 8; - } while (iVar14 < (int)(u32)uVar1); - } - SetDrawEnv(p, D_8018B5A0); - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - OTE->addr = (u32)p; - p = p + 0x10; - (*(u32 * *)&D_800A5E60) = p; - return; -} - - - - -extern s32 D_801E6DDC; - -s32 func_8013E054(void) { - return D_801E6DDC; -} - - -DEFINE_func_8013E064() /* dedup: shared engine-core @0x8013E064 (src/shared) */ - -DEFINE_func_8013E0FC() /* dedup: shared engine-core @0x8013E0FC (src/shared) */ - -DEFINE_func_8013E194() /* dedup: shared engine-core @0x8013E194 (src/shared) */ - -DEFINE_func_8013E22C() /* dedup: shared engine-core @0x8013E22C (src/shared) */ - -DEFINE_func_8013E298() /* dedup: shared engine-core @0x8013E298 (src/shared) */ - -DEFINE_func_8013E2C4() /* dedup: shared engine-core @0x8013E2C4 (src/shared) */ - -DEFINE_func_8013E370() /* dedup: shared engine-core @0x8013E370 (src/shared) */ - -DEFINE_func_8013E410() /* dedup: shared engine-core @0x8013E410 (src/shared) */ - -DEFINE_func_8013E448() /* dedup: shared engine-core @0x8013E448 (src/shared) */ - -DEFINE_func_8013E4B4() /* dedup: shared engine-core @0x8013E4B4 (src/shared) */ - -DEFINE_func_8013E558() /* dedup: shared engine-core @0x8013E558 (src/shared) */ - -DEFINE_func_8013E588() /* dedup: shared engine-core @0x8013E588 (src/shared) */ - - -extern void func_80029444(void); -extern void func_801754A8(void); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_800190AC(void); -extern void func_80141C04(void); - - -void func_8013E5E8(void) -{ - - extern u16 D_8011511E; - extern u16 D_8011511C; - extern unsigned short D_80115112; - extern u16 D_80115116; - extern void (*D_8018BFB0[])(void); - register void (*fp)(void) __asm__("$2"); /* pin fn-ptr to $v0 -> store retires early */ - func_80029444(); - func_801754A8(); - D_8011511E = func_80014ED4(0); - D_8011511C = func_80015018(0); - fp = D_8018BFB0[D_80115112]; - fp(); - func_800190AC(); - func_80141C04(); - D_80115116 += 1; -} - - -DEFINE_func_8013E67C() /* dedup: shared engine-core @0x8013E67C (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (90 ins, relocation-masked) - -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018BF9C; -extern u16 D_80115110; -extern s32 D_80115188; -extern s16 currentLocationId; -extern s16 D_8018BF74; -extern s16 D_8018BF76; -extern unsigned short D_80115112; - -extern void func_8013E83C(void); -extern s32 func_80029504(void); - -void func_8013E6AC(void) { - short i; - - func_8013E83C(); - D_8011511A = 0; - D_80115124 = D_80078EC0; - for (i = 0; i < 8; i++) { - *(s16 *)((char *)&D_80115148 + (i << 1)) = 0; - D_80115140[i] = 0; - } - if (!((u32)func_80029504() < 5 || currentLocationId == 0x302A || currentLocationId == 0x3073)) { - register s32 *ep __asm__("$8"); - register s32 *fp __asm__("$9"); - fp = (s32 *)&D_80115110; - ep = (s32 *)&D_8018BF9C; - for (i = 0; i < 5; i++) { - register s32 *fa __asm__("$6"); - s32 v; - fa = (s32 *)(i * 4 + (s32)fp); - v = ep[i] * 3 >> 2; - fa[0x16] = v; - *(s32 *)((char *)&D_80115188 + (i << 2)) = v; - } - D_8018BF74 = 2; - D_8018BF76 = 1; - { u16 *q = &D_80115112; *q += 1; } - } else { - func_8013E83C(); - D_8011511A = 7; - D_8018BF76 = 0; - D_8018BF74 = 0; - D_80115112 = 6; - } -} - - -DEFINE_func_8013E814() /* dedup: shared engine-core @0x8013E814 (src/shared) */ - -// @class: plumbing -// @stuck: none — MATCH (direct u16 global reads fold to lui/lhu; scheduler hoists the D_8011511A read above the prologue, reproduced by -O2) - -void func_8013E83C() { - extern void func_80141C0C(int); - extern unsigned short D_80115118; - extern unsigned short D_80115128; - extern unsigned short D_8011512E; - extern unsigned int D_80115130; - extern unsigned short D_80115158; - extern unsigned short D_8011515A; - extern unsigned short D_8011515C; - extern unsigned short D_8011515E; - extern unsigned short D_80115162; - extern unsigned short D_80115166; - extern void * D_801E6E10; - extern void * D_801E6E14; - extern unsigned char D_8018BC14; - extern unsigned char D_8018BC2C; - extern unsigned char D_8018BCA0; - extern unsigned char D_8018BCA8; - - - D_80115118 = 0; - D_80115130 = 0; - if (D_8011511A >= 4) { - D_8011511A = D_8011511A - 3; - } - D_80115158 = 0x106; - - if ((((int(*)(int))func_80029178)(0x1c) & 0xFF) == 0) { - D_801E6E10 = &D_8018BC14; - D_801E6E14 = &D_8018BCA0; - } else { - D_801E6E10 = &D_8018BC2C; - D_801E6E14 = &D_8018BCA8; - } - - D_8011515A = 0x104; - D_8011515C = 0x104; - D_8011515E = 0x129; - D_80115162 = 0x103; - D_80115166 = 0x105; - D_80115128 = 0; - D_8011512E = 0; - - if (D_80115110 == 3) { - ((void(*)(int, int))func_8002D4C8)(0x46e, 0); - } else { - func_80141C0C(0); - } -} - - - -// @class: schedule -// @stuck: none — MATCH (63 ins). The idx-32+ residual was a THIRD held base pointer for the -// D_80115188 store: the draft's `((Cell*)&D_80115188)[i].v = v` allocates a pointer, so gcc kept -// three bases (D_80115110/D_8018BF9C/D_80115188) and buried the branch-delay `sll` (i<<16 carry) -// under the extra store. Switching to the sibling func_8013E6AC's relocation-masked form -// `*(s32*)((char*)&D_80115188 + (i<<2))` recomputes that address via per-iteration %hi/%lo, leaving -// only TWO held pointers (fp=&D_80115110 -> $t0, ep=&D_8018BF9C -> $a3) and freeing the delay slot -// to carry `i<<16` in $a0 exactly as the target does. Head (idx 0-31) already matched; i naturally -// lands in $a2 from the goto-loop delay slots, driving the fp/ep/fa=$8/$7/$5 alloc with no pins. - -void func_8013E958() -{ - extern void func_8014AA28(void); - extern s32 func_800D0488(s32); - extern void func_80141C0C(s32); - - - s16 *p = &(*(s16*)&D_80115124); - s16 i; - s32 v; - s16 m; - - D_800B9A15 = 0; - func_80139954(); - if (D_80078EC0 != *p) { - func_8014AA28(); - if ((D_80078EC0 & 0x7F) != 0) { - m = D_80078EC0 & 0x7F; - *p = m; - if (m == 0 || func_800D0488(m) == 0) - goto loop; - } - } - *p = 0; -loop: - for (i = 0; i < 5; i++) { - s32 *q = &((s32 *)&D_80115110)[i]; - v = ((s32 *)&D_8018BF9C)[i] >> 6; - q[0x16] = v; - *(s32 *)((char *)&D_80115188 + (i << 2)) = v; - } - func_80141C0C(7); - (*(u16*)&D_80115112) = 4; -} - - - -DEFINE_func_8013EA54() /* dedup: shared engine-core @0x8013EA54 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (sVar2 pinned to $v0 forces in-place sll/sra sign-ext scratch) - - -extern s32 func_80141C50(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern void func_8013FAF8(s16 a0, s16 a1); -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_801376E8(int a0, int a1); -extern void func_80137B80(void); -extern unsigned char *func_80141CA4(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8013E958(void); - -extern short D_800B9A02; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511A; -extern u16 D_8011511E; -extern short D_80115128; -extern unsigned short D_80115112; -extern s16 D_8011512A; -extern s32 D_80115130; -extern unsigned char D_8018BF78; - -void func_8013EB7C(void) { - s32 sp10[2]; - short sVar1; - register short sVar2 __asm__("$2"); - s32 a0v; - s32 iVar4; - - if ((s16)func_80141C50() == 0) { - D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; - sVar1 = ((short (*)(void))func_8013F350)(); - if (D_8011511A >= 4) { - func_8013FAF8((s16)D_8011511A, (s16)(D_8011511A + 1)); - } - func_8013FAF8(0, 5); - if (D_8011511A == 5) { - sVar2 = ((short (*)(s32))func_8014168C)(2); - a0v = 2; - } else { - sVar2 = ((short (*)(s32))func_8014168C)((s16)D_8011511A); - a0v = (s16)D_8011511A; - } - iVar4 = func_8014032C(a0v, sVar2); - if (iVar4 != 0) { - s32 *p130 = &D_80115130; - if (iVar4 != *p130) { - *p130 = iVar4; - func_80139954(); - func_801376E8(iVar4, (s32)&(*(u8 *)&D_8018BF78)); - } - } - func_80137B80(); - if ((D_8011511E & 0x10) != 0 && D_8011511A < 5 && sVar1 == 0) { - (*(s16 *)&D_80115128) = 0; - func_8002D4C8(0x466, 0); - if (D_8011511A != 4) { - func_801376E8((s32)((s32 (*)(void))func_80141CA4)(), (s32)&(*(u8 *)&D_8018BF78)); - } - (*(unsigned short *)&D_80115112) -= 1; - } else { - if ((D_8011511E & 0x800) != 0 || D_8011512A != 0) { - func_8013E958(); - } - } - } - (void)sp10; -} - - -DEFINE_func_8013ED6C() /* dedup: shared engine-core @0x8013ED6C (src/shared) */ - -extern short D_800B9A02; -extern unsigned short D_80115112; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern s16 D_8018BF74; -extern s16 D_8018BF76; -extern unsigned char D_8018BF78; -extern void func_801376E8(int a0, int a1); -extern void func_8013FAF8(s16 a0, s16 a1); -extern unsigned char *func_80141CA4(void); - -// @class: struct -// @stuck: none — MATCH (94 ins, relocation-masked). Keys: (1) §18 array-of-STRUCT fold -// `typedef struct{s32 f0;} E4; extern E4 arr[]; arr[i].f0` defeats gcc's base-CSE/loop-hoist so each -// global-array access stays a per-access `lui %hi; addu idx; lw/sw %lo(sym)($at)` (a plain `s32 arr[]; -// arr[i]` HOISTS the base into a reg → wrong). (2) §21 global-RMW: the conditional `D_8018BF76` bump and -// the `D_80115112` increment keep the address in ONE reg → access via a pointer var, not the bare global. -// (3) the 2nd-loop base `q = p-8` (=&D_80115118 kept in $s0 across the calls) is declared INSIDE the loop -// so loop.c hoists it to the preheader slot AFTER `i=0` (an explicit pre-loop `q=` emits it BEFORE i=0, -// +2 off). (4) dead `s32 sp10[2];(void)sp10;` reserves the extra 8 frame bytes (0x28, not 0x20). -// Conflict-safe externs: asm-alias `aD80115188` (file-scope decl is scalar `s32 D_80115188`); `(u16)` -// cast on the `s16 D_8018BF74` read for the `lhu`; `D_80115168` is undeclared elsewhere in the TU. - - - - -s32 func_8013EE10() { - extern E4 aD80115188[] __asm__("D_80115188"); - extern E4 D_80115168[]; - extern unsigned short D_80115118; - - short i; - u16 *p; - u16 old; - s16 *r; - u16 *c; - s32 sp10[2]; - - D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; - func_8013FAF8(0, 5); - for (i = 0; i < 5; i++) { - s32 t = D_80115168[i].f0 * 3 >> 2; - aD80115188[i].f0 = t; - D_80115168[i].f0 = D_80115168[i].f0 - t; - } - r = &D_8018BF76; - if (*r < 3) { - *r = *r + 1; - } - D_8018BF74 = (u16)D_8018BF74 + 2; - p = &D_80115118; - old = *p; - *p = old + 1; - if (old >= 5) { - ((void (*)(int, unsigned char *))func_801376E8)((int)func_80141CA4(), &D_8018BF78); - for (i = 0; i < 5; i++) { - s32 *q = (s32 *)((char *)p - 8); - *(s32 *)((char *)&q[i] + 0x78) = 0; - D_80115168[i].f0 = 0; - } - c = &D_80115112; - *c += 1; - } - (void)sp10; -} - - - - - - - - - - - -extern s16 D_800B9A02; -extern s32 D_801151D0; -extern E4 aD80115188[] __asm__("D_80115188"); -extern u16 D_80115124; -extern u16 D_80115112; -extern s16 D_8018BF76; -extern s16 D_8018BF74; - -extern void func_8013FAF8(s16 a0, s16 a1); -extern s32 func_800D0488(s16 a0); -extern void func_800D2624(void); - -void func_8013EF88(void) -{ - - extern u16 D_80115118; - extern E4 D_80115168[]; - extern u16 D_80115114; - u16 *p = &D_80115118; - u16 old = *p; - short i; - - if (old != 0) { - u16 nw = old - 1; - *p = nw; - if (nw != 0) { - D_801151D0 = *(s32 *)((char *)&D_80115118 + 0xB0 + (u16)D_800B9A02 * 4); - func_8013FAF8(0, 5); - for (i = 0; i < 5; i++) { - s32 t = aD80115188[i].f0 * 3; - aD80115188[i].f0 = t; - D_80115168[i].f0 = D_80115168[i].f0 + t; - } - if (D_80115118 < 3) { - u16 *s = &(*(u16 *)&D_8018BF76); - *s -= 1; - } - { - u16 *w = &(*(u16 *)&D_8018BF74); - *w -= 2; - if ((s16)*w < 0) { - *w = 0; - } - } - } - } - - { - s16 *pv = &(*(s16 *)&D_80115124); - if (*pv != 0) { - if (func_800D0488(*pv) == 0) return; - *pv = 0; - } - } - - if (D_80115118 == 0) { - if (D_80115114 == ((u16)D_800B9A02 ^ 1)) { - func_800D2624(); - } else { - D_80115112 += 1; - } - } -} - - - -// @class: struct -// @stuck: none — MATCH expected (u16* base materialization for read+write, %lo-folded single-access globals) - - -extern unsigned short D_80115118; -extern unsigned short D_80115112; -extern u16 D_80115110; -extern unsigned char D_8018BF78; - -extern unsigned char *func_80141CA4(void); -extern void func_801376E8(int a0, int a1); - -void func_8013F138(void) { - u16 *p = &D_80115118; - *p += 0x10; - if ((u16)*p >= 0x40) { - if (D_80115110 == 0) { - ((void (*)(int, unsigned char *))func_801376E8)((int)func_80141CA4(), &D_8018BF78); - } - D_80115112 += 1; - } -} - - -DEFINE_func_8013F1BC() /* dedup: shared engine-core @0x8013F1BC (src/shared) */ - -DEFINE_func_8013F244() /* dedup: shared engine-core @0x8013F244 (src/shared) */ - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8013F350.c b/src/ov_SC02_003/ov_SC02_003_jr_8013F350.c deleted file mode 100644 index 1462a62eb..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8013F350.c +++ /dev/null @@ -1,1353 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018AF78[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018AF8C[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018B0CC[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018B124[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018B16C[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018B174[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018B17C[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018B184[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018B12C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018B14C; -extern void func_801321B0(int param_1); -extern int D_8018B15C; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern int D_801E6D38; -extern u16 D_801E6D48; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018B194; /* holds a pointer value (*(u16**)&D_8018B194) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018B1A8[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_8018B1FC; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018B200[])(void); -extern void func_80138C30(void *a0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018B244; -extern u8 D_8018B288; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018B2CC[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018B344, D_8018B346, D_8018B348, D_8018B34A, D_8018B34C, D_8018B34E; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* 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 */ -extern s32 D_801E6DB0; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801E6DB4; -extern s8 D_801E6DB5; -extern void func_8013C9C4(void * arg0); -extern s32 D_801E6DD4; -extern s32 D_801E6DC8; -extern s32 D_801E6DCC; -extern s32 D_801E6DD8; -extern void func_8013CABC(void); -extern s32 D_801E6DD0; -extern void func_8013CAE8(void); -extern s32 D_801E6E00; -extern s32 D_801E6E04; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801E6DE0; -extern s32 D_801E6DE4; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern void func_8013D178(void); -extern u8 D_801E87BE; -extern u8 D_801E8866; -extern u8 D_801E8692; -extern u8 D_801E876C; -extern u8 D_801E8670; -extern u8 D_801E8691; -extern s32 D_801E8774; -extern void func_8013D330(void); -extern void *D_801E6DB8; -extern void *D_801E6DBC; -extern void *D_801E6DC0; -extern s32 D_801E6DE8; -extern s32 D_801E6DEC; -extern s32 D_801E6DF0; -extern s32 D_801E86D4[]; -extern u8 D_8018B43C[]; -extern u8 D_8018B4E4[]; -extern u8 D_8018B394[]; -extern u8 D_8018B490[]; -extern u8 D_8018B510[]; -extern u8 D_8018B3E8[]; -extern void func_8013D53C(); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801E6DC4; -extern s32 D_801E6DF4; -extern s32 D_801E6DF8; -extern s32 D_801E6DFC; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801E6DDC; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_80141C04(void); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018BF9C; -extern s32 D_80115188; -extern s16 D_8018BF74; -extern s16 D_8018BF76; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018BF78; -extern void func_8013EB7C(void); -extern s32 func_8013F350(void); /* §30#2 widened (discarding caller) */ -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -/* ==== end §8b carried decl layer ==== */ - -// @class: regalloc-order -// @stuck: none — MATCH (490 ins, match_one, canonical-typed) -// -// func_8013F350 — 490-ins GIANT (menu/pad state machine, double jump table -// jtbl_801D8860 [8] + jtbl_801D8880 [5]). Load-bearing levers, do NOT "clean up": -// -// 1. `register s32 off __asm__("$4")` — THE crack. gcc otherwise emits pmax -// before pcur, letting pcur sink into the beq delay slot (target has a nop -// there) and losing the off/pmax coalesce into $a0. Pinning off cost 0 insns -// and took the diff 162 -> 13. (`bb` shares $4; live ranges are disjoint.) -// 2. `register u16 *pd __asm__("$5")` + the "=r"/"0" self-barrier — without the -// barrier gcc const-propagates &D_8011511C away and %lo-folds every access -// (target holds the base: lhu 0($a1) / lhu 4($a1) / sh 4($a1)). The barrier -// emits zero code; it only hides the pointer's constant value from cse. -// NOTE: `ps` (&D_8011511A) must NOT get the same barrier — it regressed. -// 3. `case 0/2/3: break;` in the inner switch are NOT dead — 5 case nodes is -// what pushes gcc past CASE_VALUES_THRESHOLD into a jump table (jtbl_801D8880) -// instead of a compare chain (worth 18 instructions). -// 4. case 5 tests (flags & 0x10) with `!= 0 -> goto tail6`, case 6 with -// `== 0 -> break`. The OPPOSITE polarity is what stops gcc cross-jumping the -// two tails into one (§5a class, solved by source shape, not an asm barrier). -// 5. `if (d > 0) A; else if (d < 0) A;` — a single `d > 0 || d < 0` is folded to -// `d != 0` by the FRONT END (andi 0xffff; beqz). Two ifs keep bgtz+bgez; gcc's -// cross-jump then re-merges the twin store blocks, which is the target's shape. -// 6. 0x1000/0x8000/0x2000 blocks are written in-place (`pcur[0] = pcur[0] - 1`) -// -> one register + a load-delay nop. The 0x4000 block needs the `b` temp -// (its ==3 arm restores the original), so it keeps two registers and no nop. -// 7. `s16 d` (not s32 + <<16>>16): the wide form pushed the frame 0x30 -> 0x38. -// 8. `pad` is u16 (its andi 0xFFFF is real) but `st` must stay u16 AND be used -// only for the pointer math / `st == 2` — the D_80115140 index re-reads -// D_8011511A, which is what keeps st free of a masking andi. -// -// Canonical-reconciled (§17a-1) and re-verified MATCH: D_8011512E keeps the TU's -// `u16` canonical with `*(s16*)&` at the read sites (target needs lh), and -// func_8014168C keeps the canonical s16(s16) decl with s32(s32) call-site casts. -// Def sig is s32(void); engine_core.h canon is `void func_8013F350(void)` and the -// callers already cast (`((short (*)(void))func_8013F350)()`) -> def-side reconcile. - -extern u16 D_80115110; -extern u16 D_8011511A; -extern u16 D_8011511C; -extern u16 D_8011511E; -extern u16 D_80115120; -extern u16 D_80115122; -extern s16 D_80115128; -extern s16 D_8011512A; -extern u16 D_8011512E; -extern u8 D_80115140[]; -extern s16 D_8011514C; -extern s16 D_8011514E; -extern u8 D_80115152; -extern u8 D_80115158[]; /* macro-canonical (§8e) */ -extern u8 D_8011515C; /* macro-canonical (§8e) */ -extern u8 D_8018BC98[]; -extern u8 D_8018BCB0[]; -extern u16 D_8018BBB4[]; - -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); -extern s16 func_8014168C(s16 a0); -extern void func_8014AA04(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_801415C0(s32 a0, s32 a1); -extern void func_80141C0C(s32 a0); -extern s32 func_80140608(s32 a0); -extern void func_801407F4(void); -extern s32 func_801416D4(s16); /* macro-canonical (§8e) */ - -s32 func_8013F350(void) { - register u16 *pd __asm__("$5") = &D_8011511C; - u16 *ps; - u16 *pf; - u16 *pg; - u16 pad; - u16 st; - u8 *pcur; - u8 *pmax; - u8 *p2e; - u8 *p3e; - register s32 off __asm__("$4"); - s16 i; - s32 r; - s16 rs; - s16 d; - u8 b; - register u8 bb __asm__("$4"); - u8 m; - s32 chg; - - __asm__ __volatile__("" : "=r"(pd) : "0"(pd)); - pad = *pd; - chg = 0; - if (pad != 0) { - if (pad == pd[2]) { - D_80115122 = D_80115122 - 1; - if (D_80115122 == 0) { - D_8011511E = pad & 0xF000; - D_80115122 = 3; - } - } else { - pd[2] = pad; - D_80115122 = 6; - } - } else { - D_80115120 = 0; - D_80115122 = 0xC; - } - - i = 0; - do { - if ((func_80029178(D_8018BC98[i]) & 0xFF) == 0) { - break; - } - i = i + 1; - } while (i < 6); - *(u16 *)D_80115158 = i | 0x100; - - switch (D_8011511A) { /* jtbl_801D8860 */ - case 0: - r = ((s32 (*)(s32))func_8014168C)(0); - rs = (s16)r; - if ((func_80029178(D_8018BC98[rs]) & 0xFF) != 0 && (D_8011511E & 0x40) != 0) { - func_8014AA04((r + 1) & 0xFF); - if (rs != 0) { - func_8002D4C8(0x461, 0); - } else { - func_8002D4C8(0x460, 0); - } - } - break; - case 1: - if ((D_8011511E & 0x40) != 0) { - D_80115128 = ((s32 (*)(s32))func_8014168C)(1) + 1; - D_8011511A = 2; - func_80141C0C(3); - return 1; - } - if (D_80115128 != 4) { - break; - } - goto tail7; - case 2: - switch (D_80115128) { /* jtbl_801D8880 */ - case 0: - break; - case 1: - r = ((s32 (*)(s32))func_8014168C)(2); - pf = &D_8011511E; - if ((*pf & 0x40) != 0) { - if ((*(s16 *)&D_8011512E) == 0) { - if ((func_800291B4(D_8018BCB0[(s16)r]) & 0xFF) != 0 && (*pf & 0x40) != 0) { - D_8011511A = 5; - *(s16 *)&D_80115152 = 0; - func_80141C0C(3); - return 1; - } - func_80141C0C(5); - } else { - func_801415C0((s16)r, (*(s16 *)&D_8011512E) & 0xF); - D_8011512E = 0; - func_80141C0C(3); - return 1; - } - } else if ((*pf & 0x20) != 0) { - if ((*(s16 *)&D_8011512E) == 0) { - D_8011512E = r | 0x8000; - } else { - func_801415C0((s16)r, (*(s16 *)&D_8011512E) & 0xF); - D_8011512E = 0; - } - func_80141C0C(3); - } - break; - case 4: - if ((D_8011511E & 0xA000) != 0) { - chg = func_80140608(2); - } - func_801407F4(); - break; - case 2: - break; - case 3: - break; - } - if (D_80115128 != 0 && (D_8011511E & 0x10) != 0 && D_80115110 != 1) { - D_8011511E = D_8011511E & 0xFFEF; - D_8011511A = 1; - D_8011512E = 0; - func_80141C0C(6); - } - break; - case 3: - if (D_8011514E == 0 && (D_8011511E & 0x40) != 0) { - D_8011511A = D_8011511A + 3; - func_80141C0C(3); - return 1; - } - break; - case 5: - if ((D_8011511E & 0x40) != 0) { - rs = (s16)((s32 (*)(s32))func_801416D4)(D_80115152); - if (rs != 0) { - if (rs < 0) { - D_8011512A = 1; - } else { - D_8011511A = D_8011511A - 3; - func_80141C0C(4); - return 1; - } - } - break; - } - if ((D_8011511E & 0x10) != 0) { - goto tail6; - } - break; - case 6: - if ((D_8011511E & 0x10) == 0) { - break; - } - tail6: - pg = &D_8011511E; - *pg = *pg & 0xFFEF; - D_8011511A = D_8011511A - 3; - func_80141C0C(6); - return 1; - case 7: - if ((D_8011511E & 0xA000) != 0) { - chg = func_80140608(7); - } - tail7: - func_801407F4(); - break; - } - - ps = &D_8011511A; - - st = *ps; - p2e = (u8 *)ps + 0x2E; - p3e = (u8 *)ps + 0x3E; - off = st << 1; - pcur = p2e + off; - pmax = p3e + off; - if (st == 2 || 1 < pmax[0]) { - if ((D_8011511E & 0x1000) != 0) { - pcur[0] = pcur[0] - 1; - chg = 1; - if (0x7F < pcur[0]) { - if (D_8011511A != 3) { - pcur[0] = pmax[0] - 1; - } else { - pcur[0] = 0; - chg = 0; - } - } - } - if ((D_8011511E & 0x4000) != 0) { - b = pcur[0]; - pcur[0] = b + 1; - chg = 1; - if (pmax[0] <= (u8)(b + 1)) { - if (D_8011511A != 3) { - pcur[0] = 0; - } else { - pcur[0] = b; - chg = 0; - } - } - } - if (D_8011511A == 2 && D_80115128 == 1) { - if ((D_8011511E & 0x8000) != 0) { - pcur[1] = pcur[1] - 1; - chg = 1; - if (0x7F < pcur[1]) { - pcur[1] = pmax[1] - 1; - } - } - if ((D_8011511E & 0x2000) != 0) { - pcur[1] = pcur[1] + 1; - chg = 1; - if (pmax[1] <= pcur[1]) { - pcur[1] = 0; - } - } - } else { - bb = pcur[0]; - m = D_80115140[D_8011511A]; - d = (s8)bb - (s8)m; - if (d > 0) { - D_80115140[D_8011511A] = bb; - } else if (d < 0) { - D_80115140[D_8011511A] = bb; - } - } - if (D_8011511A == 1) { - D_80115128 = ((s32 (*)(s32))func_8014168C)(1) + 1; - if ((D_8011511E & 0x5000) != 0) { - D_8011514C = 0; - } - } - *(u16 *)&D_8011515C = D_8018BBB4[D_80115128]; - if ((chg << 0x10) != 0) { - func_80141C0C(1); - } - } - return 0; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (312/312, relocation-masked) - - - - - - - - - - -extern void func_80140E6C(void); -extern void func_80140F00(void); -extern s32 *func_80140958(s32 *, s32, s32); -extern int func_80141100(int); -extern s16 func_8014168C(s16); -extern s32 func_8013FFD8(s16, s32, s32 *); -extern void func_80024054(void *a0, void *a1); -extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); -extern s32 *func_800D29F8(s32, s32, void *, s32, s32); -extern int func_80137D08(int arg0, int arg1, short arg2); -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); - -extern s32 D_801151D0; -extern u16 D_8011511A; -extern short D_80115128; -extern u8 D_80078EC0; -extern short D_800B9A02; -extern s16 D_8018BF74; -extern s16 D_8018BF76; - -void func_8013FAF8(s16 arg0, s16 arg1) { - - extern Hw4 D_8011516A[]; - extern Rec20 D_800AE7B8[]; - extern Blk60 D_8018B5FC[]; - extern Blk20 D_8018B8FC[]; - extern Prim4 D_8018B9FC[]; - extern Prim4 D_8018BA6C[]; - extern Prim4 *D_8018BB60[]; - extern s32 D_8018BB80[]; - extern u8 D_8018BBA0; - u8 sp18[72]; - s32 sp60[2]; - s32 *ot; - s16 i; - s16 j; - s32 flag; - s32 addr; - Prim4 *p; - s32 r; - s32 t; - s16 *pp; - s32 flag2; - register s32 flag3 __asm__("$18"); - - func_80140E6C(); - func_80140F00(); - ot = func_80140958((s32 *)D_801151D0, arg0, arg1); - if (D_8011511A < 6) { - ot = (s32 *)func_80141100((int)ot); - } - for (i = arg0; i < arg1; i++) { - if (i == D_8011511A || i == 2 || i == 4) { - flag = 0; - } else { - flag = 0xFF; - } - p = &D_8018B9FC[i]; - if (i != 5) { - if (i == 2) { - addr = ((s32 *)&D_8018BBA0)[*(s16 *)&D_80115128]; - } else { - addr = D_8018BB80[i]; - } - } else { - addr = func_8013FFD8(2, func_8014168C(2), sp60); - } - func_80024054(addr, sp18); - ot = func_800D2650(ot, sp18, (s16)(p->f0 + (u16)D_8011516A[i].x), p->f2, 1, - flag != 0 ? 0x585858 : 0x808080); - p = D_8018BB60[i]; - j = 0; - if (p != 0) { - if (i == 2 && *(s16 *)&D_80115128 != 0) { - p = D_8018BA6C; - } - flag2 = flag; - for (;;) { - r = func_8013FFD8(i, j++, sp60); - if (r == 0) { - break; - } - if (r < 0) { - func_80024054(r, sp18); - t = 1; - if (i == 0 && (D_80078EC0 & 0x7F) == j) { - t = 0xB6; - } - if (flag2 != 0) { - sp60[0] += -0x282828; - } - ot = func_800D2650(ot, sp18, (s16)(p->f0 + (u16)D_8011516A[i].x), p->f2, t, sp60[0]); - } - p++; - } - } - func_8005A600((s32)ot, 0, 0, 0x15, 0); - flag3 = flag; - *ot = 0x2000000; - *ot = (D_800AE7B8[*(u16 *)&D_800B9A02].f4[2] & 0xFFFFFF) | 0x2000000; - D_800AE7B8[*(u16 *)&D_800B9A02].f4[2] = - (D_800AE7B8[*(u16 *)&D_800B9A02].f4[2] & 0xFF000000) | ((u32)ot & 0xFFFFFF); - ot = func_800D29F8(flag3, - func_800D27DC(flag3 != 0, ot + 10, &D_8018B5FC[i], 8, D_8011516A[i].x), - &D_8018B8FC[i], 2, D_8011516A[i].x); - } - pp = &D_8018BF74; - if (*pp == 0xE) { - ot = func_80137D08(ot, &D_800AE7B8[*(u16 *)&D_800B9A02], 2); - } - if (*pp != 0 && D_8018BF76 != 0) { - ot = func_8013AB54(ot, D_800AE7B8[*(u16 *)&D_800B9A02].f4 + 2, (s32)(pp - 2), 0x8000); - } - D_801151D0 = (s32)ot; -} - - - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8013FFD8.c b/src/ov_SC02_003/ov_SC02_003_jr_8013FFD8.c deleted file mode 100644 index d7617c8cd..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8013FFD8.c +++ /dev/null @@ -1,1161 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018AF78[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018AF8C[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018B0CC[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018B124[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018B16C[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018B174[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018B17C[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018B184[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018B12C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018B14C; -extern void func_801321B0(int param_1); -extern int D_8018B15C; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern int D_801E6D38; -extern u16 D_801E6D48; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018B194; /* holds a pointer value (*(u16**)&D_8018B194) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018B1A8[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_8018B1FC; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018B200[])(void); -extern void func_80138C30(void *a0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018B244; -extern u8 D_8018B288; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018B2CC[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018B344, D_8018B346, D_8018B348, D_8018B34A, D_8018B34C, D_8018B34E; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* 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 */ -extern s32 D_801E6DB0; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801E6DB4; -extern s8 D_801E6DB5; -extern void func_8013C9C4(void * arg0); -extern s32 D_801E6DD4; -extern s32 D_801E6DC8; -extern s32 D_801E6DCC; -extern s32 D_801E6DD8; -extern void func_8013CABC(void); -extern s32 D_801E6DD0; -extern void func_8013CAE8(void); -extern s32 D_801E6E00; -extern s32 D_801E6E04; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801E6DE0; -extern s32 D_801E6DE4; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern u8 D_801E87BE; -extern u8 D_801E8866; -extern u8 D_801E8692; -extern u8 D_801E876C; -extern u8 D_801E8670; -extern u8 D_801E8691; -extern s32 D_801E8774; -extern void func_8013D330(void); -extern void *D_801E6DB8; -extern void *D_801E6DBC; -extern void *D_801E6DC0; -extern s32 D_801E6DE8; -extern s32 D_801E6DEC; -extern s32 D_801E6DF0; -extern s32 D_801E86D4[]; -extern u8 D_8018B43C[]; -extern u8 D_8018B4E4[]; -extern u8 D_8018B394[]; -extern u8 D_8018B490[]; -extern u8 D_8018B510[]; -extern u8 D_8018B3E8[]; -extern void func_8013D53C(); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801E6DC4; -extern s32 D_801E6DF4; -extern s32 D_801E6DF8; -extern s32 D_801E6DFC; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801E6DDC; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018BF9C; -extern s32 D_80115188; -extern s16 D_8018BF74; -extern s16 D_8018BF76; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018BF78; -extern void func_8013EB7C(void); -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -/* ==== end §8b carried decl layer ==== */ - -/* func_8013FFD8 — 213 ins, double jump-table, per-location family (134 members). */ - -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); - -extern short D_80115128; - -s32 func_8013FFD8(s16 arg0, s32 arg1, s32 *arg2) { - - extern u8 D_8018BC98; - extern u8 D_8018BCB0[]; - extern u8 D_8018BCBC[]; - extern u8 D_8018BCC3[]; - extern u8 D_8018BCC4[]; - extern s32 D_8018BBEC[]; - extern s32 D_8018BC04[]; - extern u8 D_8018BBC0; - extern s32 D_8018BBD4[]; - extern u16 *D_8018BC44[]; - extern s32 D_8018BC48[]; - extern u8 D_8018BC54; - extern s32 D_8010F3C4[]; - extern s32 D_8010EDE8[]; - extern u8 D_80115143; - extern void * D_801E6E14; - extern void * D_801E6E10; - s32 ret; - - *arg2 = 0x808080; - ret = 0; - - switch (arg0) { /* jtbl_801D8898 */ - case 0: { - s16 s0 = (s16) arg1; - if (s0 < 6) { - if ((((s32 (*)(u8))func_80029178)(((u8 *)&D_8018BC98)[s0]) & 0xFF) == 0) { - return 1; - } - ret = D_8018BBEC[s0]; - } - break; - } - case 1: { - s16 v1 = (s16) arg1; - if (v1 < 4) { - ret = D_8018BC04[v1]; - } - break; - } - case 2: - switch ((*(s16 *)&D_80115128)) { /* jtbl_801D88B8 */ - case 0: { - s16 v1 = (s16) arg1; - if (v1 < 5) { - ret = ((s32 *)&D_8018BBC0)[v1]; - } - break; - } - case 1: { - s16 v1 = (s16) arg1; - if (v1 < 0xC) { - s32 v3 = ((s32 (*)(u8, s32))func_800291B4)(D_8018BCB0[v1], arg1) & 0xFF; - if (v3 == 0) { - return 1; - } - ret = D_8010EDE8[v3 * 3]; - } - break; - } - case 2: { - s16 s0 = (s16) arg1; - if (s0 < 6) { - if ((((s32 (*)(u8))func_80029178)((*(u8 * *)&D_801E6E14)[s0]) & 0xFF) == 0) { - return 1; - } - ret = (*(s32 * *)&D_801E6E10)[s0]; - } - break; - } - case 3: { - s16 s0 = (s16) arg1; - if (s0 < 6) { - if ((((s32 (*)(u8))func_80029178)(D_8018BCBC[s0]) & 0xFF) == 0) { - return 1; - } - ret = D_8018BBD4[s0]; - } - break; - } - case 4: { - s16 v1 = (s16) arg1; - if (v1 < 5) { - ret = ((s32 *)&D_8018BC54)[v1]; - } - break; - } - } - break; - case 3: { - s16 t = (s16) arg1; - if (t <= 0) { - s16 s0 = t + D_80115143; - if (s0 != 0) { - if ((((s32 (*)(u8, s32))func_800291B4)(D_8018BCC3[s0], arg1) & 0xFF) == 0) { - *arg2 = 0x804040; - } - ret = D_8010F3C4[s0]; - } else { - ret = (*(s32 *)&D_8018BC44); - } - } - break; - } - case 5: { - s16 v1 = (s16) arg1; - if (v1 < 3) { - ret = D_8018BC48[v1]; - } - break; - } - case 6: { - s16 s0 = (s16) arg1; - if (s0 < 0x28) { - s32 idx; - if ((((s32 (*)(u8, s32))func_800291B4)(D_8018BCC4[s0], arg1) & 0xFF) == 0) { - *arg2 = 0x804040; - } - idx = s0 + 1; - ret = D_8010F3C4[idx]; - } - break; - } - case 7: { - s16 v1 = (s16) arg1; - if (v1 < 5) { - ret = ((s32 *)&D_8018BC54)[v1]; - } - break; - } - } - return ret; -} - - -extern short D_80115128; -extern u8 D_8018BC98[]; -extern u8 D_8018BCB0[]; -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); - - - - -/* indexed data arrays (overlay) */ - - -/* address-return symbols (main RAM) */ - -s32 func_8014032C(s32 param_1, s32 param_2) { - extern int (*D_8018BFE0[])(void); - extern int (*D_8018BFD0[])(void); - extern void * D_8018BCEC[]; - extern void * D_8018BD1C[]; - extern void * D_8018BD2C[]; - extern void * D_8018BD04[]; - extern u8 D_8018BCBC[]; - extern void * D_8018BD44[]; - extern void * D_8018BD5C[]; - extern void * D_8018BD70[]; - extern u8 D_8018BCC3[]; - extern u8 * D_801E6E14; - extern u8 D_801117EC[]; - extern u8 D_801117B4[]; - extern u8 D_80112BC8[]; - extern u8 D_80112B58[]; - extern u8 D_80112BA8[]; - extern u8 D_80112B90[]; - - - int cVar1; - unsigned int uVar3; - void *result; - - result = D_801117EC; - switch (((short)param_1)) { - case 0: - if (((s32(*)(s32))func_80029178)(D_8018BC98[((short)param_2)]) & 0xFF) { - result = D_8018BCEC[((short)param_2)]; - } - break; - case 1: - result = D_8018BD1C[((short)param_2)]; - break; - case 2: - switch ((*(s16*)&D_80115128)) { - case 0: - if (D_8018BFE0[((short)param_2)]() == 0) { - ((short)param_2) = 5; - } else if (D_8018BFD0[((short)param_2)]() != 0) { - ((short)param_2) = 4; - } - result = D_8018BD2C[((short)param_2)]; - break; - case 1: - goto case5; - case 2: - if (((s32(*)(s32))func_80029178)(D_801E6E14[((short)param_2)]) & 0xFF) { - if (((short)param_2) == 5 && (((s32(*)(s32))func_80029178)(0x1C) & 0xFF)) { - result = D_801117B4; - } else { - result = D_8018BD04[((short)param_2)]; - } - } - break; - case 3: - if (((s32(*)(s32))func_80029178)(D_8018BCBC[((short)param_2)]) & 0xFF) { - result = D_8018BD44[((short)param_2)]; - } - break; - case 4: - result = D_8018BD5C[((short)param_2)]; - break; - } - break; - case 5: - case5: - uVar3 = ((s32(*)(s32))func_800291B4)(D_8018BCB0[((short)param_2)]) & 0xFF; - if (uVar3 != 0) { - result = D_8018BD70[uVar3]; - } - break; - case 3: - if (((short)param_2) != 0) { - cVar1 = ((s32(*)(s32))func_800291B4)(D_8018BCC3[((short)param_2)]) & 0xFF; - if (cVar1 == 0) { - result = D_80112B58; - } else { - result = D_80112BA8; - if (cVar1 == 1) { - result = D_80112B90; - } - } - } else { - result = D_80112BC8; - } - break; - case 6: - case 7: - default: - result = 0; - break; - } - return result; -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80140608.c b/src/ov_SC02_003/ov_SC02_003_jr_80140608.c deleted file mode 100644 index a94444170..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80140608.c +++ /dev/null @@ -1,2528 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801E87C0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018AF78[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018AF8C[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018B0CC[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018B124[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018B16C[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018B174[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018B17C[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018B184[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018B12C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018B14C; -extern void func_801321B0(int param_1); -extern int D_8018B15C; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern int D_801E6D38; -extern u16 D_801E6D48; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018B194; /* holds a pointer value (*(u16**)&D_8018B194) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018B1A8[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_8018B1FC; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018B200[])(void); -extern void func_80138C30(void *a0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018B244; -extern u8 D_8018B288; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018B2CC[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018B344, D_8018B346, D_8018B348, D_8018B34A, D_8018B34C, D_8018B34E; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* 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 */ -extern s32 D_801E6DB0; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801E6DB4; -extern s8 D_801E6DB5; -extern void func_8013C9C4(void * arg0); -extern s32 D_801E6DD4; -extern s32 D_801E6DC8; -extern s32 D_801E6DCC; -extern s32 D_801E6DD8; -extern void func_8013CABC(void); -extern s32 D_801E6DD0; -extern void func_8013CAE8(void); -extern s32 D_801E6E00; -extern s32 D_801E6E04; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801E6DE0; -extern s32 D_801E6DE4; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern u8 D_801E87BE; -extern u8 D_801E8866; -extern u8 D_801E8692; -extern u8 D_801E876C; -extern u8 D_801E8670; -extern u8 D_801E8691; -extern s32 D_801E8774; -extern void func_8013D330(void); -extern void *D_801E6DB8; -extern void *D_801E6DBC; -extern void *D_801E6DC0; -extern s32 D_801E6DE8; -extern s32 D_801E6DEC; -extern s32 D_801E6DF0; -extern s32 D_801E86D4[]; -extern u8 D_8018B43C[]; -extern u8 D_8018B4E4[]; -extern u8 D_8018B394[]; -extern u8 D_8018B490[]; -extern u8 D_8018B510[]; -extern u8 D_8018B3E8[]; -extern void func_8013D53C(); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801E6DC4; -extern s32 D_801E6DF4; -extern s32 D_801E6DF8; -extern s32 D_801E6DFC; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801E6DDC; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018BF9C; -extern s32 D_80115188; -extern s16 D_8018BF74; -extern s16 D_8018BF76; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018BF78; -extern void func_8013EB7C(void); -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); -extern s32 func_8013FFD8(s16 arg0, s32 arg1, s32 *arg2); -/* ==== end §8b carried decl layer ==== */ - -#include "common.h" - -extern u8 D_80115148[]; -extern u16 D_8011511E; -extern u8 D_80062BDC; - -extern s32 func_80028D58(void); -extern void func_80028D78(s32 a0); -extern void func_80019064(void *a0); -extern s32 func_80028DE0(void); -extern void func_80028E00(s32 a0); -extern s32 func_80028FBC(void); -extern void func_80028FDC(s32 a0); -extern s32 func_80029000(void); -extern void func_80029020(s32 a0); -extern s32 func_80028D9C(void); -extern void func_80028DBC(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); - -s32 func_80140608(s32 a0) { - s16 t; - register s32 iVar2 __asm__("$2"); - register s32 zr __asm__("$0"); - s32 uVar3; - u32 uVar4; - s32 uVar5 = 1; - - switch (D_80115148[(s16)a0 * 2]) { - case 0: - t = func_80028D58() ^ 1; - func_80028D78(t); - if (t != 0) { - return uVar5; - } - func_80019064(&D_80062BDC); - return uVar5; - case 1: - func_80028E00((s16)(func_80028DE0() ^ 1)); - return uVar5; - case 2: - iVar2 = func_80028FBC(); - if (D_8011511E & 0x8000) { - iVar2 = iVar2 - 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 < 0) { - uVar4 = 0; - uVar5 = 0; - } - } else { - iVar2 = iVar2 + 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 >= 8) { - uVar4 = 7; - uVar5 = 0; - } - } - func_80028FDC((s16)uVar4); - func_8002D4C8(0x21, uVar4 & 0xFFFF); - goto ret; - case 3: - iVar2 = func_80029000(); - if (D_8011511E & 0x8000) { - iVar2 = iVar2 - 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 < 0) { - uVar4 = 0; - uVar5 = 0; - } - } else { - iVar2 = iVar2 + 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 >= 8) { - uVar4 = 7; - uVar5 = 0; - } - } - func_80029020((s16)uVar4); - func_8002D4C8(0x22, uVar4 & 0xFFFF); - goto ret; - case 4: - t = func_80028D9C() ^ 1; - func_80028DBC(t); - uVar3 = 0xB; - if (t == 0) { - uVar3 = 0xC; - } - func_8002D4C8(uVar3, 0); - goto ret; - default: - goto ret; - } -ret: - return uVar5; -} - - - -// @class: iv-combine -// @stuck: none — MATCH (89 ins). Sequential struct fields fed from a running source -// pointer compile to fixed offsets when written base[0..n]; the target advances -// the pointer, so use post-increment `*p++` for EVERY field (gcc drops the dead -// final increment, yielding the "increment N-2 then offset 0/2" tail). - -extern u8 *D_8018BC54; -extern u8 *D_8018BC58; -extern u8 *D_8018BC5C; -extern u8 *D_8018BC60; -extern u8 *D_8018BC64; -extern u16 *D_8018BC68[]; -extern u16 *D_8018BC70[]; -extern u16 *D_8018BC90[]; - -extern s32 func_80028D58(void); -extern s32 func_80028DE0(void); -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); - -void func_801407F4(void) -{ - u8 *puVar1; - s32 iVar2; - u16 *puVar3; - - puVar1 = D_8018BC54; - iVar2 = func_80028D58(); - puVar3 = D_8018BC68[iVar2]; - *(s16 *)(puVar1 + 0x16) = *puVar3++; - *(s16 *)(puVar1 + 0x18) = *puVar3++; - *(s16 *)(puVar1 + 0x1a) = *puVar3++; - - puVar1 = D_8018BC58; - iVar2 = func_80028DE0(); - puVar3 = D_8018BC68[iVar2]; - *(s16 *)(puVar1 + 0x16) = *puVar3++; - *(s16 *)(puVar1 + 0x18) = *puVar3++; - *(s16 *)(puVar1 + 0x1a) = *puVar3++; - - iVar2 = func_80028FBC(); - *(s16 *)(D_8018BC5C + 0x18) = *D_8018BC70[iVar2]; - iVar2 = func_80029000(); - *(s16 *)(D_8018BC60 + 0x18) = *D_8018BC70[iVar2]; - - puVar1 = D_8018BC64; - iVar2 = func_80028D9C(); - puVar3 = D_8018BC90[iVar2]; - *(s16 *)(puVar1 + 0x12) = *puVar3++; - *(s16 *)(puVar1 + 0x14) = *puVar3++; - *(s16 *)(puVar1 + 0x16) = *puVar3++; - *(s16 *)(puVar1 + 0x18) = *puVar3++; - *(s16 *)(puVar1 + 0x1a) = *puVar3++; - *(s16 *)(puVar1 + 0x1c) = *puVar3++; -} - - - - - - - - - - - - - - - - - - - - - -extern s16 func_8014168C(s16); -extern s32 *func_80140D68(s32 *, Prim4 *, s32, s32, s32); -/* func_80140958 -- MATCH (260 ins), verified by - * python3 tools/match_one.py func_80140958 --c .run/near6/wave23/func_80140958.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077 - * - * Three levers took the seed from 6 -> 0 (see the numbered notes in the inner block): - * [L1] `m == i` (not `m == 3`) -- keeps b[0] a RUNTIME value; `m == 3` let gcc - * const-fold it and materialise `li a3,3` / `li t3,12` instead of - * `addu a3,v1,zero` / `sll t3,v1,2`. - * [L2] one dead `__asm__ volatile("" :: "r"(j))` -- +1 weighted REG_N_REFS on j so - * global.c:594 allocno_compare ranks j above k (j -> $a2, k -> $a3). - * [L3] `t3v = m * 4` as an EXPLICIT preheader statement (instead of letting loop.c - * hoist D_8011516A[m]'s index) -- gives it a LUID *below* the three constant - * assignments, which is what puts `move a3,v1 / sll t3,v1,2` ahead of them in - * sched1's backward LUID tie-break. - */ -s32 *func_80140958(ot, i, n) -s32 *ot; -s16 i; -s16 n; -{ - - extern s16 D_8011514E; - extern u8 D_80115158[]; - extern Hw4 D_8011516A[]; - extern Prim4 D_8018BA6C[]; - extern Prim4 *D_8018BB60[]; - extern u8 D_80115143; - extern Prim4 D_8018BA1C[]; - extern s16 D_8018BF7C[]; - extern s16 D_8018BF8C[]; - extern u16 D_8018BA9C; - extern u16 D_8018BA9E; - extern Env_80140958 D_800AE7BC[]; - Prim4 *p; - s16 t; - s32 c3; -register u16 *a __asm__("$20"); -register u16 *b __asm__("$21"); -register u16 *c __asm__("$23"); -register u16 *e __asm__("$22"); -register u16 *pb __asm__("$10"); -register u32 m24 __asm__("$8"); -register u32 mhi __asm__("$9"); -register s32 eight __asm__("$2"); - if (i < n) - { - c3 = 3; - a = &D_80115110; - b = a + 5; - c = a + 3; - e = &D_8018BA9E; - do - { - if (((a[0] == 0) && (a[1] != c3)) && (a[1] < 6)) - { - if (i == a[5]) - { - ot = func_80140D68(ot, &D_8018BA1C[i], i, D_8018BF7C[a[3] & 7], 0); - } - } - else - { - p = D_8018BB60[i]; - if (((p != 0) && (i == b[0])) && (i != 6)) - { - if ((i == 2) && ((*((s16 *) (b + 7))) != 0)) - { - p = D_8018BA6C; - } - if (i != c3) - { - t = ((s32 (*)(s16)) func_8014168C)(i) * 2; - } - else - { - t = ((*((u8 *) (&D_8011514E))) - D_80115143) * 2; - } - ot = func_80140D68(ot, p, i, D_8018BF8C[c[0] & 7], t); - if (((i == 2) && ((*((s16 *) (c + 9))) == 1)) && ((*((s16 *) (c + 12))) != 0)) - { - ot = func_80140D68(ot, p, 2, 8, ((*((s16 *) (c + 12))) & 0xF) * 2); - } - } - } - if (i == c3) - { - s32 m = b[0]; - /* [L1] compare against `i`, NOT against the literal 3. */ - if ((m == i) && ((b[-2] & 8) != 0)) - { - s16 j; - s32 k; - s32 t3v; - u8 *q = ((u8 *) ot) + 0x14; - s16 y; - j = 0; - k = m; - t3v = m * 4; /* [L3] explicit, must sit before the 3 constants */ - pb = (u16 *) (&D_800B9A02); - m24 = 0xFFFFFF; - mhi = 0xFF000000; - for (; j < 2; j++) - { - if (j == 0) - { - if (D_80115140[k] == 0) - { - continue; - } - q[-7] = 0x30; - y = (*e) - 4; - } - else - { - s32 k2 = k * 2; - if ((((s8 *) D_80115158)[k2] - ((s8 *) D_80115140)[k]) < 2) - { - continue; - } - q[-7] = 0x38; - y = (*e) + 3; - } - *((s16 *) (q - 10)) = y; -__asm__("" ::: "memory"); - *((u32 *) ot) = 0x4000000; - q[-8] = 0x78; - *((u32 *) (q - 0x10)) = 0x64808080; - *((s16 *) (q - 6)) = 0x4056; - *((s16 *) (q - 0xC)) = (D_8018BA9C + ((u16) *((u16 *) (((u8 *) D_8011516A) + t3v)))) + 0x4A; - eight = 8; - *((s16 *) (q - 2)) = eight; - *((s16 *) (q - 4)) = eight; - *((u32 *) ot) = ((*((u32 *) ot)) & mhi) | (D_800AE7BC[*pb].ot[2] & m24); - { -register u32 *op __asm__("$4"); - op = D_800AE7BC[*pb].ot; - op[2] = (op[2] & mhi) | (((u32) ot) & m24); - } - q += 0x14; - ot += 5; - __asm__ volatile("" :: "r"(j)); /* [L2] zero code, +1 ref on j */ - } - - } - } - i = i + 1; - } - while (i < n); - } - return ot; -} - - - - - -s32 *func_80140D68(out, src, idx, dx, ofs) - s32 *out; - Prim4 *src; /* conformed to the fleet prototype; used only as (s32)src */ - s16 idx; - s32 dx; - s16 ofs; -{ - - extern Hw4 D_8011516A[]; - /* §94 TYPE-CARRY: this typedef and its extern MUST be BLOCK-scope. extract_unit carries - file-scope externs and #defines into each remapped sibling (Phase-27 _carry_macros) but - NOT file-scope typedefs — so a file-scope Env_800D29F8 is silently dropped from every - sibling and the family sweeps 0/137. Body-local typedefs DO survive (PTag_80140D68 below - is the proof), so it lives here. */ - /* 0x14 stride */ - extern Env_800D29F8 D_800AE7BC[]; - - - register u32 mhi __asm__("$8"); - s16 *q; - s32 a; - - out[0] = 0x04000000; - *((u8 *)out + 0xC) = 0x70; - *((u8 *)out + 0xD) = 0x10; - mhi = 0x64808080; - out[1] = mhi; - *(u16 *)((u8 *)out + 0xE) = 0x4056; - - dx -= 0xD; - q = (s16 *)(ofs * 2 + (s32)src); - a = (u16)q[0] + (u16)D_8011516A[idx].x; - a += dx; - *(s16 *)((u8 *)out + 0x8) = a; - *(s16 *)((u8 *)out + 0xA) = q[1] - 4; - *(s16 *)((u8 *)out + 0x12) = 0x10; - *(s16 *)((u8 *)out + 0x10) = 0x10; - - ((PTag_80140D68 *)out)->addr = ((PTag_80140D68 *)((D_800AE7BC[*(volatile u16 *)&D_800B9A02].ot) + 2))->addr; - ((PTag_80140D68 *)((D_800AE7BC[*(volatile u16 *)&D_800B9A02].ot) + 2))->addr = (u32)out; - - return out + 5; -} - - - -// @class: struct -// @stuck: none — MATCH - -extern unsigned char D_80078E7F; -extern unsigned char D_80078E7E; -extern unsigned char D_80078E7D; -extern M2C_UNK D_8018BB90; - -extern int func_800D2CA8(int, int); -extern void func_800D2D10(int, int, void *, int); - -void func_80140E6C(void) { - void *puVar1; - unsigned int uVar2; - unsigned int uVar3; - unsigned int uVar4; - - puVar1 = (*(void * *)&D_8018BB90); - uVar2 = func_800D2CA8(D_80078E7F, 0x18); - uVar3 = func_800D2CA8(D_80078E7E, 0xc); - uVar4 = func_800D2CA8(D_80078E7D, 0); - func_800D2D10(uVar2 | 0xb00000 | uVar3 | 0xb00 | uVar4, 8, puVar1, 0); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (128/128 ins, match_one confirmed) - -extern short D_80115128; -extern u8 D_8018BBA0; -extern char *D_8018BBC0; -extern char *D_8018BBC4; -extern char *D_8018BBC8; -extern char *D_8018BBCC; -extern char *D_8018BBD0; - -extern int func_80029FE4(void); -extern int func_800D2CA8(int, int); -extern void func_800D2D10(int, int, void *, int); -extern char *func_8002AAB4(void); -extern char *strcpy(char *, const char *); -extern int func_8002A26C(void); -extern int func_8002A2B0(void); -extern int func_8002A4B8(void); -extern s32 func_8002A4FC(s32 a0); -extern int func_8002A998(void); -extern int func_8002A9DC(void); -extern int func_8002A728(void); -extern int func_8002A76C(void); -extern int func_80029FD4(void); - -void func_80140F00(void) { - char *p; - int r; - - if (D_80115128 == 0) { - p = (*(char * *)&D_8018BBA0); - r = func_800D2CA8(func_80029FE4() + 1, 0x18); - func_800D2D10(r, 2, p + 4, 1); - strcpy(p + 0xA, func_8002AAB4()); - - p = D_8018BBC0; - r = func_800D2CA8(func_8002A26C() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(func_8002A2B0(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018BBC4; - r = func_800D2CA8(func_8002A4B8() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(((int (*)(void))func_8002A4FC)(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018BBC8; - r = func_800D2CA8(func_8002A998() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(func_8002A9DC(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018BBCC; - r = func_800D2CA8(func_8002A728() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(func_8002A76C(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018BBD0; - r = func_800D2CA8(func_80029FD4(), 4); - func_800D2D10(r, 7, p + 0x18, -1); - } -} - - - -// @class: other -// @stuck: none — MATCH - -extern short D_80115128; -extern unsigned short D_80115172; -extern unsigned short D_8018BA5A; -extern unsigned short D_8018BA5E; -extern unsigned short D_8018BA62; -extern unsigned short D_8018BA66; - -extern s32 func_8002A1B4(void); -extern short func_8002A28C(void); -extern short func_8002A27C(void); -extern s32 func_8002A400(void); -extern short func_8002A4D8(void); -extern short func_8002A4C8(void); -extern s32 func_8002A8E0(void); -extern short func_8002A9B8(void); -extern short func_8002A9A8(void); -extern s32 func_8002A670(void); -extern short func_8002A748(void); -extern short func_8002A738(void); -extern int func_801412A8(int, int, int, int, int, int); - -int func_80141100(int param_1) -{ - short sVar1; - int iVar7; - - if (D_80115128 == 0) { - iVar7 = D_80115172 + 0x31; - sVar1 = D_8018BA5A; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A1B4)(), func_8002A28C(), func_8002A27C(), (short)iVar7, (int)sVar1); - sVar1 = D_8018BA5E; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A400)(), func_8002A4D8(), func_8002A4C8(), (short)iVar7, (int)sVar1); - sVar1 = D_8018BA62; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A8E0)(), func_8002A9B8(), func_8002A9A8(), (short)iVar7, (int)sVar1); - sVar1 = D_8018BA66; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A670)(), func_8002A748(), func_8002A738(), (short)iVar7, (int)sVar1); - } - return param_1; -} - - -#define addPrim_1412A8(ot, p) (setaddr_1412A8(p, getaddr_1412A8(ot)), setaddr_1412A8(ot, p)) -/* §37/§124 def-side asm-label alias (the S40 class lever). The TU declares - * extern int func_801412A8(int, int, int, int, int, int); (ov_SC01_077.c:2720) - * and its callers USE the return value (`param_1 = func_801412A8(...)`, :2730-:2736), while the - * byte-true definition is `Prim_1412A8 *(Prim_1412A8 *, int, int, int, u16, u16)`. The u16 params - * cannot agree with an `int` prototype (C default argument promotion) and the `()` no-prototype - * escape is illegal precisely when a param promotes -- so NEITHER side can move. Giving the - * DEFINITION a private C identifier bound to the emitted symbol by a GNU asm label decouples - * them: the TU's declaration continues to govern the CALL SITES (their codegen is untouched -- - * which is what match_one could not see, since it only compiles this function), and the - * definition keeps its byte-true signature. Zero blast radius. */ -DEFINE_func_801412A8() /* dedup: shared engine-core @0x801412A8 (src/shared) */ - - -DEFINE_func_801415C0() /* dedup: shared engine-core @0x801415C0 (src/shared) */ - -DEFINE_func_8014168C() /* dedup: shared engine-core @0x8014168C (src/shared) */ - -DEFINE_func_801416D4() /* dedup: shared engine-core @0x801416D4 (src/shared) */ - - -extern unsigned short D_80115112; -extern void (*D_8018BFF0[])(void); - -void func_80141788(void) -{ - D_8018BFF0[D_80115112](); -} - - -DEFINE_func_801417C4() /* dedup: shared engine-core @0x801417C4 (src/shared) */ - -DEFINE_func_801417F8() /* dedup: shared engine-core @0x801417F8 (src/shared) */ - - -extern void func_801754A8(void); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_80141C04(void); - -extern u16 D_8011511E; -extern unsigned short D_80115112; - -void func_80141874(void) { - - extern u16 D_8011511C; - extern u16 D_80115116; - extern void (*D_8018BFFC[])(void); - register void (*fp)(void) __asm__("$2"); /* pin fn-ptr to $v0 → store retires early */ - func_801754A8(); - D_8011511E = func_80014ED4(0); - D_8011511C = func_80015018(0); - fp = D_8018BFFC[D_80115112]; - fp(); - func_80141C04(); - D_80115116 += 1; -} - - - - - - - - - -extern u16 D_80115110; -extern u16 D_80115112; -extern unsigned short D_80115118; -extern volatile u16 D_8011511A; -extern s16 D_80115128; -extern s32 D_80115130; -extern s16 D_8018BF74; -extern s16 D_8018BF76; - -extern void func_800D24A0(s32 a0); -extern s32 func_80029178(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80141C0C(s32 a0); - -void func_801418F8(void) -{ - - extern s16 D_8011512E; - extern u8 D_80115158[]; - extern s16 D_8011515A; - extern u8 D_8011515C; - extern s16 D_8011515E; - extern s16 D_80115162; - extern s16 D_80115166; - extern u8 D_8018BC14; - extern u8 D_8018BC2C; - extern u8 D_8018BCA0; - extern u8 D_8018BCA8; - extern void *D_801E6E10; - extern void *D_801E6E14; - u16 t; - - func_800D24A0(1); - D_8011511A = 2; - t = D_8011511A; - (*(s16 *)&D_80115118) = 0; - D_80115130 = 0; - if (t >= 4) { - D_8011511A = t - 3; - } - (*(s16 *)D_80115158) = 0x106; - if ((func_80029178(0x1C) & 0xFF) == 0) { - D_801E6E10 = &D_8018BC14; - D_801E6E14 = &D_8018BCA0; - } else { - D_801E6E10 = &D_8018BC2C; - D_801E6E14 = &D_8018BCA8; - } - D_8011515A = 0x104; - (*(s16 *)&D_8011515C) = 0x104; - D_8011515E = 0x129; - D_80115162 = 0x103; - D_80115166 = 0x105; - D_80115128 = 0; - D_8011512E = 0; - if (D_80115110 == 3) { - func_8002D4C8(0x46E, 0); - } else { - func_80141C0C(0); - } - D_80115128 = 1; - D_8018BF74 = 0xE; - D_8018BF76 = 3; - D_80115112 = D_80115112 + 1; -} - - -/* func_80141A60 @ 0x80141A60 (0x130, 76 ins) -- ov_SC01_000 shared engine fn. - * - * ((s32 *)D_801151C8)[]: word (s32) table indexed by (u16)(*(u16 *)&D_800B9A02) -> D_801151D0. - * D_8011511A: u16, unsigned compare vs 4 (sltiu). - * (*(u8 *)&D_8011514C)/4D/5C: u8 fields; a1 = (s16)((*(u8 *)&D_8011514C) + D_8011514D*D_8011515C). - * D_80115130: cached s32 handle. D_8018BF78: address-taken arg to func_801376E8. - * D_80115116: s16 <- 0xfff8 (ori, positive const). D_80115112: u16 counter. - */ - -extern s16 D_800B9A02; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -/* D_8011511A: this TU declares it volatile at file scope -> a direct read reloads on every - * use; the cast-at-use *(u16 *)&D_8011511A strips volatile so gcc CSEs the three reads into - * one load (matches the single-load target). */ -extern s16 D_8011514C; -extern s32 D_80115130; -extern u8 D_8018BF78; -extern u16 D_80115112; - -extern s32 func_8013F350(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern s32 func_8014032C(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_801376E8(int a0, int a1); -extern void func_80137B80(void); -extern s32 func_800D0EC4(void); - -void func_80141A60(void) -{ - - extern u8 D_8011514D; - extern u8 D_8011515C; - extern u16 D_80115116; - s32 iVar1; - s32 pad[2]; - (void)&pad; /* §36#3 frame-pad induction: force frame 0x20 (vs 0x18) */ - - D_801151D0 = ((s32 *)D_801151C8)[(*(u16 *)&D_800B9A02)]; - func_8013F350(); - if ((*(u16 *)&D_8011511A) >= 4) { - func_8013FAF8((*(u16 *)&D_8011511A), (*(u16 *)&D_8011511A) + 1); - } - func_8013FAF8(2, 3); - iVar1 = func_8014032C(2, (s16)((*(u8 *)&D_8011514C) + D_8011514D * D_8011515C)); - if (iVar1 != 0 && iVar1 != D_80115130) { - D_80115130 = iVar1; - func_80139954(); - func_801376E8(iVar1, (int)&D_8018BF78); - } - func_80137B80(); - iVar1 = func_800D0EC4(); - if (iVar1 != 0) { - D_80115116 = 0xfff8; - D_80115112 = D_80115112 + 1; - } -} - - - - - - - - - - - - - - - - - - -DEFINE_func_80141B90() /* dedup: shared engine-core @0x80141B90 (src/shared) */ - -DEFINE_func_80141C04() /* dedup: shared engine-core @0x80141C04 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (indexed u16 global: (s16)param_1*2 + D_80115110, *2 array stride) - -extern u16 D_80115110; -extern u8 D_8018BF50; -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80141C0C(s32 param_1) -{ - func_8002D4C8(*(u16 *)(&D_8018BF50 + (((param_1 << 16) >> 15) + (u32)D_80115110) * 2), 0); -} - - -DEFINE_func_80141C50() /* dedup: shared engine-core @0x80141C50 (src/shared) */ - -DEFINE_func_80141CA4() /* dedup: shared engine-core @0x80141CA4 (src/shared) */ - -DEFINE_func_80142414() /* dedup: shared engine-core @0x80142414 (src/shared) */ - -DEFINE_func_80142454() /* dedup: shared engine-core @0x80142454 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (58 ins). STRUCT branch reconstruction + 3 levers: (1) §3-T4 branch-polarity -// invert in the ==0 arm so the func_8012C218 cold path sinks to the tail; (2) *(volatile int*) on -// the two extra param_1[0x32] reloads to defeat gcc CSE (gcc reloads via register reuse, not a store); -// (3) param_1[0x7e] pinned to $v1 (register __asm__("$3")) + an input-only scheduling barrier -// __asm__ __volatile__("" : : "r"(a)) on the 0xA read so the pinned load is anchored AFTER it in the -// ==0 arm (matches the load2-reused-as-$v1 ordering). - -extern void func_8012C218(void *a0); - -void func_801424E4(short *param_1) { - - extern void (*D_8018C020[])(void); - short sVar1; - int iVar2; - register unsigned short t __asm__("$3"); - - (*D_8018C020[(unsigned short)param_1[1]])(); - if (*(unsigned short *)param_1 != 0) { - if (param_1[0x38] != 0) { - iVar2 = *(int *)(param_1 + 0x32); - if (iVar2 == 0) { - return; - } - *(int *)(param_1 + 2) = *(int *)(iVar2 + 4); - t = (unsigned short)param_1[0x7e]; - sVar1 = *(unsigned short *)(iVar2 + 10) + t; - param_1[5] = sVar1; - *(int *)(param_1 + 6) = *(int *)(iVar2 + 0xc); - } else { - unsigned short a; - iVar2 = *(int *)(param_1 + 0x32); - if ((iVar2 != 0) && (*(short *)(iVar2 + 0x36) == param_1[0x7f])) { - *(int *)(param_1 + 2) = *(int *)(iVar2 + 4); - a = *(unsigned short *)(*(volatile int *)(param_1 + 0x32) + 10); - __asm__ __volatile__("" : : "r"(a)); - t = (unsigned short)param_1[0x7e]; - sVar1 = a + t; - iVar2 = *(volatile int *)(param_1 + 0x32); - param_1[5] = sVar1; - *(int *)(param_1 + 6) = *(int *)(iVar2 + 0xc); - return; - } - ((void (*)(short *))func_8012C218)(param_1); - } - } - return; -} - - - -extern void (*D_8018C030[])(void); - -void func_801425CC(void *a0) { - D_8018C030[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: schedule -// @stuck: none — MATCH expected; CAE4 block fallthrough, AD50 block goto-tail - -extern void func_8012C1B8(void); -extern s32 func_8012C1DC(s32 a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012CAE4(void *a0); -extern s32 func_8012AD50(void *a0); -extern s32 D_8018C014; - -void func_80142608(s32 param_1) -{ - register s32 iVar1 __asm__("$16"); - - if (*(short *)(param_1 + 0x70) != 0) { - iVar1 = ((s32 (*)(void))func_8012C1B8)(); - } else { - iVar1 = func_8012C1DC(*(s32 *)(param_1 + 100)); - } - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 != 0) { - func_8001CA1C(iVar1, (s32)&D_8018C014); - *(short *)(iVar1 + 0x1a) = 0x200; - *(short *)(iVar1 + 0x18) = 0x200; - *(short *)(param_1 + 0xfc) = 0x40; - if (*(short *)(param_1 + 0x70) != 0) { - goto ad50; - } - if (*(s32 *)(param_1 + 100) != 0) { - *(short *)(param_1 + 0xfe) = *(short *)(*(s32 *)(param_1 + 100) + 0x36); - goto ad50; - } - } - ((void (*)(s32))func_8012CAE4)(param_1); - return; -ad50: - *(short *)(param_1 + 0x98) = 0; - *(s32 *)(param_1 + 0x90) = 0; - ((void (*)(s32))func_8012AD50)(param_1); -} - - -DEFINE_func_801426D4() /* dedup: shared engine-core @0x801426D4 (src/shared) */ - -DEFINE_func_80142740() /* dedup: shared engine-core @0x80142740 (src/shared) */ - -DEFINE_func_80142778() /* dedup: shared engine-core @0x80142778 (src/shared) */ - -DEFINE_func_801427DC() /* dedup: shared engine-core @0x801427DC (src/shared) */ - -DEFINE_func_801427E4() /* dedup: shared engine-core @0x801427E4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018C044[])(); - -void func_801427EC(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018C044[*(u16 *)(param_1 + 2)](); - } -} - - -DEFINE_func_80142838() /* dedup: shared engine-core @0x80142838 (src/shared) */ - -DEFINE_func_801428CC() /* dedup: shared engine-core @0x801428CC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018C060[])(); - -void func_8014292C(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018C060[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018C230[])(); - -void func_80142978(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018C230[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018C2E8[])(); - -void func_801429C4(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018C2E8[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) -// @reconcile: func_80142A80 is DEFINED later in this TU as `void func_80142A80(void)`. -// The uc2 draft declared it `extern void func_80142A80(int)` -> conflicting types. -// Escape §17a-1/§20: conform the declaration to the TU's, cast at the use site -// (codegen-neutral: the argument still lands in $a0). - -extern void func_80142A80(void); - -void func_80142A10(int param_1) -{ - - extern void (*D_8018C2F8[])(); - if (*(s16 *)&D_801270C0 != 3) { - D_8018C2F8[*(u16 *)(param_1 + 2)](); - if (*(s16 *)(param_1 + 0xFC) != 0) { - ((void (*)(int))func_80142A80)(param_1); - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (packed-word struct -> lwl/lwr unaligned copy; union byte[] -> $sp-direct lbu; branch-polarity invert -> beqz) - -extern u16 D_800B99D8; -extern struct packed_word D_801E6124; -extern u8 D_801E6E18; -extern u8 D_801E6E19; -extern u8 D_801E6E1A; - -void func_80142A80(void) -{ - u16 flags; - union word_bytes local; - s32 mul; - - flags = D_800B99D8; - local.pw = D_801E6124; - - if (flags & 0x10) { - mul = (s8)((flags & 0xf) >> 1) + 9; - } else { - mul = 0x10 - (s8)((flags & 0xf) >> 1); - } - - D_801E6E18 = mul * (local.b[0] >> 4); - D_801E6E19 = mul * (local.b[1] >> 4); - D_801E6E1A = mul * (local.b[2] >> 4); -} - - -DEFINE_func_80142B2C() /* dedup: shared engine-core @0x80142B2C (src/shared) */ - - -DEFINE_func_80142BB4() /* dedup: shared engine-core @0x80142BB4 (src/shared) */ - -DEFINE_func_80142C7C() /* dedup: shared engine-core @0x80142C7C (src/shared) */ - -DEFINE_func_80142C84() /* dedup: shared engine-core @0x80142C84 (src/shared) */ - -DEFINE_func_80142C9C() /* dedup: shared engine-core @0x80142C9C (src/shared) */ - -DEFINE_func_80142D38() /* dedup: shared engine-core @0x80142D38 (src/shared) */ - -DEFINE_func_80142DB8() /* dedup: shared engine-core @0x80142DB8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (combined store-assign `*(p)=v0=call()` keeps test/store on $v0, copy to $s0 for the else) - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_80142B2C(void *arg0); - -extern int D_8018C038; - -void func_80142DC4(int param_1) -{ - int v0; - - *(int *)(param_1 + 0x20) = v0 = ((int (*)(void))func_8012C1B8)(); - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - ((void (*)(s32, s32))func_8001CA1C)(v0, (s32)&D_8018C038); - *(short *)(v0 + 0x1a) = 0x1800; - *(short *)(v0 + 0x18) = 0x1800; - *(short *)(param_1 + 0xfc) = 0; - ((void (*)(int))func_80142B2C)(param_1); - } -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_80142B2C(void *arg0); - -extern unsigned char D_8018C054[]; - -void func_80142E38(int param_1) -{ - short sVar1; - int iVar2; - - *(int *)(param_1 + 0x20) = iVar2 = ((int (*)(void))func_8012C1B8)(); - if (iVar2 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - ((void (*)(int, void *))func_8001CA1C)(iVar2, &D_8018C054); - sVar1 = (*(unsigned short *)(param_1 + 0x70) & 0xf) * 0x600 + 0x1200; - *(short *)(iVar2 + 0x1a) = sVar1; - *(short *)(iVar2 + 0x18) = sVar1; - *(short *)(param_1 + 0xfc) = 0; - ((void (*)(int))func_80142B2C)(param_1); - } -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142B2C(void *arg0); - - -void func_80142EC0(s32 param_1) { - - extern s32 D_8018C220[]; - register s32 d __asm__("$16") = param_1; /* $s0 */ - register s32 obj __asm__("$17"); /* $s1 */ - s32 ret; - s16 sVar2; - - ret = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(d + 0x20) = ret; - obj = ret; - if (ret == 0) { - ((void (*)(s32))func_8012CAE4)(d); - } else { - func_8001CA1C(obj, 0); - sVar2 = (s16)((*(u16 *)(d + 0x70) & 0xf) * 0x600 + 0xc00); - *(s16 *)(obj + 0x1a) = sVar2; - *(s16 *)(obj + 0x18) = sVar2; - *(s16 *)(d + 0xfc) = 0; - ((void (*)(s32, s32))func_8012A828)(d, D_8018C220[*(u16 *)(d + 0x70) & 0xf]); - ((void (*)(s32))func_80142B2C)(d); - } -} - - -DEFINE_func_80142F68() /* dedup: shared engine-core @0x80142F68 (src/shared) */ - -DEFINE_func_80142FFC() /* dedup: shared engine-core @0x80142FFC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (38 ins). $16=param pin; explicit $17 copy of the call result -// survives across func_8001CA1C while $v0 serves the pre-call store/test; -// store BEFORE the s1 copy so the store keeps $v0 (not the saved copy). - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142B2C(void *arg0); - -extern unsigned char D_8018C240[]; -extern unsigned char D_8018C2A0[]; - -void func_8014305C(int param_1) -{ - register int s0_param __asm__("$16") = param_1; - register int s1_copy __asm__("$17"); - int iVar2; - short sVar1; - - iVar2 = ((int (*)(void))func_8012C1B8)(); - *(int *)(s0_param + 0x20) = iVar2; - s1_copy = iVar2; - if (iVar2 == 0) { - ((void (*)(int))func_8012CAE4)(s0_param); - } else { - ((void (*)(int, void *))func_8001CA1C)(s1_copy, D_8018C240); - sVar1 = (*(unsigned short *)(s0_param + 0x70) & 0xf) * 0x600 + 0xc00; - *(short *)(s1_copy + 0x1a) = sVar1; - *(short *)(s1_copy + 0x18) = sVar1; - *(short *)(s0_param + 0xfc) = 0; - func_8012A828(s0_param, D_8018C2A0); - ((void (*)(int))func_80142B2C)(s0_param); - } -} - - -DEFINE_func_801430F4() /* dedup: shared engine-core @0x801430F4 (src/shared) */ - -DEFINE_func_80143188() /* dedup: shared engine-core @0x80143188 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (memcpy unaligned copy; $s0 survivor pinned, store-before-copy keeps $v0 for early store/branch) - - -extern void *memcpy(void *, const void *, u32); - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern int func_8001CA88(int, void *); -extern s32 func_8012E504(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80142B2C(void *arg0); - -extern u8 D_801E6120; -extern u8 D_801E6E18; -extern u8 D_801E6E1C; - -void func_801431E8(s32 param_1) { - u8 buf[8]; - s32 iVar5; - u16 uVar2; - s16 sVar4; - - register s32 d __asm__("$16"); - memcpy(buf, &D_801E6120, 4); - iVar5 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = iVar5; - d = iVar5; - if (iVar5 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - } else { - ((void (*)(s32, void *))func_8001CA88)(d, &D_801E6E18); - uVar2 = *(u16 *)(param_1 + 0x70); - *(s16 *)(d + 0x76) = -0x10; - sVar4 = (uVar2 & 0xf) * 0x600 + 0xc00; - *(s16 *)(d + 0x1a) = sVar4; - *(s16 *)(d + 0x18) = sVar4; - *(u32 *)(d + 4) = *(u32 *)(d + 4) | 0x50000000; - if (func_8012E504(param_1, 0x33) == 0) { - *(s16 *)(param_1 + 0xfc) = 1; - func_800233CC(&D_801E6E18, 0x10); - memcpy(&D_801E6E1C, buf, 4); - } else { - *(s16 *)(param_1 + 0xfc) = 0; - } - ((void (*)(s32))func_80142B2C)(param_1); - } -} - - -DEFINE_func_801432FC() /* dedup: shared engine-core @0x801432FC (src/shared) */ - -DEFINE_func_80143390() /* dedup: shared engine-core @0x80143390 (src/shared) */ - -DEFINE_func_801433F0() /* dedup: shared engine-core @0x801433F0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) - -extern u8 D_800D387C[]; -extern u32 D_8018C3F8[]; - -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -void func_80143458(s32 param_1) -{ - s32 p; - u16 v; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_800D387C; - - p = *(s32 *)(param_1 + 0x20); - if (*(s32 *)(p + 4) == 0) { - *(s32 *)(p + 4) = 0x50000000; - } - - *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x9c; - - v = *(u16 *)(param_1 + 0x34) & 0x7fff; - if (v != 0) { - p = *(s32 *)(param_1 + 0x20); - *(u16 *)(p + 0x1a) = v; - *(u16 *)(p + 0x18) = v; - } - - func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, - D_8018C3F8[*(u16 *)(param_1 + 0x34) & 3]); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_8014350C() /* dedup: shared engine-core @0x8014350C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) - - -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -void func_8014358C(s32 param_1) -{ - - extern u8 D_8018C408[]; - extern u32 D_8018C504[]; - s32 p; - u16 v; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_8018C408; - - p = *(s32 *)(param_1 + 0x20); - if (*(s32 *)(p + 4) == 0) { - *(s32 *)(p + 4) = 0x50000000; - } - - *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x90; - - v = *(u16 *)(param_1 + 0x34) & 0x7fff; - if (v != 0) { - p = *(s32 *)(param_1 + 0x20); - *(u16 *)(p + 0x1a) = v; - *(u16 *)(p + 0x18) = v; - } - - func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, - D_8018C504[*(u16 *)(param_1 + 0x34) & 3]); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_80143640() /* dedup: shared engine-core @0x80143640 (src/shared) */ - -DEFINE_func_801437D8() /* dedup: shared engine-core @0x801437D8 (src/shared) */ - -DEFINE_func_80143970() /* dedup: shared engine-core @0x80143970 (src/shared) */ - -DEFINE_func_80143994() /* dedup: shared engine-core @0x80143994 (src/shared) */ - -DEFINE_func_801439C0() /* dedup: shared engine-core @0x801439C0 (src/shared) */ - -DEFINE_func_801439FC() /* dedup: shared engine-core @0x801439FC (src/shared) */ - - -extern void (*D_8018C520[])(void); - -void func_80143B30(void *a0) { - D_8018C520[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143B6C (src/shared) */ - -DEFINE_func_80143BDC() /* dedup: shared engine-core @0x80143BDC (src/shared) */ - - -extern void (*D_8018C52C[])(void); - -void func_80143C38(void *a0) { - D_8018C52C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143C74() /* dedup: shared engine-core @0x80143C74 (src/shared) */ - - -extern void (*D_8018C534[])(void); - -void func_80143C98(void *a0) { - D_8018C534[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143CD4() /* dedup: shared engine-core @0x80143CD4 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (80 ins, relocation-masked). iVar2/iVar3 pinned $s1/$s2; sVar4 is an -// int set BEFORE the call so it naturally takes callee-saved $s3; chained assignment -// a=b=c=sVar4 materializes the value once (the addu $v0,$s3,$zero move) + delay-slot store. - - /* size 0x0c */ - -extern void ApplyMatrixSV(void*, Svec_801372B0*, Svec_801372B0*); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -void func_80143D28(s32 param_1) { - - extern MatEntry D_8018C558[]; - register s32 iVar3 __asm__("$18") = *(s32 *)(param_1 + 0x20); /* $s2 */ - register s32 iVar2 __asm__("$17") = *(s32 *)(param_1 + 0x64); /* $s1 */ - MatEntry *p = &D_8018C558[*(s16 *)(param_1 + 0x70)]; - s32 sVar4; - s32 iVar1; - - *(s16 *)(iVar3 + 0x14) = p->f8; - *(u16 *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) + p->fa; - sVar4 = 0x1000; - ((void (*)(void *, void *, void *))ApplyMatrixSV)((void *)(*(s32 *)(param_1 + 0x20) + 0x34), p, (void *)(param_1 + 0x50)); - - if (*(s16 *)(param_1 + 0xfe) == 0 && - (iVar2 == 0 || *(s16 *)(iVar2 + 0x36) != *(s16 *)(param_1 + 0xfc) || - *(u8 *)(iVar2 + 0xc1) != 6)) { - if (0x10 < *(s32 *)(param_1 + 0x1c)) { - *(s32 *)(param_1 + 0x1c) = 0x10; - } - *(s16 *)(param_1 + 0xfe) = 1; - } - - iVar1 = *(s32 *)(param_1 + 0x1c); - if (iVar1 < 0x11) { - sVar4 = iVar1 << 8; - } - if (0x73 < iVar1) { - sVar4 = (0x78 - iVar1) << 10; - } - *(s16 *)(iVar3 + 0x18) = *(s16 *)(iVar3 + 0x1a) = *(s16 *)(iVar3 + 0x1c) = sVar4; - - if (func_8012BEE8(param_1)) { - func_8012C218((void *)param_1); - } -} - - - -extern void (*D_8018C57C[])(void); - -void func_80143E68(void *a0) { - D_8018C57C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143EA4() /* dedup: shared engine-core @0x80143EA4 (src/shared) */ - -DEFINE_func_80143EAC() /* dedup: shared engine-core @0x80143EAC (src/shared) */ - -DEFINE_func_80143EB4() /* dedup: shared engine-core @0x80143EB4 (src/shared) */ - -DEFINE_func_80143EBC() /* dedup: shared engine-core @0x80143EBC (src/shared) */ - - -extern void (*D_8018C590[])(void); - -void func_80144054(void *a0) { - D_8018C590[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: regalloc-order -// @stuck: 154/154 ins structural match (callees/consts/ctrl-flow/stack/GPU-packet all byte-correct); residual 25 = caller-saved temp-reg coalescing in the final ring-vertex block (target reuses dead $s0=iVar3 for iVar3-(iVar4>>6) subu where gcc reuses iVar4>>6's reg; iVar4 mflo -> $a3 vs target $v0) + 2-ins schedule swap of giv-increment vs iVar2*4 -> permuter grinder territory (§27 step-5) - - /* 0x14 stride */ - -DEFINE_func_80144090() /* dedup: shared engine-core @0x80144090 (src/shared) */ - - -extern void func_8012C218(void *a0); - -// @class: struct -// @stuck: none — MATCH (relocation-masked match_one); fn-ptr dispatch table + 0x1c counter, sibling idiom (func_801427EC/func_80143B30) - -extern void (*D_8018C598[])(); - -void func_801442F8(int param_1) -{ - int iVar1; - - D_8018C598[*(u16 *)(param_1 + 2)](); - iVar1 = *(int *)(param_1 + 0x1c) + 1; - *(int *)(param_1 + 0x1c) = iVar1; - if (0x1d < iVar1) { - func_8012C218(param_1); - } -} - - - -extern void func_8012C194(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018C514; - -void func_80144364(int param_1) { - int iVar3; - u16 uVar2; - s16 sVar1; - - iVar3 = ((s32 (*)(void))func_8012C194)(); - if (iVar3 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - uVar2 = *(u16 *)(*(int *)(param_1 + 0x64) + 0x36); - *(int *)(param_1 + 0xCC) = iVar3; - *(u16 *)(param_1 + 0xFC) = uVar2; - func_8001CB6C((u8 *)iVar3, (s32)&D_8018C514, 0x250, 0x1A0); - *(s32 *)(iVar3 + 4) = 0x60000000; - *(u8 *)(iVar3 + 0x27) = 0x14; - *(u16 *)(iVar3 + 0x10) = 0x400; - *(u16 *)(iVar3 + 8) = *(u16 *)(*(int *)(param_1 + 0x64) + 6); - *(u16 *)(iVar3 + 0xA) = *(u16 *)(*(int *)(param_1 + 0x64) + 0xA); - *(u16 *)(iVar3 + 0xC) = *(u16 *)(*(int *)(param_1 + 0x64) + 0xE); - sVar1 = *(s16 *)(param_1 + 0x70); - if (sVar1 != 0) { - *(s16 *)(iVar3 + 0x1A) = sVar1; - *(s16 *)(iVar3 + 0x18) = sVar1; - } else { - *(u16 *)(iVar3 + 0x1A) = 0x2000; - *(u16 *)(iVar3 + 0x18) = 0x2000; - } - *(u16 *)(param_1 + 2) = 1; - } -} - - - - -extern void func_80016714(void *a0, s32 a1); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); -extern s32 D_8018C528; - -void func_80144458(void *arg0) { - s32 temp_s0; - void *temp_s2; - void *temp_v0; - - temp_s2 = M2C_FIELD(arg0, void **, 0xCC); - if (M2C_FIELD(arg0, s16 *, 0x70) == 0) { - temp_v0 = M2C_FIELD(M2C_FIELD(arg0, void **, 0x64), void **, 0x20); - if (temp_v0 != NULL) { - temp_s0 = (M2C_FIELD(temp_v0, s16 *, 0x12) - 0x400) & 0xFFF; - M2C_FIELD(arg0, s32 *, 0x10) = (s32) (func_80047948(temp_s0) * D_8018C528 * 0x10); - M2C_FIELD(arg0, s32 *, 0x18) = (s32) (func_8004787C(temp_s0) * -D_8018C528 * 0x10); - func_8012AD80(arg0); - } - } - M2C_FIELD(temp_s2, u16 *, 8) = (u16) M2C_FIELD(arg0, u16 *, 6); - M2C_FIELD(temp_s2, u16 *, 0xA) = (u16) M2C_FIELD(arg0, u16 *, 0xA); - M2C_FIELD(temp_s2, u16 *, 0xC) = (u16) M2C_FIELD(arg0, u16 *, 0xE); - if (func_80128ED8(temp_s2, arg0 + 0xD0) != 0) { - func_80016714(temp_s2, 0x38); - func_8012C218(arg0); - } -} - - -DEFINE_func_80144558() /* dedup: shared engine-core @0x80144558 (src/shared) */ - -DEFINE_func_8014462C() /* dedup: shared engine-core @0x8014462C (src/shared) */ - -DEFINE_func_801446A4() /* dedup: shared engine-core @0x801446A4 (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH (65 ins, match_one). Levers: uVar2/$2 + addr/$3 pins; split (uVar2&0xFFFFFFF) into addr then (addr|0x80000000)+8 deref; %hi/%lo of 0x80000008 via plain 0x80000000+8 (match_one masks the target's D_80000008 reloc, real bytes identical); v1/3 magic-divide; gv+fv reassoc (field-0x30 in own temp) loads field first -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_8018C53C; -extern u8 D_8018C548; - -void func_8014477C(void *param_1) { - s32 v0; - s32 v1; - register s32 uVar2 __asm__("$2"); - register s32 addr __asm__("$3"); - s32 gv; - s32 fv; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)param_1 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(param_1); - return; - } - ((void (*)(s32, void *))func_8001CA1C)(v0, &D_8018C53C); - if (*(u16 *)(*(s32 *)((s32)param_1 + 0x64)) != 0) { - *(s16 *)((s32)param_1 + 0xFC) = *(u16 *)(*(s32 *)((s32)param_1 + 0x64) + 0x36); - uVar2 = *(s32 *)(*(s32 *)((s32)param_1 + 0x64) + 0x58); - if (uVar2 != 0) { - addr = uVar2 & 0xFFFFFFF; - gv = *(u16 *)((addr | 0x80000000) + 8); - fv = *(u16 *)((s32)param_1 + 0xA) - 0x30; - *(u16 *)((s32)param_1 + 0xA) = gv + fv; - } else { - *(u16 *)((s32)param_1 + 0xA) = *(u16 *)((s32)param_1 + 0xA) - 0x60; - } - } - ((void (*)(void *, void *))func_8012A828)(param_1, &D_8018C548); - v1 = (s32)*(s16 *)((s32)param_1 + 0x70) << 0xC; - *(s16 *)((s32)param_1 + 0x2) = 1; - *(s16 *)(*(s32 *)((s32)param_1 + 0x20) + 0x12) = v1 / 3; - *(s32 *)((s32)param_1 + 0x1C) = 0x78; -} - - - -extern void func_8012C194(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); - -extern u8 D_8018C514; -extern u8 D_8018C584; - -void func_80144880(s32 param_1) -{ - register s32 obj __asm__("$16"); /* $s0 */ - register s32 self __asm__("$17") = param_1; /* $s1 */ - register s32 b __asm__("$2"); /* $v0 */ - s32 e; - - obj = ((s32 (*)(void))func_8012C194)(); - if (obj == 0) { - ((void (*)(s32))func_8012CAE4)(self); - } else { - *(u16 *)(self + 0xFC) = *(u16 *)(*(s32 *)(self + 0x64) + 0x36); - *(s32 *)(self + 0xCC) = obj; - if (*(s16 *)(self + 0x70) == 1) { - func_8001CB6C((u8 *)obj, (s32)&D_8018C514, 0x250, 0x1A0); - b = 0x14; - } else { - func_8001CB6C((u8 *)obj, (s32)&D_8018C584, 0x300, 0x1D0); - b = 0x6A; - } - *(u8 *)(obj + 0x27) = (u8)b; - *(s32 *)(obj + 4) = 0x60000000; - *(u16 *)(obj + 0x10) = 0x400; - *(u16 *)(obj + 8) = *(u16 *)(*(s32 *)(self + 0x64) + 6); - *(u16 *)(obj + 0xA) = *(u16 *)(*(s32 *)(self + 0x64) + 0xA); - e = *(u16 *)(*(s32 *)(self + 0x64) + 0xE); - *(u16 *)(obj + 0x1A) = 0x4000; - *(u16 *)(obj + 0x18) = 0x4000; - *(u16 *)(obj + 0xC) = (u16)e; - *(s16 *)(self + 2) = *(s16 *)(self + 2) + 1; - } -} - - -DEFINE_func_80144988() /* dedup: shared engine-core @0x80144988 (src/shared) */ - - -extern void (*D_8018C5A0[])(void); - -void func_801449C8(void *a0) { - D_8018C5A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80144A04() /* dedup: shared engine-core @0x80144A04 (src/shared) */ - - -extern void (*D_8018C5A8[])(void); - -void func_80144A2C(void *a0) { - D_8018C5A8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80144A68() /* dedup: shared engine-core @0x80144A68 (src/shared) */ - -DEFINE_func_80144A90() /* dedup: shared engine-core @0x80144A90 (src/shared) */ - -DEFINE_func_80144A98() /* dedup: shared engine-core @0x80144A98 (src/shared) */ - -DEFINE_func_80144AEC() /* dedup: shared engine-core @0x80144AEC (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH - -DEFINE_func_80144B14() /* dedup: shared engine-core @0x80144B14 (src/shared) */ - - - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8015444C.c b/src/ov_SC02_003/ov_SC02_003_jr_8015444C.c deleted file mode 100644 index 0b211b64f..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8015444C.c +++ /dev/null @@ -1,1263 +0,0 @@ -#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. */ -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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); -/* ==== end §8b carried decl layer ==== */ - -/* func_8015444C — ov_SC01_077 exemplar of a ~134-member per-location family. - * 363-ins jump-table bytecode interpreter over arg0->unkB4 (s32 command words indexed - * by the u8 program counter at 0xBC), self-recursing to chain commands. 27-case switch - * (cases 4/11/12 share the +2 tail) + cross-jump-merged tail epilogues. - * - * Key structural facts (vs the m2c seed): - * - Every case spells its FULL tail inline (unkB8=1; pc adjust; recurse) — gcc jump2 - * cross-jumping re-merges the identical suffixes, reproducing the target's shared - * blocks WITH per-case arg copies. m2c's goto-sharing under-counts by ~22 ins. - * - p = arg0->unk20 held in a variable (lives in $a0): cases 23/24/default store - * p->unk20 (target `sw $v0,0x20($a0)`), NOT arg0->unk20 (m2c misread). - * - entry timer test is a byte read (lbu 0xB8) via *(u8*)&unkB8. - * - TU-ambient decls: canonical sig void(void*,s32*,s32*,s32*); no `struct Actor` - * tag (ambient one exists); callees 549F8/54A74/553C0/55440 come from ambient - * decls (1-arg call to 3-arg-canon func_801549F8 via fn-ptr cast). - * - cases 23/24/default merged tail (.L80154998): direct in-place statements, - * B8=BA store FIRST, then unkBC++/unkBD++/unkDC++. No shared nc/nd/ne temps — - * shared temps span 3 blocks -> global-alloc pseudos -> no local-alloc tie -> - * `addiu aN,vN,1` into separate regs. Block-local chains tie in place - * (`addiu vN,vN,1`) and the B8-first statement order reproduces the scheduler - * tie-break (loads BC,BD,DC,BA / adds x3 / stores B8,BC,BD,DC). - * - * rtu_match: MATCH (363 ins). PIN-FREE (no register-asm pins, no dead-reads). - * - * match_one: MATCH (363 ins), self-contained. The four callee externs below - * (549F8/54A74/553C0/55440) were previously supplied by the TU-ambient decls and are - * now spelled explicitly, verbatim from the canonical set in src/ov_SC03_099/... — - * the file compiles standalone AND still reconciles for the x134 family sweep. - * - * JTBL VERIFIED (§8a): target jtbl_801D8934, bounds `sltiu $v1,0x1B` = 27 entries. - * Our .rodata emits exactly 27 R_MIPS_32 .text relocs; every entry's (vram - 0x8015444C) - * offset equals ours, incl. the 4/11/12 three-way share at +0x454 and default at +0x4E8. - */ - - -extern void StoreImage(s32, void *); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_80155440(s32 *a0); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; - -void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x) { - Actor4C *arg0 = a0v; - s32 *arg1 = arg1x; - s32 *arg2 = arg2x; - s32 *arg3 = arg3x; - Actor4C *p = arg0->unk20; - u8 t; - s32 t2; - u32 op; - s32 temp; - s32 nb4; - s32 nbc; - s32 w; - u8 *img; - - if (p != NULL) { - t = *(u8 *)&arg0->unkB8; - if (t != 0) { - if (*arg1 == 0) { - arg0->unkB8 = t; - *arg1 += 1; - } - t2 = (u16)arg0->unkB8 - 1; - arg0->unkB8 = t2; - if (!(t2 & 0xFF)) { - op = arg0->unkB4[arg0->unkBC]; - switch (op) { - case 0: - arg0->unkB8 = 0; - *arg2 |= 0x8000; - arg0->unkBA = 0; - arg0->unkBC = 0; - arg0->unkBD = 0; - break; - case 1: - arg0->unkB8 = 1; - *arg2 |= 0x8000; - arg0->unkBC = 0; - arg0->unkBD = 0; - arg0->unkDC = 0; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 2: - arg0->unkB8 = 0; - arg0->unkBC = arg0->unkBC + 1; - *arg2 |= 0x8000; - break; - case 3: - temp = arg0->unkB4[arg0->unkBC + 1]; - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - arg0->unkBA = temp; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 5: - nb4 = arg0->unkB4[arg0->unkBC + 1]; - nbc = arg0->unkB4[arg0->unkBC + 2]; - arg0->unkB8 = 1; - arg0->unkDC = 0; - arg0->unkBC = nbc; - arg0->unkB4 = (s32 *)nb4; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 6: - arg0->unkBC = arg0->unkB4[arg0->unkBC + 1]; - arg0->unkB8 = 1; - arg0->unkDC = ((s32 (*)(s32))func_801549F8)((s32)arg0); - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 7: - arg0->unkB8 = 1; - *arg2 |= 0x4000; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 8: - arg0->unkB8 = 1; - *arg2 |= 0x2000; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 9: - arg0->unkB8 = 1; - *arg2 |= 0x1000; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 10: - arg0->unkB8 = 1; - *arg2 |= 0x800; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 13: - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 14: - if (*arg3 == 0) { - func_80154B4C((u8 *)arg0, arg0->unkB4[arg0->unkBC + 1]); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 15: - if (*arg3 == 0) { - func_80154A74((s32)arg0, arg0->unkB4[arg0->unkBC + 1]); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 16: - if (*arg3 == 0) { - func_801553C0((s32)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 17: - if (*arg3 == 0) { - func_80155440((s32 *)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 18: - if (*arg3 == 0) { - func_80155394((s32 *)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 19: - if (*arg3 == 0) { - func_801553A8((s32 *)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 20: - if (*arg3 == 0) { - arg0->unk1A8 ^= 1; - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 21: - if (*arg3 == 0) { - w = arg0->unkB4[arg0->unkBC + 1]; - img = &D_80126738; - StoreImage(w, img); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 22: - if (*arg3 == 0) { - w = arg0->unkB4[arg0->unkBC + 1]; - img = &D_80126838; - StoreImage(w, img); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 4: - case 11: - case 12: - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 23: - if (*arg3 == 0) { - p->unk20 = (Actor4C *)&D_80126748; - } - arg0->unkB8 = (u16)arg0->unkBA; - arg0->unkBC++; - arg0->unkBD++; - arg0->unkDC++; - break; - case 24: - if (*arg3 == 0) { - p->unk20 = (Actor4C *)&D_80126848; - } - arg0->unkB8 = (u16)arg0->unkBA; - arg0->unkBC++; - arg0->unkBD++; - arg0->unkDC++; - break; - case 25: - if (*arg3 == 0) { - arg0->unk44 = arg0->unk44 & 0xFFFDFFFF; - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 26: - if (*arg3 == 0) { - arg0->unk44 = arg0->unk44 | 0x20000; - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - default: - p->unk20 = (Actor4C *)(op + 0x10); - arg0->unkB8 = (u16)arg0->unkBA; - arg0->unkBC++; - arg0->unkBD++; - arg0->unkDC++; - break; - } - } - arg0->unkB8 = (u16)arg0->unkB8 | *arg2; - } - } -} - - - - -/* - * func_801549F8 — scan param->b4[] (s32[], length = the u8 at param->bc), - * stepping the index by 1 or 2 per entry via the 27-entry jump table - * jtbl_801D89A4; count the default/out-of-range entries. Returns (u8) count. - * - * REDRAFT NOTE (the decay fix, 2 levers — both required, both source-level): - * - * 1. `u8 n` (NOT `s32 n`) — THE fix for the stored draft's 3-off residual. - * The stored draft's whole residual was the position of the loop-bound - * keep-alive copy `addu $a3,$v0,$zero` among the three preheader insns: - * draft emitted [lw base][copy][lui/addiu jtbl], target wants - * [lw base][lui/addiu jtbl][copy]. The loop-invariant jtbl address is - * moved by loop.c and lands AFTER every preheader source statement, so as - * long as the copy is an ordinary preheader statement it can never follow - * the hoist. Making `n` a u8 changes the RTL for `n = *(u8*)(p+0xBC)`: - * cse1 no longer converts it into a plain reg-reg copy in place, and the - * copy that ultimately feeds the exit test is emitted at loop_start AFTER - * move_movables (post-loop pass), i.e. after the hoisted lui/addiu — the - * target order. Nothing else in the function changes. - * - * 2. The `j = i` / `i = j + k` index form BLOCKS strength reduction, which - * is what the stored draft's `register s32 i __asm__("$3")` pin was for. - * Unblocked, -O2 turns base[i] into a walking pointer (2nd biv, 33 ins); - * the target keeps the INDEX form (sll $v0,$v1,2; addu $v0,$v0,$a0; lw). - * `j` is a mult=1/add=0 giv of the biv `i`, so SR declines and i/j get - * coalesced into $v1 — no extra insn. This replaces the hard-register - * pin, so the match is pin-free and safe to travel to sibling overlays. - * (The pinned form — keep `register s32 i __asm__("$3")` + `i += 1/2` and - * just change `n` to u8 — also MATCHes, 31 ins, if a pin is ever wanted.) - * - * OPT LEVEL: plain -O2. The unfilled load-delay nops are this psx gcc's - * default, not an -O1 tell. - * - * VERIFIED: python3 tools/match_one.py func_801549F8 --c .run/uc/func_801549F8.c - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8015444C - * -> MATCH (31 ins) - */ -s32 func_801549F8(s32 param_1, s32 _arg1, s32 _arg2) -{ - s32 i, j; - u8 n; - u8 count; - s32 *base; - - count = 0; - i = 0; - if (*(u8 *)(param_1 + 0xBC) != 0) { - base = *(s32 **)(param_1 + 0xB4); - n = *(u8 *)(param_1 + 0xBC); - do { - j = i; - switch (base[j]) { - case 0: case 2: case 7: case 8: case 9: case 10: - case 0xd: case 0x10: case 0x11: case 0x12: case 0x13: - case 0x14: case 0x19: case 0x1a: - i = j + 1; - break; - case 3: case 4: case 5: case 6: case 0xb: case 0xc: - case 0xe: case 0xf: case 0x15: case 0x16: - i = j + 2; - break; - default: - i = j + 1; - count += 1; - break; - } - } while (i != n); - } - return count; -} - -DEFINE_func_80154A74() /* dedup: shared engine-core @0x80154A74 (src/shared) */ - -DEFINE_func_80154AB4() /* dedup: shared engine-core @0x80154AB4 (src/shared) */ - -DEFINE_func_80154AE0() /* dedup: shared engine-core @0x80154AE0 (src/shared) */ - -DEFINE_func_80154B20() /* dedup: shared engine-core @0x80154B20 (src/shared) */ - -DEFINE_func_80154B4C() /* dedup: shared engine-core @0x80154B4C (src/shared) */ - -DEFINE_func_80154B7C() /* dedup: shared engine-core @0x80154B7C (src/shared) */ - -DEFINE_func_80154B98() /* dedup: shared engine-core @0x80154B98 (src/shared) */ - -DEFINE_func_80154BC8() /* dedup: shared engine-core @0x80154BC8 (src/shared) */ - -DEFINE_func_80154BE4() /* dedup: shared engine-core @0x80154BE4 (src/shared) */ diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80154C24.c b/src/ov_SC02_003/ov_SC02_003_jr_80154C24.c deleted file mode 100644 index 061f3521e..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80154C24.c +++ /dev/null @@ -1,1805 +0,0 @@ -#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. */ -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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 StoreImage(s32, void *); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; -extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); -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_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -/* ==== end §8b carried decl layer ==== */ - -extern void func_80154ED8(s32 a0, s32 a1); - -void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3) { - u16 uVar2; - s32 iVar3; - s32 uVar5; - s32 uVar6; - - if (*(u8 *)(param_1 + 0xd4) == 0) { - return; - } - if (*param_2 == 0) { - *(u16 *)(param_1 + 0xd4) = (u16)*(u8 *)(param_1 + 0xd4); - *param_2 = *param_2 + 1; - } - uVar2 = *(u16 *)(param_1 + 0xd4) - 1; - *(u16 *)(param_1 + 0xd4) = uVar2; - if ((uVar2 & 0xff) != 0) { - goto LAB_80154e6c; - } - switch (*(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0))) { - case 0: - *(u16 *)(param_1 + 0xd4) = 0; - *param_3 = *param_3 | 0x8000; - *(u16 *)(param_1 + 0xd6) = 0; - *(u8 *)(param_1 + 0xd8) = 0; - *(u8 *)(param_1 + 0xd9) = 0; - break; - case 1: - *(u16 *)(param_1 + 0xd4) = 1; - *param_3 = *param_3 | 0x8000; - *(u8 *)(param_1 + 0xd8) = 0; - *(u8 *)(param_1 + 0xd9) = 0; - func_80154C24(param_1, param_2, param_3); - break; - case 2: - *(u16 *)(param_1 + 0xd4) = 0; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - goto LAB_80154e9c; - case 3: - uVar5 = *(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0) + 4); - *(u16 *)(param_1 + 0xd4) = 1; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 2; - *(s16 *)(param_1 + 0xd6) = (s16)uVar5; - func_80154C24(param_1, param_2, param_3); - break; - case 5: - iVar3 = (u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0); - uVar5 = *(s32 *)(iVar3 + 4); - uVar6 = *(s32 *)(iVar3 + 8); - *(u16 *)(param_1 + 0xd4) = 1; - *(s8 *)(param_1 + 0xd8) = (s8)uVar6; - *(s32 *)(param_1 + 0xd0) = uVar5; - func_80154C24(param_1, param_2, param_3); - break; - case 6: - uVar6 = *(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0) + 4); - *(u16 *)(param_1 + 0xd4) = 1; - *(s8 *)(param_1 + 0xd8) = (s8)uVar6; - func_80154C24(param_1, param_2, param_3); - break; - case 7: - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd6); - *param_3 = *param_3 | 0x4000; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - *(s8 *)(param_1 + 0xd9) = *(s8 *)(param_1 + 0xd9) + 1; - func_80154C24(param_1, param_2, param_3); - break; - case 8: - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd6); - *param_3 = *param_3 | 0x2000; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - *(s8 *)(param_1 + 0xd9) = *(s8 *)(param_1 + 0xd9) + 1; - func_80154C24(param_1, param_2, param_3); - break; - default: - func_80154ED8(param_1, *(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0))); - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd6); - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - break; - } - goto LAB_80154eac; - -LAB_80154e6c: - if (uVar2 != 1) { - goto LAB_80154eac; - } - if (*(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0)) != 0) { - goto LAB_80154eac; - } -LAB_80154e9c: - *param_3 = *param_3 | 0x8000; -LAB_80154eac: - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd4) | *param_3; - return; -} - - -DEFINE_func_80154ED8() /* dedup: shared engine-core @0x80154ED8 (src/shared) */ - -DEFINE_func_80154F9C() /* dedup: shared engine-core @0x80154F9C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-struct stride-8 base materialize + addu, %lo folded into addiu) - -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_800183E0(s32 a0); - -extern ImgRect8 D_8018CA28[]; - -void func_801550FC(s32 arg0) -{ - if (arg0 & 0x40000000) { - MoveImage(&D_8018CA28[arg0 & 0xFF], 0x200, 0x100); - } else { - ((void (*)(void))func_800183E0)(); - } -} - - -DEFINE_func_80155150() /* dedup: shared engine-core @0x80155150 (src/shared) */ - -DEFINE_func_801552F4() /* dedup: shared engine-core @0x801552F4 (src/shared) */ - -DEFINE_func_80155344() /* dedup: shared engine-core @0x80155344 (src/shared) */ - -DEFINE_func_80155394() /* dedup: shared engine-core @0x80155394 (src/shared) */ - -DEFINE_func_801553A8() /* dedup: shared engine-core @0x801553A8 (src/shared) */ - -DEFINE_func_801553C0() /* dedup: shared engine-core @0x801553C0 (src/shared) */ - -DEFINE_func_80155440() /* dedup: shared engine-core @0x80155440 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; decrement persists as separate addiu in delay slot - -extern int (*D_8018CA68[])(void); - -s32 func_80155458(s32 param_1) -{ - int idx; - - idx = *(unsigned char *)(param_1 + 0x4e); - if (idx != 0) { - idx = idx - 1; - if ((*D_8018CA68[idx])() == 0) { - *(unsigned char *)(param_1 + 0x4e) = 0; - } - } - return *(unsigned char *)(param_1 + 0x4e); -} - - -DEFINE_func_801554B8() /* dedup: shared engine-core @0x801554B8 (src/shared) */ - -DEFINE_func_80155518() /* dedup: shared engine-core @0x80155518 (src/shared) */ - -DEFINE_func_8015554C() /* dedup: shared engine-core @0x8015554C (src/shared) */ - - -extern void (*D_8018CA6C[])(void); - -void func_80155580(void *a0) { - D_8018CA6C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801555BC() /* dedup: shared engine-core @0x801555BC (src/shared) */ - - - -void func_801555F4(void *param_1) -{ - extern void func_80156648(int *a0); - extern int D_800D4C94; - extern int D_800D4CE4; - extern int D_800D4D38; - extern int D_800D4D88; - extern int D_800D4E10; - extern int D_800D4E6C; - - - int uVar1; - unsigned char bVar3; - int s1; - unsigned short uVar4; - - ((void(*)(int, int))func_80154A74)(((int)param_1), 0x15); - if ((*(unsigned int *)(((int)param_1) + 0x44) & 0x200) == 0) { - if (*(int *)(((int)param_1) + 0x2c) == -0xb0000) { - uVar1 = ((int(*)(int))func_80029178)(0x82); - if ((uVar1 & 0xff) != 0) { - uVar1 = 7; - goto L_648; - } - } - } else { - uVar1 = 5; -L_648: - *(unsigned char *)(((int)param_1) + 0x1aa) = uVar1; - } - switch (*(unsigned char *)(((int)param_1) + 0x1aa)) { - case 0: - case 1: - bVar3 = *(unsigned char *)(((int)param_1) + 0x1ab) ^ 1; - *(unsigned char *)(((int)param_1) + 0x1ab) = bVar3; - if (bVar3 != 0) - *(unsigned char *)(((int)param_1) + 0x1aa) = 0; - else - *(unsigned char *)(((int)param_1) + 0x1aa) = 1; - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4C94); - ((void(*)(int))func_80147324)(0x400); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 0; - D_8011F730 |= 3; - func_80146CA0((void *)((int)param_1)); - goto L_7b8; - case 2: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4CE4); - ((void(*)(int))func_80147324)(0x446); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 1; - goto L_575c; - case 3: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4D38); - ((void(*)(int))func_80147324)(0x400); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 2; - goto L_575c; - case 4: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4D88); - ((void(*)(unsigned short))func_80147300)(0x5f6); - s1 = 3; - func_80146CA0((void *)((int)param_1)); -L_575c: - func_80146CA0((void *)((int)param_1)); - goto L_7b8; - case 5: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4E10); - s1 = 4; - uVar4 = 7; - goto L_7b0; - case 7: - ((void(*)(int))func_80147324)(0x7f); - ((void(*)(unsigned short))func_80147300)(0x5f4); - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4E6C); - s1 = 6; - uVar4 = 8; -L_7b0: - *(unsigned short *)(((int)param_1) + 2) = uVar4; - goto L_7b8; - default: - ; - } -L_7b8: - ((void(*)(int *, int))func_80146E90)((int *)((int)param_1), 0); - func_80156648((int *)((int)param_1)); - if (s1 >= 0) { - ((int(*)(int, int, int, int))func_80146994)(4, ((int)param_1), s1, 0); - } - ((void(*)(int *))func_801553A8)((int *)((int)param_1)); -} - - -#include "common.h" - - - - -DEFINE_func_80155800() /* dedup: shared engine-core @0x80155800 (src/shared) */ - - - -DEFINE_func_80155A44() /* dedup: shared engine-core @0x80155A44 (src/shared) */ - -DEFINE_func_80155B20() /* dedup: shared engine-core @0x80155B20 (src/shared) */ - -DEFINE_func_80155B9C() /* dedup: shared engine-core @0x80155B9C (src/shared) */ - -DEFINE_func_80155C0C() /* dedup: shared engine-core @0x80155C0C (src/shared) */ - -DEFINE_func_80155C64() /* dedup: shared engine-core @0x80155C64 (src/shared) */ - -DEFINE_func_80155D70() /* dedup: shared engine-core @0x80155D70 (src/shared) */ - -DEFINE_func_80155E30() /* dedup: shared engine-core @0x80155E30 (src/shared) */ - -DEFINE_func_80155EA4() /* dedup: shared engine-core @0x80155EA4 (src/shared) */ - -DEFINE_func_80155F58() /* dedup: shared engine-core @0x80155F58 (src/shared) */ - -DEFINE_func_80155F60() /* dedup: shared engine-core @0x80155F60 (src/shared) */ - -DEFINE_func_80155F80() /* dedup: shared engine-core @0x80155F80 (src/shared) */ - -DEFINE_func_80155FB0() /* dedup: shared engine-core @0x80155FB0 (src/shared) */ - -DEFINE_func_80155FD4() /* dedup: shared engine-core @0x80155FD4 (src/shared) */ - -DEFINE_func_80155FF8() /* dedup: shared engine-core @0x80155FF8 (src/shared) */ - - -void func_80156044(int param_1, int param_2) { - extern u32 func_8015616C(s32 a0, u16 a1); - extern void func_80156670(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); - extern void func_801567BC(s32 a0); - extern void func_80156848(s32 a0, s32 a1, s32 a2); - extern void func_80156A88(s32 a0, s32 a1); - extern s32 func_801565C0(s32 a0); - extern u8 D_8018CC24; - extern u8 D_8018CC38; - extern u8 D_8018CABC; - - register s32 puVar2 __asm__("$2"); - register s32 iVar3 __asm__("$3"); - u8 *puVar4; - s32 uVar1; - - if (((u32)param_2) & 0x10000) { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018CC24; - } else if (((u32)param_2) & 0x20000) { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018CC38; - } else { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018CABC; - } - puVar4 = (u8 *)(iVar3 + puVar2); - uVar1 = func_8015616C(((s32)param_1), *(u16 *)puVar4) & 0xffff; - if (*(u8 *)(((s32)param_1) + 0x1a8) != 0) { - func_80156670(((s32)param_1), *(s32 *)puVar4, uVar1, *(s32 *)(puVar4 + 4), - *(u8 *)(puVar4 + 0xA), *(u16 *)(puVar4 + 0x12)); - if (*(u8 *)(puVar4 + 0x10) != 0) { - func_801567BC(((s32)param_1)); - } - func_80156848(((s32)param_1), (s32)puVar4, uVar1); - func_80156A88(((s32)param_1), (s32)puVar4); - if (func_801565C0(((s32)param_1)) != 0) { - *(u8 *)(((s32)param_1) + 0x1c0) = 1; - } - } -} - - -DEFINE_func_8015616C() /* dedup: shared engine-core @0x8015616C (src/shared) */ - -DEFINE_func_80156370() /* dedup: shared engine-core @0x80156370 (src/shared) */ - - - -extern S801563EC D_8018CC60[]; - -S801563EC *func_801563EC(u16 idx) { - return &D_8018CC60[idx]; -} - - -DEFINE_func_8015640C() /* dedup: shared engine-core @0x8015640C (src/shared) */ - -DEFINE_func_801564B0() /* dedup: shared engine-core @0x801564B0 (src/shared) */ - -DEFINE_func_801565C0() /* dedup: shared engine-core @0x801565C0 (src/shared) */ - - -// @class: MATCH (18 ins) — match_one, asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80154C24 -// -// RECONCILE (uc2 -> uc3). The body is UNCHANGED and still MATCHes; only the declaration -// environment moved. -// -// Gate error: `conflicting types for func_80156600 || previous declaration`. The conflicting -// symbol is func_80156600 ITSELF. ov_SC01_077_jr_80154C24.c:1747 instantiates -// DEFINE_func_80157EA4(), whose macro body (src/shared/engine_core.h:11395) carries -// extern s32 func_80156600(void *a0); -// and calls it at engine_core.h:11409 as `v1 = (s32 *)func_80156600(a0);`. -// The byte-true body is NULLARY — the target zeroes $a0 at entry and uses it as the loop -// counter — so `s32 (void)` vs the header's `s32 (void *)` is a PARAM/ARITY disagreement on -// our own definition. Neither declaration can be changed: the header decl is fleet-shared -// (137 siblings instantiate the same macro), and adding a phantom `void *` parameter to the -// definition perturbs the $a0 allocation. -// -// Escape: §37/§124 ASM-LABEL ALIAS. The definition is given the private C name aF80156600 -// and the assembler label "func_80156600", so it never collides with the canonical -// declaration while still emitting the required symbol for the macro's call site. Zero -// header edits, zero codegen change (verified: cc1 on the real spliced TU is diagnostic-free, -// and match_one still prints MATCH). This declaration MUST travel with the body. -// -// Everything else is as in uc2: externs at BLOCK scope (rule D — keeps the bank travellable to -// the 137 siblings; the sibling func_80156670 declares the same two symbols at function scope -// in the same TU at :1427/:1432), and D_80126AF0 typed as plain u8[] because the body only -// ever does pointer arithmetic on it (+8/entry) — the file-scope `extern S8 D_80126AF0[];` -// form needs engine_types.h, which common.h does not pull in. -// -// Codegen shape: a counter in $a0, a byte cursor $a1 walking D_80126AF0 by 8, a word cursor -// $v1 walking D_801151E0 by 4; the `addu $v0,$a1,$zero` return value sits in the bnez delay -// slot, and the loop fallthrough re-zeroes $v0 for the not-found return. -s32 aF80156600(void) __asm__("func_80156600"); - -DEFINE_func_80156600() /* dedup: shared engine-core @0x80156600 (src/shared) */ - - -DEFINE_func_80156648() /* dedup: shared engine-core @0x80156648 (src/shared) */ - -DEFINE_func_80156670() /* dedup: shared engine-core @0x80156670 (src/shared) */ - - -DEFINE_func_801567BC() /* dedup: shared engine-core @0x801567BC (src/shared) */ - -DEFINE_func_80156848() /* dedup: shared engine-core @0x80156848 (src/shared) */ - -DEFINE_func_80156A14() /* dedup: shared engine-core @0x80156A14 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; D_8011520C indexed by param_2 (byte) folds %lo; D_8018CED0 indexed halfword folds %lo -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -extern void func_80147324(s32 arg0); - -void func_80156A1C(s32 param_1, s32 param_2) -{ - if (*(unsigned char *)(param_1 + 0xDA) == 0) { - func_80147324(D_8018CED0[D_8011520C[param_2]]); - *(unsigned char *)(param_1 + 0xDA) = *(unsigned char *)(param_1 + 0xDA) + 1; - } -} - - -DEFINE_func_80156A88() /* dedup: shared engine-core @0x80156A88 (src/shared) */ - -DEFINE_func_80156B74() /* dedup: shared engine-core @0x80156B74 (src/shared) */ - -DEFINE_func_80156ECC() /* dedup: shared engine-core @0x80156ECC (src/shared) */ - -DEFINE_func_80156FA8() /* dedup: shared engine-core @0x80156FA8 (src/shared) */ - - -DEFINE_func_80157158() /* dedup: shared engine-core @0x80157158 (src/shared) */ - - -DEFINE_func_801571C4() /* dedup: shared engine-core @0x801571C4 (src/shared) */ - -DEFINE_func_801574DC() /* dedup: shared engine-core @0x801574DC (src/shared) */ - -DEFINE_func_80157510() /* dedup: shared engine-core @0x80157510 (src/shared) */ - - -extern void (*D_8018CEE0[])(void); - -void func_80157544(void *a0) { - D_8018CEE0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80157580() /* dedup: shared engine-core @0x80157580 (src/shared) */ - -DEFINE_func_801575E4() /* dedup: shared engine-core @0x801575E4 (src/shared) */ - -DEFINE_func_801576A8() /* dedup: shared engine-core @0x801576A8 (src/shared) */ - -DEFINE_func_8015771C() /* dedup: shared engine-core @0x8015771C (src/shared) */ - -DEFINE_func_8015773C() /* dedup: shared engine-core @0x8015773C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected (scalar global store + two sequential calls, param_1 saved across) - -extern int D_801E6E98; -extern void func_80147078(s32 *a0, s16 a1); -extern void func_801578C0(s32 a0); - -void func_80157788(int param_1) -{ - D_801E6E98 = 300; - ((void (*)(int, int))func_80147078)(param_1, 7); - func_801578C0(param_1); -} - - - - - -void func_801577C8(s32 arg0) { - D_801E6E98 = 0x12C; - func_80147078(arg0, 7); - func_80157808(arg0); -} - - - -// @class: struct -// @stuck: none — MATCH expected (fnptr-table %lo-fold via extern array + global counter decrement + two saved-param calls) - -extern void (*D_8018CF08[])(void); -extern int D_801E6E98; -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); - -void func_80157808(void *param_1) -{ - D_8018CF08[*(unsigned short *)((char *)param_1 + 2)](); - D_801E6E98 = D_801E6E98 - 1; - if (D_801E6E98 == -1) { - func_801599A4(param_1); - func_80159B3C(param_1); - } -} - - -DEFINE_func_80157880() /* dedup: shared engine-core @0x80157880 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (expected); STUB: param_1 held in $s0 across calls, u8 store of 9 before func_80154274 - -extern void func_80156648(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147324(s32 arg0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146CA0(void *a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018CEE8; - -void func_801578C0(s32 param_1) -{ - ((void (*)(void))func_80156648)(); - *(u8 *)(param_1 + 0x1AA) = 9; - func_80154274((s32 *)param_1, (s32)&D_800D5128); - ((void (*)(s32 *, s32))func_80154A74)((s32 *)param_1, 0x15); - func_80147324(0xC20); - ((void (*)(s32 *, s32))func_80146DB8)((s32 *)param_1, (s32)&D_8018CEE8); - ((void (*)(s32, s32 *, s32, s32))func_80146994)(4, (s32 *)param_1, 7, 0); - ((void (*)(s32, s32 *, s32, s32))func_80146994)(5, (s32 *)param_1, 9, 0); - ((void (*)(s32 *))func_80146CA0)((s32 *)param_1); - ((void (*)(s32 *))func_801725A4)((s32 *)param_1); -} - - - - -// @class: other -// @stuck: none — MATCH (76 ins). Body is byte-identical with a plain transcription; the only -// delta was frame size: target frame is 0x30 (saves at 0x20/0x24/0x28), not 0x20. Target reserves -// a 16-byte UNREFERENCED stack local (no sp refs anywhere in the body) — gcc-2.7.2 does NOT -// dead-strip an aggregate local even at -O2, so a dead `int frame_pad[4]` reproduces vars=16 -// (.frame $sp,48: vars=16, regs=3, args=16) with zero body footprint. match_one => MATCH. - -extern void func_80147A10(int a0, int a1); -extern void func_80147A84(int); -extern void func_801473EC(s32 *a0); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_8014ED28(s32 _arg0); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern int func_80155FF8(int arg, int a1); -extern void func_80154A74(int, int); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern s32 func_801725A4(u8 *a0); - -extern unsigned char D_800D5178; -extern unsigned char D_8018CEF8; - -void func_8015795C(int param_1) -{ - int frame_pad[4]; /* dead 16-byte local: forces target's 0x30 frame (vars=16); never referenced */ - int iVar1; - unsigned int uVar2; - - *(unsigned int *)(param_1 + 0x44) = *(unsigned int *)(param_1 + 0x44) | 2; - ((int (*)(int, int))func_80147A10)(param_1, 0x400); - if (*(int *)(param_1 + 0x2c) >= 0) { - *(int *)(param_1 + 0x2c) = 0; - } - func_80147A84(param_1); - ((void (*)(int))func_801473EC)(param_1); - func_80148038(param_1, 0x1a000); - func_80147460(param_1); - iVar1 = ((int (*)(int))func_8014ED28)(param_1); - if (iVar1 != 0) { - func_80146D90(param_1); - } - uVar2 = ((int (*)(int))func_80161450)(param_1); - if ((uVar2 & 5) != 0) { - func_80157A8C(param_1); - ((void (*)(int, int))func_80146E90)(param_1, 8); - ((void (*)(int))func_80146CA0)(param_1); - } - if (uVar2 == 0) { - ((void (*)(int, int))func_80155FF8)(param_1, *(unsigned char *)(param_1 + 0x1aa)); - if (*(unsigned char *)(param_1 + 0x1c0) != 0) { - func_80154A74(param_1, 0x17); - ((void (*)(int, void *))func_80154274)(param_1, &D_800D5178); - ((void (*)(int, void *))func_80146DB8)(param_1, &D_8018CEF8); - ((void (*)(int, int))func_801477E8)(param_1, 0xfff40000); - *(short *)(param_1 + 2) = 4; - } - ((void (*)(int))func_801725A4)(param_1); - } - return; -} - - -DEFINE_func_80157A8C() /* dedup: shared engine-core @0x80157A8C (src/shared) */ - -DEFINE_func_80157AC8() /* dedup: shared engine-core @0x80157AC8 (src/shared) */ - -DEFINE_func_80157B74() /* dedup: shared engine-core @0x80157B74 (src/shared) */ - -DEFINE_func_80157BC8() /* dedup: shared engine-core @0x80157BC8 (src/shared) */ - -DEFINE_func_80157CCC() /* dedup: shared engine-core @0x80157CCC (src/shared) */ - - -/* func_80157D20 — 21-ins plumbing shim (×138 overlays). - * - * §71 sibling-first: the immediate neighbour func_801578C0 in this very TU - * (src/ov_SC01_077/ov_SC01_077_jr_80154C24.c L1592) already matches with - * `((void (*)(void))func_80156648)();` — the zero-argument call form. The - * target likewise sets up NO argument registers before `jal func_80156648` - * ($a0/$a1 still carry this function's own incoming args), so the call is - * argument-less here too. - * - * The `lhu %lo(D_8018CF38)($at)` with `sll $s0,$s0,1` => a plain u16 array - * indexed by the second parameter, NOT hoisted into a pointer (§20: a pointer - * var would keep one address register live across the call; the target rebuilds - * the %hi/%lo pair inline after the call returns). - * - * §73 PARAMS axis / §42 lever 6 — the fleet canon for this symbol is - * `extern void func_80157D20(void);` (this TU's carried decl layer, L399, and - * every sibling overlay's). A 2-param definition hard-errors with - * `conflicting types` in the real TU (rtu_match, byte-verified), and the canon - * cannot be widened from a draft (that is an R22 fleet edit). So keep the - * `(void)` signature and capture $a0/$a1 with register pins copied into NORMAL - * pseudos — the copies are live across `jal func_80156648`, so they get the - * callee-saved homes the target uses ($s1 = a0, $s0 = a1). A direct - * `register` use would leave the values in call-clobbered $a0/$a1. - */ - -extern void func_80156648(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80157D74(u16 *a0); - -void func_80157D20(void) -{ - - extern u16 D_8018CF38[]; - register void *a0v __asm__("$4"); - register s32 a1v __asm__("$5"); - void *param_1 = a0v; - s32 param_2 = a1v; - - ((void (*)(void))func_80156648)(); - ((void (*)(void *, s32))func_80147078)(param_1, D_8018CF38[param_2]); - ((void (*)(void *))func_80157D74)(param_1); -} - - -DEFINE_func_80157D74() /* dedup: shared engine-core @0x80157D74 (src/shared) */ - - -extern void (*D_8018CF48[])(void); - -void func_80157DC4(void *a0) { - D_8018CF48[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80157E00() /* dedup: shared engine-core @0x80157E00 (src/shared) */ - -DEFINE_func_80157E38() /* dedup: shared engine-core @0x80157E38 (src/shared) */ - -DEFINE_func_80157EA4() /* dedup: shared engine-core @0x80157EA4 (src/shared) */ - -DEFINE_func_80157F64() /* dedup: shared engine-core @0x80157F64 (src/shared) */ - - -extern void (*D_8018CF50[])(void); - -void func_80157FC4(void *a0) { - D_8018CF50[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80158000() /* dedup: shared engine-core @0x80158000 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (expected); straight-line call sequence with two stores scheduled into jal delay slots - -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147324(s32 arg0); -extern void func_80146CA0(void *a0); - -extern s32 D_800D51E0; -extern s32 D_8018CF1C; - -void func_80158038(void * param) -{ - *(u8 *)(param + 0x1aa) = 0xe; - func_80154274((s32 *)param, (s32)&D_800D51E0); - func_80154A74(param, 0x15); - func_80146DB8((s32 *)param, &D_8018CF1C); - *(s32 *)(param + 0x234) = 0; - func_80146994(5, param, 0xc, 0); - func_80147324(0x455); - func_80146CA0((void *)param); -} - - -DEFINE_func_801580B4() /* dedup: shared engine-core @0x801580B4 (src/shared) */ - -DEFINE_func_801581AC() /* dedup: shared engine-core @0x801581AC (src/shared) */ - - -extern void (*D_8018CF5C[])(void); - -void func_8015824C(void *a0) { - D_8018CF5C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80158288() /* dedup: shared engine-core @0x80158288 (src/shared) */ - -DEFINE_func_801582C0() /* dedup: shared engine-core @0x801582C0 (src/shared) */ - -DEFINE_func_80158344() /* dedup: shared engine-core @0x80158344 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (branch-polarity invert on both dispatch ifs + goto block-order to put the v1!=0/L508 paths as fallthrough; phantom 0x10 frame via address-taken frame_pad[4] + (void)& — zero code) - -extern void func_8014CBF8(void *a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern int func_80155FF8(int arg, int a1); - -extern u8 D_8018CF2C; -extern u8 D_800D533C; - -void func_80158434(s32 param_1) -{ - u32 uVar1; - u32 uVar2; - s32 frame_pad[4]; - (void)&frame_pad; - - *(u32 *)(param_1 + 0x44) = *(u32 *)(param_1 + 0x44) | 2; - if ((*(u16 *)(param_1 + 0xB8) & 0x4000) != 0) { - *(s32 *)(param_1 + 0x234) = *(s32 *)(param_1 + 0x234) + 1; - ((s32 (*)(void))func_8014CBF8)(); - ((void (*)(s32))func_801474EC)(param_1); - ((void (*)(s32, s32))func_801477E8)(param_1, 0xFFFA0000); - ((void (*)(s32, s32))func_80146DB8)(param_1, (s32)&D_8018CF2C); - } - if (*(s32 *)(param_1 + 0x234) != 0) { - func_80148038(param_1, 0x10000); - func_80147460(param_1); - func_80147AD4(param_1, 0, 0, 0); - ((void (*)(s32))func_801473EC)(param_1); - } - uVar1 = ((s32 (*)(s32, s32))func_801615C4)(param_1, 0); - if (uVar1 != 0) { - if (uVar1 == 1) goto LAB_80158508; - uVar2 = uVar1 & 0x2000; - } else { - uVar2 = func_80146E98(param_1); - } - if (uVar2 == 0) goto LAB_80158528; -LAB_80158508: - ((void (*)(s32, s32))func_80154274)(param_1, (s32)&D_800D533C); - ((void (*)(s32))func_80146CA0)(param_1); - return; -LAB_80158528: - ((void (*)(s32, s32))func_80155FF8)(param_1, *(u8 *)(param_1 + 0x1AA)); -} - - -DEFINE_func_80158548() /* dedup: shared engine-core @0x80158548 (src/shared) */ - -DEFINE_func_801585A4() /* dedup: shared engine-core @0x801585A4 (src/shared) */ - -DEFINE_func_801585AC() /* dedup: shared engine-core @0x801585AC (src/shared) */ - -DEFINE_func_801585EC() /* dedup: shared engine-core @0x801585EC (src/shared) */ - - -// @class: loose-typing -// @stuck: none — MATCH (87 ins, match_one) + symcheck SYMS-OK (17 symbols agree); same file also -// MATCHes verbatim against ov_SC03_099 and ov_SC06_008 (sibling asm bodies are identical) - -/* func_80158638 @ 0x80158638 — ov_SC01_077 / ov_SC01_077_jr_80154C24 (87 ins). - * - * TWO decl-ROBUSTNESS choices in the BODY, deliberate — these are the only two things the gate's - * decl ladder (cast_call_sites/reconcile_tu/sig_unify) CANNOT repair, because they change codegen, - * not plumbing. Both are load-bearing for templating this exemplar onto its 138 h_seq siblings, - * where each overlay TU carries its own spelling of these decls: - * - * 1) `*(u16 *)&D_80078EB4` — the target loads it with `lhu`. The ov_SC01_077 TU already carries - * `extern s16 D_80078EB4;` (line 504), and a plain `D_80078EB4 != 0` read through an s16 decl - * compiles to `lh` => WIDTH/lh!=lhu, closeness 1. A `(u16)` cast does NOT fix it (gcc-2.7.2 - * folds the zero_extend away for a !=0 test and keeps `lh`); the pointer pun does, and it is - * correct under EITHER declared signedness. - * 2) `(s16)func_80159464(...)` with the fleet-canonical `extern s32 func_80159464();` decl. - * The target truncates the return to 16 bits at BOTH call sites (`sll 16` + `blez`, then - * `sll 16`/`sra 16`/`slti 6`). Declaring the callee `s16` also matches, but the fleet's carried - * decl layer spells it `extern s32 func_80159464(void);` in 1600 places — if reconcile_tu wins - * that conflict the truncation vanishes and the match dies. The explicit cast makes the body - * independent of which decl survives. - * - * Symbols verified present in build/ov_SC01_077/undefined_syms_auto.txt: - * D_80078EB4=0x80078EB4 D_800B9A17=0x800B9A17 D_800B9A64=0x800B9A64 D_80110EC0=0x80110EC0 - */ - -DEFINE_func_80158638() /* dedup: shared engine-core @0x80158638 (src/shared) */ - - -DEFINE_func_80158794() /* dedup: shared engine-core @0x80158794 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected (3 scalar global stores + byte store + 6 calls, source order) -extern s32 D_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; - -extern void func_80147084(s32 *a0); -extern void func_80147098(s32 *a0); -extern void func_801470AC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80158880(s32 *param); - -void func_8015879C(s32 param_1) { - D_801E6EA0 = 0; - D_801E6EAC = 1; - D_801E6EB0 = 0; - *(u8 *)(param_1 + 0xa8) = 0; - ((void (*)(void))func_80147084)(); - ((void (*)(s32))func_80147098)(param_1); - ((void (*)(s32))func_801470AC)(param_1); - ((void (*)(s32, s32))func_80147078)(param_1, 0x1a); - ((void (*)(s32, s32))func_80146C98)(param_1, 1); - ((void (*)(s32))func_80158880)(param_1); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (STUB: 3 global stores + byte store + 5 calls in source order) -extern s32 D_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; - -extern void func_80147084(s32 *a0); -extern void func_80147098(s32 *a0); -extern void func_801470AC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80158880(s32 *param); - -void func_80158814(void *arg0) { - D_801E6EA0 = 0; - D_801E6EAC = 1; - D_801E6EB0 = 0; - *(s8 *)((s32)arg0 + 0xA8) = 0; - ((void (*)(void))func_80147084)(); - ((void (*)(void *))func_80147098)(arg0); - ((void (*)(void *))func_801470AC)(arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0x1A); - ((void (*)(void *))func_80158880)(arg0); -} - - - -extern void func_80149020(s32 *a0); -extern void (*D_8018CF98[])(s32 *); - -void func_80158880(s32 *param) { - func_80149020(param); - D_8018CF98[*(u8 *)((s32)param + 0x4F)](param); -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_801588CC.c b/src/ov_SC02_003/ov_SC02_003_jr_801588CC.c deleted file mode 100644 index 274426ae0..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_801588CC.c +++ /dev/null @@ -1,1636 +0,0 @@ -#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. */ -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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 StoreImage(s32, void *); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; -extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); -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_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern ImgRect8 D_8018CA28[]; -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_80029178(s32); -extern int (*D_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC D_8018CC60[]; -extern S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(s32 *); -/* ==== end §8b carried decl layer ==== */ - - -extern int D_801E6EA0; -extern int D_801E6EAC; -extern int D_801E6EB0; - -extern int func_800D0CA0(int); -extern int func_8001AAA0(int); -extern int SsGetMute(void); -extern s32 func_80159464(void); - -void func_801588CC(int param_1) { - - extern void (*D_8018CF9C[])(void); - extern int D_801E6EA4; - extern int D_801E6EA8; - short sVar1; - - D_8018CF9C[*(unsigned short *)(param_1 + 2)](); - switch (D_801E6EA0) { - case 0: - break; - case 1: - func_800D0CA0(2); - D_801E6EA8 = 0; - D_801E6EA4 = 0x46; - D_801E6EA0 += 1; - break; - case 2: - if (D_801E6EA4 == 0) { - if (SsGetMute() == 0) { - D_801E6EA0 += 1; - } - } else { - D_801E6EA4 -= 1; - } - break; - case 3: - if (func_8001AAA0(0x83) != 0) { - D_801E6EA0 += 1; - } - break; - case 4: - D_801E6EAC = 0; - sVar1 = ((int (*)(int))func_80159464)(param_1); - if (sVar1 != 0) { - D_801E6EA4 = 0xd2; - } else { - D_801E6EA4 = 1; - } - break; - case 5: - D_801E6EA4 -= 1; - if (D_801E6EA4 == -1 || D_801E6EB0 != 0) { - D_801E6EA4 = 0; - D_801E6EA0 += 1; - } - break; - case 6: - func_800D0CA0(1); - D_801E6EA4 = 0x28; - D_801E6EA0 += 1; - break; - case 7: - if (D_801E6EA4 == 0) { - if (SsGetMute() == 0) { - D_801E6EA0 += 1; - } - } else { - D_801E6EA4 -= 1; - } - break; - case 8: - D_801E6EA8 = 1; - break; - } -} - - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801E6EA0; - -void func_80158BB0(void *arg0) { - if (D_801E6EA0 == 0) { - D_801E6EA0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801E6EAC; -extern s32 D_8018CF6C[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801E6EAC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018CF6C[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801E6EB0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801E6EB0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801E6EA0; -extern s32 D_801E6EA8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801E6EA0 == 4) { - D_801E6EA0 = 5; - } - if (D_801E6EA8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018CFD4[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018CFD4; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -extern u8 D_80078E78[]; - - -extern void func_80175454(void); -extern s32 func_80029178(s32); -extern s32 func_800291B4(s32); -extern void func_80029274(void); -extern void func_80029044(void); -extern void func_8002906C(void); -extern void func_80029094(void); -extern void func_8002941C(void); -extern void func_80029124(s32, s32); -extern void func_800291A0(s32, s32); -extern void func_8014BEC0(void); -extern void func_8002AB64(void); -extern void func_80029514(s32); -extern void func_800D185C(u8 *); -extern void func_800CF804(void); -extern void func_800D1F90(void); - -void func_801594E8(s32 param_1, s32 param_2) -{ - - extern s32 D_80128150; - extern u8 D_800D3A44[]; - extern u8 D_800D39FC[]; - extern u8 D_800D3A20[]; - u8 *p = D_80078E78; - - func_80175454(); - switch (param_2) { - case -1: { - struct { u8 a, b, c; u8 pad[5]; u8 d, e; } t; - s32 saved; - t.a = func_80029178(0xB); - t.b = func_80029178(0xC); - t.c = func_80029178(0xD); - t.d = func_800291B4(0x2C); - t.e = func_800291B4(0x2D); - saved = *(s32 *)(p + 0x4); - func_80029274(); - func_80029044(); - func_8002906C(); - func_80029094(); - func_8002941C(); - func_80029124(0xB, t.a); - func_80029124(0xC, t.b); - func_80029124(0xD, t.c); - func_800291A0(0x2C, t.d); - func_800291A0(0x2D, t.e); - *(s32 *)(p + 0x4) = saved; - ((void (*)(s32))func_8014BEC0)(param_1); - func_8002AB64(); - func_80029514(2); - func_800D185C(D_800D3A44); - func_800CF804(); - break; - } - case 1: - *(s16 *)(p + 0x3C) = 0x96; - *(s16 *)(p + 0x40) = 0x96; - *(s32 *)(p + 0x14) = D_80128150; - break; - case 2: - case 3: - case 4: - func_800D1F90(); - break; - case 5: - func_800D1F90(); - func_800D185C(D_800D39FC); - func_80029514(0x636); - break; - case 6: - func_800D1F90(); - func_800D185C(D_800D3A20); - func_80029514(0x636); - break; - } -} - - - -extern void (*D_8018D1E8[])(void); - -void func_80159698(void *a0) { - D_8018D1E8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018D008)); - func_80028620(1, &(*(u8 *)&D_8018D008) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018D008) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018D28C[])(void); - -void func_80159968(void *a0) { - D_8018D28C[*(u8 *)((s32)a0 + 0x4D)](); -} - - - - -void func_801599A4(void *a0) { - - extern void (*D_8018D298[])(void); - D_8018D298[*(u16 *)((s32)a0 + 0x0)](); -} - - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - - -// @class: struct -// Redraft of the DECAYED backlog draft. The stored seed took `void *param_1` and then -// dereferenced it (`param_1[0xdd]`) — gcc-2.7.2 rejects that ("void value not ignored -// as it ought to be"), so the seed no longer compiles at all. Fix: retype the parameter -// as `unsigned char *`, which keeps every pointer offset byte-scaled (as void* arith did) -// while making the byte load legal. -// Structure preserved from the seed: the two return-tests are kept STRUCTURALLY -// DIFFERENT (positive `if(==) goto mask;` per branch, not `if(!=) return;`) so gcc's -// cross-jump pass cannot tail-merge them; and the outer test is inverted (`if(d != 1)`) -// so the ==4/return path is the inline fall-through and the d==1 / p[2] path becomes the -// forward beq-target block — matching the target block order. -// Typedefs are BLOCK-SCOPE so the match travels to the sibling overlays. - -extern void (*D_8018D33C[])(unsigned char *); - -extern void func_80150B28(int param_1); -extern void func_80158638(unsigned char *); -extern void func_8015126C(unsigned short *); -extern void func_8014900C(int *a0); - -void func_80159A20(unsigned char *param_1) -{ - typedef unsigned short u16; - typedef unsigned int u32; - typedef int s32; - typedef unsigned char u8; - - ((s32 (*)(void))func_80150B28)(); - func_80158638(param_1); - ((void (*)(u8 *))func_8015126C)(param_1); - ((void (*)(u8 *))func_8014900C)(param_1); - D_8018D33C[*(u16 *)param_1 & 0x7fff](param_1); - *(u32 *)(param_1 + 0x44) |= 0x8000000; - switch (*(u16 *)param_1) { - case 2: - case 3: - case 0xb: - case 0xc: - goto mask; - default: - return; - case 0x19: - if (param_1[0xdd] != 1) { - if (param_1[0xdd] == 4) { - goto mask; - } - return; - } - if (*(u16 *)(param_1 + 2) == 3) { - goto mask; - } - return; - } -mask: - *(u32 *)(param_1 + 0x44) &= 0xf7ffffff; -} - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018D3E0[])(void); - -void func_80159B70(void *a0) { - D_8018D3E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018D1FC; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018D1FC); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80159C84.c b/src/ov_SC02_003/ov_SC02_003_jr_80159C84.c deleted file mode 100644 index 801bec2dc..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80159C84.c +++ /dev/null @@ -1,1441 +0,0 @@ -#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. */ -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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 StoreImage(s32, void *); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; -extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); -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_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 ImgRect8 D_8018CA28[]; -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_80029178(s32); -extern int (*D_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC D_8018CC60[]; -extern S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern Entry D_8018CFD4[]; -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -extern void func_80159BE4(s32 arg0); -/* ==== end §8b carried decl layer ==== */ - - -// @class: other -// @stuck: none — MATCH - -/* scalar typedefs stripped for in-TU splice (§8e) */ -extern unsigned char D_8018D1FC; /* canonical; address-only use */ - -extern u16 D_800B99DA; - -extern s32 rand(void); - -/* canonical sigs (engine_core.h); arity-mismatched call sites use a fn-ptr cast (§17a-1) */ -extern s32 func_80149D9C(s32 a0); -extern void func_80149FA8(void); -extern s32 func_80149FB0(s32 a0); /* canonical */ -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern int func_80161BE0(void *a0); -extern s32 func_801496D4(void *a0); -extern void func_80149704(void); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149AA8(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern s32 func_8014A738(u8 *a0); -extern void func_8014A830(void); -extern void func_80149BAC(s32 *a0); -extern s32 func_801498E0(s32 *a0); -extern s32 func_80149954(s32 a0); -extern s32 func_80149A64(s32 *a0); -extern void func_800CCCC0(u8 *a0); -extern s32 func_80149CD4(s32 a0); -extern void func_8015E880(s32 *a0); -extern s32 func_801488A8(u8 *a0); -extern void func_8015A230(s32 *a0); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_8016F1AC(void); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80147324(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_80161208(); -extern void func_801483E8(void); -extern s32 func_80172590(u8 *a0); - -void func_80159C84(u8 *p) { - - extern void (*D_8018D298[])(void *); /* canonical */ - extern s32 D_800D5F04; - extern s32 D_800D5F14; - extern s32 D_800D5F34; - extern s32 D_800D5F44; - extern s32 D_800D49F4; - s32 t; - - if (((s32 (*)(void))func_80149D9C)() != 0) { - D_8018D298[*(u16 *)p](p); - ((void (*)(u8 *))func_80149FA8)(p); - return; - } - - func_80149FB0((s32)p); - if (func_80161B18(p) != 0) { - return; - } - if (func_80161B84(p) != 0) { - return; - } - if (func_80161BE0(p) != 0) { - return; - } - if (func_801496D4(p) != 0) { - D_8018D298[*(u16 *)p](p); - ((void (*)(u8 *))func_80149704)(p); - return; - } - - switch (func_801619A4((s32 *)p)) { - case 0: - case 1: - case 2: - case 6: - if (func_80149AA8((s32 *)p) != 0) { - D_8018D298[*(u16 *)p](p); - func_80149AD4((s32 *)p); - return; - } - if (func_80149B54((s32 *)p) != 0) { - D_8018D298[*(u16 *)p](p); - if (func_8014A738(p) != 0) { - ((void (*)(u8 *))func_8014A830)(p); - return; - } - func_80149BAC((s32 *)p); - return; - } - break; - case 3: - func_801498E0((s32 *)p); - break; - case 4: - func_80149954((s32)p); - break; - case 5: - if (func_80149A64((s32 *)p) != 0) { - D_8018D298[*(u16 *)p](p); - func_800CCCC0(p); - return; - } - break; - } - - if (func_80149CD4((s32)p) != 0) { - D_8018D298[*(u16 *)p](p); - func_8015E880((s32 *)p); - return; - } - if (func_801488A8(p) != 0) { - D_8018D298[*(u16 *)p](p); - func_8015A230((s32 *)p); - return; - } - - if ((*(u32 *)(p + 0x44) & 0x200) == 0 && *(u16 *)(p + 0xD4) == 0x8000) { - if (*(s32 *)(p + 0x234) >= 3) { - t = (s32)&D_800D5F44; - if (*(s32 *)(p + 0xD0) == t) { - func_80154B4C(p, (s32)&D_800D5F34); - goto after_b4c; - } - } else { - t = (s32)&D_800D5F14; - if (*(s32 *)(p + 0xD0) == t) { - func_80154B4C(p, (s32)&D_800D5F04); - goto after_b4c; - } - } - if ((rand() & 0xF) == 0) { - func_80154B4C(p, t); - } - } -after_b4c: - - if (*(u16 *)(p + 0xB8) & 0x8000) { - if ((*(u32 *)(p + 0x44) & 0x200) == 0) { - if (func_8016F1AC() != 0) { - *(s32 *)(p + 0x234) = 0; - *(s32 *)(p + 0x238) = 0; - } - switch (*(s32 *)(p + 0x234)) { - case 0: - if ((*(s32 *)(p + 0x238))++ >= 4) { - *(s32 *)(p + 0x238) = 0; - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80154150((s32)p, 1); - break; - } - func_80146DB8((s32 *)p, (s32 *)&D_8018D1FC); - func_80154190(p, 0); - break; - case 1: - *(s32 *)(p + 0x238) = 0; - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80154150((s32)p, 0); - break; - case 2: - if ((*(s32 *)(p + 0x238))++ >= 2) { - if ((*(u32 *)(p + 0x44) & 4) != 0) { - *(s32 *)(p + 0x234) = 0; - *(s32 *)(p + 0x238) = 0; - func_80154150((s32)p, 0); - break; - } - *(s32 *)(p + 0x238) = 0; - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80154150((s32)p, 2); - break; - } - func_80154190(p, 0); - break; - case 3: - func_80147324(0x445); - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80155440((s32 *)p); - func_80154150((s32)p, 3); - func_80154A74((s32)p, 0x13); - break; - case 4: - break; - default: - break; - } - } else { - func_80146DB8((s32 *)p, (s32 *)&D_8018D1FC); - func_80154150((s32)p, 5); - func_80154A74((s32)p, 0x1C); - } - } - - if (*(s32 *)(p + 0xB4) == (s32)&D_800D49F4) { - func_80147A84((s32)p); - func_801473EC((s32 *)p); - if ((D_800B99DA & 3) == 0) { - func_8014C010((s32)p, 1); - } - } - if (((s32 (*)(s32))func_80161208)((s32)p) == 0) { /* §17a-1 */ - ((void (*)(u8 *))func_801483E8)(p); - func_80172590(p); - } -} - - -DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015A1C8 (src/shared) */ - -DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015A1FC (src/shared) */ - -DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015A230 (src/shared) */ - - -extern void (*D_8018D3E8[])(void); - -void func_8015A264(void *a0) { - D_8018D3E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015A2A0 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay - -extern int D_8018D20C; - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_801553A8(s32 *a0); -extern s32 func_80172608(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015A2D8(s32 param_1) -{ - unsigned char bVar1; - - ((void (*)(int, int *))func_80146DB8)(param_1, &D_8018D20C); - if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { - func_80154150(param_1, 10); - func_80154A74(param_1, 0x1c); - *(int *)(param_1 + 0x2c) = 0xfffc0000; - goto LAB_8015a38c; - } - bVar1 = *(unsigned char *)(param_1 + 0xa9); - switch (bVar1) { - case 0x41: - func_80154150(param_1, 7); - break; - case 0x53: - case 0x73: - func_80154150(param_1, 6); - break; - default: - *(int *)(param_1 + 0x23c) = 0; - goto LAB_8015a390; - } - func_80154A74(param_1, 0x21); -LAB_8015a38c: - *(int *)(param_1 + 0x23c) = 0; -LAB_8015a390: - func_8014C010(param_1, 2); - ((void (*)(int))func_801553A8)(param_1); - ((void (*)(int))func_80172608)(param_1); - ((void (*)(int))func_80146CA0)(param_1); - return; -} - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8015A3C8.c b/src/ov_SC02_003/ov_SC02_003_jr_8015A3C8.c deleted file mode 100644 index 45f42fc2b..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8015A3C8.c +++ /dev/null @@ -1,1472 +0,0 @@ -#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. */ -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - -/* func_8015A3C8 (ov_SC01_077_after, 493 ins, jtbl_801D8B34) — Phase 26 crack - * Entity air/fall update: 7-case switch (0/1/2/6 shared, 3/4/5 own, no default block), - * then a big velocity-clamp tail with a nested char switch (0x41 / 0x53+0x73). - * PIN-FREE. Offset-pure (s32 arg0 + raw offsets) — x134 template-safe. - */ -extern u8 D_80078E78[]; -extern s16 currentLocationId; - -extern s32 func_80149D9C(s32 a0); -extern void func_80149FA8(void); -extern s32 func_80149FB0(s32 a0); -extern s32 func_80161B84(void *a0); -extern s32 func_80161B18(void *a0); -extern s32 func_8014A048(s32 a0); -extern void func_8014A218(void); -extern int func_80161BE0(void *param_1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149AA8(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern s32 func_80149B54(s32 * arg0); -extern void func_80149BAC(s32 *a0); -extern s32 func_801498E0(s32 *a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_80149CD4(s32 a0); -extern void func_8015E880(s32 *a0); -extern s32 func_801496D4(void *a0); -extern void func_80149704(void); -extern s32 func_801488A8(u8 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern void func_8015AC48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern u16 func_801487F4(s32 *a0); -extern s32 func_8016F1C4(void); -extern s32 func_8015AB7C(s32 a0); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_80148824(void *arg0); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_8015C6E0(s32 *a0); -extern void func_8014E934(s32 _arg0); -extern void func_80155440(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80161278(void *a0); -extern void func_80161C24(s32 a0, s32 a1); -extern s32 func_80172608(u8 *a0); -extern void func_801483E8(void); - -s32 func_8015A3C8(arg0) -s32 arg0; -{ - - extern void (*D_8018D298[])(void *); - extern u16 D_800B99DA; - extern s32 D_800D5428; - extern u8 D_8018D21C; - s32 min; - s32 grav; - s32 hi; - s32 t; - s32 lo1; - s32 lo2; - s32 sv; - u8 *p; - - p = D_80078E78; - if (currentLocationId == 0x302A) { - min = -0xC0000; - grav = -0x4000; - hi = 0; - } else { - min = -0xB0000; - grav = -0x1000; - hi = 0; - } - - if (func_80149D9C(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149FA8)(arg0); - return; - } - ((void (*)(s32))func_80149FB0)(arg0); - if (((s32 (*)(s32))func_80161B84)(arg0) != 0) { - return; - } - if (((s32 (*)(s32))func_80161B18)(arg0) != 0) { - return; - } - if (*(s32 *)(arg0 + 0xB4) == (s32)&D_800D5428) { - if (func_8014A048(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8014A218)(arg0); - return; - } - } - if (((s32 (*)(s32))func_80161BE0)(arg0) != 0) { - return; - } - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 2: - case 6: - if (((s32 (*)(s32))func_80149AA8)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(s32))func_80149B54)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149BAC)(arg0); - return; - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - break; - } - - if (func_80149CD4(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015E880)(arg0); - return; - } - if (((s32 (*)(s32))func_801496D4)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149704)(arg0); - return; - } - if (((s32 (*)(s32))func_801488A8)(arg0) == 0) { - sv = *(s32 *)(arg0 + 0x2C); - D_8018D298[*(u16 *)arg0]((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80147078)(arg0, 0); - ((void (*)(s32))func_80159B70)(arg0); - if (func_8015ABD4(arg0, sv, min) != 0) { - func_8015AC48(arg0); - } - return; - } - - ((void (*)(s32))func_80148AFC)(arg0); - if (*(u32 *)(arg0 + 0x44) & 0x200) { - if (*(s32 *)(arg0 + 0x23C) == 0) { - func_80154150(arg0, 0xA); - func_80154A74(arg0, 0x1C); - } - ((void (*)(s32, s32))func_80146DB8)(arg0, (s32)&(*(s32 *)&D_8018D21C)); - func_80147AD4(arg0, 0, 0, 0); - } else { - switch (*(u8 *)(arg0 + 0xA9)) { - case 0x41: - func_80147AD4(arg0, 0, 0, grav); - if (*(s32 *)(arg0 + 0x23C) == 0) { - if (((s32 (*)(s32))func_801487F4)(arg0) & 4) { - if (*(s32 *)(arg0 + 0x2C) < -0x40000) { - *(s32 *)(arg0 + 0x2C) = -0x40000; - } - } else if (func_8016F1C4() == 0) { - if ((*(s16 *)(p + 0x26) < 0x20) || (*(s16 *)(p + 0x2E) < 0x20)) { - if (*(s32 *)(arg0 + 0x2C) < -0x40000) { - *(s32 *)(arg0 + 0x2C) = -0x40000; - } - } else if ((*(s16 *)(p + 0x26) < 0x40) || (*(s16 *)(p + 0x2E) < 0x30)) { - if (*(s32 *)(arg0 + 0x2C) < -0x80000) { - *(s32 *)(arg0 + 0x2C) = -0x80000; - } - } - } - if (*(s32 *)(arg0 + 0x2C) < min) { - *(s32 *)(arg0 + 0x2C) = min; - } - if (*(s32 *)(arg0 + 0x2C) >= hi) { - *(s32 *)(arg0 + 0x2C) = hi; - } - lo1 = -0x94000; - t = *(s32 *)(arg0 + 0x2C); - if (t < lo1) { - func_80154150(arg0, 8); - } else if (t < -0x70000) { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 7, func_8015AB7C(arg0) & 0xFFFF); - } else { - func_80154150(arg0, 6); - } - } - break; - case 0x53: - case 0x73: - *(s32 *)(arg0 + 0x2C) = (min * (((s32 (*)(s32))func_80148824)(arg0) & 0xFF)) / 127; - if (func_8016F1C4() == 0) { - if ((*(s16 *)(p + 0x26) < 0x40) || (*(s16 *)(p + 0x2E) < 0x30)) { - if (*(s32 *)(arg0 + 0x2C) < -0x80000) { - *(s32 *)(arg0 + 0x2C) = -0x80000; - } - } - if ((*(s16 *)(p + 0x26) < 0x20) || (*(s16 *)(p + 0x2E) < 0x20)) { - if (*(s32 *)(arg0 + 0x2C) < -0x40000) { - *(s32 *)(arg0 + 0x2C) = -0x40000; - } - } - } - if (*(s32 *)(arg0 + 0x2C) < min) { - *(s32 *)(arg0 + 0x2C) = min; - } - if (*(s32 *)(arg0 + 0x2C) >= hi) { - *(s32 *)(arg0 + 0x2C) = hi; - } - func_80147A84(arg0); - if (*(s32 *)(arg0 + 0x23C) == 0) { - lo2 = -0x94000; - t = *(s32 *)(arg0 + 0x2C); - if (t < lo2) { - func_80154150(arg0, 8); - } else if (t < -0x70000) { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 7, func_8015AB7C(arg0) & 0xFFFF); - } else { - func_80154150(arg0, 6); - } - } - break; - } - } - - ((void (*)(s32))func_801473EC)(arg0); - if ((min >= *(s32 *)(arg0 + 0x2C)) && !(D_800B99DA & 7)) { - func_8014C010(arg0, 2); - } - if (((s32 (*)(s32))func_8014D738)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015C6E0)(arg0); - return; - } - if (((s32 (*)(s32))func_8014E934)(arg0) != 0) { - ((void (*)(s32))func_80155440)(arg0); - func_80154150(arg0, 0x12); - func_80154A74(arg0, 0x17); - *(s32 *)(arg0 + 0x23C) = 1; - } else { - if (*(s32 *)(arg0 + 0x23C) != 0) { - func_801553C0(arg0); - func_80154150(arg0, 6); - func_80154A74(arg0, 0x21); - } - *(s32 *)(arg0 + 0x23C) = 0; - } - if (((s32 (*)(s32))func_80161278)(arg0) == 0) { - if (*(u16 *)(arg0 + 0xB8) & 0x2000) { - func_80161C24(arg0, *(u16 *)(arg0 + 0x16E)); - } - ((void (*)(s32))func_80172608)(arg0); - ((void (*)(s32))func_801483E8)(arg0); - } -} - - -DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015AB7C (src/shared) */ - -DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015ABD4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_8018D22C arg) -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018D22C; - -void func_8015AC48(s32 arg0) -{ - func_80154150(arg0, 9); - func_80146DB8((s32 *)arg0, &D_8018D22C); - func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); -} - - -DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015AC90 (src/shared) */ - -DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015ACC4 (src/shared) */ - -DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015AD08 (src/shared) */ - - -extern void (*D_8018D3F0[])(void); - -void func_8015AD3C(void *a0) { - D_8018D3F0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015AD78 (src/shared) */ - -DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015ADB0 (src/shared) */ - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8015AE2C.c b/src/ov_SC02_003/ov_SC02_003_jr_8015AE2C.c deleted file mode 100644 index 415f53f92..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8015AE2C.c +++ /dev/null @@ -1,1880 +0,0 @@ -#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. */ -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -/* ==== end §8b carried decl layer ==== */ - - -/* func_8015AE2C (ov_SC01_077_after, 562 ins, jtbl_801D8B54) — Phase 26 crack - * Entity main-update dispatcher: 7-case switch (0/1/2/6 shared, 3/4/5 own, no default - * block — out-of-range falls to the after-switch join), then movement/clamp/decay tail. - * PIN-FREE. Offset-pure (s32 arg0 + raw offsets) — ×134 template-safe. - * - * match_one: MATCH (562 ins). rtu_match (whole-TU): MATCH (562 ins) — see func_8015AE2C.md - * for the two TU-side prerequisites (engine_core.h DEFINE_func_8015BEC4 extern must drop its - * `(void)` prototype, and the def must stay K&R) plus the jtbl_carve trailing-pad-word note. - * - * Signature: `s32` return + K&R def are REQUIRED by the TU, byte-neutral vs void/ANSI here - * (both verified MATCH 562): engine_core.h's thunk DEFINE_func_8015BEC4 does - * `return func_8015AE2C();` (s32, zero-arg call) — only an unprototyped K&R def coexists - * with that call. §41d does not bite on this body (it has early `return;`s). - * - * jtbl_801D8B54 = 7 entries [0,1,2,6]->0x8015AEE4 [3]->0x8015AFE0 [4]->0x8015AFF0 - * [5]->0x8015B000, bound `sltiu 7`, default(out-of-range) -> 0x8015B044 (after-switch). - * The raw dlabel's 8th word 0x00000000 is NOT a table entry: it is the original TU's - * intra-TU `.align 3` pad between consecutive jtbls (B34/B54/B74 chain) — the compiled - * object emits exactly 28 B; the pad must stay in the raw post-carve data piece. - */ -extern s32 func_80161A60(s32 a0); -extern u16 func_801487F4(s32 *a0); -extern s32 func_80149FB0(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern void func_801577C8(); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8015B8F8(s32 *a0); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801498E0(s32 *a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 func_8015B858(u8 *a0); -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147814(s32 a0, s32 a1); -extern s32 func_800CF8B4(void); -extern s32 func_801491C4(s32 a0); -extern int func_80148AFC(void *a0); -extern s32 func_80149184(s32 a0); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern s32 func_80146E98(s32 a0); -extern void func_80146D90(s32 a0); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32 *a0); -extern s32 func_80172644(u8 *a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_8014C050(s32 a0, s32 a1); -extern void func_800CCB78(s32 a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154274(s32 *a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80146CA0(void *a0); -extern s32 func_8014A674(s32 *a0); -extern void func_8014E434(void); -extern void func_8015CC40(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern void func_8014E6A0(void); -extern void func_8015CF8C(s32 *a0); -extern s32 func_801725A4(u8 *a0); - -s32 func_8015AE2C(arg0) -s32 arg0; -{ - extern void (*D_8018D298[])(void *); - extern s16 D_801152A0; - extern u8 D_800D4BE0[]; - extern s32 D_800D4E94; - extern s32 D_800D4ED4; - extern u8 D_800D4F8C[]; - extern s32 D_800D4A9C; - extern s32 D_800D4B48; - - s32 flag; - s32 r; - s32 lim; - s32 doit; - s32 t; - - flag = 0; - if ((func_80161A60(arg0) != 0) && (((s32 (*)(s32))func_801487F4)(arg0) & 0x40) && (*(s32 *)(arg0 + 0x34) >= 0)) { - flag = 1; - if (*(s32 *)(arg0 + 0x5C) == 0) { - *(s32 *)(arg0 + 0x58) = 0; - *(s32 *)(arg0 + 0x54) = 0; - *(s32 *)(arg0 + 0x50) = 0; - } - *(s32 *)(arg0 + 0x5C) = 1; - } else { - *(s32 *)(arg0 + 0x5C) = 0; - } - ((void (*)(s32))func_80149FB0)(arg0); - if (*(s32 *)(arg0 + 0x1B0) == 0) { - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 2: - case 6: - if (*(s32 *)(arg0 + 0xB4) == (s32)&(*(s32 *)&D_800D4BE0)) { - if (func_80149C08(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_801577C8)(arg0); - return; - } - } - if ((*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4E94) && - (*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4ED4) && - (*(s32 *)(arg0 + 0xB4) != (s32)&(*(s32 *)&D_800D4F8C))) { - if (func_8015B6F4(arg0) == 0) { - ((void (*)(s32))func_8015B7B4)(arg0); - } - } else { - if (*(u16 *)(arg0 + 0xB8) == 0x8000) { - func_80154A74(arg0, 0x22); - ((void (*)(s32))func_8015B8F8)(arg0); - *(u32 *)(arg0 + 0x44) &= ~2; - if (flag != 0) { - ((void (*)(s32, s32, s32, s32))func_80146994)(0x3B, arg0, 0, 0); - } - } - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - break; - } - } - if (*(u32 *)(arg0 + 0x44) & 2) { - ((void (*)(s32, s32))func_80155FF8)(arg0, *(u8 *)(arg0 + 0x1AA)); - } else { - if ((*(s32 *)(arg0 + 0x240) == 0) && (((s32 (*)(s32))func_8015B858)(arg0) != 0)) { - *(s32 *)(arg0 + 0x240) += 1; - } - if ((*(s32 *)(arg0 + 0xB4) == (s32)&(*(s32 *)&D_800D4BE0)) && (*(u16 *)(arg0 + 0xB8) & 0x8000)) { - ((void (*)(s32))func_8015B8F8)(arg0); - } else if ((*(s32 *)(arg0 + 0xB4) == (s32)&D_800D4A9C) || - (*(s32 *)(arg0 + 0xB4) == (s32)&D_800D4B48)) { - if (*(u16 *)(arg0 + 0xB8) & 0x8000) { - if (*(s32 *)(arg0 + 0x34) >= 0) { - *(u16 *)(arg0 + 0xB8) += 1; - } - } - } - } - if (*(u8 *)(arg0 + 0x1C6) != 0) { - if (((s32 (*)(s32))func_801487F4)(arg0) & 0x40) { - func_80148038(arg0, 0xFFFE6000); - } else { - func_80148038(arg0, 0x1A000); - } - lim = 0x40000; - if ((*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4E94) && - (*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4ED4) && - (*(s32 *)(arg0 + 0xB4) != (s32)&(*(s32 *)&D_800D4F8C))) { - lim = 0xC0000; - } - if (*(s32 *)(arg0 + 0x34) < -lim) { - *(s32 *)(arg0 + 0x34) = -lim; - } else if (lim < *(s32 *)(arg0 + 0x34)) { - *(s32 *)(arg0 + 0x34) = lim; - } - func_80147460(arg0); - } else { - if (*(s32 *)(arg0 + 0x34) < 0) { - if (((s32 (*)(s32))func_801487F4)(arg0) & 0x40) { - func_80147814(arg0, 0xFFFF0000); - } - func_80147814(arg0, 0x10000); - } - } - if (func_800CF8B4() != 0) { - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = ((*(u16 *)&D_801152A0) + func_801491C4(arg0)) & 0xFFF; - } - if (flag == 0) { - if ((u8)((s32 (*)(s32))func_80148AFC)(arg0)) { - (*(u16 *)&D_801152A0) = func_80149184(arg0); - ((void (*)(s32, s32))func_80146E90)(arg0, 4); - if (*(s32 *)(arg0 + 0x2C) > -0x80000) { - *(s32 *)(arg0 + 0x2C) = -0x80000; - func_80147A30(arg0, -0x10000, 0xBA000); - } else { - func_80147A30(arg0, -0x1000, 0xBA000); - } - } else { - if (func_80146E98(arg0) != 0) { - func_80146D90(arg0); - } - } - func_80147A84(arg0); - ((void (*)(s32))func_801473EC)(arg0); - if (*(u8 *)(arg0 + 0x1C6) == 0) { - func_80148038(arg0, 0x1A000); - func_80147460(arg0); - } - } else { - ((void (*)(s32))func_80172644)(arg0); - if ((u8)((s32 (*)(s32))func_80148AFC)(arg0)) { - (*(u16 *)&D_801152A0) = func_80149184(arg0); - func_80146D90(arg0); - func_80147AD4(arg0, 0, 0, 0xFFFF4000); - *(s32 *)(arg0 + 0x50) += *(s32 *)(arg0 + 0x10); - *(s32 *)(arg0 + 0x54) += *(s32 *)(arg0 + 0x14); - *(s32 *)(arg0 + 0x58) += *(s32 *)(arg0 + 0x18); - if (*(s32 *)(arg0 + 0x50) > 0xBA000) { - *(s32 *)(arg0 + 0x50) = 0xBA000; - } else if (*(s32 *)(arg0 + 0x50) < -0xBA000) { - *(s32 *)(arg0 + 0x50) = -0xBA000; - } - if (*(s32 *)(arg0 + 0x54) > 0xBA000) { - *(s32 *)(arg0 + 0x54) = 0xBA000; - } else if (*(s32 *)(arg0 + 0x54) < -0xBA000) { - *(s32 *)(arg0 + 0x54) = -0xBA000; - } - if (*(s32 *)(arg0 + 0x58) > 0xBA000) { - *(s32 *)(arg0 + 0x58) = 0xBA000; - } else if (*(s32 *)(arg0 + 0x58) < -0xBA000) { - *(s32 *)(arg0 + 0x58) = -0xBA000; - } - *(s32 *)(arg0 + 0x10) = *(s32 *)(arg0 + 0x50); - *(s32 *)(arg0 + 0x14) = *(s32 *)(arg0 + 0x54); - *(s32 *)(arg0 + 0x18) = *(s32 *)(arg0 + 0x58); - ((void (*)(s32))func_801473EC)(arg0); - } else { - doit = 0; - if (*(s32 *)(arg0 + 0x50) != 0) { - doit = 1; - if (*(s32 *)(arg0 + 0x50) >= 0) { - *(s32 *)(arg0 + 0x50) -= 0x8000; - if (*(s32 *)(arg0 + 0x50) < 0) { - *(s32 *)(arg0 + 0x50) = 0; - } - } else { - *(s32 *)(arg0 + 0x50) += 0x8000; - if (*(s32 *)(arg0 + 0x50) >= 0) { - *(s32 *)(arg0 + 0x50) = 0; - } - } - } - if (*(s32 *)(arg0 + 0x54) != 0) { - doit = 1; - if (*(s32 *)(arg0 + 0x54) >= 0) { - *(s32 *)(arg0 + 0x54) -= 0x8000; - if (*(s32 *)(arg0 + 0x54) < 0) { - *(s32 *)(arg0 + 0x54) = 0; - } - } else { - *(s32 *)(arg0 + 0x54) += 0x8000; - if (*(s32 *)(arg0 + 0x54) >= 0) { - *(s32 *)(arg0 + 0x54) = 0; - } - } - } - if (*(s32 *)(arg0 + 0x58) != 0) { - doit = 1; - if (*(s32 *)(arg0 + 0x58) >= 0) { - *(s32 *)(arg0 + 0x58) -= 0x8000; - if (*(s32 *)(arg0 + 0x58) < 0) { - *(s32 *)(arg0 + 0x58) = 0; - } - } else { - *(s32 *)(arg0 + 0x58) += 0x8000; - if (*(s32 *)(arg0 + 0x58) >= 0) { - *(s32 *)(arg0 + 0x58) = 0; - } - } - } - if (doit != 0) { - *(s32 *)(arg0 + 0x10) = *(s32 *)(arg0 + 0x50); - *(s32 *)(arg0 + 0x14) = *(s32 *)(arg0 + 0x54); - *(s32 *)(arg0 + 0x18) = *(s32 *)(arg0 + 0x58); - ((void (*)(s32))func_801473EC)(arg0); - } - if (!(*(u32 *)(arg0 + 0x44) & 2)) { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 0xF, 0x12); - } - } - t = func_8014C050(arg0, 0x3B); - if (t != 0) { - func_800CCB78(t); - } - if ((*(u16 *)(arg0 + 0x1C8) & 0x1F) == 0) { - ((void (*)(s32, s32, s32, s32))func_80146994)(0x3C, arg0, 0, 0); - } - } - if (*(s32 *)(arg0 + 0x1B0) != 0) { - if (*(s32 *)(arg0 + 0x1B0) == 1) { - func_80154A74(arg0, 0x22); - func_80154150(arg0, 0xF); - } else { - ((void (*)(s32, s32))func_80154274)(arg0, *(s32 *)(arg0 + 0x1B4)); - } - } - r = ((s32 (*)(s32))func_80161488)(arg0); - if (r & 5) { - *(u32 *)(arg0 + 0x44) &= ~2; - if (*(s32 *)(arg0 + 0xB4) == (s32)&D_800D4A9C) { - func_80154150(arg0, 0xE); - } else { - func_80154150(arg0, 0x10); - } - ((void (*)(s32))func_80146CA0)(arg0); - } - if (r == 0) { - if ((((s32 (*)(s32))func_8014A674)(arg0) != 0) && (((s32 (*)(s32))func_8014E434)(arg0) != 0)) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015CC40)(arg0); - } else if ((((s32 (*)(s32))func_8014A69C)(arg0) != 0) && (((s32 (*)(s32))func_8014E6A0)(arg0) != 0)) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015CF8C)(arg0); - } else { - ((void (*)(s32))func_801725A4)(arg0); - } - } -} - -DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015B6F4 (src/shared) */ - -DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015B7B4 (src/shared) */ - -DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015B858 (src/shared) */ - -DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015B8F8 (src/shared) */ - -extern s32 func_8015AE2C(); - -// @class: plumbing -// @stuck: none — MATCH (271/271, pin-free, zero asm). The ONLY residual is DEF-SIDE plumbing, and it is now named exactly: the in-TU instantiation `DEFINE_func_8015BEE4()` (engine_core.h:1851-1855) expands to `extern s32 func_8015B950(void);` INSIDE ov_SC01_077_jr_8015AE2C.c, ~14 lines BELOW this definition, so the 1-param def collides with a `(void)` prototype -> `conflicting types for func_8015B950` (.run/bank_func_8015B950.log). §73 PARAMS axis / T0. Surgical fix = §65b de-macroize that ONE instantiation (blast radius: this TU); the fleet-wide `(void)`->`()` header edit is §63 and must be R22-validated. -/* func_8015B950 (ov_SC01_077_jr_8015AE2C, 271 ins, jtbl_801D8B74) — SESSION-21 re-verified - * - * ── ROUND-2 INDEPENDENT RE-VERIFICATION (2026-07-27, fresh agent, §88e discipline) ───────────── - * match_one : MATCH (271 ins) against the CURRENT tree — §87 staleness re-checked today. - * .text size: compiled .text = 0x43C = 1084 B = 271 ins, EXACTLY the target's declared 0x43C - * ("nonmatching func_8015B950, 0x43C"). So this is NOT a §83a length drift hiding - * behind a zero count — the count is over equal-length streams. - * jtbl : RE-DECODED MECHANICALLY, not inherited. Compiled .rodata = 0x1C = 28 B = 7 words, - * 7x R_MIPS_32 -> .text with implicit addends [58,58,58,E0,F0,100,58]; +0x8015B950 - * = [8015B9A8, 8015B9A8, 8015B9A8, 8015BA30, 8015BA40, 8015BA50, 8015B9A8]. - * Diffed word-for-word against asm/ov_SC01_077/data/tail14.data.s:15-23 — 7/7 identical. - * symcheck : SYMS-DIFF target=35 draft=34, sole MISSING = jtbl_801D8B74. This is the §81 jr - * FALSE POSITIVE, re-confirmed here by reading the relocs: gcc emits its OWN table and - * references it with R_MIPS_HI16/LO16 against the SECTION `.rodata` (t.o +0x40/+0x48), - * so the splat's dlabel NAME can never appear in the draft object's relocation set. - * Nothing is dropped and nothing is invented: the draft's other 34 symbols are exactly - * the target's other 34. - * FAMILY : the x138 remap is clean and §84-safe. Every sibling is 271 ins with an IDENTICAL - * callee set; only THREE names vary per overlay — the two data labels and the jtbl: - * ov_SC01_077 D_8018D22C / D_8018D298 / jtbl_801D8B74 - * ov_SC03_099 D_80185A50 / D_80185ABC / jtbl_801BD898 - * ov_SC06_008 D_80187E44 / D_80187EB0 / jtbl_801A8734 - * The pair is always +0x6C apart, and NO literal in this draft encodes that distance - * (both labels are referenced by name), so there is no §84 derived-offset hazard. - * D_8011F9C4 is fleet-constant (main-EXE data) and must NOT be remapped. - * - * match_one: MATCH (271 ins) against the CURRENT tree (§87 staleness re-checked, 2026-07-27). - * PIN-FREE, zero asm, offset-pure (s32 arg0 + raw offsets) — x138 template-safe. - * Provenance: this is the Phase-26 crack (.run/phase26-cracks/func_8015B950.c) re-gated verbatim, - * with ONE deliberate change: the definition's return type void -> s32. - * - `void func_8015B950(s32 arg0)` : MATCH (271 ins) [the Phase-26 form] - * - `s32 func_8015B950(s32 arg0)` : MATCH (271 ins) [shipped — §3a-1 void->s32 is byte-neutral] - * The fleet/engine_core.h canonical decl is `extern s32 func_8015B950(void);` (engine_core.h:1852), - * and the last bank attempt (.run/bank_func_8015B950.log) died on `conflicting types for - * func_8015B950`. Shipping the s32 return kills the §73 RETURN axis for free and leaves only the - * cheap T0 PARAMS axis for the ladder (fix_header_decl.py / --fix-def-sig / cast_call_sites). - * Both forms are byte-identical, so the orchestrator may swap the return type back at zero cost. - * - * SYMBOLS (§58 rules 1/2 — all splat spellings, all verified present): - * D_8018D298 asm/ov_SC01_077/data/tail.data.s:4355 (the state-handler vtable) - * D_8018D22C asm/ov_SC01_077/data/tail.data.s:4293 - * D_8011F9C4 main-EXE data; spelled `extern s32 D_8011F9C4;` in 5+ already-banked TUs - * jtbl_801D8B74 asm/ov_SC01_077/data/tail14.data.s:15 (compiler jump table — not named in C) - * - * JTBL VERIFIED (§8a gate): compiled .rodata = exactly 0x1C B / 7 words, 7x R_MIPS_32 .text with - * addends [0x58,0x58,0x58,0xE0,0xF0,0x100,0x58] -> +0x8015B950 = [B9A8,B9A8,B9A8,BA30,BA40,BA50, - * B9A8] == the original words at 0x801D8B74..0x801D8B8C. Bound `sltiu $v0,$v1,0x7` matches. - * The raw dlabel's 8th word 0x00000000 is NOT an entry — it is the intra-TU `.align 3` pad of the - * B34/B54/B74 jtbl chain; the object can never emit it (maspsx drops .align), so it must stay in - * the post-carve RAW data piece (the §53/§62/§81 carve chain applies at bank time). - * - * Same family as the TU's own already-matched func_8015AE2C: 7-case switch on ((s32 (*)(s32))func_801619A4)() - * (0/1/2/6 shared, 3/4/5 own, no default block — out-of-range and every `break` fall to the - * after-switch join), then a chain of "state handler" tests, each dispatching - * D_8018D298[*(u16*)arg0](arg0) and returning. - * - * THREE LEVERS (draft -> MATCH in 3 compiles): - * - * 1. PROLOGUE CONSTANT = an INITIALIZED LOCAL, not a literal in the compare. - * Target opens with `lui $s2, 0xFFF5` in the *prologue*, used once ~200 ins later in - * `slt $v0,$s2,$s1`. No gcc-2.7.2 pass hoists a (set reg const_int) across basic blocks - * (loop.c needs a loop; cse/combine/sched never move insns between BBs) — so the insn must - * have been EMITTED in the first BB, i.e. the constant is a local initialized at the top of - * the function. cse then cannot fold it back into the compare: the `slt` operand predicate is - * `arith_operand`, which rejects a CONST_INT wider than 16 bits, so validate_change fails and - * the pseudo survives. Its live range spans every call -> global.c gives it a callee-saved reg. - * Writing `z > -0xB0000` inline instead emits the `lui` into the branch delay slot next to the - * compare (caller-saved $v0) and the function is 1 insn short. => `s32 lim = -0xB0000;` at top. - * - * 2. `lh` vs `lhu`: a short->short copy is a pure HImode move and gcc emits `lhu`. The target's - * `lh $v0,0x26($s0)` means the value passed through an SImode (int) temp: expand makes - * (set (reg:SI) (sign_extend (mem:HI))) + (set (mem:HI) (subreg:HI ...)), and combine cannot - * merge them (the merged form is mem<-mem, which no movhi accepts) so the sign-extending load - * survives. => route both halfword copies through the `s32 t` temp. - * - * 3. THE `goto` LAYOUT — dodging jump.c's store-flag conversion (jump.c:1005-1065). - * An if/else chain writing 0/1 into `doit` makes gcc collapse the last pair into - * `sltiu $v0,$v0,1`. jump.c fires that conversion when the insn immediately after a - * conditional jump is a lone `SET pseudo, CONST_INT` whose following simplejump targets the - * SAME label as the branch (jump.c:1038 `reallabelprev == temp || ... JUMP_LABEL(temp4) == - * JUMP_LABEL(insn)`) — exactly the shape of `if (c) x=0; else x=1;`. - * The target instead cross-jumps ALL the `doit=0` exits into ONE shared block placed after the - * `doit=1` fall-through; reorg's fill_slots_from_thread then COPIES that single set into all - * three branch delay slots and redirects each branch past it (which is why `addu $v0,$zero, - * $zero` appears 3x in delay slots and the shared block vanishes). A `goto zero;` / `goto one;` - * chain expresses that layout directly, and each conditional jump is then followed by a - * compare/call rather than a lone const set, so the store-flag conversion never triggers. - * GENERAL RULE: multiple predicates that all assign the SAME constant to one flag => write - * them as `goto` to a shared assignment, never as an if/else ladder. - */ -extern s32 D_8011F9C4; -extern s32 D_8018D22C; - -extern s32 func_80161B18(void); -extern s32 func_801619A4(s32*); -extern s32 func_80149AA8(s32*); -extern void func_80149AD4(s32*); -extern s32 func_80149B54(s32*); -extern void func_80149BAC(s32*); -extern s32 func_801498E0(s32*); -extern s32 func_80149954(s32); -extern s32 func_80149A64(s32*); -extern void func_800CCCC0(s32 a0); -extern s32 func_80149CD4(s32 a0); -extern void func_8015E880(s32*); -extern s32 func_80149744(struct S_80149744*); -extern void func_80149788(void); -extern s32 func_801496D4(void*); -extern void func_80149704(void); -extern int func_80148AFC(void*); -extern void func_80146D90(s32 a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_801541D8(u8*, s32, s32); -extern s32 func_801488A8(u8*); -extern void func_80147078(s32*, s16); -extern void func_8015A264(void*); -extern s32 func_80013294(void*, void*); -extern void func_80159B70(void*); -extern s32 func_8016F1AC(void); -extern s32 func_80029178(s32 a0); -extern void func_80146DB8(s32*, s32*); -extern s32 func_80161CD0(s32, s32); -extern s32 func_80161208(s32 a0); -extern s32 func_801725A4(u8*); - -s32 func_8015B950(s32 arg0) -{ - - extern void (*D_8018D298[])(void *); - s16 sp10[4]; - s16 sp18[4]; - s32 t; - s32 z; - s32 doit; - s32 lim = -0xB0000; - - if (func_80161B18() != 0) { - return; - } - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 2: - case 6: - if (((s32 (*)(s32))func_80149AA8)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(s32))func_80149B54)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149BAC)(arg0); - return; - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - break; - } - if (func_80149CD4(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015E880)(arg0); - return; - } - if (((s32 (*)(s32))func_80149744)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149788)(arg0); - return; - } - if (((s32 (*)(s32))func_801496D4)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149704)(arg0); - if (((u8)((s32 (*)(s32))func_80148AFC)(arg0)) == 0) { - func_80146D90(arg0); - } - if ((*(s32 *)(arg0 + 0x24) | *(s32 *)(arg0 + 0x2C)) != 0) { - func_80154150(arg0, 0xF); - } else { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 0xD, 6); - } - *(s32 *)(arg0 + 0x238) = 1; - return; - } - if (((s32 (*)(s32))func_801488A8)(arg0) != 0) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = 0; - t = *(s16 *)(arg0 + 0x26); - sp18[0] = t; - sp18[1] = 0; - t = *(s16 *)(arg0 + 0x2E); - sp18[2] = t; - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32, s32))func_80147078)(arg0, 1); - ((void (*)(s32))func_8015A264)(arg0); - t = -(((s32 (*)(s16 *, s16 *))func_80013294)(sp10, sp18) << 0x10); - if (t < *(s32 *)(arg0 + 0x2C)) { - *(s32 *)(arg0 + 0x2C) = t; - } - return; - } - if (*(u16 *)(arg0 + 0xB8) == 0x8000) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32, s32))func_80147078)(arg0, 0); - ((void (*)(s32))func_80159B70)(arg0); - return; - } - z = *(s32 *)(arg0 + 0x2C); - if (func_8016F1AC() != 0) { - goto zero; - } - if (z <= lim) { - goto one; - } - if (D_8011F9C4 == 0) { - goto zero; - } - if (((u8)func_80029178(0x21)) != 0) { - goto zero; - } -one: - doit = 1; - goto join; -zero: - doit = 0; -join: - if (doit != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32, s32))func_80147078)(arg0, 0); - ((void (*)(s32))func_80159B70)(arg0); - func_80154150(arg0, 9); - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018D22C); - ((void (*)(s32, s32))func_80161CD0)(arg0, *(u16 *)(arg0 + 0x16E)); - return; - } - if (func_80161208(arg0) == 0) { - ((void (*)(s32))func_801725A4)(arg0); - } -} - -DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015BD8C (src/shared) */ - -DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015BDD0 (src/shared) */ - -DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015BE04 (src/shared) */ - - - -void func_8015BE38(struct Obj *a0) { - - extern void (*D_8018D40C[])(void); - D_8018D40C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015BE74 (src/shared) */ - -DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015BE94 (src/shared) */ - -DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015BEC4 (src/shared) */ - -DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015BEE4 (src/shared) */ - -DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015BF04 (src/shared) */ - -DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015BF48 (src/shared) */ - -DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015BF7C (src/shared) */ - -DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015BFB0 (src/shared) */ - - -extern void (*D_8018D418[])(void); - -void func_8015BFF4(void *a0) { - D_8018D418[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* §71 sibling-first: this is DEFINE_func_8015C0C4 (src/shared/engine_core.h L8919) - * with the two globals replaced by the second parameter and <<6 -> <<7. - * The explicit temporary `t` keeps the first lh ahead of the 0x238 store. - * - * Signature is the fleet canon `(s32 *a0, s32 a1)` declared by - * DEFINE_func_8015BFB0 (engine_core.h L16218) — a private `(s32, s16 *)` - * definition also match_one-MATCHes but breaks the real TU with - * `conflicting types`. The s16 reads are cast at the use site. */ - -DEFINE_func_8015C030() /* dedup: shared engine-core @0x8015C030 (src/shared) */ - - -DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015C08C (src/shared) */ - -DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015C0C4 (src/shared) */ - -#include "common.h" - - - -s32 func_8015C128(s32 param_1) { - extern void func_8015C6E0(int); - extern void (*D_8018D298[])(int); - - int sp10[3]; - int sp20[3]; - int temp_s0; - int temp_v0; - - ((void(*)())func_80149FB0)(); - if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = -0x4000; - ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); - *(int *)(((int)param_1) + 0x234) += sp20[0]; - *(int *)(((int)param_1) + 0x238) += sp20[1]; - *(int *)(((int)param_1) + 0x23C) += sp20[2]; - } - ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), - (int *)(((int)param_1) + 0x234), sp20); - ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); - func_80147A84(((int)param_1)); - ((void(*)(int))func_801473EC)(((int)param_1)); - if (!(D_800B99DA & 3)) { - ((void(*)(int, int))func_8014C010)(((int)param_1), 1); - ((void(*)(int))func_80147324)(0x65F); - } - if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { - D_8018D298[*(u16 *)((int)param_1)](((int)param_1)); - func_8015C6E0(((int)param_1)); - return; - } - temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); - temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); - if (temp_v0 != 0) { - if ((temp_v0 & 0xFF00) != 0x4000) { - ((void(*)(int, int))func_80146E90)(((int)param_1), 6); - ((void(*)(int))func_80146CA0)(((int)param_1)); - return; - } - if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { - ((void(*)(int, int))func_80147078)(((int)param_1), 4); - ((void(*)(int))func_8015C0C4)(((int)param_1)); - } - } else if (temp_s0 == 0) { - D_8018D298[*(u16 *)((int)param_1)](((int)param_1)); - ((void(*)(int, int))func_80147078)(((int)param_1), 3); - ((void(*)(int))func_8015BE94)(((int)param_1)); - } -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8015C32C.c b/src/ov_SC02_003/ov_SC02_003_jr_8015C32C.c deleted file mode 100644 index 877348882..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8015C32C.c +++ /dev/null @@ -1,6274 +0,0 @@ -#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. */ -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018C7B4[]; -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 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 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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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 int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -extern void func_8015795C(int param_1); -extern void func_80161D20(int param_1, u32 param_2); -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -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_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_8018D418[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - - - -extern u16 D_800B99DA; - -extern s32 func_80149FB0(s32 a0); -extern s32 func_801496D4(void*); -extern void func_80149704(void); -extern s32 func_801619A4(s32*); -extern s32 func_80149AA8(s32*); -extern void func_80149AD4(s32*); -extern s32 func_80149B54(s32*); -extern void func_80149BAC(s32*); -extern s32 func_801498E0(s32*); -extern s32 func_80149954(s32); -extern s32 func_80149A64(s32*); -extern void func_800CCCC0(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32*); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80147324(s32 a0); -extern void func_8014D738(void); -extern void func_8014CC28(s32); -extern s32 func_8014F3E8(s32); -extern s32 func_80146E98(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern s32 func_8015BE94(); -extern void func_80159BE4(s32 a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015C6E0(s32*); - -void func_8015C32C(s32 arg0) { - - extern void (*D_8018D298[])(void *); - s32 iVar2; - u32 uVar4; - s32 vin[4]; - s32 vout[4]; - - func_80149FB0(arg0); - if (((s32 (*)(s32))func_801496D4)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149704)(arg0); - return; - } - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 6: - if (((s32 (*)(s32))func_80149AA8)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(s32))func_80149B54)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149BAC)(arg0); - return; - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - } - if ((func_80148AFC((void *)arg0) & 0xff) != 0) { - vin[0] = 0; - vin[1] = 0; - vin[2] = -0x4000; - func_8001382C((s32)*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), vin, vout); - *(s32 *)(arg0 + 0x234) += vout[0]; - *(s32 *)(arg0 + 0x238) += vout[1]; - *(s32 *)(arg0 + 0x23c) += vout[2]; - } - func_8001382C((s16)-*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12), (void *)(arg0 + 0x234), vout); - func_80146DB8((s32 *)arg0, vout); - func_80147A84(arg0); - ((void (*)(s32))func_801473EC)(arg0); - if ((D_800B99DA & 3) == 0) { - func_8014C010(arg0, 1); - func_80147324(0x65f); - } - if (((s32 (*)(s32))func_8014D738)(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015C6E0)(arg0); - return; - } - iVar2 = ((s32 (*)(s32))func_8014CC28)(arg0); - uVar4 = ((u32 (*)(s32))func_8014F3E8)(arg0); - if (uVar4 != 0) { - if ((uVar4 & 0x4000) == 0) { - if (func_80146E98(arg0) != 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - func_80147078((s32 *)arg0, 0); - func_80159BE4(arg0); - } - } else { - func_80147078((s32 *)arg0, 4); - func_8015C0C4(arg0); - } - } else { - if (iVar2 == 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - func_80147078((s32 *)arg0, 3); - ((void (*)(s32))func_8015BE94)(arg0); - } - } -} - - -DEFINE_func_8015C6A4() /* dedup: shared engine-core @0x8015C6A4 (src/shared) */ - -DEFINE_func_8015C6AC() /* dedup: shared engine-core @0x8015C6AC (src/shared) */ - -DEFINE_func_8015C6E0() /* dedup: shared engine-core @0x8015C6E0 (src/shared) */ - - -extern void (*D_8018D424[])(void); - -void func_8015C714(void *a0) { - D_8018D424[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015C750() /* dedup: shared engine-core @0x8015C750 (src/shared) */ - -DEFINE_func_8015C788() /* dedup: shared engine-core @0x8015C788 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (match_one 88/88); fn-ptr-array dispatch, top-level if/else needed branch-polarity invert (small block falls through, big block at L854) - -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_801496D4(void *a0); -extern u16 func_801487F4(s32 *a0); -extern s32 func_801488A8(u8 *a0); -extern void func_80161240(void *a0); -extern s32 func_80146E98(s32 a0); -extern void func_80149704(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80148AAC(u8 *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern void func_80161C24(s32, s32); -extern void func_8014C010(s32 a0, s32 a1); - - -void func_8015C7E4(u16 *param_1) -{ - - extern void (*D_8018D298[])(void*); - extern int D_8018D23C; - s32 iVar1; - u32 uVar2; - - iVar1 = ((s32 (*)(u16 *))func_80161B18)(param_1); - if ((iVar1 == 0) && (iVar1 = ((s32 (*)(u16 *))func_80161B84)(param_1), iVar1 == 0)) { - iVar1 = ((s32 (*)(u16 *))func_801496D4)(param_1); - if (iVar1 != 0) { - ((void (**)(u16*))D_8018D298)[*param_1](param_1); - ((void (*)(u16 *))func_80149704)(param_1); - } else { - uVar2 = ((s32 (*)(u16 *))func_801487F4)(param_1); - if (((uVar2 & 0x80) == 0) && (iVar1 = ((s32 (*)(u16 *))func_801488A8)(param_1), iVar1 == 0)) { - ((void (**)(u16*))D_8018D298)[*param_1](param_1); - ((void (*)(u16 *, s32))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - } else { - iVar1 = ((s32 (*)(u16 *))func_80161240)(param_1); - if (iVar1 == 0) { - iVar1 = ((s32 (*)(u16 *))func_80146E98)(param_1); - if (iVar1 != 0) { - ((void (*)(u16 *))func_80148AAC)(param_1); - ((void (*)(u16 *, void *))func_80146DB8)(param_1, &D_8018D23C); - ((void (*)(u16 *, s32))func_80146E90)(param_1, 0x14); - ((void (*)(u16 *))func_80146CA0)(param_1); - } - if ((param_1[0x5c] & 0x2000) != 0) { - ((void (*)(u16 *, s32))func_80161C24)(param_1, param_1[0xb7]); - ((void (*)(u16 *, s32))func_8014C010)(param_1, 2); - } - } - } - } - } - return; -} - - - - -// @class: struct -// @stuck: none — dispatch + control flow on a single callee-saved param; expect MATCH - -extern s32 func_80149FB0(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80161240(void *a0); -extern s32 func_80146E98(s32 a0); -extern void func_80146CA0(void *a0); -extern void func_80161C24(s32, s32); - - -void func_8015C944(int param_1) { - - extern void (*D_8018D298[])(); - func_80149FB0(param_1); - func_80147AD4(param_1, 0, 0, 0); - ((void (*)(int))func_801473EC)(param_1); - ((void (*)(int))func_8014D738)(param_1); - if (*(int *)(param_1 + 0x170) == 0) { - (*D_8018D298[*(unsigned short *)param_1])(param_1); - ((void (*)(int, int))func_80147078)(param_1, 0); - ((void (*)(int))func_80159B70)(param_1); - } else { - if (((int (*)(int))func_80161240)(param_1) == 0) { - if (func_80146E98(param_1) != 0) { - ((void (*)(int))func_80146CA0)(param_1); - } - if ((*(unsigned short *)(param_1 + 0xb8) & 0x2000) != 0) { - func_80161C24(param_1, *(unsigned short *)(param_1 + 0x16e)); - } - } - } -} - - - -// @class: schedule -// @stuck: none — MATCH (goto forces the func_80161240 block to the function tail; bnez-to-end layout vs early-return fall-through) - - -extern s32 func_80149FB0(s32 a0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_801496D4(void *a0); -extern u16 func_801487F4(s32 *a0); -extern s32 func_801488A8(u8 *a0); -extern void func_80148AAC(u8 *a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80161240(void *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80149704(void); - - -void func_8015CA28(u16 *param_1) { - - extern void (*D_8018D298[])(void*); - extern int D_8018D23C; - ((void (*)(void))func_80149FB0)(); - if (((int (*)(u16 *))func_80161B18)(param_1) != 0) return; - if (((int (*)(u16 *))func_80161B84)(param_1) != 0) return; - if (((int (*)(u16 *))func_801496D4)(param_1) != 0) { - ((void (**)(u16*))D_8018D298)[*param_1](param_1); - ((void (*)(u16 *))func_80149704)(param_1); - return; - } - if ((((u32 (*)(u16 *))func_801487F4)(param_1) & 0x80) != 0 || ((int (*)(u16 *))func_801488A8)(param_1) != 0) { - if ((((int (*)(u16 *))func_80148AAC)(param_1) & 0xff) != 0) { - ((void (*)(u16 *, int, int, int))func_80147AD4)(param_1, 0, 0, 0); - ((void (*)(u16 *))func_801473EC)(param_1); - } - if (((int (*)(u16 *))func_8014D738)(param_1) != 0) { - ((void (*)(u16 *, void *))func_80146DB8)(param_1, &D_8018D23C); - ((void (*)(u16 *, int))func_80146E90)(param_1, 0x14); - ((void (*)(u16 *, int))func_80146C98)(param_1, 2); - } - if (*(int *)(param_1 + 0xb8) != 0) - goto do161240; - } - ((void (**)(u16*))D_8018D298)[*param_1](param_1); - ((void (*)(u16 *, int))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - return; -do161240: - ((void (*)(u16 *))func_80161240)(param_1); -} - - -DEFINE_func_8015CB94() /* dedup: shared engine-core @0x8015CB94 (src/shared) */ - -DEFINE_func_8015CBCC() /* dedup: shared engine-core @0x8015CBCC (src/shared) */ - -DEFINE_func_8015CBD4() /* dedup: shared engine-core @0x8015CBD4 (src/shared) */ - -DEFINE_func_8015CBDC() /* dedup: shared engine-core @0x8015CBDC (src/shared) */ - -DEFINE_func_8015CBE4() /* dedup: shared engine-core @0x8015CBE4 (src/shared) */ - -DEFINE_func_8015CBEC() /* dedup: shared engine-core @0x8015CBEC (src/shared) */ - -DEFINE_func_8015CBF4() /* dedup: shared engine-core @0x8015CBF4 (src/shared) */ - -DEFINE_func_8015CBFC() /* dedup: shared engine-core @0x8015CBFC (src/shared) */ - -DEFINE_func_8015CC04() /* dedup: shared engine-core @0x8015CC04 (src/shared) */ - -DEFINE_func_8015CC0C() /* dedup: shared engine-core @0x8015CC0C (src/shared) */ - -DEFINE_func_8015CC40() /* dedup: shared engine-core @0x8015CC40 (src/shared) */ - - - -void func_8015CC74(s32 *a0) { - - extern void (*D_8018D434[])(void); - D_8018D434[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015CCB0() /* dedup: shared engine-core @0x8015CCB0 (src/shared) */ - -DEFINE_func_8015CCD0() /* dedup: shared engine-core @0x8015CCD0 (src/shared) */ - -#define NULL 0 - - - - - -s32 func_8015CD20(s32 arg0) { - extern void (*D_8018D298[])(struct Ent_8015CD20 *); - extern u8 D_8018D24C; - extern u8 D_8018D43C; - extern u8 D_8018D44C; - - s32 temp_v0; - s32 var_v0; - struct Sub_8015CD20 *sp; - - ((void(*)())func_80149FB0)(); - if (((s32(*)(struct Ent_8015CD20 *))func_801496D4)(((struct Ent_8015CD20 *)arg0)) != 0) { - D_8018D298[((struct Ent_8015CD20 *)arg0)->unk0](((struct Ent_8015CD20 *)arg0)); - ((struct Ent_8015CD20 *)arg0)->unk1BC = 0xA; - ((s32(*)(struct Ent_8015CD20 *))func_80149724)(((struct Ent_8015CD20 *)arg0)); - if (((s32(*)(struct Ent_8015CD20 *))func_80148AFC)(((struct Ent_8015CD20 *)arg0)) & 0xFF) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018D24C); - } else { - ((void(*)(struct Ent_8015CD20 *))func_80146D90)(((struct Ent_8015CD20 *)arg0)); - } - return; - } - temp_v0 = ((struct Ent_8015CD20 *)arg0)->unk234; - if (temp_v0 == 0) { - if (((s32(*)(struct Ent_8015CD20 *))func_80148980)(((struct Ent_8015CD20 *)arg0)) != 0) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018D43C); - ((void(*)(struct Ent_8015CD20 *))func_80147A84)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *))func_801473EC)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80154150)(((struct Ent_8015CD20 *)arg0), 0x15); - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 - 0xAA; - goto block_13; - } - if (((s32(*)(struct Ent_8015CD20 *))func_8014891C)(((struct Ent_8015CD20 *)arg0)) != 0) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018D44C); - ((void(*)(struct Ent_8015CD20 *))func_80147A84)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *))func_801473EC)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80154150)(((struct Ent_8015CD20 *)arg0), 0x14); - ((struct Ent_8015CD20 *)arg0)->unkB8 = 1; - } - if (((s32(*)(struct Ent_8015CD20 *))func_801489E8)(((struct Ent_8015CD20 *)arg0)) != 0) { - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 + 0x71; - goto block_13; - } - if (((s32(*)(struct Ent_8015CD20 *))func_80148A48)(((struct Ent_8015CD20 *)arg0)) != 0) { - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 - 0x71; -block_13: - sp->unk12 = var_v0 & 0xFFF; - } - } else { - ((struct Ent_8015CD20 *)arg0)->unk234 = temp_v0 - 1; - } - ((void(*)(struct Ent_8015CD20 *))func_8014FA04)(((struct Ent_8015CD20 *)arg0)); - if (((s32(*)(struct Ent_8015CD20 *))func_8014E434)(((struct Ent_8015CD20 *)arg0)) == 0) { - D_8018D298[((struct Ent_8015CD20 *)arg0)->unk0](((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80147078)(((struct Ent_8015CD20 *)arg0), 0); - ((void(*)(struct Ent_8015CD20 *))func_80159B70)(((struct Ent_8015CD20 *)arg0)); - } else { - ((void(*)(struct Ent_8015CD20 *))func_801725E0)(((struct Ent_8015CD20 *)arg0)); - } -} - - - -DEFINE_func_8015CF24() /* dedup: shared engine-core @0x8015CF24 (src/shared) */ - -DEFINE_func_8015CF58() /* dedup: shared engine-core @0x8015CF58 (src/shared) */ - -DEFINE_func_8015CF8C() /* dedup: shared engine-core @0x8015CF8C (src/shared) */ - - - -void func_8015CFC0(s32 *a0) { - - extern void (*D_8018D46C[])(void); - D_8018D46C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015CFFC() /* dedup: shared engine-core @0x8015CFFC (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (uVar1 pinned $s3, uVar5 pinned $s1; param_1->s2, iVar4->s0 fall out) - - -void func_8015D01C(int param_1) { - extern s32 func_801725F4(u8 *a0); - extern int D_800D550C; - extern int D_8018D45C; - - int iVar4; - register unsigned short uVar1 __asm__("$19"); - register unsigned short uVar5 __asm__("$17"); - short sVar2; - short sVar3; - - ((void (*)(int, void *))func_80154274)(param_1, &D_800D550C); - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0; - iVar4 = *(short *)(*(int *)(param_1 + 0x20) + 0x12); - uVar1 = *(unsigned short *)(*(int *)(*(int *)(param_1 + 0x180) + 0x20) + 0x12); - uVar5 = (uVar1 + 0x800) & 0xfff; - sVar2 = func_80012A60(iVar4, (short)uVar1); - sVar3 = func_80012A60(iVar4, uVar5); - if (sVar2 < sVar3) { - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar1; - } else { - *(unsigned short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar5; - } - *(int *)(param_1 + 0x38) = (int)&D_8018D45C | 0x40000000; - ((void (*)(int))func_801725F4)(param_1); - ((void (*)(int))func_80146CA0)(param_1); -} - - - - - -// @class: struct -// @stuck: none — MATCH (pending gate) - -extern s32 func_80149FB0(s32 a0); -extern void func_8014FA04(s32 a0); -extern void func_8014E6A0(void); -extern void (*D_8018D298[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_801725F4(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015D104(void *arg0) { - ((void (*)(void))func_80149FB0)(); - ((void (*)(void *))func_8014FA04)(arg0); - if (((s32 (*)(void *))func_8014E6A0)(arg0) == 0) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - ((void (*)(void *))func_801725F4)(arg0); - *(s32 *)((u8 *)arg0 + 0x234) = 0xFF1D0000; - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x10) = 0x600; - *(u16 *)((u8 *)arg0 + 0x244) = *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x10); - func_80146CA0(arg0); - } -} - - - -extern s32 func_80149FB0(s32); -extern void func_80147324(s32 a0); -extern u16 func_80148800(s32 *a0); -extern void func_80149724(void); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146DB8(s32*, s32*); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_8014FA04(s32); -extern void func_8014E6A0(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void*); -extern void func_8015D380(s32); -extern s32 func_801725F4(u8 *a0); - -extern void (*D_8018D298[])(void*); - -void func_8015D1B8(s32 *a0) -{ - - extern s32 D_8018D478; - extern s32 D_8018D47C; - extern s32 D_8018D4C0; - extern s32 D_800D4C14; - s32 sum; - s32 keep; - s32 obj; - s16 cur; - s16 prev; - s16 d; - s32 off; - s32 *p; - s32 dummy[2]; /* L1: dead, but its stack slot is what makes the frame 0x38 */ - - ((void (*)(void))func_80149FB0)(); - obj = *(s32 *)((u8 *)a0 + 0x20); - sum = *(u16 *)(obj + 0x10) + *(u16 *)((u8 *)a0 + 0x236); - *(u16 *)(obj + 0x10) = sum & 0xFFF; - keep = sum; /* L2: AFTER the store — this is what keeps the $s0 copy alive */ - - cur = *(s16 *)(*(s32 *)((u8 *)a0 + 0x20) + 0x10); - prev = *(s16 *)((u8 *)a0 + 0x244); - if (cur - prev >= 0) { - d = cur - prev; - } else { - d = prev - cur; - } - if (d > 0x800) { - func_80147324(0x5E9); - } - *(u16 *)((u8 *)a0 + 0x244) = *(u16 *)(*(s32 *)((u8 *)a0 + 0x20) + 0x10); - - if (func_80148800(a0) & 0x40) { - ((void (**)(s32*))D_8018D298)[*(u16 *)a0](a0); - ((void (*)(s32 *))func_80149724)(a0); - func_80154274(a0, (s32)&D_800D4C14); - func_80146E90(a0, 0x10); - { - u32 t = keep & 0xFFF; /* L3: unsigned value, signed guard -> bgez + srl */ - if ((s32)t < 0) { - t += 0x1FF; - } - p = &D_8018D4C0; /* L4 + scheduling: the `la` must precede the srl/sll pair */ - off = (t >> 9) * 8; - } - *p = *(s32 *)((u8 *)&D_8018D478 + off); - ((void (*)(s32 *, s32))func_80146DB8)(a0, (s32)(p - 2)); /* 0x801893D8 == &D_8018D4C0[-2] (no label there) */ - func_801477E8(a0, *(s32 *)((u8 *)&D_8018D47C + off)); - func_80147324(0x5EA); - } else { - ((void (*)(s32 *))func_8014FA04)(a0); - if (((s32 (*)(s32 *))func_8014E6A0)(a0) == 0) { - ((void (**)(s32*))D_8018D298)[*(u16 *)a0](a0); - func_80147078(a0, 0); - ((void (*)(s32 *))func_80159B70)(a0); - } else { - ((void (*)(s32 *))func_8015D380)(a0); - func_801725F4(a0); - } - } -} - - - -// @class: regalloc-order -// @stuck: pinning a0->$s1 and buffer-ptr->$s0; body copy already matches -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void *memcpy(void *dst, const void *src, u32 n); - -extern s32 D_8018D4C8; - -void func_8015D380(s32 a0) { - s16 out[4]; - s32 buf[8]; - register s32 s1 __asm__("$17") = a0; - register s32 *s0 __asm__("$16") = buf; - ((void (*)(void *))func_80013F3C)((void *)s0); - ((void (*)(void *, s32))func_80012558)((void *)s0, *(s16 *)(*(s32 *)(s1 + 0x20) + 0x12)); - ((void (*)(void *, s32))func_800126C4)((void *)s0, *(s16 *)(*(s32 *)(s1 + 0x20) + 0x10)); - ApplyMatrixSV((void *)s0, (void *)&D_8018D4C8, (void *)out); - memcpy((void *)(s1 + 0x138), (void *)out, 8); -} - - - - -// @class: plumbing -// @stuck: none — MATCH - -extern unsigned char D_8018C5AC[]; - -extern void func_801553C0(s32 a0); -extern void func_80154A74(s32 a0, s32 a1); - -void func_8015D414(int param_1) -{ - *(unsigned char *)(param_1 + 0x1bd) = 8; - *(unsigned char **)(param_1 + 0x38) = D_8018C5AC; - *(short *)(param_1 + 0x138) = 0; - *(short *)(param_1 + 0x13a) = 0; - *(short *)(param_1 + 0x13c) = 0; - *(short *)(param_1 + 0x13e) = 0; - *(short *)(param_1 + 0xA) = *(short *)(param_1 + 0xA) + 0x48; - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0; - ((void (*)(void))func_801553C0)(); - func_80154A74(param_1, 0x11); -} - - -DEFINE_func_8015D480() /* dedup: shared engine-core @0x8015D480 (src/shared) */ - -DEFINE_func_8015D4B4() /* dedup: shared engine-core @0x8015D4B4 (src/shared) */ - - - -s32 func_8015D4E8(s16 *a0) { - - extern void (*D_8018D4D0[])(void); - D_8018D4D0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015D524() /* dedup: shared engine-core @0x8015D524 (src/shared) */ - -DEFINE_func_8015D544() /* dedup: shared engine-core @0x8015D544 (src/shared) */ - -DEFINE_func_8015D57C() /* dedup: shared engine-core @0x8015D57C (src/shared) */ - - -// @class: loose-typing -// @stuck: none — MATCH (field 0xb8 compared as u16 == 0x8000, not s16 == -0x8000) - -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154A74(int, int); -extern s32 func_80161208(); -extern void func_80154150(int, int); -extern void func_80146CA0(void *a0); -extern void func_80149374(int, int); - -extern unsigned char D_8018D4DC[]; - -void func_8015D5E8(int param_1) -{ - int iVar1; - int iVar2; - - if (((int (*)(void))func_80161B18)() != 0) - return; - if (((int (*)(int))func_80161B84)(param_1) != 0) - return; - if ((*(unsigned short *)(param_1 + 0xb8) & 0x4000) != 0) - func_80154A74(param_1, 0x17); - if (((int (*)(int))func_80161208)(param_1) != 0) - return; - if (*(unsigned short *)(param_1 + 0xb8) == 0x8000) { - *(int *)(param_1 + 0x234) = *(int *)(param_1 + 0x234) + -3; - func_80154150(param_1, 0x1a); - ((void (*)(int))func_80146CA0)(param_1); - } else { - iVar1 = *(int *)(param_1 + 0x178); - if (iVar1 != 0) { - iVar2 = *(int *)(param_1 + 0x234); - *(int *)(param_1 + 0x234) = iVar2 + 1; - *(short *)(iVar1 + 6) = - (short)((signed char)D_8018D4DC[iVar2] + - *(unsigned short *)(*(int *)(iVar1 + 0x78) + 0xc)); - iVar2 = *(int *)(param_1 + 0x234); - *(int *)(param_1 + 0x234) = iVar2 + 1; - *(short *)(iVar1 + 10) = - (short)((signed char)D_8018D4DC[iVar2] + - *(unsigned short *)(*(int *)(iVar1 + 0x78) + 0xe)); - iVar2 = *(int *)(param_1 + 0x234); - *(int *)(param_1 + 0x234) = iVar2 + 1; - *(short *)(iVar1 + 0xe) = - (short)((signed char)D_8018D4DC[iVar2] + - *(unsigned short *)(*(int *)(iVar1 + 0x78) + 0x10)); - func_80149374(param_1, iVar1 + 4); - } - } -} - - - -extern int func_80148AFC(void*); -extern s32 func_80161B18(void *); -extern s32 func_80161B84(void *); -extern u16 func_80148800(s32*); -extern u8 func_8014BEF8(void); -extern s32 func_80165624(s32); -extern s32 func_801488A8(u8*); -extern void func_8014D738(void); -extern s32 func_80161208(); -extern void func_80154A74(s32, s32); -extern void func_8015DAC4(s32*); -extern void func_8015DE24(s32*); -extern void func_8015DA5C(s32); -extern void func_8015F948(s32*); -extern void func_800CAF14(void *); -extern void func_80154150(s32, s32); -extern void func_80146DB8(s32*, s32*); -extern void func_80147A84(s32); -extern void func_801473EC(s32*); -extern void func_80149374(s32, s32); -extern void func_80147078(s32*, s16); -extern void func_80159B70(void *); -extern void func_8015C714(void *); -extern void func_801483E8(void); - -extern void (*D_8018D298[])(void *); -extern u8 D_80078E78[]; -extern u8 D_8018D4DC[]; - -void func_8015D738(void *arg0) { - - extern u8 D_8018D25C[]; - extern u8 D_8018D26C[]; - u8 *p = D_80078E78; - s32 s1; - ((void (*)(void))func_80148AFC)(); - if (func_80161B18(arg0) != 0) return; - if (func_80161B84(arg0) != 0) return; - s1 = *(s32 *)((char *)arg0 + 0x178); - if (s1 != 0) { - if (*(u16 *)s1 == 0x360) goto block_808; - } - __asm__ __volatile__(""); - if (s1 != 0) { - if (*(u16 *)s1 != 0) goto block_7F4; - } - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; -block_7F4: - if (((s32 (*)(void *))func_80148800)(arg0) & 0x80) { - block_808: - ((void (*)(void *, s32))func_80154A74)(arg0, 0x11); - ((void (*)(void *))func_8015DAC4)(arg0); - return; - } - if ((((s32 (*)(void *))func_80148800)(arg0) & 0x10) && ((s32 (*)(void *))func_8014BEF8)(arg0) != 0) { - ((void (*)(void *, s32))func_80154A74)(arg0, 0x11); - ((void (*)(void *))func_8015DE24)(arg0); - return; - } - if ((((s32 (*)(void *))func_80148800)(arg0) & 0x20) && p[0x49] == 0xA) { - if (((s32 (*)(void *))func_80165624)(arg0) != 0) { - ((void (*)(void *))func_8015DA5C)(arg0); - ((void (*)(void *))func_8015F948)(arg0); - return; - } - ((void (*)(void *, s32))func_80154A74)(arg0, 0x11); - func_800CAF14(arg0); - return; - } - if (((s32 (*)(void *))func_801488A8)(arg0) != 0 && *(u16 *)(*(s32 *)((char *)arg0 + 0x178)) != 0x82) { - ((void (*)(void *, s32))func_80154150)(arg0, 0x1B); - ((void (*)(void *, void *))func_80146DB8)(arg0, &D_8018D25C); - } else { - ((void (*)(void *, s32))func_80154150)(arg0, 0x1A); - ((void (*)(void *, void *))func_80146DB8)(arg0, &D_8018D26C); - } - ((void (*)(void *))func_80147A84)(arg0); - ((void (*)(void *))func_801473EC)(arg0); - s1 = *(s32 *)((char *)arg0 + 0x178); - *(s16 *)(s1 + 6) = (s16)((s8)D_8018D4DC[*(s32 *)((char *)arg0 + 0x234)] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0xc)); - *(s16 *)(s1 + 0xa) = (s16)((s8)D_8018D4DC[*(s32 *)((char *)arg0 + 0x234) + 1] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0xe)); - *(s16 *)(s1 + 0xe) = (s16)((s8)D_8018D4DC[*(s32 *)((char *)arg0 + 0x234) + 2] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0x10)); - ((void (*)(void *, void *))func_80149374)(arg0, (void *)(s1 + 4)); - *(s16 *)(*(s32 *)(s1 + 0x20) + 0x12) = (*(u16 *)(*(s32 *)((char *)arg0 + 0x20) + 0x12) + 0x800) & 0xFFF; - if (((s32 (*)(void *))func_8014D738)(arg0) != 0) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 9); - func_8015C714(arg0); - return; - } - if (func_80161208(arg0) != 0) return; - ((void (*)(void *))func_801483E8)(arg0); -} - - -DEFINE_func_8015DA5C() /* dedup: shared engine-core @0x8015DA5C (src/shared) */ - -DEFINE_func_8015DA90() /* dedup: shared engine-core @0x8015DA90 (src/shared) */ - -DEFINE_func_8015DAC4() /* dedup: shared engine-core @0x8015DAC4 (src/shared) */ - - - -void func_8015DAF8(s32 *a0) { - - extern void (*D_8018D510[])(void); - D_8018D510[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015DB34() /* dedup: shared engine-core @0x8015DB34 (src/shared) */ - -DEFINE_func_8015DB6C() /* dedup: shared engine-core @0x8015DB6C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015F89C/func_8015F9A4 in same overlay) - -extern void (*D_8018D298[])(void *); -extern int func_8015DD74(int); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); -extern void func_8015DCB8(s32 a0); - -void func_8015DBD4(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x4000) { - ((void (*)(void))func_8015DD74)(); - } - if (*(u16 *)((u8 *)arg0 + 0xB8) == 0x8000) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x178) != 0) { - ((void (*)(void *))func_8015DCB8)(arg0); - } - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015DC84() /* dedup: shared engine-core @0x8015DC84 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (proxy gate) - -extern s8 D_8018D518[]; -extern void func_80149374(s32 a0, s32 a1); - -void func_8015DCB8(s32 param_1) { - s32 iVar1; - s32 iVar2; - - iVar2 = *(s32 *)(param_1 + 0x178); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 6) = (s16)D_8018D518[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 10) = (s16)D_8018D518[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 0xe) = (s16)D_8018D518[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); - - func_80149374(param_1, iVar2 + 4); -} - - -DEFINE_func_8015DD74() /* dedup: shared engine-core @0x8015DD74 (src/shared) */ - -DEFINE_func_8015DDF0() /* dedup: shared engine-core @0x8015DDF0 (src/shared) */ - -DEFINE_func_8015DE24() /* dedup: shared engine-core @0x8015DE24 (src/shared) */ - - - -void func_8015DE58(s32 *a0) { - - extern void (*D_8018D530[])(void); - D_8018D530[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015DE94() /* dedup: shared engine-core @0x8015DE94 (src/shared) */ - -DEFINE_func_8015DECC() /* dedup: shared engine-core @0x8015DECC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015F89C/func_8015F9A4 in same overlay) - -extern void (*D_8018D298[])(void *); -extern int func_8015E0D4(int); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); -extern void func_8015E018(s32 a0); - -void func_8015DF34(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x4000) { - ((void (*)(void))func_8015E0D4)(); - } - if (*(u16 *)((u8 *)arg0 + 0xB8) == 0x8000) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x178) != 0) { - ((void (*)(void *))func_8015E018)(arg0); - } - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015DFE4() /* dedup: shared engine-core @0x8015DFE4 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (proxy gate) - -extern s8 D_8018D518[]; -extern void func_80149374(s32 a0, s32 a1); - -void func_8015E018(s32 param_1) { - s32 iVar1; - s32 iVar2; - - iVar2 = *(s32 *)(param_1 + 0x178); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 6) = (s16)D_8018D518[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 10) = (s16)D_8018D518[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 0xe) = (s16)D_8018D518[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); - - func_80149374(param_1, iVar2 + 4); -} - - -DEFINE_func_8015E0D4() /* dedup: shared engine-core @0x8015E0D4 (src/shared) */ - -DEFINE_func_8015E150() /* dedup: shared engine-core @0x8015E150 (src/shared) */ - -DEFINE_func_8015E184() /* dedup: shared engine-core @0x8015E184 (src/shared) */ - - - -s32 func_8015E1B8(s32 a0) { - - extern void (*D_8018D550[])(void); - D_8018D550[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015E1F4() /* dedup: shared engine-core @0x8015E1F4 (src/shared) */ - -DEFINE_func_8015E22C() /* dedup: shared engine-core @0x8015E22C (src/shared) */ - -DEFINE_func_8015E288() /* dedup: shared engine-core @0x8015E288 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (pending whole-binary gate); fn-ptr table folds %lo via extern array, 0x234 single word store - - -extern void func_8015E40C(s32 a0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_80161208(); -extern void func_8015E5B0(u8*); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159BE4(s32 arg0); - -extern void (*D_8018D298[])(void*); - -void func_8015E344(u16 *param_1) -{ - ((s32 (*)(void))func_8015E40C)(); - if (((s32 (*)(u16 *))func_80161B18)(param_1) == 0 && - ((s32 (*)(u16 *))func_80161B84)(param_1) == 0 && - ((s32 (*)(u16 *))func_80161208)(param_1) == 0) { - if ((param_1[0x5c] & 0x4000) != 0) { - ((void (*)(u16 *))func_8015E5B0)(param_1); - *(s32 *)((char *)param_1 + 0x234) = 1; - } - if ((param_1[0x5c] & 0x8000) != 0) { - ((void (**)(u16*))D_8018D298)[param_1[0]](param_1); - ((s32 (*)(u16 *, s32))func_80147078)(param_1, 0); - ((s32 (*)(u16 *))func_80159BE4)(param_1); - } - } -} - - -DEFINE_func_8015E40C() /* dedup: shared engine-core @0x8015E40C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (pending whole-binary gate); s16 v[3] array forces all 3 locals addressable (reload-from-stack), u16* psVar1 → lhu null/flag check - - -extern u16 D_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; - -extern void func_80149350(s32 arg0); -extern void func_80013E94(void *a0, void *a1); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); - -void func_8015E4B0(s32 param_1) -{ - u16 *psVar1; - s16 v[3]; - s32 local_10; - - psVar1 = *(u16 **)(param_1 + 0x18c); - if ((psVar1 != (u16 *)0) && (*psVar1 != 0)) { - v[0] = D_8018D560 + *(u16 *)(*(s32 *)(psVar1 + 0x3c) + 0xc); - v[1] = D_8018D562 + *(s16 *)(*(s32 *)(psVar1 + 0x3c) + 0xe) * 2; - v[2] = D_8018D564 + *(u16 *)(*(s32 *)(psVar1 + 0x3c) + 0x10); - ((s32 (*)(s32, s16 *, s16 *))func_80149350)(param_1, &v[0], &v[0]); - ((s32 (*)(s32 *, s32 *))func_80013E94)(&D_8018D568, &local_10); - ((s32 (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x1f, param_1, v[0], v[1], v[2], local_10, 0); - } - return; -} - - -extern s32 func_8013C9C4(s32 *a0); -void func_8015E588(void) { - - extern s32 D_8018D570; - func_8013C9C4(&D_8018D570); -} - - -DEFINE_func_8015E5B0() /* dedup: shared engine-core @0x8015E5B0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (clean -O2 reconstruction; table-of-fnptr indexed by param_1[0]) - - -extern s32 func_80161208(); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159BE4(s32 arg0); - -/* function-pointer dispatch table */ -extern void (*D_8018D298[])(void*); - -void func_8015E698(u16 *param_1) -{ - if (func_80161208() == 0 && (param_1[0x5c] & 0x8000) != 0) { - ((void (**)(u16*))D_8018D298)[param_1[0]](param_1); - ((void (*)(u16 *, s32))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159BE4)(param_1); - } -} - - -DEFINE_func_8015E714() /* dedup: shared engine-core @0x8015E714 (src/shared) */ - -DEFINE_func_8015E84C() /* dedup: shared engine-core @0x8015E84C (src/shared) */ - -DEFINE_func_8015E880() /* dedup: shared engine-core @0x8015E880 (src/shared) */ - -DEFINE_func_8015E8B4() /* dedup: shared engine-core @0x8015E8B4 (src/shared) */ - - - -void func_8015E8E8(s32 *a0) { - - extern void (*D_8018D584[])(void); - D_8018D584[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015E924() /* dedup: shared engine-core @0x8015E924 (src/shared) */ - -DEFINE_func_8015E95C() /* dedup: shared engine-core @0x8015E95C (src/shared) */ - -DEFINE_func_8015E9B8() /* dedup: shared engine-core @0x8015E9B8 (src/shared) */ - - -extern u16 func_801487F4(s32*); -extern void func_80147078(s32*, s16); -extern void func_80159B70(void *a0); -extern s32 func_80149D10(s32); -extern void func_80175150(void *a0); -extern void func_8016EE40(s32 a0, s32 a1); -extern s32 func_80149744(struct S_80149744*); -extern void func_80149788(void); -extern s32 func_80161B84(void *a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8014A4FC(void); -extern s32 func_80149AA8(s32*); -extern void func_80149AD4(s32*); -extern s32 func_80149B54(s32*); -extern void func_80149BAC(s32*); -extern s32 func_800CF8B4(void); -extern s32 func_801491C4(s32); -extern s32 func_80148E54(void *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32*, s32*); -extern void func_80147A84(s32); -extern void func_801473EC(s32*); -extern void func_80154150(s32, s32); -extern void func_8014D738(void); -extern void func_8015C714(void *a0); -extern s32 func_80161208(); /* canonical no-proto (§17a-1) */ -extern void func_801483E8(void); - -extern void (*D_8018D298[])(void *); - -void func_8015EA3C(void *arg0) { - - extern s16 D_801152A0; - s32 invec[4]; - s32 outbuf[4]; - s32 temp; - s32 r; - - if (!(((s32 (*)(void))func_801487F4)() & 8)) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; - } - r = ((s32 (*)(void *))func_80149D10)(arg0); - if (r == 1) goto Lcase1; - if (r < 2) goto Ldefault; - if (r == 2) goto Lcase2; - goto Ldefault; -Lcase1: - D_8018D298[*(u16 *)arg0](arg0); - func_80175150(arg0); - return; -Lcase2: - func_8016EE40(*(s32 *)((u8 *)arg0 + 0x21C), 0x01000000); - return; -Ldefault: - if (((s32 (*)(void *))func_80149744)(arg0) != 0) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *))func_80149788)(arg0); - return; - } - if (func_80161B84(arg0) != 0) { - return; - } - if (func_8014A4B4(arg0) != 0) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *))func_8014A4FC)(arg0); - return; - } - if (((s32 (*)(void *))func_80149AA8)(arg0) != 0) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(void *))func_80149B54)(arg0) != 0) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *))func_80149BAC)(arg0); - return; - } - if (func_800CF8B4() != 0) { - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12) = - ((*(u16 *)&D_801152A0) + ((s32 (*)(void *))func_801491C4)(arg0)) & 0xFFF; - } - temp = func_80148E54(arg0); - if ((s16)temp >= 0) { - s32 d = temp - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12); - invec[0] = 0; - invec[1] = 0; - invec[2] = 0xFFFC0000; - func_8001382C((s16)d, invec, outbuf); - ((void (*)(void *, void *))func_80146DB8)(arg0, outbuf); - ((void (*)(void *))func_80147A84)(arg0); - ((void (*)(void *))func_801473EC)(arg0); - ((void (*)(void *, s32))func_80154150)(arg0, 0x1E); - } else { - ((void (*)(void *, s32))func_80154150)(arg0, 0x1D); - } - if (((s32 (*)(void *))func_8014D738)(arg0) != 0) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 9); - func_8015C714(arg0); - return; - } - if (((s32 (*)(s32))func_80161208)(arg0) == 0) { /* §17a-1 */ - ((void (*)(void *))func_801483E8)(arg0); - } -} - - -DEFINE_func_8015ED6C() /* dedup: shared engine-core @0x8015ED6C (src/shared) */ - -DEFINE_func_8015EDA0() /* dedup: shared engine-core @0x8015EDA0 (src/shared) */ - -DEFINE_func_8015EDD4() /* dedup: shared engine-core @0x8015EDD4 (src/shared) */ - - - -s32 func_8015EE08(s32 a0) { - - extern void (*D_8018D58C[])(void); - D_8018D58C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015EE44() /* dedup: shared engine-core @0x8015EE44 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (straight STUB call sequence; param saved to $s0 across calls) - -extern void func_8014CBF8(void *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); - -extern int D_800D4C48; -extern int D_8018D27C; - -void func_8015EE7C(s32 param_1) -{ - ((int (*)(void))func_8014CBF8)(); - ((int (*)(int))func_801474EC)(param_1); - ((int (*)(int, void *))func_80154274)(param_1, &D_800D4C48); - ((int (*)(int, void *))func_80146DB8)(param_1, &D_8018D27C); - ((int (*)(int, int))func_801477E8)(param_1, 0xFFF40000); - ((int (*)(int))func_80146CA0)(param_1); -} - - - -extern void (*D_8018D298[])(void *); - -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80161418(void *a0); -extern s32 func_801725A4(u8 *a0); - -void func_8015EEE0(void *arg0) -{ - ((void (*)(void *, s32))func_80148038)(arg0, 0x10000); - ((void (*)(void *))func_80147460)(arg0); - ((void (*)(void *, s32, s32, s32))func_80147AD4)(arg0, 0, 0, 0x1000); - ((void (*)(void *))func_801473EC)(arg0); - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x8000) { - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (((s32 (*)(void *))func_80161418)(arg0) == 0) { - ((void (*)(void *))func_801725A4)(arg0); - } - } -} - - -DEFINE_func_8015EF9C() /* dedup: shared engine-core @0x8015EF9C (src/shared) */ - -DEFINE_func_8015EFA4() /* dedup: shared engine-core @0x8015EFA4 (src/shared) */ - -DEFINE_func_8015EFD8() /* dedup: shared engine-core @0x8015EFD8 (src/shared) */ - - - -void func_8015F00C(s32 *a0) { - - extern void (*D_8018D594[])(void); - D_8018D594[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015F048() /* dedup: shared engine-core @0x8015F048 (src/shared) */ - -DEFINE_func_8015F080() /* dedup: shared engine-core @0x8015F080 (src/shared) */ - -extern s32 D_80062BE8; -extern void (*D_8018D298[])(void *); -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_8014AB5C(void); -extern void func_80159B70(void *a0); -extern void func_80019064(void *a0); -extern void func_80147324(s32 a0); -extern s32 func_80161208(void); -extern int func_80155FF8(int arg, int a1); - -void func_8015F118(void *a0) { - u16 flag; - - *(s32 *)((u8 *)a0 + 0x44) = *(s32 *)((u8 *)a0 + 0x44) | 2; - flag = *(u16 *)((u8 *)a0 + 0xB8); - if (flag == 0x8000) { - (*D_8018D298[*(u16 *)a0])(a0); - ((void (*)(void *, s32))func_80147078)(a0, 0); - func_80159B70(a0); - } else { - if (flag & 0x4000) { - ((void (*)(s32))func_8014AB5C)(0x19); - ((void (*)(s32))func_8014AB5C)(0x1D); - func_801466F0(0x19, (s32)a0, 0, 0, 0, 0, 0, 1); - func_801466F0(0x19, (s32)a0, 0, 0, 0, 1, 0, 1); - func_801466F0(0x1D, (s32)a0, 0, 0, 0, 0, 0, 1); - func_80019064(&D_80062BE8); - func_80147324(0x9DA); - } - if (((s32 (*)(s32 *))func_80161208)(a0) == 0) { - func_80155FF8((int)a0, *(u8 *)((u8 *)a0 + 0x1AA)); - } - } -} - - -DEFINE_func_8015F260() /* dedup: shared engine-core @0x8015F260 (src/shared) */ - -DEFINE_func_8015F2BC() /* dedup: shared engine-core @0x8015F2BC (src/shared) */ - -DEFINE_func_8015F2F0() /* dedup: shared engine-core @0x8015F2F0 (src/shared) */ - - - -void func_8015F324(s32 *a0) { - - extern void (*D_8018D59C[])(void); - D_8018D59C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015F360() /* dedup: shared engine-core @0x8015F360 (src/shared) */ - -DEFINE_func_8015F380() /* dedup: shared engine-core @0x8015F380 (src/shared) */ - - -extern void (*D_8018D298[])(void *); - -extern s32 func_80149884(void); -extern s32 func_801496D4(void*); -extern void func_80149724(void); -extern void func_801477E8(s32*, s32); -extern u16 func_80148800(s32*); -extern s32 func_80148980(u8*); -extern void func_8014F1F4(void); -extern void func_8014FCFC(void); -extern s32 func_80146A6C(s32, void*, s32, s32, s32, s32, s32); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32*); -extern void func_80146DB8(s32*, s32*); -extern void func_80146E90(s32*, s32); -extern void func_8014ED28(s32 a0); -extern void func_8014FA04(s32 a0); -extern s32 func_801725B8(u8*); -extern void func_80147324(s32 a0); -extern void func_80019064(void*); -extern void func_801484B0(s32, s32); -extern void func_80148534(s32, s32); - -void func_8015F448(s32 arg0) { - - extern u8 D_80062BD0; - extern s32 D_8018D5A4; - extern s32 D_8018D5B4; - extern s32 D_8018D5C4; - s32 sp20[2]; - s32 sp28[2]; - - if (((*(u32 *)(arg0 + 0x44) & 0x100) && (func_80149884() != 0)) || - (((s32 (*)(s32))func_801496D4)(arg0) != 0)) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - *(u8 *)(arg0 + 0x1BE) = 0xA; - ((void (*)(s32))func_80149724)(arg0); - ((void (*)(s32, s32))func_801477E8)(arg0, 0); - return; - } - - if (*(u8 *)(arg0 + 0x245) == 0) { - if (*(u8 *)(arg0 + 0x244) == 0) { - if (((s32 (*)(s32))func_80148800)(arg0) & 0x10) { - *(u8 *)(arg0 + 0x244) = 1; - *(u8 *)(arg0 + 0x245) = 1; - } - } else if (((s32 (*)(s32))func_80148800)(arg0) & 0x80) { - *(u8 *)(arg0 + 0x244) = 0; - *(u8 *)(arg0 + 0x245) = 1; - } - } - - if (*(u16 *)(arg0 + 0xB8) & 0x3000) { - if (*(u16 *)(arg0 + 0xB8) & 0x2000) { - ((void (*)(void *, void *))func_801484B0)(sp20, sp28); - func_80147324(0x56D); - } else { - ((void (*)(void *, void *))func_80148534)(sp20, sp28); - func_80147324(0x56E); - } - ((void (*)(s32 *))func_80019064)(&(*(s32 *)&D_80062BD0)); - ((void (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x25, arg0, *(s16 *)(arg0 + 6), - (s16)(*(u16 *)(arg0 + 0xA) - 0x14), - *(s16 *)(arg0 + 0xE), 0, 0); - ((void (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x25, arg0, *(s16 *)(arg0 + 6), - (s16)(*(u16 *)(arg0 + 0xA) - 0x14), - *(s16 *)(arg0 + 0xE), 1, 0); - } - - if (*(u16 *)(arg0 + 0xB8) & 0x8000) { - if (*(u8 *)(arg0 + 0x245) != 0) { - *(u8 *)(arg0 + 0x245) = 0; - *(u16 *)(arg0 + 0xB8) = *(u16 *)(arg0 + 0xBA); - if (((s32 (*)(s32))func_80148980)(arg0) != 0) { - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018D5A4); - } else { - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018D5B4); - } - } - } else { - *(u16 *)(arg0 + 0x246) = *(u16 *)(arg0 + 6); - *(u16 *)(arg0 + 0x248) = *(u16 *)(arg0 + 0xA); - *(u16 *)(arg0 + 0x24A) = *(u16 *)(arg0 + 0xE); - func_80147A84(arg0); - ((void (*)(s32))func_801473EC)(arg0); - if (((s32 (*)(s32))func_8014F1F4)(arg0) != 0) { - *(u16 *)(arg0 + 6) = *(u16 *)(arg0 + 0x246); - *(u16 *)(arg0 + 0xA) = *(u16 *)(arg0 + 0x248); - *(u16 *)(arg0 + 0xE) = *(u16 *)(arg0 + 0x24A); - } - } - - if (((s32 (*)(s32))func_8014FCFC)(arg0) == 0) { - D_8018D298[*(u16 *)arg0]((void *)arg0); - *(u8 *)(arg0 + 0x1BE) = 0xA; - ((void (*)(s32))func_80149724)(arg0); - ((void (*)(s32, s32))func_801477E8)(arg0, 0xFFE80000); - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018D5C4); - ((void (*)(s32, s32))func_80146E90)(arg0, 0x10); - return; - } - - func_8014ED28(arg0); - func_8014FA04(arg0); - ((void (*)(s32))func_801725B8)(arg0); -} - - -DEFINE_func_8015F738() /* dedup: shared engine-core @0x8015F738 (src/shared) */ - -DEFINE_func_8015F76C() /* dedup: shared engine-core @0x8015F76C (src/shared) */ - -DEFINE_func_8015F7A0() /* dedup: shared engine-core @0x8015F7A0 (src/shared) */ - - - -s32 func_8015F7D4(s32 a0) { - - extern void (*D_8018D5D4[])(void); - D_8018D5D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015F810() /* dedup: shared engine-core @0x8015F810 (src/shared) */ - -DEFINE_func_8015F848() /* dedup: shared engine-core @0x8015F848 (src/shared) */ - - -extern void (*D_8018D298[])(void *); -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern s32 func_80161208(void); - -void func_8015F89C(void *arg0) { - u16 flags = *(u16 *)((u8 *)arg0 + 0xB8); - if (!(flags & 0x4000)) { - if (flags & 0x8000) { - D_8018D298[*(u16 *)arg0](arg0); - func_80147078(arg0, 0); - func_80159B70(arg0); - return; - } - } else { - func_801466F0(1, arg0, 0, -0x1E, 0, 0, 0, 0); - } - ((s32 (*)(void *))func_80161208)(arg0); -} - - -DEFINE_func_8015F948() /* dedup: shared engine-core @0x8015F948 (src/shared) */ - - -extern void (*D_8018D298[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(void); - -void func_8015F9A4(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x8000) { - D_8018D298[*(u16 *)arg0](arg0); - func_80147078(arg0, 0); - func_80159B70(arg0); - } else { - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015FA24() /* dedup: shared engine-core @0x8015FA24 (src/shared) */ - -DEFINE_func_8015FA44() /* dedup: shared engine-core @0x8015FA44 (src/shared) */ - -DEFINE_func_8015FA78() /* dedup: shared engine-core @0x8015FA78 (src/shared) */ - - - -void func_8015FAAC(s32 *a0) { - - extern void (*D_8018D5E0[])(void); - D_8018D5E0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void (*D_8018D298[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern s32 func_8015BE94(); -extern void func_8015C0C4(s32 a0); -extern void func_8015FBE0(s32 *a0); - -void func_8015FAE8(void *arg0) { - s32 v; - - v = func_801612B8(arg0, 0); - if (v == 0 || v == 0x8000) { - ((void (*)(void *))func_8016007C)(arg0); - *(u32 *)((u8 *)arg0 + 0x184) |= 0x80000000; - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 3); - ((void (*)(void *))func_8015BE94)(arg0); - } else if ((v & 0x4000) != 0) { - ((void (*)(void *))func_8016007C)(arg0); - *(u32 *)((u8 *)arg0 + 0x184) |= 0x80000000; - D_8018D298[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 4); - ((void (*)(void *))func_8015C0C4)(arg0); - } else { - ((void (*)(void *))func_8015FBE0)(arg0); - } -} - - - -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern s32 func_80146A6C(s32, void*, s32, s32, s32, s32, s32); -extern void func_80147324(s32 a0); -extern void func_801553A8(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80146CA0(void *a0); - - -void func_8015FBE0(s32 *param_1) -{ - - extern u8 D_800B9A17; - if (param_1[0x61] < 0) { - ((void (**)())D_8018D298)[*(u16 *)param_1](); - ((void (*)(s32 *, s16))func_80147078)(param_1, 0); - ((void (*)(s32 *))func_80159B70)(param_1); - } else { - __asm__ __volatile__(""); - D_80078EC1 = 0; - ((void (*)(s32 *, s32))func_80154150)(param_1, 0x20); - ((void (*)(s32 *, s32))func_80154A74)(param_1, 0x18); - ((void (*)(s32, s32 *, s32, s32, s32, s32, s32))func_80146A6C)(0x16, param_1, 0, 0, 0, 0, 0); - func_80147324(0x44F); - ((void (*)(s32 *))func_801553A8)(param_1); - ((void (*)(s32 *))func_801553C0)(param_1); - D_801270C0 = 2; - D_800B9A17 = 0; - ((void (*)(s32 *))func_80146CA0)(param_1); - } -} - - -extern void func_801599A4(void *a0); - -// @class: struct -// @stuck: none — MATCH (indexed fn-ptr table call + byte-offset struct stores; mirrors sibling func_801599A4 idiom) - -extern s32 D_800AE6B0; -extern void (*D_8018D298[])(void *); - -extern void func_8016007C(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_8015FCC8(void *param_1) { - if ((D_800AE6B0 & 0x80FFFFFF) != 0) { - ((void (*)(void))func_8016007C)(); - D_8018D298[*(u16 *)param_1](param_1); - ((void (*)(void *, s32))func_80147078)(param_1, 0); - func_80159B70(param_1); - } else { - *(u8 *)((s32)param_1 + 0x197) = 0; - *(u8 *)((s32)param_1 + 0xBE) = 0; - *(u8 *)((s32)param_1 + 0xBF) = 0; - *(u8 *)((s32)param_1 + 0x1A0) = (u8)*(s32 *)((s32)param_1 + 0x184); - ((s32 (*)(void *, s32))func_8014BFF4)(param_1, 1); - func_80146CA0(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple 3-call sequence with global table index - -extern unsigned int D_8018D5F4[]; - -extern void func_80147324(s32 arg0); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_8015FD74(int param_1) -{ - ((int (*)(int))func_80147324)(0x18); - *(int *)(param_1 + 0x198) = func_8013767C(D_8018D5F4[*(unsigned char *)(param_1 + 0x1a0)]); - ((int (*)(int))func_80146CA0)(param_1); -} - - -DEFINE_func_8015FDCC() /* dedup: shared engine-core @0x8015FDCC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (fn-ptr-table dispatch + ushort struct fields) - - -extern void (*D_8018D298[])(void*); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80154A74(s32 a0, s32 a1); -extern s32 func_80161208(); - -void func_8015FE70(u16 *param_1) -{ - if ((param_1[0x5c] & 0x8000) != 0) { - if (param_1[0x5d] == 0) { - ((void (**)())D_8018D298)[param_1[0]](); - ((void (*)(u16 *, s16))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - return; - } - param_1[0x5c] = param_1[0x5d]; - } - if ((param_1[0x5c] & 0x4000) != 0) { - ((void (*)(u16 *, s16))func_80154A74)(param_1, 0x11); - } - ((void (*)(u16 *))func_80161208)(param_1); -} - - - -extern s32 D_800AE6B0; -extern void (*D_8018D298[])(void *); -extern u8 D_80078EC1; -extern u8 D_80078EC2; -extern u16 D_801270C0; - -extern void func_8016007C(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); - -void func_8015FF20(void *param_1) { - s32 v2; - u8 cur; - - if ((D_800AE6B0 & 0x80FFFFFF) != 0) { - ((void (*)(void))func_8016007C)(); - D_8018D298[*(u16 *)param_1](param_1); - ((void (*)(void *, s16))func_80147078)(param_1, 0); - func_80159B70(param_1); - return; - } - - v2 = *(s32 *)((s32)param_1 + 0x184); - if (v2 < 0) { - func_80150820((s32)param_1, func_801656E8((s32)param_1, v2 & 0xFF) & 0xFF); - } else { - if (*(u8 *)((s32)param_1 + 0x1A0) != *(u8 *)((s32)param_1 + 0x196)) { - *(u8 *)((s32)param_1 + 0x1A0) = (u8)v2; - *(u8 *)((s32)param_1 + 0x197) = 0; - *(u8 *)((s32)param_1 + 0xBE) = 0; - *(u8 *)((s32)param_1 + 0xBF) = 0; - func_8014BFF4((s32)param_1, 1); - } - - cur = *(u8 *)((s32)param_1 + 0x1A0); - D_80078EC1 = cur; - D_80078EC2 = cur; - func_80165670((s32)param_1, cur); - ((void (*)(void *))func_80165840)(param_1); - ((void (*)(void *))func_801658DC)(param_1); - func_80154A74((s32)param_1, 0x11); - D_801270C0 = 1; - } - - ((void (*)(void *))func_8016004C)(param_1); -} - - -DEFINE_func_8016004C() /* dedup: shared engine-core @0x8016004C (src/shared) */ - -DEFINE_func_8016007C() /* dedup: shared engine-core @0x8016007C (src/shared) */ - -DEFINE_func_801600D0() /* dedup: shared engine-core @0x801600D0 (src/shared) */ - -DEFINE_func_80160104() /* dedup: shared engine-core @0x80160104 (src/shared) */ - - - -void func_80160138(s32 *a0) { - - extern void (*D_8018D670[])(void); - D_8018D670[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160174() /* dedup: shared engine-core @0x80160174 (src/shared) */ - -DEFINE_func_801601AC() /* dedup: shared engine-core @0x801601AC (src/shared) */ - -DEFINE_func_801601E4() /* dedup: shared engine-core @0x801601E4 (src/shared) */ - -DEFINE_func_80160244() /* dedup: shared engine-core @0x80160244 (src/shared) */ - - -extern void (*D_8018D298[])(void*); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); - -void func_801602A4(s32 *a0) { - if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { - ((void (**)())D_8018D298)[*(u16 *)a0](); - func_80154A74((s32)a0, 0x11); - ((void (*)(s32, s32))func_80147078)((s32)a0, 0); - func_80159B70(a0); - } else { - ((s32 (*)(s32 *))func_80161208)(a0); - } -} - - -DEFINE_func_8016032C() /* dedup: shared engine-core @0x8016032C (src/shared) */ - -DEFINE_func_80160334() /* dedup: shared engine-core @0x80160334 (src/shared) */ - -DEFINE_func_80160368() /* dedup: shared engine-core @0x80160368 (src/shared) */ - - - -void func_8016039C(s32 *a0) { - - extern void (*D_8018D680[])(void); - D_8018D680[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801603D8() /* dedup: shared engine-core @0x801603D8 (src/shared) */ - -DEFINE_func_80160410() /* dedup: shared engine-core @0x80160410 (src/shared) */ - - - - - - - -/* data */ -extern u8 D_80078EC0; -extern u8 D_80078EBF; -extern void (*D_8018D298[])(void *); - -/* callees (engine_core.h canonical sigs) */ -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80149AA8(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern s32 func_80146E98(s32 a0); -extern u16 func_801487F4(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_80159B70(void *a0); -extern s32 func_800CF8B4(); -extern s32 func_801491C4(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_8015C714(void *a0); -extern s32 func_80161208(); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_8015F00C(s32 *a0); - -void func_80160534(u8 *p) { - - extern s16 D_801152A0; - func_80149020((s32 *)p); - func_80149034((s32 *)p); - if ((D_80078EC0 & 0x7F) != 0 && (func_80148800((s32 *)p) & 0x90) != 0) { - if (D_80078EBF == 0x80) { - D_8018D298[*(u16 *)p](p); - func_80147078((s32 *)p, 0x13); - func_8015F00C((s32 *)p); - return; - } - if (func_80149B54((s32 *)p) != 0) { - D_8018D298[*(u16 *)p](p); - func_80149BAC((s32 *)p); - return; - } - } - if (func_80149AA8((s32 *)p) != 0) { - D_8018D298[*(u16 *)p](p); - func_80149AD4((s32 *)p); - return; - } - if (func_80146E98((s32)p) != 0) { - if ((func_801487F4((s32 *)p) & 8) != 0) { - D_8018D298[*(u16 *)p](p); - func_80147078((s32 *)p, 0x11); - func_8015E9B8((s32 *)p); - } else { - D_8018D298[*(u16 *)p](p); - func_80147078((s32 *)p, 0); - func_80159B70(p); - } - return; - } - if (func_800CF8B4() != 0) { - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) = - ((*(u16 *)&D_801152A0) + func_801491C4((s32)p)) & 0xFFF; - } - func_80147AD4((s32)p, *(s32 *)(p + 0x234), *(s32 *)(p + 0x238), - *(s32 *)(p + 0x23C)); - func_801473EC((s32 *)p); - if (((s32 (*)(s32 *))func_8014D738)((s32 *)p) != 0) { - D_8018D298[*(u16 *)p](p); - func_80147078((s32 *)p, 9); - func_8015C714(p); - } else { - ((s32 (*)(void *))func_80161208)(p); - } -} - - -DEFINE_func_801607B8() /* dedup: shared engine-core @0x801607B8 (src/shared) */ - -DEFINE_func_801607E4() /* dedup: shared engine-core @0x801607E4 (src/shared) */ - -DEFINE_func_80160818() /* dedup: shared engine-core @0x80160818 (src/shared) */ - - - -void func_8016084C(s32 *a0) { - - extern void (*D_8018D688[])(void); - D_8018D688[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160888() /* dedup: shared engine-core @0x80160888 (src/shared) */ - -DEFINE_func_801608C0() /* dedup: shared engine-core @0x801608C0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (function-pointer table folds %lo via extern array indexed by halfword) - - -extern void (*D_8018D298[])(void*); - -extern u16 func_801487F4(s32 *a0); -extern s32 func_80161208(); -extern void func_80160A74(s32 *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_80160920(unsigned short *param_1) -{ - if ((((int (*)(void))func_801487F4)() & 8) == 0) { - ((code *)D_8018D298)[*param_1](param_1); - ((void (*)(unsigned short *))func_80160A74)(param_1); - } else { - if (((int (*)(unsigned short *))func_80161208)(param_1) == 0 && param_1[0x5c] == 0x8000) { - ((void (*)(unsigned short *, int))func_80154150)(param_1, 0x25); - ((void (*)(unsigned short *))func_80146CA0)(param_1); - } - } - return; -} - - - - -// @class: struct -// @stuck: none — MATCH (pending byte-gate); function-pointer table %lo-fold via extern array - - -extern u16 func_801487F4(s32 *a0); -extern void func_80160A74(s32 *a0); -extern s32 func_80161208(); - -/* function-pointer dispatch table; indexed by *param_1 (×4 = ptr size) */ -extern void (*D_8018D298[])(void*); - -void func_801609B8(u16 *param_1) { - if ((((u32 (*)(void))func_801487F4)() & 8) == 0) { - ((void (**)(u16*))D_8018D298)[*param_1](param_1); - ((void (*)(u16 *))func_80160A74)(param_1); - } else { - ((void (*)(u16 *))func_80161208)(param_1); - } -} - - -DEFINE_func_80160A28() /* dedup: shared engine-core @0x80160A28 (src/shared) */ - -DEFINE_func_80160A74() /* dedup: shared engine-core @0x80160A74 (src/shared) */ - -DEFINE_func_80160ACC() /* dedup: shared engine-core @0x80160ACC (src/shared) */ - -DEFINE_func_80160B00() /* dedup: shared engine-core @0x80160B00 (src/shared) */ - - - -s32 func_80160B34(s32 a0) { - - extern void (*D_8018D694[])(void); - D_8018D694[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160B70() /* dedup: shared engine-core @0x80160B70 (src/shared) */ - -DEFINE_func_80160BB4() /* dedup: shared engine-core @0x80160BB4 (src/shared) */ - -DEFINE_func_80160C28() /* dedup: shared engine-core @0x80160C28 (src/shared) */ - -DEFINE_func_80160CB4() /* dedup: shared engine-core @0x80160CB4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015DBD4 in same overlay; dispatch via D_8018D298 + func_80147078/func_80159B70 tail, func_80161208 else) - -extern void (*D_8018D298[])(void *); -extern u16 func_80148800(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); - -void func_80160D10(void *arg0) { - if (*(u32 *)((u8 *)arg0 + 0x44) & 0x10) { - D_8018D298[*(u16 *)arg0](arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x1AC) == 0) { - if ((((s32 (*)(void *))func_80148800)(arg0) & 0xF0) == 0) { - goto dd0; - } - } else { - s32 t = *(s32 *)((u8 *)arg0 + 0x1AC) - 0xAAA8; - *(s32 *)((u8 *)arg0 + 0x1AC) = t; - if (t >= 0) { - goto dd0; - } - } - D_8018D298[*(u16 *)arg0](arg0); - } - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; -dd0: - ((s32 (*)(void *))func_80161208)(arg0); -} - - -DEFINE_func_80160DEC() /* dedup: shared engine-core @0x80160DEC (src/shared) */ - -DEFINE_func_80160E3C() /* dedup: shared engine-core @0x80160E3C (src/shared) */ - -DEFINE_func_80160E70() /* dedup: shared engine-core @0x80160E70 (src/shared) */ - - -extern void (*D_8018D6A4[])(void); - -void func_80160EA4(void *a0) { - D_8018D6A4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160EE0() /* dedup: shared engine-core @0x80160EE0 (src/shared) */ - -DEFINE_func_80160F00() /* dedup: shared engine-core @0x80160F00 (src/shared) */ - -DEFINE_func_80160F70() /* dedup: shared engine-core @0x80160F70 (src/shared) */ - -DEFINE_func_80160FE0() /* dedup: shared engine-core @0x80160FE0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH - -extern void func_80149020(s32 *a0); -extern void (*D_8018D298[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); - -void func_80161034(void *a0) -{ - func_80149020(a0); - D_8018D298[*(u16 *)a0](a0); - func_80147078(a0, 0); - func_80159B70(a0); -} - - -DEFINE_func_80161094() /* dedup: shared engine-core @0x80161094 (src/shared) */ - -DEFINE_func_801610FC() /* dedup: shared engine-core @0x801610FC (src/shared) */ - -DEFINE_func_80161104() /* dedup: shared engine-core @0x80161104 (src/shared) */ - -DEFINE_func_80161124() /* dedup: shared engine-core @0x80161124 (src/shared) */ - -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016130C(void*, s32); -void aF80161208(void *a0) __asm__("func_80161208"); -void aF80161208(void *a0) -{ - ((s32 (*)(s32, u32))func_8016130C)(a0, func_801612B8(a0, 0)); -} - - -DEFINE_func_80161240() /* dedup: shared engine-core @0x80161240 (src/shared) */ - -DEFINE_func_80161278() /* dedup: shared engine-core @0x80161278 (src/shared) */ - -DEFINE_func_801612B8() /* dedup: shared engine-core @0x801612B8 (src/shared) */ - -extern void func_80161240(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -#define SHB(x) __asm__ __volatile__("" : "=r"(x) : "0"(x)) -#define SHB(x) __asm__("" : "=r"(x) : "0"(x)) - -extern void func_801599A4(void*); -extern void func_8015BDD0(s32*); -extern void func_8015BF48(s32*); - -/* REDRAFT (decay axis: RETURN TYPE). The stored draft had been flipped to - * `void` to fit the fleet header decl in src/shared/engine_core.h, while the - * body still `return 1; / return 0;`. gcc-2.7.2 silently drops the $v0 sets in - * that situation, costing the three `addiu $v0, $zero, 1` / `addu $v0,$zero,$zero` - * instructions the ASM plainly has. Restored to s32 (§109/§85 — the single call - * site `func_8016130C(a0, func_801612B8(a0, 1));` discards the result, so the - * void->s32 widen is caller-neutral and must be fixed on the HEADER side). */ - -/* RECONCILE (§37/§124 asm-label alias — zero header touch). - * Gate error: jr_8015C32C.c:3501 conflicting types for `func_8016130C' - * :3479 previous declaration. - * TU line 3479 is `DEFINE_func_80161240()`, whose expansion (engine_core.h:3781) - * declares `extern void func_8016130C(void *a0, s32 a1);` — a RETURN-TYPE - * disagreement with this draft's required `s32`. The third line the gate quoted - * (:5228 "location of previous definition") is unrelated noise: it is the - * pre-existing `#define SHB(x)` redefinition *warning* between TU lines 5227 and - * 5538, present with or without this draft. - * Fix: the C identifier becomes aF8016130C, so it never collides with the - * canonical `void func_8016130C` declaration, while the GNU asm label makes the - * EMITTED symbol `func_8016130C`. The macro's caller func_80161240 keeps calling - * the `extern void` spelling and is byte-unaffected (it discards the return). - * Codegen for this function is untouched — match_one still MATCH. - * (Alternative, house style, NOT taken here per the no-header-edit rule: widen - * src/shared/engine_core.h:3781 to `extern s32 func_8016130C(void *a0, s32 a1);` - * and rename back to the plain name — byte-identical either way.) */ - -s32 aF8016130C(void *a0, s32 a1) __asm__("func_8016130C"); - -s32 aF8016130C(void *a0, s32 a1) -{ - if ((a1 == 0) || (a1 == 0x8000)) { - func_801599A4(a0); - ((void (*)(void *))func_8015BDD0)(a0); - return 1; - } - if ((a1 & 0x4000) != 0) { - func_801599A4(a0); - ((void (*)(void *))func_8015BF48)(a0); - return 1; - } - return 0; -} - - - -// @class: schedule -// @stuck: none — MATCH - - -DEFINE_func_80161374() /* dedup: shared engine-core @0x80161374 (src/shared) */ - - -DEFINE_func_80161418() /* dedup: shared engine-core @0x80161418 (src/shared) */ - -DEFINE_func_80161450() /* dedup: shared engine-core @0x80161450 (src/shared) */ - -DEFINE_func_80161488() /* dedup: shared engine-core @0x80161488 (src/shared) */ - -DEFINE_func_801614E4() /* dedup: shared engine-core @0x801614E4 (src/shared) */ - -DEFINE_func_8016151C() /* dedup: shared engine-core @0x8016151C (src/shared) */ - -DEFINE_func_80161554() /* dedup: shared engine-core @0x80161554 (src/shared) */ - -DEFINE_func_8016158C() /* dedup: shared engine-core @0x8016158C (src/shared) */ - -DEFINE_func_801615C4() /* dedup: shared engine-core @0x801615C4 (src/shared) */ - - - -// @class: other -// @stuck: first draft — plain if-chain over the flag bits -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern void func_8015BF48(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80161D20(int param_1, u32 param_2); -extern s32 func_8014A6C4(s32 a0); -extern s32 ratan2(s32 a0, s32 a1); - -s32 func_8016163C(s32 arg0, u32 arg1) { - - extern s16 D_801152B0; - extern s16 D_801152B4; - if (arg1 & 1) { - func_801599A4((void *)arg0); - func_80159B3C((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 1; - } - if (arg1 & 0x4000) { - func_801599A4((void *)arg0); - func_8015BF48((s32 *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 2; - } - if (arg1 & 0x2000) { - func_801599A4((void *)arg0); - func_80159B3C((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 4; - } - if (arg1 & 0x8000) { - if (*(u16 *)(arg0 + 0x16C) != 0x15) { - return 0; - } - if (func_8014A6C4(arg0) != 0) { - func_801599A4((void *)arg0); - func_8015F2F0((s32 *)arg0); - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = ratan2(D_801152B0, D_801152B4); - return 8; - } - } - return 0; -} - - - -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80161D20(int param_1, u32 param_2); -extern void func_801599A4(void *a0); -extern void func_8015BF48(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015F2F0(s32*); -extern s32 ratan2(s32 x, s32 y); - -s32 func_80161774(int param_1, u32 param_2) { - - extern s16 D_801152B0; - extern s16 D_801152B4; - - if ((param_2 & 1) != 0) { - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 1; - } - if ((param_2 & 0x4000) != 0) { - ((void (*)(int))func_801599A4)(param_1); - ((void (*)(int))func_8015BF48)(param_1); - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 2; - } - if ((param_2 & 0x2000) != 0) { - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 4; - } - if ((param_2 & 0x8000) != 0) { - if (*(unsigned short *)(param_1 + 0x16c) != 0x15) { - return 0; - } - if (func_8014A6C4(param_1) != 0) { - ((void (*)(int))func_801599A4)(param_1); - ((void (*)(int))func_8015F2F0)(param_1); - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = ratan2(D_801152B0, D_801152B4); - return 8; - } - } - return 0; -} - - - -// @class: schedule -// @stuck: none — MATCH - -DEFINE_func_80161888() /* dedup: shared engine-core @0x80161888 (src/shared) */ - - -DEFINE_func_8016191C() /* dedup: shared engine-core @0x8016191C (src/shared) */ - - -DEFINE_func_8016197C() /* dedup: shared engine-core @0x8016197C (src/shared) */ - -DEFINE_func_801619A4() /* dedup: shared engine-core @0x801619A4 (src/shared) */ - -DEFINE_func_801619D0() /* dedup: shared engine-core @0x801619D0 (src/shared) */ - -DEFINE_func_80161A00() /* dedup: shared engine-core @0x80161A00 (src/shared) */ - -DEFINE_func_80161A30() /* dedup: shared engine-core @0x80161A30 (src/shared) */ - -DEFINE_func_80161A60() /* dedup: shared engine-core @0x80161A60 (src/shared) */ - - -DEFINE_func_80161A90() /* dedup: shared engine-core @0x80161A90 (src/shared) */ - - -DEFINE_func_80161B18() /* dedup: shared engine-core @0x80161B18 (src/shared) */ - -DEFINE_func_80161B84() /* dedup: shared engine-core @0x80161B84 (src/shared) */ - -DEFINE_func_80161BE0() /* dedup: shared engine-core @0x80161BE0 (src/shared) */ - - -extern void func_80147324(); - -/* RECONCILE (§17a-1/§20): the TU already declares - * extern void func_80161C24(s32, s32); (jr_8015C32C.c:1474 / :1417) - * so the definition must use (int, int); the unsigned semantics of param_2 - * are restored by a cast at each use (codegen-neutral: sltiu + index math). */ -void func_80161C24(int param_1, int param_2) -{ - - extern unsigned short D_8018D6B4[]; - extern unsigned short D_8018D6B6[]; - - if ((unsigned int)param_2 < 8) { - if (*(u8 *)(param_1 + 0xDA) != 0) { - func_80147324(D_8018D6B4[(unsigned int)param_2 * 2]); - *(u8 *)(param_1 + 0xDA) = 0; - } else { - func_80147324(D_8018D6B6[(unsigned int)param_2 * 2]); - *(u8 *)(param_1 + 0xDA) = 1; - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (indexed-global %lo-fold via extern u16 array, §18) - -extern u16 D_8018D6D4[]; -extern void func_80147324(s32 arg0); - -void func_80161C98(int param_1, u32 param_2) -{ - if (param_2 < 8) { - func_80147324(D_8018D6D4[param_2]); - } - return; -} - - - -// @class: plumbing -// @stuck: none — MATCH (20 ins) -// DECAY AXIS: return type. The stored draft declared `s32 func_80161CD0(...)` with no -// return statement. That kept $v0 live-out at the epilogue, so gcc-2.7.2's delayed-branch -// pass refused to speculatively fill the second `beqz $v0` delay slot from the fall-through -// with `sll $v0, $s0, 1` — costing one extra nop (21 vs 20 ins) and shifting both branch -// displacements. Declaring the function `void` makes $v0 dead at the return and the fill -// happens. Same return-type axis as the wave, opposite direction (s32 -> void). -// param_2 must be UNSIGNED: the guard assembles as `sltiu $v0, $s0, 0x8`. -// -// RECONCILE (§37/§124 asm-label alias) — the ONLY change vs the uc2 draft; the body is -// byte-identical and untouched. -// The real TU src/ov_SC01_077/ov_SC01_077_jr_8015C32C.c already carries the m2c canonical -// declaration -// :23 extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ -// :1207 extern s32 func_80161CD0(s32 a0, s32 a1); -// so a plain `void func_80161CD0(int, unsigned int)` definition dies with -// conflicting types for `func_80161CD0' / previous declaration ... (rtu_match CC1 FAIL). -// This is the RETURN axis (s32 vs void) plus the param-2 signedness axis, and BOTH spellings -// are load-bearing for the 20-instruction codegen — conforming the definition to the -// declaration (escape #1) would perturb bytes, so it is not available here. -// The alias fixes it at T0: the C identifier is aF80161CD0 (no declaration to collide with) -// while the EMITTED SYMBOL is func_80161CD0. In-TU callers keep using the `extern s32` -// spelling and are byte-unaffected (they discard the return). Zero tracked files touched; -// no header edit is even possible/needed — grep shows func_80161CD0 has NO declaration in -// include/ or src/shared/, the conflict is purely TU-local m2c boilerplate. -// Exactly the pattern already banked at src/ov_SC03_099/ov_SC03_099_jr_8015C32C.c:3503 -// for the sibling func_8016191C. -// -// NOTE on the third gate diagnostic (`:5223 note: location of previous definition`): that is -// a RED HERRING, unrelated to this function. It is the pre-existing CPP note paired with -// `:5533 warning: "SHB" redefined` — the TU defines the SHB scheduling-barrier macro twice -// (post-splice :5222 with __volatile__, :5533 without). It is a warning, present with or -// without this draft, and it does not fail cc1. - -extern int func_800CF8B4(); -extern void func_80147324(int arg0); - -void aF80161CD0(int param_1, unsigned int param_2) __asm__("func_80161CD0"); - -void aF80161CD0(int param_1, unsigned int param_2) -{ - - extern unsigned short D_8018D6E4; - if (param_2 < 8) { - if (func_800CF8B4() != 0) { - func_80147324((&D_8018D6E4)[param_2]); - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (indexed-global %lo-fold via extern u16 array, §18) - -extern void func_80147324(s32 arg0); - -void func_80161D20(int param_1, u32 param_2) -{ - - extern u16 D_8018D6F4[]; - if (param_2 < 8) { - func_80147324(D_8018D6F4[param_2]); - } - return; -} - - -DEFINE_func_80161D58() /* dedup: shared engine-core @0x80161D58 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (short-circuit && chain; reused 0x80FFFFFF mask const, andi-0xFF on callee ret) - -extern s32 D_800AE6B0; -extern s32 D_800AE6A8; -extern s32 func_80029178(s32 arg); -extern void func_80029124(s32, s32); -extern void func_800D1734(void *); -extern s32 D_8018D738; - -void func_80161D88(void) { - if ((D_800AE6B0 & 0x80FFFFFF) == 0 && (D_800AE6A8 & 0x80FFFFFF) == 0 && - (func_80029178(0x141) & 0xFF) != 0) { - func_80029124(0x141, 0); - func_80029124(0x95, 1); - func_800D1734(&D_8018D738); - } -} - - -// @class: regalloc-order -// @stuck: none — MATCH (175 ins, relocation-masked). Giant, 3 similar guarded blocks. base=&D_800AF630 -// hoisted to $s2 (referenced only to build the 3 stored pointers base+0x65A8/0x65E0/0x6618 -> $s1); -// guard reads (D_800B5BD8/C10/C48) + the "=1" + coord stores use direct symbols. Coord idiom: -// -(s32)(u16)D_800AF7BC/2 + K (negu;srl31;addu;sra1). a2=func_800291DC(8) survives in $s3 for the -// final (a2&0x7FFF)==(s16)D_80078EB0 test. KEY RESIDUAL (cracked): target computes each pointer into -// scratch $v0 then `addu $s1,$v0` (dead-intermediate copy) and stores $s1 — natural C ALWAYS coalesces -// that copy into a direct `addiu $s1,$s2,off` (172 ins, 3 short). Forcing the un-coalesced copy needs -// an explicit `move` inline-asm (an empty "=r"/"0" re-tie is only a barrier, won't emit the copy). -#include "common.h" - - - - - - - -void func_80161E08(s32 param_1) { - extern void func_80024054(void *a0, void *a1); - extern void func_8001CE28(void *a0, void *a1); - extern void func_800242D0(s32 a0, void *a1, s32 a2); - extern void func_8001CE68(void *a0, void *a1); - extern int func_801620C4(void); - extern void func_801622C4(void); - extern u16 D_800AF7BC; - extern u16 D_800AF7BE; - extern s16 D_80078EB0; - extern u16 D_800B5BD8; - extern s16 D_800B5C04; - extern u8 D_800B5BFF; - extern s16 D_800B5BE0; - extern s16 D_800B5BE2; - extern u16 D_800B5C10; - extern s16 D_800B5C3C; - extern u8 D_800B5C37; - extern s16 D_800B5C18; - extern s16 D_800B5C1A; - extern u16 D_800B5C48; - extern s16 D_800B5C74; - extern s16 D_800B5C50; - extern s16 D_800B5C52; - extern u8 * D_801E6EB8[]; - extern u8 D_8018D704[]; - extern u8 D_8018D724[]; - extern u8 D_801E6EC4[]; - extern u8 D_801E6EEC[]; - extern u8 D_801E6F04[]; - - u8 *base = &(*(u8 *)&D_800AF630); - u8 *p; - s32 a2; - - if (*((u16 *)param_1) != 0x1A && - currentLocationId != 0x3012 && - currentLocationId != 0x3054 && - currentLocationId != 0x3079 && - currentLocationId != 0x3096 && - ((a2 = func_800291DC(8)) & 0x8000) != 0) { - - if (D_800B5BD8 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x65A8)); - D_801E6EB8[0] = p; - func_80024054(&D_8018D704, &D_801E6EC4); - func_8001CE28(p, &D_801E6EC4); - D_800B5C04 = 1; - D_800B5BFF = 1; - D_800B5BE0 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5BE2 = -(s32)(u16)D_800AF7BE / 2 + 0x28; - } - - if (D_800B5C10 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x65E0)); - D_801E6EB8[1] = p; - func_80024054(&D_8018D724, &D_801E6EEC); - func_8001CE28(p, &D_801E6EEC); - D_800B5C3C = 1; - D_800B5C37 = 1; - D_800B5C18 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5C1A = -(s32)(u16)D_800AF7BE / 2 + 0x30; - } - - if (D_800B5C48 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x6618)); - D_801E6EB8[2] = p; - func_800242D0((s16)func_801620C4(), &D_801E6F04, 0x84); - func_8001CE68(p, &D_801E6F04); - D_800B5C74 = 1; - D_800B5C50 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5C52 = -(s32)(u16)D_800AF7BE / 2 + 0x10; - } - - func_800242D0((s16)func_801620C4(), &D_801E6F04, 0x84); - if ((a2 & 0x7FFF) == (s32)D_80078EB0) { - func_801622C4(); - } - } -} - - - -DEFINE_func_801620C4() /* dedup: shared engine-core @0x801620C4 (src/shared) */ - -DEFINE_func_80162120() /* dedup: shared engine-core @0x80162120 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (do-while scan over 3-entry global; increments placed AFTER the call so p++ schedules between load and jal, i++ into the delay slot) - -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); - -extern int D_801E6EB8[]; - -void func_8016216C(void) -{ - int *p; - int i; - - func_800291C8(8, 0); - i = 0; - p = D_801E6EB8; - do { - int v = *p; - ((void (*)(int, int))func_80016714)(v, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - - -extern s32 func_800291DC(s32); -extern u8 D_80078E78[]; -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 D_8018D738; - -s32 func_801621CC(s32 arg0) { - register s32 s0 __asm__("$16") = arg0; /* $s0: arg0, crosses the call */ - register u8 *s1 __asm__("$17") = D_80078E78; /* $s1: base, hoisted for the loop */ - register s32 i __asm__("$5"); /* $a1: counter (pin fixes the i/d swap) */ - u32 a2; - s32 d; /* $a0: natural alloc; load via $v0 temp */ - s32 v, last, hi, lo; - char pad[8]; /* phantom 8B local -> frame 0x28 (vars=8) */ - - a2 = func_800291DC(8); - if ((a2 & 0x8000) == 0) { - return 0; - } - a2 &= 0x7FFF; - if (((a2 >> 8) == D_80078EB1) && ((a2 & 0xFF) <= (u32)D_80078EB0)) { - return (s32)&D_8018D738; - } - d = s1[0x39] - 1; - i = 0; - if (s0 <= 0) { - return 0; - } - hi = (a2 >> 8) & 0xFF; - last = s0 - 1; - lo = a2 & 0xFF; - do { - if ((s8)d < 0) { - d = 0x17; - } - v = (s8)d; - if (hi == v) { - if (i != last) { - return (s32)&D_8018D738; - } - i++; - if ((u32)s1[0x38] < (u32)lo) { - return (s32)&D_8018D738; - } - goto bot; - } - i++; - bot: - d--; - } while (i < s0); - return 0; -} - - - - -// @class: schedule -// @stuck: none — MATCH -extern void func_80029124(s32, s32); -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); -extern int D_801E6EB8[]; - -void func_801622C4(void) -{ - int *p; - int i; - - ((int (*)(int, int))func_80029124)(0x141, 1); - ((int (*)(int, int))func_800291C8)(8, 0); - i = 0; - p = &D_801E6EB8; - do { - ((int (*)(int, int))func_80016714)(*p, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - - -extern void (*D_8018D75C[])(void); - -void func_80162330(void *a0) { - D_8018D75C[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_8016236C() /* dedup: shared engine-core @0x8016236C (src/shared) */ - -DEFINE_func_801623B8() /* dedup: shared engine-core @0x801623B8 (src/shared) */ - -DEFINE_func_80162414() /* dedup: shared engine-core @0x80162414 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (160 ins, relocation-masked). Keys: (1) base=&D_800AF630 hoisted, pinned $s2; -// uVar2 UNPINNED (a $s3 pin forced the final `uVar2 & 0x7FFF` in-place+early, breaking the lh delay -// slot). (2) item pinned $s1, dest INLINED (D_801D96Dx in both call args) so it lands $s0 AFTER a0. -// (3) base assigned BEFORE the func_800291DC call so the return-copy `addu $s3,$v0` schedules after -// the base lui/addiu. (4) THE MOVE: each block's `addu $s1,$v0,$zero` = compute `base+off` into a -// $v0-PINNED temp `t`, then `item = t`. Two distinct hard regs ($v0 vs $s1) can't coalesce, forcing -// the exact `addiu $v0,$s2,off ; addu $s1,$v0` pair the target emits (plain `item=base+off` coalesces -// into one `addiu $s1` — 3 ins short). (5) store D_801E6F10[i] via `extern int D_801E6F10[]` (folds -// %lo, consistent with func_80162760). Coord = (s16)(-D_800AF7Bx / 2 + K) (negu; srl 31; addu; sra 1). - -#include "common.h" - - - - - - - - -s32 func_80162438(s32 _unused0) { - extern void func_80024054(void *, void *); - extern void func_8001CE28(void *, void *); - extern void func_8001CE68(void *, void *); - extern void func_800242D0(s32, void *, s32); - extern s32 func_801626B8(void); - extern void func_80162760(void); - extern u8 D_8018D768[]; - extern s32 D_8018D780; - extern u8 D_801E6F1C[]; - extern u8 D_801E6F44[]; - extern u8 D_801E6F60[]; - extern int D_801E6F10[]; - extern u16 D_800B5BD8; - extern u16 D_800B5C10; - extern u16 D_800B5C48; - extern u16 D_800AF7BC; - extern u16 D_800AF7BE; - extern s16 D_800B5BE0; - extern s16 D_800B5BE2; - extern s16 D_800B5C04; - extern u8 D_800B5BFF; - extern s16 D_800B5C18; - extern s16 D_800B5C1A; - extern s16 D_800B5C3C; - extern u8 D_800B5C37; - extern s16 D_800B5C50; - extern s16 D_800B5C52; - extern s16 D_800B5C74; - - u32 uVar2; - register u8 *base __asm__("$18"); - register u8 *item __asm__("$17"); - - base = &(*(u8 *)&D_800AF630); - uVar2 = func_800291DC(0x12); - if ((uVar2 & 0x8000) != 0) { - if (D_800B5BD8 == 0) { - register u8 *t __asm__("$2") = base + 0x65A8; - item = t; - D_801E6F10[0] = (s32)item; - func_80024054(D_8018D768, D_801E6F1C); - func_8001CE28(item, D_801E6F1C); - D_800B5C04 = 1; - D_800B5BFF = 1; - D_800B5BE0 = -D_800AF7BC / 2 + 0xD0; - D_800B5BE2 = -D_800AF7BE / 2 + 0x28; - } - if (D_800B5C10 == 0) { - register u8 *t __asm__("$2") = base + 0x65E0; - item = t; - D_801E6F10[1] = (s32)item; - func_80024054(((u8 *)&D_8018D780), D_801E6F44); - func_8001CE28(item, D_801E6F44); - D_800B5C3C = 1; - D_800B5C37 = 1; - D_800B5C18 = -D_800AF7BC / 2 + 0xD0; - D_800B5C1A = -D_800AF7BE / 2 + 0x30; - } - if (D_800B5C48 == 0) { - register u8 *t __asm__("$2") = base + 0x6618; - item = t; - D_801E6F10[2] = (s32)item; - func_800242D0((s16)func_801626B8(), D_801E6F60, 0x84); - func_8001CE68(item, D_801E6F60); - D_800B5C74 = 1; - D_800B5C50 = -D_800AF7BC / 2 + 0xD0; - D_800B5C52 = -D_800AF7BE / 2 + 0x10; - } - func_800242D0((s16)func_801626B8(), D_801E6F60, 0x84); - if ((uVar2 & 0x7FFF) == (s32)(*(s16 *)&D_80078EB0)) { - func_80162760(); - } - } -} - - - -DEFINE_func_801626B8() /* dedup: shared engine-core @0x801626B8 (src/shared) */ - -DEFINE_func_80162714() /* dedup: shared engine-core @0x80162714 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (24 ins). do-while; load+call first, then p++ and i++ AFTER the call so gcc schedules p++/arg ahead of jal and i++ into the delay slot. - -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); - -extern int D_801E6F10[]; - -void func_80162760(void) -{ - int *p; - int i; - - func_800291C8(0x12, 0); - i = 0; - p = D_801E6F10; - do { - int v = *p; - ((void (*)(int, int))func_80016714)(v, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - -DEFINE_func_801627C0() /* dedup: shared engine-core @0x801627C0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (19 ins, relocation-masked) -// -// Tiny dispatcher: byte count at D_8011F750 (offset 0 of a 0x58-byte ctl struct; -// cf. func_801627C0 which calls func_80016714(&D_8011F750, 0x58)). If nonzero, -// call D_8018D7A0[count - 1]() through a word-stride fn-pointer table. -// -// Two idioms combined to match gcc-2.7.2 -O2: -// 1. The target MATERIALIZES &D_8011F750 (lui;addiu %lo) into $a0 before the lbu -// instead of folding %lo into the load. A direct global byte read always -// %lo-folds (lui;lbu %lo), so force the full-address materialization with the -// §21 re-tie barrier __asm__ __volatile__("":"=r"(p):"0"(p)) and pin the -// pointer to $a0 with register __asm__("$4") to get the exact register. -// 2. Writing `idx = idx - 1;` as its OWN statement (not inline D_8018D7A0[count-1]) -// keeps the array index/decrement separate so %lo(D_8018D7A0) folds into the -// dispatch load (lw %lo(...)($at)) — the inline form instead constant-folds the -// -1*4 into a -4 load offset and drops the %lo fold (1 ins short, schedule off). - - -void func_801627E8(void) -{ - - extern s32 D_8011F750; /* canonical: engine_core.h `extern s32 D_8011F750;` (read here as a byte) */ - extern void (*D_8018D7A0[])(void); /* word-stride table of dispatch fn pointers */ - register u8 *p __asm__("$4") = (u8 *)&D_8011F750; - s32 idx; - - __asm__ __volatile__("" : "=r"(p) : "0"(p)); /* materialize &D_8011F750 into $a0 (defeat %lo-fold of the lbu) */ - idx = *p; - if (idx != 0) { - idx = idx - 1; - D_8018D7A0[idx](); - } -} - - - -extern void (*D_8018D7A4[])(void); - -void func_80162834(void *a0) { - D_8018D7A4[*(u8 *)((s32)a0 + 0x1)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (stub: alloc + global init + two calls; $s0 holds param_1 across calls) - -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_8018D794; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; - -void func_80162870(s32 param_1) { - *(s32 *)(param_1 + 8) = (s32)&D_800B5CB8; - func_8001CB6C(&D_800B5CB8, (s32)&D_8018D794, 0x250, 0x1A0); - D_800B5CEC = param_1 + 0xC; - D_800B5CDF = 0x14; - D_800B5CBC |= 0x60000000; - func_80162968(param_1); - func_80162ACC((u8 *)param_1); -} - - -DEFINE_func_801628F4() /* dedup: shared engine-core @0x801628F4 (src/shared) */ - -DEFINE_func_80162968() /* dedup: shared engine-core @0x80162968 (src/shared) */ - -DEFINE_func_80162AC0() /* dedup: shared engine-core @0x80162AC0 (src/shared) */ - -DEFINE_func_80162ACC() /* dedup: shared engine-core @0x80162ACC (src/shared) */ - -DEFINE_func_80162AE0() /* dedup: shared engine-core @0x80162AE0 (src/shared) */ - -DEFINE_func_80162AF4() /* dedup: shared engine-core @0x80162AF4 (src/shared) */ - -DEFINE_func_80162B1C() /* dedup: shared engine-core @0x80162B1C (src/shared) */ - -DEFINE_func_80162CC4() /* dedup: shared engine-core @0x80162CC4 (src/shared) */ - -extern void func_80016714(void *a0, s32 a1); -void aF80162CCC(u8 *a0) __asm__("func_80162CCC"); -DEFINE_func_80162CCC() /* dedup: shared engine-core @0x80162CCC (src/shared) */ - - -DEFINE_func_80162D28() /* dedup: shared engine-core @0x80162D28 (src/shared) */ - -DEFINE_func_80162D88() /* dedup: shared engine-core @0x80162D88 (src/shared) */ - -DEFINE_func_80162DE8() /* dedup: shared engine-core @0x80162DE8 (src/shared) */ - -DEFINE_func_80162E48() /* dedup: shared engine-core @0x80162E48 (src/shared) */ - -DEFINE_func_80162EA8() /* dedup: shared engine-core @0x80162EA8 (src/shared) */ - -DEFINE_func_80162F08() /* dedup: shared engine-core @0x80162F08 (src/shared) */ - -DEFINE_func_80162F60() /* dedup: shared engine-core @0x80162F60 (src/shared) */ - -DEFINE_func_80162F80() /* dedup: shared engine-core @0x80162F80 (src/shared) */ - -DEFINE_func_80162FA0() /* dedup: shared engine-core @0x80162FA0 (src/shared) */ - -DEFINE_func_80162FC0() /* dedup: shared engine-core @0x80162FC0 (src/shared) */ - -DEFINE_func_80162FF4() /* dedup: shared engine-core @0x80162FF4 (src/shared) */ - -DEFINE_func_801630C4() /* dedup: shared engine-core @0x801630C4 (src/shared) */ - -DEFINE_func_80163194() /* dedup: shared engine-core @0x80163194 (src/shared) */ - -DEFINE_func_80163234() /* dedup: shared engine-core @0x80163234 (src/shared) */ - -DEFINE_func_8016325C() /* dedup: shared engine-core @0x8016325C (src/shared) */ - -DEFINE_func_801632E0() /* dedup: shared engine-core @0x801632E0 (src/shared) */ - -DEFINE_func_801632F0() /* dedup: shared engine-core @0x801632F0 (src/shared) */ - -DEFINE_func_80163328() /* dedup: shared engine-core @0x80163328 (src/shared) */ - -DEFINE_func_801633A8() /* dedup: shared engine-core @0x801633A8 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (21 ins, relocation-masked) - - -s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4) { - extern int func_8016345C(int, unsigned short, int, unsigned short, void *); - extern unsigned char D_801E63B4[8]; - - unsigned char sp18[8]; - memcpy(sp18, D_801E63B4, 8); - return func_8016345C(((int)param_1), ((int)param_2), ((int)param_3), ((int)param_4), sp18); -} - - - -DEFINE_func_8016345C() /* dedup: shared engine-core @0x8016345C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (unaligned 8-byte memcpy from global into stack buffer, then forward to callee) - -extern char D_801E63B4[8]; - -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); - -void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5) -{ - char buf[8]; - - memcpy(buf, D_801E63B4, 8); - ((void (*)(s32, u16, u16, s32, u16, s32))func_80163534)(param_1, param_2, param_3, param_4, param_5, (s32)buf); -} - - -DEFINE_func_80163534() /* dedup: shared engine-core @0x80163534 (src/shared) */ - - -DEFINE_func_80163664() /* dedup: shared engine-core @0x80163664 (src/shared) */ - -DEFINE_func_801636D0() /* dedup: shared engine-core @0x801636D0 (src/shared) */ - - -DEFINE_func_80163764() /* dedup: shared engine-core @0x80163764 (src/shared) */ - - -DEFINE_func_8016380C() /* dedup: shared engine-core @0x8016380C (src/shared) */ - -DEFINE_func_801638A0() /* dedup: shared engine-core @0x801638A0 (src/shared) */ - -DEFINE_func_80163950() /* dedup: shared engine-core @0x80163950 (src/shared) */ - - -extern void (*D_8018D7AC[])(void); - -void func_80163A58(void *a0) { - D_8018D7AC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80163A94() /* dedup: shared engine-core @0x80163A94 (src/shared) */ - -DEFINE_func_80163C2C() /* dedup: shared engine-core @0x80163C2C (src/shared) */ - - -void func_80163EC8(s32 param_1) { - extern Blk8 D_801E63BC; - extern u16 D_800B99DA; - extern u8 func_801656D0(s32 a0, s32 a1); - extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); - extern void func_80015978(s32 a0, s32 *a1); - extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); - - Blk8 in; - u16 out[4]; - s16 buf[4]; - s32 psVar6; - s32 iVar8; - s32 iVar7; - register s32 uVar5 __asm__("$2"); /* PIN (flagged): uVar5 -> $v0 */ - u16 uVar4; - u8 uVar3; - - in = D_801E63BC; - psVar6 = *(s32 *)(param_1 + 0x4c); - iVar8 = *(s32 *)(param_1 + 0x20); - func_80162D88((s32 *)param_1); - - if (*(s32 *)(psVar6 + 0x184) == 0) { - uVar5 = *(s32 *)(psVar6 + 0x44); - *(s16 *)(psVar6 + 0x18a) = 0; - *(s16 *)(psVar6 + 0x188) = 0; - *(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20; - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - return; - } - if (*(s16 *)(*(s32 *)(psVar6 + 0x184) + 0x36) == *(u16 *)(psVar6 + 0x194)) { - goto LAB_matched; - } - *(s32 *)(psVar6 + 0x184) = 0; - uVar5 = *(s32 *)(psVar6 + 0x44); - *(s16 *)(psVar6 + 0x18a) = 0; - *(s16 *)(psVar6 + 0x188) = 0; - *(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20; - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - return; - -LAB_matched: - *(s16 *)(psVar6 + 0x18a) = *(u16 *)(psVar6 + 0x18a) + 1; - if ((D_800B99DA & 3) == 0) { - if (*(s16 *)(psVar6 + 0x188) >= *(u8 *)(param_1 + 0x67)) { - *(s16 *)(psVar6 + 0x188) = *(s16 *)(psVar6 + 0x188) - *(u8 *)(param_1 + 0x67); - } else { - *(s16 *)(psVar6 + 0x188) = 0; - } - if (*(s16 *)(psVar6 + 0x188) < 0) { - *(s16 *)(psVar6 + 0x188) = 0; - } - } - - *(s16 *)(param_1 + 0x66) = *(u16 *)(param_1 + 0x66) + 0x40; - uVar5 = func_80148800((s32 *)psVar6); - if ((uVar5 & 0x80) != 0) { - *(s16 *)(param_1 + 0x66) = 0; - uVar3 = func_801656D0(psVar6, func_8014CA00(*(s32 *)(psVar6 + 0x184)) & 0xff); - *(s16 *)(psVar6 + 0x188) = *(u16 *)(psVar6 + 0x188) + uVar3; - *(s16 *)(iVar8 + 0x1a) = 0x4000; - *(s16 *)(iVar8 + 0x18) = 0x4000; - *(s32 *)(iVar8 + 0x48) = *(s16 *)(param_1 + 0x58); - *(s32 *)(iVar8 + 0x4c) = *(s16 *)(param_1 + 0x5a); - *(s32 *)(iVar8 + 0x50) = *(s16 *)(param_1 + 0x5c); - ((void (*)(s32, s32, s32))func_80149350)(param_1, (s32)&in, (s32)out); - *(s16 *)(param_1 + 0x6) = out[0]; - *(s16 *)(param_1 + 0xa) = out[1]; - *(s16 *)(param_1 + 0xe) = out[2]; - } - - if (0x80 < *(s16 *)(psVar6 + 0x188)) { - *(s16 *)(psVar6 + 0x188) = 0x80; - } - if (*(s16 *)(psVar6 + 0x188) >= 0x80) { - iVar7 = *(s32 *)(psVar6 + 0x184); - if (iVar7 != 0) { - func_80015978(iVar7 + 4, (s32 *)buf); - buf[3] = 0; - uVar4 = func_80156370(0xe); - func_8014C4AC(iVar7, 0xe, uVar4, buf, *(s16 *)(iVar8 + 0x12)); - func_80146994(0x33, param_1, 0, iVar7); - } - } else { - if (*(s16 *)(psVar6 + 0x18a) < 0x80 && *(u16 *)psVar6 != 0x19) { - goto LAB_end; - } - iVar7 = *(s32 *)(psVar6 + 0x184); - if (iVar7 != 0) { - func_80015978(iVar7 + 4, (s32 *)buf); - buf[3] = 0; - uVar4 = func_80156370(0x21); - func_8014C4AC(iVar7, 0x21, uVar4, buf, *(s16 *)(iVar8 + 0x12)); - if ((*(s32 *)(iVar7 + 0xb4) & 0x40000) != 0) { - func_8014AD30(param_1, (u16 *)buf, 0, *(s16 *)(iVar7 + 0x60)); - } - } - } - - uVar5 = func_8014CA00(iVar7); - *(s32 *)(psVar6 + 0x184) = uVar5; - if (0x1e < (u32)uVar5) { - *(s32 *)(psVar6 + 0x184) = 0; - } - func_80146E90((s32 *)param_1, 0x20); - *(s32 *)(psVar6 + 0x44) = *(s32 *)(psVar6 + 0x44) & ~0x20; - func_80147324(0x449); - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - -LAB_end: - uVar4 = func_80012F74(*(s16 *)(iVar8 + 0x1a), 0x1800, 3, 1); - *(s16 *)(iVar8 + 0x1a) = uVar4; - *(s16 *)(iVar8 + 0x18) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0x6), *(s16 *)(param_1 + 0x58), 8, 1); - *(s16 *)(param_1 + 0x6) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0xa), *(s16 *)(param_1 + 0x5a), 8, 1); - *(s16 *)(param_1 + 0xa) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0xe), *(s16 *)(param_1 + 0x5c), 8, 1); - *(s16 *)(param_1 + 0xe) = uVar4; -} - - -DEFINE_func_80164270() /* dedup: shared engine-core @0x80164270 (src/shared) */ - -DEFINE_func_801642AC() /* dedup: shared engine-core @0x801642AC (src/shared) */ - -DEFINE_func_8016432C() /* dedup: shared engine-core @0x8016432C (src/shared) */ - -DEFINE_func_80164410() /* dedup: shared engine-core @0x80164410 (src/shared) */ - -DEFINE_func_80164418() /* dedup: shared engine-core @0x80164418 (src/shared) */ - -DEFINE_func_80164530() /* dedup: shared engine-core @0x80164530 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (fn-ptr table dispatch via u16 idx, $s0 holds *(s32*)(p+0x20) across the call) - -extern void (*D_8018D800[])(void); -extern void func_80162D28(s32 *a0); - -void func_80164744(s32 param_1) -{ - s32 iVar1; - - iVar1 = *(s32 *)(param_1 + 0x20); - D_8018D800[*(u16 *)(param_1 + 2)](); - if (iVar1 != 0) { - ((void (*)(s32))func_80162D28)(param_1); - } -} - - - - -// @class: other -// @stuck: none — MATCH (relocation-masked); key was `if (iVar1 != 0) { big } else { func_80164930 }` (non-zero case first → beqz, not bnez) - - -extern void func_8014659C(void); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80146CA0(void *a0); -extern void func_80164930(s32 a); - -extern u16 D_800DF2E0; -extern s32 D_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; - -void func_801647A4(int param_1) { - s32 iVar1; - - iVar1 = ((s32 (*)(void))func_8014659C)(); - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 != 0) { - ((void (*)(s32, void *))func_8001C810)(iVar1, &D_800DF2E0); - *(s32 **)(iVar1 + 0x80) = &D_8018D7C8; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - *(u16 *)(iVar1 + 0x2c) = *(u16 *)(iVar1 + 0x2c) | 0xb0; - D_8018D7FC = 0x80; - D_8018D7FA = 0x80; - D_8018D7F8 = 0x80; - *(u16 *)(iVar1 + 0x1a) = 0; - *(u16 *)(param_1 + 0x60) = 0; - *(u16 *)(param_1 + 0x62) = 0x200; - ((s32 (*)(s32))func_80164A74)(param_1); - ((void (*)(s32))func_80146CA0)(param_1); - } else { - func_80164930(param_1); - } -} - - -DEFINE_func_80164864() /* dedup: shared engine-core @0x80164864 (src/shared) */ - -// @class: regalloc-order — wave-3 real-TU crack (§42a); cracked at Max. -// Fix: D_8018D7FC read needs direct-addressed `lhu` (u16). Cannot use `*(u16*)&D_8018D7FC` -// (forces &sym into a held reg -> drift) NOR a block-scoped `extern u16` (conflicting-types -// ERROR vs the ambient s16, cc1 exit 33). Solution: flip the file-scope decl (5802) to u16 — -// byte-neutral to the only other user (func_801647A4 store-only) — and reference directly. - - -void func_80164930(s32 param_1) { - int iVar3 = *(int *)(((int)param_1) + 0x20); - if (*(int *)(((int)param_1) + 0x50) == 0) { - short sVar1 = *(u16 *)(iVar3 + 0x1c) + 0x100; - short nv; - *(short *)(iVar3 + 0x1c) = sVar1; - *(short *)(iVar3 + 0x18) = sVar1; - *(short *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) + 0x71; - nv = D_8018D7FC - 8; - D_8018D7FC = nv; - D_8018D7FA = nv; - D_8018D7F8 = nv; - if (nv < -0x80) { - int i, lim; - Ent_80164930_80164930 *p; - for (i = 0, lim = 0x19, p = ((Ent_80164930_80164930 *)&D_8011F9D0); i < 0x14; i++) { - if (p->f0 == lim && p->f50 != 0) { - ((void(*)(Ent_80164930_80164930 *))func_80162CCC)(p); - } - p++; - } - ((void(*)(Ent_80164930_80164930 *))func_80162CCC)((Ent_80164930_80164930 *)((int)param_1)); - } else { - ((void(*)(int))func_80164ACC)(((int)param_1)); - } - } else { - short sVar1 = *(u16 *)(iVar3 + 0x1c) + 0x40; - u16 uVar2; - *(short *)(iVar3 + 0x1c) = sVar1; - *(short *)(iVar3 + 0x18) = sVar1; - uVar2 = *(u16 *)(iVar3 + 0x1a) - 0x200; - *(u16 *)(iVar3 + 0x1a) = uVar2; - if ((int)((unsigned)uVar2 << 0x10) < 0) { - *(short *)(iVar3 + 0x1a) = 0; - } - *(short *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) - 0x71; - } -} - - - -DEFINE_func_80164A74() /* dedup: shared engine-core @0x80164A74 (src/shared) */ - -DEFINE_func_80164ACC() /* dedup: shared engine-core @0x80164ACC (src/shared) */ - - -extern void (*D_8018D80C[])(void); - -void func_80164BA0(void *a0) { - D_8018D80C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80146578(void); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80146CA0(void *a0); -extern void func_80164DB0(void); - -extern u8 D_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; - -void func_80164BDC(s32 param_1) -{ - register s32 p1 __asm__("$17"); /* $s1 */ - register s32 iVar1 __asm__("$16"); /* $s0 */ - register s32 base __asm__("$18"); /* $s2 */ - - p1 = param_1; - iVar1 = ((s32 (*)(void))func_80146578)(); - base = (s32)&D_801E6F70; - *(s32 *)(p1 + 0x20) = iVar1; - if (iVar1 != 0) { - func_8001CD50(iVar1, base); - ((void (*)(s32, s32))func_800233CC)(base, 0x60); - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - D_801E6F71 = 0xf0; - *(u8 *)base = 0xf0; - D_801E6F72 = 0xc0; - D_801E6F76 = 0; - D_801E6F75 = 0; - D_801E6F74 = 0; - D_801E6F77 = 0; - D_801E6F73 = 0; - *(s16 *)(iVar1 + 0x1e) = 0xccc; - *(s16 *)(iVar1 + 0x10) = 0x400; - *(s16 *)(p1 + 0x60) = 0x700; - *(s16 *)(p1 + 0x62) = -0x60; - func_80164DD0(p1); - ((void (*)(s32))func_80146CA0)(p1); - } else { - ((void (*)(s32))func_80164DB0)(p1); - } -} - - -DEFINE_func_80164CD4() /* dedup: shared engine-core @0x80164CD4 (src/shared) */ - -DEFINE_func_80164D4C() /* dedup: shared engine-core @0x80164D4C (src/shared) */ - -DEFINE_func_80164DB0() /* dedup: shared engine-core @0x80164DB0 (src/shared) */ - -DEFINE_func_80164DD0() /* dedup: shared engine-core @0x80164DD0 (src/shared) */ - - - - - -extern u8 D_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; - -s32 func_80164E40(void) { - u8 *p = &D_801E6F70; - if (*p != 0) { - *p -= 0x10; - } - if (D_801E6F71 != 0) { - D_801E6F71 -= 0x10; - } - if (D_801E6F72 != 0) { - D_801E6F72 -= 0x10; - } - return *(s32 *)p == 0; -} - - - -extern void (*D_8018D81C[])(void); - -void func_80164EA4(void *a0) { - D_8018D81C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: struct -// @stuck: none — MATCH - - /* stride 0x10 */ -extern DStruct D_801E6FBC[]; - -extern void func_80165124(void *a0); -extern void func_80146CA0(void *a0); - -void func_80164EE0(int param_1) -{ - int i; - - for (i = 7; i >= 0; i--) { - D_801E6FBC[i].f0 = 0; - } - *(short *)(param_1 + 0x2e) = 0x4000; - *(short *)(param_1 + 0x2c) = 0x4000; - *(short *)(param_1 + 0x60) = 0; - *(short *)(param_1 + 0x62) = 0; - ((void (*)(int))func_80165124)(param_1); - *(short *)(param_1 + 0x66) = 0; - ((void (*)(int))func_80146CA0)(param_1); -} - - -DEFINE_func_80164F44() /* dedup: shared engine-core @0x80164F44 (src/shared) */ - -DEFINE_func_80165024() /* dedup: shared engine-core @0x80165024 (src/shared) */ - -DEFINE_func_80165064() /* dedup: shared engine-core @0x80165064 (src/shared) */ - -DEFINE_func_801650C4() /* dedup: shared engine-core @0x801650C4 (src/shared) */ - -DEFINE_func_80165124() /* dedup: shared engine-core @0x80165124 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (30 ins) -// -// Unaligned slot-fill: loop over 8 slots (0x10 stride) of a global table, -// fill the first free one (field @0xC == 0). Two unaligned block copies from -// param_1 (packed struct assigns -> lwl/lwr/swl/swr). Key: recompute -// p = &D_801E6FB0[i] each iteration (NOT p++) so gcc reduces base+i*0x10 into -// a SINGLE pointer IV with immediate offsets 0/8/0xC. Hand-incrementing p makes -// combine_givs split the field offsets into a second pointer IV (+2 ins). - - - - -s32 func_80165140(s32 param_1) { - extern Slot_80165140 D_801E6FB0[8]; - - int i; - Slot_80165140 *p; - for (i = 0; i < 8; i++) { - p = &D_801E6FB0[i]; - if (p->used == 0) { - p->used = 8; - p->a = *(B8_80165140 *)(((u8 *)param_1) + 0x2c); - p->b = *(B4_80165140 *)(((u8 *)param_1) + 0x50); - return; - } - } -} - - - - -// @class: schedule -// @stuck: none — MATCH (pins $s2/$s1/$s0 + zero-code barrier hoists $a0 copy into beqz delay slot) - -extern void func_80165240(void *param_1, void *param_2, void *param_3); -extern s32 D_801E6FB0; - -void func_801651B8(void * param_1) -{ - register s32 *puVar1 __asm__("$16"); /* $s0 */ - register s32 iVar2 __asm__("$17"); /* $s1 */ - register s32 p __asm__("$18"); /* $s2 */ - - p = param_1; - ((s32 (*)(s32, s32, s32))func_80165240)(p, p + 0x2c, p + 0x50); - iVar2 = 0; - puVar1 = &D_801E6FB0; - do { - if (puVar1[3] != 0) { - s32 a0v = p; - __asm__ __volatile__("" : "=r"(a0v) : "0"(a0v)); - ((s32 (*)(s32, s32, s32))func_80165240)(a0v, (s32)puVar1, (s32)(puVar1 + 2)); - puVar1[3] = puVar1[3] + -1; - } - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 4; - } while (iVar2 < 8); -} - - -extern void func_80016ED4(void *a0); -extern s32 func_80017DC4(void *a0, void *a1); - -void func_80165240(void *param_1, void *param_2, void *param_3) -{ - - extern u8 D_8018D830[]; - extern u32 D_8018D850, D_8018D854, D_8018D858, D_8018D85C; - extern u32 D_8018D850, D_8018D854, D_8018D858, D_8018D85C; - extern u32 D_8018D850, D_8018D854, D_8018D858, D_8018D85C; - extern u32 D_8018D850, D_8018D854, D_8018D858, D_8018D85C; - u8 prim[0x40]; /* $sp+0x10 .. 0x50 */ - u8 mat[0x20]; /* $sp+0x50 .. 0x70 */ - u8 *p = prim; - - func_80017DC4(param_2, mat); - ApplyMatrixSV(mat, &D_8018D830[0x00], p); - ApplyMatrixSV(mat, &D_8018D830[0x08], prim + 0x08); - ApplyMatrixSV(mat, &D_8018D830[0x10], prim + 0x10); - ApplyMatrixSV(mat, &D_8018D830[0x18], prim + 0x18); - - *(s16 *)(prim + 0x04) = 3; - prim[0x38] = 0x2c; - *(u32 *)(prim + 0x20) = D_8018D858; - *(u32 *)(prim + 0x24) = D_8018D850; - *(u32 *)(prim + 0x28) = D_8018D85C; - *(u32 *)(prim + 0x2c) = D_8018D854; - *(struct W4 *)(prim + 0x30) = *(struct W4 *)param_3; - *(u32 *)(prim + 0x34) = 0x50000000; - - func_80016ED4(p); -} - - -DEFINE_func_8016533C() /* dedup: shared engine-core @0x8016533C (src/shared) */ - -DEFINE_func_80165374() /* dedup: shared engine-core @0x80165374 (src/shared) */ - -DEFINE_func_801653B8() /* dedup: shared engine-core @0x801653B8 (src/shared) */ - -DEFINE_func_801653F4() /* dedup: shared engine-core @0x801653F4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (54 ins) - -extern u8 D_80078E78[]; -extern u8 D_80078EC1; -extern void (*D_8018D860[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); - -void func_801654A8(s32 arg0) -{ - u8 *s1 = D_80078E78; - - if (*(u16 *)arg0 == 0x16) { - return; - } - if (*(u16 *)arg0 != 0x1A) { - if ((*(s32 *)(arg0 + 0x1F8) & 0x80FFFFFF) == 0) { - if (func_80165658(arg0, D_80078EC1) & 0x80) { - ((void (*)(s32))D_8018D860[D_80078EC1 & 0x7F])(arg0); - } - } - } - if (*(u16 *)arg0 == 0x16) { - return; - } - if (*(u16 *)arg0 == 0x1A) { - return; - } - if (s1[0x49] == 0x19) { - func_800CAE0C(arg0); - } -} - - - -// @class: struct -// @stuck: none — MATCH (function-pointer-array dispatch; & 0x80 branch + & 0x7f index fold) - -extern u8 D_80078EC5; -extern u8 D_80078EC1; -extern void (*D_8018D860[])(void); -extern void func_80165B28(void *a0); - -void func_80165580(s32 _arg0) -{ - if (D_80078EC5 & 0x80) { - ((void (*)(void))func_80165B28)(); - } else { - D_8018D860[D_80078EC1 & 0x7F](); - } -} - - -DEFINE_func_801655E4() /* dedup: shared engine-core @0x801655E4 (src/shared) */ - -DEFINE_func_80165624() /* dedup: shared engine-core @0x80165624 (src/shared) */ - - -extern u8 D_8018D8DC[]; - -u8 func_80165658(s32 a0, s32 a1) { - return D_8018D8DC[a1 & 0x7F]; -} - - - -extern s32 D_8018D8FC[]; -extern s32 D_80078EC8; - -void func_80165670(s32 a0, s32 a1) { - D_80078EC8 = D_8018D8FC[a1 & 0x7F]; -} - - -DEFINE_func_80165694() /* dedup: shared engine-core @0x80165694 (src/shared) */ - - -extern u8 D_8018D978[]; - -u8 func_801656D0(s32 a0, s32 a1) { - return D_8018D978[a1 & 0x7F]; -} - - - -extern u8 D_8018D998[]; - -u8 func_801656E8(s32 a0, s32 a1) { - return D_8018D998[a1 & 0x7F]; -} - - - -extern u8 D_8018D9B8[]; - -u8 func_80165700(s32 a0, s32 a1) { - return D_8018D9B8[a1 & 0x7F]; -} - - -DEFINE_func_80165718() /* dedup: shared engine-core @0x80165718 (src/shared) */ - -DEFINE_func_80165770() /* dedup: shared engine-core @0x80165770 (src/shared) */ - -DEFINE_func_801657A0() /* dedup: shared engine-core @0x801657A0 (src/shared) */ - -DEFINE_func_801657D8() /* dedup: shared engine-core @0x801657D8 (src/shared) */ - -DEFINE_func_80165840() /* dedup: shared engine-core @0x80165840 (src/shared) */ - -DEFINE_func_80165874() /* dedup: shared engine-core @0x80165874 (src/shared) */ - -DEFINE_func_801658DC() /* dedup: shared engine-core @0x801658DC (src/shared) */ - -DEFINE_func_801658EC() /* dedup: shared engine-core @0x801658EC (src/shared) */ - -DEFINE_func_80165900() /* dedup: shared engine-core @0x80165900 (src/shared) */ - -DEFINE_func_80165910() /* dedup: shared engine-core @0x80165910 (src/shared) */ - -DEFINE_func_80165938() /* dedup: shared engine-core @0x80165938 (src/shared) */ - -DEFINE_func_80165958() /* dedup: shared engine-core @0x80165958 (src/shared) */ - -DEFINE_func_80165978() /* dedup: shared engine-core @0x80165978 (src/shared) */ - -DEFINE_func_80165988() /* dedup: shared engine-core @0x80165988 (src/shared) */ - -DEFINE_func_801659A8() /* dedup: shared engine-core @0x801659A8 (src/shared) */ - -DEFINE_func_801659B8() /* dedup: shared engine-core @0x801659B8 (src/shared) */ - -DEFINE_func_801659CC() /* dedup: shared engine-core @0x801659CC (src/shared) */ - - - -s32 func_801659DC(u8 *a0) { - - extern void (*D_8018D9D8[])(void); - D_8018D9D8[*(u8 *)((s32)a0 + 0x1A0)](); -} - - -DEFINE_func_80165A18() /* dedup: shared engine-core @0x80165A18 (src/shared) */ - -DEFINE_func_80165A20() /* dedup: shared engine-core @0x80165A20 (src/shared) */ - -DEFINE_func_80165A50() /* dedup: shared engine-core @0x80165A50 (src/shared) */ - -DEFINE_func_80165A78() /* dedup: shared engine-core @0x80165A78 (src/shared) */ - - -extern u8 D_80078EC1; -extern void (*D_8018DA54[])(void); - -void func_80165AC8(void) { - D_8018DA54[D_80078EC1 & 0x7F](); -} - - -DEFINE_func_80165B08() /* dedup: shared engine-core @0x80165B08 (src/shared) */ - -DEFINE_func_80165B10() /* dedup: shared engine-core @0x80165B10 (src/shared) */ - -DEFINE_func_80165B18() /* dedup: shared engine-core @0x80165B18 (src/shared) */ - -DEFINE_func_80165B20() /* dedup: shared engine-core @0x80165B20 (src/shared) */ - - -extern void (*D_8018DAD0[])(void); - -void func_80165B28(void *a0) { - *(u32 *)((s32)a0 + 0x44) |= 8; - D_8018DAD0[*(u8 *)((s32)a0 + 0x197)](); -} - - -DEFINE_func_80165B6C() /* dedup: shared engine-core @0x80165B6C (src/shared) */ - -DEFINE_func_80165BB4() /* dedup: shared engine-core @0x80165BB4 (src/shared) */ - -DEFINE_func_80165BFC() /* dedup: shared engine-core @0x80165BFC (src/shared) */ - -DEFINE_func_80165C58() /* dedup: shared engine-core @0x80165C58 (src/shared) */ - -DEFINE_func_80165C78() /* dedup: shared engine-core @0x80165C78 (src/shared) */ - -DEFINE_func_80165CA0() /* dedup: shared engine-core @0x80165ca0 (src/shared) */ - - -extern M2C_UNK D_801E63C4; - -void func_80165E2C(u16 *arg0) { - func_8001534C(0, &D_801E63C4, 0x80, 0x80, 0, 0); - func_800153CC(1, *arg0, 0xA8, 0x80, 0x40, 0); -} - - -DEFINE_func_80165E90() /* dedup: shared engine-core @0x80165E90 (src/shared) */ - -DEFINE_func_80165FA4() /* dedup: shared engine-core @0x80165FA4 (src/shared) */ - - -extern void (*D_8018DADC[])(void); - -void func_80166018(void *a0) { - D_8018DADC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80166054() /* dedup: shared engine-core @0x80166054 (src/shared) */ - -DEFINE_func_801661CC() /* dedup: shared engine-core @0x801661CC (src/shared) */ - -DEFINE_func_80166244() /* dedup: shared engine-core @0x80166244 (src/shared) */ - -DEFINE_func_8016629C() /* dedup: shared engine-core @0x8016629C (src/shared) */ - -DEFINE_func_801662F4() /* dedup: shared engine-core @0x801662F4 (src/shared) */ - -DEFINE_func_8016634C() /* dedup: shared engine-core @0x8016634C (src/shared) */ - -DEFINE_func_801663A4() /* dedup: shared engine-core @0x801663A4 (src/shared) */ - - -extern void (*D_8018DAE4[])(void); - -void func_801663FC(void *a0) { - D_8018DAE4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80166438() /* dedup: shared engine-core @0x80166438 (src/shared) */ - -DEFINE_func_801665B4() /* dedup: shared engine-core @0x801665B4 (src/shared) */ - - -extern void (*D_8018DBAC[])(void); - -void func_80166618(void *a0) { - D_8018DBAC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018DBBC[])(void); - -void func_80166654(void *a0) { - D_8018DBBC[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - - /* 12-byte sub-table record (stride 0xC) */ - - - -s32 func_80166690(s32 param_1, s32 param_2) -{ - extern s32 func_80017758(void *a0, void *a1); - extern Blk20 D_800AE620; - extern u8 D_801E7030[]; - - Frame_80166690_80166690 c; - Blk20 blk; - Rec_80166690_80166690 *sub; - Rec_80166690_80166690 *pv; - u8 *rec; - int i6; - int lt2; - int p2; - unsigned int uVar7, uVar8, uVar9; - int iVar3; - unsigned int w9, w7, w, t, w3b; - int w3; - short sVar10; - register unsigned int zr __asm__("$0"); - - blk = D_800AE620; - i6 = (short)param_1; - c.tag = 0x50000000; - rec = &D_801E7030[i6 * 0xC4]; - sVar10 = 0; - if (rec[0] == 0) { - return 0; - } - sub = (Rec_80166690_80166690 *)(rec + 4); - uVar9 = rec[1]; - uVar8 = rec[3]; - uVar7 = uVar8 >> 1; - iVar3 = rec[2]; - w3 = iVar3 - 1; - iVar3 = w3 + zr; - if (w3 != -1) { - lt2 = i6 < 2; - p2 = (short)param_2; - do { - pv = &sub[(short)uVar9]; - c.v0 = pv->h[0]; - c.v1 = pv->h[1]; - c.v2 = pv->h[2]; - c.w0 = pv->h[3]; - c.w1 = pv->h[4]; - c.w2 = pv->h[5]; - sVar10 = sVar10 + 1; - - if (lt2) { - if (p2 == 0) { - t = uVar8 + zr; - c.c12 = t; c.c02 = t; - t = uVar7 + zr; - } else { - w = ((int)(uVar8 << 16) >> 17) + ((int)(uVar8 << 16) >> 19); - uVar7 = w + zr; - c.c12 = w; c.c02 = w; - t = uVar8 + zr; - } - c.c11 = t; c.c01 = t; c.c10 = t; c.c00 = t; - } else { - t = uVar8 + zr; - c.c10 = t; c.c00 = t; - t = uVar7 + zr; - c.c12 = t; c.c02 = t; c.c11 = t; c.c01 = t; - } - - w9 = uVar9 - 1; - uVar9 = w9 + zr; - if ((int)(w9 << 16) < 0) { - uVar9 = 0xF; - } - pv = &sub[(short)uVar9]; - c.v3 = pv->h[0]; - c.v4 = pv->h[1]; - c.v5 = pv->h[2]; - c.w3 = pv->h[3]; - c.w4 = pv->h[4]; - uVar8 = uVar8 - 0x10; - w7 = uVar7 - 0x10; - uVar7 = w7 + zr; - c.w5 = pv->h[5]; - if ((int)(w7 << 16) < 0) { - uVar7 = 0; - } - - if (lt2) { - if (p2 == 0) { - t = uVar8 + zr; - c.c32 = t; c.c22 = t; - t = uVar7 + zr; - } else { - t = uVar7 + zr; - c.c32 = t; c.c22 = t; - t = uVar8 + zr; - } - c.c31 = t; c.c21 = t; c.c30 = t; c.c20 = t; - } else { - t = uVar8 + zr; - c.c30 = t; c.c20 = t; - t = uVar7 + zr; - c.c32 = t; c.c22 = t; c.c31 = t; c.c21 = t; - } - - __asm__ __volatile__("" :: "r"(iVar3)); - func_80017758(&c, &blk); - w3b = iVar3 - 1; - iVar3 = w3b + zr; - } while ((short)w3b != -1); - } - return (short)sVar10; -} - - - - -/* func_80166994 — trail/afterimage ring recorder (0xC4-stride Trail records at D_801E7030). - * param_2: 0=init, 1=advance(record), 2=fadeout; param_3: trail index (s16); param_4: divisor (s16). - * - * K&R definition: true s16 params => callee-side lazy per-use narrow/extend with raw pseudos - * (s3/t0/s4 hold raw a1/a2/a3; first-use extension allocates IN PLACE into the arg reg), while - * the promoted K&R type (int x4) stays compatible with the canon-sig s32 prototype in the TU. - * Returns s32 (v0=1 when the fadeout completes, else 0) => the //@EDIT above flips the split's - * canon-sig prototype return type, AND engine_core.h needs the once-global ec_edit (all 5 sites, - * byte-neutral: every caller discards the result): - * ec_edit old: "extern void func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \" - * ec_edit new: "extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \" - * Without the ec_edit, cc1 hard-errors (conflicting types vs the void decls in DEFINE_ macros). - * - * Fully block-scoped (typedefs + externs inside the body) so the crack propagates ×134 via - * family_remap with zero file-scope footprint. No register pins. - */ -s32 func_80166994(param_1, param_2, param_3, param_4) - s32 param_1; - s16 param_2; - s16 param_3; - s16 param_4; -{ - extern u8 D_801E7030[]; - extern void RotTransSV(void *a0, void *a1, void *a2); - extern s32 VectorNormalSS(void *a0, void *a1); - - Trail *p = &((Trail *)D_801E7030)[param_3]; - s32 uVar6 = *(s32 *)(param_1 + 0x34); - s16 v10[4]; - s16 v18[4]; - s16 v20[4]; - s16 v28[4]; - s16 out[4]; - s32 c; - - switch (param_2) { - case 0: - p->flag = 1; - p->count = 0; - p->idx = 0; - p->timer = 0xf4; - break; - case 1: - v20[0] = p->e[p->idx].f0; - v20[1] = p->e[p->idx].f1; - v20[2] = p->e[p->idx].f2; - v28[0] = p->e[p->idx].f3; - v28[1] = p->e[p->idx].f4; - v28[2] = p->e[p->idx].f5; - c = p->idx; - p->idx = c + 1; - if ((u8)(c + 1) > 0xf) { - p->idx = 0; - } - if (p->count < 0xf) { - p->count = p->count + 1; - } - break; - case 2: { - u8 bVar3 = p->timer - 0x10; - p->timer = bVar3; - if (bVar3 < 0x10) { - p->flag = 0; - return 1; - } - { - u8 bVar1 = p->count; - if (bVar1 >= 2 && (bVar3 >> 4) < bVar1) { - p->count = bVar1 - 1; - } - } - return 0; - } - } - - if (param_3 < 2) { - func_801484B0((s32)v10, (s32)v18); - } else { - func_80148534((s32)v10, (s32)v18); - } - func_80165FA4(uVar6, (s32)v10, (s32)v18); - ((void (*)(s32, s32, s32))func_80149350)(uVar6, (s32)v10, (s32)v10); - RotTransSV(v18, v18, out); - - if (param_2 != 0) { - v20[0] = (v10[0] + v20[0]) >> 1; - v20[1] = (v10[1] + v20[1]) >> 1; - v20[2] = (v10[2] + v20[2]) >> 1; - v28[0] = (v18[0] + v28[0]) >> 1; - v28[1] = (v18[1] + v28[1]) >> 1; - v28[2] = (v18[2] + v28[2]) >> 1; - v20[0] = v20[0] - v28[0]; - v20[1] = v20[1] - v28[1]; - v20[2] = v20[2] - v28[2]; - VectorNormalSS(v20, v20); - v20[0] = v28[0] + v20[0] / param_4; - v20[1] = v28[1] + v20[1] / param_4; - v20[2] = v28[2] + v20[2] / param_4; - p->e[p->idx].f0 = v20[0]; - p->e[p->idx].f1 = v20[1]; - p->e[p->idx].f2 = v20[2]; - p->e[p->idx].f3 = v28[0]; - p->e[p->idx].f4 = v28[1]; - p->e[p->idx].f5 = v28[2]; - c = p->idx; - p->idx = c + 1; - if ((u8)(c + 1) > 0xf) { - p->idx = 0; - } - if (p->count < 0xf) { - p->count = p->count + 1; - } - } - - p->e[p->idx].f0 = v10[0]; - p->e[p->idx].f1 = v10[1]; - p->e[p->idx].f2 = v10[2]; - p->e[p->idx].f3 = v18[0]; - p->e[p->idx].f4 = v18[1]; - p->e[p->idx].f5 = v18[2]; - return 0; -} - - -// @class: regalloc-order -// @stuck: none — MATCH (69 ins). Pins $s4/$s1 for param_2/param_3 + a1/a2-pinned temps -// with non-volatile SHB barriers force the sign-ext move-form; short iVar2 (unpinned) -// gives the temp-form counter increment that fills the skip-branch delay slots; -// loop-invariant eq=(p2==p3) hoisted; SHB(p2) after the move serializes param_2 before -// param_3's sign-ext (last ordering swap); param_1/param_4 left natural (arg-order saves). - - -#define SHB(x) __asm__("" : "=r"(x) : "0"(x)) - -s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4) -{ - /* [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_8011D030; - extern unsigned char D_801E7030[]; - - register int p2 __asm__("$20"); /* $s4 */ - register int p3 __asm__("$17"); /* $s1 */ - register int t2 __asm__("$5"); /* a1 */ - register int t3 __asm__("$6"); /* a2 */ - unsigned short *puVar1; - short iVar2; - int eq; - - iVar2 = 0; - puVar1 = ((unsigned short *)&D_8011D030); - t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); - t3 = ((short)param_3); SHB(t3); p3 = t3; - eq = (p2 == p3); - do { - if ((puVar1 != ((unsigned short *)param_1)) && - ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) && - (!eq || - *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) { - ((void(*)(unsigned short *))func_80146C3C)(puVar1); - } - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 0x2c; - } while (iVar2 < 0x1e); - ((void(*)(void *, int))func_80016714)(&D_801E7030[((short)param_4) * 0xc4], 0xc4); -} - - - - - -DEFINE_func_8016706C() /* dedup: shared engine-core @0x8016706C (src/shared) */ - - - -// @class: schedule -// @stuck: 16/279 masked. 3 runs, ONE residual class: gcc's list-scheduler puts `la $s2` (p=DATA) + `addu $s4,$zero,$zero` (i=0) BEFORE the callee-arg address setup (addiu $a1,$sp,0x10 / addu $a2,$a1,$zero); the target emits them AFTER. Inert to ~40 statement-order permutations + pin/barrier combos (sched priority dominates the LUID tie-break, sched.c rank_for_schedule). Runs: 19-24 (blk1), 111-114 (region-B cx-load rotation), 177-182 (blk3). Permuter fuel. - - - - -extern void func_80149350(s32); -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 RotMatrixYXZ(void *a0, void *a1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); - - -s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - - extern u8 D_8018DB00[]; - extern u8 D_8018DAEC[]; - extern u8 D_8018DB14[]; - extern s32 D_801269A4; - extern s32 D_801269A8; - extern s32 D_801269AC; - extern u16 D_80126CE0; - Fr_801670E4 f; - register u8 *p __asm__("$18"); /* $s2 */ - register s32 ent __asm__("$19"); /* $s3 */ - s16 i; - s32 d; - s32 node; - u16 c; - u8 cv; - u8 cv2; - register s32 gA __asm__("$2"); - register s32 cxv __asm__("$4"); - register s32 czv __asm__("$5"); - u8 *vc; - u8 *ap; - u8 *mp; - u8 *va; - u8 *vb; - - ent = arg0; - node = *(s32 *)(ent + 0x34); - f.v[1].z = 0; - f.v[1].y = 0; - f.v[1].x = 0; - f.v[3].z = 0; - f.v[2].z = 0; - f.v[0].z = 0; - f.col[1].b = 0x70; - cv = *(u8 *)(ent + 0x12); - f.cx = arg1; - __asm__ __volatile__(""); - va = (u8 *)&f.cx; - __asm__ __volatile__("" : "=r"(va) : "0"(va)); - f.cy = arg2; - vb = va; - __asm__ __volatile__("" : "=r"(vb) : "0"(vb)); - p = D_8018DB00; - i = 0; - f.col[0].b = 0; - f.col[0].g = 0; - f.col[0].r = 0; - f.col[2].b = 0; - f.col[2].g = 0; - f.col[2].r = 0; - f.col[3].b = 0; - f.col[3].g = 0; - f.col[3].r = 0; - f.code = 0x50000000; - f.cz = arg3; - f.col[1].r = cv; - f.col[1].g = cv; - ((void (*)(s32, void *, void *))func_80149350)(node, va, vb); - - c = f.cx; - *(s16 *)(ent + 0x06) = c; - *(s32 *)(ent + 0x4C) = (s16)c; - c = f.cy; - *(s16 *)(ent + 0x0A) = c; - *(s32 *)(ent + 0x50) = (s16)c; - c = f.cz; - *(s16 *)(ent + 0x0E) = c; - *(s32 *)(ent + 0x54) = (s16)c; - func_800D20C0(&f.cx, f.a8, 7); - func_80017E68(&f.cx, f.m1); - func_800D23D0(f.a8); - RotMatrixYXZ(f.a8, f.m1); - - do { - f.v[0].x = (s8)*p++; - f.v[0].y = (s8)*p++; - f.v[2].x = (s8)*p++; - f.v[2].y = (s8)*p++; - f.v[3].x = (s8)*p++; - f.v[3].y = (s8)*p--; - func_80017758(f.v, f.m1); - } while ((i = i + 1) < 4); - - p = D_8018DAEC; - gA = 0xA0; - cxv = (s16)f.cx; - f.col[1].g = gA; - gA = D_801269A4; - czv = (s16)f.cz; - f.col[1].b = 0x10; - f.col[1].r = 0x10; - f.pos[0] = gA - cxv; - i = 0; - f.v[3].y = 0; - f.v[2].y = 0; - f.v[0].y = 0; - f.pos[1] = D_801269A8 - (s16)f.cy; - f.pos[2] = D_801269AC - czv; - - do { - f.v[0].x = (s8)*p++; - f.v[0].z = (s8)*p++; - f.v[2].x = (s8)*p++; - f.v[2].z = (s8)*p++; - f.v[3].x = (s8)*p++; - f.v[3].z = (s8)*p--; - func_80017758(f.v, (void *)(ent + 0x38)); - } while ((i = i + 1) < 4); - - if (*(s32 *)(ent + 0x30) > 0) { - vc = (u8 *)&f.cx; - __asm__ __volatile__("" : "=r"(vc) : "0"(vc)); - mp = f.m1; - ap = mp; - __asm__ __volatile__("" : "=r"(ap) : "0"(ap)); - p = D_8018DB14; - i = 0; - d = (s16)f.a8[0] >> 6; - f.cx += d; - f.cy += d; - f.cz += d; - func_80017E68(vc, ap); - f.cx = f.cy = f.cz = ((u32)*(s32 *)(ent + 0x30) >> 1) + D_80126CE0 * 0x20; - func_80017DC4(&f.cx, f.m2); - func_80048EAC(f.m2, mp); - f.v[3].z = 0; - f.v[2].z = 0; - f.v[0].z = 0; - cv2 = *(u8 *)(ent + 0x12); - f.col[1].b = 0x20; - f.col[1].r = 0x20; - f.col[3].b = 0; - f.col[3].r = 0; - f.col[2].b = 0; - f.col[2].r = 0; - f.col[0].b = 0; - f.col[0].r = 0; - f.col[3].g = 0; - f.col[2].g = 0; - f.col[0].g = 0; - f.col[1].g = cv2 + 0x60; - do { - f.v[0].x = (s8)*p++; - f.v[0].y = (s8)*p++; - f.v[2].x = (s8)*p++; - f.v[2].y = (s8)*p++; - f.v[3].x = (s8)*p++; - f.v[3].y = (s8)*p--; - func_80017758(f.v, f.m1); - } while ((i = i + 1) < 8); - } -} - - - - /* 0x20 bytes */ - - - - - - -s32 func_80167540(s32 arg0) { - - struct Node_80167540 *node; - struct Entity_80167540 *ent; - s32 v; - - node = ((struct Entity_80167540 *)arg0)->unk34; - if (node->unk0 == 1) { - if (((struct Entity_80167540 *)arg0)->unk12 > ((struct Entity_80167540 *)arg0)->unk10) { - if (((struct Entity_80167540 *)arg0)->unk1C > 0) { - ((struct Entity_80167540 *)arg0)->unk10 = (s16) (rand() & 0x30); - v = -0x30; - goto shared; - } - } else if (((struct Entity_80167540 *)arg0)->unk1C < 0) { - ((struct Entity_80167540 *)arg0)->unk10 = (s16) ((rand() & 0x30) + 0x40); - v = 0x30; -shared: - ((struct Entity_80167540 *)arg0)->unk1C = v; - } - ((struct Entity_80167540 *)arg0)->unk12 = (s16) (((struct Entity_80167540 *)arg0)->unk12 + ((struct Entity_80167540 *)arg0)->unk1C); - ((struct Entity_80167540 *)arg0)->mat = node->unk20->mat; - ((void (*)(struct Entity_80167540 *, s32, s32, s32))func_801670E4)(((struct Entity_80167540 *)arg0), 0, 0, 0); - ent = ((struct Entity_80167540 *(*)(s32, struct Entity_80167540 *, s16, s16, s32, s32, s32))func_80146A6C)(0xE, ((struct Entity_80167540 *)arg0), node->unk6, node->unkA, node->unkE, 0, 0); - if (ent != 0) { - ent->mat = node->unk20->mat; - } - if (((struct Entity_80167540 *)arg0)->unk34->unk4C->unk44 & 0x20) { - ((struct Entity_80167540 *)arg0)->unk30 = 0x600; - ((struct Entity_80167540 *)arg0)->unk2 = (u16) (((struct Entity_80167540 *)arg0)->unk2 + 1); - } - } else { - ((void(*)(struct Entity_80167540 *))func_80146C3C)(((struct Entity_80167540 *)arg0)); - } -} - - - -DEFINE_func_80167714() /* dedup: shared engine-core @0x80167714 (src/shared) */ - - -extern void (*D_8018DBCC[])(void); - -void func_801678B4(void *a0) { - D_8018DBCC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -DEFINE_func_801678F0() /* dedup: shared engine-core @0x801678F0 (src/shared) */ - - - -extern void (*D_8018DBD8[])(void); - -void func_80167A9C(void *a0) { - D_8018DBD8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80167AD8() /* dedup: shared engine-core @0x80167AD8 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH expected; mirrors already-matched sibling func_8016A290 (same 3-loop tail), swapping the inline matrix-setup for a func_80168070 call + constant color block. - -#include "common.h" - - - - - -s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3) { - extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); - extern s32 func_80017758(void *a0, void *a1); - extern u8 D_8018DCE4; - extern u8 D_8018DCF8[]; - - struct Fr_80167AE0 fr; - u8 *p; - s32 i; - register s32 t __asm__("$2"); - register s32 zr __asm__("$0"); - s32 flags; - - func_80168070(param_1, ((s16 *)param_2), ((s16 *)param_3), fr.matrix); - - fr.v[3].z = 0; - fr.v[2].z = 0; - fr.v[0].z = 0; - fr.v[1].z = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - flags = D_800B99DA; - if (flags & 1) { - fr.col[1].r = 0xa0; - } else if (flags & 2) { - fr.col[1].r = 0xc0; - } else { - fr.col[1].r = 0x80; - } - - p = ((u8 *)&D_8018DCE4); - fr.col[0].b = 0; - fr.col[0].g = 0; - fr.col[0].r = 0; - fr.col[2].b = 0; - fr.col[2].g = 0; - fr.col[2].r = 0; - fr.col[3].b = 0; - fr.col[3].g = 0; - fr.col[3].r = 0; - fr.code = 0x50000000; - fr.col[1].b = fr.col[1].r >> 2; - fr.col[1].g = fr.col[1].r >> 2; - i = 0; -L1: - fr.v[0].x = (s8)*p++; - fr.v[0].y = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].y = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].y = (s8)*p--; - func_80017758(fr.v, fr.matrix); - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L1; - - fr.v[3].y = 0; - fr.v[2].y = 0; - fr.v[0].y = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - fr.v[1].z = -0x20; - p = D_8018DCF8; - i = 0; -L2: - fr.v[0].x = (s8)*p++; - fr.v[0].z = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p--; - func_80017758(fr.v, fr.matrix); - if ((s16)i == 1) { - fr.v[1].z = 0x20; - p += 2; - } - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L2; - - p += 2; - fr.v[0].x = 0; - fr.v[0].z = -0x20; - fr.col[0].r = fr.col[1].r; - fr.col[0].b = fr.col[1].g; - fr.col[0].g = fr.col[1].g; - i = 0; -L3: - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p++; - func_80017758(fr.v, fr.matrix); - t = i + 1; - i = t + zr; - if ((s16)t < 2) goto L3; -} - - - - -// @class: schedule -// @stuck: none — MATCH. The between-loops f1/f2 store-swap (0x55/0x56) is fixed by writing f2's assign first, then the chained `buf[0x44] = buf[0x45] = buf[0x45] << 1;` — the chain keeps f1's read first (read order fixed by -0x12 in $v0) while emitting f2's store (0x56) ahead of the f1/f0 pair (0x55,0x54). 173/173. - -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u16 D_800B99DA; -extern u8 D_8018DB38[]; -extern u8 D_8018DB4C[]; - -s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2) { - u8 buf[0x54]; - u8 *p; - s16 i; - - func_80168070(arg0, ((s16 *)arg1), ((s16 *)arg2), buf); - - *(s16 *)(buf + 0x3C) = 0; - *(s16 *)(buf + 0x34) = 0; - *(s16 *)(buf + 0x24) = 0; - *(s16 *)(buf + 0x2C) = 0; - *(s16 *)(buf + 0x2A) = 0; - *(s16 *)(buf + 0x28) = 0; - if (D_800B99DA & 1) { - buf[0x46] = 0x58; - } else { - buf[0x46] = 0x48; - } - buf[0x45] = buf[0x46] >> 2; - buf[0x44] = buf[0x45]; - if (((u8 (*)(s32))func_80029178)(0x81) != 0) { - buf[0x45] = buf[0x45] << 2; - buf[0x46] = buf[0x46] >> 1; - } - - p = D_8018DB38; - buf[0x42] = 0; - buf[0x41] = 0; - buf[0x40] = 0; - buf[0x4A] = 0; - buf[0x49] = 0; - buf[0x48] = 0; - buf[0x4E] = 0; - buf[0x4D] = 0; - buf[0x4C] = 0; - *(s32 *)(buf + 0x50) = 0x50000000; - - for (i = 0; i < 4; i++) { - *(s16 *)(buf + 0x20) = (s8)*p++; - *(s16 *)(buf + 0x22) = (s8)*p++; - *(s16 *)(buf + 0x30) = (s8)*p++; - *(s16 *)(buf + 0x32) = (s8)*p++; - *(s16 *)(buf + 0x38) = (s8)*p++; - *(s16 *)(buf + 0x3A) = (s8)*p--; - func_80017758(buf + 0x20, buf); - } - - p = D_8018DB4C; - *(s16 *)(buf + 0x2C) = -0x12; - *(s16 *)(buf + 0x3A) = 0; - *(s16 *)(buf + 0x32) = 0; - *(s16 *)(buf + 0x22) = 0; - *(s16 *)(buf + 0x2A) = 0; - *(s16 *)(buf + 0x28) = 0; - buf[0x46] = buf[0x46] << 1; - buf[0x44] = buf[0x45] = buf[0x45] << 1; - - for (i = 0; i < 4; i++) { - *(s16 *)(buf + 0x20) = (s8)*p++; - *(s16 *)(buf + 0x24) = (s8)*p++; - *(s16 *)(buf + 0x30) = (s8)*p++; - *(s16 *)(buf + 0x34) = (s8)*p++; - *(s16 *)(buf + 0x38) = (s8)*p++; - *(s16 *)(buf + 0x3C) = (s8)*p--; - if (i == 2) { - buf[0x4E] = buf[0x46]; - buf[0x4D] = buf[0x44]; - buf[0x4C] = buf[0x4D]; - } else if (i == 3) { - buf[0x4E] = 0; - buf[0x4D] = 0; - buf[0x4C] = buf[0x4D]; - buf[0x42] = buf[0x46]; - buf[0x41] = buf[0x44]; - buf[0x40] = buf[0x44]; - } - func_80017758(buf + 0x20, buf); - } -} - - -DEFINE_func_80168070() /* dedup: shared engine-core @0x80168070 (src/shared) */ - - -extern s32 func_80029178(s32 arg); -extern s32 func_80166F58(s32, s32, s32, s32); - -void func_801681FC(s32 param_1) { - - extern u8 D_8018DB90[]; - extern u8 D_8018DB60[]; - extern u8 D_8018DB61[]; - s32 iVar3; - s32 a3; - - *(s16 *)(param_1 + 0x28) = func_80029178(0x81) & 0xFF; - *(s32 *)(param_1 + 0x30) = D_8018DB90[*(s32 *)(param_1 + 0x2C)]; - iVar3 = (*(s32 *)(param_1 + 0x2C) << 0x11) >> 0x10; - *(s16 *)(param_1 + 0x2A) = D_8018DB60[iVar3]; - *(s32 *)(param_1 + 0x1C) = D_8018DB61[iVar3]; - a3 = *(s32 *)(param_1 + 0x2C) & 1; - *(s32 *)(param_1 + 0x2C) = a3; - ((void (*)(s32, s32, s32, s32))func_80166F58)(param_1, 4, 4, a3); - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_8016829C() /* dedup: shared engine-core @0x8016829C (src/shared) */ - -DEFINE_func_80168328() /* dedup: shared engine-core @0x80168328 (src/shared) */ - -DEFINE_func_801683D8() /* dedup: shared engine-core @0x801683D8 (src/shared) */ - - -extern s32 func_80166F58(s32, s32, s32, s32); - -void func_80168430(s32 param_1) { - - extern u8 D_8018DB9C[]; - extern u8 D_8018DB74[]; - extern u8 D_8018DB75[]; - s32 iVar1; - - *(s32 *)(param_1 + 0x30) = D_8018DB9C[*(s32 *)(param_1 + 0x2C)]; - iVar1 = (*(s32 *)(param_1 + 0x2C) << 0x11) >> 0x10; - *(s16 *)(param_1 + 0x2A) = D_8018DB74[iVar1]; - *(s32 *)(param_1 + 0x1C) = D_8018DB75[iVar1]; - ((void (*)(s32, s32, s32, s32))func_80166F58)(param_1, 5, 0x3B, 2); - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_801684B4() /* dedup: shared engine-core @0x801684B4 (src/shared) */ - -DEFINE_func_80168540() /* dedup: shared engine-core @0x80168540 (src/shared) */ - -DEFINE_func_801685EC() /* dedup: shared engine-core @0x801685EC (src/shared) */ - -DEFINE_func_80168640() /* dedup: shared engine-core @0x80168640 (src/shared) */ - -DEFINE_func_80168664() /* dedup: shared engine-core @0x80168664 (src/shared) */ - - -extern void (*D_8018DBF0[])(void); - -void func_80168744(void *a0) { - D_8018DBF0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168780() /* dedup: shared engine-core @0x80168780 (src/shared) */ - -DEFINE_func_801687CC() /* dedup: shared engine-core @0x801687CC (src/shared) */ - -// @class: decl-conflict (reconcile) — MATCH (108 ins), real-TU verified via rtu_match -// @crack: The wave-2 "8-residual SCHEDULE" note was a STALE-OBJECT / isolation phantom (§42b): -// in the real TU the draft NOCOMPILEs — DEFINE_func_801687CC() (split line ~6757) expands -// `extern void func_80168828(void);` right before the def, so `void func_80168828(s32 param_1)` -// is a HARD `conflicting types` error (cc1 exit 33). RECONCILE-FIRST fix (sweep-safe, lives -// entirely in the def — no //@EDIT, no macro edit): declare the fn `(void)` and capture a0 via -// register s32 a0v __asm__("$4"); s32 param_1 = a0v; -// The register-var binds incoming $a0; copying it into a NORMAL pseudo (live across the calls) -// makes gcc allocate param_1 to a callee-saved reg, emitting the target's `addu $s1,$a0,$zero` -// at idx2. NOTE: a DIRECT `register s32 param_1 __asm__("$4")` FAILS (param_1 stays in the -// call-clobbered $a0 → 100-off). With this reconcile, gcc's natural schedule places the CSE'd -// `li $v1,0x40` at idx15 with ZERO extra levers — the §42a lever-4 consumer-block reorder was -// never needed. The $v1 pin (register c40 __asm__("$3")) is still load-bearing (else 0x40 folds -// to a $v0 immediate). 134-overlay family exemplar: only D_8018DBE0 differs -> banks x134. -#include "common.h" - - - -void func_80168828() -{ - extern s32 func_80017DC4(void *a0, void *a1); - extern void func_80049CAC(s32 a0, s32 a1); - extern void func_800173BC(void *a0, void *a1); - extern u16 D_8018DBE0[]; - - - register s32 a0v __asm__("$4"); - s32 param_1 = a0v; - Thing_80168828_80168828 thing; - s16 matA[16]; - s16 matB[16]; - s16 svec[4]; - u16 *p; - short i; - register s32 c40 __asm__("$3"); /* $v1: hold the CSE'd 0x40 (else gcc folds to $v0 immediate) */ - - c40 = 0x40; - thing.f04 = 2; - thing.f0c = 0x24; - thing.f14 = 0x28; - thing.f08 = -3; - thing.f10 = 3; - thing.f02 = 0; - thing.f00 = 0; - thing.f12 = 0; - thing.f0a = 0; - thing.f18 = c40; - thing.f19 = c40; - thing.f22 = c40; - thing.f1e = c40; - thing.f1a = 0x10; - thing.f20 = 0xff; - thing.f1c = 0xff; - thing.f21 = 0xc0; - thing.f1d = 0xc0; - thing.f24 = 0x50000000; - - svec[0] = *(u16 *)(param_1 + 6); - svec[1] = *(u16 *)(param_1 + 0xA); - svec[2] = *(u16 *)(param_1 + 0xE); - func_80017E68(svec, matA); - - svec[0] = svec[1] = svec[2] = (*(s32 *)(param_1 + 0x1C) << 11) + 0x1000; - ((void (*)(void *, void *))func_80017DC4)(svec, matA); - - svec[0] = *(u16 *)(param_1 + 0x12); - svec[1] = *(u16 *)(param_1 + 0x16); - svec[2] = *(u16 *)(param_1 + 0x1A); - RotMatrixYXZ(svec, matB); - - func_80048EAC(matA, matB); - - svec[1] = 0; - p = D_8018DBE0; - for (i = 0; i < 4; i++) { - svec[0] = *p++; - svec[2] = *p++; - ((void (*)(void *, void *))func_80049CAC)(svec, matA); - func_80048EAC(matB, matA); - func_800173BC(&thing, matA); - } -} - - - - -extern void (*D_8018DBF8[])(void); - -void func_801689D8(void *a0) { - D_8018DBF8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168A14() /* dedup: shared engine-core @0x80168A14 (src/shared) */ - -DEFINE_func_80168A88() /* dedup: shared engine-core @0x80168A88 (src/shared) */ - - -extern void (*D_8018DC00[])(void); - -void func_80168AA8(void *a0) { - D_8018DC00[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168AE4() /* dedup: shared engine-core @0x80168AE4 (src/shared) */ - - -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -/* Conform to the TU's canonical decl (jr_8015C32C.c:5546 `extern void func_80146C3C(void);`) - * and cast at the use site — same escape the TU already uses at :6388. Codegen-neutral. */ -extern void func_80146C3C(void); - -void func_80168B70(s32 a0) { - s32 *p = (s32 *)a0; - if (--p[0x1C / 4] != -1) { - func_80168BDC(a0, 9, 3, 1); - } else { - func_80168BDC(a0, 9, 2, 1); - ((void (*)(s32))func_80146C3C)(a0); - } -} - - -DEFINE_func_80168BDC() /* dedup: shared engine-core @0x80168BDC (src/shared) */ - - -extern void (*D_8018DC08[])(void); - -void func_80168D58(void *a0) { - D_8018DC08[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168D94() /* dedup: shared engine-core @0x80168D94 (src/shared) */ - -DEFINE_func_80168EC4() /* dedup: shared engine-core @0x80168EC4 (src/shared) */ - -DEFINE_func_80168F40() /* dedup: shared engine-core @0x80168F40 (src/shared) */ - - -extern void (*D_8018DC10[])(void); - -void func_8016901C(void *a0) { - D_8018DC10[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80169058() /* dedup: shared engine-core @0x80169058 (src/shared) */ - -DEFINE_func_801691B8() /* dedup: shared engine-core @0x801691B8 (src/shared) */ - -DEFINE_func_80169228() /* dedup: shared engine-core @0x80169228 (src/shared) */ - - -extern void (*D_8018DC18[])(void); - -void func_801693CC(void *a0) { - D_8018DC18[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80169408() /* dedup: shared engine-core @0x80169408 (src/shared) */ - -DEFINE_func_8016951C() /* dedup: shared engine-core @0x8016951C (src/shared) */ - -DEFINE_func_80169584() /* dedup: shared engine-core @0x80169584 (src/shared) */ - -DEFINE_func_801696D8() /* dedup: shared engine-core @0x801696D8 (src/shared) */ - - -extern void (*D_8018DC20[])(void); - -void func_80169830(void *a0) { - D_8018DC20[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016986C() /* dedup: shared engine-core @0x8016986C (src/shared) */ - -DEFINE_func_801699D0() /* dedup: shared engine-core @0x801699D0 (src/shared) */ - -DEFINE_func_80169A4C() /* dedup: shared engine-core @0x80169A4C (src/shared) */ - - -extern void (*D_8018DCD4[])(void); - -void func_80169B80(void *a0) { - D_8018DCD4[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern void func_800D2318(void); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_800D222C(void *a0, void *a1, s32 a2); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_80048D9C(void *a0, void *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_80146C3C(void); - -void func_80169BBC(s32 arg0) { - - extern s32 D_801269A4; - extern s32 D_801269A8; - extern s32 D_801269AC; - extern u16 D_8018DC28[]; - extern u8 D_8018DC98[]; - extern u8 D_8018DCC8[]; - extern u8 D_801E8698[]; - u16 rot[4]; - s16 vec[4]; - s32 pos[4]; - s16 mtx[16]; - s32 p1; - s32 s2; - - func_800D2318(); - rot[0] = *(u16 *)(arg0 + 0x12); - rot[1] = *(u16 *)(arg0 + 0x16); - rot[2] = 0; - RotMatrixYXZ(rot, mtx); - vec[0] = 0; - vec[1] = -2; - vec[2] = -0x14; - ApplyMatrixSV(mtx, vec, vec); - *(u16 *)(arg0 + 6) = *(u16 *)(arg0 + 6) + (u16)vec[0]; - *(u16 *)(arg0 + 0xA) = *(u16 *)(arg0 + 0xA) + (u16)vec[1]; - *(u16 *)(arg0 + 0xE) = *(u16 *)(arg0 + 0xE) + (u16)vec[2]; - p1 = func_80146A6C(9, (void *)arg0, *(s16 *)(arg0 + 6), *(s16 *)(arg0 + 0xA), - *(s16 *)(arg0 + 0xE), 0, 0); - if (p1 != 0) { - *(u16 *)(p1 + 0x12) = rot[0]; - *(u16 *)(p1 + 0x16) = rot[1]; - *(u16 *)(p1 + 0x1A) = rot[2]; - } - func_80146A6C(0xC, (void *)arg0, *(s16 *)(arg0 + 6), *(s16 *)(arg0 + 0xA), - *(s16 *)(arg0 + 0xE), 0, 0); - s2 = func_800D222C((void *)arg0, D_8018DCC8, 0x17); - if (s2 != 0) { - *(s32 *)(arg0 + 0x20) = s2; - rot[0] = rot[0] + D_8018DC28[*(s32 *)(arg0 + 0x30)]; - rot[1] = rot[1] - 0x400; - RotMatrixYXZ(rot, mtx); - pos[0] = D_801269A4 - *(s16 *)(arg0 + 6); - pos[1] = D_801269A8 - *(s16 *)(arg0 + 0xA); - pos[2] = D_801269AC - *(s16 *)(arg0 + 0xE); - ApplyTransposeMatrixLV(mtx, pos, pos); - rot[2] = -ratan2(pos[0], pos[1]); - vec[0] = 0x400; - vec[1] = -0x400; - vec[2] = 0; - RotMatrixYXZ(vec, mtx); - *(s32 *)(s2 + 0x34) = (s32)D_801E8698; - RotMatrixYXZ(rot, D_801E8698); - func_80048D9C(D_801E8698, mtx); - *(u16 *)(s2 + 0x18) = 0x5000; - *(u16 *)(s2 + 0x1A) = 0x2000; - *(s32 *)(s2 + 4) = *(s32 *)(s2 + 4) | 0xC000140; - func_80128EA8(s2, arg0 + 0x24, (s32)D_8018DC98); - *(u16 *)(arg0 + 2) = *(u16 *)(arg0 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(arg0); - } -} - - -DEFINE_func_80169E44() /* dedup: shared engine-core @0x80169E44 (src/shared) */ - - -extern void (*D_8018DCDC[])(void); - -void func_80169F00(void *a0) { - D_8018DCDC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (expected; simple straight-line + single branch, one call-crossing local in $s0) - -extern void func_800D1FC8(s32 a0, s32 a1); -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_80146C3C(void); - -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; - -void func_80169F3C(int param_1) -{ - int iVar1; - - ((int (*)(int, int))func_800D1FC8)(param_1, 6); - iVar1 = func_800D21C4(param_1, D_8018DC8C, 0x16); - if (iVar1 != 0) { - *(int *)(param_1 + 0x20) = iVar1; - *(short *)(iVar1 + 0x1a) = 0x2000; - *(short *)(iVar1 + 0x18) = 0x2000; - *(char *)(iVar1 + 0x26) = 0x60; - *(char *)(iVar1 + 0x25) = 0x60; - *(char *)(iVar1 + 0x24) = 0x60; - *(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50000000; - ((void (*)(int, int, void *))func_80128EA8)(iVar1, param_1 + 0x24, D_8018DC4C); - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - } else { - ((void (*)(int))func_80146C3C)(param_1); - } -} - - -DEFINE_func_80169FE0() /* dedup: shared engine-core @0x80169FE0 (src/shared) */ - - -extern void (*D_8018DD14[])(void); - -void func_8016A020(void *a0) { - D_8018DD14[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016A05C() /* dedup: shared engine-core @0x8016A05C (src/shared) */ - -DEFINE_func_8016A08C() /* dedup: shared engine-core @0x8016A08C (src/shared) */ - -DEFINE_func_8016A1CC() /* dedup: shared engine-core @0x8016A1CC (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (284 ins). Loop-counter biv update: pinned $v0 temp + $0-add opaque copy (i = t + zr) forces the target's 2-insn `addiu v0,s1,1; addu s1,v0,zero` and keeps CSE from rewriting the (s16)t test to read s1. - -#include "common.h" - - - - - -void func_8016A290(s32 param_1, void *param_2, void *param_3) { - extern u8 D_8018DCE4; - extern u8 D_8018DCF8[]; - - struct Fr_8016A290 fr; - u8 *p; - s32 i; - register s32 t __asm__("$2"); - register s32 zr __asm__("$0"); - s32 flags; - s32 iVar3; - - iVar3 = *(s32 *)(param_1 + 0x34); - - fr.center.x = (*((s16 *)param_2) + *((s16 *)param_3)) >> 1; - fr.center.y = (((s16 *)param_2)[1] + ((s16 *)param_3)[1]) >> 1; - fr.center.z = (((s16 *)param_2)[2] + ((s16 *)param_3)[2]) >> 1; - ((void(*)(s32, void *, void *))func_80149350)(iVar3, &fr.center, &fr.center); - - *(u16 *)(param_1 + 0x6) = *(u16 *)&fr.center.x; - *(u16 *)(param_1 + 0xA) = *(u16 *)&fr.center.y; - *(u16 *)(param_1 + 0xE) = *(u16 *)&fr.center.z; - func_800D20C0(&fr.center, &fr.diff, 8); - func_80017E68(&fr.center, fr.mtx); - - fr.diff.x = *(u16 *)((s16 *)param_3) - *(u16 *)((s16 *)param_2); - fr.diff.y = *(u16 *)(((s16 *)param_3) + 1) - *(u16 *)(((s16 *)param_2) + 1); - fr.diff.z = *(u16 *)(((s16 *)param_3) + 2) - *(u16 *)(((s16 *)param_2) + 2); - ((void(*)(s32, void *, void *))ApplyMatrixSV)(*(s32 *)(iVar3 + 0x20) + 0x34, &fr.diff, &fr.diff); - func_800D23D0(&fr.diff); - RotMatrixYXZ(&fr.diff, fr.mtx); - - fr.pos[0] = D_801269A4 - fr.center.x; - fr.pos[1] = D_801269A8 - fr.center.y; - fr.pos[2] = D_801269AC - fr.center.z; - ApplyTransposeMatrixLV(fr.mtx, fr.pos, fr.pos); - fr.diff.z = -ratan2(fr.pos[0], fr.pos[1]); - RotMatrixYXZ(&fr.diff, fr.mtx); - - fr.v[3].z = 0; - fr.v[2].z = 0; - fr.v[0].z = 0; - fr.v[1].z = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - flags = D_800B99DA; - if (flags & 1) { - fr.col[1].r = *(s32 *)(param_1 + 0x30) + 0x20; - } else if (flags & 2) { - fr.col[1].r = *(s32 *)(param_1 + 0x30) + 0x40; - } else { - fr.col[1].r = *(s32 *)(param_1 + 0x30); - } - - p = ((u8 *)&D_8018DCE4); - fr.col[0].b = 0; - fr.col[0].g = 0; - fr.col[0].r = 0; - fr.col[2].b = 0; - fr.col[2].g = 0; - fr.col[2].r = 0; - fr.col[3].b = 0; - fr.col[3].g = 0; - fr.col[3].r = 0; - fr.code = 0x50000000; - fr.col[1].b = fr.col[1].r >> 3; - fr.col[1].g = fr.col[1].r >> 3; - i = 0; -L1: - fr.v[0].x = (s8)*p++; - fr.v[0].y = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].y = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].y = (s8)*p--; - func_80017758(fr.v, fr.mtx); - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L1; - - fr.v[3].y = 0; - fr.v[2].y = 0; - fr.v[0].y = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - fr.v[1].z = -0x20; - p = D_8018DCF8; - i = 0; -L2: - fr.v[0].x = (s8)*p++; - fr.v[0].z = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p--; - func_80017758(fr.v, fr.mtx); - if ((s16)i == 1) { - fr.v[1].z = 0x20; - p += 2; - } - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L2; - - p += 2; - fr.v[0].x = 0; - fr.v[0].z = -0x20; - fr.col[0].r = fr.col[1].r; - fr.col[0].b = fr.col[1].g; - fr.col[0].g = fr.col[1].g; - i = 0; -L3: - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p++; - func_80017758(fr.v, fr.mtx); - t = i + 1; - i = t + zr; - if ((s16)t < 2) goto L3; -} - - - - -extern void (*D_8018DD20[])(void); - -void func_8016A700(void *a0) { - D_8018DD20[*(u16 *)((s32)a0 + 0x2)](); -} - - -// Seed for func_8016A73C (ov_SC01_077 exemplar). Overlay-local struct guessed. - - - - - -s32 func_8016A73C(s32 arg0) { - int sp10[8]; - short v[3]; /* sp30, sp32, sp34 */ - int r; - short tmp; - - r = ((int(*)())rand)(); - v[1] = ((r & 0x7F) << 4) + 0x400; - v[0] = ((unsigned)(r & 0x7F00) >> 5) - 0x300; - v[2] = 0; - ((void(*)(short *, void *))RotMatrixYXZ)(v, sp10); - ((void(*)(int, void *))func_80048EAC)(((Obj_8016A73C *)arg0)->unk34->unk34->unk20 + 0x34, sp10); - v[0] = 0; - v[1] = 0; - v[2] = -0x50; - ((int(*)(void *, short *, short *))ApplyMatrixSV)(sp10, v, v); - - ((Obj_8016A73C *)arg0)->mat = (*(Mat_8016A73C*)&D_800AE620); - - tmp = ((Obj_8016A73C *)arg0)->unk6 + v[0]; - ((Obj_8016A73C *)arg0)->unk6 = tmp; - ((Obj_8016A73C *)arg0)->mat.w[5] = tmp; - tmp = ((Obj_8016A73C *)arg0)->unkA + v[1]; - ((Obj_8016A73C *)arg0)->unkA = tmp; - ((Obj_8016A73C *)arg0)->mat.w[6] = tmp; - tmp = ((Obj_8016A73C *)arg0)->unkE + v[2]; - ((Obj_8016A73C *)arg0)->unkE = tmp; - ((Obj_8016A73C *)arg0)->unk2 = ((Obj_8016A73C *)arg0)->unk2 + 1; - ((Obj_8016A73C *)arg0)->mat.w[7] = tmp; -} - - - -DEFINE_func_8016A890() /* dedup: shared engine-core @0x8016A890 (src/shared) */ - - -// @class: struct -// @stuck: none — expect MATCH (single-call leaf, stack-struct prim build + averaging writeback) - -DEFINE_func_8016A8FC() /* dedup: shared engine-core @0x8016A8FC (src/shared) */ - - -DEFINE_func_8016AA50() /* dedup: shared engine-core @0x8016AA50 (src/shared) */ - - -extern void (*D_8018DD68[])(void); - -void func_8016AB30(void *a0) { - D_8018DD68[*(u16 *)((s32)a0 + 0x2)](); -} - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8016AB6C.c b/src/ov_SC02_003/ov_SC02_003_jr_8016AB6C.c deleted file mode 100644 index 10ef46de5..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8016AB6C.c +++ /dev/null @@ -1,4448 +0,0 @@ -#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 */ -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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 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 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_8018C83C[]; -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_8018C844; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -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_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_8018D418[])(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_8018D424[])(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 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_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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 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 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_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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 s32 func_80016A5C(); -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_8018DD68[])(void); -extern void func_8016AB30(void *a0); -/* ==== end §8b carried decl layer ==== */ - - -/* func_8016AB6C (ov_SC01_077 jr family, 188 ins, jtbl_801D8BC8) — Phase 26 crack - * PIN-FREE. Status: **MATCH (188 ins)**, jtbl VERIFIED exact. - * - * jtbl_801D8BC8 = 8 entries, bound `sltiu $v0,$v1,8`, default -> after-switch join. - * case 0->+0x88 1->+0xA8 2->+0x110 3->+0x130 4->+0x110 5->+0xA8 6->+0x178 7->+0x178 - * My .rodata relocs (8x R_MIPS_32 vs .text) are byte-identical to that: - * 88 a8 110 130 110 a8 178 178 (objdump -r/-s -j .rodata .run/match/func_8016AB6C/t.o) - * - * ============================================================================ - * LEVER 9 — THE CALL-SINK (the last 2 ins; NEW, generalizable). See cookbook §48-B. - * ============================================================================ - * FINAL RESIDUAL was 2 ins (idx 141/143): both present and byte-correct, only transposed - * around `jal func_8001CE28`: - * mine : addu $a1,$s0,$zero ; jal ; [delay] addu $a0,$s2,$zero - * target: addu $a0,$s2,$zero ; jal ; [delay] addu $a1,$s0,$zero - * - * It was NOT a scheduling residual (sched1 already emitted a0-then-a1, per calls.c:1878 - * which loads arg regs in ASCENDING arg order). It was a REGALLOC residual: - * - * The old shape `f(A,LIT); p = LIT;` created TWO pseudos: a block-local arg pseudo - * (reg145/150, holding the symbol) and a GLOBAL allocno `p` (reg79) fed by a copy at the - * end of each arm. greg dump said: `;; 79 preferences: 5 16`. - * - $5 copy-pref <- the join's arg move (set (reg:SI 5 a1) (reg 79)) - * - $16 copy-pref <- the arms' copies (set (reg 79) (reg145)) ... because - * set_preference (global.c:1535) applies reg_renumber[], so a LOCALLY-allocated - * pseudo counts as its hard reg. - * find_reg's copy-preference override (global.c:~1000) scans hard regs `for (i = 0; i < - * FIRST_PSEUDO_REGISTER; i++)` — plain ASCENDING regno, NOT reg_alloc_order. So $5 beats - * $16, deterministically. The ONLY way $16 wins is if $5 is already in `used` when that - * scan runs, and the only reachable way to do that is - * allocno_calls_crossed[p] > 0 -> find_reg sets used1 = call_used_reg_set (global.c:906) - * -> AND_COMPL(hard_reg_copy_preferences, used) strips $5 -> $16 is all that's left. - * reg79 crossed NO call (def after func_80024054, last use before func_8001CE28), so $5 won. - * p in $a1 => the arms' copies became `move $5,$16`, cross_jump merged them to the top of - * the join (ahead of the a0 move), and reorg then slotted the a0 move. - * - * THE FIX — SINK THE CALL INTO THE ARMS (byte-proven, close=2 -> MATCH): - * BEFORE AFTER - * if (c) { s3 = f(A1,P1)+3; p = P1; } if (c) { s3 = f(A1,P1)+3; g(obj,P1); } - - * else { s3 = f(A2,P2)+9; p = P2; } else { s3 = f(A2,P2)+9; g(obj,P2); } - * g(obj, p); // no join copy, no `p` at all - * Duplicating the call kills the cross-block pseudo `p` entirely. The pointer is now a - * BLOCK-LOCAL pseudo per arm (lreg: "Register 144 used 3 times across 12 insns in block 13; - * crosses 1 call; pointer") -> LOCAL-alloc, crosses a call -> $s0, exactly as before, so the - * load-bearing "$16 occupant" that pushes arg0 off $s0 onto $s1 (lever 3) is PRESERVED. - * greg goes from "9 regs to allocate: ... 79 ..." to "8 regs to allocate:" (79 gone), and - * dispositions are unchanged: arg0=$s1, obj=$s2, var_s3=$s3, var_s0=$s0. - * The duplicated `[addu $a0,$s2][addu $a1,$s0][jal g]` tail is IDENTICAL in both arms after - * reload (same hard regs!), so jump2's cross_jump re-merges it into a single join block — - * ZERO extra bytes — and dbr then fills the jal slot with the nearest insn above it, which - * is now the a1 move. Target shape, exactly. - * - * GENERAL RULE: when a value is defined in both arms of an if/else and consumed only by a - * call in the join, gcc's join-copy makes it a global allocno whose ascending-scan copy-pref - * hands it the ARG register. If the target instead keeps it in a callee-saved reg, DUPLICATE - * THE CALL INTO BOTH ARMS — cross_jump gives the bytes back for free, and the value demotes to - * a call-crossing block-local, which local-alloc parks in $s0. (Inverse of §48-A1: A1 sinks an - * INIT to shorten a live range; this sinks the CONSUMER to delete the allocno outright.) - * - * LEVERS PROVEN HERE (see the report / cookbook): - * 1. LOOP ROTATION (§46 L1, exact trigger): stmt.c:2255 expand_end_loop scans forward from the - * loop start label and stops at the FIRST CODE_LABEL, but sets last_test_insn on any - * unconditional `jump end_label` — which is exactly what `break` emits. So `break` out of - * the first test rotates the loop (peels the test into a preheader). `goto lout;` jumps to a - * USER label, not end_label, so last_test_insn stays 0 and the loop is NOT rotated. - * (`do{}while()` alone does NOT help: expand_exit_loop_if_false ends with a CODE_LABEL, so - * expand_end_loop's "already ends in a bare condjump" guard never fires.) - * Bonus: the unrotated loop is what keeps the s16 re-sign-extension INSIDE the loop - * (sll16/sra16 for the AND, and `sra 20` reusing that same `sll 16` for the >>4). - * 2. `var_v1 = -0x1000;` AFTER the call, not before -> it no longer crosses the call -> $v1 - * instead of a callee-saved reg. - * 3. THE $s0/$s1 DIAL (new): `f(A,B); p = B;` (literal args, then assign p from the SAME - * literal AFTER the call) makes cse rewrite `p = B` as a COPY of the call's arg pseudo. - * That arg pseudo is then live across the call yet stays BLOCK-LOCAL -> local_alloc gives it - * $s0 -> every global allocno live there now conflicts with hard reg $16 -> the big pointer - * (arg0) is pushed off $s0 onto $s1 and the whole allocation flips. Writing `p = B; f(A,p);` - * instead merges them into ONE global allocno, no local, and arg0 takes $s0. (99 -> 54.) - * 4. §46 L2 refinement: a SAME-mode copy always dies (cse canon_reg/qty_first_reg). A - * DIFFERENT-mode copy `(set (reg:QI x) (subreg:QI (reg:SI y)))` is not a plain reg-reg copy, - * so cse cannot merge the qtys and the copy insn SURVIVES. That is how `var_c2 = var_s0;` - * materialises the target's `addu $v0,$s0,$zero`. (187 -> 188 ins.) - * 5. ANTI-DEP PINS A COPY EARLY: sched deterministically SINKS a copy to just before its - * consumers. Reusing the SAME local (var_s0) as the if/else scratch, copying it out, then - * redefining var_s0 creates a WAR dep that pins the copy ahead of the redefinition — which - * also removes the live-range overlap so both share $s0. (54 -> 22.) - * 6. `t = x+1; x = t+1;` is folded by cse to `x = x+2`. `t = x+1; x = t; x++;` keeps - * `addiu t,x,1 ; addiu x,t,1`. (22 -> 21.) - * 7. STORE-SINK: to get "compute chain A first, store A last", put A's store FIRST in the - * source — the backward list scheduler sinks a store (no dependents) but keeps the compute - * order. (21 -> 8.) - * 8. DELAY SLOT = source order: reorg takes the closest eligible insn before the jal, and the - * backward scheduler puts the HIGHEST-LUID (latest in source) of the tied independents - * nearest the call. `var_s0 = 3;` written AFTER the call statement (sched still hoists it - * above the call — pseudos may cross calls at sched1) puts `addiu $s0,$zero,3` in the delay - * slot instead of the a1=0 arg move. (8 -> 2.) - */ - - - - - -s32 func_8016AB6C(s32 arg0) { - extern s32 func_801783D0(s32 a0, s32 a1); - extern s32 func_80024054(u8 *a0, u8 *a1); - extern void func_8001CE28(Obj_8016AB6C *a0, u8 *a1); - extern u8 D_8018DD28[]; - extern u8 D_8018DD38[]; - extern u8 D_801E7280[]; - extern u8 D_801E72A8[]; - - SVec_8016AB6C sp10; - SVec_8016AB6C sp18; - s16 var_s0; - s16 var_v1; - s16 var_s3; - s16 tmp; - s32 temp_v0; - u32 r; - u8 var_c2; - Obj_8016AB6C *obj; - - temp_v0 = func_801783D0(((Ent_8016AB6C *)arg0)->unk30, 0); - var_s0 = 3; - var_v1 = -0x1000; - ((Ent_8016AB6C *)arg0)->unk30 = temp_v0; - do { - if (temp_v0 & var_v1) { - goto lout; - } - var_s0--; - var_v1 >>= 4; - } while (var_s0 >= 0); -lout: - switch (((Ent_8016AB6C *)arg0)->unk2C) { - case 0: - ((Ent_8016AB6C *)arg0)->unk26 = 1; - ((Ent_8016AB6C *)arg0)->unk24 = 0x60; - ((Ent_8016AB6C *)arg0)->unkA -= 0x20; - break; - case 1: - case 5: - ((Ent_8016AB6C *)arg0)->unk14 = 0xFFF60000; - r = ((u32(*)())rand)(); - tmp = var_s0 + 1; - var_s0 = tmp; - ((Ent_8016AB6C *)arg0)->unk10 = (r & 0xF) - 8 << 0xF; - ((Ent_8016AB6C *)arg0)->unk18 = ((r >> 4) & 0xF) - 8 << 0xF; - ((Ent_8016AB6C *)arg0)->unk26 = 4; - ((Ent_8016AB6C *)arg0)->unk24 = 0x80; - ((Ent_8016AB6C *)arg0)->unk30 |= 0xA << (tmp * 4); - break; - case 2: - case 4: - ((Ent_8016AB6C *)arg0)->unk26 = 4; - ((Ent_8016AB6C *)arg0)->unk24 = 0x80; - ((Ent_8016AB6C *)arg0)->unkA -= 0x18; - break; - case 3: - tmp = var_s0 + 1; - var_s0 = tmp; - var_s0++; - ((Ent_8016AB6C *)arg0)->unk26 = 4; - ((Ent_8016AB6C *)arg0)->unk24 = 0x80; - ((Ent_8016AB6C *)arg0)->unkA -= 0x18; - ((Ent_8016AB6C *)arg0)->unk30 = (((Ent_8016AB6C *)arg0)->unk30 | (0xF << (tmp * 4))) * 0x10; - break; - case 6: - case 7: - obj = ((Obj_8016AB6C *(*)(s32))func_801465C0)(temp_v0); - if (obj == 0) { - ((void(*)(Ent_8016AB6C *))func_80146C3C)(((Ent_8016AB6C *)arg0)); - return; - } - sp10.vx = ((Ent_8016AB6C *)arg0)->unk6; - sp10.vy = ((Ent_8016AB6C *)arg0)->unkA - 0x18; - sp10.vz = ((Ent_8016AB6C *)arg0)->unkE; - ((void(*)(SVec_8016AB6C *, SVec_8016AB6C *, s32))func_800D20C0)(&sp10, &sp18, 6); - ((Ent_8016AB6C *)arg0)->unk6 = sp10.vx; - ((Ent_8016AB6C *)arg0)->unkA = sp10.vy; - ((Ent_8016AB6C *)arg0)->unkE = sp10.vz; - if (((Ent_8016AB6C *)arg0)->unk2C == 6) { - var_s3 = func_80024054(D_8018DD28, D_801E7280) + 3; - func_8001CE28(obj, D_801E7280); - } else { - var_s3 = func_80024054(D_8018DD38, D_801E72A8) + 9; - func_8001CE28(obj, D_801E72A8); - } - obj->unkE = var_s3; - obj->unk4 |= 0x04000000; - if (((Ent_8016AB6C *)arg0)->unk2C == 6) { - obj->unk27 = 0xB5; - var_s0 = 0x70; - } else { - obj->unk27 = 0xAE; - var_s0 = 0xB0; - } - var_c2 = var_s0; - var_s0 = var_s3 >> 2; - obj->unk2E = -8; - obj->unk30 = 0; - obj->unk26 = var_c2; - obj->unk25 = var_c2; - obj->unk24 = var_c2; - ((Ent_8016AB6C *)arg0)->unk20 = obj; - break; - } - ((Ent_8016AB6C *)arg0)->unk2A = 4 - (var_s0 * 4); - ((Ent_8016AB6C *)arg0)->unk28 = var_s0; - ((Ent_8016AB6C *)arg0)->unk1C = 0xB; - ((Ent_8016AB6C *)arg0)->unk2++; -} - - - -extern void func_8016B234(); -extern void func_800D22E4(s32 a0); - -void func_8016AE5C(s32 param_1) { - s32 sp; - - sp = *(s32 *)(param_1 + 0x20); - if (*(u32 *)(param_1 + 0x2C) < 6) { - func_8016B234(); - } - switch (*(u32 *)(param_1 + 0x2C)) { - case 0: - *(s16 *)(param_1 + 0xA) -= *(s32 *)(param_1 + 0x1C); - *(s32 *)(param_1 + 0x1C) = *(s32 *)(param_1 + 0x1C) - 1; - if (*(s32 *)(param_1 + 0x1C) != 0) { - if ((*(s32 *)(param_1 + 0x1C) & 3) == 1) { - *(s16 *)(param_1 + 0x26) += 1; - } - return; - } - *(s16 *)(param_1 + 0x24) = 0xFF; - *(s32 *)(param_1 + 0x1C) = 8; - *(s16 *)(param_1 + 2) += 1; - return; - case 1: - case 5: - func_800D22E4(param_1); - *(s32 *)(param_1 + 0x14) += 0x18000; - case 2: - case 3: - case 4: - case 6: - case 7: - *(s16 *)(param_1 + 0xA) -= *(s32 *)(param_1 + 0x1C); - *(s32 *)(param_1 + 0x1C) = *(s32 *)(param_1 + 0x1C) - 1; - if (*(s32 *)(param_1 + 0x1C) == 0) { - if (*(u32 *)(param_1 + 0x2C) < 6) { - *(s16 *)(param_1 + 0x24) = 0xC0; - *(s32 *)(param_1 + 0x1C) = 8; - } else { - *(u8 *)(sp + 0x26) = 0xC0; - *(u8 *)(sp + 0x25) = 0xC0; - *(u8 *)(sp + 0x24) = 0xC0; - *(s32 *)(param_1 + 0x1C) = 0xC; - } - *(s16 *)(param_1 + 2) += 1; - } - break; - } -} - -DEFINE_func_8016AFB0() /* dedup: shared engine-core @0x8016AFB0 (src/shared) */ - -DEFINE_func_8016B114() /* dedup: shared engine-core @0x8016B114 (src/shared) */ - - - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_80016ED4(void *a0); - - -void func_8016B234(s32 param_1) { - - extern u8 D_800AF648; - extern u8 D_8018DD60; - short input[3]; - Prim_B234 prim; - struct { s16 xy[2]; s32 sp1c; s32 flag; } out; - void *dp; - u32 uVar1; - s16 iVar2; - s32 X, Y0, Y1, base, ni; - register s32 sy __asm__("$16"); - register s16 xtmp __asm__("$4"); - register s32 sxy __asm__("$3"); - - dp = &D_800AF648; - func_8004914C(dp); - func_800491AC(dp); - input[0] = *(u16 *)(param_1 + 6); - input[1] = *(u16 *)(param_1 + 0xA); - input[2] = *(u16 *)(param_1 + 0xE); - RotTransPers((s32)input, (s32)out.xy, &out.sp1c, &out.flag); - if ((out.flag & 0xffffefff) == 0) { - sxy = *(s32 *)out.xy; - prim.a04 = 0x10; - X = *(u16 *)(param_1 + 0x2a) + sxy; - sy = (u16)out.xy[1]; - prim.ax = prim.cx = X; - prim.bx = prim.dx = X + 8; - Y0 = sy - *(u16 *)(param_1 + 0x26); - prim.ay = prim.by = Y0; - sxy = *(u16 *)(param_1 + 0x26); - prim.v0 = prim.v1 = 0x1d0; - prim.v2 = prim.v3 = 0x1d8; - sxy = sy + sxy; - prim.cy = prim.dy = sxy; - __asm__ __volatile__("" : : "r"(sy)); - prim.r = prim.g = prim.b = *(u8 *)(param_1 + 0x24); - prim.code = (&D_8018DD60)[*(s32 *)(param_1 + 0x2c)]; - if (*(s16 *)(param_1 + 0x26) < 5) { - prim.tag = 0; - } else { - prim.tag = 0x50000000; - } - uVar1 = *(u16 *)(param_1 + 0x30); - iVar2 = 0; - if (0 < *(s16 *)(param_1 + 0x28) + 1) { - do { - base = ((uVar1 + 1) & 0xf) << 3; - prim.u0 = prim.u2 = base + 0x620; - prim.u1 = prim.u3 = base + 0x628; - func_80016ED4(&prim); - uVar1 = (s32)(uVar1 << 0x10) >> 0x14; - iVar2 = iVar2 + 1; - __asm__ __volatile__(""); - xtmp = prim.ax; - prim.cx = prim.ax = xtmp - 8; - prim.bx = prim.dx = xtmp; - } while ((s16)iVar2 < *(s16 *)(param_1 + 0x28) + 1); - } - } -} - - -DEFINE_func_8016B3F4() /* dedup: shared engine-core @0x8016B3F4 (src/shared) */ - -DEFINE_func_8016B428() /* dedup: shared engine-core @0x8016B428 (src/shared) */ - -DEFINE_func_8016B448() /* dedup: shared engine-core @0x8016B448 (src/shared) */ - - -extern void (*D_8018DDE4[])(void); - -void func_8016B4BC(void *a0) { - D_8018DDE4[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: struct -// @stuck: none — MATCH - -extern void func_80015978(s32 a0, s32 *a1); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B984(void *a0); -extern void func_8016B91C(int); -extern int D_801E72D0; - -void func_8016B4F8(int param_1) -{ - int iVar1; - int uVar2; - volatile int buf[2]; - - ((void (*)(int, void *))func_80015978)(param_1 + 4, &D_801E72D0); - if (func_8016B9F8(param_1) == 0) { - *(int *)(param_1 + 0x18) = 0; - *(int *)(param_1 + 0x14) = 0; - *(int *)(param_1 + 0x10) = 0; - iVar1 = func_8016B834(param_1, 0); - *(int *)(param_1 + 0x10) = iVar1; - if (iVar1 != 0) { - iVar1 = func_8016B834(param_1, 1); - *(int *)(param_1 + 0x14) = iVar1; - if (iVar1 != 0) { - iVar1 = func_8016B834(param_1, 2); - *(int *)(param_1 + 0x18) = iVar1; - if (iVar1 != 0) goto success; - } - } - } - ((void (*)(int))func_8016B984)(param_1); - return; -success: - func_8016B91C(param_1); - uVar2 = *(int *)(param_1 + 0x2c); - if (uVar2 == 0) { - uVar2 = 0xf0; - } else { - uVar2 = 0x2d0; - } - *(int *)(param_1 + 0x1c) = uVar2; - uVar2 = *(unsigned short *)(param_1 + 2); - uVar2 = uVar2 + 1; - *(unsigned short *)(param_1 + 2) = uVar2; -} - - - -// @class: schedule -// @stuck: none — MATCH - - -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B984(void *a0); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); - -extern s16 D_8018DDD8[]; - -void func_8016B5C0(s32 param_1) { - s32 iVar4; - s32 iVar2; - s32 iVar5; - s16 sVar1; - s16 *psVar5; - s32 i; - - iVar4 = *(s32 *)(param_1 + 0x18); - if (((s32 (*)(void))func_8016B9F8)() != 0) { - goto L984; - } - sVar1 = *(s16 *)(iVar4 + 0x1a) + 0x200; - *(s16 *)(iVar4 + 0x1a) = sVar1; - *(s16 *)(iVar4 + 0x18) = sVar1; - if (*(s32 *)(param_1 + 0x2c) == 0) { - iVar2 = *(s32 *)(param_1 + 0x1c); - } else { - iVar2 = *(s32 *)(param_1 + 0x1c) / 3; - } - iVar5 = *(s32 *)(param_1 + 0x1c) + -0x20; - *(s32 *)(param_1 + 0x1c) = iVar5; - if (iVar5 >= 0) { - goto LOOP; - } -L984: - ((void (*)(s32))func_8016B984)(param_1); - return; -LOOP: - i = 0; - psVar5 = D_8018DDD8; - do { - func_8016B6BC(param_1, iVar2, (s32)*psVar5, (s32)(s16)i); - psVar5 = psVar5 + 1; - i = i + 1; - } while (i < 6); - func_8016B91C(param_1); - return; -} - - - -// @class: schedule -// @stuck: none — MATCH (94/94 ins, match_one relocation-masked) -// -// Exemplar of the 138-member h_seq family. The whole crack was ONE statement-order -// lever in the tail: the target's post-func_80015978 fix-up runs -// v[2].x += off.x; v[2].y += off.y; v[0].c = 3; -// (the `c = 3` store LAST). Writing `c = 3` between the two v[2] RMWs — the order the -// Ghidra-C literally prints, and what every prior draft copied — costs 12 mismatches: -// gcc hoists the `li 3` into the load-delay window, which pushes v[2].x into $v1 and -// the off.x temp into $a0, and then the `addu $a0,$s1,$zero` arg copy can no longer be -// scheduled early enough to become the base register of the v[2]/v[0].c stores. -// With `c = 3` last, the arg copy births at the v[2].x/v[2].y boundary (idx 76) exactly -// as the target does, and the mixed $s1-load / $a0-store addressing falls out for free. -// (§67-adjacent: the copy PLACEMENT was the root cause — but here plain statement order -// reaches it, no `__asm__` launder and no register pin needed. Prior notes calling this a -// regalloc tie-break and pinning $a0 were chasing the consequence, not the cause.) -// -// Everything else follows the Ghidra-C: `Prim *p = &prim` (one alias only — a second -// pointer name splits the pseudo and breaks the $s1 base), the `q++` post-increment -// running pointer over the 8-byte table rows, and the ((param_4 << 16) >> 14) byte-offset -// index into D_8018DDC0 (sll 16 / sra 14). - - - /* 0x28 */ - - - /* the 8-byte D_8018DDC0[] row */ - -extern void func_80013CFC(s32 a0, s32 a1, void *a2); -extern void func_80015978(s32 a0, s32 *a1); -extern void func_8001739C(void *a0); - -/* Def sig is deliberately (s32,s32,s32,s32) — byte-identical to the (int,unsigned,short,int) - * spelling, and IDENTICAL to this TU's own caller decl `extern void func_8016B6BC(s32,s32,s32,s32);` - * (ov_SC01_077_jr_8016AB6C.c), so there is no §73/§57 def-side self-decl conflict to reconcile. */ -void func_8016B6BC(s32 param_1, s32 param_2, s32 param_3, s32 param_4) { - - extern int D_8018DDC0; - int iVar1; - M8_8016B6BC *q; - Prim_8016B6BC prim; - Prim_8016B6BC *p = &prim; - DVec_8016B6BC off; - unsigned int v; - unsigned int c; - - q = (M8_8016B6BC *)*(int *)((int)&D_8018DDC0 + ((param_4 << 0x10) >> 0xe)); - p->color = 0x50000000; - c = (unsigned int)param_2; - v = 0x20; - if (c < 0x20) { - v = c; - } - if (*(int *)(param_1 + 0x2c) == 0) { - c = c | (v << 0x10 | v << 8); - } else { - c = c << 8 | v << 0x10 | v; - } - p->combined = c; - iVar1 = (int)(short)param_3; - p->z1c = 0; - p->z20 = 0; - func_80013CFC(iVar1, (int)q++, &p->v[0]); - func_80013CFC(iVar1, (int)q++, &p->v[1]); - func_80013CFC(iVar1, (int)q, &p->v[2]); - func_80015978(param_1 + 4, (s32 *)&off); - p->v[0].x += off.x; - p->v[0].y += off.y; - p->v[1].x += off.x; - p->v[1].y += off.y; - p->v[2].x += off.x; - p->v[2].y += off.y; - p->v[0].c = 3; - func_8001739C(p); -} - - - -// @class: schedule -// @stuck: none — MATCH (statement order: compute puVar2 base before puVar3 table lookup so param*0x40+base schedule into prologue, leaving the 0x2c load-delay nop) -extern void func_801465C0(void); -extern void func_8001CD9C(int, void *); -extern void func_800233CC(void *, unsigned short); - -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; - -int func_8016B834(int param_1, int param_2) { - int *puVar3; - int *puVar2; - int iVar1; - - puVar2 = (int *)(D_801E72D8 + param_2 * 0x40); - puVar3 = D_8018DE1C[*(int *)(param_1 + 0x2c)]; - iVar1 = ((int (*)(void))func_801465C0)(); - if (iVar1 != 0) { - func_8001CD9C(iVar1, puVar2); - func_800233CC(puVar2, D_8018DE24[param_2]); - puVar2[0] = *(int *)((int)puVar3 + param_2 * 8); - puVar2[1] = *(int *)((int)puVar3 + param_2 * 8 + 4); - *(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50040000; - *(short *)(iVar1 + 0x1e) = D_8018DE2C[param_2]; - } - return iVar1; -} - - -DEFINE_func_8016B91C() /* dedup: shared engine-core @0x8016B91C (src/shared) */ - -DEFINE_func_8016B964() /* dedup: shared engine-core @0x8016B964 (src/shared) */ - -DEFINE_func_8016B984() /* dedup: shared engine-core @0x8016B984 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (result is func_8012EFB8's return saved in $s0 across the func_80015954 call; the save-move fills the 2nd call's delay slot. func_80015954's return is discarded.) - - -extern s32 D_801E72D0; -extern void func_8012EFB8(s32 a0); -extern void func_80015954(s32 a0, s32 a1); - -s32 func_8016B9F8(s32 param_1) -{ - s32 buf[2]; - u32 v; - - v = ((u32 (*)(s32 *, s32 *))func_8012EFB8)(&D_801E72D0, buf); - ((void (*)(s32 *, s32 *))func_80015954)(buf, (s32 *)(param_1 + 4)); - return (v & 0xffffefff) != 0; -} - - -DEFINE_func_8016BA48() /* dedup: shared engine-core @0x8016BA48 (src/shared) */ - -DEFINE_func_8016BA68() /* dedup: shared engine-core @0x8016ba68 (src/shared) */ - - -DEFINE_func_8016BADC() /* dedup: shared engine-core @0x8016BADC (src/shared) */ - - -extern void (*D_8018DE34[])(void); - -void func_8016BBA4(void *a0) { - D_8018DE34[*(u16 *)((s32)a0 + 0x2)](); -} - - -// @class: plumbing -// @stuck: none — MATCH (56 ins, match_one relocation-masked) - - - - -s32 func_8016BBE0(s32 param_1) { - extern void func_8016BF34(void *a0); - extern void func_8016BF50(s32); - extern void func_8001CF00(s32); - extern M2C_UNK D_801E740C; - extern u8 D_801E740D; - extern u8 D_801E740E; - extern M2C_UNK D_801E7410; - extern u8 D_801E7411; - extern u8 D_801E7412; - - int iVar1; - int temp; - - iVar1 = ((s32 (*)(void))func_801465C0)(); - *(int *)(((int)param_1) + 0x20) = iVar1; - if (iVar1 != 0) { - ((void (*)(s32))func_8016BF34)(((int)param_1)); - func_8016BF50(((int)param_1)); - func_8001CF00(iVar1); - *(s16 *)(iVar1 + 0x10) = 0; - temp = *(int *)(((int)param_1) + 0x2c); - *(s16 *)(iVar1 + 0x14) = 0; - *(s16 *)(iVar1 + 0x1a) = 0; - *(s16 *)(iVar1 + 0x18) = 0; - *(s16 *)(iVar1 + 0x12) = temp * 0x555; - *(s16 *)(((int)param_1) + 0x10) = 0; - *(s16 *)(((int)param_1) + 0x14) = 0; - (*(u8 *)&D_801E740C) = 0x20; - D_801E740D = 0x20; - D_801E740E = 0; - (*(u8 *)&D_801E7410) = 0xc0; - D_801E7411 = 0xc0; - D_801E7412 = 0; - *(u16 *)(((int)param_1) + 2) += 1; - } else { - ((void (*)(s32))func_80146C3C)(((int)param_1)); - } -} - - - -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801E740C; -extern M2C_UNK D_801E7410; - -void func_8016BCC0(void *arg0) { - u16 temp_a2; - u16 temp_v0; - void *temp_s0; - - temp_s0 = M2C_FIELD(arg0, void **, 0x20); - func_8016BF50(); - temp_a2 = M2C_FIELD(arg0, u16 *, 0x10) + 0x60; - M2C_FIELD(arg0, u16 *, 0x10) = temp_a2; - temp_v0 = M2C_FIELD(temp_s0, u16 *, 0x1A) + temp_a2; - M2C_FIELD(temp_s0, u16 *, 0x1A) = temp_v0; - M2C_FIELD(temp_s0, u16 *, 0x18) = temp_v0; - M2C_FIELD(temp_s0, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_s0, u16 *, 0x12) + 0x71) & 0xFFF); - func_8016BFA8(arg0, &D_801E740C, &D_801E7410, temp_s0 + 0x18); - if ((s16) M2C_FIELD(temp_s0, u16 *, 0x1A) >= 0x1001) { - M2C_FIELD(temp_s0, u16 *, 0x18) = 0x1000U; - M2C_FIELD(temp_s0, u16 *, 0x1A) = 0x1000U; - func_80146E90(arg0, M2C_FIELD(arg0, s32 *, 0x30)); - M2C_FIELD(arg0, u16 *, 2) = (u16) (M2C_FIELD(arg0, u16 *, 2) + 1); - } -} - - -// @class: struct -// @stuck: none — MATCH (74 ins, relocation-masked) - - - - -s32 func_8016BD78(s32 param_1) -{ - extern void func_8016BF50(void); - extern u8 D_801E740D; - extern u8 D_801E740E; - extern u8 D_801E7411; - extern u8 D_801E7412; - - s32 iVar2; - u16 uVar1; - u8 *p1; - u8 *p2; - - iVar2 = *(s32 *)(param_1 + 0x20); - func_8016BF50(); - - p1 = &(*(u8 *)&D_801E740C); - if (*p1 != 0) *p1 -= 4; - if (D_801E740D != 0) D_801E740D -= 4; - if (D_801E740E != 0) D_801E740E -= 4; - p2 = &(*(u8 *)&D_801E7410); - if (*p2 != 0) *p2 -= 4; - if (D_801E7411 != 0) D_801E7411 -= 4; - if (D_801E7412 != 0) D_801E7412 -= 4; - - uVar1 = *(u16 *)(iVar2 + 0x18) - 0x80; - *(u16 *)(iVar2 + 0x18) = uVar1; - if ((s32)((unsigned int)uVar1 << 0x10) < 0) { - *(u16 *)(iVar2 + 0x18) = 0; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } - *(u16 *)(iVar2 + 0x12) = (*(u16 *)(iVar2 + 0x12) + 0x22) & 0xfff; - - ((void (*)(s32, u8 *, u8 *, s32))func_8016BFA8)(param_1, p1, p2, iVar2 + 0x18); -} - - - -// @class: plumbing -// @stuck: none — MATCH - -s32 func_8016BEA0(s32 param_1) -{ - extern void func_8016BF50(void); - - int iVar2; - unsigned short uVar1; - - iVar2 = *(int *)(((int)param_1) + 0x20); - func_8016BF50(); - uVar1 = *(unsigned short *)(((int)param_1) + 0x10) - 0x18; - *(unsigned short *)(((int)param_1) + 0x10) = uVar1; - *(unsigned short *)(iVar2 + 0x1a) = *(unsigned short *)(iVar2 + 0x1a) + uVar1; - *(unsigned short *)(iVar2 + 0x12) = (*(unsigned short *)(iVar2 + 0x12) + 0x22) & 0xfff; - ((void (*)(int, void *, void *, int))func_8016BFA8)(((int)param_1), &(*(int *)&D_801E740C), &(*(int *)&D_801E7410), iVar2 + 0x18); - if (*(short *)(iVar2 + 0x1a) < 0) { - ((void (*)(int))func_80146C3C)(((int)param_1)); - } -} - - - -DEFINE_func_8016BF34() /* dedup: shared engine-core @0x8016BF34 (src/shared) */ - - -/* §71 sibling-first: this is the head of the already-matched func_8016C2C4 - * (src/ov_SC03_099/ov_SC03_099_jr_8016AB6C.c L2707) lifted into its own leaf. */ - -DEFINE_func_8016BF50() /* dedup: shared engine-core @0x8016BF50 (src/shared) */ - - - -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801E7398; - -void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3) { - func_8016BFD0(a0, a1, a2, a3, &D_801E7398); -} - - -// @class: struct -// @stuck: none — MATCH (95 ins). Keys: (1) 4-byte unaligned copies via `struct{char b[4];}` -// assignment -> lwl/lwr/swl/swr with reload; (2) 0x40-byte stack buffer `buf` (Mtx_8016BFD0 padded to -// 0x40, not 0x20) sets the frame to 0x70 and lands v1/v2 at sp+0x50/0x58; (3) func_80017714(a4) -// takes param_5 as an arg -> gcc materializes `addu $a0,$s0,$zero` and stores the 4 zeros via $a0. - - - - -void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4) { - extern void func_80017714(); - extern s32 D_8018DE44; - extern s32 D_8018DE4C; - extern s32 D_8018DE54; - extern s32 D_8018DE5C; - - Mtx_8016BFD0 buf; - Vec3_8016BFD0 v1; - Vec3_8016BFD0 v2; - s32 iVar5 = *(s32 *)(a0 + 0x20); - - *(u32 *)((s32)a4 + 0x30) = 0x50000000; - *(W_8016BFD0 *)((s32)a4 + 0x20) = *(W_8016BFD0 *)a1; - *(W_8016BFD0 *)((s32)a4 + 0x24) = *(W_8016BFD0 *)a1; - *(W_8016BFD0 *)((s32)a4 + 0x28) = *(W_8016BFD0 *)a2; - *(W_8016BFD0 *)((s32)a4 + 0x2c) = *(W_8016BFD0 *)a2; - - v1.x = *(u16 *)(a0 + 6); - v1.y = *(u16 *)(a0 + 0xa); - v1.z = *(u16 *)(a0 + 0xe); - ((void(*)())func_8012EFB8)(&v1, &v1); - ((void(*)())func_80013F3C)(&buf); - ((void(*)())func_800123F0)(&buf, (s32)*(s16 *)(iVar5 + 0x12)); - - v2.x = *(u16 *)(a3 + 0); - v2.y = *(u16 *)(a3 + 2); - v2.z = *(u16 *)(a3 + 4); - ((void(*)())func_80020F34)(&buf, &v2); - - buf.t[0] = v1.x; - buf.t[1] = v1.y; - buf.t[2] = v1.z; - ((void(*)())func_8012F14C)(&buf, &D_8018DE44, (s32)a4); - ((void(*)())func_8012F14C)(&buf, &D_8018DE4C, (s32)a4 + 8); - ((void(*)())func_8012F14C)(&buf, &D_8018DE54, (s32)a4 + 0x10); - ((void(*)())func_8012F14C)(&buf, &D_8018DE5C, (s32)a4 + 0x18); - - *(s16 *)((s32)a4 + 4) = 0; - *(s16 *)((s32)a4 + 0xc) = 0; - *(s16 *)((s32)a4 + 0x14) = 0; - *(s16 *)((s32)a4 + 0x1c) = 0; - func_80017714(a4); -} - - - - -extern void (*D_8018DE64[])(void); - -void func_8016C14C(void *a0) { - D_8018DE64[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_801465C0(void); -extern void func_80149350(s32 arg0); - -void func_8016C188(s32 param) -{ - register s32 s1 __asm__("$17"); - register s32 s2 __asm__("$18"); - register u8 *s0 __asm__("$16"); - u16 buf[3]; - s16 *pBCC; - s16 *pBD4; - s32 t34; - - extern void func_80015954(s32, s32); - extern s32 func_8016C374(s32, s32, s32, s32); - extern void func_80146C3C(void); - extern void func_8001CD9C(s32, void *); - extern void func_800233CC(void *, unsigned short); - extern u8 D_801E73CC[]; - extern s16 D_801E7414; - extern s16 D_801E7416; - extern s16 D_801E7418; - extern s16 D_801E741C; - extern s16 D_801E741E; - extern s16 D_801E7420; - - s1 = param; - s2 = ((s32 (*)(void))func_801465C0)(); - *(s32 *)(s1 + 0x20) = s2; - if (s2 != 0) { - *(u16 *)(s1 + 0x12) = *(u16 *)(s1 + 0x6); - *(u16 *)(s1 + 0x16) = *(u16 *)(s1 + 0xA); - *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0xE); - t34 = *(s32 *)(s1 + 0x34); - buf[0] = *(u16 *)(s1 + 0x12); - buf[1] = *(u16 *)(s1 + 0x16); - buf[2] = *(u16 *)(s1 + 0x1A); - ((void (*)(s32, void *, void *))func_80149350)(t34, buf, buf); - ((void (*)(void *, s32))func_80015954)(buf, s1 + 4); - s0 = D_801E73CC; - ((void (*)(s32, void *))func_8001CD9C)(s2, s0); - *(s16 *)(s2 + 0x1E) = 0xCCC; - *(s32 *)(s2 + 4) = *(s32 *)(s2 + 4) | 0x50000000; - ((void (*)(void *, s32))func_800233CC)(s0, 0x80); - *(s16 *)(s2 + 0x1A) = 0; - *(s16 *)(s2 + 0x18) = 0; - *(s16 *)(s1 + 0x10) = 0; - pBCC = &D_801E7414; - pBD4 = &D_801E741C; - *pBCC = 0x20; - D_801E7416 = 0x20; - D_801E7418 = 0; - *pBD4 = 0xC0; - D_801E741E = 0xC0; - D_801E7420 = 0; - ((s32 (*)(s32, void *, void *, void *))func_8016C374)(s1, pBCC, pBD4, s0); - *(u16 *)(s1 + 2) = *(u16 *)(s1 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(s1); - } -} - - - -// @class: schedule -// @stuck: none — MATCH (44 ins; pins $s0/$s1 + hoist call-arg into a temp so its load fills the buf-store delay slot) - - -extern void func_80149350(s32 arg0); -extern void func_80015954(s32 a0, s32 a1); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); - -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; - -void func_8016C2C4(s32 param) -{ - register s32 s1 __asm__("$17"); - register s32 s0 __asm__("$16"); - u16 buf[3]; - s16 v; - s32 r; - s32 arg; - - s1 = param; - s0 = *(s32 *)(s1 + 0x20); - arg = *(s32 *)(s1 + 0x34); - buf[0] = *(u16 *)(s1 + 0x12); - buf[1] = *(u16 *)(s1 + 0x16); - buf[2] = *(u16 *)(s1 + 0x1a); - ((void (*)(s32, void *, void *))func_80149350)(arg, buf, buf); - ((void (*)(void *, s32))func_80015954)(buf, s1 + 4); - v = *(s16 *)(s1 + 0x10) + 0x10; - *(s16 *)(s1 + 0x10) = v; - v = *(s16 *)(s0 + 0x1a) + v; - *(s16 *)(s0 + 0x1a) = v; - *(s16 *)(s0 + 0x18) = v; - r = ((s32 (*)(s32, void *, void *, void *))func_8016C374)(s1, D_801E7414, D_801E741C, D_801E73CC); - if (r == 0) { - ((void (*)(s32))func_80146C3C)(s1); - } -} - - -DEFINE_func_8016C374() /* dedup: shared engine-core @0x8016C374 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (172/172, relocation-masked) - - - -s32 func_8016C49C(s32 param_1_arg) { - extern s32 VectorNormalSS(void *, void *); - extern void func_8001CD9C(s32, void *); - extern void func_8016CF04(s32, s32); - extern u8 D_801E7428[]; - extern u8 D_801E74E8; - - register u16 *param_1 __asm__("$17") = ((u16 *)param_1_arg); - int iVar5; - int iVar6; - u16 sv[4]; - s32 mat[8]; - short sVar1; - - iVar5 = *(int *)(param_1 + 0x18); - iVar6 = *(int *)(param_1 + 0x1a); - param_1[0x14] = *(u16 *)(iVar5 + 0x36); - if ((*(u32 *)(param_1 + 0x16) & 0x8000) == 0) { - short iVar4 = 0; - u16 *psVar3 = (u16 *)&D_8011D030; - do { - if (psVar3 != param_1 && *psVar3 == 0x30) { - ((void(*)(void *))func_80146C3C)(psVar3); - } - iVar4 = iVar4 + 1; - psVar3 = psVar3 + 0x2c; - } while (iVar4 < 0x1e); - D_801E7428[1] = 0xff; - D_801E7428[2] = 0x10; - D_801E7428[0] = 0x10; - D_801E7428[6] = 0; - D_801E7428[5] = 0; - D_801E7428[4] = 0; - ((void(*)(void *, s32))func_800233CC)(D_801E7428, 10); - sv[0] = *(u16 *)(iVar5 + 6) - *(u16 *)(iVar6 + 6); - { - int t = *(u16 *)(iVar6 + 0xa) + 0x28; - sv[1] = *(u16 *)(iVar5 + 0xa) - t; - } - sv[2] = *(u16 *)(iVar5 + 0xe) - *(u16 *)(iVar6 + 0xe); - VectorNormalSS(sv, sv); - param_1[3] = *(u16 *)(iVar5 + 6) + ((s16)sv[0] >> 9); - param_1[5] = *(u16 *)(iVar5 + 0xa) + (((s16)sv[1] >> 9) - 0x28); - param_1[7] = *(u16 *)(iVar5 + 0xe) + ((s16)sv[2] >> 9); - ((void(*)(void *))func_800D23D0)(sv); - sv[0] = 0; - ((void(*)(void *, void *))RotMatrixYXZ)(sv, param_1 + 0x1c); - ((void(*)(void *, s32))func_80016714)(&D_801E74E8, 0x620); - ((s32(*)(s32, void *, s32, s32, s32, s32, s32))func_80146A6C)(0x32, param_1, 0, 0, 0, 0, *(int *)(param_1 + 0x18)); - sVar1 = 5; - } else { - int iVar5b = ((s32(*)())func_801465C0)(); - u32 uVar2; - if (iVar5b == 0) { - return; - } - func_8001CD9C(iVar5b, D_801E7428); - *(u32 *)(iVar5b + 4) |= 0x50000000; - uVar2 = ((int(*)())rand)(); - sv[0] = (uVar2 & 0x7f) * 8 - 0x80; - sv[1] = ((uVar2 & 0x7f00) >> 4) - 0x400; - sv[2] = 0; - ((void(*)(void *, void *))RotMatrixYXZ)(sv, mat); - ((void(*)(void *, void *))func_80048EAC)(param_1 + 0x1c, mat); - sv[1] = 0; - sv[0] = 0; - sv[2] = 0xb; - ((void(*)(void *, void *, void *))ApplyMatrixSV)(mat, sv, sv); - param_1[9] = sv[0]; - param_1[0xb] = sv[1]; - param_1[0xd] = sv[2]; - *(int *)(param_1 + 0x10) = iVar5b; - *(int *)(param_1 + 0xe) = 8; - func_8016CF04((s32)param_1, 0); - *(int *)(param_1 + 0x16) = 0; - sVar1 = param_1[1] + 1; - } - param_1[1] = sVar1; -} - - - -DEFINE_func_8016C74C() /* dedup: shared engine-core @0x8016C74C (src/shared) */ - -DEFINE_func_8016C83C() /* dedup: shared engine-core @0x8016C83C (src/shared) */ - - -extern short func_8016CBC0(void); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 D_80126B9C; - - -void func_8016C998(s32 param_1) -{ - - extern s16 D_80126CE0; - u16 *psVar7; - s32 r; - short i; - extern Slot_998 D_801E74E8[]; - - psVar7 = *(u16 **)(param_1 + 0x34); - if (*psVar7 != 1) { - *(s16 *)(param_1 + 2) = 6; - } - func_8016CBC0(); - if (*(s16 *)(param_1 + 0x28) != *(s16 *)(*(s32 *)(param_1 + 0x30) + 0x36)) { - return; - } - if ((D_80126B9C & 0x20) == 0) { - return; - } - if ((*(s32 *)(param_1 + 0x1c) == 0) || - (*(s16 *)(param_1 + 0x12) < D_80126CE0)) { - *(s16 *)(param_1 + 0x12) = D_80126CE0; - i = 0; - do { - if (D_801E74E8[i].f0 == 0) { - goto found; - } - i++; - } while (i < 8); - found: - if (i >= 8) { - return; - } - r = func_80146A6C(0x30, psVar7, 0, 0, 0, 0x8000, *(s32 *)(param_1 + 0x30)); - if (r == 0) { - return; - } - D_801E74E8[i].f0 = 1; - *(Blk32_998 *)(r + 0x38) = *(Blk32_998 *)(param_1 + 0x38); - *(s16 *)(r + 0x2a) = i; - *(s16 *)(r + 6) = *(s16 *)(param_1 + 6); - *(s16 *)(r + 0xa) = *(s16 *)(param_1 + 0xa); - *(s16 *)(r + 0xe) = *(s16 *)(param_1 + 0xe); - *(s32 *)(param_1 + 0x1c) = 0x10; - } else { - *(s32 *)(param_1 + 0x1c) = *(s32 *)(param_1 + 0x1c) - 1; - } -} - - - -extern void (*D_8018DE6C[])(void); - -void func_8016CB84(void *a0) { - D_8018DE6C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern s32 func_80017758(void *a0, void *a1); -extern Blk20 D_800AE620; -short func_8016CBC0(void) -{ - - extern Blk_8016CBC0 D_801E74E8[]; - Poly_8016CBC0 p0; - Poly_8016CBC0 p1; - Mtx8_8016CBC0 mtx; - Blk_8016CBC0 *blk; - Rec_8016CBC0 *sub; - Rec_8016CBC0 *pv; - unsigned int uVar9; - unsigned int w9; - unsigned int uc; - unsigned int a2; - int col; - int iVar3; - int w3; - unsigned int w3b; - short count; - short i; -register unsigned int zr __asm__("$0"); - mtx = (*(Mtx8_8016CBC0 *)&D_800AE620); - count = 0; - p1.tag = 0x50000000; - p0.tag = 0x50000000; - p1.col[3].b = 0; - p1.col[3].g = 0; - p1.col[3].r = 0; - p1.col[1].b = 0; - p1.col[1].g = 0; - p1.col[1].r = 0; - p0.col[2].b = 0; - p0.col[2].g = 0; - p0.col[2].r = 0; - p0.col[0].b = 0; - p0.col[0].g = 0; - p0.col[0].r = 0; - for (i = 0; i < 8; i++) - { - blk = &D_801E74E8[i]; - if (blk->f0 != 0) - { - sub = blk->ent; - uVar9 = blk->f1; - iVar3 = blk->f2; - col = blk->f3; - count = count + 1; - w3 = iVar3 - 1; - iVar3 = w3 + zr; - if (w3 != (-1)) - { - do - { - pv = &sub[(short) uVar9]; - { - unsigned int a = pv->h[0]; - unsigned int b; - p0.v[0].x = a; - b = pv->h[3]; - p1.v[1].x = b; - p0.v[1].x = (p1.v[0].x = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - { - unsigned int a = pv->h[1]; - unsigned int b; - p0.v[0].y = a; - b = pv->h[4]; - uc = ((unsigned) (col & 0xFF)) >> 3; - p1.v[1].y = b; - p0.v[1].y = (p1.v[0].y = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - w9 = uVar9 - 1; - uVar9 = w9 + zr; - } - { - unsigned int a = pv->h[2]; - unsigned int b; - p0.v[0].z = a; - b = pv->h[5]; - p1.col[0].g = col; - p0.col[1].g = col; - p1.col[0].b = uc; - p0.col[1].b = uc; - p1.col[0].r = uc; - p0.col[1].r = uc; - p1.v[1].z = b; - p0.v[1].z = (p1.v[0].z = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - if (((int) (w9 << 16)) < 0) - { - uVar9 = 0xF; - } - pv = &sub[(short) uVar9]; - col = col - 0xF; - a2 = (unsigned) (col & 0xFF); - a2 = a2 >> 3; - { - unsigned int a = pv->h[0]; - unsigned int b; - p0.v[2].x = a; - b = pv->h[3]; - p1.v[3].x = b; - p0.v[3].x = (p1.v[2].x = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - { - unsigned int a = pv->h[1]; - unsigned int b; - p0.v[2].y = a; - b = pv->h[4]; - p1.v[3].y = b; - p0.v[3].y = (p1.v[2].y = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - { - unsigned int a = pv->h[2]; - unsigned int b; - p0.v[2].z = a; - b = pv->h[5]; - p1.col[2].g = col; - p0.col[3].g = col; - p1.col[2].b = a2; - p0.col[3].b = a2; - p1.col[2].r = a2; - p0.col[3].r = a2; - p1.v[3].z = b; - p0.v[3].z = (p1.v[2].z = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - func_80017758(&p0, &mtx); - func_80017758(&p1, &mtx); - uc = iVar3 - 1; - w3b = uc; - iVar3 = w3b + zr; - } - while (((short) w3b) != (-1)); - } - } - } - - return count; -} - - -/* func_8016CF04 returns short (case 2: 1 if the decremented f2 hit 0, else 0; all other - * paths return 0 via the addu $v0,$zero,$zero at 0x8016D154). The TU/engine_core.h declare - * it `void` in 4 DEFINE_ macros + one block-scope decl in func_8016C49C; the real apply is the - * byte-neutral engine_core.h void->short flip (every caller discards or ptr-casts the return, - * cf. func_8016D5EC's `(s16)(...)` cast). The //@EDIT lines above are the rtu_match proxy for - * that flip. Body verified 166/166 in isolation AND in a whole-TU compile w/ the reconciled hdr. */ - /* 4 + 16*12 = 0xC4 stride */ - -short func_8016CF04(s32 param_1, s32 param_2) { - extern Blk_8016CF04_8016CF04 D_801E74E8[]; - - - Blk_8016CF04_8016CF04 *p = &D_801E74E8[*(short *)(((int)param_1) + 0x2a)]; - u16 rot[4]; - u16 out[4]; - s32 mtx[8]; - - switch (((short)param_2)) { - case 0: - p->f2 = 0; - p->f1 = 0; - p->f3 = 0xf0; - break; - case 1: - p->f1 = p->f1 + 1; - if ((u8)p->f1 >= 0x10) - p->f1 = 0; - if ((u8)p->f2 < 0xf) - p->f2 = p->f2 + 1; - break; - case 2: { - u8 c = p->f2 - 1; - p->f2 = c; - if (c == 0) { - p->f0 = 0; - return 1; - } - p->f3 = p->f3 - 0xf; - return 0; - } - } - - rot[0] = *(s32 *)(((int)param_1) + 0x10) >> 12; - rot[1] = *(s32 *)(((int)param_1) + 0x14) >> 12; - rot[2] = *(s32 *)(((int)param_1) + 0x18) >> 12; - func_800D23D0(rot); - RotMatrixYXZ(rot, mtx); - rot[0] = 9; - rot[1] = 0; - rot[2] = 0; - ApplyMatrixSV(mtx, rot, out); - p->ent[(u8)p->f1].a = *(u16 *)(((int)param_1) + 6) + out[0]; - p->ent[(u8)p->f1].b = *(u16 *)(((int)param_1) + 0xa) + out[1]; - p->ent[(u8)p->f1].c = *(u16 *)(((int)param_1) + 0xe) + out[2]; - rot[0] = -rot[0]; - rot[1] = -rot[1]; - ApplyMatrixSV(mtx, rot, out); - p->ent[(u8)p->f1].d = *(u16 *)(((int)param_1) + 6) + out[0]; - p->ent[(u8)p->f1].e = *(u16 *)(((int)param_1) + 0xa) + out[1]; - p->ent[(u8)p->f1].g = *(u16 *)(((int)param_1) + 0xe) + out[2]; - return 0; -} - - - - -extern void (*D_8018DE88[])(void); - -void func_8016D19C(void *a0) { - D_8018DE88[*(u16 *)((s32)a0 + 0x2)](); -} - - - - - - - - /* 8 bytes */ - /* 32 bytes */ - - -extern void func_801465C0(void); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void*); -extern void func_80147324(int a); -extern int rand(void); -extern void RotMatrixYXZ(void *a, void *b); -extern void ApplyMatrixSV(void *a, void *b, void *c); - -void func_8016D1D8(int param_1) { - - extern u8 D_801E7468[]; - extern u8 D_801E74A8[]; - int iVar5; - int iVar2; - u16 uVar1; - unsigned int uVar3; - short sVar4; - SVEC_L1 sv; - MTX_L1 mtx; - - iVar5 = *(int *)(param_1 + 0x34); - if (*(int *)(param_1 + 0x2c) == 0) { - D_801E7468[1] = 0xE0; - D_801E7468[2] = 0xE0; - D_801E7468[0] = 0xE0; - D_801E7468[6] = 0; - D_801E7468[5] = 0; - D_801E7468[4] = 0; - iVar5 = ((int (*)(void))func_801465C0)(); - if (iVar5 != 0) { - int pp; - *(int *)(param_1 + 0x20) = iVar5; - ((void (*)(void *, int))func_800233CC)(D_801E7468, 0x28); - ((void (*)(void *, void *))func_8001CD9C)((void *)iVar5, D_801E7468); - *(short *)(iVar5 + 0x1a) = 0x1400; - *(u32 *)(iVar5 + 4) |= 0x50000000; - pp = *(int *)(param_1 + 0x30); - *(u16 *)(param_1 + 0x28) = *(u16 *)(pp + 0x36); - *(u16 *)(param_1 + 0x12) = *(u16 *)(pp + 6); - *(short *)(param_1 + 0x16) = *(u16 *)(pp + 0xa) - 0x28; - uVar1 = *(u16 *)(pp + 0xe); - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; - *(u16 *)(param_1 + 0x1a) = uVar1; - } - *(int *)(param_1 + 0x1c) = 8; - func_80147324(0x647); - } else { - D_801E74A8[1] = 0xE0; - D_801E74A8[2] = 0x20; - D_801E74A8[0] = 0x20; - D_801E74A8[5] = 0; - D_801E74A8[6] = 0; - D_801E74A8[4] = 0; - iVar2 = ((int (*)(void))func_801465C0)(); - if (iVar2 != 0) { - *(int *)(param_1 + 0x20) = iVar2; - ((void (*)(void *, int))func_800233CC)(D_801E74A8, 0x18); - ((void (*)(void *, void *))func_8001CD9C)((void *)iVar2, D_801E74A8); - *(u32 *)(iVar2 + 4) |= 0x50000000; - *(u16 *)(param_1 + 6) = *(u16 *)(iVar5 + 6); - *(u16 *)(param_1 + 0xa) = *(u16 *)(iVar5 + 0xa); - *(u16 *)(param_1 + 0xe) = *(u16 *)(iVar5 + 0xe); - uVar3 = rand(); - sv.vx = ((uVar3 & 0x7F) * 8) - 0x80; - sv.vy = (uVar3 & 0x7F00) >> 3; - sv.vz = 0; - RotMatrixYXZ(&sv, &mtx); - sv.vy = 0; - sv.vx = 0; - sv.vz = 0x240; - ApplyMatrixSV(&mtx, &sv, &sv); - *(int *)(param_1 + 0x10) = (int)sv.vx << 0xc; - *(int *)(param_1 + 0x14) = (int)sv.vy << 0xc; - sVar4 = (uVar3 & 0x3F0) + 0x200; - *(int *)(param_1 + 0x18) = (int)sv.vz << 0xc; - *(short *)(iVar2 + 0x1a) = sVar4; - *(short *)(iVar2 + 0x18) = sVar4; - *(int *)(param_1 + 0x1c) = 0x10; - *(short *)(param_1 + 2) = 2; - } - } -} - - - -extern void (*D_8018DE90[])(void); - -void func_8016D428(void *a0) { - D_8018DE90[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016D464() /* dedup: shared engine-core @0x8016D464 (src/shared) */ - -DEFINE_func_8016D4DC() /* dedup: shared engine-core @0x8016D4DC (src/shared) */ - -DEFINE_func_8016D5EC() /* dedup: shared engine-core @0x8016D5EC (src/shared) */ - -DEFINE_func_8016D64C() /* dedup: shared engine-core @0x8016D64C (src/shared) */ - - -extern void func_801465C0(void); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void *); - -void func_8016D688(int param_1) -{ - - extern unsigned char D_801E7468[]; - int iVar2; - int iVar3; - - D_801E7468[1] = 0xe0; - D_801E7468[2] = 0xe0; - D_801E7468[0] = 0xe0; - D_801E7468[6] = 0; - D_801E7468[5] = 0; - D_801E7468[4] = 0; - iVar2 = ((int (*)(void))func_801465C0)(); - if (iVar2 != 0) { - *(int *)(param_1 + 0x20) = iVar2; - ((void (*)(void *, int))func_800233CC)(D_801E7468, 0x28); - func_8001CD9C(iVar2, D_801E7468); - *(unsigned short *)(iVar2 + 0x1a) = 0x1400; - *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x50000000; - iVar3 = *(int *)(param_1 + 0x30); - *(unsigned short *)(param_1 + 0x28) = *(unsigned short *)(iVar3 + 0x36); - *(unsigned short *)(param_1 + 0x12) = *(unsigned short *)(iVar3 + 6); - *(short *)(param_1 + 0x16) = *(unsigned short *)(iVar3 + 0xa) - 0x28; - *(unsigned short *)(param_1 + 0x1a) = *(unsigned short *)(iVar3 + 0xe); - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - } - return; -} - - -DEFINE_func_8016D778() /* dedup: shared engine-core @0x8016D778 (src/shared) */ - -DEFINE_func_8016D848() /* dedup: shared engine-core @0x8016D848 (src/shared) */ - -DEFINE_func_8016D984() /* dedup: shared engine-core @0x8016D984 (src/shared) */ - -DEFINE_func_8016DA04() /* dedup: shared engine-core @0x8016DA04 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018DEF8[])(int); - -void func_8016DA30(int param_1) -{ - ((void (*)(void))func_8016DBD8)(); - D_8018DEF8[*(unsigned short *)(param_1 + 2)](param_1); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (clean if/else, one call-crossing local; bnez polarity = if(iVar1==0) fall-through) - -extern void func_801465C0(void); -extern void func_80146C3C(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; - -void func_8016DA7C(s32 param_1) -{ - s32 iVar1; - - iVar1 = ((s32 (*)(void))func_801465C0)(); - if (iVar1 == 0) { - ((void (*)(s32))func_80146C3C)(param_1); - } else { - *(s32 *)(param_1 + 0x20) = iVar1; - ((void (*)(s32, s32, s32, s32))func_8001CC3C)(iVar1, (s32)&D_8018DE9C, 0x250, 0x100); - *(u8 *)(iVar1 + 0x27) = 0x90; - *(u16 *)(iVar1 + 0x18) = 0x3000; - *(u16 *)(iVar1 + 0x1a) = 0x4000; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - func_80128EA8(iVar1, param_1 + 0x24, (s32)&D_8018DEA8); - *(s32 *)(param_1 + 0x10) = 0; - *(s32 *)(param_1 + 0x14) = 0xfff40000; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } -} - - -DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ - -DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ - - -extern s32 D_8011D030; - -extern void func_80149374(s32 a0, s32 a1); -extern s32 func_801619D0(void *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_80146C3C(void); - -void func_8016DC20(s16 *param_1) { - - extern s16 D_801E7B08; - extern s16 D_801E7B0C; - extern u8 D_8018DF00[]; - extern u8 D_8018DF0C[]; - u16 *psVar1; - s32 iVar2; - s32 iVar3; - s32 iVar4; - s16 i; - s16 sp[6]; - - i = 0; - psVar1 = (u16 *)&D_8011D030; - iVar4 = *(s32 *)((u8 *)param_1 + 0x34); - do { - if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; - i = i + 1; - psVar1 = psVar1 + 0x2c; - } while (i < 0x1e); - func_80149374(iVar4, (s32)param_1 + 4); - iVar2 = func_801619D0((void *)iVar4); - i = 0; - if (iVar2 == 0) goto ddb0; - psVar1 = (u16 *)&D_8011D030; - do { - if (*psVar1 == 0x11) goto ddb0; - i = i + 1; - psVar1 = psVar1 + 0x2c; - } while (i < 0x1e); - func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), - (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), - *(s16 *)((u8 *)param_1 + 0xe), 0, 0); - sp[0] = *(u16 *)((u8 *)param_1 + 6); - sp[1] = *(u16 *)((u8 *)param_1 + 0xa); - sp[2] = *(u16 *)((u8 *)param_1 + 0xe); - func_800D20C0(&sp[0], &sp[4], 0); - sp[5] = 0; - func_800D23D0(&sp[4]); - i = 0; - do { - iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), - *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), - i, 0); - if (iVar3 != 0) { - *(u16 *)(iVar3 + 0x12) = sp[4]; - *(u16 *)(iVar3 + 0x16) = sp[5]; - *(u16 *)(iVar3 + 0x1a) = 0; - } - i = i + 2; - } while (i < 3); - goto end; -ddb0: - if (((D_801E7B08 != *(s16 *)(iVar4 + 6)) || (D_801E7B0C != *(s16 *)(iVar4 + 0xe))) && - (iVar2 = func_800D21C4((s32)param_1, D_8018DF00, 0x18), iVar2 != 0)) { - D_801E7B08 = *(u16 *)(iVar4 + 6); - D_801E7B0C = *(u16 *)(iVar4 + 0xe); - func_800D1FC8((s32)param_1, 7); - *(s32 *)((u8 *)param_1 + 0x20) = iVar2; - *(u16 *)(iVar2 + 0x1a) = 0x3000; - *(u16 *)(iVar2 + 0x18) = 0x3000; - *(u8 *)(iVar2 + 0x26) = 0xff; - *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; - func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018DF0C); - func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); - *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; - return; - } -end: - ((void (*)(s16 *))func_80146C3C)(param_1); -} - - - -extern void (*D_8018DF2C[])(void); - -void func_8016DEA4(void *a0) { - D_8018DF2C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016DEE0() /* dedup: shared engine-core @0x8016DEE0 (src/shared) */ - - -extern void (*D_8018DF34[])(void); - -void func_8016DF20(void *a0) { - D_8018DF34[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern Blk20 D_800AE620; -extern s32 D_8011D030; -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_801465C0(void); -extern void func_80146C3C(void); - - - - -void func_8016DF5C(s32 param_1) -{ - extern void func_8016E3CC(void *a0); - extern void RotMatrixY(s32 a0, void *a1); - extern u8 D_801E7B10; - extern u8 D_801E7B11; - extern u8 D_801E7B12; - extern u8 D_801E7B14; - extern u8 D_801E7B15; - extern u8 D_801E7B16; - - s32 iVar8; - short sVar1; - - iVar8 = *(s32 *)((u8 *)((void *)param_1) + 0x34); - if ((*(u32 *)((u8 *)((void *)param_1) + 0x2c) & 0x8000) == 0) { - unsigned short uVar7 = 0; - u16 *psVar6 = (u16 *)&D_8011D030; - register s32 iNew __asm__("$17"); - s32 base; - do { - if (psVar6 != (u16 *)((void *)param_1) && (*psVar6 == 0x41 || *psVar6 == 0x48)) { - ((void (*)(void *))func_80146C3C)(psVar6); - } - uVar7++; - psVar6 += 0x2c; - } while (uVar7 < 0x1e); - iNew = ((s32(*)())func_801465C0)(); - if (iNew == 0) { - return; - } - base = (s32)&D_801E7B10; - D_801E7B12 = 0xc0; - *(u8 *)base = 0xc0; - D_801E7B11 = 0; - D_801E7B16 = 0; - D_801E7B15 = 0; - D_801E7B14 = 0; - ((void(*)(void *, unsigned short))func_800233CC)((void *)base, 0x40); - func_8001CD50(iNew, base); - *(s32 *)(iNew + 0x34) = (s32)((u8 *)((void *)param_1) + 0x38); - *(s16 *)(iNew + 0x1a) = 0; - *(s16 *)(iNew + 0x18) = 0; - *(u32 *)(iNew + 4) = *(u32 *)(iNew + 4) | 0x50000000; - func_8016E3CC(((void *)param_1)); - { - register s32 t10 __asm__("$3"); - t10 = 0x10; - *(s32 *)((u8 *)((void *)param_1) + 0x20) = iNew; - *(s32 *)((u8 *)((void *)param_1) + 0x1c) = t10; - } - sVar1 = *(u16 *)((u8 *)((void *)param_1) + 2) + 1; - } else { - short asStack_60[20]; - Blk20_8016DF5C localMatrix; - s32 uVar2; - - asStack_60[0] = 0; - asStack_60[1] = 0; - asStack_60[2] = 0x20; - localMatrix = (*(Blk20_8016DF5C*)&D_800AE620); - uVar2 = ((s32(*)())rand)(); - RotMatrixY((uVar2 & 0x7f00) >> 3, &localMatrix); - ApplyMatrixSV(&localMatrix, asStack_60, asStack_60); - *(s16 *)((u8 *)((void *)param_1) + 6) = D_80126B5E + asStack_60[0]; - *(s16 *)((u8 *)((void *)param_1) + 0xa) = D_80126B62 - ((u16)uVar2 & 0x3f); - *(s16 *)((u8 *)((void *)param_1) + 0xe) = D_80126B66 + asStack_60[2]; - *(Blk20_8016DF5C *)((u8 *)((void *)param_1) + 0x38) = *(Blk20_8016DF5C *)((u8 *)iVar8 + 0x38); - *(s32 *)((u8 *)((void *)param_1) + 0x2c) = 0x1000; - *(s32 *)((u8 *)((void *)param_1) + 0x30) = 0xff; - *(s32 *)((u8 *)((void *)param_1) + 0x1c) = 0x10; - __asm__ __volatile__("" ::: "memory"); - sVar1 = 4; - } - *(s16 *)((u8 *)((void *)param_1) + 2) = sVar1; -} - - -DEFINE_func_8016E1CC() /* dedup: shared engine-core @0x8016E1CC (src/shared) */ - -DEFINE_func_8016E26C() /* dedup: shared engine-core @0x8016E26C (src/shared) */ - -DEFINE_func_8016E2E8() /* dedup: shared engine-core @0x8016E2E8 (src/shared) */ - -DEFINE_func_8016E358() /* dedup: shared engine-core @0x8016E358 (src/shared) */ - -DEFINE_func_8016E3CC() /* dedup: shared engine-core @0x8016E3CC (src/shared) */ - -DEFINE_func_8016E460() /* dedup: shared engine-core @0x8016E460 (src/shared) */ - - -extern void (*D_8018DF88[])(void); - -void func_8016E5B8(void *a0) { - D_8018DF88[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016E5F4() /* dedup: shared engine-core @0x8016E5F4 (src/shared) */ - -DEFINE_func_8016E688() /* dedup: shared engine-core @0x8016E688 (src/shared) */ - -DEFINE_func_8016E6E4() /* dedup: shared engine-core @0x8016E6E4 (src/shared) */ - -DEFINE_func_8016E728() /* dedup: shared engine-core @0x8016E728 (src/shared) */ - -DEFINE_func_8016E778() /* dedup: shared engine-core @0x8016E778 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (74 ins); register pin $s2 forces &prim into a saved reg (§17) - - /* 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; - - -void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3) -{ - extern void func_8004914C(void *a0); - extern void func_800491AC(void *a0); - extern void RotTransSV(void *a0, void *a1, void *a2); - extern void func_80016ED4(void *a0); - extern SVECTOR_8016E7C8 D_8018DF48[4]; - extern s32 D_8018DF68; - extern s32 D_8018DF70; - extern s32 D_8018DF78; - extern s32 D_8018DF80; - - Prim_8016E7C8 prim; - MATRIX_8016E7C8 m; - SVECTOR_8016E7C8 tmp; - register Prim_8016E7C8 *pp __asm__("$18"); /* $s2 — force &prim into a saved reg */ - - ((void (*)(void *, void *))func_80017DC4)(param_2, &m); - m.t[0] = *(short *)(param_1 + 6); - m.t[1] = *(short *)(param_1 + 10); - m.t[2] = *(short *)(param_1 + 14); - func_8004914C(&m); - func_800491AC(&m); - pp = &prim; - RotTransSV(&D_8018DF48[0], pp, &tmp); - RotTransSV(&D_8018DF48[1], &prim.v[1], &tmp); - RotTransSV(&D_8018DF48[2], &prim.v[2], &tmp); - RotTransSV(&D_8018DF48[3], &prim.v[3], &tmp); - prim.v[0].vz = 3; - prim.f5 = 0x50000000; - prim.f0 = D_8018DF68; - prim.f1 = D_8018DF70; - prim.f2 = D_8018DF78; - prim.f3 = D_8018DF80; - prim.f4 = *param_3; - prim.f6 = 0x27; - func_80016ED4(pp); -} - - - -DEFINE_func_8016E8F0() /* dedup: shared engine-core @0x8016E8F0 (src/shared) */ - -DEFINE_func_8016E918() /* dedup: shared engine-core @0x8016E918 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (36/36 ins, match_one relocation-masked) - - - -typedef void (*Handler)(struct Entry_8016E95C *); - - -s32 func_8016E95C() { - extern Handler D_8018DFC8[]; - - struct Entry_8016E95C *p; - for (p = ((struct Entry_8016E95C *)&D_80115218); p < &((struct Entry_8016E95C *)&D_80115218)[4]; p++) { - if (p->f0 != 0) { - D_8018DFC8[p->f1](p); - } - } -} - - - - -/* @class: regalloc (non-coalescing delay-slot copy) + sched (load-temp hoist) - * @stuck: none — MATCH (53/53 ins, match_one AND rtu_match in the real TU). - * - * Two levers, both from the cookbook: - * - * 1. §52a "non-coalescing delay-slot copy" + §17 zero-reg-copy (the load-bearing one). - * The target holds `p[0]-1` in TWO callee-saved regs: $s0 (the array index, later - * destroyed in place by `sll $s0,$s0,1`) and $s4 (the value stored to p[3]), created - * by `addu $s4,$s0,$zero` sitting in the DELAY SLOT of `jal func_800D2CA8`. A plain - * C `c = i;` is destroyed by cse.c canon_reg head-promotion (measured: 50 ins, -3), - * and every #APP-asm spelling of the copy is INELIGIBLE for a delay slot (measured: - * 51 ins, -2 — tried `__asm__("":"=r"(c):"0"(i))`, a real-opcode - * `__asm__("addu %0,%1,$0")`, and the §52b RC-7 post-copy second-set barrier - * `c=i; __asm__("":"=r"(c):"0"(c))`; all three collapse or lose the slot). - * Only the `$0`-add — `register u32 zr __asm__("$0"); c = i + zr;` — emits a bare - * `addu` with no asm insn, so reorg can sink it into the call's delay slot. - * NOTE for ×138 propagation: this is a ZERO-REGISTER pin, not an allocation pin — - * it constrains no real value. family_sweep's §42e "skip pinned exemplar" guard is - * documented over-conservative (§86; the SIGABRT was our own extract_unit macro-drop, - * fixed in Phase 27), so this exemplar should still sweep. - * - * 2. Free-floating load temp for a scheduler hoist (§52a-adjacent, idiom 7). - * With the p+6 store written as one statement the sched2 list scheduler hoists - * `lbu $v0,1($a0)` ahead of `sb $s4,3($a0)` and sinks the D_8018DFB4 lui/addu/lhu - * chain (8 mismatched, same 53-ins multiset). Splitting the load into its own - * statement `h = D_8018DFB4[i];` placed BEFORE `p[2] = 0` (exactly what the Ghidra - * seed showed) puts the lhu chain right after `sh $v0,4($a0)` → 0. - * - * Data typing: D_8018DF98 is a WORD array (`sll $v0,$s0,2`; its element is dereferenced - * as a buffer by func_80024054) => u8 *[]. D_8018DFB0 is byte-indexed (`lbu`, no shift) - * => u8[]. D_8018DFB4 is halfword-indexed (`sll $s0,$s0,1` + `lhu`) => u16[]. - * `*(s16 *)(p + 4) = -0xD7` emits `addiu $v0,$zero,-0xD7`; 0xFF29 as a u16 would not. - */ - - -extern s32 func_800D2CA8(s32 a0, s32 a1); -extern void func_800D2D10(s32 a0, s32 a1, void *a2, s32 a3); -extern s32 func_80024054(void *a0, void *a1); -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016E9EC(u8 *p) -{ - - extern u8 *D_8018DF98[]; - extern u8 D_8018DFB0[]; - extern u16 D_8018DFB4[]; - register u32 zr __asm__("$0"); - int i; - int c; - u8 *buf; - u8 off; - u16 h; - s32 r; - - i = p[0] - 1; - off = D_8018DFB0[i]; - buf = D_8018DF98[i]; - c = i + zr; - r = func_800D2CA8(p[3], 0x1C); - func_800D2D10(r, 1, buf + off, 0); - func_80024054(buf, p + 8); - p[3] = c; - *(s16 *)(p + 4) = -0xD7; - h = D_8018DFB4[i]; - p[2] = 0; - *(u16 *)(p + 6) = h; - p[1] = p[1] + 1; - ((void (*)(u8 *, s32))func_8016EC0C)(p, 0x80); -} - - - -// @class: struct -// @stuck: none — MATCH (31/31 ins, match_one verified) - -extern u16 D_8018DFBC[]; -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EAC0(Wave *param_1) -{ - unsigned char bVar1; - - param_1->f4 = param_1->f4 + D_8018DFBC[param_1->f2]; - ((void (*)(void *, int))func_8016EC0C)(param_1, 0x80); - bVar1 = param_1->f2 + 1; - param_1->f2 = bVar1; - if (5 < bVar1) { - param_1->f2 = 0x20; - param_1->f1 = param_1->f1 + 1; - } -} - - - -// @class: loose-typing -// @stuck: none — MATCH (u8 v + 0xFF emits addiu 0xFF; v-1 would emit -1/0xffff) - -extern u8 D_8018DFAC[]; -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EB3C(s32 p) { - u8 v; - - ((void (*)(s32, s32))func_8016EC0C)(p, D_8018DFAC[*(u8 *)(p + 2) & 3]); - - v = *(u8 *)(p + 2); - *(u8 *)(p + 2) = v + 0xFF; - if (v == 0) { - *(u8 *)(p + 2) = 5; - *(u8 *)(p + 1) = *(u8 *)(p + 1) + 1; - } -} - - - -// @class: struct -// @stuck: none — MATCH (25 ins). %lo-fold via extern u16 D_8018DFBC[]; predecrement emitted as +0xFF (u8 promote→sb low byte), not -1. - -extern u16 D_8018DFBC[]; - -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EBA8(u8 *param_1) -{ - u8 c; - - *(u16 *)(param_1 + 4) = - *(u16 *)(param_1 + 4) - D_8018DFBC[param_1[2]]; - ((void (*)(u8 *, int))func_8016EC0C)(param_1, 0x80); - c = param_1[2]; - param_1[2] = c + 0xFF; - if (c == 0) { - param_1[0] = 0; - } -} - - - -extern void func_80017B98(void *a0); -extern u8 D_8018DFA8[]; - -void func_8016EC0C(s32 a0, s32 a1) -{ - /* §100 draft-LOCAL type: a file-scope typedef is an EXEMPLAR-ONLY bank — extract_unit/ - remap_hseq carry only the BODY, so every sibling fails `T8016EC0C undeclared` - (measured on ov_SC01_000). Block scope travels with the body; byte-neutral. */ - /* 0x1C */ - T8016EC0C s; - u16 *p; - s32 x; - s32 y; - s32 v; - - s.r = s.g = s.b = a1; - s.u18 = D_8018DFA8[*(u8 *)(a0 + 3)]; - s.u0C = 0x640; - s.u0E = 0x1C8; - s.u14 = 0; - s.u08 = 0x28; - s.u0A = 8; - x = *(u16 *)(a0 + 4); - s.x = x + 0x10; - y = *(u16 *)(a0 + 6); - s.u04 = 0x10; - s.y = y; - func_80017B98(&s); - s.u08 = 8; - y += 0xA; - p = (u16 *)(a0 + 8); - while (*p != 0xFFFF) { - v = *p; - switch (v) { - case 0x1850: - case 0x1858: - s.x = x + 4; - s.y = y - 7; - break; - case 0x3872: - x += 2; - p++; - continue; - default: - s.x = x; - s.y = y; - x += 8; - break; - } - s.u0C = *(u8 *)p + 0x500; - s.u0E = (*p >> 8) + 0x100; - p++; - func_80017B98(&s); - } -} - - -DEFINE_func_8016ED6C() /* dedup: shared engine-core @0x8016ED6C (src/shared) */ - -DEFINE_func_8016ED8C() /* dedup: shared engine-core @0x8016ED8C (src/shared) */ - -DEFINE_func_8016EDBC() /* dedup: shared engine-core @0x8016EDBC (src/shared) */ - -DEFINE_func_8016EDEC() /* dedup: shared engine-core @0x8016EDEC (src/shared) */ - -DEFINE_func_8016EE40() /* dedup: shared engine-core @0x8016EE40 (src/shared) */ - -DEFINE_func_8016EE94() /* dedup: shared engine-core @0x8016EE94 (src/shared) */ - -DEFINE_func_8016EF78() /* dedup: shared engine-core @0x8016EF78 (src/shared) */ - -DEFINE_func_8016EFA8() /* dedup: shared engine-core @0x8016EFA8 (src/shared) */ - -DEFINE_func_8016EFC8() /* dedup: shared engine-core @0x8016EFC8 (src/shared) */ - -DEFINE_func_8016F094() /* dedup: shared engine-core @0x8016F094 (src/shared) */ - -// @class: plumbing -// @stuck: none — MATCH - -DEFINE_func_8016F0AC() /* dedup: shared engine-core @0x8016F0AC (src/shared) */ - - - - -/* RECONCILE NOTE (uc3) — the body is byte-unchanged from uc2; only the declaration - * environment moved. The gate error was - * jr_8016AB6C.c:4183 conflicting types for func_8016F0E4 || :4089 previous declaration - * :4089 was THIS definition; :4183 is the `extern void func_8016F0E4(void);` carried inside - * DEFINE_func_8016F4C4() (src/shared/engine_core.h:22579), which the host TU instantiates at - * ov_SC01_077_jr_8016AB6C.c:4136 — i.e. AFTER the definition, so it is a hard error, not the - * mere warning produced by the earlier block-scope decl in func_8016F0AC (TU:4047). - * Byte-true signature is `void (u8 *)`; the fleet canon is `void (void)` — a PARAM/ARITY - * disagreement on func_8016F0E4 ITSELF. - * - * ESCAPE TAKEN: §37/§124 ASM-LABEL ALIAS (escape 2, T0 draft-only, zero tracked-file edits). - * The C identifier is aF8016F0E4 so this TU declares func_8016F0E4 exactly once (the macro's - * own `extern void`), while the emitted SYMBOL is func_8016F0E4. Both existing callers already - * launder through a cast or take no args, so neither is perturbed: - * - func_8016F0AC (TU:4047-4049) casts: ((void (*)(void *))func_8016F0E4)(&D_80126B58); - * - DEFINE_func_8016F4C4 calls func_8016F0E4() with 0 args against its own (void) prototype. - * cc1-proven: preprocess+compile of the real TU with this body spliced in is free of any - * func_8016F0E4 diagnostic (the pre-existing unrelated warnings in the TU are unchanged). - * - * This SUPERSEDES uc2's //@EDIT de-macroize plan (§65b) and its T2 engine_core.h alternative - * (§75c) — neither is needed; nothing outside this unit changes, so the bank travels to the - * 137 siblings as a plain unit (carry the alias DECLARATION line with it — §124 trap 2). - */ - -DEFINE_func_8016F0E4() /* dedup: shared engine-core @0x8016F0E4 (src/shared) */ - - -DEFINE_func_8016F14C() /* dedup: shared engine-core @0x8016F14C (src/shared) */ - -DEFINE_func_8016F1AC() /* dedup: shared engine-core @0x8016F1AC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH - -extern s32 D_8018DFD8; -extern s32 D_80126B58; -extern s16 currentLocationId; - -s32 func_8016F1C4(void) { - s32 *p; - s32 cur; - s32 loc; - s32 v; - s32 *base = &D_80126B58; - - p = &D_8018DFD8; - cur = *p; - if (cur != 0) { - loc = currentLocationId; - p = p + 1; - for (;;) { - if (loc == cur) { - return 1; - } - cur = *p; - p = p + 1; - if (cur == 0) { - break; - } - } - } - v = base[0x7E]; - if (((v & 0x80FFFFFF) != 0) && ((v & 0x10000000) != 0)) { - return 0; - } - return base[0x7E] & 0x80FFFFFF; -} - - -DEFINE_func_8016F250() /* dedup: shared engine-core @0x8016F250 (src/shared) */ - -DEFINE_func_8016F264() /* dedup: shared engine-core @0x8016F264 (src/shared) */ - -DEFINE_func_8016F288() /* dedup: shared engine-core @0x8016F288 (src/shared) */ - -DEFINE_func_8016F2A8() /* dedup: shared engine-core @0x8016F2A8 (src/shared) */ - -DEFINE_func_8016F2C8() /* dedup: shared engine-core @0x8016F2C8 (src/shared) */ - -DEFINE_func_8016F2EC() /* dedup: shared engine-core @0x8016F2EC (src/shared) */ - -DEFINE_func_8016F30C() /* dedup: shared engine-core @0x8016F30C (src/shared) */ - -DEFINE_func_8016F330() /* dedup: shared engine-core @0x8016F330 (src/shared) */ - -DEFINE_func_8016F350() /* dedup: shared engine-core @0x8016F350 (src/shared) */ - -DEFINE_func_8016F374() /* dedup: shared engine-core @0x8016F374 (src/shared) */ - -DEFINE_func_8016F388() /* dedup: shared engine-core @0x8016F388 (src/shared) */ - -DEFINE_func_8016F398() /* dedup: shared engine-core @0x8016F398 (src/shared) */ - -DEFINE_func_8016F410() /* dedup: shared engine-core @0x8016F410 (src/shared) */ - -DEFINE_func_8016F44C() /* dedup: shared engine-core @0x8016F44C (src/shared) */ - -DEFINE_func_8016F470() /* dedup: shared engine-core @0x8016F470 (src/shared) */ - -DEFINE_func_8016F494() /* dedup: shared engine-core @0x8016F494 (src/shared) */ - -DEFINE_func_8016F4C4() /* dedup: shared engine-core @0x8016F4C4 (src/shared) */ - -DEFINE_func_8016F4F4() /* dedup: shared engine-core @0x8016F4F4 (src/shared) */ - -DEFINE_func_8016F4FC() /* dedup: shared engine-core @0x8016F4FC (src/shared) */ - -DEFINE_func_8016F540() /* dedup: shared engine-core @0x8016F540 (src/shared) */ - -DEFINE_func_8016F578() /* dedup: shared engine-core @0x8016F578 (src/shared) */ - -DEFINE_func_8016F5B0() /* dedup: shared engine-core @0x8016F5B0 (src/shared) */ - -DEFINE_func_8016F5E0() /* dedup: shared engine-core @0x8016F5E0 (src/shared) */ - -DEFINE_func_8016F610() /* dedup: shared engine-core @0x8016F610 (src/shared) */ - -DEFINE_func_8016F648() /* dedup: shared engine-core @0x8016F648 (src/shared) */ - -DEFINE_func_8016F680() /* dedup: shared engine-core @0x8016F680 (src/shared) */ - -DEFINE_func_8016F6B0() /* dedup: shared engine-core @0x8016F6B0 (src/shared) */ - - -extern void (*D_8018E050[])(void); - -void func_8016F6E0(void *a0) { - D_8018E050[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F71C() /* dedup: shared engine-core @0x8016F71C (src/shared) */ - -DEFINE_func_8016F764() /* dedup: shared engine-core @0x8016F764 (src/shared) */ - - -extern void (*D_8018E058[])(void); - -void func_8016F798(void *a0) { - D_8018E058[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F7D4() /* dedup: shared engine-core @0x8016F7D4 (src/shared) */ - -DEFINE_func_8016F804() /* dedup: shared engine-core @0x8016F804 (src/shared) */ - - -extern void (*D_8018E060[])(void); - -void func_8016F834(void *a0) { - D_8018E060[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F870() /* dedup: shared engine-core @0x8016F870 (src/shared) */ - -DEFINE_func_8016F8AC() /* dedup: shared engine-core @0x8016F8AC (src/shared) */ - - -extern void (*D_8018E068[])(void); - -void func_8016F8E4(void *a0) { - D_8018E068[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F920() /* dedup: shared engine-core @0x8016F920 (src/shared) */ - -DEFINE_func_8016F95C() /* dedup: shared engine-core @0x8016F95C (src/shared) */ - - -extern void (*D_8018E070[])(void); - -void func_8016F9C4(void *a0) { - D_8018E070[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FA00() /* dedup: shared engine-core @0x8016FA00 (src/shared) */ - -DEFINE_func_8016FA44() /* dedup: shared engine-core @0x8016FA44 (src/shared) */ - - -extern void (*D_8018E078[])(void); - -void func_8016FA84(void *a0) { - D_8018E078[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FAC0() /* dedup: shared engine-core @0x8016FAC0 (src/shared) */ - -DEFINE_func_8016FB10() /* dedup: shared engine-core @0x8016FB10 (src/shared) */ - -DEFINE_func_8016FB50() /* dedup: shared engine-core @0x8016FB50 (src/shared) */ - - -extern void (*D_8018E084[])(void); - -void func_8016FB7C(void *a0) { - D_8018E084[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FBB8() /* dedup: shared engine-core @0x8016FBB8 (src/shared) */ - -DEFINE_func_8016FC24() /* dedup: shared engine-core @0x8016FC24 (src/shared) */ - -DEFINE_func_8016FC64() /* dedup: shared engine-core @0x8016FC64 (src/shared) */ - - -extern void (*D_8018E090[])(void); - -void func_8016FC90(void *a0) { - D_8018E090[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FCCC() /* dedup: shared engine-core @0x8016FCCC (src/shared) */ - -DEFINE_func_8016FD08() /* dedup: shared engine-core @0x8016FD08 (src/shared) */ - -DEFINE_func_8016FD7C() /* dedup: shared engine-core @0x8016FD7C (src/shared) */ - - -extern void (*D_8018E09C[])(void); - -void func_8016FDB4(void *a0) { - D_8018E09C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FDF0() /* dedup: shared engine-core @0x8016FDF0 (src/shared) */ - -DEFINE_func_8016FE2C() /* dedup: shared engine-core @0x8016FE2C (src/shared) */ - -DEFINE_func_8016FE78() /* dedup: shared engine-core @0x8016FE78 (src/shared) */ - -DEFINE_func_8016FED0() /* dedup: shared engine-core @0x8016FED0 (src/shared) */ - - -extern void (*D_8018E0AC[])(void); - -void func_8016FF30(void *a0) { - D_8018E0AC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FF6C() /* dedup: shared engine-core @0x8016FF6C (src/shared) */ - -DEFINE_func_8016FFA8() /* dedup: shared engine-core @0x8016FFA8 (src/shared) */ - - -extern void (*D_8018E0BC[])(void); - -void func_8016FFDC(void *a0) { - D_8018E0BC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170018() /* dedup: shared engine-core @0x80170018 (src/shared) */ - -DEFINE_func_80170068() /* dedup: shared engine-core @0x80170068 (src/shared) */ - -DEFINE_func_801700B8() /* dedup: shared engine-core @0x801700B8 (src/shared) */ - -DEFINE_func_80170100() /* dedup: shared engine-core @0x80170100 (src/shared) */ - - -extern void (*D_8018E0C4[])(void); - -void func_80170150(void *a0) { - D_8018E0C4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017018C() /* dedup: shared engine-core @0x8017018C (src/shared) */ - -DEFINE_func_801701C8() /* dedup: shared engine-core @0x801701C8 (src/shared) */ - - -extern void (*D_8018E0CC[])(void); - -void func_80170240(void *a0) { - D_8018E0CC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017027C() /* dedup: shared engine-core @0x8017027C (src/shared) */ - -DEFINE_func_801702B8() /* dedup: shared engine-core @0x801702B8 (src/shared) */ - - -extern void (*D_8018E0D4[])(void); - -void func_801702FC(void *a0) { - D_8018E0D4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170338() /* dedup: shared engine-core @0x80170338 (src/shared) */ - -DEFINE_func_80170374() /* dedup: shared engine-core @0x80170374 (src/shared) */ - - -extern void (*D_8018E0DC[])(void); - -void func_801703E0(void *a0) { - D_8018E0DC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017041C() /* dedup: shared engine-core @0x8017041C (src/shared) */ - -DEFINE_func_8017044C() /* dedup: shared engine-core @0x8017044C (src/shared) */ - - -extern void (*D_8018E0E4[])(void); - -void func_801704B0(void *a0) { - D_8018E0E4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801704EC() /* dedup: shared engine-core @0x801704EC (src/shared) */ - -DEFINE_func_8017051C() /* dedup: shared engine-core @0x8017051C (src/shared) */ - - -extern void (*D_8018E0EC[])(void); - -void func_80170548(void *a0) { - D_8018E0EC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170584() /* dedup: shared engine-core @0x80170584 (src/shared) */ - -DEFINE_func_801705C0() /* dedup: shared engine-core @0x801705C0 (src/shared) */ - - -extern void (*D_8018E0F4[])(void); - -void func_801705F8(void *a0) { - D_8018E0F4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170634() /* dedup: shared engine-core @0x80170634 (src/shared) */ - -DEFINE_func_80170670() /* dedup: shared engine-core @0x80170670 (src/shared) */ - - -extern void (*D_8018E0FC[])(void); - -void func_801706AC(void *a0) { - D_8018E0FC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801706E8() /* dedup: shared engine-core @0x801706E8 (src/shared) */ - -DEFINE_func_80170718() /* dedup: shared engine-core @0x80170718 (src/shared) */ - - -extern void (*D_8018E104[])(void); - -void func_80170748(void *a0) { - D_8018E104[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170784() /* dedup: shared engine-core @0x80170784 (src/shared) */ - -DEFINE_func_801707D4() /* dedup: shared engine-core @0x801707D4 (src/shared) */ - - -extern void (*D_8018E10C[])(void); - -void func_80170810(void *a0) { - D_8018E10C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017084C() /* dedup: shared engine-core @0x8017084C (src/shared) */ - - -DEFINE_func_801708B0() /* dedup: shared engine-core @0x801708B0 (src/shared) */ - - -DEFINE_func_80170928() /* dedup: shared engine-core @0x80170928 (src/shared) */ - -DEFINE_func_80170970() /* dedup: shared engine-core @0x80170970 (src/shared) */ - -DEFINE_func_801709B8() /* dedup: shared engine-core @0x801709B8 (src/shared) */ - -DEFINE_func_80170A00() /* dedup: shared engine-core @0x80170A00 (src/shared) */ - -DEFINE_func_80170A48() /* dedup: shared engine-core @0x80170A48 (src/shared) */ - -DEFINE_func_80170A90() /* dedup: shared engine-core @0x80170A90 (src/shared) */ - - -extern void (*D_8018E114[])(void); - -void func_80170AD8(void *a0) { - D_8018E114[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170B14() /* dedup: shared engine-core @0x80170B14 (src/shared) */ - -DEFINE_func_80170B48() /* dedup: shared engine-core @0x80170B48 (src/shared) */ - -DEFINE_func_80170B90() /* dedup: shared engine-core @0x80170B90 (src/shared) */ - - -extern void (*D_8018E11C[])(void); - -void func_80170BD8(void *a0) { - D_8018E11C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170C14() /* dedup: shared engine-core @0x80170C14 (src/shared) */ - -DEFINE_func_80170C44() /* dedup: shared engine-core @0x80170C44 (src/shared) */ - - -extern void (*D_8018E124[])(void); - -void func_80170C74(void *a0) { - D_8018E124[*(u8 *)((s32)a0 + 0x215)](); -} - - -DEFINE_func_80170CB0() /* dedup: shared engine-core @0x80170CB0 (src/shared) */ - - -DEFINE_func_80170CF0() /* dedup: shared engine-core @0x80170CF0 (src/shared) */ - - - -extern void (*D_8018E12C[])(void); - -void func_80170D68(void *a0) { - D_8018E12C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170DA4() /* dedup: shared engine-core @0x80170DA4 (src/shared) */ - -DEFINE_func_80170DE0() /* dedup: shared engine-core @0x80170DE0 (src/shared) */ - - -extern void (*D_8018E134[])(void); - -void func_80170E34(void *a0) { - D_8018E134[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170E70() /* dedup: shared engine-core @0x80170E70 (src/shared) */ - -DEFINE_func_80170EAC() /* dedup: shared engine-core @0x80170EAC (src/shared) */ - - -extern void (*D_8018E13C[])(void); - -void func_80170EFC(void *a0) { - D_8018E13C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170F38() /* dedup: shared engine-core @0x80170F38 (src/shared) */ - -DEFINE_func_80170F74() /* dedup: shared engine-core @0x80170F74 (src/shared) */ - - -extern void (*D_8018E144[])(void); - -void func_80170FB0(void *a0) { - D_8018E144[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170FEC() /* dedup: shared engine-core @0x80170FEC (src/shared) */ - -DEFINE_func_80171028() /* dedup: shared engine-core @0x80171028 (src/shared) */ - - -extern void (*D_8018E14C[])(void); - -void func_80171064(void *a0) { - D_8018E14C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801710A0() /* dedup: shared engine-core @0x801710A0 (src/shared) */ - -DEFINE_func_801710DC() /* dedup: shared engine-core @0x801710DC (src/shared) */ - - -extern void (*D_8018E154[])(void); - -void func_80171120(void *a0) { - D_8018E154[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017115C() /* dedup: shared engine-core @0x8017115C (src/shared) */ - -DEFINE_func_8017118C() /* dedup: shared engine-core @0x8017118C (src/shared) */ - - -extern void (*D_8018E15C[])(void); - -void func_801711C0(void *a0) { - D_8018E15C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801711FC() /* dedup: shared engine-core @0x801711FC (src/shared) */ - -DEFINE_func_80171238() /* dedup: shared engine-core @0x80171238 (src/shared) */ - - -extern void (*D_8018E164[])(void); - -void func_80171260(void *a0) { - D_8018E164[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017129C() /* dedup: shared engine-core @0x8017129C (src/shared) */ - -DEFINE_func_80171384() /* dedup: shared engine-core @0x80171384 (src/shared) */ - - -extern void (*D_8018E16C[])(void); - -void func_801714E4(void *a0) { - D_8018E16C[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80171520() /* dedup: shared engine-core @0x80171520 (src/shared) */ - -DEFINE_func_8017162C() /* dedup: shared engine-core @0x8017162C (src/shared) */ - -DEFINE_func_801716AC() /* dedup: shared engine-core @0x801716AC (src/shared) */ - -DEFINE_func_801717A0() /* dedup: shared engine-core @0x801717A0 (src/shared) */ - -DEFINE_func_801717F4() /* dedup: shared engine-core @0x801717F4 (src/shared) */ - -DEFINE_func_80171824() /* dedup: shared engine-core @0x80171824 (src/shared) */ - -DEFINE_func_80171854() /* dedup: shared engine-core @0x80171854 (src/shared) */ - -DEFINE_func_80171884() /* dedup: shared engine-core @0x80171884 (src/shared) */ - -DEFINE_func_801718AC() /* dedup: shared engine-core @0x801718AC (src/shared) */ - -DEFINE_func_80171904() /* dedup: shared engine-core @0x80171904 (src/shared) */ - -DEFINE_func_80171928() /* dedup: shared engine-core @0x80171928 (src/shared) */ - -DEFINE_func_8017196C() /* dedup: shared engine-core @0x8017196C (src/shared) */ - -DEFINE_func_8017197C() /* dedup: shared engine-core @0x8017197C (src/shared) */ - -DEFINE_func_80171990() /* dedup: shared engine-core @0x80171990 (src/shared) */ - -DEFINE_func_801719A4() /* dedup: shared engine-core @0x801719A4 (src/shared) */ - -DEFINE_func_80171A04() /* dedup: shared engine-core @0x80171A04 (src/shared) */ - -DEFINE_func_80171A10() /* dedup: shared engine-core @0x80171A10 (src/shared) */ - -DEFINE_func_80171A1C() /* dedup: shared engine-core @0x80171A1C (src/shared) */ - -DEFINE_func_80171A34() /* dedup: shared engine-core @0x80171A34 (src/shared) */ - -DEFINE_func_80171A44() /* dedup: shared engine-core @0x80171A44 (src/shared) */ - -DEFINE_func_80171A58() /* dedup: shared engine-core @0x80171A58 (src/shared) */ - -DEFINE_func_80171A6C() /* dedup: shared engine-core @0x80171A6C (src/shared) */ - -DEFINE_func_80171A80() /* dedup: shared engine-core @0x80171A80 (src/shared) */ - -DEFINE_func_80171A88() /* dedup: shared engine-core @0x80171A88 (src/shared) */ - -DEFINE_func_80171AB0() /* dedup: shared engine-core @0x80171AB0 (src/shared) */ - -DEFINE_func_80171B10() /* dedup: shared engine-core @0x80171B10 (src/shared) */ - -DEFINE_func_80171B44() /* dedup: shared engine-core @0x80171B44 (src/shared) */ diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80171B4C.c b/src/ov_SC02_003/ov_SC02_003_jr_80171B4C.c deleted file mode 100644 index b90db67ba..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80171B4C.c +++ /dev/null @@ -1,2546 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -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_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_8018D418[])(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_8018D424[])(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 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_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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 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 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_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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 s32 func_80016A5C(); -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_8018DD68[])(void); -extern void func_8016AB30(void *a0); -extern s32 func_8016AB6C(s32 arg0); -extern void func_8016B234(); -extern void func_8016AE5C(s32 param_1); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_80016ED4(void *a0); -extern void func_8016B234(s32 param_1); -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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_80013CFC(s32 a0, s32 a1, void *a2); -extern void func_8001739C(void *a0); -extern void func_8016B6BC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(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_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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(); -extern void func_8016C83C(s32 a0); -extern short func_8016CBC0(void); -extern void func_8016C998(s32 param_1); -extern void (*D_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void*); -extern void func_80147324(int a); -extern void RotMatrixYXZ(void *a, void *b); -extern void ApplyMatrixSV(void *a, void *b, void *c); -extern void func_8016D1D8(int param_1); -extern void (*D_8018DE90[])(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 void func_8016D64C(int param_1); -extern void func_8016D688(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void func_8016DC20(s16 *param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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 s32 func_8016EFC8(s32 a0, s32 a1); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(void); -extern void func_80171260(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -extern void func_801719A4(int, int); -extern s32 func_80171990(u8*); -extern void func_80171384(void*); -extern void func_8017129C(int param_1); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018E16C[])(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); -/* ==== end §8b carried decl layer ==== */ - - -extern void func_80146D90(s32); -extern s32 ratan2(s32, s32); -extern s32 D_801151D4; - -s32 func_80171B4C(arg0, arg1) -s32 arg0; -u8 arg1; -{ - s32 p, ang, idx; - u8 c; - p = D_801151D4; - *(u8 *)(arg0 + 0xA9) = 0x41; - ang = ratan2(*(s32 *)(p + 0x68) - *(s32 *)(p + 0x5C), - *(s32 *)(p + 0x70) - *(s32 *)(p + 0x64)); - idx = ((*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - ((ang + 0x800) & 0xFFF)) + 0x100) & 0xE00; - switch (idx / 0x200) { - case 0: *(u16 *)(arg0 + 0xAA) = 0x1000; break; - case 1: *(u16 *)(arg0 + 0xAA) = 0x3000; break; - case 2: *(u16 *)(arg0 + 0xAA) = 0x2000; break; - case 3: *(u16 *)(arg0 + 0xAA) = 0x6000; break; - case 4: *(u16 *)(arg0 + 0xAA) = 0x4000; break; - case 5: *(u16 *)(arg0 + 0xAA) = 0xC000; break; - case 6: *(u16 *)(arg0 + 0xAA) = 0x8000; break; - case 7: *(u16 *)(arg0 + 0xAA) = 0x9000; break; - } - c = *(u8 *)(arg0 + 0x20C); - *(u8 *)(arg0 + 0x20C) = c + 1; - if (c != arg1) { - return 0; - } - func_80146D90(arg0); - return 1; -} - -DEFINE_func_80171C64() /* dedup: shared engine-core @0x80171C64 (src/shared) */ - -DEFINE_func_80171CC4() /* dedup: shared engine-core @0x80171CC4 (src/shared) */ - -DEFINE_func_80171D1C() /* dedup: shared engine-core @0x80171D1C (src/shared) */ - -DEFINE_func_80171D78() /* dedup: shared engine-core @0x80171D78 (src/shared) */ - -DEFINE_func_80171E08() /* dedup: shared engine-core @0x80171E08 (src/shared) */ - -DEFINE_func_80171EC8() /* dedup: shared engine-core @0x80171EC8 (src/shared) */ - - -DEFINE_func_80171FFC() /* dedup: shared engine-core @0x80171FFC (src/shared) */ - - -DEFINE_func_8017209C() /* dedup: shared engine-core @0x8017209C (src/shared) */ - -DEFINE_func_80172170() /* dedup: shared engine-core @0x80172170 (src/shared) */ - -DEFINE_func_801722CC() /* dedup: shared engine-core @0x801722CC (src/shared) */ - -DEFINE_func_80172304() /* dedup: shared engine-core @0x80172304 (src/shared) */ - -DEFINE_func_80172310() /* dedup: shared engine-core @0x80172310 (src/shared) */ - -DEFINE_func_80172358() /* dedup: shared engine-core @0x80172358 (src/shared) */ - -DEFINE_func_801723C4() /* dedup: shared engine-core @0x801723C4 (src/shared) */ - -DEFINE_func_80172414() /* dedup: shared engine-core @0x80172414 (src/shared) */ - -DEFINE_func_8017248C() /* dedup: shared engine-core @0x8017248C (src/shared) */ - -DEFINE_func_801724EC() /* dedup: shared engine-core @0x801724EC (src/shared) */ - -DEFINE_func_8017250C() /* dedup: shared engine-core @0x8017250C (src/shared) */ - -DEFINE_func_80172560() /* dedup: shared engine-core @0x80172560 (src/shared) */ - -DEFINE_func_80172588() /* dedup: shared engine-core @0x80172588 (src/shared) */ - -DEFINE_func_80172590() /* dedup: shared engine-core @0x80172590 (src/shared) */ - -DEFINE_func_801725A4() /* dedup: shared engine-core @0x801725A4 (src/shared) */ - -DEFINE_func_801725B8() /* dedup: shared engine-core @0x801725B8 (src/shared) */ - -DEFINE_func_801725CC() /* dedup: shared engine-core @0x801725CC (src/shared) */ - -DEFINE_func_801725E0() /* dedup: shared engine-core @0x801725E0 (src/shared) */ - -DEFINE_func_801725F4() /* dedup: shared engine-core @0x801725F4 (src/shared) */ - -DEFINE_func_80172608() /* dedup: shared engine-core @0x80172608 (src/shared) */ - -DEFINE_func_8017261C() /* dedup: shared engine-core @0x8017261C (src/shared) */ - -DEFINE_func_80172630() /* dedup: shared engine-core @0x80172630 (src/shared) */ - -DEFINE_func_80172644() /* dedup: shared engine-core @0x80172644 (src/shared) */ - -DEFINE_func_80172658() /* dedup: shared engine-core @0x80172658 (src/shared) */ - -DEFINE_func_80172664() /* dedup: shared engine-core @0x80172664 (src/shared) */ - -DEFINE_func_80172670() /* dedup: shared engine-core @0x80172670 (src/shared) */ - -DEFINE_func_8017267C() /* dedup: shared engine-core @0x8017267C (src/shared) */ - -DEFINE_func_80172688() /* dedup: shared engine-core @0x80172688 (src/shared) */ - -DEFINE_func_80172694() /* dedup: shared engine-core @0x80172694 (src/shared) */ - -DEFINE_func_801726A0() /* dedup: shared engine-core @0x801726A0 (src/shared) */ - -DEFINE_func_801726AC() /* dedup: shared engine-core @0x801726AC (src/shared) */ - -DEFINE_func_801726B8() /* dedup: shared engine-core @0x801726B8 (src/shared) */ - -DEFINE_func_801726C4() /* dedup: shared engine-core @0x801726C4 (src/shared) */ - -DEFINE_func_801726D0() /* dedup: shared engine-core @0x801726D0 (src/shared) */ - -DEFINE_func_80172710() /* dedup: shared engine-core @0x80172710 (src/shared) */ - -DEFINE_func_80172738() /* dedup: shared engine-core @0x80172738 (src/shared) */ - -DEFINE_func_80172760() /* dedup: shared engine-core @0x80172760 (src/shared) */ - -DEFINE_func_80172780() /* dedup: shared engine-core @0x80172780 (src/shared) */ - - - -s32 func_801727D0(void *a0) { - - extern void (*D_8018E17C[])(void); - D_8018E17C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017280C() /* dedup: shared engine-core @0x8017280C (src/shared) */ - -DEFINE_func_80172844() /* dedup: shared engine-core @0x80172844 (src/shared) */ - -DEFINE_func_8017288C() /* dedup: shared engine-core @0x8017288C (src/shared) */ - -DEFINE_func_80172894() /* dedup: shared engine-core @0x80172894 (src/shared) */ - - - -s32 func_801728E4(void *a0) { - - extern void (*D_8018E188[])(void); - D_8018E188[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172920() /* dedup: shared engine-core @0x80172920 (src/shared) */ - -DEFINE_func_80172958() /* dedup: shared engine-core @0x80172958 (src/shared) */ - -DEFINE_func_801729A8() /* dedup: shared engine-core @0x801729A8 (src/shared) */ - -DEFINE_func_801729B0() /* dedup: shared engine-core @0x801729B0 (src/shared) */ - - - -s32 func_801729F0(void *a0) { - - extern void (*D_8018E194[])(void); - D_8018E194[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172A2C() /* dedup: shared engine-core @0x80172A2C (src/shared) */ - -DEFINE_func_80172A8C() /* dedup: shared engine-core @0x80172A8C (src/shared) */ - -DEFINE_func_80172ACC() /* dedup: shared engine-core @0x80172ACC (src/shared) */ - -DEFINE_func_80172B0C() /* dedup: shared engine-core @0x80172B0C (src/shared) */ - -DEFINE_func_80172B14() /* dedup: shared engine-core @0x80172B14 (src/shared) */ - - - -s32 func_80172B44(void *a0) { - - extern void (*D_8018E1A4[])(void); - D_8018E1A4[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172B80() /* dedup: shared engine-core @0x80172B80 (src/shared) */ - -DEFINE_func_80172BC8() /* dedup: shared engine-core @0x80172BC8 (src/shared) */ - -DEFINE_func_80172C48() /* dedup: shared engine-core @0x80172C48 (src/shared) */ - -DEFINE_func_80172C50() /* dedup: shared engine-core @0x80172C50 (src/shared) */ - - - -extern void (*D_8018E1B0[])(void); - -void func_80172CA0(void *a0) { - D_8018E1B0[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172CDC() /* dedup: shared engine-core @0x80172CDC (src/shared) */ - -DEFINE_func_80172D14() /* dedup: shared engine-core @0x80172D14 (src/shared) */ - -DEFINE_func_80172D60() /* dedup: shared engine-core @0x80172D60 (src/shared) */ - -DEFINE_func_80172D68() /* dedup: shared engine-core @0x80172D68 (src/shared) */ - - - -s32 func_80172DAC(void *a0) { - - extern void (*D_8018E1BC[])(void); - D_8018E1BC[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172DE8() /* dedup: shared engine-core @0x80172DE8 (src/shared) */ - -DEFINE_func_80172E20() /* dedup: shared engine-core @0x80172E20 (src/shared) */ - -DEFINE_func_80172E8C() /* dedup: shared engine-core @0x80172E8C (src/shared) */ - -DEFINE_func_80172E94() /* dedup: shared engine-core @0x80172E94 (src/shared) */ - -DEFINE_func_80172ED4() /* dedup: shared engine-core @0x80172ED4 (src/shared) */ - -DEFINE_func_80172EFC() /* dedup: shared engine-core @0x80172EFC (src/shared) */ - -DEFINE_func_80172F24() /* dedup: shared engine-core @0x80172F24 (src/shared) */ - -DEFINE_func_80172F4C() /* dedup: shared engine-core @0x80172F4C (src/shared) */ - -DEFINE_func_80172F9C() /* dedup: shared engine-core @0x80172F9C (src/shared) */ - -DEFINE_func_80172FEC() /* dedup: shared engine-core @0x80172FEC (src/shared) */ - -DEFINE_func_8017303C() /* dedup: shared engine-core @0x8017303C (src/shared) */ - - - -s32 func_80173078(void *a0) { - - extern void (*D_8018E1C8[])(void); - D_8018E1C8[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801730B4() /* dedup: shared engine-core @0x801730B4 (src/shared) */ - -DEFINE_func_801730FC() /* dedup: shared engine-core @0x801730FC (src/shared) */ - -DEFINE_func_8017316C() /* dedup: shared engine-core @0x8017316C (src/shared) */ - -DEFINE_func_80173174() /* dedup: shared engine-core @0x80173174 (src/shared) */ - - - -s32 func_8017319C(void *a0) { - - extern void (*D_8018E1D4[])(void); - D_8018E1D4[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801731D8() /* dedup: shared engine-core @0x801731D8 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80147324(s32 a0); -extern void func_80171A1C(u8 *a0); -extern s32 func_80174650(s32); -extern M2C_UNK D_8018E174; - -void func_80173220(void * arg0) -{ - if (M2C_FIELD(arg0, u16 *, 0xB8) & 0x4000) { - func_80147324(0x516); - func_80019064(&D_8018E174); - } - if (M2C_FIELD(arg0, u16 *, 0xB8) & 0x8000) { - func_80171A1C(arg0); - func_80174650(arg0); - } -} - - -DEFINE_func_80173294() /* dedup: shared engine-core @0x80173294 (src/shared) */ - -DEFINE_func_8017329C() /* dedup: shared engine-core @0x8017329C (src/shared) */ - -DEFINE_func_801732C4() /* dedup: shared engine-core @0x801732C4 (src/shared) */ - -DEFINE_func_801732F4() /* dedup: shared engine-core @0x801732F4 (src/shared) */ - -DEFINE_func_8017331C() /* dedup: shared engine-core @0x8017331C (src/shared) */ - -DEFINE_func_8017334C() /* dedup: shared engine-core @0x8017334C (src/shared) */ - -DEFINE_func_80173374() /* dedup: shared engine-core @0x80173374 (src/shared) */ - -DEFINE_func_801733A4() /* dedup: shared engine-core @0x801733A4 (src/shared) */ - -DEFINE_func_801733CC() /* dedup: shared engine-core @0x801733CC (src/shared) */ - - -DEFINE_func_801733FC() /* dedup: shared engine-core @0x801733FC (src/shared) */ - - -DEFINE_func_80173460() /* dedup: shared engine-core @0x80173460 (src/shared) */ - - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_801734BC.c b/src/ov_SC02_003/ov_SC02_003_jr_801734BC.c deleted file mode 100644 index ede9f0bdc..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_801734BC.c +++ /dev/null @@ -1,3913 +0,0 @@ -#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 *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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 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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -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 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_8018E1B0[])(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 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_8018E174; -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); -/* ==== end §8b carried decl layer ==== */ - - -void func_801734BC(s32 arg0, s32 _unused1) { - extern void func_80173544(void); - extern s16 D_80126B40; - - - s16 temp; - switch (((u32)arg0)) { - case 0: temp = -0x4; break; - case 1: temp = -0x8; break; - case 2: temp = -0x12; break; - case 3: temp = -0x18; break; - case 4: temp = -0x1C; break; - default: goto after; - } - D_80126B32 = temp; -after: - D_80126B3E = 0; - D_80126B40 = 0; - func_80174684(&func_80173544); -} - - -extern void (*D_8018E1E0[])(void); - -void func_80173544(void *a0) { - D_8018E1E0[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173580() /* dedup: shared engine-core @0x80173580 (src/shared) */ - -DEFINE_func_801735B8() /* dedup: shared engine-core @0x801735B8 (src/shared) */ - -DEFINE_func_801735EC() /* dedup: shared engine-core @0x801735EC (src/shared) */ - -DEFINE_func_80173648() /* dedup: shared engine-core @0x80173648 (src/shared) */ - -DEFINE_func_801736A8() /* dedup: shared engine-core @0x801736A8 (src/shared) */ - -DEFINE_func_801736B0() /* dedup: shared engine-core @0x801736B0 (src/shared) */ - - - -s32 func_801736FC(void *a0) { - - extern void (*D_8018E1F4[])(void); - D_8018E1F4[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173738() /* dedup: shared engine-core @0x80173738 (src/shared) */ - -DEFINE_func_80173770() /* dedup: shared engine-core @0x80173770 (src/shared) */ - -DEFINE_func_801737B0() /* dedup: shared engine-core @0x801737B0 (src/shared) */ - -DEFINE_func_801737B8() /* dedup: shared engine-core @0x801737B8 (src/shared) */ - - - -s32 func_801737E8(void *a0) { - - extern void (*D_8018E200[])(void); - D_8018E200[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173824() /* dedup: shared engine-core @0x80173824 (src/shared) */ - -DEFINE_func_8017385C() /* dedup: shared engine-core @0x8017385C (src/shared) */ - -DEFINE_func_801738D4() /* dedup: shared engine-core @0x801738D4 (src/shared) */ - -DEFINE_func_801738DC() /* dedup: shared engine-core @0x801738DC (src/shared) */ - - - -s32 func_8017390C(void *a0) { - - extern void (*D_8018E20C[])(void); - D_8018E20C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173948() /* dedup: shared engine-core @0x80173948 (src/shared) */ - -DEFINE_func_80173980() /* dedup: shared engine-core @0x80173980 (src/shared) */ - -DEFINE_func_801739D8() /* dedup: shared engine-core @0x801739D8 (src/shared) */ - -DEFINE_func_80173A20() /* dedup: shared engine-core @0x80173A20 (src/shared) */ - -DEFINE_func_80173A28() /* dedup: shared engine-core @0x80173A28 (src/shared) */ - - -DEFINE_func_80173A60() /* dedup: shared engine-core @0x80173A60 (src/shared) */ - - - -extern void (*D_8018E21C[])(void); - -void func_80173B4C(void *a0) { - D_8018E21C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173B88() /* dedup: shared engine-core @0x80173B88 (src/shared) */ - -DEFINE_func_80173BC0() /* dedup: shared engine-core @0x80173BC0 (src/shared) */ - -DEFINE_func_80173C64() /* dedup: shared engine-core @0x80173C64 (src/shared) */ - -DEFINE_func_80173CB4() /* dedup: shared engine-core @0x80173CB4 (src/shared) */ - -DEFINE_func_80173E1C() /* dedup: shared engine-core @0x80173E1C (src/shared) */ - -DEFINE_func_80173EF8() /* dedup: shared engine-core @0x80173EF8 (src/shared) */ - -DEFINE_func_80174158() /* dedup: shared engine-core @0x80174158 (src/shared) */ - -DEFINE_func_80174188() /* dedup: shared engine-core @0x80174188 (src/shared) */ - -DEFINE_func_801741A8() /* dedup: shared engine-core @0x801741A8 (src/shared) */ - -DEFINE_func_801741EC() /* dedup: shared engine-core @0x801741EC (src/shared) */ - -DEFINE_func_80174274() /* dedup: shared engine-core @0x80174274 (src/shared) */ - -DEFINE_func_8017427C() /* dedup: shared engine-core @0x8017427C (src/shared) */ - - - -s32 func_801742A4(void *a0) { - - extern void (*D_8018E23C[])(void); - D_8018E23C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801742E0() /* dedup: shared engine-core @0x801742E0 (src/shared) */ - -DEFINE_func_80174318() /* dedup: shared engine-core @0x80174318 (src/shared) */ - -DEFINE_func_80174354() /* dedup: shared engine-core @0x80174354 (src/shared) */ - -DEFINE_func_8017435C() /* dedup: shared engine-core @0x8017435C (src/shared) */ - - - -s32 func_80174384(void *a0) { - - extern void (*D_8018E248[])(void); - D_8018E248[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801743C0() /* dedup: shared engine-core @0x801743C0 (src/shared) */ - -DEFINE_func_801743F0() /* dedup: shared engine-core @0x801743F0 (src/shared) */ - -DEFINE_func_80174430() /* dedup: shared engine-core @0x80174430 (src/shared) */ - -DEFINE_func_80174438() /* dedup: shared engine-core @0x80174438 (src/shared) */ - - - -s32 func_80174474(void *a0) { - - extern void (*D_8018E254[])(void); - D_8018E254[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801744B0() /* dedup: shared engine-core @0x801744B0 (src/shared) */ - -DEFINE_func_801744E0() /* dedup: shared engine-core @0x801744E0 (src/shared) */ - -DEFINE_func_80174524() /* dedup: shared engine-core @0x80174524 (src/shared) */ - -DEFINE_func_8017452C() /* dedup: shared engine-core @0x8017452C (src/shared) */ - -DEFINE_func_80174554() /* dedup: shared engine-core @0x80174554 (src/shared) */ - -DEFINE_func_80174584() /* dedup: shared engine-core @0x80174584 (src/shared) */ - -DEFINE_func_801745AC() /* dedup: shared engine-core @0x801745AC (src/shared) */ - -DEFINE_func_801745DC() /* dedup: shared engine-core @0x801745DC (src/shared) */ - -DEFINE_func_80174604() /* dedup: shared engine-core @0x80174604 (src/shared) */ - -DEFINE_func_80174630() /* dedup: shared engine-core @0x80174630 (src/shared) */ - -DEFINE_func_80174650() /* dedup: shared engine-core @0x80174650 (src/shared) */ - - -DEFINE_func_80174674() /* dedup: shared engine-core @0x80174674 (src/shared) */ - -DEFINE_func_80174684() /* dedup: shared engine-core @0x80174684 (src/shared) */ - -DEFINE_func_801746A4() /* dedup: shared engine-core @0x801746A4 (src/shared) */ - -DEFINE_func_801746DC() /* dedup: shared engine-core @0x801746DC (src/shared) */ - -DEFINE_func_80174714() /* dedup: shared engine-core @0x80174714 (src/shared) */ - -DEFINE_func_80174754() /* dedup: shared engine-core @0x80174754 (src/shared) */ - -DEFINE_func_80174764() /* dedup: shared engine-core @0x80174764 (src/shared) */ - -DEFINE_func_80174774() /* dedup: shared engine-core @0x80174774 (src/shared) */ - -DEFINE_func_80174784() /* dedup: shared engine-core @0x80174784 (src/shared) */ - -DEFINE_func_801747AC() /* dedup: shared engine-core @0x801747AC (src/shared) */ - - - -s32 func_801747CC(void *a0) { - - extern void (*D_8018E260[])(void); - D_8018E260[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80174808() /* dedup: shared engine-core @0x80174808 (src/shared) */ - -DEFINE_func_8017481C() /* dedup: shared engine-core @0x8017481C (src/shared) */ - -DEFINE_func_80174824() /* dedup: shared engine-core @0x80174824 (src/shared) */ - -DEFINE_func_8017484C() /* dedup: shared engine-core @0x8017484C (src/shared) */ - - - -s32 func_80174888(void *a0) { - - extern void (*D_8018E268[])(void); - D_8018E268[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801748C4() /* dedup: shared engine-core @0x801748C4 (src/shared) */ - -DEFINE_func_801748E4() /* dedup: shared engine-core @0x801748E4 (src/shared) */ - -DEFINE_func_801748EC() /* dedup: shared engine-core @0x801748EC (src/shared) */ - - - -s32 func_8017496C(void *a0) { - - extern void (*D_8018E270[])(void); - D_8018E270[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_801749A8() /* dedup: shared engine-core @0x801749A8 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (105 ins). Keys: (1) single-buffer struct for the func_80049CAC/func_8012F14C -// out-params (local_2c..local_14 are fields of ONE stack buffer, not separate scalars — else gcc -// DCEs the unread ones + overlaps the buffer -> wrong 0x40 frame); (2) $s2/$s1 pins for iVar5/iVar4 -// (call-crossing saved regs); (3) load D_80126B66 as RAW u16 (lhu) with (s16) sext at each USE — -// this defeats gcc's lhu+sext->lh combine fold so the target's lhu+sll+sra reappears; (4) inline -// `iVar5 = (s16)D_80126B5E` into the f48 expression so the f28 operand load schedules first. - -DEFINE_func_801749C8() /* dedup: shared engine-core @0x801749C8 (src/shared) */ - - -DEFINE_func_80174B6C() /* dedup: shared engine-core @0x80174B6C (src/shared) */ - -DEFINE_func_80174BBC() /* dedup: shared engine-core @0x80174BBC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (27 ins) via func-ptr array fold extern void(*D_8018E274[])() - -extern void (*D_8018E274[])(); - -void func_80174BF4(void * arg0) -{ - M2C_FIELD(arg0, s32 *, 0xC) = 0x12C; - M2C_FIELD(arg0, s32 *, 0x14) = 0x12C; - M2C_FIELD(arg0, s16 *, 0x20) = 0x155; - M2C_FIELD(arg0, s16 *, 0x22) = 0x800; - M2C_FIELD(arg0, s16 *, 0x24) = 0; - M2C_FIELD(arg0, s16 *, 0x2E) = 0; - M2C_FIELD(arg0, s16 *, 0x30) = -0x28; - M2C_FIELD(arg0, s16 *, 0x32) = 0; - M2C_FIELD(arg0, s32 *, 0x54) = 0; - D_8018E274[M2C_FIELD(arg0, u8 *, 4)](); -} - - -DEFINE_func_80174C60() /* dedup: shared engine-core @0x80174C60 (src/shared) */ - -DEFINE_func_80174C80() /* dedup: shared engine-core @0x80174C80 (src/shared) */ - -DEFINE_func_80174CB0() /* dedup: shared engine-core @0x80174cb0 (src/shared) */ - - -DEFINE_func_80174E9C() /* dedup: shared engine-core @0x80174E9C (src/shared) */ - -DEFINE_func_80174ED4() /* dedup: shared engine-core @0x80174ED4 (src/shared) */ - -DEFINE_func_80174EF0() /* dedup: shared engine-core @0x80174EF0 (src/shared) */ - - - -s32 func_80174F28(void *a0) { - - extern void (*D_8018E27C[])(void); - D_8018E27C[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_80174F64() /* dedup: shared engine-core @0x80174F64 (src/shared) */ - -DEFINE_func_80174FBC() /* dedup: shared engine-core @0x80174FBC (src/shared) */ - -DEFINE_func_80175014() /* dedup: shared engine-core @0x80175014 (src/shared) */ - -DEFINE_func_8017509C() /* dedup: shared engine-core @0x8017509C (src/shared) */ - -DEFINE_func_80175114() /* dedup: shared engine-core @0x80175114 (src/shared) */ - -DEFINE_func_80175150() /* dedup: shared engine-core @0x80175150 (src/shared) */ - - -extern void (*D_8018E284[])(void*); -extern s32 func_80175268(s32); - -void func_80175184(s32* arg0) { - u16 v1 = *(u16*)((u8*)arg0 + 2); - if (v1 < 2) { - D_8018E284[v1](arg0); - } else { - func_80175268((s32)arg0); - } -} - - -DEFINE_func_801751D8() /* dedup: shared engine-core @0x801751D8 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (fn-ptr table indexed by D_80078EC0-1; param preserved in $s0 across 1st call) - -extern u8 D_80078EC0; -extern void (*D_8018E28C[])(s32); -extern void func_80146CA0(void *a0); - -s32 func_80175218(void * param_1) -{ - s32 i = D_80078EC0 - 1; - - D_8018E28C[i](param_1); - ((void (*)(s32))func_80146CA0)(param_1); -} - - - -extern u8 D_80078EC0; - -s32 func_80175268(s32 param_1) -{ - - extern VoidFn D_8018E2A4[]; - *(u32 *)(param_1 + 0x44) |= 2; - (*(VoidFn *)((s32)D_8018E2A4 + ((D_80078EC0 - 1) << 2)))(); -} - - -DEFINE_func_801752BC() /* dedup: shared engine-core @0x801752BC (src/shared) */ - -DEFINE_func_80175308() /* dedup: shared engine-core @0x80175308 (src/shared) */ - -DEFINE_func_80175414() /* dedup: shared engine-core @0x80175414 (src/shared) */ - -DEFINE_func_80175454() /* dedup: shared engine-core @0x80175454 (src/shared) */ - -DEFINE_func_80175494() /* dedup: shared engine-core @0x80175494 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (37 ins, relocation-masked proxy) - - - -extern s32 func_80029504(void); - -void func_801754A8(void) { - - extern u8 D_8011F7A8; - extern unsigned char D_800B9A13; - extern s32 D_80126B9C; - extern DispatchFn D_8018E3E8[]; - u8 *p = &D_8011F7A8; - s32 r = func_80029504(); - s32 flag = 0; - - if (((D_800B9A13 == 0) && ((D_80126B9C & 0x80) == 0)) || - (0x4AF < (u32)(r - 10))) { - flag = 1; - } - p[9] = flag; - D_8018E3E8[p[0]]((void *)p); -} - - - -extern void (*D_8018E3F4[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); - -void func_8017553C(s32 *param) { - D_8018E3F4[*(u8 *)((s32)param + 1)](); - ((void (*)(void))func_801758FC)(); - ((void (*)(void))func_80175820)(); - ((void (*)(void))func_801759D8)(); -} - - -DEFINE_func_80175590() /* dedup: shared engine-core @0x80175590 (src/shared) */ - -DEFINE_func_80175624() /* dedup: shared engine-core @0x80175624 (src/shared) */ - -DEFINE_func_80175668() /* dedup: shared engine-core @0x80175668 (src/shared) */ - - -extern void (*D_8018E400[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); - -void func_80175690(s32 *param) { - D_8018E400[*(u8 *)((s32)param + 1)](); - ((void (*)(void))func_801758FC)(); - ((void (*)(void))func_80175820)(); - ((void (*)(void))func_801759D8)(); -} - - -DEFINE_func_801756E4() /* dedup: shared engine-core @0x801756E4 (src/shared) */ - -DEFINE_func_80175798() /* dedup: shared engine-core @0x80175798 (src/shared) */ - -DEFINE_func_801757A0() /* dedup: shared engine-core @0x801757A0 (src/shared) */ - -DEFINE_func_801757E0() /* dedup: shared engine-core @0x801757E0 (src/shared) */ - - -/* func_80175820 — twin of the byte-matched func_801759D8 / func_801758FC in this same TU - * (ov_SC01_077_jr_801734BC). Same three-part body, different slot: - * part 1 tag word = ptr[2] (0x8 vs 0x4 / 0xC) - * part 2 head ptr = D_8011F7A8+0x18 (== D_8011F7C0) - * part 3 tail ptr = D_8011F7A8+0x20 (== D_8011F7C8) - * The two __asm__ memory fences are what keep the three parts from CSE-ing their - * base addresses together (parts 1/2 stay absolute lui/%lo + idx*4; part 3 keeps the - * shared `la $v1,D_8011F7A8` + 0x18/0x20 displacements). - */ - - /* size 0x14 */ - /* size 0x0C */ - -DEFINE_func_80175820() /* dedup: shared engine-core @0x80175820 (src/shared) */ - - -DEFINE_func_801758FC() /* dedup: shared engine-core @0x801758FC (src/shared) */ - - - - /* size 0x14 */ - /* size 0x0C */ - -DEFINE_func_801759D8() /* dedup: shared engine-core @0x801759D8 (src/shared) */ - - - -void func_80175AB8(param_1) - s16 param_1; -{ - /* size 0x0C */ - extern S_AF634 D_800AF634[]; - extern S_AF634 D_800AF638[]; - - extern u8 D_8011F7F0; - extern u16 D_8011F7B4; - extern u16 D_8011F7B6; - extern s16 D_8011F7BC; - extern s16 D_8011F7BE; - extern s32 D_8011F804; - extern u16 D_8011F80A; - extern u16 D_8011F824; - extern u8 D_8011F832; - extern u8 D_8011F83A; - extern u8 *D_8018E31C[]; - - extern u32 *func_80176D94(void *param_1, u32 param_2, s16 param_3_); - extern u32 *func_801770E0(void *param_1, u32 param_2, s16 param_3_); - extern u32 func_801783D0(s32 a0, s32 a1); - extern u32 *func_80177EA4(u32 *param_1, s32 param_2, u32 param_3, s32 param_4); - extern u32 *func_80177B5C(u32 *a0, s32 a1, s32 a2, s32 a3, s32 a4); - extern void func_80177940(u32 *p, u32 a_, u32 b_, u32 c_); - extern u32 *func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); - extern s32 func_80024054(u8*, u8*); - extern s32 func_8005A600(s32, s32, s32, s32, s32); - - u8 local[24]; - u8 *base; - u8 *arr; - u32 *slot; - u32 *p; - register u32 *a0v __asm__("$4"); - u32 uv; - s32 k; - s16 q; - s32 r1; - s32 a2v; - register s32 sum __asm__("$5"); - s32 r2; - s32 idx; - s16 sv; - - p = (u32 *)(D_800AF638[param_1].g0 + D_800AF634[param_1].g0 * 4); - __asm__("" : "=r"(base) : "0"(&D_8011F7F0)); /* L1 */ - arr = base - 0x48; - slot = (u32 *)(param_1 * 4 + (s32)arr); - *(volatile u32 *)&slot[6] = (u32)p; /* L2 */ - p = func_80176D94(p, (s16)(D_8011F7B4 - 0x71), (s16)(D_8011F7B6 + 0x51)); - p = func_801770E0(p, (s16)(D_8011F7B4 - 0x71), (s16)(D_8011F7B6 + 0x65)); - p = func_80177EA4(p, func_801783D0(D_8011F804, 0), - (s16)((*(u16 *)&D_8011F7BC) + 0x39), (s16)((*(u16 *)&D_8011F7BE) + 0x51)); - uv = D_8011F824; - k = 0x3E7; - if (uv < 1000) { - k = uv; - } - sv = (s16)func_801783D0(k, 4); - p = func_80177B5C(p, sv, D_8011F832, - (s16)(*(u16 *)(base - 0x34) + 0x39), - (s16)(*(u16 *)(base - 0x32) + 0x65)); - q = (s16)D_8011F80A / 15; - a2v = (q & 3) * 15; - r1 = func_801783D0((s32)(q << 16) >> 18, 8); - r2 = func_801783D0(a2v, 0); - a0v = p; /* L4 */ - sum = r1 + r2; /* L3 */ - p = ((u32 * (*)(u32 *, s32, s32, s32))func_80177940)( - a0v, (s16)sum, - (s16)(*(u16 *)(base - 0x34) + 0x76), - (s16)(*(u16 *)(base - 0x32) + 0x65)); - idx = D_8011F83A & 0x7F; - D_8011F83A = idx; - __asm__ __volatile__("" ::: "memory"); - ((void (*)(s32, u8 *))func_80024054)(((s32 *)D_8018E31C)[idx], local); - p = func_80178298(p, local, - (s16)(*(u16 *)(base - 0x34) + 0x39), - (s16)(*(u16 *)(base - 0x32) + 0x5B)); - func_8005A600((s32)p, 0, 0, 0x15, 0); - *p = (((u32)p - 0x14) & 0xFFFFFF) | 0x2000000; - slot[8] = (u32)p; - p += 5; - D_800AF634[param_1].g0 += ((s32)p - (s32)slot[6]) >> 2; -} - - - - /* size 0x0C */ -extern u32 *func_8017742C(u32 *a0, s32 a1, s32 a2); -extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_800183E0(s32 a0); - - /* 0x14 */ - -void func_80175DA8(param_1) - u16 param_1; -{ - - extern u8 D_8011F7F0; - extern u8 D_800B9A13; - extern S_AF634 D_800AF634[]; - extern S_AF634 D_800AF638[]; - extern u16 D_8018E2BC[]; - extern u16 D_8018E30C[]; - extern u16 D_8018E318; - extern u8 D_8018E398[]; - extern u8 D_8018E3AC[]; - extern s32 D_8018E3C4[]; - extern u8 D_800D43D4; - extern u8 D_800D4414; - extern u8 D_800D45D4; - - u8 *base = &D_8011F7F0; - u8 *s = base - 0x48; - u16 *src = D_8018E2BC; - Sp_80175DA8 *p; - s16 i; - s32 arg; - s32 t; - s32 fl; - u16 v; - - p = (Sp_80175DA8 *)(D_800AF638[(s16)param_1].g0 + D_800AF634[(s16)param_1].g0 * 4); - *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x28) = p; - i = 0; - do { - p->tag = ((u32)(p - 1) & 0xFFFFFF) | 0x4000000; - p->code = *(u32 *)src; - src += 2; - if (i < 2) { - p->x = *src++ + *(u16 *)(s + 0xC); - p->y = *src++ + *(u16 *)(s + 0xE); - } else if (i == 2) { - p->x = *src++ + *(u16 *)(s + 0x10); - p->y = *src++ + *(u16 *)(s + 0x12); - } else { - p->x = *src++ + *(u16 *)(s + 0x14); - p->y = *src++ + *(u16 *)(s + 0x16); - } - p->uv = *(u32 *)src; - src += 2; - p->wh = *(u32 *)src; - src += 2; - p++; - i++; - } while (i < 5); - - *(u8 *)(s + 7) = D_800B9A13; - p = (Sp_80175DA8 *)func_8017742C((u32 *)p, - (s16)(*(u16 *)(s + 0x10) - 0x98), - (s16)(*(u16 *)(s + 0x12) + 9)); - func_8005A600((s32)p, 0, 0, 0x16, 0); - p->tag = ((u32)(p - 1) & 0xFFFFFF) | 0x2000000; - *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x30) = p; - p++; - { - s32 acc = D_800AF634[(s16)param_1].g0; - D_800AF634[(s16)param_1].g0 = - acc + (((s32)p - *(s32 *)(s + (s16)param_1 * 4 + 0x28)) >> 2); - } - - p = *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x28); - if (base[0x48] != 0) { - *((u8 *)p + 0xD) = 0; - } else { - *((u8 *)p + 0xD) = 0xA0; - } - - { - u8 *q1 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - *(u16 *)(q1 + 0x22) = 0x6CD6; - if (base[0x48] & 0x80) { - *(u16 *)(q1 + 0x20) = D_8018E318; - arg = (s32)&D_800D45D4; - } else { - u16 *tt = D_8018E30C; - s32 k = base[0x48]; - if (k != 0) { - k--; - tt += k; - } - *(u16 *)(q1 + 0x20) = *tt; - arg = D_8018E3C4[base[0x48]]; - } - } - func_800183E0(arg); - - { - u8 *q2 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - t = (s32)(*(u16 *)(base + 0x2E) << 16); - if (t != 0) { - q2[0x49] = D_8018E3AC[t >> 20]; - } else { - q2[0x49] = 0xA0; - } - } - - { - u8 *q3 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - v = *(u16 *)(base + 0x40); - if (v < 100) { - q3[0x5D] = D_8018E398[v / 5]; - } else { - q3[0x5D] = 0; - } - } - - fl = *(s16 *)(base + 0x1E) & 0x8000; - /* §5a zero-byte sched fence: without it sched1 hoists the `la D_800D43D4` - into the lh's load-delay slot, dropping the target's nop (-1 ins). */ - __asm__(""); - arg = (s32)&D_800D43D4; - if (fl != 0) { - arg = (s32)&D_800D4414; - } - func_800183E0(arg); -} - - - -/* func_80176144 — RECONCILED variant of .run/uc/func_80176144.c - * - * GATE BLOCKER (whole-binary build, NOT match_one): - * src/ov_SC01_077/ov_SC01_077_jr_801734BC.c:3476: conflicting types for `D_800AF634' - * || previous declaration at :3296 - * - * ROOT CAUSE — a HOISTED file-scope typedef, not a bad signature: - * That TU hoists, at FILE scope, for func_80175DA8: - * :3295 typedef struct { s32 g0; s32 pad[2]; } S_AF634_80176144; - * :3296 extern S_AF634_80176144 D_800AF634[]; - * :3297 extern S_AF634_80176144 D_800AF638[]; - * The stored draft re-declares the SAME struct shape as a BLOCK-scope typedef - * (rule D — it must travel to the 137 sibling overlays, which have no such - * preamble). A block-scope `typedef struct {...} S_AF634_80176144;` is a DISTINCT type - * from the file-scope one (C has no structural typing), so the block-scope - * `extern S_AF634_80176144 D_800AF634[];` re-declares the symbol incompatibly with the - * in-scope file-scope decl -> hard error. - * Note the earlier block-scope copies in the same TU (:3080 func_80175820, - * :3123 func_801759D8) do NOT error: they precede :3296, so no file-scope decl - * of D_800AF634 is in scope there. Anything AFTER :3296 collides. Our - * definition lands at :3476. That is why only this one fired. - * - * FIX — §37/§124 ASM-LABEL ALIAS applied to the DATA symbols (cookbook §2516: - * "asm-label alias for sibling-decl signedness/proto conflicts ... beats - * reconcile's *(u16*)&D_x cast whose address-of PERTURBS regalloc"): - * the two objects are reached through PRIVATE C identifiers aAF634 / aAF638 - * carrying __asm__("D_800AF634") / __asm__("D_800AF638"). The emitted - * %hi/%lo relocations are against the same symbols, so codegen is unchanged, - * while the C names can never collide with ANY sibling TU's declaration — - * whether hoisted, block-scope, or absent. No header edit; no src/ edit. - * Strictly better than deleting the local decls (which would bind this - * exemplar to the one TU that happens to hoist them). - * - * The s32 parameter + explicit (s16) narrowing is retained from the stored draft - * (canonical decl in engine_core.h:18985/:4587 is `void func_80176144(s32)`; - * the K&R short param would itself be a conflicting-types error). The (s16) - * narrowing IS the entry `sll $s0,$a0,16 / sra $s0,$s0,16` pair. - * - * Verified: python3 tools/match_one.py func_80176144 --c .run/uc2/func_80176144.c - * --asm-subdir ov_SC01_077/nonmatchings/ov_SC01_077_jr_801734BC -> MATCH (53 ins) - */ - -DEFINE_func_80176144() /* dedup: shared engine-core @0x80176144 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (327/327 ins, match_one MATCH; symcheck SYMS-OK 18 symbols) -// -// STRUCTURE (byte-derived, all verified against the .s): -// $s3=st=&D_8011F7A8 (int base), $s1=st+0x48 (cach), $s2=st+0xE0 (flag), $s5=&(*(u8 *)D_80078E78) (src), $s4=param. -// 6 HUD fields synced src->cach with a chg-flag at [flag]: pairs 0x3A/0x3C and 0x3E/0x40, then 0x14(s32), -// 0x34(u16)+0x42(u8), 0x1A(s16), 0x4A(u8). Each: `if (cach==src) { if(!chg) goto skip; chg=0; } else {adjust}` + draw. -// KEY FINDINGS (reusable): -// * Base MUST be `s32`, and the index expr written OFFSET-FIRST (`((p<<16)>>14) + st + 0x18`) — a `u8*` base -// yields `addu rd,st,off`; the target is `addu rd,off,st`. Matches Ghidra's `(...>>0xe) + -0x7fee0840`. -// * buf is 24 bytes, NOT Ghidra's 32: MIPS STARTING_FRAME_OFFSET = outgoing_args_size(20), so get_frame_size() -// counts the 4-byte args-alignment gap. var=MIPS_STACK_ALIGN(4+24)=32 -> 32+24+28 -> 0x58. buf[32] gives 0x60. -// * Block 1 uses RAW GLOBALS (D_8011F82C...) -> absolute lui/%lo; the ne-block uses `st+0x82`/`st+0x11C` -// ($s3-relative) — both byte-confirmed; cse blocks end at labels so each region picks its own form. -// * `ne` pinned to $v0 (+6 aligned). -// -// THE TWO LEVERS THAT CLOSED IT (SESSION-21, both byte-proven here; 18 -> 7 -> 3 -> 1 -> 0): -// (L1) BLOCK-5 STORE DUPLICATED INTO BOTH ARMS (`if (f&1) *(e+0x32A)=0x200; else *(e+0x32A)=...+0x65;`) -// instead of computing a phi `sv` and storing once after the merge. Reason: sched1 is a BACKWARD list -// scheduler and a store is a memory-unit user, so `potential_hazard` floats it to the FRONT of the -// backward ready list => it is EMITTED ~8 insns late, which stretches the `sv`/`e` live ranges over -// $v0/$v1/$a0/$a1 and pushes them out to $a2/$a3. Writing the store in both arms lets cross_jump -// merge the common tail, so the store lands first at the merge label, `sv`->$v0 and `e`->$a0, and the -// `lui $a0` anti-dependence then PINS the schedule. (18 mismatches -> 7.) -// (L2) THE COMMUTATIVE-ADD OPERAND SWAP. Target is `addu $a1,$s0,$v0` = plus(ret1, ret2) into a FRESH -// non-call-crossing quantity that inherits the $a1 arg copy-suggestion. Plain `sum = i6 + i4` lets -// local_alloc TIE the dest to the dying `i6` (which crosses call2) => the whole chain is forced -// call-saved => `addu $s0,$s0,$v0` (3 mismatched). Accumulating (`i4 = i6 + i4`) frees $a1 but -// expand_binop SWAPS a commutative op when target==op1, printing `addu $a1,$v0,$s0` (1 mismatched). -// Fix: route the second call's value through a copy temp first — -// sum = i4; i4 = i6 + sum; -// target(i4) != op1(sum) at EXPAND time so no swap; cse then folds sum back and deletes the copy. -// => `addu $a1,$s0,$v0`. MATCH. -extern u16 D_80078EB2; -extern s16 D_80078EB4; -/* cur base ($s5) */ - -extern void func_80176FF4(s32); -extern void func_80177340(s32); -extern u32 func_801783D0(s32, s32); -extern void func_80177F84(s32, s32); -extern void func_80177DA8(u8 * p, u32 v, s32 idx); -extern void func_80177AD4(int, unsigned int); -extern s32 func_80024054(u8 *, u8 *); -extern u32 *func_80178298(u32*, u8*, short, short); -extern s32 func_8005A600(s32, s32, s32, s32, s32); - -void func_80176218(s32 param_1) -{ - /* [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 u8 D_80078E78[]; - - extern u16 D_8011F82A; - extern u16 D_8011F82C; - extern u16 D_8011F8C4; - extern u8 D_8011F7A8; /* st base ($s3) */ - extern u8 D_8018E398[]; - extern u8 *D_8018E31C[]; - s32 st = (s32)&D_8011F7A8; /* $s3 */ - s32 cach = st + 0x48; /* $s1 */ - s32 flag = st + 0xE0; /* $s2 */ - s32 cur = (s32)&(*(u8 *)D_80078E78); /* $s5 */ - u8 buf[24]; - s32 ne; - s32 t; - u16 sA; - - /* ---- block 1: raw-global pair 0x3A/0x3C ---- */ - sA = D_80078EB2; - t = (sA != D_8011F82A); - if (D_8011F82C == (*(u16 *)&D_80078EB4)) { - ne = t; - if (ne == 0 && D_8011F8C4 == 0) goto L340; - } else { - s32 d = (s16)(D_8011F82C - (*(u16 *)&D_80078EB4)); - u16 nv; - if (d < 0) { - if (d < -10) nv = D_8011F82C + 2; - else nv = D_8011F82C + 1; - } else { - if (d > 10) nv = D_8011F82C - 2; - else nv = D_8011F82C - 1; - } - D_8011F82C = nv; - *(u16 *)(flag + 0x3C) = 1; - *(u16 *)(cach + 0x3A) = *(u16 *)(cur + 0x3A); - goto L328; - } - if (ne) { - *(u16 *)(st + 0x82) = sA; - *(u16 *)(st + 0x11C) = 1; - } else { - *(u16 *)(st + 0x11C) = 0; - } -L328: - func_80176FF4(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18)); -L340: - - /* ---- block 2: pair 0x3E/0x40 ---- */ - sA = *(u16 *)(cur + 0x3E); - t = (sA != *(u16 *)(cach + 0x3E)); - if (*(u16 *)(cach + 0x40) == *(u16 *)(cur + 0x40)) { - ne = t; - if (ne == 0 && *(u16 *)(flag + 0x40) == 0) goto L444; - } else { - s32 d = (s16)(*(u16 *)(cach + 0x40) - *(u16 *)(cur + 0x40)); - u16 nc; - if (d < 0) { - if (d < -10) nc = *(u16 *)(cach + 0x40) + 2; - else nc = *(u16 *)(cach + 0x40) + 1; - } else { - if (d > 10) nc = *(u16 *)(cach + 0x40) - 2; - else nc = *(u16 *)(cach + 0x40) - 1; - } - *(u16 *)(cach + 0x40) = nc; - *(u16 *)(flag + 0x40) = 1; - *(u16 *)(cach + 0x3E) = *(u16 *)(cur + 0x3E); - goto L3E8; - } - if (ne) { - *(u16 *)(cach + 0x3E) = sA; - *(u16 *)(flag + 0x40) = 1; - } else { - *(u16 *)(flag + 0x40) = 0; - } -L3E8: - { - s32 s0b = ((param_1 << 16) >> 14) + st; - u16 cc; - s32 pp; - func_80177340(*(s32 *)(s0b + 0x18) + 0x104); - cc = *(u16 *)(cach + 0x40); - pp = *(s32 *)(s0b + 0x28); - if (cc < 100) - *(u8 *)(pp + 0x5D) = D_8018E398[cc / 5]; - else - *(u8 *)(pp + 0x5D) = 0; - } -L444: - - /* ---- block 3: field 0x14 (s32) ---- */ - if (*(s32 *)(cach + 0x14) == *(s32 *)(cur + 0x14)) { - if (*(s32 *)(flag + 0x14) == 0) goto L4D0; - *(s32 *)(flag + 0x14) = 0; - goto L4A8; - } else { - s32 d = *(s32 *)(cur + 0x14) - *(s32 *)(cach + 0x14); - s32 nd; - if (d > 0) { - if (d < 10) nd = *(s32 *)(cach + 0x14) + 1; - else nd = *(s32 *)(cach + 0x14) + 10; - } else { - if (d < -9) nd = *(s32 *)(cach + 0x14) - 10; - else nd = *(s32 *)(cach + 0x14) - 1; - } - *(s32 *)(cach + 0x14) = nd; - *(s32 *)(flag + 0x14) = 1; - } -L4A8: - { - u32 r = func_801783D0(*(s32 *)(cach + 0x14), 0); - func_80177F84(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 0x208, r); - } -L4D0: - - /* ---- block 4: field 0x34 (u16) + 0x42 (u8) ---- */ - if (*(u16 *)(cur + 0x34) != *(u16 *)(cach + 0x34)) { - *(u16 *)(cach + 0x34) = *(u16 *)(cur + 0x34); - *(u16 *)(flag + 0x34) = 1; - *(u8 *)(cach + 0x42) = *(u8 *)(cur + 0x42); - } else { - if (*(u16 *)(flag + 0x34) == 0) goto L558; - *(u16 *)(flag + 0x34) = 0; - } - { - u16 e = 999; - s16 r; - if (*(u16 *)(cach + 0x34) < 1000) e = *(u16 *)(cach + 0x34); - r = (s16)func_801783D0((s16)e, 4); - func_80177DA8(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 0x294, - (s32)r, *(u8 *)(cach + 0x42)); - } -L558: - - /* ---- block 5: field 0x1A (s16) ---- */ - if (*(s16 *)(cach + 0x1A) != *(s16 *)(cur + 0x1A)) { - *(s16 *)(cach + 0x1A) = *(s16 *)(cur + 0x1A); - *(s16 *)(flag + 0x1A) = 1; - } else { - if (*(s16 *)(flag + 0x1A) == 0) goto L63C; - *(s16 *)(flag + 0x1A) = 0; - } - { - u16 f = *(u16 *)(cach + 0x1A); - s32 e = *(s32 *)(((param_1 << 16) >> 14) + st + 0x18); - s32 i6, i4, sum; - /* L1: the store is written into BOTH arms so cross_jump merges the tail (see header). */ - if (f & 1) *(s16 *)(e + 0x32A) = 0x200; - else *(s16 *)(e + 0x32A) = *(u16 *)(st + 0x16) + 0x65; - { - s32 t = (((s16)f / 15) & 3) * 15; - i6 = func_801783D0(((s16)f / 15) * 0x10000 >> 0x12, 8); - i4 = func_801783D0((t * 0x10000) >> 16, 0); - } - /* L2: copy temp defeats expand_binop's commutative swap; cse folds it back (see header). */ - sum = i4; - i4 = i6 + sum; - ((void (*)(s32, s32))func_80177AD4)(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 800, - i4 * 0x10000 >> 0x10); - } -L63C: - - /* ---- block 6: field 0x4A (u8) ---- */ - if (*(u8 *)(cur + 0x4A) != *(u8 *)(cach + 0x4A)) { - *(u8 *)(cach + 0x4A) = *(u8 *)(cur + 0x4A) & 0x7F; - *(u8 *)(flag + 0x4A) = 1; - } else { - if (*(u8 *)(flag + 0x4A) == 0) return; - *(u8 *)(flag + 0x4A) = 0; - } - { - s32 s0b = ((param_1 << 16) >> 14) + st; - u8 *arg = D_8018E31C[*(u8 *)(cach + 0x4A)]; - u32 *p = (u32 *)(*(s32 *)(s0b + 0x18) + 900); - func_80024054(arg, buf); - p = ((u32 * (*)(u32 *, u8 *, s32, s32))func_80178298)(p, buf, - (s16)(*(u16 *)(st + 0x14) + 0x39), - (s16)(*(u16 *)(st + 0x16) + 0x5B)); - func_8005A600((s32)p, 0, 0, 0x15, 0); - *p = ((u32)((u8 *)p - 0x14) & 0xffffff) | 0x2000000; - *(u32 **)(s0b + 0x20) = p; - } -} - - - -void func_80176734(s32 param_1) -{ - extern u8 D_8011F7A8; /* st base ($s3) */ - extern u8 D_80078E78[]; /* cur base ($s4) */ - extern s16 D_801152BA; - extern u8 D_8011F7B0; /* == *(u8 *)(st + 8), read absolutely (mixed addressing) */ - extern u8 D_80115214; - extern u8 D_8018E3B8[]; - extern u16 D_8018E30A[]; - extern u16 D_8018E318; - extern u8 D_8018E3AC[]; - extern s32 D_8018E3C4[]; - extern u8 D_800D43D4; - extern u8 D_800D4414; - extern u8 D_800D45D4; - extern u8 D_800B9A13; - extern s16 D_80126CE0; - extern s16 D_80126D20; - extern s32 D_80126B58; - extern void func_800183E0(s32 a0); - extern s32 func_801619D0(void *a0); - extern s32 func_80161A00(s32 a0); - extern s32 func_80161A30(s32 a0); - extern s32 func_80161A60(s32 a0); - extern void func_801775E0(s32 param_1, s32 param_2); - - s32 st, cach, flag, cur; - register s32 chg __asm__("$21"); /* L7 */ - register s32 chg2 __asm__("$16"); /* L7 */ - s32 amp; /* $s0, disjoint from chg2 */ - register u16 tgt __asm__("$5"); /* L7 */ - s32 pv; /* L6: the param copy that owns $s6 */ - s32 ix; /* L6: block A's index, hoisted out of the block */ - u8 dum[8]; /* L5: dead frame slot (target .frame vars=8) */ - - st = (s32)&D_8011F7A8; - ix = ((param_1 << 16) >> 14) + st; - pv = param_1; - cach = st + 0x48; - flag = st + 0xE0; - cur = (s32)&(*(u8 *)D_80078E78); - - /* ---- block A: pulse byte ---- */ - { - register s32 p __asm__("$5"); /* L7 */ - u8 *q; - p = *(s32 *)(ix + 0x28); - q = (u8 *)(p + 0x3C); /* L2: must live in the entry BB */ - if (D_801152BA != 0) { - u8 b = D_8011F7B0; /* L1 */ - u8 v; - if (b < 0x80) v = b - 0x80; - else v = ~b - 0x80; - q[4] = v; - *(u8 *)(p + 4) = v; - *(u8 *)(st + 8) = *(u8 *)(st + 8) + D_80115214; - } else { - *(u8 *)(p + 0x40) = 0x80; - *(u8 *)(p + 4) = 0x80; - } - } - - /* ---- block B: 0x48 animation already running ---- */ - if (*(u8 *)(flag + 0x48) != 0) { - register s32 pp __asm__("$5"); /* L7 */ - pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - *(u8 *)(pp + 0xD) = D_8018E3B8[*(u8 *)(flag + 0x48)]; - if (*(u8 *)(flag + 0x48) < 4) { - *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } else { - u8 c = *(u8 *)(cach + 0x48); - s32 q = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - s32 arg; - if (c & 0x80) { - *(u16 *)(q + 0x20) = D_8018E318; - arg = (s32)&D_800D45D4; - } else if (c != 0) { - *(u16 *)(q + 0x20) = D_8018E30A[c]; - arg = D_8018E3C4[*(u8 *)(cach + 0x48)]; - } else { - goto Lskip; - } - func_800183E0(arg); - Lskip: - if (*(u8 *)(flag + 0x48) == 5) { - if (*(u8 *)(cach + 0x48) == 0) *(u8 *)(flag + 0x48) = 0; - else *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } else if (*(u8 *)(flag + 0x48) == 10) { - *(u8 *)(flag + 0x48) = 0; - } else { - *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } - } - /* ---- block C: 0x48 changed -> start the animation ---- */ - } else if (*(u8 *)(cach + 0x48) != *(u8 *)(cur + 0x48)) { - register s32 pp __asm__("$5"); /* L7 */ - u8 k; /* L1: gives the `andi $v1,$v1,0xFF` index mask */ - if (*(u8 *)(cach + 0x48) == 0 && *(u8 *)(cur + 0x48) != 0) - *(u8 *)(flag + 0x48) = 5; - else - *(u8 *)(flag + 0x48) = 0; - *(u8 *)(cach + 0x48) = *(u8 *)(cur + 0x48); - pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - k = *(u8 *)(flag + 0x48); - *(u8 *)(flag + 0x48) = k + 1; - *(u8 *)(pp + 0xD) = D_8018E3B8[k]; - } - - /* ---- block D: field 0x2E (equality-first: the ne-arm must be out of line) ---- */ - if (*(s16 *)(cach + 0x2E) == *(s16 *)(cur + 0x2E)) { - if (*(s16 *)(flag + 0x2E) == 0) goto L9C0; - *(s16 *)(flag + 0x2E) = 0; - } else { - *(s16 *)(cach + 0x2E) = *(s16 *)(cur + 0x2E); - *(s16 *)(flag + 0x2E) = 1; - } - { - s32 pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - s32 t = (s32)(*(u16 *)(cach + 0x2E) << 16); - if (t != 0) *(u8 *)(pp + 0x49) = D_8018E3AC[t >> 20]; - else *(u8 *)(pp + 0x49) = 0xA0; - } -L9C0: - - /* ---- block E: field 0x1E sign flip ---- */ - { - s32 fa = *(s16 *)(cach + 0x1E) & 0x8000; - s32 fb = *(s16 *)(cur + 0x1E) & 0x8000; - if (fa != fb) { - s32 arg; - if (fa != 0) { - *(s16 *)(cach + 0x1E) = 0; - arg = (s32)&D_800D43D4; - } else { - *(s16 *)(cach + 0x1E) = -0x8000; - arg = (s32)&D_800D4414; - } - func_800183E0(arg); - } - } - - /* ---- block F: mode byte -> chg ---- */ - { - u8 m = D_800B9A13; /* L1 */ - if (m != 3) { /* inverted: `chg = 0` belongs out of line */ - register s32 t __asm__("$2"); /* L3a: pin + 2 uses keeps `chg = t` alive */ - t = (*(u8 *)(st + 7) != m); - chg = t; - if (t != 0) *(u8 *)(st + 7) = m; - } else { - chg = 0; - } - } - - /* ---- block G: switch on cur[0x48] (cases 3/4/5 cross-jump onto one tail) ---- */ - amp = 0; - switch (*(u8 *)(cur + 0x48)) { - case 3: - if (func_801619D0(&D_80126B58) != 0) amp = 0xFF; - break; - case 4: - if (func_80161A00((s32)&D_80126B58) != 0) amp = 0xFF; - break; - case 5: - if (func_80161A30((s32)&D_80126B58) != 0) amp = 0xFF; - break; - case 6: - if (func_80161A60((s32)&D_80126B58) != 0) amp = 0xBA; - break; - } - - /* ---- block H: amp != 0 short-circuit ---- */ - { - s32 av; - av = amp; - __asm__("" : "=r"(av) : "0"(av)); /* L3b: keeps the `move $v0,$s0` at the merge */ - if (av != 0) { - *(u8 *)(flag + 0x47) = 1; - *(u8 *)(cach + 0x4B) = *(u8 *)(cur + 0x48) | 0xF0; - *(u8 *)(cach + 0x47) = ((s32)D_80126D20 << 7) / av; - goto Ltail; - } - } - - if (*(u8 *)(cach + 0x4B) >= 0xF0) *(u8 *)(cach + 0x4B) = 0; - - /* ---- block I: target level + change flag. The lhu is unconditional (target loads - both the signed and the unsigned view of D_80126CE0 up front). ---- */ - tgt = *(u16 *)&D_80126CE0; - if (D_80126CE0 != 0) { - u16 v; /* dies at the mask -> destructive `andi $v1,$v1` */ - register s32 t __asm__("$2"); - v = tgt; - *(u8 *)(cach + 0x4B) = v; - t = (*(u8 *)(cach + 0x47) != (v & 0xFF)); - __asm__("" : "=r"(t) : "0"(t)); /* L3b */ - chg2 = t; - } else { - u32 cv = *(u8 *)(cach + 0x47); /* L8: one load, two compares, no re-mask */ - tgt = *(u8 *)(cur + 0x47); - chg2 = 0; - if (cv != tgt || cv == 0x80) chg2 = 1; - if (*(u8 *)(cur + 0x47) != 0 && *(u8 *)(cach + 0x4B) != 0) { - *(u8 *)(cach + 0x4B) = 0; - *(u8 *)(cach + 0x47) = *(u8 *)(cur + 0x47); - } - } - - /* ---- block J: nothing-changed fast path. The target re-tests chg after the flag load; - the fence below is what stops cse from folding that second test away. ---- */ - { - register s32 c __asm__("$3"); - c = chg; - if (chg2 != 0) goto Lbig; - if (c != 0) goto Lbig; - if (*(u8 *)(flag + 0x47) == 0) goto Ltail; - __asm__("" : "=r"(c) : "0"(c)); /* L3b */ - if (c == 0) goto Lzero; - } -Lbig: - /* ---- block K: slew cach[0x47] toward tgt ---- */ - { - u32 c = *(u8 *)(cach + 0x47); - s32 sv = (s16)tgt; /* L8 */ - if ((s32)c < sv) { - *(u8 *)(cach + 0x47) = tgt; - } else { - if (sv != 0) *(u8 *)(cach + 0x47) = c - 3; /* L4: store in BOTH arms */ - else *(u8 *)(cach + 0x47) = c - 8; - c = *(u8 *)(cach + 0x47); /* stays a real lbu because of L4 */ - if (c == 0 || c > 0x80) { - *(u8 *)(cach + 0x47) = 0; - *(u8 *)(cach + 0x4B) = 0; - } else if ((s32)c < (s16)tgt) { /* fresh EBB -> the sll/sra is recomputed */ - *(u8 *)(cach + 0x47) = tgt; - } - } - *(u8 *)(flag + 0x47) = 1; - } - goto Ltail; -Lzero: - *(u8 *)(flag + 0x47) = 0; -Ltail: - - /* ---- block L: tail. m+5 / m+9 are separate temps: `lhu + (m+5)`, not `(lhu + m) + 5`. ---- */ - { - s32 b = ((pv << 16) >> 14) + st; - s32 m = (*(u8 *)(st + 7) != 0) << 8; - s32 m5 = m + 5; - s32 m9 = m + 9; - *(u16 *)(*(s32 *)(b + 0x28) + 0x32) = *(u16 *)(st + 0x12) + m5; - func_801775E0(*(s32 *)(b + 0x28) + 0x64, (s16)(*(u16 *)(st + 0x12) + m9)); - } -} - - -DEFINE_func_80176D00() /* dedup: shared engine-core @0x80176D00 (src/shared) */ - -DEFINE_func_80176D94() /* dedup: shared engine-core @0x80176D94 (src/shared) */ - -DEFINE_func_80176FF4() /* dedup: shared engine-core @0x80176FF4 (src/shared) */ - -DEFINE_func_801770E0() /* dedup: shared engine-core @0x801770E0 (src/shared) */ - -DEFINE_func_80177340() /* dedup: shared engine-core @0x80177340 (src/shared) */ - -DEFINE_func_8017742C() /* dedup: shared engine-core @0x8017742C (src/shared) */ - -DEFINE_func_801775E0() /* dedup: shared engine-core @0x801775E0 (src/shared) */ - - -DEFINE_func_801776EC() /* dedup: shared engine-core @0x801776EC (src/shared) */ - -DEFINE_func_80177784() /* dedup: shared engine-core @0x80177784 (src/shared) */ - -DEFINE_func_801777BC() /* dedup: shared engine-core @0x801777BC (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH -DEFINE_func_801778A8() /* dedup: shared engine-core @0x801778A8 (src/shared) */ - - -DEFINE_func_80177940() /* dedup: shared engine-core @0x80177940 (src/shared) */ - -DEFINE_func_80177AD4() /* dedup: shared engine-core @0x80177AD4 (src/shared) */ - - -/* func_80177B5C - MATCH (147/147 ins), wave23. - * - * Seed: .run/near6/func_80177B5C_ils.c (permuter-improved, closeness 7). - * Two residual clusters remained; both cracked, each by a sourced gcc-2.7.2 mechanism. - * - * CLUSTER C (idx 86-89) - the "cl | ((n*8+8) | 0x4000)" re-association. - * NOT a cse fold. It happens in the FRONT END: fold-const.c fold(), the `associate:` - * arm at :3685. For `A | (X | C)`, split_tree(arg1) (:3759, decomposer at :882) splits - * arg1 into var=X / con=C because TREE_CONSTANT(op1) holds, then rebuilds it as - * `(A | C) | X` at :3785. Verified in the FIRST RTL dump (t.i.rtl insn 215 already - * reads `(ior v1 16384)`), so no RTL-level lever (the cse if/else diamond, tie or - * volatile barriers, operand swap, shift-vs-multiply) can ever reach it. - * ANTIDOTE: hoist the inner IOR into its own statement. The outer arg1 is then a - * VAR_DECL, split_tree returns 0, and the associate arm is skipped. (This function - * already proved the shape at `tt = uv | 0x1000; p[3] = cl | tt;`, which matched.) - * - * That exposed a REGALLOC residual: the chain landed in $a3 (`sll a3,a3,3`) instead - * of $v0. Cause: `n` was pinned to a HARD reg, and local-alloc.c combine_regs():1798 - * unconditionally records a dying hard-reg SOURCE in qty_phys_sugg[] for the dest - * pseudo, so the shift dest inherited $a3. A *pseudo* source cannot do that - :1763 - * bails when reg_qty[ureg] < 0 (i.e. not block-local), and the target's `n` crosses - * the join, so it is exactly such a pseudo. - * ANTIDOTE: move the pin off `n` (which dies into the shift) onto `nn` (the tested - * value). `nn` pinned to $2 keeps the two distinct so the `addu $a3,$v0,$zero` copy - * survives (combine_regs :1841 refuses to tie when the DEST is non-block-local), - * while `n` stays a pseudo and the shift chain gets an ordinary local quantity -> - * $v0 - which also restores the target schedule, because the $v0 anti-dependence on - * `sw $v0,-0x4($a1)` is what stops sched2 hoisting the chain above the store. - * [7 -> 8 -> 3] - * - * CLUSTER B (idx 24-27) - `lui $t0,0x300` two slots early. - * Pure sched1 LUID tie-break, read straight off the -da trace (t.i.sched, T-36): - * ready = { 58 (7f000001), 72 (7f000001), ... } - insn 58 (lui $t0) IS birthing- - * boosted (sched.c birthing_insn_p:2469 works on hard regs too; reg_n_sets[$t0]==1), - * so 58/71/72 all tie at max_priority and rank_for_schedule:2427 falls through to - * DESCENDING LUID. Source order put `ca = 0x3000000;` before the mask, so - * LUID(58) < LUID(72) and the lui was placed first. - * (The companion mask 0xFFFFFF correctly stays at idx 6-7 because lui+ori is TWO - * sets of $t1 -> reg_n_sets==2 -> no boost -> it sinks to the block head. Same - * mechanism, opposite sign - the model predicts both.) - * ANTIDOTE: split the mask into its own statement (`gg`) and materialise the - * constant BETWEEN it and the OR, so expand emits addiu, and, lui, or in that order - * and LUID(58) > LUID(72). Sweeping the plain statement position of `ca = ...` was - * inert (all 11 slots scored 3) - only interposing the temp moves the LUID past the - * AND. [3 -> 0] - * - * Dead ends measured, not guessed: pin nv to $2 = 27; reuse tt = 24; reuse uv = 29; - * two-step |= = 15; unpin n = 84 (146 ins, the copy coalesces away); unpin ca = 139; - * ca as a bare literal = 139 (145 ins - cse merges it with the loop copy, so the hard - * pin is what keeps the pre-loop and in-loop constants separate); both literal = 143; - * `(ca = 0x3000000)` as an assignment-EXPRESSION = 114 (148 ins, extra move); reusing - * the existing `g` for the mask temp instead of a fresh one = 8 (g has a 2nd set later). - */ -u32 *func_80177B5C(p, bits, tbli, x, y) -u32 *p; -u32 bits; -s32 tbli; -s32 x; -s32 y; -{ - - extern u8 D_8018E3E0[]; -register u32 bb __asm__("$14"); - u32 *q; -register u32 v __asm__("$25"); -register u32 cl __asm__("$3"); -register u32 cs __asm__("$5"); -register u32 ca __asm__("$8"); - s16 i; - u32 mk1; - u32 cc1; - u32 flag; -register u32 nn __asm__("$2"); - u32 n; -register u32 t __asm__("$13"); - u32 col; - u32 uv; - u32 tt; - u32 nv; - u32 x1; - u32 x2; - u32 w; - u32 g; - u32 gg; - u32 w3; -register u32 yr __asm__("$16"); -register u32 yt __asm__("$4"); -register u32 tr __asm__("$21"); -register u32 xr __asm__("$17"); -register u32 c3 __asm__("$18"); -register s32 ff __asm__("$19"); -register s32 two __asm__("$20"); - yt = y; - tr = tbli; -__asm__("" : "=r"(tr) : "0"(tr)); - xr = x; -__asm__("" : "=r"(xr) : "0"(xr)); - mk1 = 0xFFFFFF; - cc1 = 0x74808080; - bb = bits; - t = x + 0xE; - flag = 0x1000000; - i = 0; - two = 2; - ff = 255; - ; - v = D_8018E3E0[(s16) tbli]; - gg = ((u32) (p - 5)) & mk1; - ca = 0x3000000; - p[0] = gg | ca; - x1 = (x - 3) & 0xFFFF; - x2 = (x + 5) & 0xFFFF; - p[1] = cc1; - yr = yt; -__asm__("" : "=r"(yr) : "0"(yr)); - yt = (s16) yt; - cs = (yt + 1) << 16; - w = cs | x1; -__asm__("" : "=r"(w) : "0"(w)); - cl = ((v << 6) | 0x4016) << 16; - p[2] = w; - p[3] = cl | 0x1800; - p += 5; - p[0] = (((u32) (p - 5)) & mk1) | ca; - p[1] = cc1; - p[2] = cs | x2; - p[3] = cl | 0x1808; - p += 5; - q = p; - yt = yt << 16; - { - for (; i < 3; i++) - { - nn = ((bb << 16) >> 18) >> 10; - n = nn; - if (((nn != 0) || (i == two)) || (i == ff)) - { - flag = 0; - } - q[0] = (((u32) (q - 5)) & 0xFFFFFF) | 0x3000000; - q[2] = (yt | (t & 0xFFFF)) | flag; - col = 0x74808080; - q[1] = col; - nv = ((n * 8) + 8) | 0x4000; - q[3] = cl | nv; - q += 5; - t += 8; - bb <<= 4; - } - - } - p = q; -__asm__("" : "=r"(v) : "0"(v)); - g = (((u32) (p - 5)) & 0xFFFFFF) | 0x3000000; -__asm__ __volatile__(""); - cs = yr << 16; - p[0] = g; - w3 = cs | ((xr + 0x2A) & 0xFFFF); -__asm__ __volatile__(""); - cl = ((v << 6) | 0x4016) << 16; - uv = ((s16) tr) << 4; - p[2] = w3; - tt = uv | 0x1000; - p[1] = col; - p[3] = cl | tt; - p += 5; - p[0] = (((u32) (p - 5)) & 0xFFFFFF) | 0x3000000; -__asm__ __volatile__(""); - cs = cs | ((xr + 0x32) & 0xFFFF); - uv = uv | 0x1008; - cl = cl | uv; - p[1] = col; - p[2] = cs; - p[3] = cl; - p += 5; -__asm__("" :: "r"(tr), "r"(xr)); - return p; -} - - - - -void func_80177DA8(p, v, idx) -u8 *p; -u32 v; -s16 idx; -{ - - extern u8 D_8018E3E0[]; - u8 *r; - u16 c; - u16 flag; - u32 n; - u8 m; - s16 i; - u8 t; - u32 x; - u32 uv; - u32 w1; - u32 w2; - - flag = 0x100; - i = 0; - t = D_8018E3E0[idx]; - c = (t << 6) | 0x4016; - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - r = p; - do { - n = (v << 16) >> 28; - m = n; - if (n != 0 || i == 2 || i == 0xFF) { - flag = 0; - } - v <<= 4; - i++; - *(s16 *)(r + 0xA) = flag | (*(s16 *)(r + 0xA) & ~0x100); - *(u8 *)(r + 0xC) = m * 8 + 8; - r += 0x14; - } while (i < 3); - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - x = ((t << 6) | 0x4016) << 16; - uv = idx << 4; - w1 = uv | 0x1000; - *(u32 *)(p + 0xC) = x | w1; - w2 = uv | 0x1008; - *(u32 *)(p + 0x20) = x | w2; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -DEFINE_func_80177EA4() /* dedup: shared engine-core @0x80177EA4 (src/shared) */ - - -DEFINE_func_80177F84() /* dedup: shared engine-core @0x80177F84 (src/shared) */ - - - -DEFINE_func_80178004() /* dedup: shared engine-core @0x80178004 (src/shared) */ - - -DEFINE_func_80178298() /* dedup: shared engine-core @0x80178298 (src/shared) */ - -DEFINE_func_801783D0() /* dedup: shared engine-core @0x801783D0 (src/shared) */ - -extern M2C_UNK D_801E660C; - -void func_80178438(u16 *arg0) { - func_8001534C(2, &D_801E660C, 0x80, 0x88, 0, 0); - func_800153CC(3, *arg0, 0xA8, 0x88, 0x40, 0); -} - - -DEFINE_func_8017849C() /* dedup: shared engine-core @0x8017849C (src/shared) */ - -DEFINE_func_80178608() /* dedup: shared engine-core @0x80178608 (src/shared) */ - -DEFINE_func_8017869C() /* dedup: shared engine-core @0x8017869C (src/shared) */ - -DEFINE_func_80178744() /* dedup: shared engine-core @0x80178744 (src/shared) */ - -DEFINE_func_801787D4() /* dedup: shared engine-core @0x801787D4 (src/shared) */ - - -// @class: regalloc-order -// @stuck: sll $v0,$s1,2 must be recomputed AFTER the call (target nops the delay slot) - -extern void func_80019064(void *a0); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); - - -void func_80178840(int param_1) { - - extern int D_8018E440; - extern int D_8018E44C[]; - register int p __asm__("$16"); - register int s1byte __asm__("$17"); - p = param_1; - if ((*(unsigned short *)(p + 0x5c) & 1) != 0) { - s1byte = *(unsigned char *)(p + 0x5e); - if (s1byte == 0xc) { - ((void (*)(int))func_80019064)((int)&D_8018E440); - } - ((void (*)(int, int))func_80131E00)(p, D_8018E44C[s1byte]); - } -} - - -DEFINE_func_801788B8() /* dedup: shared engine-core @0x801788B8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (result pinned to $v0 forces call-result copy to $v1 + delay-slot zero) - -extern s32 func_801789AC(s32 arg0); -extern s16 D_801E87BC; - -int func_80178970(void) -{ - register int r __asm__("$2"); - int v; - - v = ((s32 (*)(void))func_801789AC)(); - r = 0; - if (v != 0) - r = D_801E87BC == 0; - return r; -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_801789AC.c b/src/ov_SC02_003/ov_SC02_003_jr_801789AC.c deleted file mode 100644 index 54d039008..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_801789AC.c +++ /dev/null @@ -1,2773 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -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_8018E1B0[])(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_8018E174; -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 struct S80126B38 D_80126B38; -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018E1E0[])(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_8018E21C[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern s16 D_80126B3A; -extern s16 D_8011F9C8; -extern s32 func_800D0EC4(void); -extern void func_8013E588(void*); -extern void func_80173BC0(u8* a0); -extern void func_80173C64(u8 *a0); -extern u8 D_800D5DB8; -extern void func_80173CB4(s32 a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -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 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 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_80174684(void* a0); -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 s32 func_80012ABC(s32, s32, s32); -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_8018E274[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern s32 func_80174CB0(s32 param_1, s32 param_2); -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_8018E284[])(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_8018E28C[])(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_8011F7AE; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F7B8; -extern s16 D_8011F7BA; -extern s16 D_8011F7BC; -extern s16 D_8011F7BE; -extern s16 D_800B9A02; -extern void func_80016714(void *, s32); -extern void func_801757A0(s32); -extern void func_800596F4(s32); -extern void func_80175308(void); -extern u8 D_8011F7AD; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018E3F4[])(); -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 void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018E400[])(); -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 u8 D_80078E78[]; /* cur base ($s5) */ -extern void func_80176FF4(s32); -extern void func_80177340(s32); -extern u32 func_801783D0(s32, s32); -extern void func_80177F84(s32, s32); -extern void func_80177DA8(u8 * p, u32 v, s32 idx); -extern void func_80177AD4(int, unsigned int); -extern s32 func_80024054(u8 *, u8 *); -extern u32 *func_80178298(u32*, u8*, short, short); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_80176218(s32 param_1); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -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(); -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 u8 D_8011F83B; -extern void func_801776EC(u8 *a0); -extern void func_801775E0(s32 param_1, s32 param_2); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern void * func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80177940(u32 *p, u32 a_, u32 b_, u32 c_); -extern void func_80177AD4(int param_1, unsigned int param_2); -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_801E660C; -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 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_801E87BC; -extern int func_80178970(void); -/* ==== end §8b carried decl layer ==== */ - - - -extern void func_8017BC38(int a0); -extern void func_8017A4AC(void); -extern void func_8017AE2C(s32 a0); -extern s32 func_801399F0(s32 a0); -extern void func_80178CBC(s32 a0, s32 a1); - -extern short D_801E8864; -extern s32 D_801E7F68; -extern s32 D_801E8684; -extern s32 D_801E7B54; -extern s32 D_801E7F94; -extern s32 D_801E7B50; - -s32 func_801789AC(s32 arg0) -{ - s32 ret; - - func_8017BC38(arg0); - func_8017A4AC(); - func_8017AE2C(arg0); - - switch ((s16)(D_801E8864 - 1)) { - case 0: - ret = func_801399F0(D_801E7F68); - D_801E8684 = ret; - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801E7B50); - break; - case 1: - ret = func_801399F0(D_801E7F68); - D_801E8684 = ret; - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801E7B50); - break; - case 2: - func_80178CBC(arg0, D_801E7B50); - break; - case 3: - if (--D_801E7B54 > 0) { - break; - } - func_80178CBC(arg0, D_801E7B50); - break; - case 4: - ret = ((s32 (*)(s32))D_801E7F94)(arg0); - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801E7B50); - break; - case 5: - switch (D_801E8684) { - case -1: - case 1: - return 1; - case 2: - return 2; - case 3: - return 3; - } - break; - } - return 0; -} - -// @class: struct -// @stuck: none — MATCH (pointer var forces &(*(int *)&D_8018E538) into $s0, reused for store + arg-0xC) - - - -s32 func_80178B18(s32 param_1, s32 param_2) -{ - extern void func_80178BF8(void); - extern void func_80178CBC(s32 arg0, s32 arg1); - extern u16 D_8018E538; - - int *p = &(*(int *)&D_8018E538); - *p = ((int)param_2); - func_80178BF8(); - func_801746A4(); - func_8017435C(); - ((void (*)(int, void *))func_80178CBC)(((int)param_1), (char *)p - 0xC); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (pending verify) - -s32 func_80178B70(s32 param_1, s32 param_2) -{ - extern void func_80178BF8(); - extern void func_80178CBC(); - extern int D_8018E538; - - int *p = &D_8018E538; - *p = ((int)param_2); - func_80178BF8(); - func_80178CBC(((int)param_1), p - 3); -} - - - -DEFINE_func_80178BB8() /* dedup: shared engine-core @0x80178BB8 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (49 ins). Key: init loop pointers via &D_SYMBOL (not (T*)0x801da788 raw int, which emits lui+ori instead of lui%hi+addiu%lo). - - - -s32 func_80178BF8() -{ - extern void func_8017B1D8(void); - extern short D_801E8864; - extern int D_801E7F68; - extern short D_801E7F78; - extern short D_801E7F74; - extern short D_801E7F70; - extern short D_801E7F6C; - extern int D_801E8684; - extern int D_801E7F80; - extern s16 D_801E7F60; - extern short D_801E7F58; - extern short D_801E7F5C; - extern int D_801E8758; - extern unsigned int D_801E7FD0; - extern unsigned short D_801E7F56; - - unsigned short *puVar1; - int iVar2; - unsigned int *puVar3; - - iVar2 = 9; - puVar3 = &D_801E7FD0; - D_801E8864 = 0; - D_801E7F68 = 0; - D_801E7F78 = 0; - D_801E7F74 = 0; - D_801E7F70 = 0; - D_801E7F6C = 0; - D_801E8684 = 1; - D_801E7F80 = 0; - (*(short *)&D_801E7F60) = 0; - do { - *puVar3 = 0; - iVar2 = iVar2 + -1; - puVar3 = puVar3 + -1; - } while (-1 < iVar2); - iVar2 = 0x1ff; - puVar1 = &D_801E7F56; - do { - *puVar1 = 0; - iVar2 = iVar2 + -1; - puVar1 = puVar1 + -1; - } while (-1 < iVar2); - D_801E7F58 = 0; - D_801E7F5C = 0; - ((void (*)(int *, int))func_80016714)(&D_801E8758, 0x14); - func_8017B1D8(); -} - - - -extern s32 D_801E7B50; -extern short D_801E8864; - -void func_80178CBC(s32 arg0, s32 arg1) { - D_801E7B50 = arg1; - do { - func_80178D40(arg0, D_801E7B50); - } while (D_801E8864 == 3); -} - - - -extern short D_801E8864; -extern void func_80174714(void); - -void func_80178D18(void) { - D_801E8864 = 0; - func_80174714(); -} - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80178D40.c b/src/ov_SC02_003/ov_SC02_003_jr_80178D40.c deleted file mode 100644 index 8fc5081f4..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80178D40.c +++ /dev/null @@ -1,3521 +0,0 @@ -#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 *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(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_8018E1B0[])(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_8018E174; -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_8018E1E0[])(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_8018E21C[])(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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -/* ==== end §8b carried decl layer ==== */ - - -/* func_80178D40 - 890 ins, 94-case jr switch (jtbl_801D8E24). - * STATUS: **MATCH** -- 890/890 ins, byte-exact (masked). PIN-FREE (this body is - * templated across 134 overlays; a pinned body would crash the sibling TUs). - * python3 tools/match_one.py func_80178D40 --c .run/phase26-cracks/func_80178D40.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_801734BC - * => MATCH (890 ins) - * Jump table VERIFIED: 94 entries (= the sltiu 0x5E bound, no trailing zero pad), - * 93 unique blocks, cases 0xF/0x3F share one block; my case->block sequence is - * identical to jtbl_801D8E24's. - * - * Byte-derived structure (the levers that cracked it): - * 1. NO status variable. Every case stores `(*(s16*)&D_801E8864) = K` DIRECTLY. The shared - * `sh $v0, (*(s16*)&D_801E8864)` at .L80179AEC is a jump2 CROSS-JUMP merge of those stores: - * find_cross_jump's FIRST call (minimum=1, vs the code before the target label) - * matches that 1 insn, and because it succeeds the jump_chain loop (minimum=2) is - * SKIPPED -- which is what BLOCKS the deeper, wrong 3-insn merges of the identical - * func_80137614 tails (cases 0/0x45/0x32). reorg then steals the `li K` back into - * each `j` delay slot, so it looks un-merged. A `status` pseudo instead of direct - * stores loses that block and costs 6 insns. - * 2. after-switch = `D_801E7B50 += 8;` (.L80179AF4) -> the out-of-range default lands - * there with NO explicit `default:` label. - * 3. arg0/arg1/pv are STRUCT pointers. gcc-2.7.2 sched alias (sched.c true_dependence) - * only lets a MEM_IN_STRUCT varying-address load hoist above a non-MEM_IN_STRUCT - * fixed-address store (the (*(s16*)&D_801E8864) store). Raw `*(T *)(int + off)` casts get - * MEM_IN_STRUCT_P = 0 and block that hoist -> stray nops. - * 4. g = &D_801E8758 stays a plain `s16 *` (NOT a struct ptr) so its varying, - * non-in-struct stores keep their order w.r.t. the loads. - * 5. Statement order inside the D_801E8758 cases is load-bearing (sched LUID/priority): - * g[0],g[2],g[1] in 0x25/0x48/0x26; g[7],g[8],g[1],g[3] in 0x4F/0x28. - * 6. Cases 0x5B/0x5C: the loops "found" bodies are emitted BEFORE the case label -> - * source-level labels placed between cases + `goto`. - * 7. Per-case temporaries are BLOCK-LOCAL (local-alloc), not function-scope. - * 8. stack locals declared in slot order (0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48, - * 0x50,0x58,0x60) -> frame 0x78. - * - * Case 0x5C -- the last 39 residuals. Four levers, all generalizable: - * - * 9. NO-PEEL: a `break` out of a do-while whose target COINCIDES with the loop's own - * natural fall-through exit makes NOTE_INSN_LOOP_BEG be followed by an - * unconditional jump -> jump.c `duplicate_loop_exit_test` (jump.c:599/2131) rotates - * the loop and peels iteration 1 (here `i` was provably 0, so the peeled `i++` - * const-folded to `li $a2,1` and dragged an extra lui/addiu/lw address block with - * it). Writing `goto L5D;` instead of `break;` -- SAME destination, different - * construct -- keeps the loop a plain do-while and the peel disappears. - * RULE: never let a loop's `break` land on the loop's own fall-through label. - * - * 10. SURVIVING REG-REG COPY (residual #1, `addu $v1,$v0,$zero`). A source-level - * `fp = q;` copy ALWAYS dies: cse.c `canon_reg` rewrites every later use of `fp` - * to `q` (qty_first_reg keeps the older reg) and flow deletes the now-dead set. - * To make a copy SURVIVE, its def and its uses must sit in different extended basic - * blocks -- cse resets its hash table at a label with >1 predecessor (a loop top). - * So: TEST THE MEM DIRECTLY, then assign the variable inside the branch body: - * if (arg1->a.w != 0) { fp5c = arg1->a.w; ... do { ... fp5c ... } while (); } - * cse folds the redundant 2nd load into `fp5c = ` (a copy) in the guard - * block, but CANNOT propagate it into the loop body -> the copy is emitted. - * (Assigning `fp5c` BEFORE the test gives one pseudo and no copy -- what we had.) - * - * 11. CROSS-JUMP-MERGED `(*(s16*)&D_801E8864) = 3` (residual #2). `if (i != 10) { (*(s16*)&D_801E8864) = 3; - * break; }` lets jump2 tail-merge the `lui/sh` into the shared .L80179AEC tail and - * reorg steal the `li 3` into the `bne` delay slot. Storing it unconditionally - * BEFORE the `if` blocks the merge and costs 3 inline insns. - * - * 12. THE UN-COALESCED LOOP COPY (residual #3, `addu $v1,$a0,$zero` + `addiu $a0,$v1,4`). - * This is loop.c's NON-REPLACEABLE DEST_REG GIV, not a source-level copy (see #10: - * those always die). Recipe -- BOTH halves are needed: - * a) make the pointer an INDEX GIV: `p5c = &D_801E7FAC[i5c];` (a DEST_REG giv) - * b) make it NON-replaceable so loop.c emits `emit_insn_after(move dest,new_reg)` - * (loop.c:3945): record_giv (loop.c:4437) needs the giv used OUTSIDE the loop - * -- so the "found" body goes AFTER the loop and stores through `p5c`. - * c) put the BIV increment (`i5c++`) LAST in the body. loop.c inserts the reduced - * giv's `addiu` immediately BEFORE the biv's increment insn, so `i5c++` at the - * bottom puts `addiu $a0,$v1,4` in the loop-back delay slot. With `i5c++` at - * the TOP the giv-add lands at the top, nothing is left to fill the delay slot, - * and reorg STEALS the loop-top `move` into it (duplicating it: +1 insn). - * - * 13. Loop3 needs its OWN pointer pseudo (`r5c`, not `q5c`). `q5c` is loop1's pointer, - * and in loop1 $v1 is held by `fp5c` -> q5c is forced to $a0, and loop3 inherits it. - * Both "found" bodies then read $a0, become identical, and jump2 CROSS-JUMPS them - * into one block (-2 insns). A distinct pseudo frees loop3 into $v1, so found3 - * (`sw $zero,0($v1)`) differs from found2 (`sw $zero,0($a0)`) and they stay separate. - * RULE: two structurally identical loops must differ in REGISTER, or cross_jump - * merges their tails. - */ - - - - - - -s32 func_80178D40(s32 arg0, s32 arg1) -{ - extern void func_80179B28(s32); - extern s32 func_80137614(s32, s32, s32); - extern void func_8012F214(void *, void *, void *); - extern void func_8012F40C(void *, void *); - extern void func_80179D30(void *); - extern void func_80179D78(void *); - extern void func_80179EA0(void *); - extern void func_80179DCC(s32); - extern void func_80179DF8(void); - extern void func_80179E1C(s32); - extern void func_80179E48(s32); - extern void func_80179E74(s32); - extern void func_80179EE8(s32); - extern void func_80179F14(s32, s32); - extern void func_80179F44(void); - extern void func_80179F6C(s32); - extern void func_80179F98(s32); - extern void func_80179FEC(s32); - extern void func_8017A040(s32); - extern void func_8017A094(s32); - extern void func_8017A0C4(s32); - extern void func_8017A0F4(void); - extern void func_8017A11C(void); - extern void func_8017A144(s32); - 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 void func_8017A3B0(void); - extern void func_8017A3D8(void); - extern void func_8017AD0C(s32); - extern void func_8017B238(void *, s32); - extern void func_8017B614(void *, s32); - extern void func_8017B7A8(void *); - extern void func_8017B824(void); - extern void func_8017B880(void); - extern void func_8017B940(void *); - extern void func_8017BA3C(void *, s32); - extern void func_8017BB34(void *, s32); - extern void func_8012A828(void *, s32); - extern s32 func_8012B8A4(void *); - extern void func_8012E88C(void *); - extern void func_8012E8A8(void *); - extern void func_8001AAD0(s32, s32); - extern s32 D_801E7B54; - extern s32 D_801E7F68; - extern s16 D_801E7F6C; - extern s16 D_801E7F70; - extern s16 D_801E7F74; - extern s16 D_801E7F78; - extern s32 D_801E7F80; - extern s32 D_801E7F84; - extern s32 D_801E7F94; - extern s16 D_801E7F98; - extern s16 D_801E7F9C; - extern s32 D_801E7FA0; - extern s32 D_801E7FA8; - extern s32 D_801E7FAC[10]; - extern s32 D_801E8680; - extern s16 D_801E8758; - extern s32 D_801E87B8; - - - SV3_80178D40 v10, v18, v20, v28, v30, v38, v40, v48; - s32 out50[2]; - SV3_80178D40 v58, v60; - Actor_80178D40 *pv = &(*(Actor_80178D40*)&D_80126B58); - s32 i5b, i5c, fp5b, fp5c; - s32 *q5b, *q5c, *p5c, *r5c; - s16 *g = &D_801E8758; - - switch (((Cmd_80178D40 *)arg1)->op) { - case 1: - func_80179B28(D_801E7F68); - D_801E7F68 = func_80137614(((Cmd_80178D40 *)arg1)->a.w, D_801E7F74, D_801E7F78 ? 0x48 : 0x40); - (*(s16*)&D_801E8864) = 2; - break; - case 0: - func_80179B28(D_801E7F68); - D_801E7F68 = func_80137614(((Cmd_80178D40 *)arg1)->a.w, D_801E7F6C, D_801E7F70 ? 0x48 : 0x40); - (*(s16*)&D_801E8864) = 1; - break; - case 0x45: - ((void (*)(s32))((Cmd_80178D40 *)arg1)->a.w)(((Actor_80178D40 *)arg0)); - if (D_801E8680 != 0) { - func_80179B28(D_801E7F68); - D_801E7F68 = func_80137614(((Actor_80178D40 *)arg0)->unkDC[1], D_801E7F6C, D_801E7F70 ? 0x48 : 0x40); - (*(s16*)&D_801E8864) = 1; - } else { - (*(s16*)&D_801E8864) = 3; - } - break; - case 0x32: - func_80179B28(D_801E7F68); - D_801E7F68 = func_80137614(((Actor_80178D40 *)arg0)->unkDC[((Cmd_80178D40 *)arg1)->a.w], D_801E7F6C, - D_801E7F70 ? 0x48 : 0x40); - (*(s16*)&D_801E8864) = 1; - break; - case 2: - func_80179B28(D_801E7F68); - if (D_801E7F80 != 0) { - D_801E7B50 = D_801E7F80; - D_801E7F80 = 0; - (*(s16*)&D_801E8864) = 3; - return; - } - (*(s16*)&D_801E8864) = 6; - break; - case 6: - func_80179DF8(); - (*(s16*)&D_801E8864) = 3; - break; - case 3: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_80179D30(&v10); - (*(s16*)&D_801E8864) = 3; - break; - case 4: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v10, &v18); - func_80179D30(&v18); - (*(s16*)&D_801E8864) = 3; - break; - case 0x4C: - func_80179D78((void *)((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x4D: - v10.vx = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f0; - v10.vy = 0; - v10.vz = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f4; - func_8012F214(((Actor_80178D40 *)arg0), &v10, &v18); - v18.pad = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f6; - func_80179D78(&v18); - (*(s16*)&D_801E8864) = 3; - break; - case 0x15: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0)->unkD4, &v10, &v18); - func_80179D30(&v18); - (*(s16*)&D_801E8864) = 3; - break; - case 5: - func_80179DCC(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E8864) = 3; - break; - case 7: - func_80179E1C(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E8864) = 3; - break; - case 8: - func_80179E74(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E8864) = 3; - break; - case 9: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_80179EA0(&v10); - (*(s16*)&D_801E8864) = 3; - break; - case 0xA: - v10.vx = ((Actor_80178D40 *)arg0)->unk6; - v10.vy = ((Actor_80178D40 *)arg0)->unkA; - v10.vz = ((Actor_80178D40 *)arg0)->unkE; - func_80179EA0(&v10); - (*(s16*)&D_801E8864) = 3; - break; - case 0x16: { - Actor_80178D40 *p = ((Actor_80178D40 *)arg0)->unkD4; - v10.vx = p->unk6; - v10.vy = p->unkA; - v10.vz = p->unkE; - func_80179EA0(&v10); - (*(s16*)&D_801E8864) = 3; - break; - } - case 0xB: - func_8017A0F4(); - (*(s16*)&D_801E8864) = 3; - break; - case 0xC: - func_8017A11C(); - (*(s16*)&D_801E8864) = 3; - break; - case 0xD: - func_8017A180(); - (*(s16*)&D_801E8864) = 3; - break; - case 0xE: - func_8017A1A8(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x10: - func_8017A1D0(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x46: - func_8017A1F8(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x59: - func_8017A220(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x5A: - func_8017A248(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x49: - func_8017A144(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x47: - func_8017A270(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x17: - func_80179EE8(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E8864) = 3; - break; - case 0x18: - func_80179F14(((Cmd_80178D40 *)arg1)->a.h[0], ((Cmd_80178D40 *)arg1)->a.h[1]); - (*(s16*)&D_801E8864) = 3; - break; - case 0x19: - func_80179F6C(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E8864) = 3; - break; - case 0x1A: - func_80179F98(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x51: - func_8017A040(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x1B: - D_801E7FA0 = ((Cmd_80178D40 *)arg1)->a.w; - func_80179F44(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x1C: - func_8017A338(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x52: - func_8017A360(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x1D: - func_8017A388(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x3B: - func_8017A094(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x3C: - func_8017A0C4(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0xF: - case 0x3F: - (*(s16*)&D_801E8864) = 4; - D_801E7B54 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x3E: - (*(s16*)&D_801E8864) = 5; - D_801E7F94 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x40: - D_801E7F94 = (s32)func_8017A3B0; - (*(s16*)&D_801E8864) = 5; - break; - case 0x23: - func_8012A828(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x31: - func_8012A828(((Actor_80178D40 *)arg0), ((Actor_80178D40 *)arg0)->unkDC[((Cmd_80178D40 *)arg1)->a.w]); - (*(s16*)&D_801E8864) = 3; - break; - case 0x24: - (*(s16*)&D_801E8864) = 3; - ((Actor_80178D40 *)arg0)->unk20->unk12 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x25: - g[0] = 1; - g[2] = ((Actor_80178D40 *)arg0)->unk20->unk12 + ((Cmd_80178D40 *)arg1)->a.uh[0]; - g[1] = 0x1E; - (*(s16*)&D_801E8864) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x48: - g[0] = 1; - g[2] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - g[1] = 0x1E; - (*(s16*)&D_801E8864) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x26: - g[0] = 1; - g[2] = func_8012B8A4(((Actor_80178D40 *)arg0)); - g[1] = 0x1E; - (*(s16*)&D_801E8864) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x3D: - ((void(*)(void *, s32))func_8012E8E0)(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x27: - g[0] = 2; - g[4] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801E8864) = 3; - g[1] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x4F: - g[5] = 1; - g[0] = 3; - g[6] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801E8864) = 3; - g[7] = ((Actor_80178D40 *)arg0)->unkA; - g[8] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - g[1] = 0x10; - g[3] = 4; - /* fallthrough */ - case 0x28: - g[5] = 0; - g[0] = 3; - g[6] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801E8864) = 3; - g[7] = ((Actor_80178D40 *)arg0)->unkA; - g[8] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - g[1] = 0x10; - g[3] = 4; - break; - case 0x29: - v20.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v20.vy = ((Actor_80178D40 *)arg0)->unkA; - v20.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v20, &v28); - g[5] = 0; - g[0] = 3; - *(SV3_80178D40 *)(g + 6) = v28; - g[1] = 0x10; - g[3] = 4; - (*(s16*)&D_801E8864) = 3; - break; - case 0x50: - v30.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v30.vy = ((Actor_80178D40 *)arg0)->unkA; - v30.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v30, &v38); - g[5] = 1; - g[0] = 3; - *(SV3_80178D40 *)(g + 6) = v38; - g[1] = 0x10; - g[3] = 4; - (*(s16*)&D_801E8864) = 3; - break; - case 0x2A: - g[0] = 4; - (*(s16*)&D_801E8864) = 3; - g[1] = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x1E: - func_8017B238(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x21: - func_8017BA3C(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B238(((Actor_80178D40 *)arg0), (s32)&D_801E7F84); - (*(s16*)&D_801E8864) = 3; - break; - case 0x54: - func_8017BB34(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B238(((Actor_80178D40 *)arg0), (s32)&D_801E7F84); - (*(s16*)&D_801E8864) = 3; - break; - case 0x1F: - func_8017B614(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x22: - func_8017BA3C(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B614(((Actor_80178D40 *)arg0), (s32)&D_801E7F84); - (*(s16*)&D_801E8864) = 3; - break; - case 0x55: - func_8017BB34(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B614(((Actor_80178D40 *)arg0), (s32)&D_801E7F84); - (*(s16*)&D_801E8864) = 3; - break; - case 0x20: - func_8017B7A8(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E8864) = 3; - break; - case 0x4E: - D_801E7FA8 = ((Cmd_80178D40 *)arg1)->a.w; - func_8017B940(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E8864) = 3; - break; - case 0x57: - func_8017B824(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x58: - func_8017B880(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x2B: - (*(s16*)&D_801E8864) = 3; - ((Actor_80178D40 *)arg0)->unk2 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2C: - (*(s16*)&D_801E8864) = 3; - ((Actor_80178D40 *)arg0)->unk34 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2D: - (*(s16*)&D_801E8864) = 3; - ((Actor_80178D40 *)arg0)->unkD8 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2F: - (*(s16*)&D_801E8864) = 3; - ((Actor_80178D40 *)arg0)->unk10A = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2E: - (*(s16*)&D_801E8864) = 3; - ((Actor_80178D40 *)arg0)->unkF8 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x11: - func_8017A298(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x12: - func_8017A2C0(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x13: - func_8017A2E8(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x14: - func_8017A310(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x33: { - void (*f)(Actor_80178D40 *) = (void (*)(Actor_80178D40 *))((Cmd_80178D40 *)arg1)->a.w; - D_801E87B8 = (s32)&((Cmd_80178D40 *)arg1)[1]; - f(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E8864) = 3; - break; - } - case 0x30: - if (((Cmd_80178D40 *)arg1)->a.w == 0) { - func_8012E8A8(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E8864) = 3; - } else { - func_8012E88C(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E8864) = 3; - } - break; - case 0x4A: - ((void(*)())func_80175414)(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x4B: - func_80175454(); - (*(s16*)&D_801E8864) = 3; - break; - case 0x34: - (*(s16*)&D_801E8864) = 3; - D_801E7B50 = ((Cmd_80178D40 *)arg1)->a.w; - return; - case 0x35: - D_801E7F80 = (s32)&((Cmd_80178D40 *)arg1)[1]; - (*(s16*)&D_801E8864) = 3; - D_801E7B50 = ((Cmd_80178D40 *)arg1)->a.w; - return; - case 0x36: - (*(s16*)&D_801E8864) = 3; - D_801E7B50 += 8; - if (((s32 (*)(s32))((Cmd_80178D40 *)arg1)->a.w)(((Actor_80178D40 *)arg0)) == 0) { - break; - } - D_801E7B50 = *(s32 *)(D_801E7B50 + 4); - return; - case 0x37: - (*(s16*)&D_801E8864) = 3; - D_801E7F6C = ((Cmd_80178D40 *)arg1)->a.uh[0]; - D_801E7F70 = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x38: - (*(s16*)&D_801E8864) = 3; - D_801E7F74 = ((Cmd_80178D40 *)arg1)->a.uh[0]; - D_801E7F78 = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x39: { - s32 w1, w2; - v40.vx = ((Actor_80178D40 *)arg0)->unk6; - v40.vy = ((Actor_80178D40 *)arg0)->unkA; - v40.vz = ((Actor_80178D40 *)arg0)->unkE; - v48.vx = pv->unk6; - v48.vy = pv->unkA; - v48.vz = pv->unkE; - func_8012F40C(out50, &v40); - w1 = out50[0]; - func_8012F40C(out50, &v48); - w2 = out50[0]; - (*(s16*)&D_801E8864) = 3; - D_801E7F6C = w1; - D_801E7F70 = (s16)w1 >= (s16)w2; - break; - } - case 0x3A: { - s32 w1, w2; - v58.vx = ((Actor_80178D40 *)arg0)->unk6; - v58.vy = ((Actor_80178D40 *)arg0)->unkA; - v58.vz = ((Actor_80178D40 *)arg0)->unkE; - v60.vx = pv->unk6; - v60.vy = pv->unkA; - v60.vz = pv->unkE; - func_8012F40C(out50, &v58); - w1 = out50[0]; - func_8012F40C(out50, &v60); - w2 = out50[0]; - (*(s16*)&D_801E8864) = 3; - D_801E7F74 = w2; - D_801E7F78 = (s16)w1 < (s16)w2; - break; - } - case 0x41: - ((void(*)(s32, s32))func_8002D4C8)(((Cmd_80178D40 *)arg1)->a.uh[0], ((Cmd_80178D40 *)arg1)->a.uh[1]); - (*(s16*)&D_801E8864) = 3; - break; - case 0x42: - func_8017AD0C(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - case 0x43: - D_801E7F94 = (s32)func_8017A3D8; - D_801E7F9C = 0; - (*(s16*)&D_801E8864) = 5; - D_801E7F98 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x44: - func_8001AAD0(((Cmd_80178D40 *)arg1)->a.h[0], ((Cmd_80178D40 *)arg1)->a.h[1]); - (*(s16*)&D_801E8864) = 3; - break; - case 0x53: - func_80179E48(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801E8864) = 3; - break; - case 0x56: - func_80179FEC(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801E8864) = 3; - break; - L5B_found: - fp5b = ((Cmd_80178D40 *)arg1)->a.w; - *q5b = fp5b; - ((void (*)(Actor_80178D40 *))fp5b)(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801E8864) = 3; - break; - case 0x5B: - i5b = 0; - q5b = D_801E7FAC; - do { - i5b++; - if (*q5b == 0) { - goto L5B_found; - } - q5b++; - } while (i5b < 10); - (*(s16*)&D_801E8864) = 3; - break; - L5C_found1: - *q5c = 0; - goto L5C_join; - case 0x5C: - i5c = 0; - if (((Cmd_80178D40 *)arg1)->a.w != 0) { - fp5c = ((Cmd_80178D40 *)arg1)->a.w; - q5c = D_801E7FAC; - do { - if (*q5c == fp5c) { - goto L5C_found1; - } - i5c++; - q5c++; - } while (i5c < 10); - L5C_join: - if (i5c != 10) { - (*(s16*)&D_801E8864) = 3; - break; - } - i5c = 0; - do { - p5c = &D_801E7FAC[i5c]; - if (*p5c != 0) { - goto L5C_found2; - } - i5c++; - } while (i5c < 10); - (*(s16*)&D_801E8864) = 3; - break; - L5C_found2: - *p5c = 0; - goto L5D; - } - r5c = D_801E7FAC; - do { - i5c++; - if (*r5c != 0) { - *r5c = 0; - goto L5D; - } - r5c++; - } while (i5c < 10); - /* fallthrough */ - case 0x5D: - L5D: - (*(s16*)&D_801E8864) = 3; - break; - default: - break; - } -Lend: - D_801E7B50 += 8; -} - - -DEFINE_func_80179B28() /* dedup: shared engine-core @0x80179B28 (src/shared) */ - -extern short D_801DA710; -extern void func_8017A4AC(void); - -// @class: schedule -// @stuck: none — MATCH (111 ins). symcheck: data syms CLEAN (D_801E7B58/D_801E7F5C, 0 INVENTED); its lone MISSING is jtbl_801D8F9C, the COMPILER-emitted table ($L17 -> .rdata) — banking needs the §8a/§8e rodata-island flip (35 entries, .align 3), not a source-side ref. -/* func_80179B74 (ov_SC01_077) — command-queue WRITER: copies the opcode + its - * operand halfwords from *p into the 0x200-entry ring D_801E7B58 at write index - * D_801E7F5C. Mirror of the reader func_8017A4AC (same ring, read index D_801DA710). - * - * Three levers were needed on top of the obvious shape (each byte-proven here): - * 1. jtbl SPAN — the target's table is 35 entries (0..0x22) with NO `addiu a0,a0,-1` - * bias and `sltiu v0,a0,0x23`, so the source must contain an empty `case 0:` and - * an empty `case 0x22:`; without them gcc biases by -1 and emits sltiu 0x20. - * 2. SCHEDULE — the operand push must route through a NAMED block-scoped temp - * (`{ s16 t = *p++; ring[idx] = t; ... }`). Written as the anonymous - * `ring[idx] = *p++;` the sched1 pass puts the `lh D_801E7F5C` ahead of the - * `lhu 0(a1)` in exactly the two blocks that also carry a live `addiu a1,a1,2` - * (cases {1,5} and {0x17,0x1c,0x1d,0x20}) — 6 of the 8 residual mismatches. - * The temp gives the loaded value its own pseudo and flips those two blocks. - * 3. FRAME — the target reserves 0x80 with NO saves and NO spills; gcc's own - * (unused) area for this body is 0x58, so +0x28 of address-taken local is - * required: `s32 pad[10]; (void)&pad;` (cookbook §17 phantom-frame INDUCE - * lever). 10 words exactly; 8 -> 0x78 and 12 -> 0x88 both miss. - * - * Case-block ORDER in the source is the emitted block order: {1,5} then {0x13} - * then {2,3,4,6,0x12,0x14,0x1f} then {0x17,0x1c,0x1d,0x20}. The 3-/2-/1-push - * tails are then cross-jump merged (no calls, so §88 does not block it) into the - * shared .L80179CE4 / .L80179D08 tail that sits after the last case block. - * - * Symbols are the splat spellings and match the sibling TU ov_SC01_077_jr_8017A4AC.c - * (`extern u16 D_801E7B58[0x200];` / `extern s16 D_801E7F5C;`) so the whole-binary - * link and any one-big-TU build see one consistent type. - */ - -extern u16 D_801E7B58[0x200]; -extern s16 D_801E7F5C; - -void func_80179B74(u16 *p) { - s32 pad[10]; - s16 c; - - (void)&pad; - c = *p++; - D_801E7B58[D_801E7F5C] = c; - D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; - switch (c) { - case 0: - break; - case 1: - case 5: - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - break; - case 0x13: - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - break; - case 2: - case 3: - case 4: - case 6: - case 0x12: - case 0x14: - case 0x1F: - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - break; - case 0x17: - case 0x1C: - case 0x1D: - case 0x20: - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - { s16 t = *p++; D_801E7B58[D_801E7F5C] = t; D_801E7F5C = (D_801E7F5C + 1) & 0x1FF; } - break; - case 0x22: - break; - } -} - -DEFINE_func_80179D30() /* dedup: shared engine-core @0x80179D30 (src/shared) */ - -DEFINE_func_80179D78() /* dedup: shared engine-core @0x80179D78 (src/shared) */ - -DEFINE_func_80179DCC() /* dedup: shared engine-core @0x80179DCC (src/shared) */ - -DEFINE_func_80179DF8() /* dedup: shared engine-core @0x80179DF8 (src/shared) */ - -DEFINE_func_80179E1C() /* dedup: shared engine-core @0x80179E1C (src/shared) */ - -DEFINE_func_80179E48() /* dedup: shared engine-core @0x80179E48 (src/shared) */ - -DEFINE_func_80179E74() /* dedup: shared engine-core @0x80179E74 (src/shared) */ - -DEFINE_func_80179EA0() /* dedup: shared engine-core @0x80179EA0 (src/shared) */ - -DEFINE_func_80179EE8() /* dedup: shared engine-core @0x80179EE8 (src/shared) */ - -DEFINE_func_80179F14() /* dedup: shared engine-core @0x80179F14 (src/shared) */ - -DEFINE_func_80179F44() /* dedup: shared engine-core @0x80179F44 (src/shared) */ - -DEFINE_func_80179F6C() /* dedup: shared engine-core @0x80179F6C (src/shared) */ - -DEFINE_func_80179F98() /* dedup: shared engine-core @0x80179F98 (src/shared) */ - -DEFINE_func_80179FEC() /* dedup: shared engine-core @0x80179FEC (src/shared) */ - -DEFINE_func_8017A040() /* dedup: shared engine-core @0x8017A040 (src/shared) */ - - -extern void func_80179B74(u16 *p); -extern s32 D_801E7F7C; - -void func_8017A094(s32 arg0) { - s16 sp10; - - D_801E7F7C = arg0; - sp10 = 0x15; - func_80179B74(&sp10); -} - - - -extern void func_80179B74(u16 *p); -extern s32 D_801E7F7C; - -void func_8017A0C4(s32 arg0) { - s16 sp10; - - D_801E7F7C = arg0; - sp10 = 0x16; - func_80179B74(&sp10); -} - - -DEFINE_func_8017A0F4() /* dedup: shared engine-core @0x8017A0F4 (src/shared) */ - -DEFINE_func_8017A11C() /* dedup: shared engine-core @0x8017A11C (src/shared) */ - - -extern s32 D_801E7FA4; -extern void func_80179B74(u16 *p); - -void func_8017A144(s32 a0) { - s16 sp10; - sp10 = 0x1B; - func_80179B74(&sp10); - D_801E7FA4 = a0; -} - - -DEFINE_func_8017A180() /* dedup: shared engine-core @0x8017A180 (src/shared) */ - -DEFINE_func_8017A1A8() /* dedup: shared engine-core @0x8017A1A8 (src/shared) */ - -DEFINE_func_8017A1D0() /* dedup: shared engine-core @0x8017A1D0 (src/shared) */ - -DEFINE_func_8017A1F8() /* dedup: shared engine-core @0x8017A1F8 (src/shared) */ - -DEFINE_func_8017A220() /* dedup: shared engine-core @0x8017A220 (src/shared) */ - -DEFINE_func_8017A248() /* dedup: shared engine-core @0x8017A248 (src/shared) */ - -DEFINE_func_8017A270() /* dedup: shared engine-core @0x8017A270 (src/shared) */ - -DEFINE_func_8017A298() /* dedup: shared engine-core @0x8017A298 (src/shared) */ - -DEFINE_func_8017A2C0() /* dedup: shared engine-core @0x8017A2C0 (src/shared) */ - -DEFINE_func_8017A2E8() /* dedup: shared engine-core @0x8017A2E8 (src/shared) */ - -DEFINE_func_8017A310() /* dedup: shared engine-core @0x8017A310 (src/shared) */ - -DEFINE_func_8017A338() /* dedup: shared engine-core @0x8017A338 (src/shared) */ - -DEFINE_func_8017A360() /* dedup: shared engine-core @0x8017A360 (src/shared) */ - -DEFINE_func_8017A388() /* dedup: shared engine-core @0x8017A388 (src/shared) */ - - -extern s16 D_801E7F60; - -s32 func_8017A3B0(void) { - switch (D_801E7F60) { - case 0: - return 1; - case 1: - return 0; - default: - return 1; - } -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern short D_801E7F9C; -extern short D_801E7F98; - -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); - -int func_8017A3D8(void) -{ - switch (D_801E7F9C) { - case 0: - func_800D0CA0(1); - D_801E7F9C = D_801E7F9C + 1; - return 0; - case 100: - { - register int a __asm__("$4"); - a = D_801E7F98; - if (a != -1) { - return func_8001AAA0() != 0; - } - return func_800D0CE0() == 1; - } - default: - D_801E7F9C = D_801E7F9C + 1; - if (D_801E7F9C < 0x1E) { - return 0; - } - D_801E7F9C = 100; - return 0; - } -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8017A4AC.c b/src/ov_SC02_003/ov_SC02_003_jr_8017A4AC.c deleted file mode 100644 index 17b03a659..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8017A4AC.c +++ /dev/null @@ -1,2779 +0,0 @@ -#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 *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(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_8018E1B0[])(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_8018E174; -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_8018E1E0[])(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_8018E21C[])(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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -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_801E7F7C; -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_801E7FA4; -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_801E7F60; -extern s32 func_8017A3B0(void); -extern short D_801E7F9C; -extern short D_801E7F98; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(void); -/* ==== end §8b carried decl layer ==== */ - - -// func_8017A4AC (ov_SC01_077) — 536-ins command/bytecode interpreter, 35-case jtbl switch. - - - extern u16 D_801E7B58[0x200]; - extern s16 D_801E7F58; - extern s16 D_801E7F5C; - extern s32 D_801E7FA0; - -extern s32 D_80126B58; -extern s16 D_801E7F60; -extern s32 D_801E7F7C; -extern s32 D_801E7FA4; - -extern void func_80172310(u8*); -extern void func_80172738(void); -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_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern void func_80172FEC(void); -extern void func_80173174(void); -extern void func_8017329C(void); -extern void func_8017334C(void); -extern void func_801733A4(void); -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_8017427C(void); -extern void func_80174438(s32); -extern void func_8017452C(void); -extern void func_80174584(void); -extern void func_801745DC(void); -extern s32 func_80174754(void); - -void func_8017A4AC(void) { - u16 sp18[4]; - u16 sp20[4]; - u16 sp28[4]; - u16 sp30[4]; - struct S126B58 *w = &(*(struct S126B58 *)&D_80126B58); - s16 cmd; - - if (D_801E7F58 == D_801E7F5C) { - if (func_80174754() != 0) { - D_801E7F60 = 0; - } else { - D_801E7F60 = 1; - } - return; - } - D_801E7F60 = 1; - if (func_80174754() == 0) { - return; - } - cmd = D_801E7B58[D_801E7F58]; - D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - switch (cmd) { - case 0: - func_80172738(); - return; - case 1: - sp18[0] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp18[1] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp18[2] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172780)(sp18); - return; - case 28: - sp18[0] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp18[1] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp18[2] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp18[3] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172894)(sp18); - return; - case 2: - { s16 arg = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - ((void (*)(s16))func_801729B0)(arg); - return; } - case 3: - { s16 arg = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - func_80172B14(arg); - return; } - case 4: - { s16 arg = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - { s32 t = w->unk20->unk12 + arg; - func_80172B14(t & 0xFFF); } - return; } - case 5: - sp18[0] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp18[1] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp18[2] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - func_80172C50(sp18); - return; - case 6: - { s16 arg = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - ((void (*)(s16))func_80172D68)(arg); - return; } - case 7: func_80172E94(); return; - case 8: func_80172ED4(); return; - case 27: ((void (*)())D_801E7FA4)(); return; - case 9: func_80172EFC(); return; - case 10: func_80172F24(); return; - case 11: func_80173174(); return; - case 12: func_80172F4C(); return; - case 33: func_80172F9C(); return; - case 34: func_80172FEC(); return; - case 13: func_801745DC(); return; - case 14: - case 15: func_8017329C(); return; - case 16: func_8017334C(); return; - case 17: func_801733A4(); return; - case 18: - { s16 arg = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - func_801738DC(arg); - return; } - case 19: { - s16 a, b; - s32 ea, eb; - a = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; ea = a; - b = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; eb = b; - func_801736B0(ea, eb); - return; - } - case 20: - { s16 arg = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - ((void (*)(s16))func_801734BC)(arg); - return; } - case 23: - sp20[0] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp20[1] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp20[2] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - { s16 arg = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - ((void (*)(s16, u16 *))func_80173460)(arg, sp20); - return; } - case 29: - sp28[0] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp28[1] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp28[2] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - { s16 arg = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - func_801733FC(arg, sp28); - return; } - case 32: - sp30[0] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp30[1] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp30[2] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - sp30[3] = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172310)(sp30); - return; - case 25: func_8017452C(); return; - case 30: func_80174584(); return; - case 26: func_8017427C(); return; - case 24: func_80174438(D_801E7FA0); return; - case 21: - ((void (*)(s32, s32, s32, s32, void *, s32))func_80173A28)((*(struct S734 * *)&D_801E7F7C)->unk0, (*(struct S734 * *)&D_801E7F7C)->unk4, (*(struct S734 * *)&D_801E7F7C)->unk8, - (*(struct S734 * *)&D_801E7F7C)->unkC, (*(struct S734 * *)&D_801E7F7C)->unk10, (*(struct S734 * *)&D_801E7F7C)->unk18); - return; - case 22: - (*(struct S734 * *)&D_801E7F7C)->unk1C((*(struct S734 * *)&D_801E7F7C)->unk4, (*(struct S734 * *)&D_801E7F7C)->unk10, (*(struct S734 * *)&D_801E7F7C)->unk18); - return; - case 31: - { s16 arg = D_801E7B58[D_801E7F58]; D_801E7F58 = (D_801E7F58 + 1) & 0x1FF; - func_801737B8(arg); - return; } - } -} - - -DEFINE_func_8017AD0C() /* dedup: shared engine-core @0x8017AD0C (src/shared) */ - -DEFINE_func_8017ADE8() /* dedup: shared engine-core @0x8017ADE8 (src/shared) */ - -DEFINE_func_8017AE08() /* dedup: shared engine-core @0x8017AE08 (src/shared) */ diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8017AE2C.c b/src/ov_SC02_003/ov_SC02_003_jr_8017AE2C.c deleted file mode 100644 index 2bd15c0d9..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8017AE2C.c +++ /dev/null @@ -1,4594 +0,0 @@ -#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 *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(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_8018E1B0[])(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_8018E174; -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_8018E1E0[])(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_8018E21C[])(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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -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_801E7F7C; -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_801E7FA4; -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_801E7F60; -extern s32 func_8017A3B0(void); -extern short D_801E7F9C; -extern short D_801E7F98; -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); -/* ==== end §8b carried decl layer ==== */ - - -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 s32 func_80012A60(s32 a0, s32 a1); - -extern s16 D_801E8758; -extern s16 D_801E875A; -extern s16 D_801E8764; - -void func_8017AE2C(s32 param_1) { - register s32 pv __asm__("$16") = param_1; - register s16 *g __asm__("$17") = &D_801E8758; - - switch (g[0]) { - case 0: - default: - return; - case 1: - g[1] = (u16)g[1] - 1; - if (g[1] <= 0) { - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = (u16)g[2]; - goto reset_both; - } - { - s32 r = func_8012B608(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), g[2], 6); - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) + r; - } - return; - case 2: - func_8012B178(pv, (s32)g[4] << 8); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - break; - case 3: - if (g[1] != 0) { - if (g[5] != 0) { - void *p = (void *)(pv + 4); - if ((s16)func_80012A60(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), - (s16)func_8012B744(p, &g[6])) < 0x100) { - g[1] = 0; - } - *(s16 *)(*(s32 *)(pv + 0x20) + 0x12) = - func_8012B744(p, &D_801E8764); - func_8012B178(pv, 0xFFFA0000); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - /* &D_801E8758+0xC == &D_801E8764; distinct rtx defeats gcc's address-CSE - so BE98's arg rematerializes instead of sharing the store's reg (byte-gate). */ - if (func_8012BE98(pv, (u16 *)((s32)&D_801E8758 + 0xC)) < 0x101) { - D_801E8758 = 0; - D_801E875A = 0; - } - } - { - s32 t = func_8012B744((void *)(pv + 4), &g[6]); - s32 r = func_8012B608(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), t, g[3]); - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) + r; - } - g[1] = (u16)g[1] - 1; - if (g[1] > 0) { - return; - } - g[1] = 0; - return; - } - *(s16 *)(*(s32 *)(pv + 0x20) + 0x12) = - func_8012B744((void *)(pv + 4), &D_801E8764); - func_8012B178(pv, 0xFFFA0000); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - /* see note above: distinct rtx for the same address defeats address-CSE. */ - if (func_8012BE98(pv, (u16 *)((s32)&D_801E8758 + 0xC)) < 0x101) { - D_801E8758 = 0; - D_801E875A = 0; - } - return; - case 4: - func_8012AD80(pv); - } - g[1] = (u16)g[1] - 1; - if (g[1] > 0) { - return; - } -reset_both: - g[0] = 0; - g[1] = 0; - return; -} - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801E7FDC; - extern s16 D_801E7FDE; - extern s16 D_801E7FE0; - extern s16 D_801E7FD4; - extern s16 D_801E7FD6; - extern s16 D_801E7FD8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801E7FDC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801E7FDE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801E7FE0, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801E7FD4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801E7FD6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801E7FD8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -extern s16 D_801E87BC; - -void func_8017B1D8(void) { - func_8012A418(); - D_801E87BC = 0; - D_801E7F64 = 0; - D_801E7FE4 = D_80126B5E; - D_801E7FE6 = D_80126B62; - D_801E7FE8 = D_80126B66; -} - - -// @class: regalloc-order — simplified sibling of matched func_8017B614. -// @stuck: none. Block-moves are align-1 struct-assigns (u8[8]) -> emit_block_move -// (unaligned lwl/lwr/swl/swr), ZERO memcpy-symbol reference, so the TU's `extern memcpy` -// (which turned the old draft's memcpy into a CALL -> DIFF 64) can't drift this. -// $16 pin + in-place re-tie keeps param_2 in $a1 until the >=0xB branch, then $s0 for loads. - - -s32 func_8017B238(s32 param_1, s32 param_2) -{ - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern s32 func_8017BE60(void *a0); - extern u8 D_8018E53C[]; - extern s16 D_801E7FDC; - extern s16 D_801E7FD4; - extern u8 D_8012694C; - - - u8 buf[16]; - - if (((u32)param_2) >= 0xB) { - register u8 *src __asm__("$16"); - __asm__ __volatile__("" : "=r"(src) : "0"((u8 *)((u32)param_2))); - *(Blk8_8017B238_8017B238 *)&buf[0] = *(Blk8_8017B238_8017B238 *)src; - *(Blk8_8017B238_8017B238 *)&buf[8] = *(Blk8_8017B238_8017B238 *)(src + 8); - } else { - s32 a1addr = (s32)&D_8018E53C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E7FDC; - s16 *p78C = &D_801E7FD4; - *(Blk8_8017B238_8017B238 *)p794 = *(Blk8_8017B238_8017B238 *)&buf[0]; - *(Blk8_8017B238_8017B238 *)p78C = *(Blk8_8017B238_8017B238 *)&buf[8]; - func_8012A018((s32)func_8017BE60, 0); - D_8012694C = 0; - D_801E87BC = 1; - D_801E7F64 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - - /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ - /* 16-byte stride array element */ - - - -s32 func_8017B368(s32 param) -{ - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801E7F84; - extern SV4_8017B368 D_801E7F8C; - extern s16 D_801E7FDC; - extern s16 D_801E7FD4; - extern u16 D_8018E53C; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E7F84; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E7F8C; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018E53C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E7FDC) = loc0; - (*(SV4_8017B368 *)&D_801E7FD4) = loc1; - D_801E87BC = 1; - D_801E7F64 = 0; -} - - - - - -s32 func_8017B490(s32 param) -{ - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801E7F84; - extern SV4_8017B368 D_801E7F8C; - extern s16 D_801E7FDC; - extern s16 D_801E7FD4; - extern u16 D_8018E53C; - extern s16 D_801E7F64; - extern s16 D_801E87BC; - extern s32 D_80126984; - extern s32 D_80126988; - extern s32 D_8012698C; - extern s32 D_80126990; - extern s32 D_80126994; - extern s32 D_80126998; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801E7F84; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801E7F8C; - } else { - s32 ax = (s32)&((Pair16 *)&D_8018E53C)[n].x; - s32 ay = (s32)&((Pair16 *)&D_8018E53C)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801E7FDC) = loc0; - (*(SV4_8017B368 *)&D_801E7FD4) = loc1; - D_801E87BC = 1; - D_801E7F64 = 0x1E; - D_80126990 = (*(SV4_8017B368 *)&D_801E7FDC).a; - D_80126994 = (*(SV4_8017B368 *)&D_801E7FDC).b; - D_80126998 = (*(SV4_8017B368 *)&D_801E7FDC).c; - D_80126984 = (*(SV4_8017B368 *)&D_801E7FD4).a; - D_80126988 = (*(SV4_8017B368 *)&D_801E7FD4).b; - D_8012698C = (*(SV4_8017B368 *)&D_801E7FD4).c; -} - - -// @class: regalloc-order + T1 memcpy-builtin→call re-crack -// @stuck: 0 (iso). Register lever = $16 pin + in-place re-tie on the memcpy-branch src (keeps -// param_2 in $a1 until the branch, then $s0 for the loads). Block-moves are align-1 struct-assigns -// (u8[8]) so they lower via emit_block_move (movstrsi/move_by_pieces) with ZERO memcpy-symbol -// reference — TU-independent, so the sibling TU's `extern memcpy` (which disables the builtin and -// turned the old inlined block-move into a CALL) can no longer drift this. - - - - -s32 func_8017B614(s32 param_1, s32 param_2) -{ - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern void func_80129CF8(void); - extern s32 func_8017BE60(void *a0); - extern u8 D_8018E53C[]; - extern s16 D_801E7FDC; - extern s16 D_801E7FDE; - extern s16 D_801E7FE0; - extern s16 D_801E7FD4; - extern s16 D_801E7FD6; - extern s16 D_801E7FD8; - extern u8 D_8012694C; - extern s32 D_80126998; - extern s32 D_80126984; - extern s32 D_80126988; - extern s32 D_8012698C; - - u8 buf[16]; - - if (((u32)param_2) >= 0xB) { - register u8 *src __asm__("$16"); - __asm__ __volatile__("" : "=r"(src) : "0"((u8 *)((u32)param_2))); - *(Blk8_8017B614 *)&buf[0] = *(Blk8_8017B614 *)src; - *(Blk8_8017B614 *)&buf[8] = *(Blk8_8017B614 *)(src + 8); - } else { - s32 a1addr = (s32)&D_8018E53C[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018E53C[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801E7FDC; - s16 *p78C = &D_801E7FD4; - *(Blk8_8017B614 *)p794 = *(Blk8_8017B614 *)&buf[0]; - *(Blk8_8017B614 *)p78C = *(Blk8_8017B614 *)&buf[8]; - ((void(*)(s32, s32))func_8012A018)((s32)func_8017BE60, 0); - { - s32 v794, v796, v798, v78C, v78E, v790; - D_8012694C = 0; - v794 = *p794; - v796 = D_801E7FDE; - v798 = D_801E7FE0; - v78C = *p78C; - v78E = D_801E7FD6; - v790 = D_801E7FD8; - __asm__ __volatile__(""); - D_801E87BC = 1; - D_801E7F64 = 0x1E; - D_80126990 = v794; - D_80126994 = v796; - D_80126998 = v798; - D_80126984 = v78C; - D_80126988 = v78E; - D_8012698C = v790; - } - func_80129CF8(); - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH - -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_801E7F64; -extern s16 D_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801E7F64 = 0; - D_801E7FDC = (s16) D_80114F30; - D_801E7FDE = (s16) D_80114F34; - D_801E7FE0 = (s16) D_80114F38; - D_801E7FD4 = (s16) D_80114F24; - D_801E7FD6 = (s16) D_80114F28; - D_801E7FD8 = (s16) D_80114F2C; -} - - - - -extern s32 D_801151D4; -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; - -void func_8017B824(void) { - D_801E7FF4 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801E7FF6 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801E7FF8 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801E7FFC = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801E7FFE = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801E8000 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; - -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; - -void func_8017B880(void) -{ - D_80114F30 = D_801E7FF4; - D_80114F34 = D_801E7FF6; - D_80114F38 = D_801E7FF8; - D_80114F24 = D_801E7FFC; - D_80114F28 = D_801E7FFE; - D_80114F2C = D_801E8000; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801E7FDC), src[8..15] -> (*(S8_8017B8E8 *)&D_801E7FD4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801E7FDC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801E7FD4) = ((S8_8017B8E8 *)src)[1]; -} - - - - -// @class: struct -// @stuck: none — MATCH (63 ins) - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; - -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_801E7F64; -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -extern s16 D_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801E7FE4); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801E7FE6); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801E7FE8); - (*(s16 *)&D_801E7FEC) = buf[0]; - (*(s16 *)&D_801E7FEE) = buf[1]; - (*(s16 *)&D_801E7FF0) = buf[2]; - D_801E7FDC = D_80114F30 + buf[0]; - D_801E7F64 = 0; - D_801E7FDE = D_80114F34 + buf[1]; - D_801E7FE0 = D_80114F38 + buf[2]; - D_801E7FD4 = D_80114F24 + buf[0]; - D_801E7FD6 = D_80114F28 + buf[1]; - D_801E7FD8 = D_80114F2C + buf[2]; -} - - - -// @class: struct -// @stuck: none — MATCH (62 ins) - -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); - -/* short-only (align 2) struct -> the 8-byte struct copy emits lwl/lwr/swl/swr */ - -/* PSX MATRIX_L48: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801E7F84; -extern SV4 D_801E7F8C; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX_L48, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801E7F8C) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801E7F84 = svec; - - v0.a = -*(s16 *)(param_2 + 0xc); - v0.b = *(u16 *)(param_2 + 8); - v0.c = 0; - v1.a = 0; - v1.b = 0; - v1.c = -*(s16 *)(param_2 + 0xa); - ((void (*)(void *, void *))func_80049CAC)(&v0, &mtx); - - mtx.t[0] = (s32)svec.a; - mtx.t[1] = (s32)svec.b; - mtx.t[2] = (s32)svec.c; - func_8004914C(&mtx); - func_800491AC(&mtx); - - RotTransSV(&v1, &buf1, &buf2); - D_801E7F8C = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX_L48, t[] at sp+0x2c */ - SV4_8017BB34 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4_8017BB34 svec; /* sp+0x40 */ - SV4_8017BB34 buf1; /* sp+0x48 : RotTransSV arg1 (-> (*(SV4_8017BB34*)&D_801E7F8C)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801E7F84) = svec; - - v0.a = -*(s16 *)(param_2 + 0xc); - v0.b = *(u16 *)(param_2 + 8); - v0.c = 0; - v1.a = 0; - v1.b = 0; - v1.c = -*(s16 *)(param_2 + 0xa); - ((void (*)(void *, void *))func_80049CAC)(&v0, &mtx); - - mtx.t[0] = (s32)svec.a; - mtx.t[1] = (s32)svec.b; - mtx.t[2] = (s32)svec.c; - func_8004914C(&mtx); - func_800491AC(&mtx); - - RotTransSV(&v1, &buf1, &buf2); - (*(SV4_8017BB34*)&D_801E7F8C) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801E7FAC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801E7FAC; - do { - if (*p != (void (*)(int))0) { - (*p)(param_1); - } - i = i + 1; - p = p + 1; - } while (i < 10); - return; -} - - - - -// @class: plumbing -// @stuck: none — MATCH (expected); short-typed global increment + signed compare, store-2 on overflow - -extern void func_8017B0E4(int, int); -extern s16 D_801E7F64; -extern s16 D_801E87BC; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801E7F64 = D_801E7F64 + 1; - if (D_801E7F64 >= 0x1F) { - D_801E87BC = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801E7F64; -extern s16 D_801E87BC; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E7F64 = D_801E7F64 + 1; - if (0x18 < D_801E7F64) { - func_8012A4BC(); - D_801E87BC = 0; - } - return; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (branch-polarity invert: fn-ptr non-zero call is the fall-through arm) - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -extern s16 D_801E7F64; -extern void (*D_801E7FA8)(void); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -extern s16 D_801E87BC; - -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; - -void func_8017BD50(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801E7F64 = D_801E7F64 + 1; - if (D_801E7F64 >= 0x19) { - if (D_801E7FA8 != 0) { - (*D_801E7FA8)(); - } else { - D_80114F30 = D_80114F30 + D_801E7FEC; - D_80114F34 = D_80114F34 + D_801E7FEE; - D_80114F38 = D_80114F38 + D_801E7FF0; - D_80114F24 = D_80114F24 + D_801E7FEC; - D_80114F28 = D_80114F28 + D_801E7FEE; - D_80114F2C = D_80114F2C + D_801E7FF0; - func_8012A4BC(); - } - D_801E87BC = 0; - } -} - - - -extern void (*D_8018E5DC[])(void); - -void func_8017BE60(void *a0) { - D_8018E5DC[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_8017BE9C() /* dedup: shared engine-core @0x8017BE9C (src/shared) */ - -DEFINE_func_8017BEA4() /* dedup: shared engine-core @0x8017BEA4 (src/shared) */ - -DEFINE_func_8017BEAC() /* dedup: shared engine-core @0x8017BEAC (src/shared) */ - -DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ - -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); - -void func_8017BEBC(void *a0) { - func_80146A6C(0x19, a0, 0, 0, 0, 0, 1); -} - - - -extern void (*D_8018E614[])(void); - -void func_8017BEF8(void *a0) { - D_8018E614[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8017BF34() /* dedup: shared engine-core @0x8017BF34 (src/shared) */ - - -// @class: plumbing -// @stuck: none — signed s32 counter at 0x1C, delay-slot store is the unconditional bump - -DEFINE_func_8017BF84() /* dedup: shared engine-core @0x8017BF84 (src/shared) */ - - - -/* Entity record touched by func_8017BFE0 (offsets read straight off the asm): - * 0x02 u16 frame/state counter (lhu / sh) - * 0x1C s32 tick counter (lw / sw), signed compare against 0x20 - * 0x2A u16 y-ish delta, decremented by 0x10 (lhu / sh) - * 0x2C u16 sound id passed to func_80147324 (lhu) - * 0x30 s32 suppress flag - */ - -DEFINE_func_8017BFE0() /* dedup: shared engine-core @0x8017BFE0 (src/shared) */ - - - - -/* func_8017C064 — entity tick with a two-mode "hit/shake" arm. - * +0x1C s32 frame counter (lw / sw), signed compare against 0x20 - * +0x34 ptr sub-object read up-front (lives in $s0 across the jals) - * +0x30 s32 mode flag (0 = direct sub-object, else the +0x20 sub-sub-object) - * +0x02 u16 state word bumped in the timeout arm - * - * §71 sibling-first: func_8017C69C in this same TU is the identical shape — - * counter @0x1C, sub-object @0x34, the 0x60/0x62/0x64 halfword triple and the - * `do { func_80146A6C(0x1B, obj, ...); } while (++i < 3);` s16 loop. - */ - -DEFINE_func_8017C064() /* dedup: shared engine-core @0x8017C064 (src/shared) */ - - -DEFINE_func_8017C1CC() /* dedup: shared engine-core @0x8017C1CC (src/shared) */ - - - -/* func_8017C218 — 4-point primitive sweep driven by the 44-byte curve table - * D_8018E5E8. Builds a rotation matrix from the entity's angle @0x12, then a - * translation from the sub-object @0x34, then walks the table three times - * (10 x stride-4, 20 x stride-2, 20 x stride-2 guarded by the s16 @0x2A). - */ - - - - /* 0x34 */ - - /* 0x20 */ - -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_80017E68(void *a0, void *a1); - -void func_8017C218(int param_1) -{ - - extern u16 D_800B99DA; - extern u8 D_8018E5E8[]; - SVec8_8017C218_8017C218 rot; - s32 pad0[2]; - Prim_8017C218_8017C218 prim; - s32 pad1[1]; - Mtx_8017C218_8017C218 mtx; - s32 pad2[8]; - s32 obj; - u8 *p; - s16 i; - s32 c; - - obj = *(s32 *)(param_1 + 0x34); - rot.vx = rot.vy = rot.vz = *(u16 *)(param_1 + 0x12); - func_80017DC4(&rot, &mtx); - - prim.v[1].vx = prim.v[1].vy = prim.v[1].vz = 0; - prim.v[0].vy = prim.v[2].vy = prim.v[3].vy = 0; - prim.c[1].r = prim.c[1].g = prim.c[1].b = 0; - - c = ((s32)(s16)*(u16 *)(param_1 + 0x12) >> 5) + 0x20; - prim.c[0].r = prim.c[0].g = prim.c[0].b = - prim.c[2].r = prim.c[2].g = prim.c[2].b = - prim.c[3].r = prim.c[3].g = prim.c[3].b = c; - if (D_800B99DA & 1) { - prim.c[0].r = prim.c[2].r = prim.c[3].r = prim.c[3].r >> 1; - } - - prim.code = 0x50000000; - rot.vx = *(u16 *)(obj + 0x6); - rot.vy = *(u16 *)(obj + 0xA) - 8; - rot.vz = *(u16 *)(obj + 0xE); - func_80017E68(&rot, &mtx); - - p = D_8018E5E8; - i = 0; - do { - prim.v[0].vx = (s8)*p++; - prim.v[0].vz = (s8)*p++; - prim.v[2].vx = (s8)*p++; - prim.v[2].vz = (s8)*p++; - prim.v[3].vx = (s8)*p++; - prim.v[3].vz = (s8)*p--; - func_80017758(&prim, &mtx); - i++; - } while (i < 10); - - prim.c[0].r = prim.c[0].g = prim.c[0].b = 0; - p = D_8018E5E8; - i = 0; - do { - prim.v[2].vx = (s8)*p++; - prim.v[0].vx = prim.v[2].vx << 1; - prim.v[2].vz = (s8)*p++; - prim.v[0].vz = prim.v[2].vz << 1; - prim.v[3].vx = (s8)*p++; - prim.v[1].vx = prim.v[3].vx << 1; - prim.v[3].vz = (s8)*p--; - prim.v[1].vz = prim.v[3].vz << 1; - func_80017758(&prim, &mtx); - i++; - } while (i < 0x14); - - if (*(s16 *)(param_1 + 0x2A) != 0) { - p = D_8018E5E8; - i = 0; - do { - prim.v[0].vx = prim.v[2].vx = (s8)*p++; - prim.v[0].vz = prim.v[2].vz = (s8)*p++; - prim.v[1].vx = prim.v[3].vx = (s8)*p++; - prim.v[1].vz = prim.v[3].vz = (s8)*p--; - prim.v[0].vy = prim.v[1].vy = *(u16 *)(param_1 + 0x2A); - func_80017758(&prim, &mtx); - i++; - } while (i < 0x14); - } -} - - - -extern void (*D_8018E628[])(void); - -void func_8017C524(void *a0) { - D_8018E628[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8017C560() /* dedup: shared engine-core @0x8017C560 (src/shared) */ - - -/* func_8017C5A0 — a state-tick: bump the frame counter at 0x1C; while it is - * below 0xC spin the angle at 0x12 by 0xE0, otherwise reset the counter, zero - * the vector at *(0x34)+0x60/0x64, set +0x62 to 0x3000 and advance the state - * word at 0x02. Falls through to ((void (*)(void *))func_8017C218)(a0) on both arms (the target - * leaves $a0 untouched, so the call needs no move). - * - * §71 sibling-first: func_8017C560 (same TU, 4 bytes earlier) is the same - * `*(u16 *)(a0 + 2) += 1` idiom, and func_8017C218's own prologue reads - * `lw $s1, 0x34($s2)` / `lhu $v0, 0x12($s2)` — same record, same widths. - */ - -DEFINE_func_8017C5A0() /* dedup: shared engine-core @0x8017C5A0 (src/shared) */ - - - -/* func_8017C610 — small entity tick: - * read counter @0x1C and the sub-object pointer @0x34 up-front, bump the - * counter unconditionally (gcc puts that store in the beqz delay slot), - * then either slide @0x2A down by 0x10 or run the 3-call teardown. */ - -DEFINE_func_8017C610() /* dedup: shared engine-core @0x8017C610 (src/shared) */ - - - -DEFINE_func_8017C69C() /* dedup: shared engine-core @0x8017C69C (src/shared) */ - - -DEFINE_func_8017C770() /* dedup: shared engine-core @0x8017C770 (src/shared) */ - - -extern void (*D_8018E63C[])(void); - -void func_8017C7C4(void *a0) { - D_8018E63C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* func_8017C800 — spawn/scatter tick for the +0x34 sub-object (state word @0x2). - * MATCH (45 ins), match_one + rtu_match. Four levers, in the order they were found: - * - * 1. §71 sibling-first — same entity shape as func_8017C610 / func_8017C69C in this - * TU: sub-object pointer @0x34 read BEFORE the call (it lives in $s1 across the - * jal), state word @0x2 bumped last. §3-T4: `beqz $v1,else` => `if (p->f2C) {..}`. - * ONE rand() feeds three fields; the raw low 6 bits use a bare `andi` (no extend) - * while the >>12 / >>6 uses share one `sll $x,16` — that shared sign-extend is - * what forces `r` to be a `short` local rather than an int. - * - * 2. §5a CROSS-JUMP — both arms end in `sh ?,0xA($s0)`; gcc tail-merged them (23 off). - * They only stay separate because the loaded halfword lands in a DIFFERENT hard - * reg per arm, which needs (a) the load to be its own statement at the TOP of each - * arm and (b) a SEPARATE temp per arm (t / t2) — one shared temp is one pseudo, - * gets one register in both arms, and re-merges. 23 -> 10 -> 6. - * - * 3. +0x16 is SIGNED: the target materialises -0x20 as `addiu $v0,$zero,-0x20`, not - * `ori 0xffe0`, so that store must go through an s16. - * - * 4. §49 BIRTHING BOOST (the last 6 -> 2 -> 0). Residual was two ALU insns swapped - * with identical registers; source statement order does NOT flip it, because - * sched1's `adjust_priority`/`birthing_insn_p` hands every SET(REG,..) whose dest - * has REG_N_SETS==1 a 0x7f000001 priority, so it sinks to just before its consumer - * and fixes the .greg LUID order that sched2's tie-break then reads. - * THE DIAL: give the offending insn's dest a SECOND set so it loses the boost — - * here one `u16 d` reused by both tail statements. It must be a THIRD temp, not - * `c` itself: writing `c = c + 1;` also un-boosts c's LOAD, which then starves to - * the front of the block and swaps the two `lhu`s instead. Boost the loads, starve - * the arithmetic. */ - -DEFINE_func_8017C800() /* dedup: shared engine-core @0x8017C800 (src/shared) */ - - -DEFINE_func_8017C8B4() /* dedup: shared engine-core @0x8017C8B4 (src/shared) */ - - - -DEFINE_func_8017C910() /* dedup: shared engine-core @0x8017C910 (src/shared) */ - - - -extern void (*D_8018E65C[])(void); - -void func_8017CA80(void *a0) { - D_8018E65C[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80146C3C(void); - - -void func_8017CABC(s32 param_1) { - - extern u8 D_8018E644; - s32 obj = *(s32 *)(param_1 + 0x34); - Work8017 w; - short i; - s32 e; - s32 node; - - func_80146A6C(0x11, (void *)param_1, *(s16 *)(param_1 + 6), - (s16)(*(u16 *)(param_1 + 0xA) - 0x10), - *(s16 *)(param_1 + 0xE), 0, 0); - - w.x = *(u16 *)(param_1 + 6); - w.y = *(u16 *)(param_1 + 0xA); - w.z = *(u16 *)(param_1 + 0xE); - func_800D20C0(&w.x, &w.vx, 10); - *(s16 *)(param_1 + 6) = w.x; - *(s16 *)(param_1 + 0xE) = w.z; - w.vy = 0; - func_800D23D0(&w.vx); - - i = 0; - do { - e = func_80146A6C(0x12, (void *)param_1, *(s16 *)(obj + 6), - *(s16 *)(obj + 0xA), *(s16 *)(obj + 0xE), i, 0); - if (e != 0) { - *(s16 *)(e + 0x12) = w.vx; - *(s16 *)(e + 0x16) = w.vy; - *(s16 *)(e + 0x1A) = 0; - } - i = i + 1; - } while (i < 3); - - node = func_800D222C(param_1, &D_8018E644, 0xFD); - if (node != 0) { - *(s32 *)(param_1 + 0x20) = node; - *(u32 *)(node + 4) = *(u32 *)(node + 4) | 0x5D000100; - ((void (*)(void *))func_8001CF30)((void *)node); - *(s16 *)(node + 0x18) = 0x4000; - *(s16 *)(node + 0x1A) = 0x200; - *(s16 *)(param_1 + 0x16) = 0x200; - *(s16 *)(param_1 + 0x14) = 0x1000; - *(s16 *)(node + 0x28) = 0x240; - *(s16 *)(node + 0x2A) = 0x180; - *(s16 *)(node + 0x10) = w.vx; - *(s16 *)(node + 0x12) = w.vy; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(param_1); - } -} - - -extern void func_80146C3C(void); -void func_8017CC80(u8 *p) { - u8 *q; - s32 t; - s32 b; - q = *(u8 **)(p + 0x20); - *(u16 *)(p + 0x16) = *(u16 *)(p + 0x16) + *(u16 *)(p + 0x14); - if (*(s32 *)(p + 0x1C) < 8) { - *(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x200; - } else { - *(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x51; - } - b = *(u8 *)(q + 0x26) - 2; - *(s16 *)(q + 0x1A) = *(u16 *)(p + 0x16); - *(s8 *)(q + 0x26) = b; - *(s8 *)(q + 0x25) = b; - *(s8 *)(q + 0x24) = b; - t = *(s32 *)(p + 0x1C); - *(s32 *)(p + 0x1C) = t + 1; - if (t >= 0x1E) { - ((void (*)(u8 *))func_80146C3C)(p); - } -} - - - -extern void (*D_8018E664[])(void); - -void func_8017CD14(void *a0) { - D_8018E664[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (41 ins, relocation-masked); frame needed a 0x30 address-taken local - -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80146C3C(void); -extern u8 D_8018E650; - -void func_8017CD50(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018E650, 0x18); - if (r != 0) { - *(s32 *)(a0 + 0x20) = r; - *(u32 *)(r + 4) = *(u32 *)(r + 4) | 0x5C000140; - func_8001CF30((void *)r); - *(s16 *)(r + 0x10) = 0x400; - *(s16 *)(r + 0x18) = 0x3000; - *(s16 *)(r + 0x1A) = 0x3000; - *(s16 *)(r + 0x28) = 0x248; - *(s16 *)(r + 0x2A) = 0x180; - *(s16 *)(a0 + 2) = *(s16 *)(a0 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(a0); - } -} - - -extern void func_80146C3C(void); -void func_8017CDF4(int a0) { - int v0 = *(int *)(a0 + 0x1C); - register unsigned char *p __asm__("$5") = *(unsigned char **)(a0 + 0x20); - *(int *)(a0 + 0x1C) = v0 + 1; - if (v0 >= 0x1F) { - func_80146C3C(); - } else { - unsigned short hv = *(unsigned short *)(p + 0x1A) + 0x1E0; - signed char bv = *(unsigned char *)(p + 0x26) - 3; - *(unsigned short *)(p + 0x1A) = hv; - *(unsigned short *)(p + 0x18) = hv; - *(signed char *)(p + 0x26) = bv; - *(signed char *)(p + 0x25) = bv; - *(signed char *)(p + 0x24) = bv; - } -} - - -typedef struct { s16 vx, vy; } DVEC2_C59C; - - - - - -typedef struct { s16 vx, vy, vz, pad; } SVEC_BEBC; - -extern s32 func_800491EC(void); -extern void func_8017D230(u16 *a0, void *a1); -extern int func_8017D2D4(short *param_1, short *param_2, short *param_3, int param_4); -extern void func_8017D4CC(s32 a0, s32 a1); - -void func_8017CE58(void *a0, void *a1, s32 a2) -{ - SVEC_BEBC corner[4]; - SVEC_BEBC view[4]; - SVEC_BEBC hit[4]; - SVEC_BEBC org; - SVEC_BEBC eye; - s16 *rect = (s16 *)a0; - s32 i; - s32 x0, y0, x1, y1; - s16 m; - s32 d; - s32 z; - s16 u, v; - s32 mnx, mnz, mxx, mxz; - - x0 = rect[0]; - y0 = rect[1]; - x1 = x0 + rect[2]; - y1 = y0 + rect[3]; - m = (rect[2] < rect[3]) ? rect[3] : rect[2]; - d = (s16)(m / 20); - z = func_800491EC(); - - corner[0].vx = x0; corner[0].vy = y0; corner[0].vz = z; - corner[1].vx = x1; corner[1].vy = y0; corner[1].vz = z; - corner[2].vx = x0; corner[2].vy = y1; corner[2].vz = z; - corner[3].vx = x1; corner[3].vy = y1; corner[3].vz = z; - - org.vx = 0; - org.vy = 0; - org.vz = 0; - func_8017D230((u16 *)&org, &eye); - - for (i = 0; i < 4; i++) { - func_8017D230((u16 *)&corner[i], &view[i]); - if (func_8017D2D4((short *)&eye, (short *)&view[i], (short *)&hit[i], a2)) { - func_8017D4CC((s32)&hit[i], (s32)&corner[i]); - corner[i].vx = (corner[i].vx < x0 - d) ? (x0 - d) - : ((corner[i].vx > x1 + d) ? (x1 + d) : corner[i].vx); - corner[i].vy = (corner[i].vy < y0 - d) ? (y0 - d) - : ((corner[i].vy > y1 + d) ? (y1 + d) : corner[i].vy); - func_8017D230((u16 *)&corner[i], &view[i]); - func_8017D2D4((short *)&eye, (short *)&view[i], (short *)&hit[i], a2); - } - } - - v = (hit[2].vx > hit[3].vx) ? hit[3].vx : hit[2].vx; - u = (hit[0].vx > hit[1].vx) ? hit[1].vx : hit[0].vx; - if (u > v) u = v; - mnx = u; - if (eye.vx < mnx) mnx = eye.vx; - - v = (hit[2].vz > hit[3].vz) ? hit[3].vz : hit[2].vz; - u = (hit[0].vz > hit[1].vz) ? hit[1].vz : hit[0].vz; - if (u > v) u = v; - mnz = u; - if (eye.vz < mnz) mnz = eye.vz; - - v = (hit[2].vx < hit[3].vx) ? hit[3].vx : hit[2].vx; - u = (hit[0].vx < hit[1].vx) ? hit[1].vx : hit[0].vx; - if (u < v) u = v; - mxx = u; - if (mxx < eye.vx) mxx = eye.vx; - - v = (hit[2].vz < hit[3].vz) ? hit[3].vz : hit[2].vz; - u = (hit[0].vz < hit[1].vz) ? hit[1].vz : hit[0].vz; - if (u < v) u = v; - mxz = u; - if (mxz < eye.vz) mxz = eye.vz; - - ((s16 *)a1)[0] = mnx; - ((s16 *)a1)[1] = mnz; - ((s16 *)a1)[2] = mxx - mnx; - ((s16 *)a1)[3] = mxz - mnz; -} - - -extern void ReadRotMatrix(void *a0); -extern void PushMatrix(void); -extern void func_8004974C(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void PopMatrix(void); -void func_8017D230(u16 *a0, void *a1) { - s32 mat[8]; - s32 buf[8]; - s16 sv[4]; - ReadRotMatrix((void *)mat); - PushMatrix(); - sv[0] = (s16)(a0[0] - *(s32 *)((u8 *)mat + 0x14)); - sv[1] = (s16)(a0[1] - *(s32 *)((u8 *)mat + 0x18)); - sv[2] = (s16)(a0[2] - *(s32 *)((u8 *)mat + 0x1C)); - func_8004974C((void *)mat, (void *)buf); - ApplyMatrixSV((void *)buf, (void *)sv, a1); - PopMatrix(); -} - - -int func_8017D2D4(short *param_1, short *param_2, short *param_3, int param_4) { - register int i2o __asm__("$5"); - register int i4o __asm__("$9"); - short sVar1; int rx, rz, uVar5; - i4o = param_2[1]; - __asm__ __volatile__("" : : "r"(i4o)); - i2o = param_1[1]; uVar5 = 0; - if (i2o >= i4o) { - rx = param_1[0] - i2o * (param_2[0] - param_1[0]); - rz = param_1[2] - i2o * (param_2[2] - param_1[2]); - } else { - register int den __asm__("$3"); - int p2x = param_2[0], p2z = param_2[2]; - den = i2o - i4o; - rx = p2x + i4o * (p2x - param_1[0]) / den; - rz = p2z + i4o * (p2z - param_1[2]) / den; - } - if (rx >= -0x7fff) { i2o = 0x7fff; if (rx < 0x8000) i2o = rx; } - else i2o = -0x7fff; - *param_3 = (short)i2o; - if (rz >= -0x7fff) { i2o = 0x7fff; if (rz < 0x8000) i2o = rz; } - else i2o = -0x7fff; - param_3[2] = (short)i2o; param_3[1] = 0; sVar1 = (short)param_4; - if ((int)*param_3 < *param_1 - param_4) { uVar5 = 0xffffffff; *param_3 = *param_1 - sVar1; } - if (*param_1 + param_4 < (int)*param_3) { uVar5 = 0xffffffff; *param_3 = *param_1 + sVar1; } - if ((int)param_3[2] < param_1[2] - param_4) { uVar5 = 0xffffffff; param_3[2] = param_1[2] - sVar1; } - if (param_1[2] + param_4 < (int)param_3[2]) { uVar5 = 0xffffffff; param_3[2] = param_1[2] + sVar1; } - return uVar5; -} - - -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); -void func_8017D4CC(s32 a0, s32 a1) { - s32 ofx; - s32 ofy; - s32 sxy; - s32 p; - ReadGeomOffset(&ofx, &ofy); - func_8004921C(0, 0); - RotTransPers(a0, a1, &sxy, &p); - func_8004921C(ofx, ofy); -} - - - -/* func_8017D538 — ov_SC02_003_jr_8017AE2C — MAP-TILE model renderer (947 ins). -* Family clone of the byte-matched func_8017C6F4 (ov_SC03_126, s43). Same 947-ins body; - * only the D_* cell-table and the rect-helper callee differ per overlay (s43 wave remap). - * Outer: screen rect -> 64x64 cell grid window -> per-cell bbox RTPT/RTPS cull. - * Inner: per-prim RTPT -> flag/nclip/opz cull -> switch(w & 0xF): - * 0,1=POLY_F4 / 2,3=POLY_FT4 / 4,5=POLY_F3 / 6,7=POLY_FT3 -> OT insert. - * NOTE: the F3 arm bbox-tests the packet through PFT3_D538 offsets (8/0x10/0x18) - * — a source-level copy/paste quirk of this variant, reproduced verbatim. - * - * MATCH (947 ins, pin-free) — s43 Fable crack. Two load-bearing source shapes - * (byte-proven; see .run/s43/fable/8017C6F4/NOTES.md): - * 1. X-pass and Y-pass bbox min/max intermediates are DISTINCT variables - * (xmn1..xmx2 vs ymn1..ymx2) — the target allocates them differently. - * 2. The cell-level clamps REUSE the prim-loop vars (mn/mx for X, mny/my - * for Y); there are no separate mnc/mxc. This puts the clamps in - * $t0/$a2/$a3/$a1 and makes the Y-pass `mny = ymn1` a deleted self-move. - * Neither change matches alone (63 / 624 mismatches); prim lands $t5 and - * cell $t3 naturally once the bbox block allocates right. - */ - -typedef struct { u32 w0, w1, w2; } PrimD538; -typedef struct { u8 *vtx; u32 f4; u32 xx, yy, zz; PrimD538 *prim, *end; } CellD538; - -typedef struct { s16 vx, vy; } DVEC2_D538; -typedef struct { s16 vx, vy, vz, pad; } SVEC2_D538; -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_D538; -typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2; } PF3_D538; -typedef struct { u32 tag, rgbc; s16 x0, y0, x1, y1, x2, y2, x3, y3; } PF4_D538; -typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; } PFT3_D538; -typedef struct { u32 tag, rgbc; s16 x0, y0; u32 uvc0; s16 x1, y1; u32 uvp1; s16 x2, y2; u16 uv2, p2; s16 x3, y3; u16 uv3, p3; } PFT4_D538; - -#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_avsz3() __asm__ volatile ("nop;nop;avsz3") -#define gte_avsz4() __asm__ volatile ("nop;nop;avsz4") - -#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_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_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_8017D538(s32 arg0) -{ - extern s32 func_800491EC(void); - extern void func_800547D8(s32, MTX_D538 *); - extern void func_80052E38(MTX_D538 *); - extern void func_8017CE58(void *, void *, s32); - extern u8 D_801E8678[]; - extern u8 *D_800A5E60; - extern u8 D_800A6610[]; - extern short D_800B9A02; - - s16 rect[4]; - DVEC2_D538 tmpxy[4]; - SVEC2_D538 box[8]; - SVEC2_D538 sxy[8]; - MTX_D538 mtx; - struct { long flag, opz, sz0, sz1, sz2, sz3; } g; - - s32 cx0, cx1, cy0, cy1, y, col; - CellD538 **rowptr; - CellD538 **p; - CellD538 *cell; - PrimD538 *prim; - PrimD538 *end; - u8 *pkt; - u32 ot; - u8 *vtx; - u8 *va, *vb, *vc, *vd; - u32 w, code; - u32 wx, wy, wz; - u32 xlo, xhi, ylo, yhi, zlo, zhi; - s32 xa32, xb32, t32; - s32 xmn1, xmx1, xmn2, xmx2; - s32 ymn1, ymx1, ymn2, ymx2; - s32 my, mny, mx, mn; - - func_800491EC(); - func_800547D8(arg0 + 0x10, &mtx); - func_80052E38(&mtx); - func_8017CE58(D_801E8678, rect, *(s32 *)(arg0 + 0x60)); - - pkt = D_800A5E60; - ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14]; - - cx0 = (rect[0] + 0x4000) / 512; - cx1 = (rect[0] + rect[2] + 0x4000) / 512 + 2; - cx0 = (cx0 < 0) ? 0 : ((cx0 > 0x3F) ? 0x3F : cx0); - cx1 = (cx1 < 0) ? 0 : ((cx1 > 0x3F) ? 0x3F : cx1); - cy0 = (rect[1] + 0x4000) / 512 - 1; - cy1 = (rect[1] + rect[3] + 0x4000) / 512 + 2; - cy0 = (cy0 < 0) ? 0 : ((cy0 > 0x3F) ? 0x3F : cy0); - cy1 = (cy1 < 0) ? 0 : ((cy1 > 0x3F) ? 0x3F : cy1); - - rowptr = (CellD538 **)(*(s32 *)(arg0 + 0xC)) + (cy0 * 64 + cx0); - - for (y = cy0; y < cy1; y++, rowptr += 0x40) { - for (col = cx0, p = rowptr; col < cx1; col++, p++) { - cell = *p; - if (cell == 0) continue; - - wx = cell->xx; - xlo = wx & 0xFFFF; - xhi = wx >> 16; - wy = cell->yy; - ylo = wy & 0xFFFF; - yhi = wy >> 16; - wz = cell->zz; - zlo = wz & 0xFFFF; - zhi = wz >> 16; - - box[0].vx = xlo; box[0].vy = ylo; box[0].vz = zlo; - box[1].vx = xhi; box[1].vy = ylo; box[1].vz = zlo; - box[2].vx = xlo; box[2].vy = ylo; box[2].vz = zhi; - box[3].vx = xhi; box[3].vy = ylo; box[3].vz = zhi; - box[4].vx = xlo; box[4].vy = yhi; box[4].vz = zlo; - box[5].vx = xhi; box[5].vy = yhi; box[5].vz = zlo; - box[6].vx = xlo; box[6].vy = yhi; box[6].vz = zhi; - box[7].vx = xhi; box[7].vy = yhi; box[7].vz = zhi; - - 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]); - gte_rtpt(); - gte_stsxy3(&sxy[4], &sxy[5], &sxy[6]); - gte_ldv0(&box[7]); - gte_rtps(); - gte_stsxy(&sxy[7]); - - 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; - mn = xmn1; - if (xmn2 < mn) mn = xmn2; - mx = xmx1; - if (mx < xmx2) mx = xmx2; - if (mx < -0xA0) continue; - if (!(mn < 0xA1)) continue; - - xa32 = sxy[0].vy; - xb32 = sxy[1].vy; - if (xb32 < xa32) { ymx1 = xa32; ymn1 = xb32; } else { ymn1 = xa32; ymx1 = xb32; } - t32 = sxy[2].vy; - if (ymx1 < t32) ymx1 = t32; else if (t32 < ymn1) ymn1 = t32; - t32 = sxy[3].vy; - if (ymx1 < t32) ymx1 = t32; else if (t32 < ymn1) ymn1 = t32; - xa32 = sxy[4].vy; - xb32 = sxy[5].vy; - if (xb32 < xa32) { ymx2 = xa32; ymn2 = xb32; } else { ymn2 = xa32; ymx2 = xb32; } - t32 = sxy[6].vy; - if (ymx2 < t32) ymx2 = t32; else if (t32 < ymn2) ymn2 = t32; - t32 = sxy[7].vy; - if (ymx2 < t32) ymx2 = t32; else if (t32 < ymn2) ymn2 = t32; - mny = ymn1; - if (ymn2 < mny) mny = ymn2; - my = ymx1; - if (my < ymx2) my = ymx2; - if (my < -0x78) continue; - if (!(mny < 0x79)) continue; - - prim = cell->prim; - end = cell->end; - vtx = cell->vtx; - while (prim < end) { - 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 & 0xF; - vd = vtx + ((w & 0xFFF0) >> 1); - 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 (((PFT3_D538 *)pkt)->x0 > ((PFT3_D538 *)pkt)->x1) { - mx = ((PFT3_D538 *)pkt)->x0; - mn = ((PFT3_D538 *)pkt)->x1; - } else { - mn = ((PFT3_D538 *)pkt)->x0; - mx = ((PFT3_D538 *)pkt)->x1; - } - if (((PFT3_D538 *)pkt)->x2 > mx) mx = ((PFT3_D538 *)pkt)->x2; - else if (((PFT3_D538 *)pkt)->x2 < mn) mn = ((PFT3_D538 *)pkt)->x2; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PFT3_D538 *)pkt)->y0 > ((PFT3_D538 *)pkt)->y1) { - my = ((PFT3_D538 *)pkt)->y0; - mny = ((PFT3_D538 *)pkt)->y1; - } else { - mny = ((PFT3_D538 *)pkt)->y0; - my = ((PFT3_D538 *)pkt)->y1; - } - if (((PFT3_D538 *)pkt)->y2 > my) my = ((PFT3_D538 *)pkt)->y2; - else if (((PFT3_D538 *)pkt)->y2 < mny) mny = ((PFT3_D538 *)pkt)->y2; - if (my >= -0x78 && mny < 0x79) { - s32 za; - 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; - ((PF3_D538 *)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_stsxy3c(&tmpxy[0]); - gte_stsz3(&g.sz0, &g.sz1, &g.sz2); - 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 (mx >= -0xA0 && mn < 0xA1) { - 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; - if (my >= -0x78 && mny < 0x79) { - s32 za; - u32 *otp; - u32 *tp; - gte_avsz3(); - 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 != 6) g.opz = za + 0x200; - *(u32 *)&((PFT3_D538 *)pkt)->x0 = *(u32 *)&tmpxy[0]; - *(u32 *)&((PFT3_D538 *)pkt)->x1 = *(u32 *)&tmpxy[1]; - *(u32 *)&((PFT3_D538 *)pkt)->x2 = *(u32 *)&tmpxy[2]; - tp = (u32 *)prim->w0; - ((PFT3_D538 *)pkt)->rgbc = tp[0]; - ((PFT3_D538 *)pkt)->uvc0 = tp[1]; - ((PFT3_D538 *)pkt)->uvp1 = tp[2]; - ((PFT3_D538 *)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_f3(pkt); - gte_ldv0(vd); - gte_rtps(); - if (((PF4_D538 *)pkt)->x0 > ((PF4_D538 *)pkt)->x1) { - mx = ((PF4_D538 *)pkt)->x0; - mn = ((PF4_D538 *)pkt)->x1; - } else { - mn = ((PF4_D538 *)pkt)->x0; - mx = ((PF4_D538 *)pkt)->x1; - } - if (((PF4_D538 *)pkt)->x2 > mx) mx = ((PF4_D538 *)pkt)->x2; - else if (((PF4_D538 *)pkt)->x2 < mn) mn = ((PF4_D538 *)pkt)->x2; - if (((PF4_D538 *)pkt)->y0 > ((PF4_D538 *)pkt)->y1) { - my = ((PF4_D538 *)pkt)->y0; - mny = ((PF4_D538 *)pkt)->y1; - } else { - mny = ((PF4_D538 *)pkt)->y0; - my = ((PF4_D538 *)pkt)->y1; - } - if (((PF4_D538 *)pkt)->y2 > my) my = ((PF4_D538 *)pkt)->y2; - else if (((PF4_D538 *)pkt)->y2 < mny) mny = ((PF4_D538 *)pkt)->y2; - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); - gte_stsxy((long *)&((PF4_D538 *)pkt)->x3); - if (((PF4_D538 *)pkt)->x3 < mn) mn = ((PF4_D538 *)pkt)->x3; - else if (mx < ((PF4_D538 *)pkt)->x3) mx = ((PF4_D538 *)pkt)->x3; - if (mx >= -0xA0 && mn < 0xA1) { - if (((PF4_D538 *)pkt)->y3 < mny) mny = ((PF4_D538 *)pkt)->y3; - else if (my < ((PF4_D538 *)pkt)->y3) my = ((PF4_D538 *)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; - if (code != 0) g.opz = za + 0x200; - ((PF4_D538 *)pkt)->rgbc = prim->w0; - otp = (u32 *)(((g.opz >> 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(); - gte_stflg(&g.flag); - if (!(g.flag & 0x7F85E000)) { - gte_stsxy(&tmpxy[3]); - gte_stsz4(&g.sz0, &g.sz1, &g.sz2, &g.sz3); - 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[3].vx > mx) mx = tmpxy[3].vx; - else if (tmpxy[3].vx < mn) mn = tmpxy[3].vx; - if (mx >= -0xA0 && mn < 0xA1) { - 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; - if (tmpxy[3].vx > my) my = tmpxy[3].vx; - else if (tmpxy[3].vx < mny) mny = tmpxy[3].vx; - if (my >= -0x78 && mny < 0x79) { - s32 za, zb; - u32 *otp; - u32 *tp; - u32 uvw; - gte_avsz4(); - 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 != 2) g.opz = za + 0x200; - *(u32 *)&((PFT4_D538 *)pkt)->x0 = *(u32 *)&tmpxy[0]; - *(u32 *)&((PFT4_D538 *)pkt)->x1 = *(u32 *)&tmpxy[1]; - *(u32 *)&((PFT4_D538 *)pkt)->x2 = *(u32 *)&tmpxy[2]; - *(u32 *)&((PFT4_D538 *)pkt)->x3 = *(u32 *)&tmpxy[3]; - tp = (u32 *)prim->w0; - ((PFT4_D538 *)pkt)->rgbc = tp[0]; - ((PFT4_D538 *)pkt)->uvc0 = tp[1]; - ((PFT4_D538 *)pkt)->uvp1 = tp[2]; - uvw = tp[3]; - ((PFT4_D538 *)pkt)->uv2 = uvw; - ((PFT4_D538 *)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; - } - } - } - prim++; - } - } - } - D_800A5E60 = pkt; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (relocation-masked, 70 ins). pins $s0/$s1 + precomputed a0v anchored in a zero-byte barrier fix the prologue schedule. - -DEFINE_func_8017E404() /* dedup: shared engine-core @0x8017E404 (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH expected (modeled on byte-proven DEFINE_func_8012E504 idiom: D_801202A0 base, 0x6480 end, 0x10C stride for-loop) - -extern u8 D_801202A0[]; -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); - -void func_8017E51C(s32 a0) { - s32 p; - s32 end; - s32 v; - v = *(u16 *)a0; - p = (s32)D_801202A0; - end = (s32)D_801202A0 + 0x6480; - for (; p != end; p += 0x10C) { - if (p != a0) { - if (*(u16 *)p == v) { - if (func_8017E404(a0, p) != 0) { - break; - } - } - } - } - ((void (*)(s32))func_8012AE00)(p); -} - - - -extern int rand(void); -extern void func_8012B2CC(); -extern void func_8012B23C(); -extern void func_8012B14C(); -extern void func_8012A828(); -extern void func_801803B0(); -extern u8 D_8018E68C[]; -extern u8 D_801A648C[]; - -void func_8017E5AC(int param_1) -{ - *(u8 *)(param_1 + 0xc1) = 0; - *(s16 *)(param_1 + 2) = 1; - *(s16 *)(param_1 + 0x34) = 0; - *(s32 *)(param_1 + 0x1c) = (rand() & 0x1f) + 0x46; - *(s16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe2) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 3: - case 7: - if (*(u16 *)(param_1 + 0xfe) & 2) { - *(s16 *)(param_1 + 0xe2) = 0; - } - goto L_default; - case 5: - func_801803B0(param_1); - break; - case 4: - case 6: - default: - L_default: - *(s16 *)(param_1 + 0xe4) = 0x1e; - *(s16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = 0xaa10; - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012B14C(param_1, D_8018E68C); - func_8012A828(param_1, D_801A648C); - break; - } - *(s16 *)(param_1 + 0x34) = 3; - { - u16 tmp = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - *(s16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe2) = (tmp + 0x800) & 0xfff; - } - *(u16 *)(param_1 + 0xe4) = (rand() & 0x1f) + 0x1e; - *(s32 *)(param_1 + 0x1c) = 0x16; -} - - -extern int rand(void); -extern void func_8012B2CC(); -extern void func_8012B23C(); -extern void func_8012B14C(); -extern void func_8012A828(); -extern void func_801803B0(); -extern u8 D_8018E68C[]; -extern u8 D_801A648C[]; -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern s32 ratan2(s32, s32); - -void func_8017E6D8(int param_1) -{ - s32 angle; - s32 r; - - if (*(s16 *)(param_1 + 6) >= 0x201) { - *(u8 *)(param_1 + 0xc1) = 0; - *(s16 *)(param_1 + 2) = 1; - *(s16 *)(param_1 + 0x34) = 0; - *(s32 *)(param_1 + 0x1c) = (rand() & 0x1f) + 0x46; - *(s16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe2) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 3: - case 7: - if (*(u16 *)(param_1 + 0xfe) & 2) { - *(s16 *)(param_1 + 0xe2) = 0; - } - goto L_defA; - case 5: - func_801803B0(param_1); - break; - case 4: - case 6: - default: - L_defA: - *(s16 *)(param_1 + 0xe4) = 0x1e; - *(s16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = 0xaa10; - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012B14C(param_1, D_8018E68C); - func_8012A828(param_1, D_801A648C); - break; - } - *(s16 *)(param_1 + 0x34) = 4; - angle = (ratan2((s32)*(s16 *)(param_1 + 0xe) - (s32)D_8018E6D0, - (s32)D_8018E6CC - (s32)*(s16 *)(param_1 + 6)) - - 0x400) & - 0xfff; - } else { - r = (rand() & 0x7ff) - 0x400; - *(u8 *)(param_1 + 0xc1) = 0; - *(s16 *)(param_1 + 2) = 1; - *(s16 *)(param_1 + 0x34) = 0; - *(s32 *)(param_1 + 0x1c) = (rand() & 0x1f) + 0x46; - *(s16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe2) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 3: - case 7: - if (*(u16 *)(param_1 + 0xfe) & 2) { - *(s16 *)(param_1 + 0xe2) = 0; - } - goto L_defB; - case 5: - func_801803B0(param_1); - break; - case 4: - case 6: - default: - L_defB: - *(s16 *)(param_1 + 0xe4) = 0x1e; - *(s16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = 0xaa10; - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012B14C(param_1, D_8018E68C); - func_8012A828(param_1, D_801A648C); - break; - } - *(s16 *)(param_1 + 0x34) = 3; - angle = ((ratan2((s32)*(s16 *)(param_1 + 0xe) - (s32)D_8018E6D0, - (s32)D_8018E6CC - (s32)*(s16 *)(param_1 + 6)) - - 0x400) & - 0xfff) + - r; - } - *(u16 *)(param_1 + 0xe2) = angle; - *(s16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe4) = (rand() & 0x1f) + 0x1e; - *(s32 *)(param_1 + 0x1c) = 0x10; -} - - -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern u16 D_80126B5E; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 ratan2(s32, s32); -s32 func_8017E958(s32 param_1, s32 param_2) { - s32 local_20[2] = {0x3c100, 0x51000}; - s32 iVar1; - s32 iVar2; - if ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18 == 4) { - iVar1 = ((s32 (*)(s32, void *))func_80013478)(param_1 + 4, &D_8018E6CC); - if (param_2 == 1) { - iVar2 = ratan2((s32)*(s16 *)(param_1 + 0xe) - (s32)D_8018E6D0, - (s32)D_8018E6CC - (s32)*(s16 *)(param_1 + 6)); - if ((((u32)iVar2 - 0x400U) & 0xfff) - 0x381 < 0xff && 0x2df < (*(s16 *)&D_80126B5E) && - 0x3c100 < iVar1) { return 1; } - } - if (local_20[param_2] < iVar1 && *(s32 *)(param_1 + 0xe8) < iVar1) { - *(s32 *)(param_1 + 0xe8) = iVar1; return 1; - } - *(s32 *)(param_1 + 0xe8) = iVar1; - } - return 0; -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8017EA84.c b/src/ov_SC02_003/ov_SC02_003_jr_8017EA84.c deleted file mode 100644 index d39540a3e..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8017EA84.c +++ /dev/null @@ -1,3411 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); - /* 0x34 */ - /* 0x20 */ -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(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_8018E1B0[])(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_8018E174; -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_8018E1E0[])(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_8018E21C[])(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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E7F7C; -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_801E7FA4; -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_801E7F60; -extern s32 func_8017A3B0(void); -extern short D_801E7F9C; -extern short D_801E7F98; -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_801E8758; -extern s16 D_801E875A; -extern s16 D_801E8764; -extern void func_8017AE2C(s32 param_1); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -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_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; -extern void func_8017B7A8(void); -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -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_801E7F84; -extern SV4 D_801E7F8C; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E7FAC[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_801E7FA8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018E5DC[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void func_8017BEBC(void *a0); -extern void (*D_8018E614[])(void); -extern void func_8017BEF8(void *a0); -extern void func_8017BF34(void *a0); -extern void func_8017C218(int); -extern void func_8017BF84(int param_1); -extern void func_8017BFE0(Ent_8017BFE0_8017BFE0 *param_1); -extern void func_8017C064(void *a0); -extern void func_8017C1CC(int param_1); -extern void func_8017C218(int param_1); -extern void (*D_8018E628[])(void); -extern void func_8017C524(void *a0); -extern void func_8017C560(void *a0); -extern void func_8017C5A0(void *a0); -extern void func_8017C610(void *a0); -extern void func_8017C69C(void *a0); -extern void func_8017C770(void *a0); -extern void (*D_8018E63C[])(void); -extern void func_8017C7C4(void *a0); -extern void func_8017C800(void *a0); -extern void func_8017C910(void *a0); -extern void func_8017C8B4(void *a0); -extern void (*D_8018E65C[])(void); -extern void func_8017CA80(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_8017CABC(s32 param_1); -extern void func_8017CC80(u8 *p); -extern void (*D_8018E664[])(void); -extern void func_8017CD14(void *a0); -extern u8 D_8018E650; -extern void func_8017CD50(s32 a0); -extern void func_8017CDF4(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_8017D230(u16 *a0, void *a1); -extern int func_8017D2D4(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_8017D4CC(s32 a0, s32 a1); -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_8017E404(s32 param_1, s32 param_2); -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern void func_8017E51C(s32 a0); -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8017E958(s32 param_1, s32 param_2); -/* ==== end §8b carried decl layer ==== */ - - -// @class: struct -// @stuck: none — big state machine (5-state switch), modeled on the exact call/loop/field idioms -// already byte-proven in this same TU (func_8017E404 / func_8017E51C / func_8017E958). - -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8017E958(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012CBA4(s32 a0); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012BCCC(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -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_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8017F5A0(s32 a0); -extern void func_8017F5E4(s32 a0); -extern void func_801803B0(void); -extern void func_8017E6D8(s32 a0); -extern void func_8017E5AC(s32 a0); -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 ratan2(s32, s32); -extern s32 rand(void); - -extern u8 D_801202A0[]; -extern char D_8018E68C[]; -extern char D_8018E698[]; -extern char D_8018E680[]; -extern char D_801A65BC[]; -extern char D_801A6534[]; -extern char D_801A648C[]; -extern s32 D_801E8008; -extern s32 D_801270D4; -extern u16 D_80126B5E; -extern s16 D_8018E6E4; -extern s16 D_8018E6E8; - -void func_8017EA84(s32 a0) -{ - s32 v0; - s32 state; - - v0 = *(u16 *)(a0 + 0xE0); - state = *(u16 *)(a0 + 0x34); - *(u16 *)(a0 + 0xE0) = v0 + 1; - - switch (state) { - case 0: - { - s32 v0; - - if (func_8017E958(a0, 0) != 0) { - func_8017E6D8(a0); - return; - } - - if (*(s16 *)(a0 + 0xE0) < 9) { - register s32 ptr20 __asm__("$2") = *(s32 *)(a0 + 0x20); - s32 arg1 = *(s16 *)(a0 + 0xE2); - s32 r; - r = func_8012B608(*(s16 *)(ptr20 + 0x12), arg1, 6); - { - s32 ptr20b = *(s32 *)(a0 + 0x20); - *(u16 *)(ptr20b + 0x12) = *(u16 *)(ptr20b + 0x12) + r; - } - } else { - char *snd = D_8018E68C; - if (*(u16 *)(a0 + 0xFE) & 2) { - snd = D_8018E698; - } - func_8012B14C(a0, (s32) snd); - } - - v0 = ((s32(*)(s32)) func_8012CBA4)(a0); - D_801E8008 = v0; - { - s32 flag; - if (v0 == 0 || (v0 & 0x4000) != 0) { - *(s32 *)(a0 + 4) = *(s32 *)(a0 + 0x38); - *(s32 *)(a0 + 8) = *(s32 *)(a0 + 0x3C); - *(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40); - flag = 1; - } else { - flag = 0; - } - - if (flag != 0) { - func_8017E5AC(a0); - return; - } - } - - { - s32 p, end, v; - p = (s32) D_801202A0; - end = (s32) D_801202A0 + 0x6480; - v = *(u16 *)a0; - for (; p != end; p += 0x10C) { - if (p != a0) { - if (*(u16 *)p == v) { - if (func_8017E404(a0, p) != 0) { - break; - } - } - } - } - ((void(*)(s32)) func_8012AE00)(p); - } - - if (*(s16 *)(a0 + 0xE0) >= 0x3C) { - *(u16 *)(a0 + 0xE0) = 0; - if (*(u16 *)(a0 + 0xFE) & 2) { - *(u16 *)(a0 + 0xE2) = 0; - } else { - s32 v1; - v0 = rand(); - v1 = *(s32 *)(a0 + 0x20); - v1 = *(u16 *)(v1 + 0x12); - v0 = v0 & 0x800; - v1 = v1 + v0; - v1 = v1 - 0x400; - *(u16 *)(a0 + 0xE2) = v1; - } - } - - v0 = *(u16 *)(a0 + 0xE4) - 1; - *(u16 *)(a0 + 0xE4) = v0; - if ((s16) v0 > 0) { - return; - } - if (*(u16 *)(a0 + 0xFE) & 2) { - return; - } - - v0 = func_8012BCCC(a0); - if (v0 > 0x10000) { - return; - } - - if ((s32)((u32)*(u16 *)(a0 + 0x70) << 0x10) >> 0x18 == 4) { - if (D_801270D4 != 0) { - return; - } - } - - if ((*(u16 *)(a0 + 0xFE) & 1) == 0) { - func_8012A828(a0, &D_801A65BC); - *(u16 *)(a0 + 2) = 1; - *(u16 *)(a0 + 0x34) = 1; - *(s32 *)(a0 + 0x1C) = 0x19; - *(u16 *)(a0 + 0xFE) = *(u16 *)(a0 + 0xFE) | 1; - return; - } - - *(u16 *)(a0 + 0x5C) = 0xAA10; - *(u16 *)(a0 + 2) = 1; - *(u16 *)(a0 + 0x34) = 2; - *(u16 *)(a0 + 0x5E) = 0; - *(s32 *)(a0 + 0x1C) = 0x1E; - func_8012A828(a0, &D_801A6534); - *(u16 *)(a0 + 0xFC) = 0; - return; - } - - case 1: - { - s32 v0; - s32 ptr20; - - v0 = func_8012B8E4(a0, 4); - ptr20 = *(s32 *)(a0 + 0x20); - *(u16 *)(ptr20 + 0x12) = *(u16 *)(ptr20 + 0x12) + v0; - - if (*(s32 *)(a0 + 0x1C) == 0xF) { - func_8002D4C8(0x6A9, 0); - func_80142414(a0, -0x78); - } - - if (func_8012BEE8(a0) == 0) { - return; - } - - *(u16 *)(a0 + 0x5C) = 0xAA10; - *(u16 *)(a0 + 2) = 1; - *(u16 *)(a0 + 0x34) = 2; - *(u16 *)(a0 + 0xE0) = 0; - *(u16 *)(a0 + 0x5E) = 0; - *(s32 *)(a0 + 0x1C) = 0x1E; - func_8012A828(a0, &D_801A6534); - *(u16 *)(a0 + 0xFC) = 0; - return; - } - - case 2: - { - s32 v0; - - if (func_8017E958(a0, 1) != 0) { - func_8017E6D8(a0); - return; - } - - { - s32 v0 = ((s32(*)(s32)) func_8012CBA4)(a0); - s32 flag; - D_801E8008 = v0; - if (v0 == 0 || (v0 & 0x4000) != 0) { - *(s32 *)(a0 + 4) = *(s32 *)(a0 + 0x38); - *(s32 *)(a0 + 8) = *(s32 *)(a0 + 0x3C); - *(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40); - flag = 1; - } else { - flag = 0; - } - - if (flag != 0) { - func_8017E5AC(a0); - return; - } - } - - { - s32 p, end, v; - p = (s32) D_801202A0; - end = (s32) D_801202A0 + 0x6480; - v = *(u16 *)a0; - for (; p != end; p += 0x10C) { - if (p != a0) { - if (*(u16 *)p == v) { - if (func_8017E404(a0, p) != 0) { - break; - } - } - } - } - ((void(*)(s32)) func_8012AE00)(p); - } - - if ((s32)((u32)*(u16 *)(a0 + 0x70) << 0x10) >> 0x18 == 4 && - *(s16 *)&D_80126B5E >= 0x220) { - s32 ang; - register s32 v1 __asm__("$3"); - s32 arg1; - ang = ratan2((s32)*(s16 *)(a0 + 0xE) - (s32)D_8018E6E8, - (s32)D_8018E6E4 - (s32)*(s16 *)(a0 + 6)); - arg1 = (ang - 0x400) & 0xFFF; - v1 = *(s32 *)(a0 + 0x20); - v0 = func_8012B608(*(s16 *)(v1 + 0x12), arg1, 6); - { - s32 v1b = *(s32 *)(a0 + 0x20); - *(u16 *)(v1b + 0x12) = *(u16 *)(v1b + 0x12) + v0; - } - } else if (*(s32 *)(a0 + 0x1C) >= 0x16) { - s32 t; - v0 = func_8012B8E4(a0, 6); - t = *(s32 *)(a0 + 0x20); - *(u16 *)(t + 0x12) = *(u16 *)(t + 0x12) + v0; - } - - func_8012B14C(a0, (s32) D_8018E680); - - { - s32 fc; - fc = *(u16 *)(a0 + 0xFC) - 1; - *(u16 *)(a0 + 0xFC) = fc; - if ((s16) fc <= 0) { - func_80143B6C(a0, 0); - *(u16 *)(a0 + 0xFC) = 8; - } - } - - if (*(s16 *)(a0 + 0xE0) >= 0x5A) { - s32 sub; - s32 v1; - *(u16 *)(a0 + 0xE0) = 0; - *(u8 *)(a0 + 0xC1) = 0; - *(u16 *)(a0 + 2) = 1; - *(u16 *)(a0 + 0x34) = 0; - v0 = rand(); - v1 = *(s32 *)(a0 + 0x20); - v0 = (v0 & 0x1F) + 0x46; - *(s32 *)(a0 + 0x1C) = v0; - v0 = *(u16 *)(a0 + 0x70); - *(u16 *)(a0 + 0xE0) = 0; - v1 = *(u16 *)(v1 + 0x12); - *(u16 *)(a0 + 0xE2) = v1; - sub = (s32)((u32)v0 << 0x10) >> 0x18; - switch (sub) { - case 0: - case 1: - case 2: - case 3: - case 7: - if (*(u16 *)(a0 + 0xFE) & 2) { - *(u16 *)(a0 + 0xE2) = 0; - } - break; - case 4: - case 6: - goto shared_4_6_a; - case 5: - ((void(*)(s32)) func_801803B0)(a0); - goto after_aa10_a; - } - shared_4_6_a: - *(u16 *)(a0 + 0xE4) = 0x1E; - *(u16 *)(a0 + 0x5E) = 0; - *(u16 *)(a0 + 0x5C) = 0xAA10; - func_8012B2CC(a0); - func_8012B23C(a0); - func_8012B14C(a0, (s32) D_8018E68C); - func_8012A828(a0, &D_801A648C); - after_aa10_a:; - } - - if (func_8012BEE8(a0) != 0) { - *(u16 *)(a0 + 0x5C) = 0xAA10; - *(u16 *)(a0 + 2) = 1; - *(u16 *)(a0 + 0x34) = 2; - *(u16 *)(a0 + 0x5E) = 0; - *(s32 *)(a0 + 0x1C) = 0x1E; - func_8012A828(a0, &D_801A6534); - *(u16 *)(a0 + 0xFC) = 0; - return; - } - - { - s32 flag = 0x400; - if (((s32)((u32)*(u16 *)(a0 + 0x70) << 0x10) >> 0x18) == 1) { - flag = 0x200; - if (func_8012BD3C(a0, flag, 0x3100) == 0) { - return; - } - func_8017F5E4(a0); - return; - } - if (func_8012BD3C(a0, flag, 0x1000) == 0) { - return; - } - func_8017F5A0(a0); - return; - } - } - - case 3: - { - s32 v0; - s32 v1; - - { - register s32 ptr20 __asm__("$2") = *(s32 *)(a0 + 0x20); - s32 arg1 = *(s16 *)(a0 + 0xE2); - v0 = func_8012B608(*(s16 *)(ptr20 + 0x12), arg1, 4); - } - { - s32 ptr20b = *(s32 *)(a0 + 0x20); - *(u16 *)(ptr20b + 0x12) = *(u16 *)(ptr20b + 0x12) + v0; - } - - if (func_8012BEE8(a0) == 0) { - return; - } - - *(u8 *)(a0 + 0xC1) = 0; - *(u16 *)(a0 + 2) = 1; - *(u16 *)(a0 + 0x34) = 0; - v0 = rand(); - v1 = *(s32 *)(a0 + 0x20); - v0 = (v0 & 0x1F) + 0x46; - *(s32 *)(a0 + 0x1C) = v0; - v0 = *(u16 *)(a0 + 0x70); - *(u16 *)(a0 + 0xE0) = 0; - v1 = *(u16 *)(v1 + 0x12); - *(u16 *)(a0 + 0xE2) = v1; - { - s32 sub = (s32)((u32)v0 << 0x10) >> 0x18; - switch (sub) { - case 0: - case 1: - case 2: - case 3: - case 7: - if (*(u16 *)(a0 + 0xFE) & 2) { - *(u16 *)(a0 + 0xE2) = 0; - } - break; - case 4: - case 6: - goto shared_4_6_b; - case 5: - ((void(*)(s32)) func_801803B0)(a0); - return; - } - shared_4_6_b: - *(u16 *)(a0 + 0xE4) = 0x1E; - *(u16 *)(a0 + 0x5E) = 0; - *(u16 *)(a0 + 0x5C) = 0xAA10; - func_8012B2CC(a0); - func_8012B23C(a0); - func_8012B14C(a0, (s32) D_8018E68C); - func_8012A828(a0, &D_801A648C); - } - return; - } - - case 4: - { - s32 v0; - s32 v1; - - { - s32 ptr20 = *(s32 *)(a0 + 0x20); - *(u16 *)(ptr20 + 0x12) = *(u16 *)(a0 + 0xE2); - } - func_8012B2CC(a0); - func_8012B178(a0, 0xFFF80000); - - v0 = ((s32(*)(s32)) func_8012CBA4)(a0); - D_801E8008 = v0; - if (v0 == 0 || (v0 & 0x4000) != 0) { - *(s32 *)(a0 + 4) = *(s32 *)(a0 + 0x38); - *(s32 *)(a0 + 8) = *(s32 *)(a0 + 0x3C); - *(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40); - } - - { - s32 p, end, v; - p = (s32) D_801202A0; - end = (s32) D_801202A0 + 0x6480; - v = *(u16 *)a0; - for (; p != end; p += 0x10C) { - if (p != a0) { - if (*(u16 *)p == v) { - if (func_8017E404(a0, p) != 0) { - break; - } - } - } - } - ((void(*)(s32)) func_8012AE00)(p); - } - - if (*(s16 *)(a0 + 6) >= 0x1F8) { - return; - } - - *(u8 *)(a0 + 0xC1) = 0; - *(u16 *)(a0 + 2) = 1; - *(u16 *)(a0 + 0x34) = 0; - v0 = rand(); - v1 = *(s32 *)(a0 + 0x20); - v0 = (v0 & 0x1F) + 0x46; - *(s32 *)(a0 + 0x1C) = v0; - v0 = *(u16 *)(a0 + 0x70); - *(u16 *)(a0 + 0xE0) = 0; - v1 = *(u16 *)(v1 + 0x12); - *(u16 *)(a0 + 0xE2) = v1; - { - s32 sub = (s32)((u32)v0 << 0x10) >> 0x18; - switch (sub) { - case 0: - case 1: - case 2: - case 3: - case 7: - if (*(u16 *)(a0 + 0xFE) & 2) { - *(u16 *)(a0 + 0xE2) = 0; - } - break; - case 4: - case 6: - goto shared_4_6_c; - case 5: - ((void(*)(s32)) func_801803B0)(a0); - goto after_aa10_c; - } - shared_4_6_c: - *(u16 *)(a0 + 0xE4) = 0x1E; - *(u16 *)(a0 + 0x5E) = 0; - *(u16 *)(a0 + 0x5C) = 0xAA10; - func_8012B2CC(a0); - func_8012B23C(a0); - func_8012B14C(a0, (s32) D_8018E68C); - func_8012A828(a0, &D_801A648C); - after_aa10_c:; - } - - v0 = rand(); - v0 = v0 & 0x1F; - *(u16 *)(a0 + 0xE4) = v0; - v0 = rand(); - v0 = v0 & 0x1F; - *(s32 *)(a0 + 0x1C) = v0; - return; - } - } -} - - - -DEFINE_func_8017F390() /* dedup: shared engine-core @0x8017F390 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected; simple param-survives-call store sequence - -extern void func_8012A828(s32 a0, void *a1); -extern char D_801A668C[]; - -void func_8017F5A0(int param_1) -{ - *(short *)(param_1 + 2) = 2; - *(short *)(param_1 + 0x34) = 0; - func_8012A828(param_1, &D_801A668C); - *(int *)(param_1 + 0x1c) = 0x14; -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; param_1 survives call in $s0 naturally (single global allocno) - -extern void func_8012A828(s32 a0, void *a1); -extern s32 D_801A72C4; - -void func_8017F5E4(s32 param_1) { - *(s16 *)(param_1 + 2) = 2; - *(s16 *)(param_1 + 0x34) = 3; - func_8012A828(param_1, &D_801A72C4); - *(s32 *)(param_1 + 0x1c) = 0x1e; -} - - -// @class: jtbl-carve + switch binary-tree -// @stuck: none — remapped from the byte-proven twin ov_SC02_000:func_8017F62C (§193-A); -// the two .s bodies are instruction-identical (only the jtbl rodata block differs in -// extraction). All 16 symbols re-verified against THIS target's own relocation lines. -// jtbl_801E69EC = [F7D0, F830, F904, F858, F8B8]; entry 2 aims at the switch-end label, -// which is ALSO the out-of-range (sltiu 5) target => `case 2: break;` literally and NO -// `default:` clause (cookbook §206.2/§206.3). The 0x70 byte test is the neighbour -// func_8017EA84's own spelling ((s32)((u32)*(u16*)(a0+0x70) << 0x10) >> 0x18). -// `t == 0 || (t >= 3 && t <= 4)` folds to beqz + addiu -3 + sltiu 2 (build_range_check). -// Case 0/case 2 of the first switch are written out identically; gcc cross-jumps their -// tails to .L8017F68C by itself (§206.5). The func_8012C51C request block is spelled as -// a local anonymous struct so no engine_types.h definition can collide. - -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BCCC(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_8018A660(s32 a0, s32 a1); - -extern u16 D_8018E66C[]; -extern void (*D_8018E6D4[])(void); -extern u8 D_801A629C; -extern char D_801A6534[]; -extern char D_801A6754[]; -extern s32 D_801A72C4; -extern unsigned char D_801A73BC[]; - -void func_8017F62C(s32 a0) -{ - struct { - s16 f0, f2, f4, f6, f8, fA, fC, fE; - s32 f10; - } sp; - s16 vec[4]; - s32 t; - - switch (*(u16 *)(a0 + 0x34)) { - case 0: - if (*(s32 *)(a0 + 0x1C) == 7) { - func_8012D5E4(a0, (s32) D_8018E6D4, (s32) &D_8018E6D4[2], 0xB); - } - break; - case 2: - if (*(s32 *)(a0 + 0x1C) == 0xA) { - func_8012D5E4(a0, (s32) D_8018E6D4, (s32) &D_8018E6D4[2], 0xB); - } - break; - case 3: - { - s32 p; - if (*(s32 *)(a0 + 0x1C) >= 0x19) { - s32 r = func_8012B8E4(a0, 4); - p = *(s32 *)(a0 + 0x20); - *(u16 *)(p + 0x12) = *(u16 *)(p + 0x12) + r; - } - if (*(s32 *)(a0 + 0x1C) == 0xC) { - s32 o; - func_8012F214(a0, (s32) D_8018E66C, (s32) &vec[0]); - sp.f6 = 0x20; - sp.f8 = 2; - sp.fA = 0; - sp.f10 = 0; - sp.fE = 0; - sp.f0 = vec[0]; - sp.f2 = vec[1]; - sp.f4 = vec[2]; - sp.fC = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); - o = func_8012C51C(&sp, a0); - if (o != 0) { - *(u16 *)(*(s32 *)(o + 0x20) + 0x12) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); - func_8012B2CC(o); - } - } else if (*(s32 *)(a0 + 0x1C) == 0xF) { - func_8018A660(a0, (s32) D_8018E66C); - } - break; - } - } - - if (func_8012BEE8(a0) != 0) { - switch (*(u16 *)(a0 + 0x34)) { - case 0: - t = (s32) ((u32) *(u16 *)(a0 + 0x70) << 0x10) >> 0x18; - if (t == 0 || (t >= 3 && t <= 4)) { - if (func_8012BCCC(a0) <= 0x4000) { - *(u16 *)(a0 + 2) = 2; - *(u16 *)(a0 + 0x34) = 1; - func_8012A828(a0, &D_801A629C); - *(s32 *)(a0 + 0x1C) = 0xA; - return; - } - } - break; - case 1: - *(u16 *)(a0 + 2) = 2; - *(u16 *)(a0 + 0x34) = 2; - func_8012A828(a0, &D_801A6754); - *(s32 *)(a0 + 0x1C) = 0x18; - return; - case 2: - break; - case 3: - if (++*(u8 *)(a0 + 0x102) >= 3) { - *(u8 *)(a0 + 0x102) = 0; - *(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1; - func_8012A828(a0, &D_801A73BC); - } else { - *(u16 *)(a0 + 2) = 2; - *(u16 *)(a0 + 0x34) = 3; - func_8012A828(a0, &D_801A72C4); - } - *(s32 *)(a0 + 0x1C) = 0x1E; - return; - case 4: - if (func_8012BEE8(a0) != 0) { - if (func_8012BCCC(a0) <= 0x40000) { - *(u16 *)(a0 + 2) = 2; - *(u16 *)(a0 + 0x34) = 3; - func_8012A828(a0, &D_801A72C4); - *(s32 *)(a0 + 0x1C) = 0x1E; - } - } - break; - } - - *(u16 *)(a0 + 0x5C) = 0xAA10; - *(u16 *)(a0 + 2) = 1; - *(u16 *)(a0 + 0x34) = 2; - *(u16 *)(a0 + 0x5E) = 0; - *(s32 *)(a0 + 0x1C) = 0x1E; - func_8012A828(a0, &D_801A6534); - *(u16 *)(a0 + 0xFC) = 0; - } -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8017F950.c b/src/ov_SC02_003/ov_SC02_003_jr_8017F950.c deleted file mode 100644 index d0b85d3a6..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8017F950.c +++ /dev/null @@ -1,79 +0,0 @@ -#include "common.h" - - -void func_8017F950(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_8017FC9C(s32 a0); - extern void func_8017FCB0(s32 a0); - extern void func_8017FD2C(s32 a0); - extern void func_8017FD44(s32 a0); - extern void func_8017FD80(s32 a0); - extern void func_8017FDE8(s32 a0); - extern void func_8017FE68(s32 a0); - extern void func_801801EC(s32 a0); - extern void func_80180A64(s32 a0); - extern u8 D_80062BDC; - extern char D_801A681C[]; - extern St801D9204 D_801E6A00; - St801D9204 local = D_801E6A00; - - if (*(u8 *)(arg0 + 0x5E) == 5) { - func_80019064(&D_80062BDC); - } - if (*(u16 *)(arg0 + 0x5E) == 0x1F) { - func_80180A64(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_8017FC9C(arg0); - return; - case 14: - func_8017FCB0(arg0); - return; - case 10: - func_8017FD44(arg0); - return; - case 9: - func_8017FD80(arg0); - return; - case 17: - func_8017FDE8(arg0); - return; - case 33: - func_8017FD2C(arg0); - return; - case 15: - if (*(s16 *)(arg0 + 0x76) > 0) { - func_801801EC(arg0); - return; - } - break; - default: - if (*(s16 *)(arg0 + 0x76) > 0) { - *(u16 *)(arg0 + 0x34) = 0; - *(s32 *)(arg0 + 0x1C) = 0x10; - func_8012A828(arg0, D_801A681C); - return; - } - break; - } - func_8017FE68(arg0); -} - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8017FB24.c b/src/ov_SC02_003/ov_SC02_003_jr_8017FB24.c deleted file mode 100644 index 838e40076..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8017FB24.c +++ /dev/null @@ -1,2851 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(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_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern s32 func_80029B4C(s32 a0, s32 a1); -extern s32 func_80029BC8(s32 a0, s32 a1); -extern s32 func_80029C44(s32 a0, s32 a1); -extern s32 func_8015640C(s32 a0, s32 a1); -extern s32 rand(void); -extern u32 func_8015616C(s32 param_1, u16 param_2); -extern u16 func_80156370(u16 param_1); -extern s32 func_801564B0(s32 a0); -extern s32 func_8002A1B4(void); -extern s32 func_8002A400(void); -extern s32 func_8002A670(void); -extern s32 func_8002A8E0(void); -extern s32 D_801151E0[]; -extern s32 func_801565C0(void); -extern void func_80156A14(s32 *a0); -extern void func_80156648(s32 *a0); -extern u8 D_8011DAD8[]; -extern s32 func_8014C568(s16 *a0, s16 *a1); -extern void func_801567BC(s32 a0); -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(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_8018E1B0[])(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_8018E174; -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_8018E1E0[])(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_8018E21C[])(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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801E7F7C; -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_801E7FA4; -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_801E7F60; -extern s32 func_8017A3B0(void); -extern short D_801E7F9C; -extern short D_801E7F98; -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_801E8758; -extern s16 D_801E875A; -extern s16 D_801E8764; -extern void func_8017AE2C(s32 param_1); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -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_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; -extern void func_8017B7A8(void); -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -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_801E7F84; -extern SV4 D_801E7F8C; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E7FAC[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_801E7FA8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018E5DC[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void func_8017BEBC(void *a0); -extern void (*D_8018E614[])(void); -extern void func_8017BEF8(void *a0); -extern void func_8017BF34(void *a0); -extern void func_8017C218(int); -extern void func_8017BF84(int param_1); -extern void func_8017BFE0(Ent_8017BFE0_8017BFE0 *param_1); -extern void func_8017C064(void *a0); -extern void func_8017C1CC(int param_1); -extern void func_8017C218(int param_1); -extern void (*D_8018E628[])(void); -extern void func_8017C524(void *a0); -extern void func_8017C560(void *a0); -extern void func_8017C5A0(void *a0); -extern void func_8017C610(void *a0); -extern void func_8017C69C(void *a0); -extern void func_8017C770(void *a0); -extern void (*D_8018E63C[])(void); -extern void func_8017C7C4(void *a0); -extern void func_8017C800(void *a0); -extern void func_8017C910(void *a0); -extern void func_8017C8B4(void *a0); -extern void (*D_8018E65C[])(void); -extern void func_8017CA80(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_8017CABC(s32 param_1); -extern void func_8017CC80(u8 *p); -extern void (*D_8018E664[])(void); -extern void func_8017CD14(void *a0); -extern u8 D_8018E650; -extern void func_8017CD50(s32 a0); -extern void func_8017CDF4(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_8017D230(u16 *a0, void *a1); -extern int func_8017D2D4(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_8017D4CC(s32 a0, s32 a1); -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_8017E404(s32 param_1, s32 param_2); -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern void func_8017E51C(s32 a0); -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8017E958(s32 param_1, s32 param_2); -extern s32 func_8017E958(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 void func_8012A828(s32 a0, void *a1); -extern s32 func_8012BEE8(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_8017F5A0(s32 a0); -extern void func_8017F5E4(s32 a0); -extern void func_801803B0(void); -extern void func_8017E6D8(s32 a0); -extern void func_8017E5AC(s32 a0); -extern char D_8018E68C[]; -extern char D_8018E698[]; -extern char D_8018E680[]; -extern char D_801A65BC[]; -extern char D_801A6534[]; -extern char D_801A648C[]; -extern s32 D_801E8008; -extern s32 D_801270D4; -extern s16 D_8018E6E4; -extern s16 D_8018E6E8; -extern void func_8017EA84(s32 a0); -extern char D_801A668C[]; -extern void func_8017F5A0(int param_1); -extern s32 D_801A72C4; -extern void func_8017F5E4(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - -// @class: struct -// @stuck: none — MATCH (switch on entity state at 0x34, inner jtbl on (s8)(u70>>8)) - -extern void func_8012CBCC(int); -extern int func_8012BEE8(int); -extern int rand(void); -extern void func_801803B0(void); -extern void func_8012B2CC(int); -extern void func_8012B23C(int); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012A828(int, void *); -extern void func_8012CBF4(int); -extern s32 func_80143B6C(s32 arg0, s32 arg1); -extern void func_80180394(void *a0); - -extern char D_8018E68C[]; -extern char D_801A648C[]; - - - - - - -void func_8017FB24(int arg0) -{ - int idx; - s32 frame_pad[2]; - (void)&frame_pad; - - switch (*(u16 *)(arg0 + 0x34)) { - case 0: - func_8012CBCC(arg0); - if (func_8012BEE8(arg0) != 0) { - *(u16 *)(arg0 + 0x5e) = 0; - *(u8 *)(arg0 + 0xc1) = 0; - *(u16 *)(arg0 + 0x2) = 1; - *(u16 *)(arg0 + 0x34) = 0; - *(int *)(arg0 + 0x1c) = (rand() & 0x1f) + 0x46; - *(u16 *)(arg0 + 0xe0) = 0; - *(u16 *)(arg0 + 0xe2) = *(u16 *)(*(int *)(arg0 + 0x20) + 0x12); - idx = (int)((u32)*(u16 *)(arg0 + 0x70) << 16) >> 24; - switch (idx) { - case 0: - case 1: - case 2: - case 3: - case 7: - if ((*(u16 *)(arg0 + 0xfe) & 2) != 0) { - *(u16 *)(arg0 + 0xe2) = 0; - } - break; - case 5: - ((void (*)(int))func_801803B0)(arg0); - return; - case 4: - case 6: - default: - break; - } - *(u16 *)(arg0 + 0xe4) = 0x1e; - *(u16 *)(arg0 + 0x5e) = 0; - *(u16 *)(arg0 + 0x5c) = 0xaa10; - func_8012B2CC(arg0); - func_8012B23C(arg0); - ((void (*)(int, void *))func_8012B14C)(arg0, &(*(char *)D_8018E68C)); - func_8012A828(arg0, &(*(char *)D_801A648C)); - } - break; - case 1: - func_8012CBF4(arg0); - if (*(int *)(arg0 + 0x1c) == 0x1e || *(int *)(arg0 + 0x1c) == 0xd) { - ((void (*)(int, int))func_80143B6C)(arg0, 0); - } - if (func_8012BEE8(arg0) != 0) { - ((void (*)(int))func_80180394)(arg0); - } - break; - } -} - -DEFINE_func_8017FC9C() /* dedup: shared engine-core @0x8017FC9C (src/shared) */ - - - - - - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8017FCB0.c b/src/ov_SC02_003/ov_SC02_003_jr_8017FCB0.c deleted file mode 100644 index 22fb08f67..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8017FCB0.c +++ /dev/null @@ -1,3271 +0,0 @@ -#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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -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_8018E1B0[])(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_8018E174; -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 struct S80126B38 D_80126B38; -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018E1E0[])(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_8018E21C[])(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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -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_801E7F7C; -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_801E7FA4; -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_801E7F60; -extern s32 func_8017A3B0(void); -extern short D_801E7F9C; -extern short D_801E7F98; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(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_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -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_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; -extern void func_8017B7A8(void); -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -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 void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E7FAC[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_801E7FA8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018E5DC[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018E614[])(void); -extern void func_8017BEF8(void *a0); -extern void (*D_8018E628[])(void); -extern void func_8017C524(void *a0); -extern void (*D_8018E63C[])(void); -extern void func_8017C7C4(void *a0); -extern void (*D_8018E65C[])(void); -extern void func_8017CA80(void *a0); -extern void (*D_8018E664[])(void); -extern void func_8017CD14(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern u8 D_8018E650; -extern void func_8017CD50(s32 a0); -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern void func_8017E51C(s32 a0); -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 ratan2(s32, s32); -extern s32 func_8017E958(s32 param_1, s32 param_2); -extern void func_8012A828(s32 a0, void *a1); -extern char D_801A668C[]; -extern void func_8017F5A0(int param_1); -extern s32 D_801A72C4; -extern void func_8017F5E4(s32 param_1); -extern void func_8017FC9C(void *a0); -/* ==== end §8b carried decl layer ==== */ - -extern s32 D_801270CC; -extern void func_8012C098(void); -extern void func_8012C218(void *a0); - -void func_8017FCB0(void *a0) { - s32 t; - - t = (s8)(*(u16 *)((s32)a0 + 0x70) >> 8); - switch (t) { - case 0: - case 1: - case 2: - case 5: - case 6: - func_8012C098(); - break; - case 4: - D_801270CC -= 1; - /* fallthrough into the shared tail (jtbl cases 3 and 7 enter here) */ - case 3: - case 7: - func_8012C218(a0); - break; - } -} - - -void func_8017FD2C(u8 *a0) { - *(s16 *)(a0 + 0x2) = 0xC; - *(s32 *)(a0 + 0x1C) = 6; - *(s16 *)(a0 + 0x5C) = 0; -} - - - -void func_8017FD44(void *a0) { - u16 v = *(u16 *)((s32)a0 + 0x70); - *(s16 *)((s32)a0 + 0x2) = 5; - *(s16 *)((s32)a0 + 0x98) = 0; - *(s32 *)((s32)a0 + 0x1C) = 0x10; - if ((s8)(v >> 8) == 5) { - *(u16 *)((s32)a0 + 0x70) = (v & 0xFF) | 0x100; - } -} - - - -// @class: other -// @stuck: none — MATCH (26 ins, match_one confirmed) -extern void func_8012A828(int, void *); -extern void func_8012B2CC(int); -extern void func_8012B23C(int); -extern void func_8012B14C(s32 a0, s32 a1); -extern unsigned char D_801A6F44; -extern unsigned char D_8018E6EC; - -void func_8017FD80(int param_1) { - *(short *)(param_1 + 0x5c) = 0; - *(short *)(param_1 + 0x2) = 6; - func_8012A828(param_1, ((unsigned char *)&D_801A6F44)); - func_8012B2CC(param_1); - func_8012B23C(param_1); - ((void (*)(int, void *))func_8012B14C)(param_1, ((unsigned char *)&D_8018E6EC)); - *(int *)(param_1 + 0x1c) = 0; - *(char *)(param_1 + 0xc2) = 0; - *(char *)(param_1 + 0xc3) = 0; -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (straight-line stores + 4 calls; delay-slot 0x2 store of 6 schedules into first jal) - -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); - -extern unsigned char D_801A6F44; -extern unsigned char D_8018E6EC; -extern unsigned char D_8018E6F8; - -void func_8017FDE8(int param_1) -{ - *(unsigned char *)(param_1 + 0xc1) = 7; - *(short *)(param_1 + 0x5c) = 0; - *(short *)(param_1 + 2) = 6; - func_8012A828(param_1, &D_801A6F44); - func_8012B2CC(param_1); - func_8012B23C(param_1); - ((void (*)(s32, void *))func_8012B14C)(param_1, &D_8018E6EC); - *(int *)(param_1 + 0x1c) = 0; - *(unsigned char *)(param_1 + 0xc2) = 0; - *(unsigned char *)(param_1 + 0xc3) = 0; - ((void (*)(s32, void *))func_8012B14C)(param_1, &D_8018E6F8); - return; -} - - - -// @class: plumbing -// @stuck: none — MATCH expected (straight-line stores + 5 calls; sibling func_801823A0 is the matched twin) - -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8002D4C8(s32 a0, s32 a1); - -extern unsigned char D_801A6F44; -extern unsigned char D_8018E6EC; -extern unsigned char D_8018E704; - -void func_8017FE68(int param_1) -{ - *(short *)(param_1 + 0x5c) = 0; - *(short *)(param_1 + 0x76) = 0; - *(short *)(param_1 + 0x5c) = 0; - *(short *)(param_1 + 2) = 6; - func_8012A828(param_1, &D_801A6F44); - func_8012B2CC(param_1); - func_8012B23C(param_1); - ((void (*)(s32, void *))func_8012B14C)(param_1, &D_8018E6EC); - *(int *)(param_1 + 0x1c) = 0; - *(unsigned char *)(param_1 + 0xc2) = 0; - *(unsigned char *)(param_1 + 0xc3) = 0; - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0x300; - *(int *)(param_1 + 8) = *(int *)(param_1 + 8) - 0x240000; - ((void (*)(s32, void *))func_8012B14C)(param_1, &D_8018E704); - func_8012B2CC(param_1); - func_8002D4C8(0x6aa, 0); - return; -} - - - -// @class: plumbing -// @stuck: none — MATCH (181 ins). switch(bVar1) dispatch; counters as *p+=1;if(*p=5 over MIPS tablejump threshold); case-5 block placed between if-block and default via goto so the if-block emits j default w/ e2=0 in the delay slot - -extern s32 func_8012CBA4(s32); -extern int func_8012BEE8(int a0); -extern void func_8012B2CC(int a0); -extern void func_8012B23C(int a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012A828(int a0, void *a1); -extern void func_801803B0(void); -extern int rand(void); -extern int D_801270D4; -extern unsigned char D_8018E68C[]; -extern unsigned char D_801A648C[]; - -void func_80180264(int param_1) -{ - int iVar1; - unsigned int uVar2; - - ((void (*)(void))func_8012CBA4)(); - if ((((int)((unsigned int)*(unsigned short *)(param_1 + 0x70) << 0x10) >> 0x18 != 4) || - (D_801270D4 == 0)) && - (iVar1 = func_8012BEE8(param_1), iVar1 != 0)) { - *(char *)(param_1 + 0xc1) = 0; - *(short *)(param_1 + 2) = 1; - *(short *)(param_1 + 0x34) = 0; - uVar2 = rand(); - *(int *)(param_1 + 0x1c) = (uVar2 & 0x1f) + 0x46; - *(short *)(param_1 + 0xe0) = 0; - *(short *)(param_1 + 0xe2) = *(short *)(*(int *)(param_1 + 0x20) + 0x12); - switch ((int)((unsigned int)*(unsigned short *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 3: - case 7: - if ((*(unsigned short *)(param_1 + 0xfe) & 2) != 0) { - *(short *)(param_1 + 0xe2) = 0; - } - goto do_default; - case 5: - ((void (*)(int))func_801803B0)(param_1); - break; - case 4: - case 6: - default: - do_default: - *(short *)(param_1 + 0xe4) = 0x1e; - *(short *)(param_1 + 0x5e) = 0; - *(unsigned short *)(param_1 + 0x5c) = 0xaa10; - func_8012B2CC(param_1); - func_8012B23C(param_1); - ((void (*)(int, void *))func_8012B14C)(param_1, &D_8018E68C); - func_8012A828(param_1, &D_801A648C); - break; - } - } -} - -DEFINE_func_80180394() /* dedup: shared engine-core @0x80180394 (src/shared) */ - -DEFINE_func_801803B0() /* dedup: shared engine-core @0x801803B0 (src/shared) */ - -extern void func_8012A828(s32 a0, void *a1); -extern s32 D_801A72C4; - -void func_801803D0(s32 param_1) -{ - *(s16 *)(param_1 + 2) = 0xB; - *(s16 *)(param_1 + 0x34) = 1; - *(s16 *)(param_1 + 0x5E) = 0; - *(u16 *)(param_1 + 0x5C) = 0xAA10; - func_8012A828(param_1, &D_801A72C4); - *(u8 *)(param_1 + 0x102) = 0; - *(s32 *)(param_1 + 0x1C) = 0x1E; -} - - - -// @class: plumbing -// @stuck: none — MATCH expected (param_1 lives in $s0 across the call; a0 reused as first arg) - -extern void func_8012A828(s32 a0, void *a1); -extern unsigned char D_801A73BC[]; - -void func_80180428(int param_1) -{ - *(short *)(param_1 + 2) = 0xB; - *(short *)(param_1 + 0x34) = 2; - func_8012A828(param_1, &D_801A73BC); - *(char *)(param_1 + 0x102) = 0; -} - - -#include "common.h" - -/* @class: struct - * @stuck: none — remap of the banked byte-MATCH twin src/ov_SC02_000/ov_SC02_000_jr_8017FCB0.c - * :3089 (same name, same 158 ins, IDENTICAL symbol set — verified against THIS .s's relocation - * lines: func_8012E544, func_80180A64, rand, func_801803D0, func_8012F214, D_8018E66C, - * func_8012C51C, func_8012B2CC, func_8018A660, func_8012BEE8, func_80180428, func_8012A828, - * D_801A6344). The prior stranded draft was cc1-FAIL only because it inherited the twin's - * *enclosing TU* decl environment implicitly: struct Prim, rand, func_801803D0, func_80180428 - * were undeclared. Every one of them is now declared here. - * Levers carried from the twin's note: (1) switch(s32 st34){0,1,2} -> beq==1/slti<2/beq==2 - * decision tree; (2) struct Prim {s16 f0..fE; s32 f10} + s16 buf[4] gives prim@sp+0x10, - * buf@sp+0x28 byte-exact, store order f6,f8,fA,f10,fE,f0,f2,f4,fC; (3) the uninitialised $s0 - * flag CFG needs the explicit compute/flag_zero goto labels (p==0 leaves flag live-undefined); - * (4) `d=-d; flag=d<0x20` written twice so bgez keeps slti in its delay slot and retargets past - * the copy; (5) 0xAA10 stored through u16 -> ori (an s16 store gives addiu -22000); - * (6) the zero-byte __asm__ memory barrier after the 0x102 store forces `c & 0xff` (not the sb) - * into the `jal rand` delay slot. */ - -struct Prim { s16 f0, f2, f4, f6, f8, fA, fC, fE; s32 f10; }; - -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012B2CC(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern s32 rand(void); -extern void func_801803D0(int param_1); -extern void func_80180428(int param_1); - -void func_8018046C(s32 arg0) { - extern s32 func_8012E544(s32 a0); - extern void func_80180A64(s32 param_1); - extern s32 func_8018A660(s32 a0, s32 a1); - extern s32 D_8018E66C[]; - extern s32 D_801A6344; - - s32 cond; - s32 flag; - s32 d; - u16 mode; - s32 st34; - - mode = *(u16 *)(arg0 + 0x70); - cond = 1; - if ((u32)(mode - 0x505) >= 2) { - cond = ((mode & 0xff00) == 0x700); - } - if (cond == 0) { - goto flag_zero; - } - cond = func_8012E544(0x298); - if (cond == 0) { - goto lab_ab0; - } - if (*(u16 *)(cond + 2) == 2) { - goto compute; - } -flag_zero: - flag = 0; - goto lab_ab0; -compute: - d = *(s16 *)(cond + 0xe) - *(s16 *)(arg0 + 0xe); - flag = (d < 0x20); - if (d < 0) { - d = -d; - flag = (d < 0x20); - } -lab_ab0: - if (flag != 0) { - func_80180A64(arg0); - return; - } - - st34 = *(u16 *)(arg0 + 0x34); - switch (st34) { - case 0: - if (*(u16 *)(arg0 + 0x72) & 0x4000) { - s32 c = *(u8 *)(arg0 + 0x102) + 1; - *(u8 *)(arg0 + 0x102) = c; - __asm__ __volatile__("" ::: "memory"); - if ((((s32(*)())rand)() & 1) < (c & 0xff)) { - ((void(*)(s32))func_801803D0)(arg0); - } - } - break; - case 1: { - s32 s1c = *(s32 *)(arg0 + 0x1c); - if (s1c == 0xc) { - struct Prim sp; - s16 buf[4]; - s32 tv0; - func_8012F214(arg0, (s32)&(*(s32 *)&D_8018E66C), (s32)buf); - sp.f6 = 0x20; - sp.f8 = 2; - sp.fA = 0; - sp.f10 = 0; - sp.fE = 0; - sp.f0 = buf[0]; - sp.f2 = buf[1]; - sp.f4 = buf[2]; - sp.fC = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12); - tv0 = func_8012C51C(&sp, arg0); - if (tv0 != 0) { - *(u16 *)(*(s32 *)(tv0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12); - func_8012B2CC(tv0); - } - } else if (s1c == 0xf) { - func_8018A660(arg0, (s32)&(*(s32 *)&D_8018E66C)); - } - if (func_8012BEE8(arg0) != 0) { - s32 c = *(u8 *)(arg0 + 0x102) + 1; - *(u8 *)(arg0 + 0x102) = c; - if ((u32)(c & 0xff) >= 3) { - ((void(*)(s32))func_80180428)(arg0); - return; - } - *(s32 *)(arg0 + 0x1c) = 0x1e; - return; - } - break; - } - case 2: - if (*(u16 *)(arg0 + 0x72) & 0x4000) { - *(s16 *)(arg0 + 2) = 0xb; - *(u16 *)(arg0 + 0x34) = 0; - *(s16 *)(arg0 + 0x5e) = 0; - *(u16 *)(arg0 + 0x5c) = 0xaa10; - func_8012A828(arg0, &D_801A6344); - *(u8 *)(arg0 + 0x102) = 0; - } - break; - } -} - - - -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012C098(void); -extern void func_8012C218(void *a0); -extern s32 D_801270CC; -extern unsigned char D_8018E724[]; -extern unsigned char D_801A6534[]; - -void func_801806E4(int p) -{ - switch (*(unsigned short *)(p + 0x34)) { - case 0: - func_8012B178(p, 0xfff40000); - func_8012AD80(p); - if (func_8012BEE8(p) == 0) return; - *(unsigned short *)(p + 0x34) = 1; - func_8012A828(p, D_8018E724); - return; - case 1: - if (*(short *)(p + 0x98) != 0) return; - *(unsigned short *)(p + 0x34) = 2; - func_8012A828(p, D_801A6534); - *(int *)(p + 0x1c) = 4; - return; - case 2: - *(unsigned short *)(*(int *)(p + 0x20) + 0x12) = - *(unsigned short *)(*(int *)(p + 0x20) + 0x12) - 0x200; - if (func_8012BEE8(p) == 0) return; - *(int *)(p + 0x1c) = 0x3c; - *(unsigned short *)(p + 0x34) = 3; - return; - case 3: - func_8012B178(p, 0xfff40000); - func_8012AD80(p); - if (func_8012BEE8(p) == 0) return; - switch (((int)(*(unsigned short *)(p + 0x70) << 16)) >> 24) { - case 0: - case 1: - case 2: - case 5: - case 6: - ((void (*)(void *))func_8012C098)(p); - return; - case 3: - case 7: - func_8012C218(p); - return; - case 4: - D_801270CC = D_801270CC - 1; - func_8012C218(p); - return; - } - return; - } -} - - - -// @class: loose-typing -// @stuck: none — MATCH (unsigned short store @0x5c forces ori vs li/addiu for 0xaa10) - -extern int D_801A6C5C; -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B23C(s32 a0); - -void func_80180878(short *param_1) -{ - param_1[1] = 0xe; - *(short *)((char *)param_1 + 0x34) = 0; - ((void (*)(void *, void *))func_8012A828)(param_1, &D_801A6C5C); - ((void (*)(void *))func_8012B23C)(param_1); - *(unsigned short *)((char *)param_1 + 0x5c) = 0xaa10; -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_801808C4.c b/src/ov_SC02_003/ov_SC02_003_jr_801808C4.c deleted file mode 100644 index 0a0325e8a..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_801808C4.c +++ /dev/null @@ -1,176 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -DEFINE_func_801808C4() /* dedup: shared engine-core @0x801808C4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected (param in $s0 across call, stores in source order) - -extern void func_80130740(void *a0, u16 *a1); -extern unsigned char D_8018E78C[]; - -void func_80180A18(int param) -{ - ((int (*)(int, void *))func_80130740)(param, &D_8018E78C); - *(int *)(param + 0x1c) = 0x1e; - *(int *)(param + 0x18) = 0; - *(int *)(param + 0x10) = 0; - *(short *)(param + 0x2) = 0xf; - *(short *)(param + 0x5c) = 0; -} - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple struct-field init + two calls, natural schedule) - -extern void func_8012A828(s32, void *); -extern void func_8002D4C8(s32, s32); -extern unsigned char D_801A6F44; - -void func_80180A64(s32 param_1) -{ - *(s16 *)(param_1 + 2) = 0x10; - *(s16 *)(param_1 + 0x34) = 0; - *(s16 *)(param_1 + 0x5c) = 0; - *(s32 *)(param_1 + 0x1c) = 0; - ((void (*)(s32, u8 *))func_8012A828)(param_1, ((u8 *)&D_801A6F44)); - *(s16 *)(param_1 + 0x98) = 0; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2c) |= 0x10; - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1a) = 0x100; - func_8002D4C8(0x436, 0); -} - - - -extern s32 D_80126B58; -extern s32 func_8012E544(s32 a0); -extern void func_8012A828(s32, void *); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern s32 func_8012CBA4(s32 a0); -extern void func_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_801803B0(void); -extern s32 rand(void); -extern s16 D_8018E794; -extern s16 D_8018E796; -extern unsigned char D_8018E68C[]; -extern unsigned char D_801A648C[]; -extern unsigned char D_801A6F44; - -void func_80180AD4(s32 param_1) -{ - u8 *base = (u8 *)&D_80126B58; - s32 flag; - s32 cond; - s32 t; - s32 d; - s32 y; - u16 mode; - s32 p; - - mode = *(u16 *)(param_1 + 0x70); - cond = 1; - if ((u32)(mode - 0x505) >= 2) { - cond = ((mode & 0xff00) == 0x700); - } - if (cond == 0) { - flag = 0; - } else { - p = func_8012E544(0x298); - if (p != 0) { - if (*(u16 *)(p + 2) != 2) { - flag = 0; - } else { - d = *(s16 *)(p + 0xe) - *(s16 *)(param_1 + 0xe); - if (d < 0) { - d = -d; - } - flag = d < 0x20; - } - } - } - - if (flag != 0) { - *(s16 *)(param_1 + 2) = 0x10; - *(s16 *)(param_1 + 0x34) = 0; - *(s16 *)(param_1 + 0x5c) = 0; - *(s32 *)(param_1 + 0x1c) = 0; - ((void (*)(s32, u8 *))func_8012A828)(param_1, ((u8 *)&D_801A6F44)); - *(s16 *)(param_1 + 0x98) = 0; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2c) |= 0x10; - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x1a) = 0x100; - func_8002D4C8(0x436, 0); - } else { - switch (*(u16 *)(param_1 + 0x34)) { - case 0: - if (*(s16 *)(base + 0xe) > D_8018E794) { - *(u16 *)(param_1 + 0x34) = 1; - func_8012B178(param_1, 0xfff60000); - } - break; - case 1: - t = *(u16 *)(param_1 + 0xfc) - 1; - *(u16 *)(param_1 + 0xfc) = t; - if ((t << 0x10) <= 0) { - func_80143B6C(param_1, 0); - *(u16 *)(param_1 + 0xfc) = 8; - } - func_8012CBA4(param_1); - y = *(s16 *)(param_1 + 0xe); - if ((y < D_8018E796) || ((y - *(s16 *)(base + 0xe)) < 0x80)) { - *(u16 *)(param_1 + 0x70) = 0; - *(u8 *)(param_1 + 0xc1) = 0; - *(u16 *)(param_1 + 0x2) = 1; - *(u16 *)(param_1 + 0x34) = 0; - *(s32 *)(param_1 + 0x1c) = (rand() & 0x1f) + 0x46; - *(u16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe2) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 3: - case 7: - if ((*(u16 *)(param_1 + 0xfe) & 2) != 0) { - *(u16 *)(param_1 + 0xe2) = 0; - } - goto seq; - case 5: - ((void (*)(s32))func_801803B0)(param_1); - break; - case 4: - case 6: - default: - seq: - *(u16 *)(param_1 + 0xe4) = 0x1e; - *(u16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = 0xaa10; - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012B14C(param_1, (s32)&D_8018E68C); - func_8012A828(param_1, &D_801A648C); - break; - } - } - break; - } - } -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80180D6C.c b/src/ov_SC02_003/ov_SC02_003_jr_80180D6C.c deleted file mode 100644 index a13cc77ba..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80180D6C.c +++ /dev/null @@ -1,3105 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -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_8018E1B0[])(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_8018E174; -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 struct S80126B38 D_80126B38; -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018E1E0[])(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_8018E21C[])(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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -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_801E7F7C; -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_801E7FA4; -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_801E7F60; -extern s32 func_8017A3B0(void); -extern short D_801E7F9C; -extern short D_801E7F98; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(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_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -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_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; -extern void func_8017B7A8(void); -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -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 void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E7FAC[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_801E7FA8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018E5DC[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018E614[])(void); -extern void func_8017BEF8(void *a0); -extern void (*D_8018E628[])(void); -extern void func_8017C524(void *a0); -extern void (*D_8018E63C[])(void); -extern void func_8017C7C4(void *a0); -extern void (*D_8018E65C[])(void); -extern void func_8017CA80(void *a0); -extern void (*D_8018E664[])(void); -extern void func_8017CD14(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern u8 D_8018E650; -extern void func_8017CD50(s32 a0); -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern void func_8017E51C(s32 a0); -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 ratan2(s32, s32); -extern s32 func_8017E958(s32 param_1, s32 param_2); -extern void func_8012A828(s32 a0, void *a1); -extern char D_801A668C[]; -extern void func_8017F5A0(int param_1); -extern s32 D_801A72C4; -extern void func_8017F5E4(s32 param_1); -extern void func_8017FC9C(void *a0); -extern s32 D_801270CC; -extern void func_8012C098(void); -extern void func_8012C218(void *a0); -extern void func_8017FCB0(void *a0); -extern void func_8017FD2C(u8 *a0); -extern void func_8017FD44(void *a0); -extern void func_8012A828(int, void *); -extern void func_8012B2CC(int); -extern void func_8012B23C(int); -extern void func_8012B14C(s32 a0, s32 a1); -extern unsigned char D_801A6F44; -extern unsigned char D_8018E6EC; -extern void func_8017FD80(int param_1); -extern void func_8012B23C(s32 a0); -extern unsigned char D_8018E6F8; -extern void func_8017FDE8(int param_1); -extern unsigned char D_8018E704; -extern void func_8017FE68(int param_1); -extern void func_8012DBD0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8012CC64(s32 a0, void *a1); -extern void func_8012CBF4(s32); -extern s32 func_8012CBA4(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_80180A18(s32 a0); -extern void func_80180878(short*); -extern void func_80180394(void*); -extern void func_8017FF18(int param_1); -extern unsigned char D_801A6E7C[]; -extern void func_80143CD4(s32 a0); -extern int func_800CB0E8(int param); -extern void func_801801EC(int param_1); -extern void func_80180394(void *a0); -extern void func_801803D0(void); -extern void func_801803B0(void); -extern unsigned char D_801A73BC[]; -extern void func_80180428(int param_1); -extern int D_801A6C5C; -extern void func_80180878(short *param_1); -extern s32 func_8012BEE8(s32); -extern void func_8012B2CC(s32); -extern void func_8012B23C(s32); -extern u8 D_801A629C; -extern unsigned char D_8018E68C[]; -extern unsigned char D_801A648C[]; -extern void func_801808C4(s32 param_1); -extern void func_80130740(void *a0, u16 *a1); -extern unsigned char D_8018E78C[]; -extern void func_80180A18(int param); -extern void func_8012A828(s32, void *); -extern void func_8002D4C8(s32, s32); -extern void func_80180A64(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - -/* §161c integration surface: every decl below is the form ALREADY visible at file scope in the - * destination TU src/ov_SC01_077/ov_SC01_077_jr_80182E7C.c (line refs), so banking adds no - * conflicting type. Where the host's form is narrower than the natural one, the cast is at the - * call site and is byte-neutral (re-gated after conforming). - * func_8012C354 -> shared DEFINE_func_8012C354 canonical (engine_core.h:17060) s32(s32,s32) - * func_8001C214 -> host:1622 func_8012B030 -> host:2992 (u8*) func_8012B14C -> host:3028 - * func_8012B2CC -> host:3053 func_8012B23C -> host:3054 func_8012A828 -> host:3084 - * func_801803B0 -> host:3056 (void) func_801803D0 -> host:3063 rand -> host:3090 - * func_80143970 -> shared DEFINE_func_80143970 canonical (engine_core.h:3881) s32(s32) */ -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C214(s32 a0, s32 a1); -extern s32 func_80143970(s32 a0); -extern s32 func_8012B030(u8 *a0); -extern void func_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_801803B0(void); -extern void func_801803D0(void); -extern s32 rand(void); - - -void func_80180D6C(s32 param_1) { - - extern u8 D_8018E990[]; - extern s32 D_8018E960[]; - extern u8 D_8018E7C0[]; - extern u8 D_8018E6BC[]; - extern u8 D_8018E7A8[]; - extern u8 D_8018E7AA[]; - extern u8 D_8018E7AC[]; - extern u8 D_801A6534[]; - s32 frame_pad[4]; - s32 idx; - u8 *ptr; - u16 mode; - s32 cond; - u16 tmp; - - (void)&frame_pad; - - if (func_8012C354(param_1, (s32)&D_8018E990) == 0) { - return; - } - idx = (s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18; - func_8001C214(*(s32 *)(param_1 + 0x20), D_8018E960[idx]); - ptr = &D_8018E7C0[idx * 0x34]; - *(s32 *)(param_1 + 0x78) = (s32)ptr; - *(u16 *)(param_1 + 0x76) = *(u16 *)ptr; - func_80143970(param_1); - func_8012B030((u8 *)param_1); - - *(u16 *)(param_1 + 0x100) = 0; - *(s32 *)(param_1 + 0xbc) = (s32)&D_8018E6BC; - *(s32 *)(param_1 + 0x38) = *(s32 *)(param_1 + 0x4); - *(s32 *)(param_1 + 0x3c) = *(s32 *)(param_1 + 0x8); - *(s32 *)(param_1 + 0x40) = *(s32 *)(param_1 + 0xc); - mode = *(u16 *)(param_1 + 0x70); - cond = 1; - if ((u32)(mode - 0x505) >= 2) { - cond = ((mode & 0xff00) == 0x700); - } - if (cond != 0) { - *(u16 *)(param_1 + 0x86) = 0xb4; - } - - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - *(u8 *)(param_1 + 0xc1) = 0; - *(u16 *)(param_1 + 0x2) = 1; - *(u16 *)(param_1 + 0x34) = 0; - *(s32 *)(param_1 + 0x1c) = (rand() & 0x1f) + 0x46; - *(u16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe2) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 3: - case 7: - if ((*(u16 *)(param_1 + 0xfe) & 2) != 0) { - *(u16 *)(param_1 + 0xe2) = 0; - } - goto seq0; - case 5: - ((void (*)(s32))func_801803B0)(param_1); - break; - case 4: - case 6: - default: - seq0: - *(u16 *)(param_1 + 0xe4) = 0x1e; - *(u16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = 0xaa10; - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012B14C(param_1, (s32)&D_8018E68C); - func_8012A828(param_1, &D_801A648C); - break; - } - if ((*(u16 *)(param_1 + 0x70) & 0x80) != 0) { - *(u16 *)(param_1 + 0x5c) = 0xaa10; - *(u16 *)(param_1 + 0x2) = 1; - *(u16 *)(param_1 + 0x34) = 2; - *(u16 *)(param_1 + 0x5e) = 0; - *(s32 *)(param_1 + 0x1c) = 0x1e; - func_8012A828(param_1, &D_801A6534); - *(u16 *)(param_1 + 0xfc) = 0; - } - break; - case 1: - *(u8 *)(param_1 + 0xc1) = 0; - *(u16 *)(param_1 + 0x2) = 1; - *(u16 *)(param_1 + 0x34) = 0; - *(s32 *)(param_1 + 0x1c) = (rand() & 0x1f) + 0x46; - *(u16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe2) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 3: - case 7: - if ((*(u16 *)(param_1 + 0xfe) & 2) != 0) { - *(u16 *)(param_1 + 0xe2) = 0; - } - goto seq1; - case 5: - ((void (*)(s32))func_801803B0)(param_1); - break; - case 4: - case 6: - default: - seq1: - *(u16 *)(param_1 + 0xe4) = 0x1e; - *(u16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = 0xaa10; - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012B14C(param_1, (s32)&D_8018E68C); - func_8012A828(param_1, &D_801A648C); - break; - } - break; - case 2: - *(u8 *)(param_1 + 0xc1) = 0; - *(u16 *)(param_1 + 0x2) = 1; - *(u16 *)(param_1 + 0x34) = 0; - *(s32 *)(param_1 + 0x1c) = (rand() & 0x1f) + 0x46; - *(u16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe2) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 3: - case 7: - if ((*(u16 *)(param_1 + 0xfe) & 2) != 0) { - *(u16 *)(param_1 + 0xe2) = 0; - } - goto seq2; - case 5: - ((void (*)(s32))func_801803B0)(param_1); - break; - case 4: - case 6: - default: - seq2: - *(u16 *)(param_1 + 0xe4) = 0x1e; - *(u16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = 0xaa10; - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012B14C(param_1, (s32)&D_8018E68C); - func_8012A828(param_1, &D_801A648C); - break; - } - break; - case 3: - *(u16 *)(param_1 + 0x6) = *(u16 *)&D_8018E7A8[*(u8 *)(param_1 + 0x70) * 8]; - *(u16 *)(param_1 + 0xa) = *(u16 *)&D_8018E7AA[*(u8 *)(param_1 + 0x70) * 8]; - tmp = *(u16 *)&D_8018E7AC[*(u8 *)(param_1 + 0x70) * 8]; - *(u16 *)(param_1 + 0x2) = 9; - *(u16 *)(param_1 + 0x34) = 0; - *(u16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = 0xaa10; - *(u16 *)(param_1 + 0xe) = tmp; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = 0; - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012A828(param_1, &D_801A629C); - break; - case 4: - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = rand() & 0xfff; - *(u8 *)(param_1 + 0xc1) = 0; - *(u16 *)(param_1 + 0x2) = 1; - *(u16 *)(param_1 + 0x34) = 0; - *(s32 *)(param_1 + 0x1c) = (rand() & 0x1f) + 0x46; - *(u16 *)(param_1 + 0xe0) = 0; - *(u16 *)(param_1 + 0xe2) = *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12); - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 3: - case 7: - if ((*(u16 *)(param_1 + 0xfe) & 2) != 0) { - *(u16 *)(param_1 + 0xe2) = 0; - } - goto seq4; - case 5: - ((void (*)(s32))func_801803B0)(param_1); - break; - case 4: - case 6: - default: - seq4: - *(u16 *)(param_1 + 0xe4) = 0x1e; - *(u16 *)(param_1 + 0x5e) = 0; - *(u16 *)(param_1 + 0x5c) = 0xaa10; - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012B14C(param_1, (s32)&D_8018E68C); - func_8012A828(param_1, &D_801A648C); - break; - } - break; - case 5: - ((void (*)(s32))func_801803D0)(param_1); - break; - case 6: - *(u16 *)(param_1 + 0x2) = 0xd; - *(u16 *)(param_1 + 0x34) = 0; - *(u16 *)(param_1 + 0x5c) = 0; - *(s32 *)(param_1 + 0x1c) = 0x10; - func_8012A828(param_1, &D_801A6534); - break; - case 7: - *(u16 *)(param_1 + 0x2) = 0x11; - *(u16 *)(param_1 + 0x34) = 0; - *(u16 *)(param_1 + 0x5c) = 0; - func_8012A828(param_1, &D_801A6534); - *(s32 *)(param_1 + 0x1c) = 0; - func_8012B2CC(param_1); - break; - } - - *(s32 *)(param_1 + 0x24) = *(s16 *)(param_1 + 0x6); - *(s32 *)(param_1 + 0x28) = *(s16 *)(param_1 + 0xa); - *(s32 *)(param_1 + 0x2c) = *(s16 *)(param_1 + 0xe); -} - - -extern void func_8017F950(); -extern s32 D_801270D8; -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern s32 ratan2(s32, s32); -extern s32 rand(void); -extern void func_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_8018E718[]; -extern u8 D_801A68A4[]; -extern void (*D_8018E9C4[])(); -extern s32 func_8012C044(s32 a0); -extern void func_8012C098(void); -extern void func_8012C218(void *a0); -extern s32 D_801270CC; - -void func_8018127C(s32 param_1) { - s32 obj; - s32 ang; - u16 t; - - if ((*(u16 *)(param_1 + 0x5C) & 1) != 0) { - func_8017F950(); - } - if ((*(u16 *)(param_1 + 0x70) & 0x400) != 0 && D_801270D8 != 0 && - *(u16 *)(param_1 + 0x2) != 0xA) { - *(u16 *)(param_1 + 0x2) = 0xA; - *(u16 *)(param_1 + 0x98) = 0; - *(s32 *)(param_1 + 0x1C) = 0x3C; - *(u16 *)(param_1 + 0x5C) = 0; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = - ((((ratan2(*(s16 *)(param_1 + 0xE) - D_8018E6D0, - D_8018E6CC - *(s16 *)(param_1 + 0x6)) - - 0x400) & - 0xFFF) + - 0x800) & - 0xFFF); - if (*(s16 *)(param_1 + 0x6) > 0x180) { - obj = *(s32 *)(param_1 + 0x20); - ang = *(s16 *)(obj + 0x12); - *(u16 *)(obj + 0x12) = (rand() & 1) ? ang - 0x400 : ang + 0x400; - } - func_8012B2CC(param_1); - func_8012B23C(param_1); - func_8012B14C(param_1, (s32)&D_8018E718); - func_8012A828(param_1, &D_801A68A4); - } - if (*(u16 *)param_1 != 0x2F) { - return; - } - D_8018E9C4[*(u16 *)(param_1 + 0x2)](param_1); - *(u16 *)(param_1 + 0xDE) = *(u16 *)(param_1 + 0xDE) + 1; - t = *(u16 *)(param_1 + 0x86); - if (t != 0) { - *(u16 *)(param_1 + 0x86) = t - 1; - if (*(u16 *)(param_1 + 0x86) != 0) { - return; - } - } - if (func_8012C044(param_1) == 0) { - return; - } - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 5: - case 6: - ((void (*)(s32))func_8012C098)(param_1); - return; - case 3: - case 7: - ((void (*)(s32))func_8012C218)(param_1); - return; - case 4: - D_801270CC = D_801270CC - 1; - ((void (*)(s32))func_8012C218)(param_1); - return; - } -} - -extern void func_8012E364(void); - void func_80181498(void) { - ((s32 (*)(void))func_8012E364)(); - } - - -extern s32 func_8012E470(s32 a0); -extern s32 func_8012E4C8(void *a0); -void func_801814B8(int param_1) -{ - if (((int (*)(void))func_8012E470)() != 0) { - ((void (*)(int))func_8012E4C8)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected (clean structural stub) - -extern s32 func_8012BEE8(s32 a0); -extern void func_8012A828(s32 a0, void *a1); -extern unsigned char D_801A6F44; - -void func_801814F0(int param_1) -{ - ((void (*)(void))func_8012BEE8)(); - if (*(int *)(param_1 + 0x1c) == 1) { - func_8012A828(param_1, &D_801A6F44); - } - return; -} - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80181538.c b/src/ov_SC02_003/ov_SC02_003_jr_80181538.c deleted file mode 100644 index 303e905e7..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80181538.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -DEFINE_func_80181538() /* dedup: shared engine-core @0x80181538 (src/shared) */ - - -extern void func_8012AD80(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C098(void); -extern void func_8012C218(void *a0); -extern s32 D_801270CC; - -void func_801815F4(s32 param_1) { - ((s32 (*)(s32))func_8012AD80)(param_1); - if (func_8012BEE8(param_1) == 0) { - return; - } - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 5: - case 6: - ((s32 (*)(s32))func_8012C098)(param_1); - return; - case 3: - case 7: - ((s32 (*)(s32))func_8012C218)(param_1); - return; - case 4: - D_801270CC = D_801270CC + -1; - ((s32 (*)(s32))func_8012C218)(param_1); - return; - default: - return; - } -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80181698.c b/src/ov_SC02_003/ov_SC02_003_jr_80181698.c deleted file mode 100644 index 5eee12831..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80181698.c +++ /dev/null @@ -1,2779 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -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_8018E1B0[])(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_8018E174; -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 struct S80126B38 D_80126B38; -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018E1E0[])(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_8018E21C[])(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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -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_801E7F7C; -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_801E7FA4; -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_801E7F60; -extern s32 func_8017A3B0(void); -extern short D_801E7F9C; -extern short D_801E7F98; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(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_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -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_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; -extern void func_8017B7A8(void); -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -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 void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E7FAC[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_801E7FA8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018E5DC[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018E614[])(void); -extern void func_8017BEF8(void *a0); -extern void (*D_8018E628[])(void); -extern void func_8017C524(void *a0); -extern void (*D_8018E63C[])(void); -extern void func_8017C7C4(void *a0); -extern void (*D_8018E65C[])(void); -extern void func_8017CA80(void *a0); -extern void (*D_8018E664[])(void); -extern void func_8017CD14(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern u8 D_8018E650; -extern void func_8017CD50(s32 a0); -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern void func_8017E51C(s32 a0); -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 ratan2(s32, s32); -extern s32 func_8017E958(s32 param_1, s32 param_2); -extern void func_8012A828(s32 a0, void *a1); -extern char D_801A668C[]; -extern void func_8017F5A0(int param_1); -extern s32 D_801A72C4; -extern void func_8017F5E4(s32 param_1); -extern void func_8017FC9C(void *a0); -extern s32 D_801270CC; -extern void func_8012C098(void); -extern void func_8012C218(void *a0); -extern void func_8017FCB0(void *a0); -extern void func_8017FD2C(u8 *a0); -extern void func_8017FD44(void *a0); -extern void func_8012A828(int, void *); -extern void func_8012B2CC(int); -extern void func_8012B23C(int); -extern void func_8012B14C(s32 a0, s32 a1); -extern unsigned char D_801A6F44; -extern unsigned char D_8018E6EC; -extern void func_8017FD80(int param_1); -extern void func_8012B23C(s32 a0); -extern unsigned char D_8018E6F8; -extern void func_8017FDE8(int param_1); -extern unsigned char D_8018E704; -extern void func_8017FE68(int param_1); -extern void func_8012DBD0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8012CC64(s32 a0, void *a1); -extern void func_8012CBF4(s32); -extern s32 func_8012CBA4(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_80180A18(s32 a0); -extern void func_80180878(short*); -extern void func_80180394(void*); -extern void func_8017FF18(int param_1); -extern unsigned char D_801A6E7C[]; -extern void func_80143CD4(s32 a0); -extern int func_800CB0E8(int param); -extern void func_801801EC(int param_1); -extern void func_80180394(void *a0); -extern void func_801803D0(void); -extern void func_801803B0(void); -extern unsigned char D_801A73BC[]; -extern void func_80180428(int param_1); -extern int D_801A6C5C; -extern void func_80180878(short *param_1); -extern s32 func_8012BEE8(s32); -extern void func_8012B2CC(s32); -extern void func_8012B23C(s32); -extern u8 D_801A629C; -extern unsigned char D_8018E68C[]; -extern unsigned char D_801A648C[]; -extern void func_801808C4(s32 param_1); -extern void func_80130740(void *a0, u16 *a1); -extern unsigned char D_8018E78C[]; -extern void func_80180A18(int param); -extern void func_8012A828(s32, void *); -extern void func_8002D4C8(s32, s32); -extern void func_80180A64(s32 param_1); -extern void func_8012E364(void); -extern void func_80181498(void); -extern s32 func_8012E470(s32 a0); -extern s32 func_8012E4C8(void *a0); -extern void func_801814B8(int param_1); -extern s32 func_8012BEE8(s32 a0); -extern void func_801814F0(int param_1); -extern void func_80130D48(s32 a0); -extern void func_80181538(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - -extern void func_8012AD80(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C098(void); -extern void func_8012C218(void *a0); -extern s32 D_801270CC; - -void func_80181698(s32 param_1) { - ((s32 (*)(s32))func_8012AD80)(param_1); - if (func_8012BEE8(param_1) == 0) { - return; - } - switch ((s32)((u32)*(u16 *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 5: - case 6: - ((s32 (*)(s32))func_8012C098)(param_1); - return; - case 3: - case 7: - ((s32 (*)(s32))func_8012C218)(param_1); - return; - case 4: - D_801270CC = D_801270CC + -1; - ((s32 (*)(s32))func_8012C218)(param_1); - return; - default: - return; - } -} - - diff --git a/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c b/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c deleted file mode 100644 index 1a0e70cc3..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_8018173C.c +++ /dev/null @@ -1,5961 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5EA8; -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_8018E1B0[])(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_8018E174; -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 struct S80126B38 D_80126B38; -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018E1E0[])(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_8018E21C[])(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_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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(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_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -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_801E7F7C; -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_801E7FA4; -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_801E7F60; -extern s32 func_8017A3B0(void); -extern short D_801E7F9C; -extern short D_801E7F98; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(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_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -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_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; -extern void func_8017B7A8(void); -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -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 void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E7FAC[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_801E7FA8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018E5DC[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018E614[])(void); -extern void func_8017BEF8(void *a0); -extern void (*D_8018E628[])(void); -extern void func_8017C524(void *a0); -extern void (*D_8018E63C[])(void); -extern void func_8017C7C4(void *a0); -extern void (*D_8018E65C[])(void); -extern void func_8017CA80(void *a0); -extern void (*D_8018E664[])(void); -extern void func_8017CD14(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern u8 D_8018E650; -extern void func_8017CD50(s32 a0); -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern void func_8017E51C(s32 a0); -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 ratan2(s32, s32); -extern s32 func_8017E958(s32 param_1, s32 param_2); -extern void func_8012A828(s32 a0, void *a1); -extern char D_801A668C[]; -extern void func_8017F5A0(int param_1); -extern s32 D_801A72C4; -extern void func_8017F5E4(s32 param_1); -extern void func_8017FC9C(void *a0); -extern s32 D_801270CC; -extern void func_8012C098(void); -extern void func_8012C218(void *a0); -extern void func_8017FCB0(void *a0); -extern void func_8017FD2C(u8 *a0); -extern void func_8017FD44(void *a0); -extern void func_8012A828(int, void *); -extern void func_8012B2CC(int); -extern void func_8012B23C(int); -extern void func_8012B14C(s32 a0, s32 a1); -extern unsigned char D_801A6F44; -extern unsigned char D_8018E6EC; -extern void func_8017FD80(int param_1); -extern void func_8012B23C(s32 a0); -extern unsigned char D_8018E6F8; -extern void func_8017FDE8(int param_1); -extern unsigned char D_8018E704; -extern void func_8017FE68(int param_1); -extern void func_8012DBD0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8012CC64(s32 a0, void *a1); -extern void func_8012CBF4(s32); -extern s32 func_8012CBA4(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_80180A18(s32 a0); -extern void func_80180878(short*); -extern void func_80180394(void*); -extern void func_8017FF18(int param_1); -extern unsigned char D_801A6E7C[]; -extern void func_80143CD4(s32 a0); -extern int func_800CB0E8(int param); -extern void func_801801EC(int param_1); -extern void func_80180394(void *a0); -extern void func_801803D0(void); -extern void func_801803B0(void); -extern unsigned char D_801A73BC[]; -extern void func_80180428(int param_1); -extern int D_801A6C5C; -extern void func_80180878(short *param_1); -extern s32 func_8012BEE8(s32); -extern void func_8012B2CC(s32); -extern void func_8012B23C(s32); -extern u8 D_801A629C; -extern unsigned char D_8018E68C[]; -extern unsigned char D_801A648C[]; -extern void func_801808C4(s32 param_1); -extern void func_80130740(void *a0, u16 *a1); -extern unsigned char D_8018E78C[]; -extern void func_80180A18(int param); -extern void func_8012A828(s32, void *); -extern void func_8002D4C8(s32, s32); -extern void func_80180A64(s32 param_1); -extern void func_8012E364(void); -extern void func_80181498(void); -extern s32 func_8012E470(s32 a0); -extern s32 func_8012E4C8(void *a0); -extern void func_801814B8(int param_1); -extern s32 func_8012BEE8(s32 a0); -extern void func_801814F0(int param_1); -/* ==== end §8b carried decl layer ==== */ - - -// @class: struct -// @stuck: none — MATCH (clean switch + jtbl; orchestrator owns jtbl/rodata migration) - -extern void func_80130D48(s32 a0); -extern void func_8012C098(void); -extern void func_8012C218(void *a0); -extern s32 D_801270CC; - -void func_8018173C(int param_1) { - int iVar1; - - iVar1 = *(int *)(param_1 + 0x1c) + 1; - *(int *)(param_1 + 0x1c) = iVar1; - if (iVar1 >= 0x3d) { - ((void (*)(void))func_80130D48)(); - switch ((int)((unsigned int)*(unsigned short *)(param_1 + 0x70) << 0x10) >> 0x18) { - case 0: - case 1: - case 2: - case 5: - case 6: - ((void (*)(int))func_8012C098)(param_1); - break; - case 3: - case 7: - ((void (*)(int))func_8012C218)(param_1); - break; - case 4: - D_801270CC = D_801270CC + -1; - ((void (*)(int))func_8012C218)(param_1); - } - } else if (0x1e < iVar1) { - *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) = - *(unsigned int *)(*(int *)(param_1 + 0x20) + 4) ^ 0x80000000; - } - return; -} - -DEFINE_func_80181820() /* dedup: shared engine-core @0x80181820 (src/shared) */ - -void func_801818C0(void) { - extern s32 D_80126954; - 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; - - D_80126954 = 300; - D_8012695C = 300; - D_80126968 = -128; - D_8012696A = 0; - D_8012696C = 0; - D_80126976 = 0; - D_80126978 = -80; - D_8012697A = 0; -} - - -DEFINE_func_80181914() /* dedup: shared engine-core @0x80181914 (src/shared) */ - -DEFINE_func_80181934() /* dedup: shared engine-core @0x80181934 (src/shared) */ - -DEFINE_func_801819F4() /* dedup: shared engine-core @0x801819F4 (src/shared) */ - -extern u8 D_80126948[]; -extern void func_8012A094(s32 a0); -extern void func_80181AD4(); -extern void func_80181D2C(u8*); - -void func_80181A94() { - extern u8 D_80126948[]; - extern void func_80181AD4(); - extern void func_8012A094(s32 a0); - extern void func_80181D2C(u8 *a0); - func_80181AD4(D_80126948); - func_8012A094((s32)D_80126948); - func_80181D2C(D_80126948); -} - - -extern s16 D_801274E8; -extern u16 D_80126B5E; -extern void func_8012A018(s32 a, s32 b); -extern void func_80181D2C(u8*); - -void func_80181AD4(arg0) -void *arg0; -{ - D_801274E8 = D_80126B5E; - *(s32 *)((s32)arg0 + 0xC) = 0x12C; - *(s32 *)((s32)arg0 + 0x14) = 0x190; - *(s16 *)((s32)arg0 + 0x20) = 0x80; - *(s16 *)((s32)arg0 + 0x22) = 0x800; - *(s16 *)((s32)arg0 + 0x30) = -0x80; - *(s16 *)((s32)arg0 + 0x24) = 0; - *(s16 *)((s32)arg0 + 0x2E) = 0; - *(s16 *)((s32)arg0 + 0x32) = -0xC8; - *(s32 *)((s32)arg0 + 0x9C) = 0; - *(u8 *)((s32)arg0 + 0xA0) = 0; - func_8012A018((s32)func_80181D2C, 2); -} - - -DEFINE_func_80181B4C() /* dedup: shared engine-core @0x80181B4C (src/shared) */ - -DEFINE_func_80181C10() /* dedup: shared engine-core @0x80181C10 (src/shared) */ - -DEFINE_func_80181CE0() /* dedup: shared engine-core @0x80181CE0 (src/shared) */ - -extern s16 D_80126968; - extern s16 D_80126978; - void func_80181D0C(void) { - D_80126968 = 0x200; - D_80126978 = -0x1C0; - } - - -DEFINE_func_80181D2C() /* dedup: shared engine-core @0x80181D2C (src/shared) */ - - -extern s32 ratan2(s32 a0, s32 a1); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern void func_80181E70(); - -void func_80181D68(s32 param_1) { - s16 sp10[3]; - s32 angle; - - angle = ratan2((s16)D_80126B5E, (s16)D_80126B66); - sp10[0] = D_80126B5E; - sp10[1] = D_80126B62; - sp10[2] = D_80126B66; - func_80181E70(param_1, angle & 0xFFF, sp10); - func_80182058(param_1); -} - - -DEFINE_func_80181DE0() /* dedup: shared engine-core @0x80181DE0 (src/shared) */ - - -void func_80181DE8(s32 param_1) -{ - extern u16 D_80126B62; - extern u16 D_80126B66; - extern s16 D_801274E8; - extern void func_80181E70(); - s16 sp[3]; - - sp[0] = D_801274E8; - sp[1] = D_80126B62; - sp[2] = D_80126B66; - if ((s16)D_80126B66 >= -0xCFF && (s16)D_80126B62 >= -0x17F) { - sp[1] = -0x180; - } - if ((s16)sp[2] < -0x1980) { - sp[2] = -0x1980; - } - ((s32 (*)(s32, s32, s32))func_80181E70)(param_1, 0, (s32)sp); -} - - -typedef struct { short m[3][3]; long t[3]; } Mtx_8017DECC; -typedef struct { short vx, vy, vz, pad; } Sv_8017DECC; - -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_80012ABC(s32, s32, s32); -extern void func_80013F3C(s32 a0); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); - -void func_80181E70(s32 param_1, s32 param_2, s32 param_3) -{ - Mtx_8017DECC mtx; - Sv_8017DECC vec; - Sv_8017DECC out; - Sv_8017DECC rot; - - *(s32 *)(param_1 + 8) = (s16)((s16 (*)(s32, s32, s32))func_80012C6C)((s32)*(s16 *)(param_1 + 8), (s32)*(s16 *)(param_1 + 0xc), 4); - *(s32 *)(param_1 + 0x10) = (s16)((s16 (*)(s32, s32, s32))func_80012C6C)((s32)*(s16 *)(param_1 + 0x10), (s32)*(s16 *)(param_1 + 0x14), 4); - *(s16 *)(param_1 + 0x18) = ((s16 (*)(s32, s32, s32))func_80012ABC)((s32)*(s16 *)(param_1 + 0x18), (s32)*(s16 *)(param_1 + 0x20), 4); - *(s16 *)(param_1 + 0x1a) = ((s16 (*)(s32, s32, s32))func_80012ABC)((s32)*(s16 *)(param_1 + 0x1a), (s32)*(s16 *)(param_1 + 0x22), 4); - *(s16 *)(param_1 + 0x1c) = ((s16 (*)(s32, s32, s32))func_80012ABC)((s32)*(s16 *)(param_1 + 0x1c), (s32)*(s16 *)(param_1 + 0x24), 4); - *(s16 *)(param_1 + 0x28) = ((s16 (*)(s32, s32, s32))func_80012C6C)((s32)*(s16 *)(param_1 + 0x28), (s32)*(s16 *)(param_1 + 0x2e), 0x10); - *(s16 *)(param_1 + 0x2a) = ((s16 (*)(s32, s32, s32))func_80012C6C)((s32)*(s16 *)(param_1 + 0x2a), (s32)*(s16 *)(param_1 + 0x30), 0x10); - *(s16 *)(param_1 + 0x2c) = ((s16 (*)(s32, s32, s32))func_80012C6C)((s32)*(s16 *)(param_1 + 0x2c), (s32)*(s16 *)(param_1 + 0x32), 0x10); - - *(s32 *)(param_1 + 0x48) = (s32)*(s16 *)(param_1 + 0x28) + (s32)*(s16 *)(param_3 + 0); - *(s32 *)(param_1 + 0x4c) = (s32)*(s16 *)(param_1 + 0x2a) + (s32)*(s16 *)(param_3 + 2); - *(s32 *)(param_1 + 0x50) = (s32)*(s16 *)(param_1 + 0x2c) + (s32)*(s16 *)(param_3 + 4); - - rot.vx = *(u16 *)(param_1 + 0x18); - rot.vy = *(u16 *)(param_1 + 0x1a) + param_2; - rot.vz = *(u16 *)(param_1 + 0x1c); - - func_80013F3C((s32)&mtx); - func_800123F0((s32)&mtx, (s32)rot.vz); - func_80012558((s32)&mtx, (s32)rot.vy); - func_800126C4((s32)&mtx, (s32)rot.vx); - - mtx.t[0] = (s32)*(s16 *)(param_1 + 0x28) + (s32)*(s16 *)(param_3 + 0); - mtx.t[1] = (s32)*(s16 *)(param_1 + 0x2a) + (s32)*(s16 *)(param_3 + 2); - mtx.t[2] = (s32)*(s16 *)(param_1 + 0x2c) + (s32)*(s16 *)(param_3 + 4); - - vec.vx = 0; - vec.vy = 0; - vec.vz = (s16)*(s32 *)(param_1 + 0x10); - - ((void (*)(s32, s32, s32))func_8012F14C)((s32)&mtx, (s32)&vec, (s32)&out); - - *(s32 *)(param_1 + 0x3c) = (s32)out.vx; - *(s32 *)(param_1 + 0x40) = (s32)out.vy; - *(s32 *)(param_1 + 0x44) = (s32)out.vz; -} - - - -extern s32 func_80013200(s32 *a0, s32 *a1); -extern s32 ratan2(s32 a0, s32 a1); - -void func_80182058(s32 param_1) { - - extern s16 D_800B9AB8[]; - extern s16 D_800B9ABA[]; - s32 v1[3]; - s32 v2[3]; - s32 dist; - s32 angle; - s32 v0; - - v1[0] = *(s32 *)(param_1 + 0x48); - v1[1] = 0; - v1[2] = *(s32 *)(param_1 + 0x50); - v2[0] = *(s32 *)(param_1 + 0x3C); - v2[1] = 0; - v2[2] = *(s32 *)(param_1 + 0x44); - dist = func_80013200(v1, v2); - angle = ratan2(*(s32 *)(param_1 + 0x4C) - *(s32 *)(param_1 + 0x40), dist); - if (angle >= 0x801) { - angle = 0x1000 - angle; - } - v0 = angle * 360 / 1024 + 0xA0; - D_800B9ABA[0] = (s16)v0; - - angle = ratan2(v1[0] - v2[0], v1[2] - v2[2]); - v0 = angle * 640 / 4096 + 0x50; - D_800B9AB8[0] = (s16)v0; -} - - - -extern void (*D_8018EAC4[])(void); - -void func_80182154(void *a0) { - D_8018EAC4[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_80182190() /* dedup: shared engine-core @0x80182190 (src/shared) */ - -extern int func_800167F0(int arg); -extern u8 D_80126D6C; - -s32 func_801821E8(void) { - if ((func_800167F0(0) & 0xFFFF) != 0) { - D_80126D6C += 1; - return 1; - } - return 0; -} - - - -extern void (*D_8018EACC[])(void); - -void func_80182234(void *a0) { - D_8018EACC[*(u8 *)((s32)a0 + 0x15)](); -} - - - -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_801826C4(void *arg0); - -s32 func_80182270(s32 param_1) { - ((void (*)(void *, s32))func_8016EDEC)((void *)func_801826C4, 0x1000000); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - *(s32 *)(param_1 + 0x28) = 10; - 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_801822BC(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(2); - func_800167B8(4); - *(u8 *)(a0 + 0x15) = *(u8 *)(a0 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80182338() /* dedup: shared engine-core @0x80182338 (src/shared) */ - -DEFINE_func_8018235C() /* dedup: shared engine-core @0x8018235C (src/shared) */ - -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_800167B8(s32 a0); -extern void func_80183238(void *a0); -extern s32 D_801E8770; - -s32 func_80182398(s32 param_1) { - D_801E8770 = 0; - ((void (*)(void *, s32))func_8016EDEC)((void *)func_80183238, 0xB000000); - func_800167B8(0); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - return 0; -} - - -DEFINE_func_801823F0() /* dedup: shared engine-core @0x801823F0 (src/shared) */ - - -extern void (*D_8018EAE0[])(void); - -void func_80182414(void *a0) { - D_8018EAE0[*(u8 *)((s32)a0 + 0x15)](); -} - - -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_800167B8(s32 a0); -extern void func_80183718(void *a0); -extern s32 D_801E8770; - -s32 func_80182450(s32 param_1) { - D_801E8770 = 0; - ((void (*)(void *, s32))func_8016EDEC)((void *)func_80183718, 0xB000000); - func_800167B8(0); - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - return 0; -} - - -DEFINE_func_801824A8() /* dedup: shared engine-core @0x801824A8 (src/shared) */ - - -extern s32 D_801E8770; - -void func_801824CC(void) { - D_801E8770 = 1; -} - - - -extern void (*D_8018ED20[])(void); - -void func_801824E0(void *a0) { - D_8018ED20[*(u8 *)((s32)a0 + 0x214)](); -} - - -extern s32 func_800CF854(void); -extern s32 func_801472C8(struct S *a0); -extern u8 D_800D5A34[]; -extern void func_8014708C(void *arg0); -extern void func_80154274(s32 *a0, s32 a1); - -void func_8018251C(s32 param_1) { - if (((s32 (*)(s32))func_800CF854)(param_1) != 0) { - *(u8 *)(param_1 + 0x214) = 5; - } else { - func_80154274((s32 *)param_1, (s32)D_800D5A34); - func_8014708C((void *)param_1); - func_801472C8((struct S *)param_1); - *(u8 *)(param_1 + 0x4D) += 1; - *(u8 *)(param_1 + 0x214) += 1; - } -} - - -DEFINE_func_8018258C() /* dedup: shared engine-core @0x8018258C (src/shared) */ - -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); - -void func_80182594(void *a0) { - func_80146994(0x1A, (s32)a0, 0x4CC04CD, 0); - *(u8 *)((s32)a0 + 0x214) = *(u8 *)((s32)a0 + 0x214) + 1; -} - - -extern s32 func_8013767C(s32 a0); -extern s32 func_8014C050(s32 a0, s32 a1); - -void func_801825E0(s32 a0) { - if (func_8014C050(a0, 0x1A) == 0) { - *(s32 *)(a0 + 0x198) = func_8013767C(*(s32 *)(a0 + 0x198)); - *(u8 *)(a0 + 0x214) += 1; - } -} - - -DEFINE_func_80182630() /* dedup: shared engine-core @0x80182630 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (param_1 survives across func_8016F0E4 → lands in $s0; passed to func_80165770) - -extern void func_8016F0E4(void); -extern void func_80165770(void); -extern void func_80175414(s32 _arg0); - -void func_8018268C(s32 param_1) -{ - func_8016F0E4(); - ((void (*)(s32))func_80165770)(param_1); - ((void (*)(void))func_80175414)(); -} - - - -extern void (*D_8018ED38[])(void); - -void func_801826C4(void *a0) { - D_8018ED38[*(u8 *)((s32)a0 + 0x214)](); -} - - -extern void func_80171B44(s32 *a0); -extern void func_80182744(s32 a0); - -void func_80182700(s32 a0) -{ - *(u8 *)(a0 + 0x214) = *(u8 *)(a0 + 0x214) + 1; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = 0; - func_80171B44((s32 *)a0); - func_80182744(a0); -} - - -extern s32 D_801151D4; -extern s32 func_80171B4C(s32 a0, s32 a1); - -void func_80182744(s32 param_1) -{ - s32 v0; - s32 v1; - - v1 = D_801151D4; - v0 = *(s32 *)(v1 + 0xC) + 2; - *(s32 *)(v1 + 0xC) = v0; - *(s32 *)(v1 + 8) = v0; - if (func_80171B4C(param_1, 0x1E) != 0) { - *(u8 *)(param_1 + 0x214) += 1; - } -} - - -extern void func_8016F0E4(void); - void func_801827A0(void) { - ((s32 (*)(void))func_8016F0E4)(); - } - - -extern int func_8001AAA0(void); -extern void (*D_8018ED44[])(void *); - -void func_801827C0(void *a0) { - - extern int func_8001AAA0(); - extern void (*D_8018ED44[])(void *); - - if (*(s16 *)((s32)a0 + 0x20E) < 0) { - if (((int (*)(s32))func_8001AAA0)(0x13) != 0) { - *(s16 *)((s32)a0 + 0x20E) = 0; - } - } - if (*(s16 *)((s32)a0 + 0x20E) > 0) { - *(s16 *)((s32)a0 + 0x20E) = *(s16 *)((s32)a0 + 0x20E) - 1; - if (*(s16 *)((s32)a0 + 0x20E) == 0) { - *(s16 *)((s32)a0 + 0x20E) = -1; - } - } - D_8018ED44[*(u8 *)((s32)a0 + 0x214)](a0); -} - - -extern void func_80175454(void); - -void func_80182854(u8 *arg0) { - func_80175454(); - func_801818C0(); - *(u8 *)(arg0 + 0x214) = *(u8 *)(arg0 + 0x214) + 1; -} - - -DEFINE_func_80182894() /* dedup: shared engine-core @0x80182894 (src/shared) */ - -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_800D0C48(s32 a0); - -void func_80182964(u8 *a0) -{ - s16 *p; - s32 r; - u8 v0; - u16 v1; - - r = func_80012B04(((s16 **)a0)[8][9], 0xC00, 4); - if ((s16)r == 0) { - func_800D0C48(0); - v0 = a0[0x214]; - v1 = *(u16 *)(a0 + 0xBA); - *(u32 *)(a0 + 0x204) = 0; - a0[0x20C] = 0; - a0[0x20D] = 0; - *(u16 *)(a0 + 0xB8) = v1; - a0[0x214] = v0 + 1; - } - p = ((s16 **)a0)[8]; - ((u16 *)p)[9] = (((u16 *)p)[9] + r) & 0xFFF; -} - - -DEFINE_func_801829F8() /* dedup: shared engine-core @0x801829F8 (src/shared) */ - - - -extern void func_801553A8(s32 *arg); -extern void func_80147324(s32 arg); - -void func_80182AE4(void *a0) { - u16 flags = *(u16 *)((s32)a0 + 0xB8); - if (flags & 0x2000) { - func_801553A8((s32 *)a0); - func_80147324(0x445); - } else if (flags & 0x4000) { - *(u16 *)((s32)a0 + 0xD4) += 1; - } - if (*(u16 *)((s32)a0 + 0xB8) == 0x8000) { - *(u8 *)((s32)a0 + 0x214) += 1; - *(u8 *)((s32)a0 + 0x4D) -= 1; - } -} - - - - -extern s32 func_8001B23C(s32 a0); -extern void func_8016F0E4(void); -extern void func_801599A4(void *a0); -extern void func_801553A8(s32 *a0); -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_80182D00(void *a0); - -void func_80182B74(s32 param_1) { - s32 s0 = param_1; - if (func_8001B23C(0)) { - ((void (*)(s32))func_8016F0E4)(s0); - func_801599A4((void *)s0); - func_801553A8((s32 *)s0); - ((void (*)(void *, s32))func_8016EDEC)((void *)func_80182D00, 0x1000000); - } -} - - - typedef struct { - u32 tag; /* 0x00 */ - u32 c0; /* 0x04 */ - u16 x0, y0; /* 0x08, 0x0A */ - u32 c1; /* 0x0C */ - u16 x1, y1; /* 0x10, 0x12 */ - u32 c2; /* 0x14 */ - u16 x2, y2; /* 0x18, 0x1A */ - u32 c3; /* 0x1C */ - u16 x3, y3; /* 0x20, 0x22 */ - } PG4_80189340; /* 0x24 */ - -typedef struct { - SVECTOR t0; - SVECTOR t1; - SVECTOR v0; - SVECTOR v1; - void *p0; - void *p1; - s32 zero1; - s32 zero2; - s32 tag; - u8 pad[16]; -} LinePrim_80189B1C; - -extern u8 D_80126948[]; -extern s32 D_80126E60[]; - -typedef struct { - s32 w[0x29]; -} Blk_0xA4; - -void func_80182BD0(u8 *a0) { - u8 *t0 = D_80126948; - u8 v0; - - v0 = a0[0x20C]; - if (v0 != 0) { - v0 = v0 - 1; - a0[0x20C] = v0; - if (v0 == 0) { - a0[0x20D] = a0[0x20D] + 1; - *(Blk_0xA4 *) D_80126E60 = *(Blk_0xA4 *) t0; - - *(s16 *) (t0 + 0x18) = 0x71; - *(s16 *) (t0 + 0x20) = 0x71; - *(s32 *) (t0 + 0x10) = 0x100; - *(s32 *) (t0 + 0x14) = 0x100; - *(s16 *) (t0 + 0x2A) = 0x40; - *(s16 *) (t0 + 0x30) = 0x40; - *(s16 *) (t0 + 0x2C) = 0; - *(s16 *) (t0 + 0x32) = 0; - } - } - - v0 = a0[0x20D]; - if (v0 != 0) { - if (v0 == 1) { - s16 t2, t3; - t2 = *(s16 *) (t0 + 0x2A); - t3 = *(s16 *) (t0 + 0x1A); - t2 = t2 - 1; - t3 = t3 + 0x16; - *(s16 *) (t0 + 0x2A) = t2; - *(s16 *) (t0 + 0x30) = t2; - *(s16 *) (t0 + 0x1A) = t3; - *(s16 *) (t0 + 0x22) = t3; - } - } -} - - - - -void func_80182CB4(s32 _arg0) -{ - typedef struct { s32 w[4]; } Blk16; - extern u8 D_80126948[]; - extern s32 D_80126E60[]; - Blk16 *src; - Blk16 *dst; - Blk16 *end; - - dst = (Blk16 *)&D_80126948; - src = (Blk16 *)D_80126E60; - end = src + 10; - do { - *dst = *src; - src++; - dst++; - } while (src != end); - *(s32 *)dst = *(s32 *)src; -} - - -DEFINE_func_80182D00() /* dedup: shared engine-core @0x80182D00 (src/shared) */ - - -extern void func_80181914(); - -void func_80182D3C(u8 *a0) { - __asm__ __volatile__(""); - *(u32 *)((s32)a0 + 0x44) |= 0x2000000; - func_80181914(); - *(u8 *)(a0 + 0x214) = *(u8 *)(a0 + 0x214) + 1; -} - - - - -extern Blk8 D_801E6C84; -extern s32 func_80171D78(s32 a0, s32 a1); -extern void func_8002D4C8(s32 a0, s32 a1); -void func_801831A8(void *arg0); - -void func_80182D84(void *param_1) { - Blk8 buffer; - - buffer = D_801E6C84; - if (func_80171D78((s32)param_1, (s32)&buffer)) { - func_8002D4C8(0x4E0, 0); - func_801831A8(param_1); - *(s32 *)((s32)param_1 + 0x204) = 8; - *(u8 *)((s32)param_1 + 0x214) += 1; - } -} - - - - -extern void func_80154274(s32 *a0, s32 a1); -extern s32 D_800D4744; -extern s32 D_801A7F50; -extern s32 D_801A7FF0; - -void func_80182E08(void *arg0) { - s32 temp_v0; - - temp_v0 = M2C_FIELD(arg0, s32 *, 0x204) - 1; - M2C_FIELD(arg0, s32 *, 0x204) = temp_v0; - if (temp_v0 == -1) { - M2C_FIELD(arg0, s32 *, 0x204) = 0x40; - func_80154274(arg0, (s32)&D_800D4744); - M2C_FIELD(arg0, s32 *, 0xB0) = (s32)&D_801A7F50; - M2C_FIELD(arg0, s32 *, 0xCC) = (s32)&D_801A7FF0; - M2C_FIELD(arg0, u8 *, 0x4D) = (u8) (M2C_FIELD(arg0, u8 *, 0x4D) + 1); - M2C_FIELD(arg0, u8 *, 0x214) = (u8) (M2C_FIELD(arg0, u8 *, 0x214) + 1); - } -} - - -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_801831A8(void*); - -void func_80182E84(s32 param_1) { - s32 temp_v0; - - ((void (*)(s32))func_801831A8)(param_1); - temp_v0 = *(s32 *)(param_1 + 0x204) - 1; - *(s32 *)(param_1 + 0x204) = temp_v0; - if (temp_v0 != -1) { - return; - } - func_8002D4C8(4, 0x4E0); - *(s32 *)(param_1 + 0x204) = 0x40; - *(u8 *)(param_1 + 0x4D) = *(u8 *)(param_1 + 0x4D) - 1; - *(u8 *)(param_1 + 0x214) = *(u8 *)(param_1 + 0x214) + 1; -} - - -void func_80182EEC(void *a0) { - s32 *p = (s32 *)((u8 *)a0 + 0x204); - *p = *p - 1; - - if (*p == -1) { - *p = 0x10; - func_80142454(-0x80); - func_80185E88(); - (*(u8 *)((u8 *)a0 + 0x214))++; - } -} - - -void func_80182F4C(s32 arg0) -{ - s32 t = *(s32 *)(arg0 + 0x204) - 1; - *(s32 *)(arg0 + 0x204) = t; - if (t == -1) - (*(u8 *)(arg0 + 0x214))++; -} - - -extern s32 func_80171D78(s32 a0, s32 a1); -extern u8 D_801E6C8C[8]; -extern u8 D_801E6C94[8]; - -void func_80182F78(s32 arg0) -{ - u8 local_18[16]; - - __builtin_memcpy(local_18, D_801E6C8C, 8); - __builtin_memcpy(local_18 + 8, D_801E6C94, 8); - - if (func_80171D78(arg0, (s32)local_18) != 0) { - (*(u8 *)(arg0 + 0x214))++; - } -} - - -DEFINE_func_80183010() /* dedup: shared engine-core @0x80183010 (src/shared) */ - -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); - -void func_80183018(u8 *a0) { - func_801466F0(3, (s32)a0, 0, 0, 0, 0, 0, 1); - *(u8 *)(a0 + 0x4D) = *(u8 *)(a0 + 0x4D) + 1; - func_80154150((s32)a0, 0xF); - func_801477E8((s32 *)a0, 0); - *(u8 *)(a0 + 0x214) = *(u8 *)(a0 + 0x214) + 1; -} - - -typedef struct { u8 b[8]; } St_801E6C9C; -extern St_801E6C9C D_801E6C9C; -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147A84(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); - -void func_80183098(s32 arg0) -{ - St_801E6C9C buf; - - buf = D_801E6C9C; - if (*(s16 *)(arg0 + 0xA) >= -0xBFF) { - *(u16 *)(arg0 + 0x88) = *(u16 *)&buf.b[0]; - *(u16 *)(arg0 + 0x06) = *(u16 *)&buf.b[0]; - *(u16 *)(arg0 + 0x8A) = *(u16 *)&buf.b[2]; - *(u16 *)(arg0 + 0x0A) = *(u16 *)&buf.b[2]; - *(u16 *)(arg0 + 0x8C) = *(u16 *)&buf.b[4]; - *(u16 *)(arg0 + 0x0E) = *(u16 *)&buf.b[4]; - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = 0; - *(u8 *)(arg0 + 0x4D) -= 1; - *(u8 *)(arg0 + 0x214) += 1; - } else { - func_80148038(arg0, 0x18000); - func_80147A84(arg0); - func_801473EC(arg0); - func_80147460(arg0); - } -} - - -extern s32 D_80126984; -extern s32 D_80126990; -void func_8018316C(void) -{ - if (1000 < D_80126984) { - D_80126984 -= 0x14; - D_80126990 -= 0x14; - } - return; -} - - -DEFINE_func_801831A8() /* dedup: shared engine-core @0x801831A8 (src/shared) */ - - -extern u8 D_80126D6C; - void func_801831E4(void) { - D_80126D6C = 0x8; - } - - -extern s32 D_80126B58; -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_8016F0E4(void); -extern void func_80175414(s32 _arg0); -extern void func_80183238(void *a0); - -void func_801831F8() { - ((void (*)(void *))func_8016F0E4)((void *)&D_80126B58); - ((void (*)(void *, s32))func_8016EDEC)((void *)func_80183238, 0xB000000); - ((void (*)(void))func_80175414)(); -} - - - -extern void (*D_8018EDA0[])(void); - -void func_80183238(void *a0) { - D_8018EDA0[*(u8 *)((s32)a0 + 0x214)](); -} - - - - -extern s32 func_800CF854(void); -extern void func_800D1744(s32 *a0); -extern void func_80183A78(s32 *a0); -extern void func_80175414(s32 _arg0); -extern s32 D_8018EA6C; -extern s32 D_801A7F50; -extern s32 D_801A7FF0; - -void func_80183274(s32 *a0) { - s32 v0; - func_8016F094(a0); - v0 = func_800CF854(); - if (v0 != 0) { - ((void (*)(void))func_80175414)(); - } - func_800D1744(&D_8018EA6C); - *(s16 *) ((s32) a0 + 0x136) = 2; - *(s32 *) ((s32) a0 + 0xB0) = (s32) &D_801A7F50; - *(s32 *) ((s32) a0 + 0xCC) = (s32) &D_801A7FF0; - *(s16 *) ((s32) a0 + 0x132) = 0; - *(s32 *) ((s32) a0 + 0x44) = *(s32 *) ((s32) a0 + 0x44) | 0x3000000; - func_80183A78(a0); - v0 = *(u8 *) ((s32) a0 + 0x214); - *(u8 *) ((s32) a0 + 0x214) = v0 + 1; -} - - -extern s16 D_80126968; -extern s16 D_80126960; -extern s16 D_80126974; -extern s16 D_8012697A; -extern s16 D_800B9ABA[]; - -void func_80183310(s32 param_1) -{ - s16 v; - s16 v2; - - func_801839C4((void *)param_1); - func_80183A80(param_1); - *(unsigned short *)(param_1 + 0xaa) = *(unsigned short *)(param_1 + 0xaa) & 0x5fff; - *(unsigned short *)(param_1 + 0xac) = *(unsigned short *)(param_1 + 0xac) & 0x5fff; - *(unsigned short *)(param_1 + 0xae) = *(unsigned short *)(param_1 + 0xae) & 0xff00 | 0x80; - if (*(short *)(param_1 + 0xe) < 0x2a00) { - *(unsigned int *)(param_1 + 0x1f8) = *(unsigned int *)(param_1 + 0x1f8) | 0x1000000; - v = D_80126968 + 0x22; - D_80126968 = v; - D_80126960 = v; - if (v > 0x38e) { - D_80126968 = 0x38e; - D_80126960 = 0x38e; - } - v2 = D_8012697A + 10; - D_8012697A = v2; - D_80126974 = v2; - if (0 < (v2 << 16)) { - D_8012697A = 0; - D_80126974 = 0; - } - } - if (*(short *)(param_1 + 0xe) < 0x28e0) { - *(unsigned short *)(param_1 + 0xaa) = *(unsigned short *)(param_1 + 0xaa) | 0x40; - *(unsigned short *)(param_1 + 0xac) = *(unsigned short *)(param_1 + 0xac) | 0x40; - if ((*(short *)(param_1 + 0xe) < 0x28e0) && (0 < *(int *)(param_1 + 0x34))) { - D_800B9ABA[0] = 0x1e0; - func_80185EC8(); - func_80188F08(); - *(unsigned int *)(param_1 + 0x1f8) = *(unsigned int *)(param_1 + 0x1f8) | 0x1000000; - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0x400; - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = 0; - *(short *)(param_1 + 0x8a) = 0xf940; - *(short *)(param_1 + 10) = 0xf940; - *(short *)(param_1 + 0x88) = 0; - *(short *)(param_1 + 6) = 0; - *(short *)(param_1 + 0x8c) = 0x1c7f; - *(short *)(param_1 + 0xe) = 0x1c7f; - func_80146DE8((s32 *)param_1,0,0,0xfff00000); - *(unsigned int *)(param_1 + 0x204) = 0x10; - func_80181A94(); - *(char *)(param_1 + 0x4d) = *(char *)(param_1 + 0x4d) + 1; - *(char *)(param_1 + 0x214) = *(char *)(param_1 + 0x214) + 1; - func_80175454(); - } - } -} - - -void func_801834EC(s32 arg0) -{ - func_80147AD4(arg0, 0, 0, 0); - func_801473EC((s32 *)arg0); - func_80172414(arg0); - if (--*(s32 *)(arg0 + 0x204) == -1) { - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x10) = 0; - func_80146D90(arg0); - *(s32 *)(arg0 + 0x204) = 0x10; - *(u8 *)(arg0 + 0x4D) -= 1; - *(u8 *)(arg0 + 0x214) += 1; - } -} - - - -void func_80183574(void *arg0) { - s32 temp_v0; - - temp_v0 = M2C_FIELD(arg0, s32 *, 0x204) - 1; - M2C_FIELD(arg0, s32 *, 0x204) = temp_v0; - if (temp_v0 == -1) { - func_80185F24(); - M2C_FIELD(arg0, s32 *, 0x204) = 0x30; - M2C_FIELD(arg0, u8 *, 0x214) = (u8) (M2C_FIELD(arg0, u8 *, 0x214) + 1); - } -} - - - - -void func_801835C8(void *arg0) { - s32 temp_v0; - - temp_v0 = M2C_FIELD(arg0, s32 *, 0x204) - 1; - M2C_FIELD(arg0, s32 *, 0x204) = temp_v0; - if (temp_v0 == -1) { - M2C_FIELD(arg0, s32 *, 0x204) = 0x30; - M2C_FIELD(arg0, u8 *, 0x214) = (u8) (M2C_FIELD(arg0, u8 *, 0x214) + 1); - } -} - - - - -void func_801835F8(arg0) -void *arg0; -{ - s32 temp_v0; - - M2C_FIELD(arg0, s16 *, 0x132) = 0x800; - if ((M2C_FIELD(arg0, s32 *, 0x204) & 0xF) == 0) { - M2C_FIELD(arg0, s16 *, 0xAC) = 0x40; - M2C_FIELD(arg0, s16 *, 0xAA) = 0x40; - } - temp_v0 = M2C_FIELD(arg0, s32 *, 0x204) - 1; - M2C_FIELD(arg0, s32 *, 0x204) = temp_v0; - if (temp_v0 == -1) { - func_80185F58(); - M2C_FIELD(arg0, s32 *, 0x204) = 0x10; - M2C_FIELD(arg0, u8 *, 0x214) = (u8) (M2C_FIELD(arg0, u8 *, 0x214) + 1); - } -} - - -void func_8018366C(void *arg0) { - s32 temp_v0; - - temp_v0 = M2C_FIELD(arg0, s32 *, 0x204) - 1; - M2C_FIELD(arg0, s32 *, 0x204) = temp_v0; - if (temp_v0 == -1) { - func_80147324(0xA52); - func_80142454(-0x80); - M2C_FIELD(arg0, s32 *, 0x204) = 0x1; - M2C_FIELD(arg0, u8 *, 0x214) = (u8) (M2C_FIELD(arg0, u8 *, 0x214) + 1); - } -} - - - - -extern void func_8016F0E4(void); -extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); -extern void func_80183718(void *a0); - -void func_801836C8(void *arg0) { - s32 temp_v0; - - temp_v0 = *(s32 *)((s32)arg0 + 0x204) - 1; - *(s32 *)((s32)arg0 + 0x204) = temp_v0; - if (temp_v0 == -1) { - *(u16 *)((s32)arg0 + 0x132) = 0; - *(u16 *)((s32)arg0 + 0xAC) = 0x40; - *(u16 *)((s32)arg0 + 0xAA) = 0x40; - func_8016F0E4(); - ((void (*)(void *, s32))func_8016EDEC)((void *)func_80183718, 0xB000000); - } -} - - - -extern void (*D_8018EDC0[])(void); - -void func_80183718(void *a0) { - D_8018EDC0[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80183754() /* dedup: shared engine-core @0x80183754 (src/shared) */ - -DEFINE_func_80183814() /* dedup: shared engine-core @0x80183814 (src/shared) */ - - -void func_801839C4(void *a0) { - s32 bVar1; - - *(u32 *)((s32)a0 + 0x1F8) = *(u32 *)((s32)a0 + 0x1F8) & 0xFEFFFFFF; - *(u16 *)((s32)a0 + 0xAA) = *(u16 *)((s32)a0 + 0xAA) & 0xFF40; - bVar1 = *(u8 *)((s32)a0 + 0xA9); - *(u16 *)((s32)a0 + 0xAC) = *(u16 *)((s32)a0 + 0xAC) & 0xFF40; - - __asm__ __volatile__("" ::: "memory"); - - switch (bVar1) { - case 0x41: - *(u16 *)((s32)a0 + 0xAA) = *(u16 *)((s32)a0 + 0xAA) & 0xAFFF; - *(u16 *)((s32)a0 + 0xAC) = *(u16 *)((s32)a0 + 0xAC) & 0xAFFF; - *(u16 *)((s32)a0 + 0xAA) = *(u16 *)((s32)a0 + 0xAA) | 0x4000; - *(u16 *)((s32)a0 + 0xAC) = *(u16 *)((s32)a0 + 0xAC) | 0x4000; - break; - case 0x53: - case 0x73: - *(u16 *)((s32)a0 + 0xAE) = *(u8 *)((s32)a0 + 0xAE) | 0xFF00; - break; - } -} - - -DEFINE_func_80183A78() /* dedup: shared engine-core @0x80183A78 (src/shared) */ - -DEFINE_func_80183A80() /* dedup: shared engine-core @0x80183A80 (src/shared) */ - -extern u8 D_800A5E94; -extern u8 D_800A5E95; -extern u8 D_800A5E96; - -void func_80183B64(s32 a0) { - *(u16 *)((s32)a0 + 0x20E) = D_800A5E94 << 8; - *(u16 *)((s32)a0 + 0x210) = D_800A5E95 << 8; - *(u16 *)((s32)a0 + 0x212) = D_800A5E96 << 8; -} - - - - -extern s16 D_800AE7E0; -extern s16 D_800AE7E2; -extern s16 D_800AE7E4; -extern void func_80028558(s32, s32, s32, s32); - -void func_80183BA4(s32 arg0) -{ - s16 *p; - - *(s16 *)(arg0 + 0x20E) = *(s16 *)(arg0 + 0x20E) + 0x30; - if (*(u8 *)(arg0 + 0x20F) >= 0xFF) { - *(u8 *)(arg0 + 0x20F) = 0xFE; - } - *(s16 *)(arg0 + 0x210) = *(s16 *)(arg0 + 0x210) + 0x10; - if (*(u8 *)(arg0 + 0x211) > 0x90) { - *(u8 *)(arg0 + 0x211) = 0x90; - } - *(s16 *)(arg0 + 0x212) = *(s16 *)(arg0 + 0x212) - 0x10; - if (*(u8 *)(arg0 + 0x213) < 0x20) { - *(u8 *)(arg0 + 0x213) = 0x20; - } - func_80028558(0, *(u8 *)(arg0 + 0x20F), *(u8 *)(arg0 + 0x211), *(u8 *)(arg0 + 0x213)); - p = &D_800AE7E0; - *p += 3; - if (*p > 0x1000) { - *p = 0x1000; - } - func_8002850C(*p, D_800AE7E2, D_800AE7E4); -} - - -DEFINE_func_80183C94() /* dedup: shared engine-core @0x80183C94 (src/shared) */ - -extern s32 func_8013767C(s32 a0); -extern void func_80147324(s32 a0); -void func_80183C9C(s32 a0) { - - extern s16 D_8018EDD8[]; - extern u8 D_801A7CB0; - s16 v; - s16 d; - v = D_8018EDD8[*(u8 *)(a0 + 0x20C)]; - if (v != 0) { - d = v - *(u16 *)(a0 + 0xE); - v = d; - if (d < 0) { - v = -d; - } - if (v < 0x180) { - *(s32 *)(a0 + 0x198) = func_8013767C((s32)&D_801A7CB0); - switch (*(u8 *)(a0 + 0x20C)) { - case 0: - func_80147324(0x5A1); - break; - case 1: - func_80147324(0x5F1); - break; - case 2: - func_80147324(0x5F2); - break; - } - *(u8 *)(a0 + 0x20C) += 1; - } - } -} - - - - -typedef struct { - void (*fn[3])(void *); -} Tbl_801E6CA4; - -extern Tbl_801E6CA4 D_801E6CA4; - -void func_80183D80(void *arg0) { - Tbl_801E6CA4 local = D_801E6CA4; - u16 idx = *(u16 *)((s32)arg0 + 2); - local.fn[idx](arg0); -} - - - -extern s32 D_801DF720; -extern s32 D_801DFBA8; -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8014659C(void); -extern void func_80146CA0(void *a0); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); - -void func_80183DD8(a0) -s32 a0; -{ - extern void func_8001C214(s32 a0, s32 a1); - extern s32 D_801DFBA8; - extern s32 D_801DF720; - - s32 iVar1; - s32 iVar2; - s32 iVar3; - s32 iVar4; - - iVar2 = *(s32 *)(a0 + 0x4c); - iVar1 = ((s32 (*)(void))func_8014659C)(); - *(s32 *)(a0 + 0x20) = iVar1; - if (iVar1 != 0) { - func_8001C214(iVar1, (s32)&D_801DFBA8); - *(s32 *)(iVar1 + 4) |= 0x40; - *(s32 *)(iVar1 + 0x20) = (s32)&D_801DF720; - func_80149374(iVar2, a0 + 4); - iVar3 = *(s32 *)(a0 + 0x20); - iVar4 = *(s32 *)(iVar2 + 0x20); - *(Blk16 *)(iVar3 + 0x34) = *(Blk16 *)(iVar4 + 0x34); - *(Blk16 *)(iVar3 + 0x44) = *(Blk16 *)(iVar4 + 0x44); - func_80146E90((s32 *)a0, 0x10); - func_80146CA0((void *)a0); - } -} - - -extern void func_80146CA0(void *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); - -void func_80183EB8(void *a0) { - if (func_80146E98((s32)a0) != 0) { - func_80146E90(a0, 0x10); - func_80146DE8(a0, 0, 0x40000, 0); - func_80146CA0(a0); - } -} - - - - -extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80162FC0(s32 *a0); -extern s32 func_80146E98(s32 a0); -extern void func_80162CCC(); - -void func_80183F0C(void *a0) { - func_80162FF4((s32)a0, 0, 0x1C000, 0); - func_80162FC0((s32 *)a0); - if (func_80146E98((s32)a0) != 0) { - ((void (*)(void *))func_80162CCC)(a0); - } -} - - -extern void (*D_8018F1B4[])(void); -extern void func_8013D064(void); - -void func_80183F64(void *a0) { - D_8018F1B4[*(u16 *)((s32)a0 + 0x2)](); - if (*(u16 *)((s32)a0 + 0x2) >= 0xA) { - func_8013D064(); - } -} - - -/* func_80183FC8 — ov_SC02_003 / ov_SC02_003_jr_8018173C.c - * - * Body is the byte-verified twin of ov_SC02_000:func_80183FC8 (103 ins, - * same TU stem). The ONLY change vs. that twin is an INTEGRATION fix: - * - * The destination TU src/ov_SC02_003/ov_SC02_003_jr_8018173C.c already - * defines, at FILE SCOPE and *after* our insertion point (TU line 6080, - * for the func_80188AEC block), an anonymous-struct typedef named - * `Elem_8018F086` — identical shape, but gcc-2.7.2-psx treats two - * file-scope anonymous-struct typedefs of the same name as conflicting - * even when byte-identical, and that later copy is hand-written in the - * TU (no header guard to hang a fix on). Same class as the - * Rec12_801888F4 / D_8018F560 collision documented in this TU's own - * func_801888F4 header note. - * - * FIX (cookbook §183, move "TYPE-shadowed-block-scope"): the typedef and - * its `extern` live inside the function body. A block-scope declaration - * that a later file-scope one contradicts is at most a warning in this - * compiler, never an error — and here it is not even that, since a - * block-scope typedef and a later file-scope typedef of the same name - * occupy different scopes. Byte-neutral: types do not reach codegen. - * - * Everything else below is a plain `extern`. Repeats of an identical - * extern elsewhere in the TU are legal C: - * func_8012C1B8/func_8012CAE4/func_8001C214/func_8001D0E8/func_8012A828 - * (TU lines 3953, 4852-4854, 5295-5297, 5430-5434, 5684-5687, 6195-6199) - * D_800B9A0E (TU 6608/6624/6636) D_801E8010 (TU 4326) - * D_801B6AD0[] (TU 4136) - * func_80181934 / func_80181B4C are defined earlier in the TU by - * DEFINE_func_80181934()/DEFINE_func_80181B4C() as `void f(void)`; an - * unspecified-parameter `extern void f();` is compatible with that in C89 - * (§195-A: '?' is never a conflict) — kept unspecified so no argument is - * invented (§263). - */ - -#include "common.h" - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8001D0E8(s32 a0, s32 a1, s32 a2); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8013C414(s32 param_1, s32 param_2); -extern void func_80181934(); -extern void func_80181B4C(); - -extern s16 D_800B9A0E; -extern s32 D_801E8010; -extern s32 D_801E8820; - -extern u8 D_801AF280[]; -extern u8 D_8018EDDC[]; -extern u8 D_801AFAE8[]; -extern u8 D_801B6AD0[]; - -void func_80183FC8(s32 param_1) { - /* block scope — see header note: file scope collides with this TU's own - (later, unmodifiable) `Elem_8018F086` typedef at TU line 6080. */ - typedef struct { - s16 f0; - s16 f1, f2, f3, f4, f5; - } Elem_8018F086; - extern Elem_8018F086 D_8018F086[]; - - s32 iVar1; - u32 i; - s16 v1; - - iVar1 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 == 0) { - func_8012CAE4((void *)param_1); - return; - } - - for (i = 0; i < 0x1A; i++) { - D_8018F086[i].f0 = 0; - } - - D_801E8010 = 0; - func_8001C214(iVar1, (s32)D_801AF280); - func_8001D0E8(iVar1, 0x800, 0x800); - func_8012A828(param_1, D_8018EDDC); - - *(s16 *)(param_1 + 0xF8) = 1; - *(s16 *)(param_1 + 0xFA) = 0; - - v1 = D_800B9A0E; - if (v1 == 0) { - func_8013C414((s32)D_801AFAE8, (s32)D_801B6AD0); - *(s16 *)(param_1 + 0x2) = *(u16 *)(param_1 + 0x2) + 1; - } else if (v1 == 1) { - func_80181934(); - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = -0x400; - D_801E8820 = 1000; - *(s16 *)(param_1 + 0xA) = -0x3F4; - *(s16 *)(param_1 + 0xE) = 0x3C98; - *(s16 *)(param_1 + 0x6) = 0; - *(s16 *)(param_1 + 0x2) = 9; - } else { - func_80181B4C(); - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x14) = -0x400; - D_801E8820 = 1000; - *(s16 *)(param_1 + 0xA) = -0x573; - *(s16 *)(param_1 + 0xE) = 0x1C59; - *(s16 *)(param_1 + 0xDC) = 0x10; - *(s32 *)(param_1 + 0x18) = (s32)0xFFFE0000; - *(s32 *)(param_1 + 0x4C) = -0x4000; - *(s16 *)(param_1 + 0xE2) = 2; - *(s16 *)(param_1 + 0x6) = 0; - *(s16 *)(param_1 + 0xDE) = 0; - *(s16 *)(param_1 + 0xE0) = 0; - *(s16 *)(param_1 + 0x2) = 0x15; - } - *(s32 *)(param_1 + 0x1C) = 0; -} - - -DEFINE_func_80184164() /* dedup: shared engine-core @0x80184164 (src/shared) */ - -DEFINE_func_80184174() /* dedup: shared engine-core @0x80184174 (src/shared) */ - -DEFINE_func_8018419C() /* dedup: shared engine-core @0x8018419C (src/shared) */ - -DEFINE_func_80184250() /* dedup: shared engine-core @0x80184250 (src/shared) */ - - /* 12-byte stride */ - - - - -typedef struct { s16 vx, vy, vz, pad; } SVEC_80184358; - -extern void func_8012B2CC(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern u8 D_8018EFF4; -extern s32 D_801E8738; -extern SVEC_80184358 aD_8018F034 __asm__("D_8018F034"); -extern SVEC_80184358 aD_8018F03C __asm__("D_8018F03C"); - -void func_80184358(s32 p) { - SVEC_80184358 sv; - s32 q; - s32 r; - s16 t; - - func_8012B2CC(p); - - if (*(s32 *)(p + 0xCC) != 0) { - func_8012F14C(*(s32 *)(p + 0x20) + 0x34, (s32) &aD_8018F034, (s32) &sv); - *(s16 *)(*(s32 *)(p + 0xCC) + 0x8) = sv.vx; - *(s16 *)(*(s32 *)(p + 0xCC) + 0xA) = sv.vy; - *(s16 *)(*(s32 *)(p + 0xCC) + 0xC) = sv.vz; - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xCC) + 0x10) = *(u16 *)(q + 0x10); - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xCC) + 0x12) = *(u16 *)(q + 0x12); - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xCC) + 0x14) = *(u16 *)(q + 0x14); - } - - if (*(s32 *)(p + 0xD0) != 0) { - func_8012F14C(*(s32 *)(p + 0x20) + 0x34, (s32) &aD_8018F03C, (s32) &sv); - *(s16 *)(*(s32 *)(p + 0xD0) + 0x8) = sv.vx; - *(s16 *)(*(s32 *)(p + 0xD0) + 0xA) = sv.vy; - *(s16 *)(*(s32 *)(p + 0xD0) + 0xC) = sv.vz; - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xD0) + 0x10) = *(u16 *)(q + 0x10); - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xD0) + 0x12) = *(u16 *)(q + 0x12); - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xD0) + 0x14) = *(u16 *)(q + 0x14); - } - - t = *(s16 *)(p + 0xDC); - if (t == 0) { - s16 v = *(u16 *)(p + 0xDE) - 0x40; - *(s16 *)(p + 0xDE) = v; - if (v <= 0) { - *(s16 *)(p + 0xDE) = 0; - } - D_8018EFF4 = (u8) *(u16 *)(p + 0xDE); - if (*(s16 *)(p + 0xDE) == 0) { - if (*(s32 *)(p + 0xCC) != 0) { - *(s16 *)(*(s32 *)(p + 0xCC)) = 0; - } - if (*(s32 *)(p + 0xD0) != 0) { - *(s16 *)(*(s32 *)(p + 0xD0)) = 0; - } - r = *(u16 *)(p + 0x2); - *(s16 *)(p + 0xDC) = 0x1000; - D_801E8738 = 0; - *(s16 *)(p + 0x2) = r + 1; - } - } else { - *(s16 *)(p + 0xDC) = t - 1; - } -} - - -typedef struct { u16 x, y, z, w; } Blk8_8018453C; -typedef struct { s32 f0, f1, f2, f3, f4, f5, f6, f7; } Blk32_801E8788; - -extern s32 D_801E8738; -extern void (*D_8018F044)(void); -extern s32 D_8018F04C; -extern s32 D_8018F054; -extern void (*D_8018F05C)(void); -extern void (*D_8018F064)(void); -extern void (*D_8018F06C)(void); -extern void func_8018623C(u16 arg0, u16 arg1); -extern void func_8012B2CC(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80185910(SVECTOR*, SVECTOR*, SVECTOR*, SVECTOR*); -extern s32 D_801E86BC; -extern s32 D_801E86C4; -extern Blk8_8018453C D_801E87B0; -extern s32 D_801E8788; -extern void func_801861D8(s32 a0); -extern void func_8013C360(s32 a0); -extern void func_801831E4(void); -extern s32 D_801270D8; -extern u8 D_801B6AD0[]; - -void func_8018453C(s32 param_1) { - s16 sp10[4]; - s16 sp18[4]; - s16 sp20[4]; - s16 sp28[4]; - s32 s5; - s32 v0; - s32 v1; - s32 s0; - - s5 = param_1; - - if (D_801E8738 == 0) { - func_8018623C(0x4D5, 0); - D_801E8738 = D_801E8738 + 1; - } - - func_8012B2CC(s5); - - func_8012F14C(*(s32 *)(s5 + 0x20) + 0x34, (s32)&D_8018F044, (s32)sp18); - func_8012F14C(*(s32 *)(s5 + 0x20) + 0x34, (s32)&D_8018F04C, (s32)sp28); - func_8012F14C(*(s32 *)(s5 + 0x20) + 0x34, (s32)&D_8018F054, (s32)sp10); - func_8012F14C(*(s32 *)(s5 + 0x20) + 0x34, (s32)&D_8018F05C, (s32)sp20); - ((void (*)(s32, s32, s32, s32))func_80185910)((s32)sp10, (s32)sp18, (s32)sp20, (s32)sp28); - - func_8012F14C(*(s32 *)(s5 + 0x20) + 0x34, (s32)&D_8018F044, (s32)sp18); - func_8012F14C(*(s32 *)(s5 + 0x20) + 0x34, (s32)&D_8018F04C, (s32)sp28); - func_8012F14C(*(s32 *)(s5 + 0x20) + 0x34, (s32)&D_8018F064, (s32)sp10); - func_8012F14C(*(s32 *)(s5 + 0x20) + 0x34, (s32)&D_8018F06C, (s32)sp20); - ((void (*)(s32, s32, s32, s32))func_80185910)((s32)sp10, (s32)sp18, (s32)sp20, (s32)sp28); - - *(s16 *)(*(s32 *)(s5 + 0x20) + 0x12) = 0xC00 - *(u16 *)(s5 + 0xDC); - v0 = *(u16 *)(s5 + 0xDC) - 0x100; - *(u16 *)(s5 + 0xDC) = v0; - if ((s32)(v0 << 16) <= 0) { - s0 = 1; - v1 = *(s32 *)(s5 + 0x20); - D_801E86BC = s0; - D_801E86C4 = 0; - *(s16 *)(v1 + 0x12) = 0xC00; - *(u16 *)(s5 + 0xDC) = 4; - D_801E87B0 = *(Blk8_8018453C *)(*(s32 *)(s5 + 0x20) + 0x10); - (*(Blk32_801E8788 *)&D_801E8788) = *(Blk32_801E8788 *)(*(s32 *)(s5 + 0x20) + 0x34); - func_801861D8(s5); - func_8013C360((s32)D_801B6AD0); - func_801831E4(); - D_801270D8 = s0; - *(u16 *)(s5 + 2) = *(u16 *)(s5 + 2) + 1; - } -} - - -extern s32 D_801E8754; -extern u8 D_8018EDF4[]; -extern void func_8012A828(s32 a0, void *a1); -extern void func_8018483C(); - -void func_801847B8(s32 a0) { - s32 val; - - if ((*(s16 *)(a0 + 0xDC) -= 1) == 0) { - func_8012A828(a0, D_8018EDF4); - *(u16 *)(a0 + 0xDC) = 0x3C; - *(u16 *)(a0 + 0xDE) = 0xC; - val = *(u16 *)(a0 + 2); - D_801E8754 = 0x1E; - *(u16 *)(a0 + 2) = val + 1; - } else { - func_8018483C(a0); - } -} - - - /* 12-byte stride */ - - -typedef struct { - s16 f0, f2, f4, f6, f8, fA, fC, fE; - s32 f10; -} S80190C84_8018483C; - -extern s32 D_801E86BC; -extern s16 D_801E87B2; -extern u16 D_800B99DC; -extern u16 D_800B99D8; -extern s16 D_8018F078; -extern s16 D_8018F076; -extern s32 D_801E86C0; -extern s32 D_801E86C4; -extern s32 D_801E8788; -extern u8 D_8018B358[]; - -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern void func_8018623C(u16 arg0, u16 arg1); -extern void func_8013C9C4(s32); - -void func_8018483C(s32 a0) { - s32 s4; - s32 i; - u16 *p; - s16 *q; - s16 *r; - s16 buf[4]; - S80190C84_8018483C sp; - - /* s4 = a0 MUST be here, above the early return: it puts `move $s4,$a0` in bb0, which - gives the prologue's `sw $s4` an anti-dep successor. sched2 then ranks `sw $s4` - above `sw $ra` (sched.md S7) = the target's swapped save pair. Below the `if` the - two saves tie and fall back to descending-regno (ra first). reorg still steals the - move into the bnez delay slot. */ - s4 = a0; - - if (--D_801E86BC != 0) { - return; - } - - i = 0; - q = &D_801E87B2; - /* loop.md L4 preheader-copy: the target materializes &D_800B99DC into $v0 and then - `addu $s0,$v0,$zero`. A plain `p = &D_800B99DC` is coalesced straight into $s0. - The zero-byte re-tie fence (cookbook §34) keeps the two pseudos apart, so the short- - lived one lands in $v0 and the call-crossing one in $s0 = the extra move. */ - { - u16 *pb = &D_800B99DC; - __asm__("" : "=r"(pb) : "0"(pb)); - p = pb; - } - r = &D_8018F078; - - D_801E86BC = (*p & 1) + 3; - D_801E86C0 = D_800B99D8; - - for (; i < 4; i++) { - s32 c0; - - *q = *p & 0xFFF; - func_80049CAC((s32)q - 2, (s32)&D_801E8788); - - a0 = *p; - if ((a0 & 3) == 0) { - /* Three statements, not one expression: `c` first makes the load head the - block (a 2-insn macro is delay-slot-ineligible, so reorg falls through to - the else thread and steals its `addiu $v0,$zero,0x80`), and splitting off - `t` blocks fold from reassociating to (0x40 - (a0 & 0x3F)) - c. */ - s32 c = D_801E86C4; - s32 t = 0x40 - c; - D_8018F076 = t - (a0 & 0x3F); - } else { - D_8018F076 = 0x80 - D_801E86C4; - } - - *r = 0xFE60 - (*p & 0x1C); - func_8012F14C((s32)&D_801E8788, (s32)r - 4, (s32)buf); - - sp.f6 = 0x3E; - sp.fA = 0; - sp.f8 = 0; - sp.f0 = buf[0]; - sp.f2 = buf[1]; - sp.f4 = buf[2]; - func_8012C51C(&sp, s4); - - func_8018623C(0x4D6, 0); - - /* One cached read: `*p += D_801E86C0; D_801E86C0++;` reloads the global, because - the `sh` through p kills the CSE (no TBAA in 2.7.2). */ - c0 = D_801E86C0; - *p = *p + c0; - D_801E86C0 = c0 + 1; - } - - D_801E86C4 += 4; - func_8013C9C4((s32)D_8018B358); -} - - -DEFINE_func_80184A08() /* dedup: shared engine-core @0x80184A08 (src/shared) */ - -DEFINE_func_80184B00() /* dedup: shared engine-core @0x80184B00 (src/shared) */ - -DEFINE_func_80184B14() /* dedup: shared engine-core @0x80184B14 (src/shared) */ - -typedef struct { s16 vx, vy, vz, pad; } SVEC_84BD8; -extern s32 func_8012C588(s32 a0, s32 a1); -extern s32 func_80185C48(s32 a0, s32 a1); -extern s32 func_80185D58(s32 a0); -extern s32 D_801E8010; -extern s32 D_801E873C; -extern s32 D_801E874C; -extern s32 func_8012DB84(void); -extern u16 D_800B99DC; -extern u16 D_80126B66; -extern u8 D_800AF648[]; -extern u8 D_8018B358[]; -extern u8 D_8018B37C[]; -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8013C9C4(s32); -extern void func_801824CC(void); -extern void func_801852E4(s32 a0); -extern void func_80185F8C(); -extern void func_8018623C(u16 arg0, u16 arg1); -extern void func_80187354(s32 a0); -extern void func_8018762C(); - -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) - -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") - -#define gte_stsz(r0) __asm__ volatile ( \ - "swc2 $19, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -void func_80184BD8(s32 p) { - s32 sz[1]; - s32 pad[6]; - SVEC_84BD8 sv; - s32 q; - s32 q2; - s32 r; - s32 a; - s32 b; - s32 v; - s32 flag; - s32 c; - s16 t; - - func_80185F8C(); - func_801852E4(p); - - if (D_801E873C == 0) { - q = *(s32 *)(p + 0x20); - *(s16 *)(q + 0x12) = *(u16 *)(q + 0x12) + D_801E874C; - if (*(s16 *)(p + 0xE) < (s32)(s16)D_80126B66 + 0x80) { - func_8012DB84(); - func_8002D4C8(4, 0x4DF); - func_8002D4C8(4, 0x4E2); - D_801E8010 = 1; - } - if (func_80185C48(p, 1) != 0) { - *(s32 *)(p + 0x18) = 0xFFF46667; - *(s32 *)(p + 0x14) = 0xFFF60000; - *(s32 *)(p + 0x44) = 0; - *(s32 *)(p + 0x48) = 0x3000; - *(s32 *)(p + 0x48) = D_800B99DC + 0x3000; - *(s32 *)(p + 0x4C) = 0; - ((void (*)(void *))func_8013C9C4)(D_8018B37C); - ((void (*)(s32, s32))func_8018623C)(0x4D7, 0); - sv.vx = *(u16 *)(p + 0x6) - 0xE1; - sv.vy = *(u16 *)(p + 0xA) + 0x50; - sv.vz = *(u16 *)(p + 0xE); - func_8018762C(p, &sv); - sv.vx = *(u16 *)(p + 0x6) + 0xE1; - func_8018762C(p, &sv); - D_801E874C += 8; - func_80187354(p); - return; - } - if (func_80185D58(p) != 1) { - return; - } - *(s32 *)(p + 0x18) = 0xFFF4999A; - *(s32 *)(p + 0x14) = 0xFFF00000; - *(s16 *)(p + 0xDE) = 0; - *(s32 *)(p + 0x44) = 0; - *(s32 *)(p + 0x48) = 0x30000; - *(s32 *)(p + 0x4C) = 0; - *(s16 *)(p + 0x2) = *(u16 *)(p + 0x2) + 1; - return; - } - - *(s32 *)(p + 0x1C) -= 1; - q2 = *(s32 *)(p + 0x20); - *(s16 *)(q2 + 0x12) = *(u16 *)(q2 + 0x12) + 0x80; - - t = *(u16 *)(p + 0xDC) - 1; - *(s16 *)(p + 0xDC) = t; - if (t == 0) { - *(s16 *)(p + 0xDC) = (D_800B99DC & 3) + 1; - ((void (*)(void *))func_8013C9C4)(D_8018B37C); - func_80187354(p); - if ((u16)(*(u16 *)(p + 0xE) + 0x14FF) < 0x29FF && *(s32 *)(p + 0x1C) < 0) { - func_8012C588(0x67, 0); - *(s32 *)(p + 0x1C) = 8; - } - } - - if ((*(u16 *)(*(s32 *)(p + 0x20) + 0x12) & 0xF80) == 0x380) { - *(s32 *)(p + 0x18) = 0xFFF46667; - *(s32 *)(p + 0x14) = 0xFFE00000; - *(s32 *)(p + 0x48) = 0x80000; - *(s32 *)(p + 0x44) = 0; - *(s32 *)(p + 0x4C) = 0; - *(s16 *)(p + 0xDE) = 0x100; - *(s16 *)(p + 0x2) = *(u16 *)(p + 0x2) + 1; - return; - } - - if (*(s16 *)(p + 0xE) < (s32)(s16)D_80126B66 + 0x80) { - func_8012DB84(); - func_8002D4C8(4, 0x4DF); - func_8002D4C8(4, 0x4E2); - D_801E8010 = 1; - } - if (func_80185C48(p, 0) == 0) { - *(s32 *)(p + 0x14) = 0xFFE00000; - *(s16 *)(p + 0xDE) = 0; - *(s32 *)(p + 0x44) = 0; - *(s32 *)(p + 0x48) = 0x40000; - *(s32 *)(p + 0x4C) = 0; - *(s16 *)(p + 0x2) = *(u16 *)(p + 0x2) + 1; - return; - } - - r = func_80185D58(p); - if (r == 1 || *(s16 *)(p + 0xDE) == 1) { - *(s32 *)(p + 0x18) = 0xFFF4999A; - *(s32 *)(p + 0x14) = 0xFFE00000; - *(s32 *)(p + 0x48) = 0x40000; - *(s16 *)(p + 0xDE) = 0; - *(s32 *)(p + 0x44) = 0; - *(s32 *)(p + 0x4C) = 0; - *(s16 *)(p + 0x2) = *(u16 *)(p + 0x2) + 1; - if ((u16)(*(u16 *)(p + 0xE) + 0x17BD) < 0x2BC2) { - ((void (*)(s32, s32))func_8018623C)(0x4DD, 0); - } - ((void (*)(s32, s32))func_8018623C)(0x4DF, 0x1000); - return; - } - if (r == 2 || *(s16 *)(p + 0xDE) == 2) { - *(s32 *)(p + 0x18) = 0; - *(s32 *)(p + 0x14) = 0; - *(s32 *)(p + 0x10) = 0; - *(s32 *)(p + 0x4C) = 0; - *(s32 *)(p + 0x48) = 0; - *(s32 *)(p + 0x44) = 0; - ((void (*)(s32, s32))func_8018623C)(0x4D9, 0); - func_8002D4C8(4, 0x4DF); - func_8002D4C8(4, 0x4E2); - func_801824CC(); - ((void (*)(void *))func_8013C9C4)(D_8018B358); - *(s16 *)(p + 0x2) = *(u16 *)(p + 0x2) + 2; - return; - } - - t = *(u16 *)(p + 0xF8) - 1; - *(s16 *)(p + 0xF8) = t; - if (t != 0) { - return; - } - *(s16 *)(p + 0xF8) = 8; - func_8004914C(D_800AF648); - func_800491AC(D_800AF648); - sv.vx = *(u16 *)(p + 0x6); - sv.vy = *(u16 *)(p + 0xA); - sv.vz = *(u16 *)(p + 0xE); - gte_ldv0(&sv); - gte_rtps(); - gte_stsz(&sz[0]); - a = sz[0]; - b = (a > 0x424) ? 0x424 : a; - sz[0] = b; - v = (b < 100) ? 100 : b; - c = (u16)(*(u16 *)(p + 0xE) + 0x17BD) < 0x2BC2; - sz[0] = v; - if (c) { - ((void (*)(s32, s32))func_8018623C)(0x4E2, (0x7F - (v - 100) / 12) | 0x1000); - flag = 1; - } else { - flag = 0; - } - if (flag != *(s16 *)(p + 0xFA) && flag == 0) { - func_8002D4C8(4, 0x4E2); - } - *(s16 *)(p + 0xFA) = flag; -} - - -DEFINE_func_8018512C() /* dedup: shared engine-core @0x8018512C (src/shared) */ - -void func_801852E4(s32 arg0) -{ - s16 x = *(s16 *)(arg0 + 0xE); - - if (x >= 0x18F5) { - *(s16 *)(arg0 + 6) = 0; - } else if (x < 0x150E) { - *(s16 *)(arg0 + 6) = 0x35; - } else { - *(s16 *)(arg0 + 6) = (0x18F3 - x) * 53 / 998; - } -} - - -DEFINE_func_8018535C() /* dedup: shared engine-core @0x8018535C (src/shared) */ - -DEFINE_func_80185364() /* dedup: shared engine-core @0x80185364 (src/shared) */ - -extern s32 D_801E8784; - -void func_8018537C(void *arg0) -{ - u16 val; - - *(s32 *)((s32)arg0 + 0x14) = 0xB3333; - *(s32 *)((s32)arg0 + 0x48) = 0x40000; - *(s16 *)((s32)arg0 + 0xA) = -0xB26; - *(s32 *)((s32)arg0 + 0x10) = 0; - *(s32 *)((s32)arg0 + 0x18) = 0; - *(s32 *)((s32)arg0 + 0x44) = 0; - *(s32 *)((s32)arg0 + 0x4C) = 0; - *(s16 *)((s32)arg0 + 6) = 0; - *(s16 *)((s32)arg0 + 0xE) = 0x1C59; - *(s16 *)(*(s32 *)((s32)arg0 + 0x20) + 0x12) = 0; - val = *(u16 *)((s32)arg0 + 2); - D_801E8784 = (s32)arg0; - *(u16 *)((s32)arg0 + 2) = val + 1; -} - - -extern s32 func_80185C48(s32 a0, s32 a1); -extern u8 D_8018B358[]; -extern void func_8013C9C4(s32); -extern void func_8018623C(u16 arg0, u16 arg1); -extern void func_80187354(s32 a0); - -void func_801853D4(s32 p) { - s32 s0; - - - s0 = p; - - if (func_80185C48(p, 1) == 0) { - return; - } - - func_8013C9C4((s32)D_8018B358); - - *(s32 *)(p + 0x14) = 0xFFE00000; - *(s32 *)(p + 0x18) = 0; - *(s32 *)(p + 0x10) = 0; - *(s32 *)(p + 0x44) = 0; - *(s32 *)(p + 0x48) = 0x40000; - *(s32 *)(p + 0x4C) = 0; - - func_80187354(p); - - func_8018623C(0x4D7, 0); - - *(u16 *)(p + 0x2) += 1; -} - - - - -extern s32 func_80185C48(s32 a0, s32 a1); -extern void func_8013C9C4(s32); -extern void func_8018623C(u16 arg0, u16 arg1); -extern void func_80187354(s32 a0); -extern u8 D_8018B358[]; - -void func_8018545C(s32 a0) { - if (func_80185C48(a0, 1) == 0) { - return; - } - func_8013C9C4(D_8018B358); - func_80187354(a0); - func_8018623C(0x4D7, 0); - *(u16 *)(a0 + 2) += 1; -} - - -DEFINE_func_801854C4() /* dedup: shared engine-core @0x801854C4 (src/shared) */ - -DEFINE_func_801854CC() /* dedup: shared engine-core @0x801854CC (src/shared) */ - - /* 12-byte stride */ - - - - -typedef struct { s16 vx, vy, vz, pad; } SVEC_801855D4; - -extern void func_8012B2CC(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern SVEC_801855D4 D_8018F034; -extern SVEC_801855D4 D_8018F03C; -extern u8 D_8018EFF4; - -void func_801855D4(s32 p) { - SVEC_801855D4 sv; - s32 q; - s16 t; - - func_8012B2CC(p); - - if (*(s32 *)(p + 0xCC) != 0) { - func_8012F14C(*(s32 *)(p + 0x20) + 0x34, (s32) &D_8018F034, (s32) &sv); - *(s16 *)(*(s32 *)(p + 0xCC) + 0x8) = sv.vx; - *(s16 *)(*(s32 *)(p + 0xCC) + 0xA) = sv.vy; - *(s16 *)(*(s32 *)(p + 0xCC) + 0xC) = sv.vz; - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xCC) + 0x10) = *(u16 *)(q + 0x10); - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xCC) + 0x12) = *(u16 *)(q + 0x12); - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xCC) + 0x14) = *(u16 *)(q + 0x14); - } - - if (*(s32 *)(p + 0xD0) != 0) { - func_8012F14C(*(s32 *)(p + 0x20) + 0x34, (s32) &D_8018F03C, (s32) &sv); - *(s16 *)(*(s32 *)(p + 0xD0) + 0x8) = sv.vx; - *(s16 *)(*(s32 *)(p + 0xD0) + 0xA) = sv.vy; - *(s16 *)(*(s32 *)(p + 0xD0) + 0xC) = sv.vz; - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xD0) + 0x10) = *(u16 *)(q + 0x10); - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xD0) + 0x12) = *(u16 *)(q + 0x12); - q = *(s32 *)(p + 0x20); - *(s16 *)(*(s32 *)(p + 0xD0) + 0x14) = *(u16 *)(q + 0x14); - } - - t = *(s16 *)(p + 0xDC); - if (t == 0) { - s16 v = *(u16 *)(p + 0xDE) - 0x20; - *(s16 *)(p + 0xDE) = v; - if (v <= 0) { - *(s16 *)(p + 0xDE) = 0; - } - D_8018EFF4 = (u8) *(u16 *)(p + 0xDE); - if (*(s16 *)(p + 0xDE) == 0) { - if (*(s32 *)(p + 0xCC) != 0) { - *(s16 *)(*(s32 *)(p + 0xCC)) = 0; - } - if (*(s32 *)(p + 0xD0) != 0) { - *(s16 *)(*(s32 *)(p + 0xD0)) = 0; - } - *(s16 *)(p + 0xDC) = 0x2E; - *(s16 *)(p + 0x2) = *(u16 *)(p + 0x2) + 1; - } - } else { - *(s16 *)(p + 0xDC) = t - 1; - } -} - - -extern s32 D_801E873C; -extern s32 D_801E8750; -extern void func_8013D164(void); - -void func_801857B0(s32 param_1) { - s16 val16; - u16 val; - - val = *(u16 *)(param_1 + 0xDC); - val--; - *(u16 *)(param_1 + 0xDC) = val; - val16 = (s16)val; - if (val16 == 0) { - *(s16 *)(param_1 + 0xDC) = 0x10; - *(s32 *)(param_1 + 0x18) = (s32)0xFFFE0000; - *(s32 *)(param_1 + 0x4C) = -0x4000; - *(s16 *)(param_1 + 0xE2) = 2; - *(s16 *)(param_1 + 0xDE) = 0; - *(s16 *)(param_1 + 0xE0) = 0; - D_801E873C = 1; - D_801E8750 = 0; - func_8013D164(); - *(s16 *)(param_1 + 0x2) = *(u16 *)(param_1 + 0x2) + 1; - } -} - - -extern s32 D_801E8750; -extern s32 func_80185C48(s32 a0, s32 a1); -extern void func_8018623C(u16 arg0, u16 arg1); - -void func_80185840(s32 param_1) { - s16 r; - s16 t; - u32 val; - - func_80185C48(param_1, 0); - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) += *(u16 *)(param_1 + 0xE0); - t = *(s16 *)(param_1 + 0xE0); - /* if/else (NOT "r = 0x80; if (t < 0x80) r = ...;"): the else-arm shape keeps - * `li r,0x80` in a block AFTER the branch at register-allocation time, so r - * does not conflict with the slt result and gets $v0 instead of $a0. */ - if (t >= 0x80) { - r = 0x80; - } else { - r = t + *(u16 *)(param_1 + 0xE2); - } - *(s16 *)(param_1 + 0xE0) = r; - __asm__ __volatile__(""); /* cookbook §194-A: zero-byte sched fence — emits the - * sh first in the join block, ahead of li 0x27D7D */ - D_801E8750 += 0x27D7D; - val = (u32)D_801E8750 >> 16; - if (val >= 0x80) { - val = 0x7F; - } - ((void (*)(s32, s32))func_8018623C)(0x4DF, val + 0x1000); - if (*(s32 *)(param_1 + 0x18) < -0xB9999) { - *(s32 *)(param_1 + 0x18) = -0xB9999; - *(s16 *)(param_1 + 2) = 0xB; - ((void (*)(s32, s32))func_8018623C)(0x4DF, 0x107F); - } -} - - - -typedef struct { u32 addr:24; u32 len:8; } PTAG_85910; - -extern s32 D_800A5E60; -extern u8 D_800AF648[]; -extern u8 D_800A6610[]; -extern s16 D_800B9A02; -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); - -#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_rtpt() __asm__ volatile ("nop;nop;rtpt") - -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -#define gte_stsxy3(r0) __asm__ volatile ( \ - "swc2 $12, 0( %0 );" \ - "swc2 $13, 4( %0 );" \ - "swc2 $14, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) - -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") - -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - -#define gte_stszotz(r0) __asm__ volatile ( \ - "mfc2 $12, $19;" \ - "nop;" \ - "sra $12, $12, 2;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -void func_80185910(SVECTOR *a0, SVECTOR *a1, SVECTOR *a2, SVECTOR *a3) -{ - s32 flag; /* sp+0x28 */ - s32 otz; /* sp+0x2C */ - s16 xy[6]; /* sp+0x18 */ - u8 *p; - u32 *tbl; - u32 *ot; - u32 *ot2; - - func_8004914C(D_800AF648); - func_800491AC(D_800AF648); - - gte_ldv3(a0, a1, a2); - gte_rtpt(); - gte_stflg(&flag); - if ((flag & 0x7F85E000) == 0) { - p = *(u8 **)&D_800A5E60; - gte_stsxy3(xy); - gte_ldv0(a3); - gte_rtps(); - ((u8 *)p)[7] = 0x3A; - __asm__ volatile ("" : : : "memory"); - ((u8 *)p)[3] = 8; - *(u32 *)(p + 0x08) = *(u32 *)&xy[0]; - *(u32 *)(p + 0x10) = *(u32 *)&xy[2]; - *(u32 *)(p + 0x18) = *(u32 *)&xy[4]; - gte_stsxy(p + 0x20); - gte_stszotz(&otz); - ((u8 *)p)[0xC] = 0xFF; - ((u8 *)p)[0x1C] = 0xFF; - ((u8 *)p)[0x04] = 0; - ((u8 *)p)[0x14] = 0; - ((u8 *)p)[0x05] = 0; - ((u8 *)p)[0x0D] = 0; - ((u8 *)p)[0x15] = 0; - ((u8 *)p)[0x1D] = 0; - ((u8 *)p)[0x06] = 0; - ((u8 *)p)[0x0E] = 0; - ((u8 *)p)[0x16] = 0; - ((u8 *)p)[0x1E] = 0; - tbl = (u32 *)((s8 *)D_800A6610 + ((u32)(u16)D_800B9A02 << 14)); - - ot = (u32 *)((otz << 2) + (s32)tbl); - ((PTAG_85910 *)p)->addr = ((PTAG_85910 *)ot)->addr; - ((PTAG_85910 *)ot)->addr = (u32)p; - p += 0x24; - func_8005A600((s32)p, 0, 0, (u16)GetTPage(0, 1, 0, 0), 0); - ot2 = (u32 *)((otz << 2) + (s32)tbl); - ((PTAG_85910 *)p)->addr = ((PTAG_85910 *)ot2)->addr; - ((PTAG_85910 *)ot2)->addr = (u32)p; - D_800A5E60 = (s32)(p + 0xC); - } -} - - - -extern void (*D_8018F2E0[])(void); - -void func_80185B40(void *a0) { - D_8018F2E0[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern u8 D_8018F210[]; -extern u8 D_8018F288[]; -extern void func_8001CA1C(void *a0, void *a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); - -void func_80185B7C(void *a0) { - s32 v0; - - v0 = ((s32 (*)(void *))func_8012C1B8)(a0); - *(s32 *)((s32)a0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(a0); - return; - } - - func_8001CA1C((void *)v0, D_8018F210); - func_8012A828((s32)a0, D_8018F288); - *(s16 *)((s32)a0 + 0xDC) = 0xA; - *(s16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; -} - - -extern void func_8012C218(void *a0); - -void func_80185BF0(int param_1) { - short t; - int obj; - - t = *(s16 *)(param_1 + 0xdc) - 1; - *(s16 *)(param_1 + 0xdc) = t; - if (t == 0) { - func_8012C218((void *)param_1); - } else { - obj = *(int *)(param_1 + 0x20); - *(s16 *)(obj + 0x1c) = -0x8000; - *(s16 *)(obj + 0x1a) = -0x8000; - *(s16 *)(obj + 0x18) = -0x8000; - } -} - - -typedef struct { s16 x, y, z, pad; } Vec3s16; -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); - -s32 func_80185C48(s32 a0, s32 a1) { - Vec3s16 v1; - Vec3s16 v2; - s32 ret; - - v1.x = *(u16 *)(a0 + 0x3A); - v1.y = *(u16 *)(a0 + 0x3E) + 0x51; - v1.z = *(u16 *)(a0 + 0x42); - - *(s32 *)(a0 + 0x10) += *(s32 *)(a0 + 0x44); - *(s32 *)(a0 + 0x14) += *(s32 *)(a0 + 0x48); - *(s32 *)(a0 + 0x18) += *(s32 *)(a0 + 0x4C); - - *(s32 *)(a0 + 0x4) += *(s32 *)(a0 + 0x10); - *(s32 *)(a0 + 0x8) += *(s32 *)(a0 + 0x14); - *(s32 *)(a0 + 0xC) += *(s32 *)(a0 + 0x18); - - v2.x = *(u16 *)(a0 + 0x6); - v2.y = *(u16 *)(a0 + 0xA) + 0x51; - v2.z = *(u16 *)(a0 + 0xE); - - ret = func_8012CEB0((s32)&v1, (s32)&v2, a1); - - *(s16 *)(a0 + 0x6) = v2.x; - *(s16 *)(a0 + 0xA) = v2.y - 0x51; - *(s16 *)(a0 + 0xE) = v2.z; - - if (ret & 0x6000) { - *(s32 *)(a0 + 0x14) = 0; - } - return ret; -} - - - - -s32 func_80185D58(a0) -s32 a0; -{ - s16 x = *(s16 *)(a0 + 0xE); - if ((u32)(x - 0x3057) < 0x30) return 1; - if ((u32)(x - 0x2D37) < 0x10) return 1; - if ((u32)(x - 0x377) < 0x10) return 1; - if ((u32)(x - 0x177) < 0x10) return 1; - if ((u32)(x + 0xB54) < 0x10) return 1; - if ((u32)(x + 0xF31) < 0x1B3) return 1; - if ((u32)(x + 0x17E4) < 0x10) return 2; - if ((u32)(x + 0x77E) < 0x28E) return 1; - if ((u32)(x + 0x99A) < 0x10A) return 1; - if ((u32)(x + 0x1391) < 0x197) return 1; - return 0; -} - - -extern u8 D_801202A0[]; -extern void func_8012C218(void *a0); - -void func_80185E00(void) { - u8 *puVar2; - s32 iVar1; - u32 uVar3; - s32 iVar4; - - uVar3 = 0; - iVar4 = 0x29; - puVar2 = D_801202A0; - iVar1 = 0; - do { - if ((*(u16 *)(D_801202A0 + iVar1) != 0) && (*(u16 *)(D_801202A0 + iVar1) != iVar4)) { - func_8012C218(puVar2); - } - puVar2 = puVar2 + 0x10c; - uVar3 = uVar3 + 1; - iVar1 = iVar1 + 0x10c; - } while (uVar3 < 0x60); -} - - -extern s32 func_8012E504(s32 a0, s32 a1); - -s32 func_80185E88(void) { - s32 v1; - - v1 = func_8012E504(0, 0x29); - if (v1 == 0) { - return 0; - } - *(s16 *)(v1 + 2) = 4; - return 1; -} - - -extern s32 func_8012E504(s32 a0, s32 a1); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80185EC8(void) { - s32 ptr; - - ptr = func_8012E504(0, 0x29); - if (ptr != 0) { - func_8002D4C8(4, 0x4DF); - *(s16 *)(ptr + 0xA) = -0x1B26; - *(s16 *)(ptr + 0xE) = 0x1C59; - *(s16 *)(ptr + 6) = 0; - *(s16 *)(ptr + 2) = 0xE; - } -} - - -DEFINE_func_80185F24() /* dedup: shared engine-core @0x80185F24 (src/shared) */ - -extern s32 func_8012E504(s32 a0, s32 a1); - - void func_80185F58(void) { - s32 v1 = func_8012E504(0, 0x29); - if (v1 != 0) { - *(s16 *)(v1 + 2) = 0x13; - } - } - - - /* 12-byte stride */ - -extern s32 func_8012C51C(void *a0, s32 a1); - -typedef struct { - s16 f0; - s16 f2; - s16 f4; - s16 f6; - s16 f8; - s16 flag; -} Entry8018F07C; - -extern Entry8018F07C D_8018F07C[26]; - -typedef struct { - s16 f0, f2, f4, f6, f8, fA, fC, fE; - s32 f10; -} S80190C84; - -void func_80185F8C(s32 a0) { - u32 i; - s32 threshold; - s16 v1; - S80190C84 stk; - - threshold = *(s16 *)(a0 + 0xE) - 0x400; - - for (i = 0; i < 0x1A; i++) { - if (D_8018F07C[i].flag != 0) { - continue; - } - v1 = D_8018F07C[i].f4; - if (v1 >= threshold) { - continue; - } - if (v1 + 0x10 < threshold) { - continue; - } - stk.f0 = D_8018F07C[i].f0; - stk.f2 = D_8018F07C[i].f2; - stk.f4 = D_8018F07C[i].f4; - stk.f6 = D_8018F07C[i].f6; - stk.f8 = D_8018F07C[i].f8; - stk.fA = 0; - func_8012C51C(&stk, a0); - - D_8018F07C[i].flag = 1; - } -} - - - -extern void (*D_8018F2E8[])(void); - -void func_801860A8(void *a0) { - D_8018F2E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801860E4() /* dedup: shared engine-core @0x801860E4 (src/shared) */ - -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); - -void func_8018618C(s32 param_1) -{ - s32 s0 = param_1; - - func_8012AD80(s0); - if (--*(s16 *)(s0 + 0xDC) == 0) { - func_8012C218((void *)s0); - } -} - - -extern s32 func_8012C51C(void *a0, s32 a1); - -typedef struct { - s16 f0; - s16 f1; - s16 f2; - s16 f3; - s16 f4; - s16 f5; - s16 f6; - s16 f7; - s32 f8; -} Pkt_801861D8; - -void func_801861D8(s32 param_1) -{ - Pkt_801861D8 pkt; - pkt.f1 = -0xF70; - pkt.f0 = 0; - pkt.f2 = 0; - pkt.f3 = 0x41; - pkt.f5 = 0; - pkt.f4 = 0; - func_8012C51C(&pkt, param_1); -} - - -DEFINE_func_8018621C() /* dedup: shared engine-core @0x8018621C (src/shared) */ - -DEFINE_func_8018623C() /* dedup: shared engine-core @0x8018623C (src/shared) */ - - -#include "common.h" - -extern s32 D_801270D0; -extern s32 D_801270CC; -extern s32 D_8018F2F0; -extern s32 D_80126D50; -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern u8 D_800D3918[]; -extern u8 D_800D391C[]; -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern s32 func_8012C51C(void *a0, s32 a1); - -typedef struct { - s16 f0; - s16 f1; - s16 f2; - s16 f3; - s16 f4; - s16 f5; - s16 f6; - s16 f7; - s32 f8; -} Pkt_8018626C; - -void func_8018626C(void) { - s32 *ctr = &D_801270D0; - Pkt_8018626C pkt; - s16 pos[3]; - s32 buf[2]; - s32 angle; - - *ctr = *ctr + 1; - if (*ctr >= 0x3C && D_801270CC < D_8018F2F0 && D_80126D50 == 0) { - *ctr = 0; - pos[0] = D_80126B5E; - pos[1] = D_80126B62; - pos[2] = D_80126B66; - angle = ratan2(*(s16 *)D_800D391C - (s16)D_80126B66, (s16)D_80126B5E - *(s16 *)D_800D3918); - func_8012B0B4((unsigned int *)buf, (angle - 0x400) & 0xFFF, 0x110); - pkt.f1 = -0x1004; - pkt.f3 = 0x2F; - pkt.f4 = 0x400; - pkt.f5 = 0; - pkt.f6 = 0x7FFF; - pkt.f8 = 0; - pkt.f7 = 0; - pkt.f0 = (s16)buf[0]; - pkt.f2 = (s16)(buf[0] >> 16); - if (func_8012C51C(&pkt, 0) != 0) { - D_801270CC = D_801270CC + 1; - } - } -} - - - -extern void (*D_8018F2F4[])(void); - -void func_801863AC(void *a0) { - D_8018F2F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801863E8() /* dedup: shared engine-core @0x801863E8 (src/shared) */ - - -DEFINE_func_80186424() /* dedup: shared engine-core @0x80186424 (src/shared) */ - -void func_80186530(s32 self) -{ - extern void func_80186424(s32 a0); - extern void func_8002D4C8(s32 a0, s32 a1); - extern s32 func_8012BD14(s32 a0); - extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); - extern void func_8005C2C8(s32 a0, s32 a1); - extern void func_8012C218(void *a0); - extern void func_801827C0(void *a0); - extern s32 D_8018F314; - extern s32 D_8018F318; - extern s32 D_801270C8; - extern s32 D_801270D4; - - s32 v1; - s32 v0; - s32 *a0; - s32 t; - s32 a1; - - func_80186424(self); - v1 = *(s32 *)(self + 0x20); - *(u16 *)(v1 + 0x12) += 0x10; - a1 = *(s32 *)(self + 0xCC); - *(u16 *)(a1 + 8) = *(u16 *)(self + 6); - *(u16 *)(a1 + 10) = *(u16 *)(self + 10); - t = *(u16 *)(self + 0xE); - *(u16 *)(a1 + 0x2C) |= 0x10; - *(u16 *)(a1 + 0xC) = t; - v1 = D_8018F318 * *(s16 *)(self + 0xFC); - if (v1 < 0) { - v1 += 15; - } - v1 = (v1 >> 4) + D_8018F314; - *(s16 *)(a1 + 0x1C) = v1; - *(s16 *)(a1 + 0x1A) = v1; - *(s16 *)(a1 + 0x18) = v1; - a0 = &D_801270C8; - if (*(s32 *)(self + 0xDC) != *a0) { - *(s32 *)(self + 0xDC) = *a0; - *(s32 *)(self + 0xE0) = 8; - } - v0 = *(s32 *)(self + 0xE0); - if (v0 != 0) { - *(s32 *)(self + 0xE0) = v0 - 1; - } else if (*a0 != 0) { - if (*(s16 *)(self + 0xFE) == 0) { - func_8002D4C8(0x4C6, 0); - func_8002D4C8(0x4CE, 0); - } - *(s16 *)(self + 0xFE) = 1; - *(s32 *)(*(s32 *)(self + 0x20) + 4) |= 0x80000000; - *(s16 *)(self + 0x5C) = 0; - if (func_8012BD14(self) < 0x901) { - ((void (*)(void *, s32))func_8016EDEC)(func_801827C0, 0x1000000); - D_801270D4 = 1; - func_8005C2C8(*(s32 *)(self + 0xCC), 0x84); - func_8012C218((void *)self); - return; - } - } else { - if (*(s16 *)(self + 0xFE) == 1) { - func_8002D4C8(0x4C7, 0); - } - *(s16 *)(self + 0xFE) = 0; - *(s16 *)(self + 0x5C) = 0x800; - *(s32 *)(*(s32 *)(self + 0x20) + 4) &= 0x7FFFFFFF; - } - v0 = *(s32 *)(*(s32 *)(self + 0x20) + 4); - if (v0 < 0) { - v0 = *(u16 *)(self + 0xFC) - 1; - *(s16 *)(self + 0xFC) = v0; - if ((s16)v0 < 0) { - *(s16 *)(self + 0xFC) = 0; - } - } else { - v0 = *(u16 *)(self + 0xFC) + 1; - *(s16 *)(self + 0xFC) = v0; - if ((s16)v0 >= 0x11) { - *(s16 *)(self + 0xFC) = 0x10; - } - } -} - - -DEFINE_func_80186764() /* dedup: shared engine-core @0x80186764 (src/shared) */ - -DEFINE_func_801868D4() /* dedup: shared engine-core @0x801868D4 (src/shared) */ - - - -extern void (*D_8018F394[])(void); - -void func_80186910(void *a0) { - D_8018F394[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern u8 D_8018F324[]; -extern s32 D_801E8018; -extern void func_8012C1B8(void); -extern void func_8012CAE4(); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012E8E0(s32 a0, s32 a1); - -void func_8018694C(void *a0) -{ - register void *s0 __asm__("$16") = a0; - s32 v0; - s32 v1; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(s0); - return; - } - - func_8001C214(v0, 0); - func_8012E8E0((s32)s0, (s32)&D_8018F324); - - v1 = *(s32 *)((s32)s0 + 0x68); - *(s16 *)(v1 + 0xC) = 0x7FFF; - v0 = *(u16 *)((s32)s0 + 0x2); - D_801E8018 = 0; - *(s16 *)((s32)s0 + 0x34) = 0; - *(u16 *)((s32)s0 + 0x2) = v0 + 1; -} - - -void func_801869CC(s32 arg0) -{ - extern s32 D_8018F33C; - extern s32 D_801E8018; - extern s32 func_80178B18(s32 param_1, s32 param_2); - extern int func_80178970(void); - extern void func_80178D18(void); - - switch (*(u16 *)(arg0 + 0x34)) { - case 0: - if (D_801E8018 == 0) - return; - func_80178B18(arg0, (s32)&D_8018F33C); - break; - case 1: - if (((int (*)(s32))func_80178970)(arg0) == 0) - return; - ((void (*)(s32))func_80178D18)(arg0); - break; - case 2: - default: - return; - } - *(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1; -} - - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_80186A64(void *a0) { - *(s32 *)((s32)a0 + 0x1C) = 0x96; - *(s16 *)((s32)a0 + 0x2) += 1; - func_8002D4C8(0x402, 0); - } - - -extern s32 func_8012BEE8(s32); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8018626C(); - -void func_80186A9C(s32 *param_1) -{ - if (param_1[7] != 0 && ((s32 (*)(void))func_8012BEE8)() != 0) { - func_8002D4C8(0xD, 0x402); - } - func_8018626C(); -} - - -/* Symbols per this TU's existing declarations (Law 2): - * D_80126B58 -> extern s32 (ov_SC02_003_jr_8018173C.c:3603) - * D_801270C8 -> extern s32 (block-scope in this TU, e.g. :5206) - * D_801202A0 -> extern u8[] (ov_SC02_003_jr_8018173C.c:378, :4949) - * D_80126720 -> extern u8[] (ov_SC02_003_jr_8018173C.c:612) - * D_801E8018 -> extern s32 (ov_SC02_003_jr_8018173C.c:5294) - * func_8012BD14(s32) -> s32 (block-scope in this TU, :5199) - * func_8012BC60(struct Vec*, struct Vec*) -> s32 (fleet spelling, n=1363) - * D_801E801C is a first user here -> typed by access width (lw/sw) -> s32. - */ -extern s32 D_80126B58; -extern s32 D_801270C8; -extern s32 D_801E801C; -extern s32 D_801E8018; -extern u8 D_801202A0[]; -extern u8 D_80126720[]; - -struct Vec; -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s32 func_8012BD14(s32 a0); - -/* the 0x10C-byte entity-table record type (only the two u16 fields this function - actually touches are named). */ -typedef struct { - u16 f0; - u16 f2; -} Ent_80186AE4; - -/* the 0x254-byte block snapshot copied from D_80126B58 to D_801E801C: - gcc emits the unrolled 4-word chunk loop (37 x 0x10) + a 4-byte remainder. */ -typedef struct { - s32 w[0x95]; -} Blk254_80186AE4; - -void func_80186AE4(s32 self) -{ - s32 iVar1; - Ent_80186AE4 *p; - - *(Blk254_80186AE4 *)&D_801E801C = *(Blk254_80186AE4 *)&D_80126B58; - - iVar1 = func_8012BD14(self); - if (iVar1 < 0xC41) { - D_801270C8 = 1; - D_801E8018 += 1; - return; - } - - D_801270C8 = 0; - for (p = (Ent_80186AE4 *)D_801202A0; p < (Ent_80186AE4 *)(D_801202A0 + 0x6480); - p = (Ent_80186AE4 *)((u8 *)p + 0x10C)) { - if (p->f0 == 0x2F && p->f2 != 6 && p->f2 != 4) { - if (func_8012BC60((struct Vec *)(self + 4), (struct Vec *)((u8 *)p + 4)) < 0xC41) { - D_801270C8 = 1; - return; - } - } - } -} - - -DEFINE_func_80186C44() /* dedup: shared engine-core @0x80186C44 (src/shared) */ - - -extern void (*D_8018F3AC[])(void); - -void func_80186CAC(void *a0) { - D_8018F3AC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80186CE8() /* dedup: shared engine-core @0x80186CE8 (src/shared) */ - -DEFINE_func_80186D88() /* dedup: shared engine-core @0x80186D88 (src/shared) */ - - -extern void (*D_8018F3C4[])(void); - -void func_80186E30(void *a0) { - D_8018F3C4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80186E6C() /* dedup: shared engine-core @0x80186E6C (src/shared) */ - -extern u16 D_800B99DC; -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80186F44(s32 a0) { - if (*(s16 *)(*(s32 *)(a0 + 0x64) + 0xE) - 0x10 < *(s16 *)(a0 + 0xE)) { - *(s32 *)(a0 + 0x18) = 0xFFDBC000; - *(s32 *)(a0 + 0x14) = 0xFFE00000; - *(s32 *)(a0 + 0x48) = 0x80000; - *(s32 *)(a0 + 0x44) = 0; - *(s32 *)(a0 + 0x4C) = 0; - *(s16 *)(a0 + 0x12) = 0xF - (D_800B99DC & 0x1F); - func_8002D4C8(0x4D8, 0); - *(u16 *)(a0 + 2) += 1; - } -} - - -DEFINE_func_80186FDC() /* dedup: shared engine-core @0x80186FDC (src/shared) */ - -DEFINE_func_80187060() /* dedup: shared engine-core @0x80187060 (src/shared) */ - - -extern void (*D_8018F3D4[])(void); - -void func_801870DC(void *a0) { - D_8018F3D4[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8001D0E8(s32 a0, s32 a1, s32 a2); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B200(u8 *a0); -extern u8 D_801E14AC; -extern u8 D_801E10B4; -extern M2C_UNK D_8018AF28; - -void func_80187118(s32 param_1) { - s32 v0; - void *a1; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - return; - } - a1 = &D_801E14AC; - if (*(s16 *)(param_1 + 0x70) == 0) { - a1 = &D_801E10B4; - } - ((void (*)(s32, void *))func_8001C214)(v0, a1); - func_8001D0E8(*(s32 *)(param_1 + 0x20), 0x140, 0xF0); - ((void (*)(s32, void *))func_8012A828)(param_1, &(*(u8 *)&D_8018AF28)); - func_8012B200((u8 *)param_1); - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -extern u16 D_800B99DC; -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80187480(); - -void func_801871B8(s32 a0) { - extern void func_80187480(); - if (*(s16 *)(*(s32 *)(a0 + 0x64) + 0xE) - 0x80 < *(s16 *)(a0 + 0xE)) { - *(s32 *)(a0 + 0x18) = 0xFFDBC000; - *(s32 *)(a0 + 0x14) = 0xFFE00000; - *(s32 *)(a0 + 0x44) = 0; - *(s32 *)(a0 + 0x48) = 0x80000; - *(s32 *)(a0 + 0x4C) = 0; - *(s16 *)(a0 + 0x12) = 0xF - (D_800B99DC & 0x1F); - func_80187480(); - func_8002D4C8(0x4DA, 0); - *(u16 *)(a0 + 2) += 1; - } -} - - -extern void func_8012CBCC(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -s32 func_80187254(s32 param_1) { - s32 p; - p = *(s32 *)(param_1 + 0x20); - *(s16 *)(p + 0x12) = *(u16 *)(p + 0x12) + 0x100; - if (((s32 (*)(void))func_8012CBCC)() != 0) { - *(s32 *)(param_1 + 0x18) = 0xFFE80000; - *(s32 *)(param_1 + 0x14) = 0xFFC80000; - *(s32 *)(param_1 + 0x44) = 0; - *(s32 *)(param_1 + 0x48) = 0x80000; - *(s32 *)(param_1 + 0x4C) = 0; - func_80143B6C(param_1, 0); - *(s16 *)(param_1 + 0xFC) = 0x40; - *(s16 *)(param_1 + 0x2) = *(u16 *)(param_1 + 0x2) + 1; - } -} - - -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); -void func_801872D8(int param_1) { - short v; - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 0x100; - *(short *)(*(int *)(param_1 + 0x20) + 0x14) = - *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 0x20; - v = *(unsigned short *)(param_1 + 0xFC) - 1; - *(short *)(param_1 + 0xFC) = v; - if (v == 0) { - ((void (*)(void))func_8012C218)(); - } else { - ((void (*)(void))func_8012AD80)(); - } -} - - -DEFINE_func_80187354() /* dedup: shared engine-core @0x80187354 (src/shared) */ - -extern s32 func_8012C51C(void *a0, s32 a1); -extern u16 D_800B99D8; -extern u16 D_800B99DC; - -void func_80187480(arg0) -s32 arg0; -{ - register s32 acc __asm__("$16"); - register s32 i __asm__("$17"); - register s32 s2 __asm__("$18"); - register s32 s3 __asm__("$19"); - struct sprite8 spr; - - acc = D_800B99DC; - s3 = D_800B99D8; - s2 = arg0; - i = 0; - - do { - spr.f0 = *(u16 *)(s2 + 6) + (acc & 0x1F) - 0x10; - spr.f2 = *(u16 *)(s2 + 0xA) + ((acc & 0x1F0) >> 4) - 0x10; - spr.f4 = *(u16 *)(s2 + 0xE); - spr.f6 = 0x48; - if (i >= 4) { - spr.f8 = 0; - } else if (i >= 2) { - spr.f8 = 1; - } else { - spr.f8 = 2; - } - spr.fa = acc >> 16; - func_8012C51C(&spr, s2); - s3++; - acc += s3; - i++; - } while (i < 8); -} - - -extern s32 func_8012C51C(void *a0, s32 a1); -extern u16 D_800B99D8; - -void func_80187558(arg0) -s32 arg0; -{ - register s32 i __asm__("$16"); - register s32 s2 __asm__("$18"); - register u16 s3 __asm__("$19"); - struct sprite8 spr; - s32 t; - - s3 = D_800B99D8; - i = 0; - spr.f4 = *(u16 *)(arg0 + 0xE); - s2 = 0; - - do { - t = *(s16 *)(arg0 + 6); - spr.f0 = (i & 1) ? (t + 0x20) : (t - 0x20); - spr.f2 = *(u16 *)(arg0 + 0xA) - s2; - spr.f6 = 0x4D; - spr.f8 = rand() % 3; - i++; - spr.fa = s3; - s3++; - s2 += 0xC; - func_8012C51C(&spr, arg0); - } while (i < 8); -} - - - /* 12-byte stride */ - - -extern u16 D_800B99D8; -extern s32 func_8012C51C(void *a0, s32 a1); - -void func_8018762C(s32 a0, s32 a1) -{ - register s32 i __asm__("$16"); - register s32 s1 __asm__("$17"); - register u16 s2 __asm__("$18"); - struct sprite8 spr; - s32 t; - - s2 = D_800B99D8; - i = 0; - s1 = 0; - spr.f4 = *(u16 *)(a1 + 4); - - do { - t = *(s16 *)(a1 + 0); - spr.f0 = (i & 1) ? (t + 0xC) : (t - 0xC); - spr.f2 = *(u16 *)(a1 + 2) - s1; - spr.f6 = 0x4D; - if (i >= 2) spr.f8 = 0; - spr.fa = s2; - s2++; - s1 += 0x18; - i++; - spr.f8 |= 0x100; - func_8012C51C(&spr, a0); - } while (i < 2); -} - - - -extern void (*D_8018F460[])(void); - -void func_801876FC(void *a0) { - D_8018F460[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80187738() /* dedup: shared engine-core @0x80187738 (src/shared) */ - -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012CBCC(s32 a0); - -s32 func_80187834(s32 param_1) { - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + 0x100; - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x10) + 0x40; - if (((s32 (*)(void))func_8012CBCC)() != 0) { - *(s32 *)(param_1 + 0x18) = 0xFFE80000; - *(s32 *)(param_1 + 0x14) = 0xFFC80000; - *(s32 *)(param_1 + 0x44) = 0; - *(s32 *)(param_1 + 0x48) = 0x80000; - *(s32 *)(param_1 + 0x4C) = 0; - func_80143B6C(param_1, 0); - *(s16 *)(param_1 + 0xFC) = 0x40; - *(s16 *)(param_1 + 0x2) = *(u16 *)(param_1 + 0x2) + 1; - } -} - - -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); -void func_801878D0(int param_1) { - short v; - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 0x100; - *(short *)(*(int *)(param_1 + 0x20) + 0x14) = - *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 0x20; - v = *(unsigned short *)(param_1 + 0xFC) - 1; - *(short *)(param_1 + 0xFC) = v; - if (v == 0) { - ((void (*)(void))func_8012C218)(); - } else { - ((void (*)(void))func_8012AD80)(); - } -} - - - -extern void (*D_8018F46C[])(void); - -void func_8018794C(void *a0) { - D_8018F46C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8001D0E8(s32 a0, s32 a1, s32 a2); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B21C(void *a0); -extern M2C_UNK D_8018AF28; -extern s32 D_801E1714[]; -extern s32 D_801E1944[]; -extern s32 D_801E1B94[]; - -void func_80187988(s32 param_1) { - s32 v0; - void *a1; - s32 hi; - s32 r; - s32 nudge; - s32 val; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - return; - } - hi = *(u16 *)(param_1 + 0x70) & 0xFF00; - a1 = &D_801E1B94; - if ((*(u16 *)(param_1 + 0x70) & 0xFF) == 0) { - a1 = &D_801E1714; - } else if ((*(u16 *)(param_1 + 0x70) & 0xFF) == 1) { - a1 = &D_801E1944; - } - ((void (*)(s32, void *))func_8001C214)(*(s32 *)(param_1 + 0x20), a1); - func_8001D0E8(*(s32 *)(param_1 + 0x20), 0x140, 0xF0); - ((void (*)(s32, void *))func_8012A828)(param_1, &(*(u8 *)&D_8018AF28)); - func_8012B21C((void *)param_1); - r = rand(); - nudge = r << 4; - if (hi == 0) { - nudge = r << 5; - } - if (rand() & 1) { - val = nudge; - } else { - val = nudge; - __asm__ __volatile__("" : : "r"(val)); - val = -val; - } - *(s32 *)(param_1 + 0x10) = val; - *(s32 *)(param_1 + 0xE0) = val; - val = 0xFFE70000 - (rand() << 4); - *(s32 *)(param_1 + 0x18) = val; - *(s32 *)(param_1 + 0xE8) = val; - *(s32 *)(param_1 + 0x1C) = 0x60; - if (hi != 0) { - *(s32 *)(param_1 + 0x14) = 0xFFDD0000; - *(s32 *)(param_1 + 0xE4) = 0xFFDD0000; - *(s32 *)(param_1 + 0x48) = *(s32 *)(param_1 + 0x48) * (rand() % 3 + 3); - *(u16 *)(param_1 + 0x34) = 3; - } else { - *(s32 *)(param_1 + 0x14) = 0xFFDA0000 - ((rand() & 0xF) << 16); - *(s32 *)(param_1 + 0xE4) = *(s32 *)(param_1 + 0x14); - *(u16 *)(param_1 + 0x34) = 0; - *(s32 *)(param_1 + 0x48) = *(s32 *)(param_1 + 0x48) * 6; - } - *(s32 *)(param_1 + 0xDC) = *(s32 *)(param_1 + 0x48); - *(u16 *)(param_1 + 0x2) = *(u16 *)(param_1 + 0x2) + 1; -} diff --git a/src/ov_SC02_003/ov_SC02_003_jr_80187B40.c b/src/ov_SC02_003/ov_SC02_003_jr_80187B40.c deleted file mode 100644 index d4c73de04..000000000 --- a/src/ov_SC02_003/ov_SC02_003_jr_80187B40.c +++ /dev/null @@ -1,5027 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -typedef struct { short m[3][3]; long t[3]; } Mtx_8017DECC; -typedef struct { short vx, vy, vz, pad; } Sv_8017DECC; -typedef struct { - SVECTOR t0; - SVECTOR t1; - SVECTOR v0; - SVECTOR v1; - void *p0; - void *p1; - s32 zero1; - s32 zero2; - s32 tag; - u8 pad[16]; -} LinePrim_80189B1C; -typedef struct { - s32 w[0x29]; -} Blk_0xA4; -typedef struct { u8 b[8]; } St_801E6C9C; -typedef struct { - void (*fn[3])(void *); -} Tbl_801E6CA4; -typedef struct { s16 vx, vy, vz, pad; } SVEC_80184358; -typedef struct { u16 x, y, z, w; } Blk8_8018453C; -typedef struct { s32 f0, f1, f2, f3, f4, f5, f6, f7; } Blk32_801E8788; -typedef struct { - s16 f0, f2, f4, f6, f8, fA, fC, fE; - s32 f10; -} S80190C84_8018483C; -typedef struct { s16 vx, vy, vz, pad; } SVEC_84BD8; -typedef struct { s16 vx, vy, vz, pad; } SVEC_801855D4; -typedef struct { u32 addr:24; u32 len:8; } PTAG_85910; -typedef struct { s16 x, y, z, pad; } Vec3s16; -typedef struct { - s16 f0; - s16 f2; - s16 f4; - s16 f6; - s16 f8; - s16 flag; -} Entry8018F07C; -typedef struct { - s16 f0; - s16 f1; - s16 f2; - s16 f3; - s16 f4; - s16 f5; - s16 f6; - s16 f7; - s32 f8; -} Pkt_801861D8; -typedef struct { - s16 f0; - s16 f1; - s16 f2; - s16 f3; - s16 f4; - s16 f5; - s16 f6; - s16 f7; - s32 f8; -} Pkt_8018626C; -typedef struct { - u16 f0; - u16 f2; -} Ent_80186AE4; -typedef struct { - s32 w[0x95]; -} Blk254_80186AE4; -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_8018D134; -extern u8 D_8018D0A4; -extern u8 D_8018D080; -extern u8 D_8018D05C; -extern u8 D_8018D110; -extern u8 D_8018D0EC; -extern u8 D_8018D0C8; -extern u8 D_8018D038; -extern void func_80145934(void); -extern u8 D_8018D1C4; -extern u8 D_8018D1A0; -extern u8 D_8018D17C; -extern u8 D_8018D158; -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_8018C5BC[]; -extern unsigned char D_8018C5EC[]; -extern unsigned char D_8018C63C[]; -extern unsigned char D_8018C66C[]; -extern unsigned char D_8018C69C[]; -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_8018C6EC[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018C7B4[]; -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_8018C83C[]; -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_8018C844; -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 struct Packed8 D_80126C98; -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_801E6E60; -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_801E6E64; -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_8018C874; -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_8018C91C[])(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_8018C940[])(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_8018C930; -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_8018C954[])(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_8018C960[]; -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_8018C970[])(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_8018C988[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018C978; -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_8018C99C[])(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_8018C9B8[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018C9A8; -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_8018C9CC[])(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_8018C9E0[])(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_8018C9F4; -extern void (*D_8018CA1C[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018C9FC; -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_8018CA68[])(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_8018CA6C[])(void); -extern s32 func_80161104(void); -extern void func_801555F4(void *); -extern void func_801555BC(void *a0); -extern s32 func_80155800(s32 arg0); -extern int func_80155A44(int param_1); -extern int func_80161208(); -extern u8 D_800D4DA8[]; -extern void func_80155B20(s32 *a0); -extern s32 D_800D4DB4; -extern void func_80155B9C(s32 a0); -extern u8 D_800D4DD4[]; -extern void func_80155C0C(s32 *a0); -extern void func_8014ED28(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 D_800D4DF4; -extern void func_80155C64(s32 a0); -extern void func_8015E880(s32 *a0); -extern void func_80155D70(s32 param_1); -extern void func_80155E30(void *a0); -extern s32 func_80161208(); -extern void func_80155EA4(void *arg0); -extern void func_80155F58(void); -extern s32 func_80155F80(); -extern s32 func_80155F60(void); -extern s32 func_80155F80(s32 a0); -extern int func_80155FB0(int arg, int a1); -extern int func_80155FD4(int arg, int a1); -extern int func_80156044(int arg, int a1); -extern S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018CED0[]; -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_8018CEE0[])(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_801E6E98; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018CF08[])(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_8018CEE8; -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_8018CEF8; -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_8018CF48[])(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_8018CF50[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018CF1C; -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_8018CF5C[])(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_8018CF2C; -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_801E6EA0; -extern s32 D_801E6EAC; -extern s32 D_801E6EB0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018CF98[])(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_8018CF6C[]; -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_801E6EA8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018D1E8[])(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_8018D008[]; -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_8018D28C[])(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_8018D3E0[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018D1FC; -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_8018D3E8[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018D20C; -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_8018D22C; -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_8018D3F0[])(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(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_8018D418[])(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_8018D424[])(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_8018D298[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018D4C8; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018C5AC[]; -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_8018D4DC[]; -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_8018D518[]; -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_8018D560; -extern u16 D_8018D562; -extern u16 D_8018D564; -extern s32 D_8018D568; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -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_8018D27C; -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_8018D5F4[]; -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_8018D6A4[])(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_8018D6D4[]; -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_8018D738; -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_801E6EB8[]; -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_8018D75C[])(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_801E6F10[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018D7A4[])(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_8018D794; -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_801E63B4[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_8018D7AC[])(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_8018D800[])(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_8018D7C8; -extern s16 D_8018D7FC; -extern s16 D_8018D7FA; -extern s16 D_8018D7F8; -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_8018D80C[])(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_801E6F70; -extern u8 D_801E6F71; -extern u8 D_801E6F72; -extern u8 D_801E6F73; -extern u8 D_801E6F74; -extern u8 D_801E6F75; -extern u8 D_801E6F76; -extern u8 D_801E6F77; -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_8018D81C[])(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_801E6FB0; -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_8018D860[])(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_8018D8DC[]; -extern s32 D_8018D8FC[]; -extern u8 D_8018D978[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018D998[]; -extern u8 D_8018D9B8[]; -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_8018DA54[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018DAD0[])(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_801E63C4; -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_8018DADC[])(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_8018DAE4[])(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_8018DBAC[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018DBBC[])(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_8018DBCC[])(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_8018DBD8[])(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_8018DB38[]; -extern u8 D_8018DB4C[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018DBF0[])(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_8018DBF8[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018DC00[])(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_8018DC08[])(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_8018DC10[])(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_8018DC18[])(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_8018DC20[])(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_8018DCD4[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018DCDC[])(void); -extern void func_80169F00(void *a0); -extern char D_8018DC8C[]; -extern char D_8018DC4C[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018DD14[])(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_8018DD20[])(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_8018DD68[])(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_8018DDE4[])(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_801E72D0; -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_8018DDD8[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018DE1C[]; -extern unsigned short D_8018DE24[]; -extern unsigned short D_8018DE2C[]; -extern unsigned char D_801E72D8[]; -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_801E72D0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018DE34[])(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_801E740C; -extern M2C_UNK D_801E7410; -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_801E7398; -extern void (*D_8018DE64[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801E7414[]; -extern u8 D_801E741C[]; -extern u8 D_801E73CC[]; -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_8018DE6C[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018DE88[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018DE90[])(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_8018DEF8[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018DE9C; -extern u8 D_8018DEA8; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018DF2C[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018DF34[])(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_8018DF88[])(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_8018DFBC[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018DFAC[]; -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_8018DFD8; -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_8018E050[])(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_8018E058[])(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_8018E060[])(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_8018E068[])(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_8018E070[])(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_8018E078[])(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_8018E084[])(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_8018E090[])(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_8018E09C[])(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_8018E0AC[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018E0BC[])(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_8018E0C4[])(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_8018E0CC[])(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_8018E0D4[])(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_8018E0DC[])(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_8018E0E4[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018E0EC[])(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_8018E0F4[])(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_8018E0FC[])(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_8018E104[])(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_8018E10C[])(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_8018E114[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018E11C[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018E124[])(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_8018E12C[])(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_8018E134[])(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_8018E13C[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018E144[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018E14C[])(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_8018E154[])(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_8018E15C[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018E164[])(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_8018E16C[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5EA8; -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_8018E1B0[])(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_8018E174; -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 struct S80126B38 D_80126B38; -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018E1E0[])(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_8018E21C[])(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_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_8018E274[])(); -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_8018E284[])(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_8018E28C[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_8018E3F4[])(); -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_8018E400[])(); -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_801E660C; -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_801E87BC; -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_801E7B50; -extern short D_801E8864; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -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_801E7F7C; -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_801E7FA4; -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_801E7F60; -extern s32 func_8017A3B0(void); -extern short D_801E7F9C; -extern short D_801E7F98; -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); -extern int func_8017A3D8(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_801E7F64; -extern u16 D_801E7FE4; -extern u16 D_801E7FE6; -extern u16 D_801E7FE8; -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_801E7FDC; -extern s16 D_801E7FDE; -extern s16 D_801E7FE0; -extern s16 D_801E7FD4; -extern s16 D_801E7FD6; -extern s16 D_801E7FD8; -extern void func_8017B7A8(void); -extern s16 D_801E7FF4; -extern s16 D_801E7FF6; -extern s16 D_801E7FF8; -extern s16 D_801E7FFC; -extern s16 D_801E7FFE; -extern s16 D_801E8000; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801E7FEC; -extern short D_801E7FEE; -extern short D_801E7FF0; -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 void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801E7FAC[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_801E7FA8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018E5DC[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018E614[])(void); -extern void func_8017BEF8(void *a0); -extern void (*D_8018E628[])(void); -extern void func_8017C524(void *a0); -extern void (*D_8018E63C[])(void); -extern void func_8017C7C4(void *a0); -extern void (*D_8018E65C[])(void); -extern void func_8017CA80(void *a0); -extern void (*D_8018E664[])(void); -extern void func_8017CD14(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern u8 D_8018E650; -extern void func_8017CD50(s32 a0); -extern s32 func_8017E404(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern void func_8017E51C(s32 a0); -extern s16 D_8018E6CC; -extern s16 D_8018E6D0; -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 ratan2(s32, s32); -extern s32 func_8017E958(s32 param_1, s32 param_2); -extern void func_8012A828(s32 a0, void *a1); -extern char D_801A668C[]; -extern void func_8017F5A0(int param_1); -extern s32 D_801A72C4; -extern void func_8017F5E4(s32 param_1); -extern void func_8017FC9C(void *a0); -extern s32 D_801270CC; -extern void func_8012C098(void); -extern void func_8012C218(void *a0); -extern void func_8017FCB0(void *a0); -extern void func_8017FD2C(u8 *a0); -extern void func_8017FD44(void *a0); -extern void func_8012A828(int, void *); -extern void func_8012B2CC(int); -extern void func_8012B23C(int); -extern void func_8012B14C(s32 a0, s32 a1); -extern unsigned char D_801A6F44; -extern unsigned char D_8018E6EC; -extern void func_8017FD80(int param_1); -extern void func_8012B23C(s32 a0); -extern unsigned char D_8018E6F8; -extern void func_8017FDE8(int param_1); -extern unsigned char D_8018E704; -extern void func_8017FE68(int param_1); -extern void func_8012DBD0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8012CC64(s32 a0, void *a1); -extern void func_8012CBF4(s32); -extern s32 func_8012CBA4(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_80180A18(s32 a0); -extern void func_80180878(short*); -extern void func_80180394(void*); -extern void func_8017FF18(int param_1); -extern unsigned char D_801A6E7C[]; -extern void func_80143CD4(s32 a0); -extern int func_800CB0E8(int param); -extern void func_801801EC(int param_1); -extern void func_80180394(void *a0); -extern void func_801803D0(void); -extern void func_801803B0(void); -extern unsigned char D_801A73BC[]; -extern void func_80180428(int param_1); -extern int D_801A6C5C; -extern void func_80180878(short *param_1); -extern s32 func_8012BEE8(s32); -extern void func_8012B2CC(s32); -extern void func_8012B23C(s32); -extern u8 D_801A629C; -extern unsigned char D_8018E68C[]; -extern unsigned char D_801A648C[]; -extern void func_801808C4(s32 param_1); -extern void func_80130740(void *a0, u16 *a1); -extern unsigned char D_8018E78C[]; -extern void func_80180A18(int param); -extern void func_8012A828(s32, void *); -extern void func_8002D4C8(s32, s32); -extern void func_80180A64(s32 param_1); -extern void func_8012E364(void); -extern void func_80181498(void); -extern s32 func_8012E470(s32 a0); -extern s32 func_8012E4C8(void *a0); -extern void func_801814B8(int param_1); -extern s32 func_8012BEE8(s32 a0); -extern void func_801814F0(int param_1); -extern void func_80130D48(s32 a0); -extern void func_8018173C(int param_1); -extern void func_80181D2C(u8*); -extern void func_8012A094(s32 a0); -extern void func_80181820(void); -extern void func_801818C0(void); -extern void func_80181914(void); -extern s16 D_801274E8; -extern void func_80129CF8(void); -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80181934(void); -extern s32 D_801269E4; -extern u8 D_801269E8; -extern void func_8012A018(s32 a0, s32 a1); -extern void func_80181D2C(u8 *a0); -extern void func_801819F4(void); -extern void func_80181AD4(); -extern void func_80181A94(); -extern void func_8012A094(s32); -extern void func_80181B4C(void); -extern void func_80181D2C(u8 *param_1); -extern void func_80181C10(void); -extern void func_80181CE0(void); -extern void func_80181D0C(void); -extern void (*D_8018EA0C[])(void); -extern void func_80181E70(); -extern void func_80181D68(s32 param_1); -extern void func_80181DE0(void); -extern void func_80181DE8(s32 param_1); -extern s32 func_80012ABC(s32, s32, s32); -extern void func_80181E70(s32 param_1, s32 param_2, s32 param_3); -extern s32 func_80013200(s32 *a0, s32 *a1); -extern void func_80182058(s32 param_1); -extern void (*D_8018EAC4[])(void); -extern void func_80182154(void *a0); -extern void func_801824E0(void *a0); -extern s32 D_801E8770; -extern s32 func_80182190(s32 param_1); -extern s32 func_801821E8(void); -extern void (*D_8018EACC[])(void); -extern void func_80182234(void *a0); -extern void func_801826C4(void *arg0); -extern s32 func_80182270(s32 param_1); -extern void func_8001BFD0(void); -extern s32 func_801822BC(void *a0); -extern s32 func_800167F0(s32 arg0); -extern s32 func_80182338(void); -extern void (*D_8018EAD8[])(void); -extern void func_8018235C(void *a0); -extern void func_80183238(void *a0); -extern s32 func_80182398(s32 param_1); -extern s32 func_801823F0(void); -extern void (*D_8018EAE0[])(void); -extern void func_80182414(void *a0); -extern void func_80183718(void *a0); -extern s32 func_80182450(s32 param_1); -extern s32 func_801824A8(void); -extern void func_801824CC(void); -extern void (*D_8018ED20[])(void); -extern s32 func_800CF854(void); -extern void func_8018251C(s32 param_1); -extern void func_8018258C(void); -extern void func_80182594(void *a0); -extern void func_801825E0(s32 a0); -extern void func_80182630(s32 a0); -extern void func_8018268C(s32 param_1); -extern void (*D_8018ED38[])(void); -extern void func_801826C4(void *a0); -extern void func_80182744(s32 a0); -extern void func_80182700(s32 a0); -extern void func_80182744(s32 param_1); -extern void func_801827A0(void); -extern void (*D_8018ED44[])(void *); -extern void func_801827C0(void *a0); -extern void func_80182854(u8 *arg0); -extern Blk8 D_801E6C7C; -extern s32 D_8018EAE8; -extern s32 D_8018ECF0; -extern void func_80182894(void *a0); -extern void func_80182964(u8 *a0); -extern void func_80182BD0(); -extern void func_80182CB4(s32 a0); -extern u8 D_8018EC34[]; -extern u8 D_8018ED10[]; -extern void func_801829F8(s32 a0); -extern void func_801553A8(s32 *arg); -extern void func_80147324(s32 arg); -extern void func_80182AE4(void *a0); -extern s32 func_8001B23C(s32 a0); -extern void func_80182D00(void *a0); -extern void func_80182B74(s32 param_1); -extern s32 D_80126E60[]; -extern void func_80182BD0(u8 *a0); -extern void func_80182CB4(s32 _arg0); -extern void (*D_8018ED5C[])(void); -extern void func_80181914(); -extern void func_80182D3C(u8 *a0); -extern Blk8 D_801E6C84; -void func_801831A8(void *arg0); -extern void func_80182D84(void *param_1); -extern s32 D_800D4744; -extern s32 D_801A7F50; -extern s32 D_801A7FF0; -extern void func_80182E08(void *arg0); -extern void func_801831A8(void*); -extern void func_80182E84(s32 param_1); -extern void func_80182EEC(void *a0); -extern void func_80182F4C(s32 arg0); -extern u8 D_801E6C8C[8]; -extern u8 D_801E6C94[8]; -extern void func_80182F78(s32 arg0); -extern void func_80183010(void); -extern void func_80183018(u8 *a0); -extern St_801E6C9C D_801E6C9C; -extern void func_80183098(s32 arg0); -extern s32 D_80126984; -extern void func_8018316C(void); -extern s32 D_8018ED88; -extern void func_8013C9C4(s32); -extern void func_801831A8(void * arg0); -extern void func_801831E4(void); -extern s32 D_80126B58; -extern void func_801831F8(); -extern void (*D_8018EDA0[])(void); -extern void func_800D1744(s32 *a0); -extern void func_80183A78(s32 *a0); -extern s32 D_8018EA6C; -extern void func_80183274(s32 *a0); -extern s16 D_80126960; -extern s16 D_80126974; -extern void func_80183310(s32 param_1); -extern void func_801834EC(s32 arg0); -extern void func_80183574(void *arg0); -extern void func_801835C8(void *arg0); -extern void func_801835F8(); -extern void func_8018366C(void *arg0); -extern void func_801836C8(void *arg0); -extern void (*D_8018EDC0[])(void); -extern void func_80188F08(void); -extern void func_80183B64(); -extern void func_80183C94(void*); -extern s32 D_8018EA90; -extern void func_80183754(s32 *a0); -extern void func_801839C4(void *a0); -extern void func_80183BA4(); -extern void func_80183C9C(s32 a0); -extern u8 D_8018EDC8[]; -extern u8 D_8018EA48[]; -extern void func_80183814(void *a0_); -extern s16 D_8018EDD0[]; -extern u8 D_801A7CB0; -extern void func_80183A80(s32 a0); -extern void func_80183B64(s32 a0); -extern s16 D_800AE7E0; -extern s16 D_800AE7E2; -extern s16 D_800AE7E4; -extern void func_80028558(s32, s32, s32, s32); -extern void func_80183BA4(s32 arg0); -extern void func_80183C94(void *a0); -extern Tbl_801E6CA4 D_801E6CA4; -extern void func_80183D80(void *arg0); -extern s32 D_801DF720; -extern s32 D_801DFBA8; -extern void func_8001C214(s32 a0, s32 a1); -extern void func_80183DD8(); -extern void func_80183EB8(void *a0); -extern void func_80162CCC(); -extern void func_80183F0C(void *a0); -extern void (*D_8018F1B4[])(void); -extern void func_8013D064(void); -extern void func_80183F64(void *a0); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001D0E8(s32 a0, s32 a1, s32 a2); -extern void func_8013C414(s32 param_1, s32 param_2); -extern void func_80181934(); -extern void func_80181B4C(); -extern s16 D_800B9A0E; -extern s32 D_801E8010; -extern s32 D_801E8820; -extern u8 D_801AF280[]; -extern u8 D_8018EDDC[]; -extern u8 D_801AFAE8[]; -extern u8 D_801B6AD0[]; -extern void func_80183FC8(s32 param_1); -extern void func_80184164(void *a0); -extern s32 D_801B5C90; -extern void func_80184174(void *arg0); -extern u16 D_800B99DC; -extern u8 D_8018B358[]; -extern void func_8018419C(s32 a0); -extern u8 D_8018EFF4; -extern u8 D_8018EFF5; -extern u8 D_8018EFF6; -extern void func_80184250(void *a0); -extern s32 D_801E8738; -extern SVEC_80184358 aD_8018F034 __asm__("D_8018F034"); -extern SVEC_80184358 aD_8018F03C __asm__("D_8018F03C"); -extern void func_80184358(s32 p); -extern void (*D_8018F044)(void); -extern s32 D_8018F04C; -extern s32 D_8018F054; -extern void (*D_8018F05C)(void); -extern void (*D_8018F064)(void); -extern void (*D_8018F06C)(void); -extern void func_8018623C(u16 arg0, u16 arg1); -extern void func_80185910(SVECTOR*, SVECTOR*, SVECTOR*, SVECTOR*); -extern s32 D_801E86BC; -extern s32 D_801E86C4; -extern Blk8_8018453C D_801E87B0; -extern s32 D_801E8788; -extern void func_801861D8(s32 a0); -extern void func_8013C360(s32 a0); -extern s32 D_801270D8; -extern void func_8018453C(s32 param_1); -extern s32 D_801E8754; -extern u8 D_8018EDF4[]; -extern void func_8018483C(); -extern void func_801847B8(s32 a0); -extern s16 D_801E87B2; -extern u16 D_800B99D8; -extern s16 D_8018F078; -extern s16 D_8018F076; -extern s32 D_801E86C0; -extern s32 func_8012C51C(void *a0, s32 a1); -extern void func_8018483C(s32 a0); -extern void func_80036D58(); -extern void func_80185E00(void); -extern void func_8018621C(void); -extern s32 D_801B9230; -extern void func_80184A08(s32 p); -extern void func_80184B00(void *a0); -extern void func_801831F8(void); -extern s32 D_801E873C; -extern s32 D_801E874C; -extern void func_80184B14(s32 a0); -extern s32 func_8012C588(s32 a0, s32 a1); -extern s32 func_80185C48(s32 a0, s32 a1); -extern s32 func_80185D58(s32 a0); -extern u8 D_800AF648[]; -extern u8 D_8018B37C[]; -extern void func_801852E4(s32 a0); -extern void func_80185F8C(); -extern void func_80187354(s32 a0); -extern void func_8018762C(); -extern void func_80184BD8(s32 p); -extern void func_8018512C(s32 p); -extern void func_801852E4(s32 arg0); -extern void func_8018535C(void); -extern void func_80185364(void *a0); -extern s32 D_801E8784; -extern void func_8018537C(void *arg0); -extern void func_801853D4(s32 p); -extern void func_8018545C(s32 a0); -extern void func_801854C4(void); -extern void func_801854CC(void *a0); -extern SVEC_801855D4 D_8018F034; -extern SVEC_801855D4 D_8018F03C; -extern void func_801855D4(s32 p); -extern s32 D_801E8750; -extern void func_8013D164(void); -extern void func_801857B0(s32 param_1); -extern void func_80185840(s32 param_1); -extern s32 D_800A5E60; -extern u8 D_800A6610[]; -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80185910(SVECTOR *a0, SVECTOR *a1, SVECTOR *a2, SVECTOR *a3); -extern void (*D_8018F2E0[])(void); -extern void func_80185B40(void *a0); -extern u8 D_8018F210[]; -extern u8 D_8018F288[]; -extern void func_8001CA1C(void *a0, void *a1); -extern void func_80185B7C(void *a0); -extern void func_80185BF0(int param_1); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern s32 func_80185D58(); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_80185E88(void); -extern void func_80185EC8(void); -extern void func_80185F24(void); -extern void func_80185F58(void); -extern Entry8018F07C D_8018F07C[26]; -extern void func_80185F8C(s32 a0); -extern void (*D_8018F2E8[])(void); -extern void func_801860A8(void *a0); -extern s32 D_801DF700; -extern s32 D_8018EFDC; -extern void func_801860E4(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8018618C(s32 param_1); -extern void func_801861D8(s32 param_1); -extern void func_8013BD34(); -extern void func_8002D4C8(s32 arg0, s32 arg1); -extern s32 D_801270D0; -extern s32 D_8018F2F0; -extern u8 D_800D391C[]; -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_8018626C(void); -extern void (*D_8018F2F4[])(void); -extern void func_801863AC(void *a0); -extern void (*D_8018F2FC[])(void); -extern void func_801863E8(void *a0); -extern s32 D_801E8270; -extern s32 D_801E8274; -extern s32 D_801E8278; -extern s32 D_801E8280; -extern s32 D_801E8284; -extern s32 D_801E8288; -extern s32 D_801E8290; -extern s32 D_801E8294; -extern s32 D_801E8298; -extern void func_80186424(s32 param_1); -extern void func_80186530(s32 self); -extern u8 D_801DCED0; -extern s32 D_8018F304; -extern u8 D_801E827C; -extern u8 D_801E827D; -extern u8 D_801E827E; -extern u8 D_801E828C; -extern u8 D_801E828E; -extern u8 D_801E829E; -extern u8 D_801E82AC; -extern u8 D_801DD528; -extern M2C_UNK D_8018AF28; -extern s32 D_801270C8; -extern void func_80186764(s32 param_1); -extern void (*D_8018F31C[])(void); -extern void func_801868D4(void *a0); -extern void (*D_8018F394[])(void); -extern void func_80186910(void *a0); -extern u8 D_8018F324[]; -extern s32 D_801E8018; -extern void func_8012CAE4(); -extern void func_8018694C(void *a0); -extern void func_801869CC(s32 arg0); -extern void func_80186A64(void *a0); -extern void func_8018626C(); -extern void func_80186A9C(s32 *param_1); -extern s32 D_801E801C; -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s32 func_8012BD14(s32 a0); -extern void func_80186AE4(s32 self); -extern void func_8001C214(s32, s32); -extern void func_8012A828(s32, void*); -extern u8 D_801DCA30[]; -extern void func_80186C44(void *a0); -extern void (*D_8018F3AC[])(void); -extern void func_80186CAC(void *a0); -extern void func_8001D0E8(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012B200(u8 *a0); -extern s16 D_801E0294[]; -extern u8 D_8018F39C[]; -extern void func_80186CE8(s32 a0); -extern s32 func_80143BDC(u16 *a0); -extern void func_80187558(); -extern void func_80186D88(void *s0); -extern void (*D_8018F3C4[])(void); -extern void func_80186E30(void *a0); -extern u8 D_801E071C; -extern u8 D_801E2164; -extern s32 D_8018F3B4; -extern void func_80186E6C(s32 param_1); -extern void func_80186F44(s32 a0); -extern void func_8012CBCC(s32 a0); -extern s32 func_80186FDC(s32 param_1); -extern void func_80187060(int param_1); -extern void (*D_8018F3D4[])(void); -extern void func_801870DC(void *a0); -extern u8 D_801E14AC; -extern u8 D_801E10B4; -extern void func_80187118(s32 param_1); -extern void func_80187480(); -extern void func_801871B8(s32 a0); -extern s32 func_80187254(s32 param_1); -extern void func_801872D8(int param_1); -extern s32 D_8018F424[3]; -extern s32 D_8018F430[]; -extern s16 D_8018F3E4[]; -extern void func_80188C0C(); -extern void func_8018762C(s32 a0, s32 a1); -extern void (*D_8018F460[])(void); -extern void func_801876FC(void *a0); -extern u8 D_801E0CBC; -extern u8 D_801E087C; -extern u8 D_801E0B5C; -extern void func_80187738(s32 param_1); -extern s32 func_80187834(s32 param_1); -extern void func_801878D0(int param_1); -extern void (*D_8018F46C[])(void); -extern void func_8018794C(void *a0); -extern void func_8012B21C(void *a0); -extern s32 D_801E1714[]; -extern s32 D_801E1944[]; -extern s32 D_801E1B94[]; -extern void func_80187988(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - -#include "common.h" - -extern s32 func_80187F30(void *a0, s32 a1); -extern s32 func_80143BDC(u16 *a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); -extern u16 D_80126B66; - -void func_80187B40(s32 p) { - u16 sp10[3]; - - *(u16 *)(*(s32 *)(p + 0x20) + 0x10) = *(u16 *)(*(s32 *)(p + 0x20) + 0x10) + 0x40; - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) = *(u16 *)(*(s32 *)(p + 0x20) + 0x12) + 0x100; - *(u16 *)(*(s32 *)(p + 0x20) + 0x14) = *(u16 *)(*(s32 *)(p + 0x20) + 0x14) + 0x58; - if (func_80187F30((void *)p, 1) != 0) { - *(s32 *)(p + 0x4C) = 0; - *(s32 *)(p + 0x44) = 0; - *(s32 *)(p + 0x48) = *(s32 *)(p + 0xDC); - switch (*(u16 *)(p + 0x34)) { - case 0: - sp10[0] = *(u16 *)(p + 0x6); - sp10[1] = *(u16 *)(p + 0xA); - sp10[2] = *(u16 *)(p + 0xE); - ((void (*)(u16 *))func_80143BDC)(sp10); - *(s32 *)(p + 0x10) = (*(s32 *)(p + 0xE0) * 2) / 3; - *(s32 *)(p + 0x14) = (*(s32 *)(p + 0xE4) * 2) / 3; - *(s32 *)(p + 0x18) = (*(s32 *)(p + 0xE8) * 2) / 3; - *(s32 *)(p + 0x1C) = *(s32 *)(p + 0x1C) + 0x40; - *(u16 *)(p + 0x34) = *(u16 *)(p + 0x34) + 1; - break; - case 1: - sp10[0] = *(u16 *)(p + 0x6); - sp10[1] = *(u16 *)(p + 0xA); - sp10[2] = *(u16 *)(p + 0xE); - ((void (*)(u16 *))func_80143BDC)(sp10); - *(s32 *)(p + 0x10) = *(s32 *)(p + 0xE0) / 3; - *(s32 *)(p + 0x14) = *(s32 *)(p + 0xE4) / 3; - *(s32 *)(p + 0x18) = *(s32 *)(p + 0xE8) / 3; - *(u16 *)(p + 0x34) = *(u16 *)(p + 0x34) + 1; - break; - case 2: - *(s32 *)(p + 0x1C) = 0; - break; - case 3: - *(s32 *)(p + 0x1C) = 0x100; - *(u16 *)(p + 0x34) = *(u16 *)(p + 0x34) + 1; - /* fallthrough */ - case 4: - sp10[0] = *(u16 *)(p + 0x6); - sp10[1] = *(u16 *)(p + 0xA); - sp10[2] = *(u16 *)(p + 0xE); - ((void (*)(u16 *))func_80143BDC)(sp10); - *(s32 *)(p + 0x10) = *(s32 *)(p + 0xE0); - *(s32 *)(p + 0x14) = *(s32 *)(p + 0xE4); - *(s32 *)(p + 0x18) = *(s32 *)(p + 0xE8); - break; - } - } - if (func_8012BEE8(p) == 1 || *(s16 *)(p + 0xE) < (s32)(s16)D_80126B66 - 0x200) { - func_8012C218((void *)p); - } -} - - -DEFINE_func_80187DB8() /* dedup: shared engine-core @0x80187DB8 (src/shared) */ - -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); -void func_80187EB4(int param_1) { - short v; - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 0x100; - *(short *)(*(int *)(param_1 + 0x20) + 0x14) = - *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 0x20; - v = *(unsigned short *)(param_1 + 0xFC) - 1; - *(short *)(param_1 + 0xFC) = v; - if (v == 0) { - ((void (*)(void))func_8012C218)(); - } else { - ((void (*)(void))func_8012AD80)(); - } -} - - -DEFINE_func_80187F30() /* dedup: shared engine-core @0x80187F30 (src/shared) */ - - -extern void (*D_8018F540[])(void); - -void func_80187FEC(void *a0) { - D_8018F540[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80188028() /* dedup: shared engine-core @0x80188028 (src/shared) */ - -DEFINE_func_80188134() /* dedup: shared engine-core @0x80188134 (src/shared) */ - -DEFINE_func_8018825C() /* dedup: shared engine-core @0x8018825C (src/shared) */ - -extern u8 D_801A7604; -extern u8 D_801A766C; -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012CBCC(s32 a0); - -void func_80188414(void *a0) { - extern void func_8012CBCC(s32 a0); - extern void func_8012A828(s32 a0, void *a1); - extern u8 D_801A7604; - extern u8 D_801A766C; - - if (((s32 (*)(s32))func_8012CBCC)((s32)a0) != 0) { - if (*(s16 *)((s32)a0 + 0x70) == 0) { - func_8012A828((s32)a0, ((u8 *)&D_801A7604)); - } else { - func_8012A828((s32)a0, ((u8 *)&D_801A766C)); - } - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) - 1; - } -} - - - -extern void func_8012C218(void*); - s32 func_80188484(s32 arg0) { - *(s32 *)(arg0 + 0xdc) -= 1; - if (*(s32 *)(arg0 + 0xdc) == 0) { - ((void (*)(void))func_8012C218)(); - } - } - - -extern void func_8012CBCC(s32 a0); - -void func_801884B8(s32 arg0) { - if (((s32 (*)(void))func_8012CBCC)() != 0) { - *(s32 *)(arg0 + 0x4C) = 0; - *(s32 *)(arg0 + 0x48) = 0; - *(s32 *)(arg0 + 0x44) = 0; - *(s32 *)(arg0 + 0x14) = 0; - *(s16 *)(arg0 + 0x2) = 4; - } -} - - -DEFINE_func_801884FC() /* dedup: shared engine-core @0x801884FC (src/shared) */ - -#include "common.h" - -s32 func_80188680(void *a0, s32 a1, s32 a2) -{ - s16 f6 = *(s16 *)((s32)a0 + 6); - s16 fE = *(u16 *)((s32)a0 + 0xE); - register s32 t asm("$3") = (s16)a1 - 0x30; - register s32 v0 asm("$2") = 0; - - if (t < f6) { - t = (s16)a1 + 0x30; - if (f6 < t) { - t = (s16)a2 - 0x30; - if (t < fE) { - v0 = fE < (s16)a2 + 0x30; - } - } - } - return v0; -} - - - -extern void (*D_8018F558[])(void); - -void func_801886DC(void *a0) { - D_8018F558[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018F590[])(void); - -void func_80188718(void *a0) { - D_8018F590[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018F598[])(void); - -void func_80188754(void *a0) { - D_8018F598[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80188790() /* dedup: shared engine-core @0x80188790 (src/shared) */ - -extern void func_8012AD44(s32 *a0, s16 a1); - void func_801888CC(void *a0) { - *(s32 *)((char *)a0 + 0x1c) = 0x10; - ((void (*)(s32, s32))func_8012AD44)((s32)a0, 0x1); - } - - -/* ==================================================================== - * func_801888F4 — ov_SC02_003 / ov_SC02_003_jr_8018173C - * - * RECONCILED from the sibling draft that already banked in - * ov_SC02_000/ov_SC02_000_jr_8018173C.c (same body, twin overlay). The - * gate's blocker ("t.c:5894: conflicting types for `Blk20'") is the same - * one already solved for that twin: `Blk20` is a plain - * `typedef struct { s32 w[8]; } Blk20;` (engine_types.h:472), and the - * ov_SC02_003 TU already has it visible file-scope-wide via - * `#include "../shared/engine_core.h"` (line 2) -> engine_types.h, well - * before this function's INCLUDE_ASM point (line 5894). A second - * `typedef struct {...} Blk20;` here is a FRESH anonymous-struct type to - * this compiler (gcc-2.7.2-psx treats two anonymous-struct typedefs of - * the same name as conflicting even when byte-identical — confirmed with - * a 2-line repro against tools/bin/gcc-2.7.2-psx/cc1: exit 33, - * "conflicting types for `T'"), so it must be DROPPED, not adopted. - * - * Everything else in the draft's declaration block is a plain `extern` - * (not a typedef), so a redundant/duplicate extern of the same - * identifier+type elsewhere in the TU is legal C and causes no conflict: - * - `extern Blk20 D_800AE620;` is ALSO already declared at TU line 1724 - * (identical type) — harmless to repeat, kept for standalone - * (match_one) compilation where engine_core.h is not pulled in via - * common.h alone. - * - `Rec12_801888F4` / `extern Rec12_801888F4 D_8018F560[];` and - * `extern void RotMatrixY(...)` are NOT yet visible at line 5894 in - * this TU (their only other appearance, for func_80188AEC, is later - * at TU lines 5935/5945 — AFTER our insertion point) so they stay. - * - `extern s32 rand(void);` is already declared at TU lines 952/1090; - * repeating it (identical signature) is harmless. - * - `extern s32 func_8001CC3C(...)` and `extern void func_800484EC(...)` - * are already declared at TU lines 1870/234; repeating them - * (identical signatures) is harmless. - * - * Verified directly against the real destination TU (not just - * match_one's standalone compile): substituted this file for the - * INCLUDE_ASM("...", func_801888F4) line inside a scratch copy of - * src/ov_SC02_003/ov_SC02_003_jr_8018173C.c and ran it through the pinned - * mipsel-linux-gnu-cpp + tools/bin/gcc-2.7.2-psx/cc1 exactly as gate_main - * does — cc1 exits 0, no Blk20 (or Rec12_801888F4/D_8018F560) conflict at - * any point in the file, including func_80188AEC's later re-declarations. - * - * `Blk20` itself is guarded by `#ifndef BFM_ENGINE_TYPES_H` (that macro is - * engine_types.h's own include guard, already `#define`d in the real TU - * by the time this splices in, via engine_core.h at TU line 2 — so the - * guard skips our local typedef there and only supplies it for a - * standalone match_one compile, where common.h alone never pulls - * engine_types.h in). One file serves both the byte-check and the TU - * paste; no separate hand-trimmed banking copy needed. - * - * SECOND CONFLICT FOUND BY THE SAME FULL-TU SPLICE TEST (not in the - * reported blocker line, which is only cc1's FIRST error — it does not - * stop at one): `Rec12_801888F4` / `D_8018F560` are declared a SECOND - * time, file-scope, later in this exact TU for func_80188AEC (real TU - * lines 5935/5945 — after our INCLUDE_ASM point, so invisible to us going - * in but very much still ahead of us once spliced). A second file-scope - * anonymous-struct typedef of the same name is the identical class of - * conflict as Blk20 (verified: cc1 flags `conflicting types for - * 'Rec12_801888F4'` / `'D_8018F560'` pointing at that later pair) — and - * there is no header guard to hang a fix on this time, because that - * second copy is hand-written directly in the TU, not pulled from a - * guarded header, so it cannot be skipped the Blk20 way. - * FIX (cookbook §183 "TYPE-shadowed-block-scope"): move the typedef + - * extern into the FUNCTION BODY (block scope) instead of file scope. A - * block-scope `extern` of a type that later conflicts with a file-scope - * one is only a WARNING in this compiler ("type mismatch with previous - * external decl"), not an error — confirmed with a 2-function repro - * mirroring this exact shape (block-scope decl in an earlier function, - * conflicting file-scope decl in a later one): cc1 exit 0. Re-ran the - * full-TU splice with the typedef+extern moved inside `func_801888F4`: - * cc1 exits 0, zero errors, only the file's pre-existing unrelated - * warnings survive. - * ==================================================================== */ - -#ifndef BFM_ENGINE_TYPES_H - -#endif - -extern Blk20 D_800AE620; -extern s32 rand(void); -extern void RotMatrixY(s32 a0, void *a1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); - -void func_801888F4(void *arg0) -{ - register void *a0 __asm__("$16") = arg0; /* RC-3: unpinned gcc swaps $s0/$s1 */ - typedef struct { s32 f0, f1, f2; } Rec12_801888F4; /* 12-byte stride; - block-scope — see header note: file scope collides with the TU's - own (later, unmodifiable) redefinition for func_80188AEC. */ - extern Rec12_801888F4 D_8018F560[]; - s32 vec[4]; /* sp+0x10 */ - Blk20 m; /* sp+0x20 */ - s32 ang; - void *p; - - p = *(void **)((s32)a0 + 0x20); - func_8001CC3C((s32)p, (s32)&D_8018F560[rand() & 3], 0x3F0, 0x100); - *(u8 *)((s32)p + 0x27) = 0x9D; - *(s16 *)((s32)p + 0x1A) = 0x1000; - *(s16 *)((s32)p + 0x18) = 0x1000; - - *(s32 *)((s32)a0 + 0x10) = 0; - *(s32 *)((s32)a0 + 0x14) = 0x20000; - *(s32 *)((s32)a0 + 0x18) = 0; - ang = rand(); - - /* m = D_800AE620; — hand-expanded so no block move (defeats a §2 remat kill). */ - { - register Blk20 *s __asm__("$6") = &D_800AE620; - register s32 t0 __asm__("$3"); - register s32 t1 __asm__("$4"); - register s32 t2 __asm__("$5"); - - __asm__("" : "=r"(s) : "0"(s)); /* keep the base in a register */ - - t0 = s->w[0]; t1 = s->w[1]; t2 = s->w[2]; - m.w[0] = t0; m.w[1] = t1; m.w[2] = t2; - t0 = s->w[3]; t1 = s->w[4]; t2 = s->w[5]; - m.w[3] = t0; m.w[4] = t1; m.w[5] = t2; - t0 = s->w[6]; t1 = s->w[7]; - m.w[6] = t0; m.w[7] = t1; - __asm__ __volatile__("" : : "r"(t0), "r"(t1)); /* sched barrier */ - } - - { - void *q = &m; - RotMatrixY(ang & 0xFFF, q); - __asm__ __volatile__("" : "=r"(q)); /* cse_expr.md §2 remat kill */ - } - - vec[0] = 0x4000; - vec[2] = 0; - vec[1] = 0; - func_800484EC((s32)&m, (s32)vec, (s32)vec); - - *(s32 *)((s32)a0 + 0x2C) = vec[0]; - *(s32 *)((s32)a0 + 0x30) = vec[2]; - *(u16 *)((s32)a0 + 0x2) += 1; - *(s16 *)((s32)a0 + 0x34) = 0; -} - - - - -s32 func_80188A18(s32 param_1) -{ - extern void func_8012931C(struct vec *a0); - extern void func_801292C8(u8 *a0); - - register unsigned short c __asm__("$5"); - register int d __asm__("$4"); - register int g __asm__("$6"); - int a; - int e; - ((void (*)(int))func_8012931C)(((int)param_1)); - a = *(int *)(((int)param_1) + 0x10); - c = *(unsigned short *)(((int)param_1) + 0x34); - e = *(int *)(((int)param_1) + 0x2c); - __asm__ __volatile__("" : : "r"(a)); - d = *(int *)(((int)param_1) + 0x30); - { - unsigned short cp1 = c + 1; - *(int *)(((int)param_1) + 0x10) = a + e; - *(unsigned short *)(((int)param_1) + 0x34) = cp1; - } - *(int *)(((int)param_1) + 8) = *(int *)(((int)param_1) + 8) + 0x10000; - *(int *)(((int)param_1) + 0x18) = *(int *)(((int)param_1) + 0x18) + d; - g = *(short *)(((int)param_1) + 0xa); - if (g > *(short *)(((int)param_1) + 0x36)) { - ((void (*)(int))func_801292C8)(((int)param_1)); - } else if (*(short *)(((int)param_1) + 0x34) == 8) { - *(int *)(((int)param_1) + 0x2c) = -*(int *)(((int)param_1) + 0x2c); - *(int *)(((int)param_1) + 0x30) = -*(int *)(((int)param_1) + 0x30); - *(int *)(((int)param_1) + 0x14) = -*(int *)(((int)param_1) + 0x14); - } else if (*(short *)(((int)param_1) + 0x34) == 0x10) { - *(short *)(((int)param_1) + 0x34) = 0; - *(int *)(((int)param_1) + 0x14) = -*(int *)(((int)param_1) + 0x14); - } -} - - -typedef struct { s32 f0, f1, f2; } Rec12_801888F4; /* 12-byte stride */ -typedef struct { - s16 f0; - s16 f1, f2, f3, f4, f5; -} Elem_8018F086; - - - -extern s32 rand(void); -extern void func_8001CB6C(u8*, s32, s32, s32); -extern Rec12_801888F4 D_8018F560[]; - -void func_80188AEC(void *a0) { - void *s0; - s32 v, r1, r2, r3; - u16 *counter; - - s0 = *(void **)(a0 + 0x20); - - v = rand() & 3; - ((void (*)(void *, void *, s32, s32))func_8001CB6C)(s0, &((void (**)())D_8018F560)[v * 3], 0x3F0, 0x100); - - *(u8 *)(s0 + 0x27) = 0x9D; - *(u16 *)(s0 + 0x1A) = 0x1000; - *(u16 *)(s0 + 0x18) = 0x1000; - - r1 = rand(); - *(s32 *)(a0 + 0x14) = (r1 + 0xC000) << 1; - - r2 = rand(); - *(s32 *)(a0 + 0x10) = ((r2 & 0x3FFF) << 1) - 0x4000; - - r3 = rand(); - *(s32 *)(a0 + 0x18) = ((r3 & 0x3FFF) << 1) - 0x4000; - - counter = (u16 *)(a0 + 0x2); - *counter = *counter + 1; -} - - -extern void func_8012931C(struct vec *a0); -extern void func_801292C8(u8 *a0); - -void func_80188BAC(u8 *a0) { - u8 *p = *(u8 **)(a0 + 0x20); - *(u16 *)(p + 0x12) = *(u16 *)(p + 0x12) + 0x200; - func_8012931C((struct vec *)a0); - if (*(s16 *)(a0 + 0xA) > *(s16 *)(a0 + 0x36)) { - func_801292C8(a0); - } -} - - -/* Reconciled: the TU (src/ov_SC02_000/ov_SC02_000_jr_8018173C.c) carries an in-scope - * `extern void func_80188C0C();` from DEFINE_func_80187354() (src/shared/engine_core.h), - * expanded at line 5719 -- BEFORE this function's own INCLUDE_ASM site (line 6382). The - * byte-true body returns a load-bearing value in $v0 on both exits, so a same-named - * `s32 func_80188C0C(...)` definition is a hard `conflicting types` cc1 error against - * that void declaration (verified: return-axis conflicts are FATAL in gcc-2.7.2, not a - * warning -- confirmed by replaying the real TU substitution standalone). - * - * Per cookbook §37/§124/§73: a return-axis conflict's proper fix is normally a fleet-wide - * `extern void`->`extern s32` widen (T2, touches src/ across every spelling) -- off limits - * here. The T0 draft-only escape is the asm-label alias: define the body under a DIFFERENT - * C identifier (`aF80188C0C`) and bind the emitted assembler symbol to `func_80188C0C` via - * `__asm__(...)`. The two C identifiers never collide, so cc1 never runs the conflicting- - * types check at all, and the emitted symbol/instructions are unaffected. */ - -extern u8 *func_801290DC(s32 a0, u8 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern u8 D_800D387C[]; -extern u8 D_800D3888[]; - -s32 aF80188C0C(s32 a0, s16 a1) __asm__("func_80188C0C"); - -s32 aF80188C0C(s32 a0, s16 a1) { - u8 *obj; - u8 *prim; - - obj = func_801290DC(0x10, (u8 *)a0); - if (obj == 0) { - return 0; - } - prim = *(u8 **)(obj + 0x20); - *(u32 *)(prim + 0x20) = (s32)D_800D387C; - *(u8 *)(prim + 0x27) = 0x9C; - *(u16 *)(prim + 0x1A) = a1; - *(u16 *)(prim + 0x18) = a1; - *(u32 *)(prim + 4) |= 0x50000000; - func_80128EA8((s32)prim, (s32)obj + 0x24, (s32)D_800D3888); - return (s32)obj; -} - - - -extern void (*D_8018F5A0[])(void); - -void func_80188C9C(void *a0) { - D_8018F5A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_801292C8(u8*); -void func_80188CD8(s32 a0) { - if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { - ((void (*)(s32))func_801292C8)(a0); - } -} - - - -extern void (*D_8018F5BC[])(void); - -void func_80188D18(void *a0) { - D_8018F5BC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8001D0E8(s32 a0, s32 a1, s32 a2); -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_801AFAC8; -extern u8 D_8018F5A4; - -void func_80188D54(s32 param_1) { - s32 v0; - s32 iVar1; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - iVar1 = v0; - *(s32 *)(param_1 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4((void *)param_1); - return; - } - func_8001C214(iVar1, (s32)&D_801AFAC8); - func_8001D0E8(iVar1, 0x800, 0x800); - func_8012A828(param_1, &D_8018F5A4); - *(s32 *)(iVar1 + 4) |= 0x40; - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_80188DF0() /* dedup: shared engine-core @0x80188DF0 (src/shared) */ - -extern void func_8018A3C8(void *arg0); -extern void func_800233CC(void *a0, u16 a1); -extern void func_8018A550(Ctl_8018A550_8018A550*, Rec_8018A550_8018A550*); -extern s32 func_8012AD50(void *arg0); -extern u8 D_801E8830[]; -extern u8 D_8018F5C4[]; -extern u8 D_8018F684[]; - -void func_80188DF8(s32 param_1) { - func_8018A3C8(D_801E8830); - func_800233CC(D_8018F5C4, 0x20); - func_800233CC(D_8018F5C4 + 0x40, 0x20); - func_800233CC(D_8018F5C4 + 0x80, 0x20); - ((void (*)(void *, void *))func_8018A550)(D_801E8830, D_8018F684); - ((void (*)(s32))func_8012AD50)(param_1); -} - - -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern s16 D_801E8832; -extern u8 D_801E8830[]; -extern void func_8018A2A0(void); - -void func_80188E80(void) { - (*(s16 *)D_801E8830) = -D_800B9AB8[0]; - D_801E8832 = 16 - D_800B9ABA[0]; - func_8018A2A0(); -} - - - -extern void (*D_8018F6C4[])(void); - -void func_80188ECC(void *a0) { - D_8018F6C4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80188F08() /* dedup: shared engine-core @0x80188F08 (src/shared) */ - - - - - - - - - - - - - - - - - -void func_80188F30(void *arg0) -{ - *((s16 *) (((char *) arg0) + 0x2)) = 1; - *((s32 *) (((char *) arg0) + 0x1c)) = 1; - *((s16 *) (((char *) arg0) + 0xa8)) = 0x7f; - *((s16 *) (((char *) arg0) + 0x84)) = 1; - *((s32 *) (((char *) arg0) + 0xa4)) = 0; - *((unsigned short *) (((char *) arg0) + 0x72)) |= 0x1000; -} - -extern void func_80028620(s32, void *); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_800CF8B4(); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); -extern void func_80189340(s32 p); - -void func_80188F60(s32 self) -{ - - extern s16 D_800B9A0E; - extern s32 D_80126B58; - extern s32 D_801270C8; - extern s32 D_801270D4; - extern u8 D_8018F6CC[]; - extern struct B16 D_800A5E98; /* AGREES with the TU's file-scope decl (line 2167) */ - extern s32 D_800A5E9C; - extern u8 D_800A5EA4; - extern u8 D_800A5EA5; - extern u8 D_800A5EA6; - u8 *dst = (u8 *)(self + 0x103); - u8 *src = D_8018F6CC; - s16 *tp = (s16 *)&D_80126B58; - s32 *rec; - s32 i; - s32 t; - - if (func_8012BEE8(self) != 0) { - i = 0; - *(s32 *)(self + 0x1C) = (rand() & 1) + 1; - do { - if (*src != 0) { - *dst = rand() % *src; - } else { - *dst = 0; - } - dst--; - i++; - src++; - } while (i < 0x18); - } - if (*(s16 *)(self + 0x70) != 0) { - rec = (s32 *)&D_800A5E98; - *rec = -0x12; - D_800A5E9C = rand() % 31 + 10; - D_800A5EA4 = *(u16 *)(self + 0xA8); - D_800A5EA5 = *(s16 *)(self + 0xA8) * 5 / 127; - D_800A5EA6 = *(s16 *)(self + 0xA8) * 51 / 127; - func_80028620(1, rec); - } - t = (s16)*(u16 *)(self + 0xA8) >> 1; - *(s16 *)(self + 0xA8) = t; - if (D_801270C8 != 1) { - *(s16 *)(self + 0xA8) = t | 0x40; - if (*(s16 *)(self + 0x70) == 0) { - goto tail; - } - *(u16 *)(self + 0x84) -= 1; - if (*(s16 *)(self + 0x84) == 0) { - i = (func_8012B8A4(self) - 0x400) & 0xFFF; - if (i >= 0x800) { - i = 0xFFF - i; - } - i >>= 5; - i += 0x10; - if (tp[3] > 0x380) { - i += (tp[3] - 0x380) * 80 / 120; - } - if (i >= 0x80) { - i = 0x7F; - } - *(s16 *)(self + 0x84) = 0xF; - if (func_800CF8B4() != 0) { - func_8002D4C8(0x4CF, (u16)(i | 0x1000)); - } else { - func_8002D4C8(4, 0x4CF); - } - *(s32 *)(self + 0xA4) = 1; - } - } else { - if (*(s16 *)(self + 0x70) != 0 && *(s32 *)(self + 0xA4) != 0) { - func_8002D4C8(4, 0x4CF); - *(s16 *)(self + 0x84) = 1; - *(s32 *)(self + 0xA4) = 0; - } - if (D_801270D4 == 1) { - s32 *rec2 = &D_800A5E9C; - func_8012C218((void *)self); - *rec2 = 0x18; - D_800A5EA4 = 0x7F; - D_800A5EA5 = 0x66; - D_800A5EA6 = 0x7F; - func_80028620(1, rec2 - 1); - return; - } - } - if (*(s16 *)(self + 0x70) != 0 && *(s32 *)(self + 0xA4) != 0 && D_800B9A0E != 0) { - func_8002D4C8(4, 0x4CF); - *(s32 *)(self + 0xA4) = 0; - } -tail: - func_80189340(self); -} - - - -extern void (*D_8018F714[])(void); - -void func_80189304(void *a0) { - D_8018F714[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* func_80189340 -- ov_SC02_000 (jr_8018173C). Projects a 8-node "tail"/streamer chain - * (D_8018F6E4 = a u16[3] offset table, one row per node; the per-node byte deltas live in - * the object at +0x100 walking DOWNWARD) and, for every node whose bit is set in the - * s16 mask at obj+0xA8, emits 4 semi-transparent gouraud quads (POLY_G4, len=8, code=0x3A) - * that fan the previous->current screen segment out by +-radius in x (j=0,1) or y (j=2,3). - * - * Byte-verified levers (match_one MATCH, 260 ins): - * L1 FRAME (sp+0xE8, out-arg area 0x18 for func_8005A600's 5th arg). Declared-local slots - * are handed out in DECLARATION order; everything at/above sp+0xA0 is a reload SPILL - * slot (8-aligned, size rounded to 8 -- assign_stack_local(align == -1)), which is why - * prim/ot/mask/ptrC land on 0xA0/0xA8/0xB0/0xB8 with holes between. So the declared set - * must be exactly: tags[28] (0x18), sv[4] (0x88), xy[4] (0x90), rgb (0x98), flag (0x9C). - * `rgb` and `flag` MUST be plain address-taken scalars (4-aligned, no hole); folding them - * into the xy aggregate would 8-align them and shift the frame. - * L2 tags[1..27] are genuinely DEAD stores in the original -- keep them. The loop body must - * read `tags[0]` (not the `prim` pseudo): tags[] is an ARRAY_REF, so the store tags[i]= - * invalidates it every iteration and re-emits `lw $v0,0x18($sp)`. - * L3 ONE variable for BOTH the tags counter and the outer node counter. Two separate - * counters split the allocno; the merged one out-ranks the ptrC giv, takes $s4, and - * pushes ptrC into the 0xB8 spill -- which is also what forces the target's TWO separate - * `la D_8018F6E4` materialisations in the preheader (257 -> 260 ins). - * L4 `ret * 4` is written TWICE (ot, and the divisor). Binding it to a local computes it - * once and loses a `sll`; CSE cannot merge the two because a loop back-edge separates - * their extended basic blocks. - * L5 The 14 prim stores go through STRUCT types (MEM_IN_STRUCT_P). cse.c's true_dependence - * drops the dependence of a varying in-struct store on a fixed NON-struct scalar, so the - * plain scalar `rgb` survives across them (one `lw 0x98($sp)` feeding both colour stores) - * while the ARRAY_REF xy[] reads do NOT (each `sh` gets its own `lhu`). Plain - * `*(s32 *)(pp + 0x04)` casts would re-load rgb twice and lose the match. - * L6 `s32 c = rgb;` -- a block-scoped temp read at the TOP of the j body. It is what hoists - * `lw $v1,0x98($sp)` above `addiu $v0,$zero,8` and hands rgb $v1 (not $v0), which in turn - * lets the 0x3A constant float up. Reading `rgb` directly at the two colour stores is an - * 8-instruction schedule miss; it must NOT be hoisted out of the j loop (AddPrim clobbers - * memory, so loop.c cannot treat the load as invariant). - * L7 `xy[0]=xy[2]; xy[1]=xy[3];` sit AFTER the three sv[] stores (any earlier placement is - * 12-50 off), and `q` is a single walking `*q--` cursor seeded at obj+0x103 -- gcc folds - * the three peeled decrements into the one `addiu $s3,$s6,0x100`. - * - * Integration surface (host TU src/ov_SC02_000/ov_SC02_000_jr_8018173C.c): - * AGREES at file scope -- D_800AF648 (u8[]), D_80126950 (s32), D_800B9A02 (s16, matched to - * the TU canon; the u16 spelling also byte-matches but would CONFLICT), func_8004914C / - * func_800491AC (void(void*)). NOT declared anywhere in the TU or in include/ -- - * D_8018F6E4, D_800A651C, RotTransPers, func_80010A08, GetTPage, func_8005A600, AddPrim. - * D_8018F6E4 is overlay-local data: the ~2 family sibling needs its own symbol remapped. - */ - - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(void *a0, void *a1, s32 *a2, s32 *a3); -extern void *func_80010A08(s32 a0); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern s32 AddPrim(s32 a0, void *a1); - -void func_80189340(s32 p) -{ - - extern u8 D_800AF648[]; - extern u16 D_8018F6E4[]; - extern s32 D_80126950; - extern s32 D_800A651C; - typedef struct { u8 pad0[3]; u8 len; u8 pad1[3]; u8 code; } PHdr_80189340_80189340; - typedef struct { - u32 tag; /* 0x00 */ - u32 c0; /* 0x04 */ - u16 x0, y0; /* 0x08, 0x0A */ - u32 c1; /* 0x0C */ - u16 x1, y1; /* 0x10, 0x12 */ - u32 c2; /* 0x14 */ - u16 x2, y2; /* 0x18, 0x1A */ - u32 c3; /* 0x1C */ - u16 x3, y3; /* 0x20, 0x22 */ - } PG4_80189340_80189340; /* 0x24 */ - - s32 tags[28]; /* sp+0x18 */ - s16 sv[4]; /* sp+0x88 */ - u16 xy[4]; /* sp+0x90 */ - s32 rgb; /* sp+0x98 */ - s32 flag; /* sp+0x9C */ - - u8 *q; - u8 *pp; - u8 *prim; - s32 ret; - s32 ot; - s32 radius; - s32 tp; - s32 i, j; - u8 mask; - - func_8004914C(D_800AF648); - func_800491AC(D_800AF648); - - mask = 1; - q = (u8 *)(p + 0x103); - sv[0] = D_8018F6E4[0] + *q--; - sv[1] = D_8018F6E4[1] + *q--; - sv[2] = D_8018F6E4[2] + *q--; - ret = RotTransPers(sv, &xy[2], &rgb, &flag); - if (ret > 0 && flag >= 0) { - ot = *(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + ret * 4; - prim = (u8 *)func_80010A08(0x3FC); - if (prim != 0) { - tp = GetTPage(0, 1, 0, 0); - func_8005A600((s32)prim, 0, 0, (u16)tp, 0); - - tags[0] = (s32)(prim + 0xC); - for (i = 1; i < 28; i++) { - tags[i] = tags[0] + i * 0x24; - } - - radius = ((D_80126950 + 0x1F4) * 8) / (ret * 4); - pp = (u8 *)tags[0]; - - for (i = 1; i < 8; i++) { - sv[0] = D_8018F6E4[i * 3] + *q--; - sv[1] = D_8018F6E4[i * 3 + 1] + *q--; - sv[2] = D_8018F6E4[i * 3 + 2] + *q--; - xy[0] = xy[2]; - xy[1] = xy[3]; - RotTransPers(sv, &xy[2], &rgb, &flag); - if ((*(s16 *)(p + 0xA8) & mask) != 0) { - rgb = *(s32 *)(p + 0x1C) << 6; - for (j = 0; j < 4; j++) { - s32 c = rgb; - ((PHdr_80189340_80189340 *)pp)->len = 8; - ((PG4_80189340_80189340 *)pp)->c1 = 0; - ((PG4_80189340_80189340 *)pp)->c3 = 0; - ((PG4_80189340_80189340 *)pp)->c0 = c; - ((PG4_80189340_80189340 *)pp)->c2 = c; - ((PHdr_80189340_80189340 *)pp)->code = 0x3A; - ((PG4_80189340_80189340 *)pp)->x0 = xy[0]; - ((PG4_80189340_80189340 *)pp)->x1 = xy[0]; - ((PG4_80189340_80189340 *)pp)->x2 = xy[2]; - ((PG4_80189340_80189340 *)pp)->x3 = xy[2]; - ((PG4_80189340_80189340 *)pp)->y0 = xy[1]; - ((PG4_80189340_80189340 *)pp)->y1 = xy[1]; - ((PG4_80189340_80189340 *)pp)->y2 = xy[3]; - ((PG4_80189340_80189340 *)pp)->y3 = xy[3]; - switch (j) { - case 0: - ((PG4_80189340_80189340 *)pp)->x1 = ((PG4_80189340_80189340 *)pp)->x1 + radius; - ((PG4_80189340_80189340 *)pp)->x3 = ((PG4_80189340_80189340 *)pp)->x3 + radius; - break; - case 1: - ((PG4_80189340_80189340 *)pp)->x1 = ((PG4_80189340_80189340 *)pp)->x1 - radius; - ((PG4_80189340_80189340 *)pp)->x3 = ((PG4_80189340_80189340 *)pp)->x3 - radius; - break; - case 2: - ((PG4_80189340_80189340 *)pp)->y1 = ((PG4_80189340_80189340 *)pp)->y1 + radius; - ((PG4_80189340_80189340 *)pp)->y3 = ((PG4_80189340_80189340 *)pp)->y3 + radius; - break; - case 3: - ((PG4_80189340_80189340 *)pp)->y1 = ((PG4_80189340_80189340 *)pp)->y1 - radius; - ((PG4_80189340_80189340 *)pp)->y3 = ((PG4_80189340_80189340 *)pp)->y3 - radius; - break; - } - AddPrim(ot, pp); - pp += 0x24; - } - } - mask = mask << 1; - } - AddPrim(ot, prim); - } - } -} - - -void func_80189750(s32 param_1) -{ - extern void func_8012C1B8(void); - extern void func_8012CAE4(void *a0); - extern void func_8001C214(s32 a0, s32 a1); - extern void func_8012A828(s32 a0, void *a1); - extern s32 func_80189888(void); - extern void func_80188F30(void *a0); - extern u8 D_801A629C; - extern s16 D_801965CC; - register s32 p0 __asm__("$16"); - register s32 iVar1 __asm__("$17"); - register s32 t __asm__("$2"); - - p0 = param_1; - t = ((s32 (*)(void))func_8012C1B8)(); - iVar1 = t; - *(s32 *)(p0 + 0x20) = t; - if (t == 0 || func_80189888() != 0) { - func_8012CAE4(p0); - return; - } - - func_8001C214(iVar1, (s32)&D_801965CC); - func_8012A828(p0, &D_801A629C); - - *(s32 *)(*(s32 *)(p0 + 0x20) + 4) |= 0x80000000; - func_80188F30(p0); -} - - -extern s16 D_800B9A0E; -extern s32 D_801E8778; -extern s32 D_801E877C; -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_801897E8(void) { - if (D_801E8778 == 0 && D_800B9A0E == 0) { - D_801E877C++; - if (D_801E877C >= 0x10) { - func_8002D4C8(0x106, 0); - D_801E8778 = 1; - } - } -} - - -extern s16 D_800B9A0E; - -s32 func_80189858() { - if (D_800B9A0E == 1) { - return 6; - } else if (D_800B9A0E == 2) { - return 7; - } - return 5; -} - - -extern s16 D_800B9A0E; - s32 func_80189888(void) { - return *(s16 *)&D_800B9A0E; - } - - -DEFINE_func_80189898() /* dedup: shared engine-core @0x80189898 (src/shared) */ - - -DEFINE_func_801898C8() /* dedup: shared engine-core @0x801898C8 (src/shared) */ - - -extern s16 D_8018F71E; -extern s32 func_8012AD50(void *arg0); -extern void func_80189C6C(void); -extern void func_80189D10(s32 param_1); - -void func_80189904(s32 param_1) -{ - func_80189C6C(); - func_80189D10(param_1); - *(s16 *)(param_1 + 0xFC) = 0; - D_8018F71E = 1; - ((void (*)(s32))func_8012AD50)(param_1); -} - - -DEFINE_func_80189950() /* dedup: shared engine-core @0x80189950 (src/shared) */ - - -extern void func_8012BF4C(s32 *arg0, s32 arg1); -extern s32 func_8012AD50(void *arg0); -extern void func_80189B1C(); -extern u32 func_80189DB8(u32 a0, u32 a1); -extern s16 D_8018F71E; - -void func_80189958(s32 param_1) { - s16 *ptr = &D_8018F71E; - int val; - int sum; - u16 range[2]; - - val = *(u16 *)(param_1 + 0x100) + 0x100; - sum = *(u16 *)(param_1 + 0xFE) + val; - *(u16 *)(param_1 + 0x100) = val; - *(u16 *)(param_1 + 0xFE) = sum; - *ptr = sum; - if (*ptr >= 0x2001) { - *ptr = 0x2000; - func_8012BF4C((s32 *)param_1, 0xA); - func_8012AD50((void *)param_1); - } - range[0] = 0; - range[1] = 0x50; - func_80189B1C((void *)param_1, range, ptr - 1, (void *)func_80189DB8(param_1, 0x2020F0)); -} - - -typedef struct { - s16 start; - s16 end; -} Range_80189B1C; - -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012AD50(void *a0); -extern u32 func_80189DB8(); -extern void func_80189B1C(); -extern u8 D_8018F71C[]; - -void func_80189A00(void *param_1) { - Range_80189B1C range; - - if (func_8012BEE8((s32)param_1) != 0) { - *(s16 *)((char *)param_1 + 0x100) = 0xF0; - func_8012AD50(param_1); - } - range.start = 0; - range.end = 0x50; - func_80189B1C(param_1, &range, (void *)D_8018F71C, - func_80189DB8(param_1, 0x2020F0)); -} - - -typedef struct { - s16 start; - s16 end; -} Range_80189A70; - -extern u8 D_8018F71C[]; -extern s16 D_8018F71E; -extern u32 func_80189DB8(); - -void func_80189A70(s32 *a0) -{ - s32 v; - s32 t; - s32 c; - Range_80189A70 range; - - v = (s16)(*(u16 *)((s32)a0 + 0x100) -= 0x10); - if (v < 0) { - D_8018F71E = 1; - func_8012AD44(a0, 0); - return; - } - t = v << 8; - if (v >= 0x20) { - c = v | 0x202000; - } else { - c = v | ((v << 16) | t); - } - range.start = 0; - range.end = 0x50; - func_80189B1C(a0, &range, D_8018F71C, func_80189DB8(a0, c)); -} - - - /* 0x24 */ - - - - - - - -extern u16 D_801E82A0[]; -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); - -void func_80189B1C(void *a0, Range_80189B1C *a1, void *a2, void *a3) { - MATRIX mtx; - LinePrim_80189B1C buf; - LinePrim_80189B1C *rec; - s32 i; - u16 *p; - u16 t; - - p = D_801E82A0 + a1->start * 4; - - func_80017DC4(a2, &mtx); - - mtx.t[1] = -0x1003; - mtx.t[0] = 0; - mtx.t[2] = 0; - buf.tag = 0x50000000; - - i = a1->start; - buf.p1 = a3; - buf.p0 = a3; - buf.zero2 = 0; - buf.zero1 = 0; - - if (i < a1->end) { - rec = &buf; - for (; i < a1->end; i++) { - t = p[0]; - rec->t0.vy = 0; - rec->t0.vx = t; - t = p[2]; - rec->t0.vz = t; - rec->v0 = rec->t0; - t = p[1]; - p += 4; - rec->v0.vy = t; - t = p[0]; - rec->t1.vy = 0; - rec->t1.vx = t; - t = p[2]; - rec->t1.vz = t; - rec->v1 = rec->t1; - t = p[1]; - rec->v1.vy = t; - - func_80017758(rec, &mtx); - } - } -} - - -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern u16 D_801E82A0[]; - -void func_80189C6C() -{ - int new_var; - s32 s2; - s16 *s1; - s32 s0; - s32 v0; - s2 = 0; - s1 = &((s16 *)D_801E82A0)[0]; - while (v0 = s2 < 0x51) - { - s0 = s2; - s0 = (s0 << 12) / 80; - do { new_var = (s16) (v0 >> 3); v0 = func_8004787C(s0); if (v0 < 0) { v0 += 7; } ; s1[0] = (s16) (v0 >> 3); v0 = func_80047948(s0); if (v0 < 0) { v0 += 7; } new_var = v0; } while (0); - s1[2] = (s16) (new_var >> 3); - s1 += 4; - s2++; - } - -} - - - /* 12-byte stride */ - - - - -extern u16 D_801E82A0[]; -extern s32 func_8004787C(s32 a0); - -void func_80189D10(s32 _arg0) -{ - s32 i; - s32 v; - s32 dead; - s32 p; - - for (i = 0; i < 0x51; i++) { - dead = i * 7 + 3; - dead = dead * 9 + 1; - dead = dead * 9 + 1; - dead = dead * 9 + 1; - dead = dead * 9 + 1; - dead = dead * 9 + 1; - p = (s32)&D_801E82A0[i * 4]; - v = -(func_8004787C((i << 15) / 0x50) * 0x110 / 4096 + 0x100); - *(s16 *)(p + 2) = v; - if ((s16)v > 0) { - *(s16 *)(p + 2) = 0; - } - } -} - - -extern u16 D_800B99DA; - -u32 func_80189DB8(param_1, param_2) -u32 param_1; -u32 param_2; -{ - if (D_800B99DA & 1) { - u8 b[4]; - *(u32*)b = param_2; - b[0] = (u8)(b[0] - 8); - if (b[0] >= 0xF8) b[0] = 0; - b[1] = (u8)(b[1] - 8); - if (b[1] >= 0xF8) b[1] = 0; - b[2] = (u8)(b[2] - 8); - if (b[2] >= 0xF8) b[2] = 0; - param_2 = *(u32*)b; - } - return param_2; -} - - - -// @class: struct -// @stuck: none — MATCH (94 ins). Keys: (1) cache out[0] in a local `o` before the switch so gcc -// holds it in $a0 across the case stores (else it reloads/`lh` per case, +3 ins); (2) declare the -// `in` struct BEFORE `out[2]` so in@sp+0x10 / out@sp+0x20; (3) the 0x14 word is written via -// `*(s32*)&in.lo = D_80126B60` then the high short RMW'd `in.hi -= 0x20` (memory lhu/sh, not reg); -// (4) order the three global assigns B60,B5C,B64 (B60 first → v0/v1/a2 alloc); (5) explicit -// `case 2: break;` after case 3 so gcc emits the `beq $v1,2` test with case1 falling into case3. - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8002D4C8(s32, s32); -extern void func_8012A828(s32, void *); -extern void func_8012B77C(void *, s32, void *); -extern void func_8012B2CC(s32); -extern s32 func_8012C588(s32 a0, s32 a1); - - -void func_80189E58(s32 param_1) { - - extern M2C_UNK D_801A79A4; - extern u8 D_801A777C; - extern u8 D_80126B5C; - extern s32 D_80126B60; - extern s32 D_80126B64; - s32 iVar1; - struct In in; - s32 out[2]; - s32 t; - s32 o; - - iVar1 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - return; - } - ((void (*)(s32, void *))func_8001C214)(iVar1, &(*(u8 *)&D_801A79A4)); - if ((*(u16 *)(param_1 + 0x70) & 0x1000) == 0) { - func_8002D4C8(0x43A, 0); - } else { - func_8002D4C8(0x6D6, 0); - } - func_8012A828(param_1, &D_801A777C); - *(s16 *)(param_1 + 2) = 1; - *(s32 *)(param_1 + 0x1C) = 100; - - *(s32 *)&in.lo = D_80126B60; - in.hi -= 0x20; - in.w0 = (*(s32 *)&D_80126B5C); - in.w2 = D_80126B64; - func_8012B77C(out, param_1 + 4, &in); - - o = out[0]; - t = *(u16 *)(param_1 + 0x70) & 0xF; - switch (t) { - case 0: - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = (s16)o; - break; - case 1: - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = (s16)o; - case 3: - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = (s16)(o >> 16); - break; - case 2: - break; - } - - if (*(u16 *)(param_1 + 0x70) & 0x1000) { - *(s32 *)(param_1 + 0x1C) = *(s32 *)(param_1 + 0x1C) << 1; - } - func_8012B2CC(param_1); - ((void (*)(s32, s32))func_8012C588)(0xBC, param_1); -} - - - -extern void (*D_801A7818[])(void); - -void func_80189FD0(void *a0) { - D_801A7818[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_801A782C[])(void); - -void func_8018A00C(void *a0) { - D_801A782C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012CBF4(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -extern s32 D_801A7804; -extern s32 D_801A7810; -extern u8 D_800D3918[]; -extern s32 D_80126D50; - -void func_8018A048(s32 param_1) { - s32 s0 = param_1; - s32 v; - - func_8012B14C(s0, (s32)&D_801A7804); - if (((s32 (*)(s32))func_8012CBF4)(s0) != 0) { - func_80146A6C(6, (void *)s0, *(s16 *)(s0 + 0x6), *(s16 *)(s0 + 0xA), - *(s16 *)(s0 + 0xE), 0, 0); - v = func_80132EF4(s0, 0x22); - if (v != 0) { - *(s16 *)(v + 0x34) = 0x2000; - } - } else { - if (func_8012D5E4(s0, (s32)&D_801A7810, (s32)&D_800D3918, 0x19) == 0 && - (*(s16 *)(s0 + 0x70) == 2 || D_80126D50 == 0) && - func_8012BEE8(s0) == 0) { - return; - } - } - func_8012C218((void *)s0); -} - - - -// @class: schedule -// @stuck: none — MATCH (71 ins). Tail schedule: read out.c into an explicit temp BEFORE the 0x5a/1 const stores so gcc hoists its lhu early (load-delay filled by li 0x5a) and stores out.c last from a held reg; without the temp gcc instead deferred out.b's store. in/out are two separate SV3{s16 a,b,c} stack slots (sp+0x10, sp+0x18) for ((void (*)(int, void *, void *))func_8012F214)(a0,&in,&out). 0x34 compare reads u16 (lhu, not lh). - -extern void func_8012B2CC(s32 a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012AD80(s32 a0); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -extern int D_801A7820; - -void func_8018A128(int param_1) -{ - SV3 in; - SV3 out; - short c; - - if (*(unsigned short *)(param_1 + 0x34) == 0) { - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(*(int *)(param_1 + 0x64) + 0x20) + 0x12); - ((void (*)(void))func_8012B2CC)(); - func_8012B23C(param_1); - ((void (*)(int, void *))func_8012B14C)(param_1, &D_801A7820); - in.a = 0; - in.b = 0; - in.c = 0x10; - ((void (*)(int, void *, void *))func_8012F214)(param_1, &in, &out); - *(short *)(param_1 + 6) = out.a; - *(short *)(param_1 + 0xa) = out.b; - c = out.c; - *(int *)(param_1 + 0x1c) = 0x5a; - *(short *)(param_1 + 0x34) = 1; - *(short *)(param_1 + 0xe) = c; - } - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = - *(short *)(*(int *)(param_1 + 0x20) + 0x10) - 0x80; - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = - *(short *)(*(int *)(param_1 + 0x20) + 0x12) + 4; - *(short *)(*(int *)(param_1 + 0x20) + 0x14) = - *(short *)(*(int *)(param_1 + 0x20) + 0x14) + 5; - func_8012AD80(param_1); - if (func_8012BEE8(param_1) != 0) { - ((void (*)(int))func_8012C218)(param_1); - } -} - - - -// @class: other -// @stuck: none — MATCH (expected); 16-bit sh stores via short* casts, s0=param_1 call-crossing - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); - -extern int D_801A7AD4; - -void func_8018A244(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - ((int (*)(int, void *))func_8001C214)(v0, &D_801A7AD4); - *(short *)(param_1 + 0x2) = 1; - *(short *)(param_1 + 0x34) = 0; - } -} - - -extern u16 D_800AF7BC; -extern u16 D_800AF7BE; -extern u8 D_801E8830[]; -extern s16 D_801E8832; -extern s32 D_801E8844[]; - -void func_8018A2A0(void) { - s32 i; - s32 flag; - u16 x; - s16 y; - s32 h; - s16 hv; - s32 p0; - s32 p1; - u32 w; - s32 *pw; - s16 *ph; - - flag = 0; - y = D_801E8832; - x = *(u16 *)D_801E8830; - - if ((y > -((D_800AF7BE >> 1) + 0x10)) && (y < (D_800AF7BE >> 1) + 0x10)) { - if ((-((D_800AF7BC >> 1) + 0x10) < (s16)x)) { - flag = (s16)x < ((D_800AF7BC >> 1) + 0x10); - } - } - - pw = D_801E8844; - ph = (s16 *)D_801E8844 - 8; - - for (i = 0; i < 8; i++) { - h = pw[i]; - if (h != 0) { - if (flag) { - hv = ph[i]; - p0 = (s16)x * hv; - p1 = y * hv; - w = *(u32 *)(h + 4); - *(u32 *)(h + 4) = w & 0x7FFFFFFF; - *(s16 *)(h + 8) = p0 >> 12; - *(s16 *)(h + 0xA) = p1 >> 12; - } else { - w = *(u32 *)(h + 4); - *(u32 *)(h + 4) = w | 0x80000000; - } - } - } -} - - - - -void func_8018A3C8(void *arg0) { - s32 i; - - ((s16 *)arg0)[1] = 0; - ((s16 *)arg0)[0] = 0; - for (i = 0; i < 8; i++) { - ((s16 *)arg0)[2 + i] = 0; - ((s32 *)arg0)[5 + i] = 0; - } -} - - - - -typedef struct { - s16 unk00; -} Sub_8018A3FC; - -typedef struct { - s16 unk00; - s16 unk02; - s16 unk04[8]; - Sub_8018A3FC *unk14[8]; -} S_8018A3FC; - -void func_8018A3FC(S_8018A3FC *arg0) { - s32 i; - Sub_8018A3FC *ptr; - arg0->unk02 = 0; - arg0->unk00 = 0; - for (i = 0; i < 8; i++) { - arg0->unk04[i] = 0; - ptr = arg0->unk14[i]; - arg0->unk14[i] = 0; - if (ptr != 0) { - ptr->unk00 = 0; - } - } -} - - - - -extern void func_8001CB00(s32 a0, void *a1, s32 a2, s32 a3); -extern void func_8001D074(s32 a0, s32 a1); -extern s32 D_801E8844[]; - -s32 func_8018A440(s16 id, void *rec, s16 x, s16 y, u8 p) -{ - s32 i; - s32 obj; - - for (i = 0; i < 8 && *(s32 *)(((u8 *)D_801E8844) + i * 4) != 0; i++) - ; - if (i < 8) { - obj = ((s32 (*)(s32, s32))func_8001D074)(0x7E, 0x100); - if (obj != 0) { - func_8001CB00(obj, rec, x, y); - *(u8 *)(obj + 0x27) = p; - *(u32 *)(obj + 4) |= 0xD0000000; - *(s32 *)(((u8 *)D_801E8844) + i * 4) = obj; - *(s16 *)((u8 *)((u8 *)D_801E8844) + i * 2 - 0x10) = id; - return i; - } - } - return -1; -} - - - -extern void func_8001D074(s32 a0, s32 a1); -extern void func_8001CD04(s32 a0, s32 a1); - - - - -void func_8018A550(Ctl_8018A550_8018A550 *ctl, Rec_8018A550_8018A550 *rec) -{ - s32 i; - Obj_8018A550_8018A550 *m; - s16 v; - u16 t; - - do { - for (i = 0; i < 8; i++) { - if (ctl->slots[i] == 0) { - break; - } - } - m = (Obj_8018A550_8018A550 *)((s32 (*)(s32, s32))func_8001D074)(0x7E, 0x100); - if (m != 0) { - ((void (*)(Obj_8018A550_8018A550 *, s32))func_8001CD04)(m, rec->fC); - m->f4 |= 0xF0000000; - v = rec->f6; - m->f1C = v; - m->f1A = v; - m->f18 = v; - ctl->slots[i] = m; - ctl->ids[i] = rec->f4; - } - t = rec->f0; - rec++; - } while (t != 0xFF); -} - - - - - - - - - - - - - - - - - - -void func_8018A640(s32 *a0, s32 a1, s32 a2, s32 a3) -{ - s8 *new_var; - new_var = (s8 *) (a0 + 0x0); - *new_var = a1; - new_var = a0; - *((s8 *) (new_var + 0x1)) = a2; - *((s8 *) (new_var + 0x2)) = a3; -} - -DEFINE_func_8018A650() /* dedup: shared engine-core @0x8018A650 (src/shared) */ - - -extern s32 D_801E8668; -extern s32 func_8012C588(s32 a0, s32 a1); - -s32 func_8018A660(s32 a0, s32 a1) { - D_801E8668 = a1; - return func_8012C588(0x85, a0); -} - - -extern u8 D_801152A8[]; -extern s32 D_801E8668; -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_80017E68(void *a0, void *a1); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012C218(void *a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern s32 func_80134510(s32 arg); - -// @class: regalloc-order -// @stuck: none — MATCH (145/145 ins, match_one confirmed) - - - - -s32 func_8018A690(s32 param_1) { - - extern M2C_UNK D_8018AF28; - extern s32 func_8012C354(s32 a0, s32 a1); - extern void RotMatrixZ(s32, void *); - extern void MulMatrix0(s32, void *, s32); - extern s32 D_801A7AF0; - extern char * D_801A7B24; - extern char D_801E8648[]; - - S8_80184F08 s60; - SVECTOR_80184F08 sStack_58; - S8_80184F08 s50; - int auStack_48[8]; - s32 iVar5, iVar8; - char *puVar2, *puVar4; - u16 uVar3; - - if (((s32 (*)(s32, void *))func_8012C354)(param_1, &D_801A7AF0) == 0) { - ((void (*)(s32))func_8012C218)(param_1); - } - ((void(*)(s32, void *))func_8012A828)(param_1, &(*(s32 *)&D_8018AF28)); - iVar5 = *(s32 *)(param_1 + 0x20); - *(s16 *)(param_1 + 0x70) = 0x80; - *(s32 *)(iVar5 + 4) |= 0x50000040; - *(u16 *)(iVar5 + 0x2c) |= 1; - iVar8 = *(s32 *)(*(s32 *)(param_1 + 0x64) + 0x20) + 0x34; - ((void (*)(s32, s32, void *))func_8012F14C)(iVar8, D_801E8668, &s60); - s50 = s60; - sStack_58.vz = 0x1800; - sStack_58.vy = 0x1800; - sStack_58.vx = 0x1800; - ((void (*)(void *, void *))func_80017DC4)(&sStack_58, auStack_48); - RotMatrixZ(rand() & 0xfff, auStack_48); - MulMatrix0(iVar8, auStack_48, iVar5 + 0x34); - ((void (*)(void *, s32))func_80017E68)(&s50, iVar5 + 0x34); - - /* pool-alloc: gcc routes the loaded pointer through a caller-saved reg ($v0) - before the callee-saved home ($s1) — pin it to reproduce the extra move. */ - { - register char *tmp __asm__("$2"); - tmp = D_801A7B24; - puVar2 = tmp; - } - puVar4 = puVar2 + 0x20; - D_801A7B24 = puVar4; - *(char **)(param_1 + 0xcc) = puVar2; - if (D_801E8648 < puVar4) { - D_801A7B24 = D_801E8648 - 0x120; - } - func_800D20C0(&s60, &sStack_58, 7); - func_800D23D0(&sStack_58); - ((void(*)(void *, void *))RotMatrixYXZ)(&sStack_58, puVar2); - ((void (*)(void *, s32))func_80017E68)(&s60, (s32)puVar2); - - uVar3 = *(u16 *)((char *)&s50 + 2); - if (((s32 (*)(void *))func_80134510)(&s50) != 0 && - (s32)(s16)uVar3 - (s32)*(s16 *)((char *)&s50 + 2) < 0x80) { - *(s16 *)((char *)&s50 + 2) = *(s16 *)((char *)&s50 + 2) - 4; - { - register char *tmp __asm__("$3"); - tmp = D_801A7B24; - puVar2 = tmp; - } - puVar4 = puVar2 + 0x20; - D_801A7B24 = puVar4; - *(char **)(param_1 + 0xd0) = puVar2; - if (D_801E8648 < puVar4) { - D_801A7B24 = D_801E8648 - 0x120; - } - func_800D23D0(&(*(s32 *)&D_801152A8)); - ((void(*)(void *, void *))RotMatrixYXZ)(&(*(s32 *)&D_801152A8), puVar2); - ((void (*)(void *, s32))func_80017E68)(&s50, (s32)puVar2); - } - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -extern s32 func_80017758(void *a0, void *a1); -extern void func_8012C218(void *a0); - - -// @class: regalloc-order -// @stuck: none — MATCH (168 ins). Keys: (1) pin param->$s1 via `register int self __asm__("$17")=param_1` -// (natural alloc put the short loop-counter in $s1); (2) block2's guarded dest via a test-temp -// `td=load; if(td){dest=td; ...}` forces the range-split `lw $a1; addu $s3,$a1,$0` the target has; -// (3) counter is `short i` do-while (keeps the `addu $s2,$v0,$0` raw-copy + sll16/sra16 compare); -// (4) gcc-2.7.2 loads s8/s16 via lbu/lhu+shift-extend (not lb/lh) so `signed char *p; *(s16*)buf=*p++` -// emits lbu;sll24;sra24;sh; (5) else-branch zero-byte asm barrier forces `addu $a0,$s1,$0` (else gcc -// reuses the still-live incoming $a0 with a nop delay slot). - -s32 func_8018A8D4(s32 param_1) { - - extern signed char D_801A7ADC[]; - register int self __asm__("$17") = ((int)param_1); - int iVar6; - int iVar1; - unsigned char buf[0x34]; - signed char *p; - short i; - int dest; - int td; - unsigned short t; - - iVar1 = *(int *)(self + 0x1c); - iVar6 = *(int *)(self + 0x20); - *(int *)(self + 0x1c) = iVar1 + 1; - if (iVar1 < 2) { - p = D_801A7ADC; - i = 0; - dest = *(int *)(self + 0xcc); - t = *(unsigned short *)(self + 0x70); - *(short *)(buf + 0x0c) = 0; - *(short *)(buf + 0x0a) = 0; - *(short *)(buf + 0x08) = 0; - *(short *)(buf + 0x1c) = 0; - *(short *)(buf + 0x14) = 0; - *(short *)(buf + 0x04) = 0; - buf[0x22] = 0; - buf[0x21] = 0; - buf[0x20] = 0; - buf[0x2a] = 0; - buf[0x29] = 0; - buf[0x28] = 0; - buf[0x2e] = 0; - buf[0x2d] = 0; - buf[0x2c] = 0; - *(int *)(buf + 0x30) = 0x50000000; - buf[0x25] = t; - buf[0x26] = t; - buf[0x24] = t; - do { - *(short *)(buf + 0x00) = *p++; - *(short *)(buf + 0x02) = *p++; - *(short *)(buf + 0x10) = *p++; - *(short *)(buf + 0x12) = *p++; - *(short *)(buf + 0x18) = *p++; - *(short *)(buf + 0x1a) = *p--; - func_80017758(buf, (void *)dest); - i++; - } while (i < 4); - - td = *(int *)(self + 0xd0); - if (td != 0) { - dest = td; - p = D_801A7ADC; - i = 0; - t = *(unsigned short *)(self + 0x70); - *(short *)(buf + 0x0c) = 0; - *(short *)(buf + 0x0a) = 0; - *(short *)(buf + 0x08) = 0; - *(short *)(buf + 0x1c) = 0; - *(short *)(buf + 0x14) = 0; - *(short *)(buf + 0x04) = 0; - buf[0x22] = 0; - buf[0x21] = 0; - buf[0x20] = 0; - buf[0x2a] = 0; - buf[0x29] = 0; - buf[0x28] = 0; - buf[0x2e] = 0; - buf[0x2d] = 0; - buf[0x2c] = 0; - *(int *)(buf + 0x30) = 0x50000000; - buf[0x25] = t; - buf[0x26] = t; - buf[0x24] = t; - do { - *(short *)(buf + 0x00) = *p++; - *(short *)(buf + 0x02) = *p++; - *(short *)(buf + 0x10) = *p++; - *(short *)(buf + 0x12) = *p++; - *(short *)(buf + 0x18) = *p++; - *(short *)(buf + 0x1a) = *p--; - func_80017758(buf, (void *)dest); - i++; - } while (i < 4); - } - *(short *)(self + 0x70) = *(short *)(self + 0x70) >> 1; - *(unsigned short *)(iVar6 + 0x2c) |= 1; - } else { - __asm__ __volatile__("" : "=r"(self) : "0"(self)); - func_8012C218((void *)self); - } -} - - - -extern void (*D_801A7B28[])(void); - -void func_8018AB74(void *a0) { - D_801A7B28[*(u16 *)((s32)a0 + 0x2)](); -} - - - - - diff --git a/src/ov_SC02_003/ov_SC02_003_o0b.c b/src/ov_SC02_003/ov_SC02_003_o0b.c deleted file mode 100644 index 4cefeb6b6..000000000 --- a/src/ov_SC02_003/ov_SC02_003_o0b.c +++ /dev/null @@ -1,30 +0,0 @@ -#include "common.h" -#include "../shared/func_80144B9C.h" - - -/* func_801457A4 @ 0x801457A4 — an -O0 function stranded at the whale's end boundary (it is the - * FIRST fn of the -O2 "after" segment, but its target is -O0: frame-pointer + per-case stack - * reloads). It can only bank in an -O0 object, so it lives here: _o0b is already -O0-compiled and - * its .text ends exactly at 0x801457A4 (right after func_80144B9C), placing this fn at its true - * address with no linker/Makefile change. Its stub was removed from ov_SC01_077_after.c. Def sig - * conformed byte-neutrally to func_80144B9C.h's decl `void *func_801457A4(s32)` (the whale calls it - * that way); byte-proven at -O0 (match_one --o0 79/79) and by the whole-binary gate. Phase-29 bank. */ -extern int D_8018ABB0; - -void *func_801457A4(s32 param_1) { - switch (param_1) { - case 0x1010: - case 0x1052: - case 0x1077: - case 0x1094: - case 0x2013: - case 0x2015 ... 0x201a: - case 0x2055 ... 0x205b: - case 0x207a ... 0x2080: - case 0x2097 ... 0x209d: - return (void *)(&D_8018ABB0)[param_1 & 0xffff0fff]; - default: - return (void *)D_8018ABB0; - break; - } -} diff --git a/src/ov_SC02_003/ov_SC02_003_o0c.c b/src/ov_SC02_003/ov_SC02_003_o0c.c deleted file mode 100644 index 93ec15781..000000000 --- a/src/ov_SC02_003/ov_SC02_003_o0c.c +++ /dev/null @@ -1,1154 +0,0 @@ -#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. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801E5794; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_8018AE94[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801E6CCC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void *arg0); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801E5794; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018ABD0)(); -extern s16 (*D_8018ABD4)(); -extern M2C_UNK (*D_8018ABDC)(); -extern s32 (*D_8018ABE0)(); -extern s32 D_801E6CC8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801E5798; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A598(void *a0); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_8018AF28; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018E40C; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_8018AF40; -extern M2C_UNK D_8018AF48; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_8018AF50; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_8018AF6C[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_8018AF78[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_8018AF8C[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_8018AFDC[]; -extern s16 D_8018B00C[]; -extern s16 D_8018B06C[]; -extern s16 D_8018B074[]; -extern s16 D_8018B094[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_8018B0CC[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_8018B124[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_8018B16C[])(void); -extern void func_80131F28(void *a0); -extern void (*D_8018B174[])(void); -extern void func_80131F64(void *a0); -extern void (*D_8018B17C[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_8018B184[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_8018B12C; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_8018B14C; -extern void func_801321B0(int param_1); -extern int D_8018B15C; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801E6D38; -extern s32 D_801E6D3C[]; -extern int D_801E6D40; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_8018B190; -extern u8 D_8018B18C; -extern s16 *D_8018B194; -extern u8 D_8018B198; -extern int D_801E6D38; -extern u16 D_801E6D48; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_8018B194; /* holds a pointer value (*(u16**)&D_8018B194) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_8018B1A8[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_8018B1FC; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_8018B200[])(void); -extern void func_80138C30(void *a0); -extern s32 func_80139BE0(s32); -extern s32 func_80138C60(s32 arg0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 D_80127548[]; -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_801395D4(void * a0); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_8018B244; -extern u8 D_8018B288; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018B2CC[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018B344, D_8018B346, D_8018B348, D_8018B34A, D_8018B34C, D_8018B34E; -extern u16 D_800D45F6; -/* ==== end §8b carried decl layer ==== */ - - - -void func_8013B568(s32 arg0) { - - extern s32 D_8018B350; - D_8018B350 = arg0; -} - - - -/* func_8013B598 (ov_SC01_077_o0, -O0): fills entry a0 of the 0x1C-stride table at - * D_801E86C8 from a 3-halfword source record. - * - * -O0 CONSTANT-OFFSET FOLD (the quirk that stalled this -O0 cluster in Phase 19): - * at -O0 gcc-2.7.2 folds a constant offset into the memory operand ONLY through a - * COMPONENT_REF / a real ARRAY_REF on an array-typed DECL: - * D_801E86C8[a0].f4 = ... -> lui $at,%hi(sym); addu $at,$at,idx; sh %lo(sym+4)($at) - * A CAST base defeats it (NOP_EXPR over the ADDR_EXPR), and so does pointer indexing: - * ((S *)D_801E86C8)[a0].f4 -> lui;addiu;addu;sh 4(reg) (+2 ins per store) - * a1[1] -> addiu $v1,$a0,2; lhu 0($v1) (+1 ins per load) - * So the table extern must carry the FULL struct type (not the pad-only canonical - * E_3B7AC), and the source record must be read as ->field, not as a[i]. Casting the - * incoming POINTER is harmless (a NOP on a register), only the base decl's type matters. - * - * Both types are body-scoped (cookbook §100) and the extern is declared inside the body, - * matching the established -O0 sibling pattern in src/ov_SC07_010/ov_SC07_010_o0.c - * (func_8013B7AC: `extern E_3B7AC D_801A9420[];` in-body). NOTE FOR BANKING: the canonical - * sig-layer decl `extern E_3B7AC D_801E86C8[];` (f0 + pad only) CANNOT be used here — it has - * no f4/f6/f8/fC members. The in-body decl below must be the one that survives; do not also - * emit a file-scope E_3B7AC decl for D_801E86C8 (conflicting types). - * - * 66/66 instructions byte-identical (match_one --o0). - */ -void func_8013B598(s32 a0, u16 *a1) { - extern Spr_8013B598_8013B598 D_801E86C8[]; - - D_801E86C8[a0].f0 = 1; - D_801E86C8[a0].f4 = ((Src_8013B598_8013B598 *)a1)->f0; - D_801E86C8[a0].f6 = ((Src_8013B598_8013B598 *)a1)->f2; - D_801E86C8[a0].f8 = ((Src_8013B598_8013B598 *)a1)->f4; - D_801E86C8[a0].fC = 0x100; -} - - - - -void func_8013B6A0(s32 idx, u16 *src, s32 val) -{ - extern Ent_8013B6A0_8013B6A0 D_801E86C8[]; - - D_801E86C8[idx].f0 = 1; - D_801E86C8[idx].f4 = ((Src_8013B6A0_8013B6A0 *)src)->f0; - D_801E86C8[idx].f6 = ((Src_8013B6A0_8013B6A0 *)src)->f2; - D_801E86C8[idx].f8 = ((Src_8013B6A0_8013B6A0 *)src)->f4; - D_801E86C8[idx].fC = val; -} - - - /* sizeof 0x1C stride */ -void func_8013B7AC(int a0) { - extern E_3B7AC_8013B7AC D_801E86C8[]; - D_801E86C8[a0].f0 = 0; } - - - - -void func_8013B7F4(s32 a0, s32 a1) { - - extern s32 D_801E8824; - func_8013B83C(a0, a1, D_801E8824); -} - - -extern s32 D_801E87C0; -extern s32 D_801E8824; - -void func_8013B83C(s32 a0, s32 a1, s32 a2) { - /* sizeof 0x1C */ - extern Ent_8013B83C D_801DAA08_e[] __asm__("D_801E86C8"); - extern s32 D_801E8778; - extern s32 D_801E877C; - extern s32 D_801E8780; - extern s32 D_801E87D0; - extern s32 D_801E8820; - extern s32 D_801E8828; - extern s16 D_800B9A0E; - extern void func_80052D90(s32 a0, void *a1); - extern void func_8013C08C(void *a0, s32 a1); - s32 i; - - D_801E87C0 = 0; - D_801E8780 = 0; - D_801E877C = 0; - D_801E8778 = 0; - func_80052D90(0, &D_801E87D0); - if (a0 == 0) { - return; - } - D_801E8820 = a2 + 500; - D_801E8824 = a2; - for (i = 0; i < 4; i++) { - D_801DAA08_e[i].f0 = 0; - D_801DAA08_e[i].f4 = D_801DAA08_e[i].f6 = D_801DAA08_e[i].f8 = 0x6000; - D_801DAA08_e[i].fC = 0x100; - D_801DAA08_e[i].f18 = 0; - } - switch (*(u8 *)a0) { - case 0x42: - if (D_800B9A0E == 0) { - func_8013BD74(&D_801E87C0, a0); - } else { - func_8013BD74(&D_801E87C0, a1); - } - D_801E8828 = 0; - break; - case 0x43: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 1; - break; - case 0x44: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 2; - break; - case 0x45: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 3; - break; - case 0x46: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 4; - break; - case 0x47: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 5; - break; - case 0x48: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 6; - break; - case 0x49: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 9; - break; - case 0x4A: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 0xC; - break; - case 0x4B: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 0xD; - break; - case 0x4C: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 0xE; - break; - case 0x4D: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 0xF; - break; - case 0x4E: - func_8013C08C(&D_801E87C0, a0); - D_801E8828 = 0x10; - break; - } -} - - - - -void func_8013BC7C(void *arg0) { - - extern void (*D_8018ABB4[])(void *); - D_8018ABB4[((S_8013BC7C_8013BC7C *)arg0)->f68](arg0); -} - - - -/* func_8013BCDC (ov_SC01_077_o0, -O0): guarded indirect call through D_8018B350. - * D_8018B350 is declared `extern s32` in the TU (canonical-sig layer) and holds a - * function pointer; read it as an s32, test non-null, cast to fn-ptr and call. - * Frame residual: target frame is 0x30 (saves $ra/$fp/$s0 at 0x28/0x24/0x20) — 16 - * bytes of var_size above the minimal 0x20. At -O0 (no DCE) an unused 16-byte local - * reserves exactly that var region (cookbook §42 lever 3, frame-pad induction) with - * zero body instructions. 22/22 byte-identical via rtu_match. */ -void func_8013BCDC(void) { - - extern s32 D_8018B350; - s32 pad[4]; - if (D_8018B350 != 0) { - ((void (*)(void))D_8018B350)(); - } -} - - - -void func_8013BD34(s32 a0) { - - extern s32 D_801E87C0; - func_8013BD74(&D_801E87C0, a0); -} - - - -extern s16 D_801E8678; -extern s16 D_801E867A; -extern s16 D_801E867C; -extern s16 D_801E867E; - -void func_8013BD74(void *a0, s32 a1) { - /* §100 draft-LOCAL types: file-scope typedefs are NOT carried by extract_unit/remap_hseq, so a - file-scope E_13BD74 banks the exemplar and then fails every sibling with `E_13BD74' - undeclared (the §94 type-carry class, measured on ov_SC01_000). Block scope travels with the - body and is byte-neutral (a type emits no code). */ - s32 *q; - s32 *p; - s32 i; - s32 unused0; - s32 unused1; - P_13BD74 *e; - P_13BD74 *end; - s32 unused2; - s32 base; - s32 unused3; - - D_801E8678 = -0xA0; - D_801E867A = -0x78; - D_801E867C = 0x140; - D_801E867E = 0xF0; - ((E_13BD74 *)a0)->f8 = (void *)a1; - ((E_13BD74 *)a0)->fC = (void *)(a1 + 8); - base = a1 + 0x4008; - if (((u8 *)a1)[4] == 0) { - p = (s32 *)((E_13BD74 *)a0)->fC; - for (i = 0; i < 0x1000; i++) { - if (*p != 0) { - *p += (s32)((E_13BD74 *)a0)->fC; - q = (s32 *)*p; - q[0] += (s32)q; - q[5] += (s32)q; - e = (P_13BD74 *)q[5]; - q[6] = q[6] * 12 + q[5]; - end = (P_13BD74 *)q[6]; - while (e < end) { - switch (e->code) { - case 0x24: - case 0x2C: - case 0x34: - case 0x3C: - *(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base; - break; - case 0x26: - case 0x2E: - case 0x36: - case 0x3E: - *(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base; - break; - } - e++; - } - } - p++; - } - ((u8 *)a1)[4] = 1; - } -} - - -DEFINE_func_8013C08C() /* dedup: shared engine-core @0x8013C08C (src/shared) */ - - - -void func_8013C0F8(int param_1) { - int iVar1; - int iVar2; - unsigned int local_18; - unsigned int local_14; - Bar *local_10; - Foo *local_c; - - iVar1 = param_1 + 0x14; - if (*(char *)(param_1 + 4) == '\0') { - iVar2 = iVar1 + *(int *)(param_1 + 0xc); - *(int *)(param_1 + 0xc) = iVar2; - *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + iVar1; - local_c = (Foo *)iVar1; - for (local_18 = 0; local_18 < *(unsigned int *)(param_1 + 8); local_18++, local_c++) { - local_c->field10 = local_c->field10 + iVar1; - local_10 = (Bar *)local_c->field10; - for (local_14 = 0; local_14 < local_c->count; local_14++, local_10++) { - switch (local_10->tag) { - case 0x24: - case 0x2c: - case 0x34: - case 0x3c: - *(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2; - break; - case 0x26: - case 0x2e: - case 0x36: - case 0x3e: - *(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2; - break; - } - } - } - *(unsigned char *)(param_1 + 4) = 1; - } -} - -DEFINE_func_8013C360() /* dedup: shared engine-core @0x8013C360 (src/shared) */ - - -void func_8013C414(s32 param_1, s32 param_2) -{ - s32 base10; /* 0x00 */ - s32 p; /* 0x04 */ - s32 q; /* 0x08 */ - s32 base4008; /* 0x0C */ - s32 lo; /* 0x10 */ - u32 i; /* 0x14 */ - s32 unused; /* 0x18 */ - s32 base8; /* 0x1C */ - T3Reloc *r; /* 0x20 */ - T3Reloc *s; /* 0x24 */ - - if (*(s32 *)(param_2 + 4) == 0) { - base10 = param_2 + 0x10; - base4008 = param_1 + 0x4008; - lo = *(s32 *)(param_2 + 0xC) + base10; - base8 = param_1 + 8; - p = base10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - *(s32 *)p = *(s32 *)p + base8; - if (*(s32 *)(p + 4) != 0) { - *(s32 *)(p + 4) = *(s32 *)(p + 4) + base10; - q = *(s32 *)(p + 4); - *(s32 *)q = *(s32 *)q + q; - *(s32 *)(q + 0x14) = *(s32 *)(q + 0x14) + q; - r = (T3Reloc *)*(s32 *)(q + 0x14); - *(s32 *)(q + 0x18) = *(s32 *)(q + 0x18) * 0xC + *(s32 *)(q + 0x14); - s = (T3Reloc *)*(s32 *)(q + 0x18); - while (r < s) { - switch (r->type) { - case 0x24: - case 0x2C: - case 0x34: - case 0x3C: - if ((*(u32 *)r) & 0x800000) { - (*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo; - } else { - (*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008; - } - break; - case 0x26: - case 0x2E: - case 0x36: - case 0x3E: - if ((*(u32 *)r) & 0x800000) { - (*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo; - } else { - (*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008; - } - break; - } - r++; - } - } - p = p + 0xC; - } - *(s32 *)(param_2 + 4) = 1; - p = param_2 + 0x10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - if (*(s32 *)(p + 8) == 0) { - *(s32 *)(p + 8) = *(s32 *)(*(s32 *)p); - } - p = p + 0xC; - } - } else { - p = param_2 + 0x10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - *(s32 *)(*(s32 *)p) = *(s32 *)(p + 8); - p = p + 0xC; - } - } -} - - - -void func_8013C938(void) { - - extern s32 D_801E87C0; - D_801E87C0 = 1; -} - - - -void func_8013C964(void) { - - extern s32 D_801E87C0; - D_801E87C0 = 0; -} - diff --git a/src/ov_SC03_119/ov_SC03_119.c b/src/ov_SC03_119/ov_SC03_119.c deleted file mode 100644 index 2c536501f..000000000 --- a/src/ov_SC03_119/ov_SC03_119.c +++ /dev/null @@ -1,864 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - -DEFINE_func_80128158() /* dedup: shared engine-core @0x80128158 (src/shared) */ - -DEFINE_func_80128178() /* dedup: shared engine-core @0x80128178 (src/shared) */ - -DEFINE_func_80128198() /* dedup: shared engine-core @0x80128198 (src/shared) */ - -DEFINE_func_801281B8() /* dedup: shared engine-core @0x801281B8 (src/shared) */ - -DEFINE_func_801281D8() /* dedup: shared engine-core @0x801281D8 (src/shared) */ - -DEFINE_func_801281F8() /* dedup: shared engine-core @0x801281F8 (src/shared) */ - - -extern s32 D_801D1CC4; - -s32 func_80128218(void) { - return D_801D1CC4; -} - - -DEFINE_func_80128228() /* dedup: shared engine-core @0x80128228 (src/shared) */ - -DEFINE_func_80128248() /* dedup: shared engine-core @0x80128248 (src/shared) */ - -DEFINE_func_80128268() /* dedup: shared engine-core @0x80128268 (src/shared) */ - - -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); - -void func_80128288(void) { - u32 v1; - v1 = D_800B99F6; - if (v1 < 9) { - D_80189C00[v1](); - } -} - - -DEFINE_func_801282CC() /* dedup: shared engine-core @0x801282CC (src/shared) */ - -DEFINE_func_801282EC() /* dedup: shared engine-core @0x801282EC (src/shared) */ - -DEFINE_func_8012832C() /* dedup: shared engine-core @0x8012832C (src/shared) */ - -DEFINE_func_80128420() /* dedup: shared engine-core @0x80128420 (src/shared) */ - -DEFINE_func_801284B8() /* dedup: shared engine-core @0x801284B8 (src/shared) */ - -DEFINE_func_801284F0() /* dedup: shared engine-core @0x801284F0 (src/shared) */ - -DEFINE_func_8012853C() /* dedup: shared engine-core @0x8012853C (src/shared) */ - -DEFINE_func_80128564() /* dedup: shared engine-core @0x80128564 (src/shared) */ - -DEFINE_func_801285D4() /* dedup: shared engine-core @0x801285D4 (src/shared) */ - - -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 func_80011A3C(void); -extern s32 D_801D2EEC; - -void func_801285E4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_800D18DC\n" - "lui $at, %%hi(D_801D2EEC)\n" - "sw $v0, %%lo(D_801D2EEC)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "jal func_8014607C\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801287B8\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D2EEC)\n" - "lw $v0, %%lo(D_801D2EEC)($v0)\n" - "nop\n" - "beqz $v0, 1f\n" - "nop\n" - "jal func_80011A3C\n" - "1:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_80128678() /* dedup: shared engine-core @0x80128678 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (handwritten full inline-asm scratchpad-stack-switch wrapper w/ branch) -/* - * HANDWRITTEN scratchpad-stack-switch dispatcher (same idiom as func_80128564 / - * the func_8014ED28 family): repoints $sp into the D-cache scratchpad stack held - * at *(0x1F8003FC), calls func_800D19F0, stashes its $v0 result through D_801D2EEC, - * restores $sp, then dispatches on the stored value: - * if (D_801D2EEC != 0) { func_8001903C(); func_80018FC8(); } - * else { func_8014607C(); func_801287B8(); } - * Manipulating $sp is not expressible in C; full inline asm (manages its own frame). - * - * NOTE (maspsx --aspsx-version=2.56): the inline ".set noreorder" is written with a - * SPACE, so maspsx's own is_reorder tracker stays True and it auto-fills EVERY - * jal/j/branch delay slot with a nop (GNU as honors noreorder and adds none). So do - * NOT write explicit delay-slot nops after jal/j/bne — that yields a double nop. - * bnez is written as `bne $v0,$zero` so maspsx recognizes it (bnez isn't in its - * branch set). The load-delay nop after `lw $v0,%lo(...)($v0)` is auto-inserted too. - * %hi/%lo escaped as %%hi/%%lo (bare % is an operand placeholder). - */ -void func_80128714(void) { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_800D19F0\n" - "lui $at, %%hi(D_801D2EEC)\n" - "sw $v0, %%lo(D_801D2EEC)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D2EEC)\n" - "lw $v0, %%lo(D_801D2EEC)($v0)\n" - "bne $v0, $zero, 1f\n" - "jal func_8014607C\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801287B8\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "j 2f\n" - "1:\n" - "jal func_8001903C\n" - "jal func_80018FC8\n" - "2:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - - - -// @class: remat -// @stuck: none — MATCH (62 ins). D_801D47E0 read needed the address REMATERIALIZED -// (lui;addiu;lw 0(reg), not the folded lui;lw %lo) AND pinned to $a0. volatile forces the -// remat; register __asm__("$4") forces the a0 allocation (gcc otherwise picks v0). Both levers -// required — pin-alone folds, volatile-alone lands in v0. - -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern u8 D_800B9A64; - -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); - -void func_801287B8(void) { - func_80129CF8(); - func_8017849C(); - ((void (*)(void *))func_8014FDF4)(&D_80126B58); - ((void (*)(void *))func_801505FC)(&D_80126B58); - func_801508B4(&D_80126B58); - func_80165E90(); - func_801627E8(); - func_80162B1C(); - func_80165CA0(); - func_80129010(); - func_8013CA14(); - func_800190AC(); - func_8012956C(); - func_8016E95C(); - func_801754A8(); - { - /* D_801D47E0 read: the target materializes &sym into $a0 then lw 0($a0) (not the folded - * lui;lw %lo). volatile forces the rematerialize; the $4 pin forces the a0 allocation. */ - register volatile s32 *p __asm__("$4") = &D_801D47E0; - if (*p == 0) { - func_8013BC7C(); - } - } - func_8013BCDC(); - func_801379FC(); - D_800B99DA++; - if (D_800B9A64 != 0) { - func_8001212C(); - } -} - - - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern s32 D_801D1CC4; -extern u8 D_800AEFD0; - -s32 func_801288B0(void) { - func_8001ABBC(0, 0, &D_800AEFD0, D_801D1CC4, 0); -} - - - -// @class: remat -// @stuck: none — MATCH. &D_800C7C60 CSE'd once via pointer local `p` so the same reg feeds the *p=0x60 store AND arg5; writing D_800C7C60=0x60 directly would emit a 2nd address materialization (+1 ins). Mirrors matched sibling func_80128998. - -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -int func_801288E8(int arg0) -{ - int *p = &D_800C7C60; - *p = 0x60; - D_800C7C64 = &D_800A2E20; - ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AF558, D_801D1CC4, p); -} - - - - -// @class: remat -// @stuck: none — MATCH (pointer-var forces single materialization of &D_800C7C60, reused as store base + arg5) - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern u8 D_800AF560; -extern s32 D_801D1CC4; - -s32 func_80128940(s32 _arg0) -{ - s32 *p = &D_800C7C60; - *p = 0x5E; - D_800C7C64 = &D_800A2E20; - ((void (*)(s32, s32, void *, s32, void *))func_8001ABBC)(0, 0, &D_800AF560, D_801D1CC4, p); -} - - - - -// @class: remat -// @stuck: none — MATCH. &D_800C7C60 must be CSE'd once (pointer local `p`) so the same reg feeds the *p=13 store AND arg5; writing D_800C7C60=13 directly emits a 2nd address materialization (+1 ins). - -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AECB0; -extern s32 D_801D1CC4; - -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - -s32 func_80128998(void) -{ - int *p = &D_800C7C60; - *p = 13; - D_800C7C64 = &D_800A2E20; - ((void (*)(int, int, int *, int, int *))func_8001ABBC)(0, 0, &D_800AECB0, D_801D1CC4, p); -} - - - -extern s32 D_801D1CC4; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_801289F0(void) { - func_8001ABBC(0, 0, &D_800AECB8, D_801D1CC4, 0); -} - - -extern void func_80011B7C(int); -extern void func_80011C10(void); -extern u16 D_800B99F6; -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); - -void func_80128A28(void) { - s16 temp_v0; - - switch (D_800B99F6) { /* irregular */ - case 1: - D_8018993C(); - /* fallthrough */ - case 0: - func_80011C10(); - return; - case 2: - temp_v0 = D_80189940(); - if (temp_v0 != 0) { - if (temp_v0 < 0) { - func_80011B7C(0); - D_800B9A00 = 1; - return; - } - func_80010DE0(); - } else { - return; - } - break; - } -} - - -extern u16 D_800B99F6; -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; - -void func_80128AF4(void) { - switch (D_800B99F6) { /* irregular */ - case 0: - D_801D2EE8 = func_8002AF08(); - func_80011C10(); - return; - case 1: - D_80189948(); - func_80011C10(); - return; - case 2: - if ((D_8018994C() << 0x10) != 0) { - if (D_801D2EE8 == 1) { - if (func_800CFBE8() != 0) { - func_800CFBBC(); - func_80011B7C(0x13); - } else { - func_80011B7C(4); - } - } else { - func_80010DE0(); - } - func_8002AEF8(); - } - return; - } -} - - -DEFINE_func_80128C14() /* dedup: shared engine-core @0x80128C14 (src/shared) */ - - - -extern CdFileLoc_80128C98 cdFileLocTable[]; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_80128C98(s32 arg0) { - - extern s16 D_80189C18[]; - s16 idx = D_80189C18[arg0]; - - if (idx >= 0) { - func_8001ABBC(0, 0, (u8 *)&cdFileLocTable[idx], D_801D1CC4, 0); - } else { - return 1; - } -} - - - - -extern CdFileLoc cdFileLocTable[]; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); - -s32 func_80128CFC(s32 arg0) { - - extern s16 D_80189C28[]; - s16 idx = D_80189C28[arg0]; - - if (idx >= 0) { - func_8001ABBC(0, 0, (u8 *)&cdFileLocTable[idx], D_801D1CC4, 0); - } else { - return 1; - } -} - - -DEFINE_func_80128D60() /* dedup: shared engine-core @0x80128D60 (src/shared) */ - -DEFINE_func_80128DB4() /* dedup: shared engine-core @0x80128DB4 (src/shared) */ - -DEFINE_func_80128EA8() /* dedup: shared engine-core @0x80128EA8 (src/shared) */ - -DEFINE_func_80128ED8() /* dedup: shared engine-core @0x80128ED8 (src/shared) */ - -extern M2C_UNK D_801D1CC8; - -void func_80128FAC(u16 *arg0) { - func_8001534C(4, &D_801D1CC8, 0x80, 0x90, 0, 0); - func_800153CC(5, *arg0, 0xA8, 0x90, 0x40, 0); -} - - -DEFINE_func_80129010() /* dedup: shared engine-core @0x80129010 (src/shared) */ - -DEFINE_func_801290DC() /* dedup: shared engine-core @0x801290DC (src/shared) */ - -DEFINE_func_8012913C() /* dedup: shared engine-core @0x8012913C (src/shared) */ - -DEFINE_func_801291C0() /* dedup: shared engine-core @0x801291C0 (src/shared) */ - -DEFINE_func_80129220() /* dedup: shared engine-core @0x80129220 (src/shared) */ - -DEFINE_func_80129248() /* dedup: shared engine-core @0x80129248 (src/shared) */ - -DEFINE_func_80129258() /* dedup: shared engine-core @0x80129258 (src/shared) */ - -DEFINE_func_8012927C() /* dedup: shared engine-core @0x8012927C (src/shared) */ - -DEFINE_func_801292C8() /* dedup: shared engine-core @0x801292C8 (src/shared) */ - -DEFINE_func_8012931C() /* dedup: shared engine-core @0x8012931C (src/shared) */ - -DEFINE_func_80129350() /* dedup: shared engine-core @0x80129350 (src/shared) */ - -DEFINE_func_80129374() /* dedup: shared engine-core @0x80129374 (src/shared) */ - -DEFINE_func_80129398() /* dedup: shared engine-core @0x80129398 (src/shared) */ - -DEFINE_func_80129428() /* dedup: shared engine-core @0x80129428 (src/shared) */ - -DEFINE_func_8012943C() /* dedup: shared engine-core @0x8012943C (src/shared) */ - -DEFINE_func_8012944C() /* dedup: shared engine-core @0x8012944C (src/shared) */ - - - - -extern s32 D_801D2EEC; - -extern void func_801299C8(); -extern void func_80015B6C(s32, s16, s32, s16, s32, s32, s32, s32, s32, s32); -extern void GsSortBg(s32 *, void *, u16, s32 *); -extern void GsSortFastBg(s32 *, void *, u16, s32 *); - -void func_8012956C(void) { - - extern s16 D_80114EE0; - extern u8 D_800B9A78; - extern u8 D_801D2EED[]; - extern u8 D_801D2EEE[]; - extern u8 D_801D2EF0[]; - extern u8 D_801D2EF1[]; - extern u8 D_801D2EF2[]; - extern u8 D_801D47C0; - extern u8 D_800AF630[]; - extern u8 D_800A6518[]; - register s32 *sp10 __asm__("$21"); - register u8 *afbase __asm__("$22"); - register s32 *sp0 __asm__("$23"); - Ent_956C *base; - s32 i; - s16 a1; - register u32 temp_a3 __asm__("$7"); - register u32 arg0 __asm__("$4"); - register u32 s __asm__("$2"); - register u32 s2 __asm__("$3"); - register u32 t6 __asm__("$8"); - s32 code; - - sp10 = (s32 *)0x1F800010; - sp0 = (s32 *)0x1F800000; - afbase = (u8 *)&D_800AF630; - if (D_80114EE0 == 0) { - return; - } - base = (Ent_956C *)&D_800B9A78; - __asm__("" : "=r"(base) : "0"(base)); - i = 0; - do { - s32 idx = i * 8 + 4; - code = base->f34; - if (code == 0x7FFE) { - goto case_7FFE; - } - if (code < 0x7FFF) { - a1 = i + 3; - if (code == 0x7FFD) { - goto case_7FFD; - } - goto do_default; - } - a1 = i + 3; - if (code != 0x7FFF) { - goto do_default; - } - goto next; - case_7FFD: - if (i == 0) { - func_801299C8(D_801D47C0, 1, base); - } - func_80015B6C(-0xA0, -0x74, 0x140, 0x8C, - D_801D2EF0[0], D_801D2EF0[1], D_801D2EF0[2], - D_801D2EF0[4], D_801D2EF0[5], D_801D2EF0[6]); - func_80015B6C(-0xA0, 0x18, 0x140, 0x3C, - D_801D2EF0[4], D_801D2EF0[5], D_801D2EF0[6], - D_801D2EF0[8], D_801D2EF0[9], D_801D2EF0[0xA]); - func_80015B6C(-0xA0, 0x54, 0x140, 0x28, - D_801D2EF0[8], D_801D2EF0[9], D_801D2EF0[0xA], - D_801D2EF0[0xC], D_801D2EF0[0xD], D_801D2EF0[0xE]); - goto next; - case_7FFE: - func_801299C8(D_801D47C0, (s16)(i * 2), base); - func_80015B6C(-0xA0, *(s16 *)&base->f3A, 0x140, base->f3E, - ((u8 *)&D_801D2EEC)[idx], D_801D2EED[idx], D_801D2EEE[idx], - D_801D2EF0[idx], D_801D2EF1[idx], D_801D2EF2[idx]); - goto next; - do_default: - __asm__(""); - arg0 = D_801D47C0; - s = base->f40; - temp_a3 = base->f38; - s += temp_a3; - base->f1C = s; - s2 = base->f42; - t6 = base->f3A; - s2 += t6; - base->f1E = s2; - ((void (*)(s32, s32, void *, s32))func_801299C8)(arg0, a1, base, temp_a3); - *(Blk16_956C *)sp0 = *(Blk16_956C *)base; - { - s32 *dst = sp10; - s32 *src = (s32 *)((u8 *)base + 0x10); - s32 *end = (s32 *)((u8 *)base + 0x30); - do { - *(Blk16_956C *)dst = *(Blk16_956C *)src; - src += 4; - dst += 4; - } while (src != end); - *dst = *src; - sp10[5] = (s32)sp0; - if (base->f36 == 0) { - GsSortFastBg(sp10, &D_800A6518[(*(u16 *)(afbase + 0xA3D2)) * 0x14], base->f34, dst); - } else { - GsSortBg(sp10, &D_800A6518[(*(u16 *)(afbase + 0xA3D2)) * 0x14], base->f34, dst); - } - } - next: - base += 1; - i += 1; - } while (i < 2); -} - - -DEFINE_func_801298F4() /* dedup: shared engine-core @0x801298F4 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (158 ins, match_one relocation-masked) -// -// Levers that landed it (2 iterations, 56 mismatched -> MATCH): -// 1. §43 K&R s16-param definition: `void f(a0,a1,a2) s16 a0; s16 a1; u8 *a2;` reproduces the -// in-place `sll $a0,$a0,16` zero-test on the arg reg + the raw-$a1 copy (`addu $a3,$a1,$zero`) -// stashed in the jtbl branch delay slot and RE-extended per use in the case body. -// 2. §18 array-of-struct %lo-fold: three sibling extern arrays D_801D2EF0/1/2[] (a 4-row x 3-comp -// RGB gradient table, stride 4) give `lui $at,%hi(sym); addu $at,$at,idx4; sb $v0,%lo(sym)($at)` -// for the indexed case and plain `lui/sb %lo(sym+k)` for the constant-index case. -// 3. Switch CASE-ORDER = source order: the jump table dispatches case 1 to the FIRST emitted block, -// so `case 1:` must be written before `case 0/2:` and `case 3/4:`. -// 4. THE residual (56 -> 0): the case-1 body must be written ROW-MAJOR (BE0[0],BE1[0],BE2[0], -// BE0[4],BE1[4],BE2[4],...), i.e. the natural table fill. gcc-2.7.2's sched pass then REORDERS -// the stores itself (BE0,BE1,BE5,BE8,BE4,BEC,BE9,BED,BE2,BE6,BEA,BEE) because the three arrays -// are distinct declarations => provably non-aliasing. Writing the source in the target's STORE -// order is the trap: it pins the b*255 / r*143 CSEs at their late store sites instead of letting -// them hoist into $a0/$v1 at rows 0/1, and mis-schedules the D_801D46E0 load. -// 5. Shift signedness: `u32` component locals give `srl` for r*5>>3 and g*25>>1; an explicit -// `(s32)(x * 255) >> 4` gives `sra` for the *255 / *143 / *45 terms (mixed within one block). - -extern u8 D_801D47DA; -extern u8 D_801D4702; -extern u8 D_801D46E0; -extern u8 D_801D2EF0[]; -extern u8 D_801D2EF1[]; -extern u8 D_801D2EF2[]; - -void func_801299C8(arg0, arg1, arg2) -s16 arg0; -s16 arg1; -u8 *arg2; -{ - u32 r; - u32 g; - u32 b; - s32 i; - - if (arg0 != 0) { - switch (arg1) { - case 1: - r = D_801D47DA; - g = D_801D4702; - b = D_801D46E0; - D_801D2EF0[0] = r * 5 >> 3; - D_801D2EF1[0] = g << 3; - D_801D2EF2[0] = (s32)(b * 255) >> 4; - D_801D2EF0[4] = (s32)(r * 143) >> 4; - D_801D2EF1[4] = g * 25 >> 1; - D_801D2EF2[4] = (s32)(b * 255) >> 4; - D_801D2EF0[8] = (s32)(r * 255) >> 4; - D_801D2EF1[8] = (s32)(g * 255) >> 4; - D_801D2EF2[8] = (s32)(b * 255) >> 4; - D_801D2EF0[12] = (s32)(r * 143) >> 4; - D_801D2EF1[12] = (s32)(g * 255) >> 4; - D_801D2EF2[12] = (s32)(b * 45) >> 2; - break; - case 0: - case 2: - i = arg1 * 4; - D_801D2EF0[i] = arg2[0x44] * D_801D47DA >> 4; - D_801D2EF1[i] = arg2[0x45] * D_801D4702 >> 4; - D_801D2EF2[i] = arg2[0x46] * D_801D46E0 >> 4; - i = (arg1 + 1) * 4; - D_801D2EF0[i] = arg2[0x47] * D_801D47DA >> 4; - D_801D2EF1[i] = arg2[0x48] * D_801D4702 >> 4; - D_801D2EF2[i] = arg2[0x49] * D_801D46E0 >> 4; - break; - case 3: - case 4: - arg2[0x20] = D_801D47DA << 3; - arg2[0x21] = D_801D4702 << 3; - arg2[0x22] = D_801D46E0 << 3; - break; - } - } -} - -DEFINE_func_80129C40() /* dedup: shared engine-core @0x80129C40 (src/shared) */ - -DEFINE_func_80129CF8() /* dedup: shared engine-core @0x80129CF8 (src/shared) */ - -DEFINE_func_80129FF4() /* dedup: shared engine-core @0x80129FF4 (src/shared) */ - -DEFINE_func_8012A018() /* dedup: shared engine-core @0x8012A018 (src/shared) */ - - -DEFINE_func_8012A048() /* dedup: shared engine-core @0x8012A048 (src/shared) */ - -DEFINE_func_8012A094() /* dedup: shared engine-core @0x8012A094 (src/shared) */ - -DEFINE_func_8012A0E0() /* dedup: shared engine-core @0x8012A0E0 (src/shared) */ - -DEFINE_func_8012A100() /* dedup: shared engine-core @0x8012A100 (src/shared) */ - -DEFINE_func_8012A110() /* dedup: shared engine-core @0x8012A110 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (78 ins, relocation-masked). Register pins ($2-$5 reused for -// the D_x200-x20C words then the D_x220-x226 halfwords; $6-$10 held across for the -// D_x228/x22A/x294/x298/x29A tail) force the frameless 9-deep allocation the default -// -O2 pre-reload scheduler otherwise blows to a 3-reg spill (all 720 stmt orders spill -// without the pins). A single zero-byte scheduling/memory barrier after the 4 word -// stores stops gcc hoisting the first 8-byte block copy above them. - - - - -DEFINE_func_8012A1BC() /* dedup: shared engine-core @0x8012A1BC (src/shared) */ - - -DEFINE_func_8012A2F4() /* dedup: shared engine-core @0x8012A2F4 (src/shared) */ - -DEFINE_func_8012A304() /* dedup: shared engine-core @0x8012A304 (src/shared) */ - - - - - - - - - -DEFINE_func_8012A328() /* dedup: shared engine-core @0x8012A328 (src/shared) */ - - -DEFINE_func_8012A418() /* dedup: shared engine-core @0x8012A418 (src/shared) */ - - - - - -DEFINE_func_8012A464() /* dedup: shared engine-core @0x8012A464 (src/shared) */ - - -DEFINE_func_8012A4BC() /* dedup: shared engine-core @0x8012A4BC (src/shared) */ - -extern void func_8012A598(void *a0); -void func_8012A568(void (*a0)(void)) { - func_8012A598(a0); - a0(); -} - - -DEFINE_func_8012A598() /* dedup: shared engine-core @0x8012A598 (src/shared) */ - -DEFINE_func_8012A5F8() /* dedup: shared engine-core @0x8012A5F8 (src/shared) */ - -DEFINE_func_8012A62C() /* dedup: shared engine-core @0x8012A62C (src/shared) */ - -DEFINE_func_8012A68C() /* dedup: shared engine-core @0x8012A68C (src/shared) */ - -DEFINE_func_8012A6D0() /* dedup: shared engine-core @0x8012A6D0 (src/shared) */ - -DEFINE_func_8012A758() /* dedup: shared engine-core @0x8012A758 (src/shared) */ - -DEFINE_func_8012A79C() /* dedup: shared engine-core @0x8012A79C (src/shared) */ - -DEFINE_func_8012A7D4() /* dedup: shared engine-core @0x8012A7D4 (src/shared) */ - -DEFINE_func_8012A828() /* dedup: shared engine-core @0x8012A828 (src/shared) */ - -DEFINE_func_8012A860() /* dedup: shared engine-core @0x8012A860 (src/shared) */ - -DEFINE_func_8012A8B0() /* dedup: shared engine-core @0x8012A8B0 (src/shared) */ - -DEFINE_func_8012A8E8() /* dedup: shared engine-core @0x8012A8E8 (src/shared) */ - -DEFINE_func_8012A908() /* dedup: shared engine-core @0x8012A908 (src/shared) */ - -DEFINE_func_8012A988() /* dedup: shared engine-core @0x8012A988 (src/shared) */ - - -extern void func_8012AAAC(void *arg0); - -void func_8012AAAC(void *arg0) { - void *ptr; - s32 link; - s32 next; - s32 saved; - s32 cnt; - s32 back; - s32 head; - - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xBFFF); - ptr = (void *) (M2C_FIELD(arg0, s32 *, 0x90) + (M2C_FIELD(arg0, s32 *, 0x94) * 8)); - if (M2C_FIELD(ptr, s16 *, 4) < 0) { - switch (M2C_FIELD(ptr, s16 *, 4)) { - case -2: - link = M2C_FIELD(arg0, s32 *, 0x9C); - if (link == 0) { - M2C_FIELD(arg0, s16 *, 0x98) = 0; - break; - } - goto pop; - case -1: - link = M2C_FIELD(arg0, s32 *, 0x9C); - if (link != 0) { -pop: - back = M2C_FIELD(arg0, s16 *, 0x9A); - M2C_FIELD(arg0, s32 *, 0x90) = link; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, s32 *, 0x94) = back; - func_8012AAAC(arg0); - break; - } - M2C_FIELD(arg0, s32 *, 0x94) = 0; - func_8012AAAC(arg0); - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) | 0x4000); - break; - case -4: - head = M2C_FIELD(ptr, s32 *, 0); - M2C_FIELD(arg0, s32 *, 0x94) = 0; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, s32 *, 0x90) = head; - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xF9FF); - func_8012AAAC(arg0); - break; - case -3: - cnt = M2C_FIELD(arg0, s32 *, 0x94) + 1; - M2C_FIELD(arg0, s32 *, 0x94) = cnt; - if (M2C_FIELD(arg0, s32 *, 0x9C) != 0) { - func_8012AAAC(arg0); - break; - } - saved = M2C_FIELD(arg0, s32 *, 0x90); - next = M2C_FIELD(ptr, s32 *, 0); - M2C_FIELD(arg0, s32 *, 0x94) = 0; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, s32 *, 0x90) = next; - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xF9FF); - func_8012AAAC(arg0); - M2C_FIELD(arg0, s32 *, 0x9C) = saved; - M2C_FIELD(arg0, s16 *, 0x9A) = (s16) cnt; - break; - case -50: - M2C_FIELD(arg0, s32 *, 0x94) = M2C_FIELD(arg0, s32 *, 0x94) + 1; - func_8012AAAC(arg0); - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) | 0x2000); - break; - case -5: - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) | 0x400); - M2C_FIELD(arg0, s32 *, 0x94) = M2C_FIELD(arg0, s32 *, 0x94) - 1; - func_8012AAAC(arg0); - break; - } - } else { - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s32 *, 0x20) = M2C_FIELD(ptr, s32 *, 0); - M2C_FIELD(arg0, s16 *, 0x98) = M2C_FIELD(ptr, s16 *, 4); - } -} - - -extern void func_8012AAAC(); -extern M2C_UNK D_80189C94; - -void func_8012ACA0(void *arg0) { - M2C_FIELD(arg0, M2C_UNK **, 0x90) = &D_80189C94; - M2C_FIELD(arg0, s32 *, 0x94) = 0; - M2C_FIELD(arg0, s32 *, 0x9C) = 0; - M2C_FIELD(arg0, s16 *, 0x9A) = 0; - M2C_FIELD(arg0, u16 *, 0x72) = (u16) (M2C_FIELD(arg0, u16 *, 0x72) & 0xF9FF); - ((void (*)(void))func_8012AAAC)(); -} diff --git a/src/ov_SC03_119/ov_SC03_119_after.c b/src/ov_SC03_119/ov_SC03_119_after.c deleted file mode 100644 index 87410c3b8..000000000 --- a/src/ov_SC03_119/ov_SC03_119_after.c +++ /dev/null @@ -1,3096 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* func_801457A4 (@0x801457A4) is an -O0 function; its definition lives in ov_SC03_119_o0b.c (the -O0 - * whale object, whose .text ends exactly at this address). Mirrors ov_SC01_077. §116 */ -DEFINE_func_801458E0() /* dedup: shared engine-core @0x801458E0 (src/shared) */ - -DEFINE_func_801458E8() /* dedup: shared engine-core @0x801458E8 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (else-if >= ladder + §5a cross-jump barrier in the first D_8018BEA0 block defeats the tail-merge of the two identical D_8018BEA0 loads; barrier emits zero bytes, load-bearing) - -extern s32 func_80029504(void); -extern void func_800D185C(u8 *a0); -extern void func_80145B24(void); - -extern u8 D_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; - -void func_80145934(void) { - s32 v; - void *p; - - v = func_80029504(); - if (v >= 0x6A4) { - p = &D_8018BEA0; - /* §5a cross-jump barrier — LOAD-BEARING: keeps this D_8018BEA0 load from being - * tail-merged with the v>=0x384 D_8018BEA0 load below (emits zero machine code). */ - __asm__ __volatile__("" ::: "memory"); - } else if (v >= 0x5DC) { - p = &D_8018BE10; - } else if (v >= 0x578) { - p = &D_8018BDEC; - } else if (v >= 0x514) { - p = &D_8018BDC8; - } else if (v >= 0x384) { - p = &D_8018BEA0; - } else if (v >= 0x258) { - p = &D_8018BE7C; - } else if (v >= 0xC8) { - p = &D_8018BE58; - } else if (v >= 0xA) { - p = &D_8018BE34; - } else { - p = &D_8018BDA4; - } - ((void (*)(void *))func_800D185C)(p); - func_80145B24(); -} - - - - -// @class: other -// @stuck: none — MATCH (62 ins). Sibling func_80145934 (byte-matched, same shape) is the template. Tail is default-then-conditional-override (matches asm .L80145AEC), and a §5a cross-jump barrier prevents the two identical D_8018BF30 loads (>=0x6A4 and >=0x384) from being tail-merged. - -extern s32 func_80029504(void); -extern void func_800D185C(u8 *a0); -extern void func_80145B24(void); - -extern u8 D_8018BF30; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BDA4; -extern u8 D_8018BEC4; - -void func_80145A2C(void) { - s32 v; - void *p; - - v = func_80029504(); - if (v >= 0x6A4) { - p = &D_8018BF30; - /* §5a cross-jump barrier — LOAD-BEARING: keeps this D_8018BF30 load from being - * tail-merged with the v>=0x384 D_8018BF30 load below (emits zero machine code). */ - __asm__ __volatile__("" ::: "memory"); - } else if (v >= 0x5DC) { - p = &D_8018BE10; - } else if (v >= 0x578) { - p = &D_8018BDEC; - } else if (v >= 0x514) { - p = &D_8018BDC8; - } else if (v >= 0x384) { - p = &D_8018BF30; - } else if (v >= 0x258) { - p = &D_8018BF0C; - } else if (v >= 0xC8) { - p = &D_8018BEE8; - } else { - p = &D_8018BDA4; - if (v >= 0xA) { - p = &D_8018BEC4; - } - } - ((void (*)(void *))func_800D185C)(p); - func_80145B24(); -} - - -DEFINE_func_80145B24() /* dedup: shared engine-core @0x80145B24 (src/shared) */ - -DEFINE_func_80145BF8() /* dedup: shared engine-core @0x80145BF8 (src/shared) */ - -DEFINE_func_80145C54() /* dedup: shared engine-core @0x80145C54 (src/shared) */ - -// @class: struct -// @stuck: 2 residuals — (1) target RELOADS global ptr D_80126B78 before each of its 5 field accesses (f28/f18/f1a/f1c/f2c); gcc-2.7.2 CSEs the single pointer load in every clean-C form I tried (int-cast, (s8*)/(s32) M2C_FIELD, struct*), keeping ONE load. volatile forces reloads but hoists them + leaves delay-slot nops the target fills (target is NOT volatile). (2) frame 0x20 not 0x18: target reserves an unused 8-byte stack local @0x10 (address-taken local — reproduced, but every code-free escape optimizes away and a visible escape corrupts the func_80145EE8(0) arg). Structure/order/values/callees all match; only the alias-driven reload chain + the phantom frame local remain. Family exemplar (~130 overlays). - - - -s32 func_80145CEC() { - extern int func_80016714(); - extern int func_8001C320(); - extern int func_801552F4(); - extern int func_80147084(); - extern int func_80147098(); - extern int func_801470AC(); - extern int func_80149210(); - extern int func_8014BE9C(); - extern int func_8016533C(); - extern int func_801627C0(); - extern int func_80162AF4(); - extern int func_80165C78(); - extern int func_801468C8(); - extern int func_80145EE8(); - extern int func_8014C968(); - extern int func_8014C6D0(); - extern int func_80165938(); - extern int func_80153C8C(); - extern int func_800290BC(); - extern s32 D_800AFAE8; - extern s32 D_800DE2A4; - extern s32 D_801152C8; - extern s32 D_8018B318; - extern s32 * D_80126B78[1]; - extern s32 * D_800AF7C8; - extern s32 * D_80126B90; - extern s16 D_80126BB8; - extern s16 D_80126BBA; - extern s16 D_80126BBC; - extern s16 D_80126BC0; - extern s16 D_80126BC2; - extern s16 D_80126BC4; - extern s16 D_80126BC8; - extern s16 D_80126BCA; - extern s16 D_80126BCC; - extern s16 D_80126D10; - extern s16 D_80126D12; - extern s16 D_80126C4E; - extern s16 currentLocationId; - extern s32 D_8011F9C4; - extern s32 D_8012707C; - extern s32 D_8011DB10; - - unsigned int uVar1; - s32 pad[2]; - (void)&pad; - - func_80016714(&D_80126B58, 0x254); - D_80126B78[0] = (s32 *)&D_800AFAE8; - D_800AF7C8 = (s32 *)&D_801152C8; - func_8001C320(&D_800AFAE8, &D_800DE2A4); - *(s32 *)((s32)D_80126B78[0] + 0x28) = 0x7fff7fff; - D_80126B90 = (s32 *)&D_8018B318; - *(u16 *)((s32)D_80126B78[0] + 0x18) = 0x1000; - D_80126BC8 = 0x1000; - D_80126BC0 = 0x1000; - D_80126BB8 = 0x1000; - *(u16 *)((s32)D_80126B78[0] + 0x1a) = 0x1000; - D_80126BCA = 0x1000; - D_80126BC2 = 0x1000; - D_80126BBA = 0x1000; - *(u16 *)((s32)D_80126B78[0] + 0x1c) = 0x1000; - D_80126BCC = 0x1000; - D_80126BC4 = 0x1000; - D_80126BBC = 0x1000; - D_80126D12 = 0x1000; - D_80126D10 = 0x1000; - D_80126C4E = 0x1000; - func_801552F4(&D_80126B58); - func_80147084(&D_80126B58); - func_80147098(&D_80126B58); - func_801470AC(&D_80126B58); - *(u16 *)((s32)D_80126B78[0] + 0x2c) = *(u16 *)((s32)D_80126B78[0] + 0x2c) | 0x50; - func_80149210(&D_80126B58, 8); - func_8014BE9C(); - func_8016533C(); - func_801627C0(); - func_80162AF4(); - func_80165C78(); - func_801468C8(&D_80126B58, 1); - if (currentLocationId != 0x30a2 && currentLocationId != 0x30a5) { - func_80145EE8(0); - } - func_8014C968(); - func_8014C6D0(); - D_8011F9C4 = 0; - func_80165938(); - func_80153C8C(); - D_8012707C = 0; - D_8011DB10 = 0; - uVar1 = ((int(*)())func_80029504)(); - if (uVar1 >= 10) { - func_800290BC(); - } -} - - - - -// @class: schedule -// @stuck: branch layout — 3-way dispatch on param_1; trying switch form - -extern s32 func_80029178(s32 arg); -extern void func_80146014(s32 a0); - -extern unsigned char D_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; - -void func_80145EE8(s32 param_1) -{ - switch (param_1) { - case 0: - if (((unsigned char (*)(int))func_80029178)(0x1F) != 0) { - ((void (*)(void *))func_80146014)(D_8018B328); - } - if (((unsigned char (*)(int))func_80029178)(0x21) != 0) { - ((void (*)(void *))func_80146014)(D_8018B358); - } - if (((unsigned char (*)(int))func_80029178)(0x1E) != 0) { - ((void (*)(void *))func_80146014)(D_8018B3A8); - } - if (((unsigned char (*)(int))func_80029178)(0x1D) != 0) { - ((void (*)(void *))func_80146014)(D_8018B3D8); - } - if (((unsigned char (*)(int))func_80029178)(0x20) == 0) { - return; - } - ((void (*)(void *))func_80146014)(D_8018B408); - break; - case 1: - ((void (*)(void *))func_80146014)(D_8018B328); - ((void (*)(void *))func_80146014)(D_8018B358); - ((void (*)(void *))func_80146014)(D_8018B3A8); - ((void (*)(void *))func_80146014)(D_8018B3D8); - ((void (*)(void *))func_80146014)(D_8018B408); - break; - } -} - - -DEFINE_func_80146014() /* dedup: shared engine-core @0x80146014 (src/shared) */ - -DEFINE_func_80146074() /* dedup: shared engine-core @0x80146074 (src/shared) */ - - -extern s32 func_80146128(void); -extern void func_80146360(void); -extern void func_801463A0(); - -void func_8014607C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_80146128\n" - "lui $at, %%hi(D_801D3078)\n" - "sw $v0, %%lo(D_801D3078)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3078)\n" - "lw $v0, %%lo(D_801D3078)($v0)\n" - "nop\n" - "beqz $v0, .L80146114\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_80146360\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "addu $t0, $v1, $zero\n" - "sw $sp, 0($t0)\n" - "addiu $t0, $t0, -4\n" - "addu $sp, $t0, $zero\n" - "jal func_801463A0\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - ".L80146114:\n" - "nop\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_80146128() /* dedup: shared engine-core @0x80146128 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (fnptr-table idiom: D_8018B458[u8 idx](&arg)) -extern void (*D_8018B458[])(void *); -extern u8 D_80126BA4; - -void func_80146360(void) -{ - /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every - LATER function in this TU, which blocks a byte-true decl of a different type. - Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ - extern s32 D_80126B58; - D_8018B458[D_80126BA4](&D_80126B58); -} - - - - - - /* size 8, align 1 -> unaligned block move */ - -DEFINE_func_801463A0() /* dedup: shared engine-core @0x801463A0 (src/shared) */ - - -DEFINE_func_80146534() /* dedup: shared engine-core @0x80146534 (src/shared) */ - -DEFINE_func_80146554() /* dedup: shared engine-core @0x80146554 (src/shared) */ - -DEFINE_func_80146578() /* dedup: shared engine-core @0x80146578 (src/shared) */ - -DEFINE_func_8014659C() /* dedup: shared engine-core @0x8014659C (src/shared) */ - -DEFINE_func_801465C0() /* dedup: shared engine-core @0x801465C0 (src/shared) */ - -DEFINE_func_801465E4() /* dedup: shared engine-core @0x801465E4 (src/shared) */ - -DEFINE_func_80146608() /* dedup: shared engine-core @0x80146608 (src/shared) */ - -DEFINE_func_801466B4() /* dedup: shared engine-core @0x801466B4 (src/shared) */ - -DEFINE_func_801466F0() /* dedup: shared engine-core @0x801466F0 (src/shared) */ - - - -DEFINE_func_80146750() /* dedup: shared engine-core @0x80146750 (src/shared) */ - - -DEFINE_func_8014680C() /* dedup: shared engine-core @0x8014680C (src/shared) */ - -DEFINE_func_801468C8() /* dedup: shared engine-core @0x801468C8 (src/shared) */ - -DEFINE_func_80146924() /* dedup: shared engine-core @0x80146924 (src/shared) */ - -DEFINE_func_80146994() /* dedup: shared engine-core @0x80146994 (src/shared) */ - -DEFINE_func_801469C8() /* dedup: shared engine-core @0x801469C8 (src/shared) */ - -extern void func_80146AFC(void*); -void aF80146A6C(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6) __asm__("func_80146A6C"); -void aF80146A6C(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6) -{ - u8 sp[0x18]; - *(s16 *)(sp + 0x0) = a0; - *(s32 *)(sp + 0x8) = a1; - *(s16 *)(sp + 0x2) = a2; - *(s16 *)(sp + 0x4) = a3; - *(s16 *)(sp + 0x6) = a4; - *(s32 *)(sp + 0xC) = a5; - *(s32 *)(sp + 0x10) = a6; - ((s32 (*)(void *))func_80146AFC)(sp); -} - - -DEFINE_func_80146AB4() /* dedup: shared engine-core @0x80146AB4 (src/shared) */ - -extern s32 func_80146B9C(void * arg0); - -/* func_80146AFC — ASCENDING twin of the byte-proven DEFINE_func_80146B9C() - * in src/shared/engine_core.h (cookbook §71: find the already-matched sibling first). - * Same 0x58-stride slot table (base D_8011D030), same 7-store copy body in the same - * order, same $a2/$a1 giv pair. 80146B9C walks DOWN; this one walks UP, so the guard - * is `p < end`, end = p + 0xA50 (30 slots x 0x58). - * - * DECAY ROOT CAUSE (this redraft): the stored backlog draft had been rewritten to - * `void func_80146AFC(...)`, which drops BOTH `return 0` paths' `addu $v0,$zero,$zero` - * and the hit path's `j .L80146B94` => LENGTH-DRIFT -2 (38 vs 40) plus $v0/$v1 regalloc - * drift on the final lw/sw pair. Restoring the s32 return type (the fleet spelling the - * banked sibling func_80146B9C already uses) restores MATCH at 40/40. - * - * RECONCILE (2026-08-01) — the whole-binary gate failed with - * ov_SC01_077_after.c:592: conflicting types for `D_8011D030' (previous decl :564) - * TWO file-scope collisions were present; both are fixed HERE, with NO edit to - * src/shared/engine_core.h and NO change to the generated code (re-verified MATCH - * after each step): - * - * 1. D_8011D030 (the reported one). DEFINE_func_801469C8() emits - * `extern s32 D_8011D030;` at FILE scope (engine_core.h:10811, above the - * `s32 func_801469C8(...) {` line), and this TU expands that macro at :564 — - - extern s32 D_8011D030; - * i.e. before the splice point :570. The draft's `extern u16` therefore - * redeclared it incompatibly at :592. Conformed to the TU's `extern s32`. - * Codegen-neutral: the sole use is `(u8 *)&D_8011D030`, an address-of, so the - * declared object type never reaches a load/store width (cookbook §20). - * - * 2. func_80146AFC ITSELF (latent, would have surfaced next). DEFINE_func_8014C010() - * (:13510) and DEFINE_func_8014AD30() (:13524) each emit a file-scope - * `extern void func_80146AFC(void *a0);`, and this TU expands them at :1386 and - * :1541 — after the splice — so an `s32 func_80146AFC` definition collides on the - * RETURN axis. Fixed with the §37/§124 ASM-LABEL ALIAS: the C identifier is - * aF80146AFC, the emitted label is func_80146AFC, so the canonical void decl and - * this s32 definition never share a namespace. Callers discard the result, so the - * void-typed call sites stay codegen-identical. - * - * Both were reproduced and then cleared against the real cpp+cc1-2.7.2 pair using a - * synthetic copy of this TU's declaration environment (.run/uc2/_recon_probe_80146AFC.c): - * the pre-reconcile spelling emits exactly the gate's error pair; the spelling below - * compiles clean. - * - * ORACLE: tools/match_one.py func_80146AFC --c .run/uc2/func_80146AFC.c - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_after -> MATCH (40 ins) - */ - - -s32 aF80146AFC(void *arg0) __asm__("func_80146AFC"); - -s32 aF80146AFC(void *arg0) -{ - register u8 *p __asm__("$6"); - register u8 *q __asm__("$5"); - u8 *end; - p = (u8 *)&D_8011D030; - end = p + 0xA50; - if ((u32)p < (u32)end) { - q = p + 0x30; - do { - if (*(u16 *)p == 0) { - *(s32 *)(q + 0x4) = *(s32 *)((u8 *)arg0 + 0x8); - *(s16 *)p = *(u16 *)((u8 *)arg0 + 0x0); - *(s16 *)(q - 0x2A) = *(u16 *)((u8 *)arg0 + 0x2); - *(s16 *)(q - 0x26) = *(u16 *)((u8 *)arg0 + 0x4); - *(s16 *)(q - 0x22) = *(u16 *)((u8 *)arg0 + 0x6); - *(s32 *)(q - 0x4) = *(s32 *)((u8 *)arg0 + 0xC); - *(s32 *)(q + 0x0) = *(s32 *)((u8 *)arg0 + 0x10); - return (s32)p; - } - p += 0x58; - q += 0x58; - } while ((u32)p < (u32)end); - } - return 0; -} - - -DEFINE_func_80146B9C() /* dedup: shared engine-core @0x80146B9C (src/shared) */ - -DEFINE_func_80146C3C() /* dedup: shared engine-core @0x80146C3C (src/shared) */ - -DEFINE_func_80146C98() /* dedup: shared engine-core @0x80146C98 (src/shared) */ - -DEFINE_func_80146CA0() /* dedup: shared engine-core @0x80146CA0 (src/shared) */ - -DEFINE_func_80146CB4() /* dedup: shared engine-core @0x80146CB4 (src/shared) */ - -DEFINE_func_80146CC8() /* dedup: shared engine-core @0x80146CC8 (src/shared) */ - -DEFINE_func_80146D30() /* dedup: shared engine-core @0x80146D30 (src/shared) */ - -DEFINE_func_80146D80() /* dedup: shared engine-core @0x80146D80 (src/shared) */ - -DEFINE_func_80146D90() /* dedup: shared engine-core @0x80146D90 (src/shared) */ - -DEFINE_func_80146DB8() /* dedup: shared engine-core @0x80146DB8 (src/shared) */ - -DEFINE_func_80146DE8() /* dedup: shared engine-core @0x80146DE8 (src/shared) */ - -DEFINE_func_80146DF8() /* dedup: shared engine-core @0x80146DF8 (src/shared) */ - -DEFINE_func_80146E90() /* dedup: shared engine-core @0x80146E90 (src/shared) */ - -DEFINE_func_80146E98() /* dedup: shared engine-core @0x80146E98 (src/shared) */ - -DEFINE_func_80146EC0() /* dedup: shared engine-core @0x80146EC0 (src/shared) */ - -DEFINE_func_80146F58() /* dedup: shared engine-core @0x80146F58 (src/shared) */ - -DEFINE_func_80146FC4() /* dedup: shared engine-core @0x80146FC4 (src/shared) */ - -DEFINE_func_8014704C() /* dedup: shared engine-core @0x8014704C (src/shared) */ - -DEFINE_func_80147054() /* dedup: shared engine-core @0x80147054 (src/shared) */ - -DEFINE_func_80147060() /* dedup: shared engine-core @0x80147060 (src/shared) */ - -DEFINE_func_8014706C() /* dedup: shared engine-core @0x8014706C (src/shared) */ - -DEFINE_func_80147078() /* dedup: shared engine-core @0x80147078 (src/shared) */ - -DEFINE_func_80147084() /* dedup: shared engine-core @0x80147084 (src/shared) */ - -DEFINE_func_8014708C() /* dedup: shared engine-core @0x8014708C (src/shared) */ - -DEFINE_func_80147098() /* dedup: shared engine-core @0x80147098 (src/shared) */ - -DEFINE_func_801470A0() /* dedup: shared engine-core @0x801470A0 (src/shared) */ - -DEFINE_func_801470AC() /* dedup: shared engine-core @0x801470AC (src/shared) */ - -DEFINE_func_801470B4() /* dedup: shared engine-core @0x801470B4 (src/shared) */ - -DEFINE_func_801470C0() /* dedup: shared engine-core @0x801470C0 (src/shared) */ - -DEFINE_func_80147118() /* dedup: shared engine-core @0x80147118 (src/shared) */ - -DEFINE_func_80147264() /* dedup: shared engine-core @0x80147264 (src/shared) */ - -DEFINE_func_80147290() /* dedup: shared engine-core @0x80147290 (src/shared) */ - -DEFINE_func_801472B4() /* dedup: shared engine-core @0x801472B4 (src/shared) */ - -DEFINE_func_801472C8() /* dedup: shared engine-core @0x801472C8 (src/shared) */ - -DEFINE_func_801472DC() /* dedup: shared engine-core @0x801472DC (src/shared) */ - -DEFINE_func_801472F0() /* dedup: shared engine-core @0x801472F0 (src/shared) */ - -DEFINE_func_80147300() /* dedup: shared engine-core @0x80147300 (src/shared) */ - -DEFINE_func_80147324() /* dedup: shared engine-core @0x80147324 (src/shared) */ - -DEFINE_func_80147364() /* dedup: shared engine-core @0x80147364 (src/shared) */ - -DEFINE_func_801473DC() /* dedup: shared engine-core @0x801473DC (src/shared) */ - -DEFINE_func_801473EC() /* dedup: shared engine-core @0x801473EC (src/shared) */ - -DEFINE_func_80147460() /* dedup: shared engine-core @0x80147460 (src/shared) */ - -DEFINE_func_80147478() /* dedup: shared engine-core @0x80147478 (src/shared) */ - -DEFINE_func_801474D8() /* dedup: shared engine-core @0x801474D8 (src/shared) */ - -DEFINE_func_801474EC() /* dedup: shared engine-core @0x801474EC (src/shared) */ - -DEFINE_func_80147514() /* dedup: shared engine-core @0x80147514 (src/shared) */ - -DEFINE_func_80147628() /* dedup: shared engine-core @0x80147628 (src/shared) */ - -DEFINE_func_80147718() /* dedup: shared engine-core @0x80147718 (src/shared) */ - -DEFINE_func_80147788() /* dedup: shared engine-core @0x80147788 (src/shared) */ - -DEFINE_func_801477A8() /* dedup: shared engine-core @0x801477A8 (src/shared) */ - -DEFINE_func_801477C8() /* dedup: shared engine-core @0x801477C8 (src/shared) */ - -DEFINE_func_801477E8() /* dedup: shared engine-core @0x801477E8 (src/shared) */ - -DEFINE_func_80147814() /* dedup: shared engine-core @0x80147814 (src/shared) */ - -DEFINE_func_80147860() /* dedup: shared engine-core @0x80147860 (src/shared) */ - -DEFINE_func_801478B8() /* dedup: shared engine-core @0x801478B8 (src/shared) */ - -DEFINE_func_80147928() /* dedup: shared engine-core @0x80147928 (src/shared) */ - -DEFINE_func_80147948() /* dedup: shared engine-core @0x80147948 (src/shared) */ - -DEFINE_func_8014799C() /* dedup: shared engine-core @0x8014799C (src/shared) */ - -DEFINE_func_801479BC() /* dedup: shared engine-core @0x801479BC (src/shared) */ - -DEFINE_func_80147A10() /* dedup: shared engine-core @0x80147A10 (src/shared) */ - -DEFINE_func_80147A30() /* dedup: shared engine-core @0x80147A30 (src/shared) */ - -DEFINE_func_80147A84() /* dedup: shared engine-core @0x80147A84 (src/shared) */ - -DEFINE_func_80147AAC() /* dedup: shared engine-core @0x80147AAC (src/shared) */ - -DEFINE_func_80147AD4() /* dedup: shared engine-core @0x80147AD4 (src/shared) */ - -DEFINE_func_80147B18() /* dedup: shared engine-core @0x80147B18 (src/shared) */ - -DEFINE_func_80147B5C() /* dedup: shared engine-core @0x80147B5C (src/shared) */ - -DEFINE_func_80147C30() /* dedup: shared engine-core @0x80147C30 (src/shared) */ - -DEFINE_func_80147CC8() /* dedup: shared engine-core @0x80147CC8 (src/shared) */ - -DEFINE_func_80147D38() /* dedup: shared engine-core @0x80147D38 (src/shared) */ - -DEFINE_func_80147DC0() /* dedup: shared engine-core @0x80147DC0 (src/shared) */ - -DEFINE_func_80147E44() /* dedup: shared engine-core @0x80147E44 (src/shared) */ - -DEFINE_func_80147F50() /* dedup: shared engine-core @0x80147F50 (src/shared) */ - -DEFINE_func_80147F78() /* dedup: shared engine-core @0x80147F78 (src/shared) */ - -DEFINE_func_80148038() /* dedup: shared engine-core @0x80148038 (src/shared) */ - -DEFINE_func_80148094() /* dedup: shared engine-core @0x80148094 (src/shared) */ - -DEFINE_func_801483E8() /* dedup: shared engine-core @0x801483E8 (src/shared) */ - -DEFINE_func_801484B0() /* dedup: shared engine-core @0x801484B0 (src/shared) */ - -DEFINE_func_801484E8() /* dedup: shared engine-core @0x801484E8 (src/shared) */ - -DEFINE_func_80148534() /* dedup: shared engine-core @0x80148534 (src/shared) */ - -DEFINE_func_8014856C() /* dedup: shared engine-core @0x8014856C (src/shared) */ - -DEFINE_func_801485B8() /* dedup: shared engine-core @0x801485B8 (src/shared) */ - -DEFINE_func_80148634() /* dedup: shared engine-core @0x80148634 (src/shared) */ - -DEFINE_func_80148648() /* dedup: shared engine-core @0x80148648 (src/shared) */ - -DEFINE_func_801487F4() /* dedup: shared engine-core @0x801487F4 (src/shared) */ - -DEFINE_func_80148800() /* dedup: shared engine-core @0x80148800 (src/shared) */ - -DEFINE_func_8014880C() /* dedup: shared engine-core @0x8014880C (src/shared) */ - -DEFINE_func_80148818() /* dedup: shared engine-core @0x80148818 (src/shared) */ - -DEFINE_func_80148824() /* dedup: shared engine-core @0x80148824 (src/shared) */ - -DEFINE_func_801488A8() /* dedup: shared engine-core @0x801488A8 (src/shared) */ - -DEFINE_func_8014891C() /* dedup: shared engine-core @0x8014891C (src/shared) */ - -DEFINE_func_80148980() /* dedup: shared engine-core @0x80148980 (src/shared) */ - -DEFINE_func_801489E8() /* dedup: shared engine-core @0x801489E8 (src/shared) */ - -DEFINE_func_80148A48() /* dedup: shared engine-core @0x80148A48 (src/shared) */ - -DEFINE_func_80148AAC() /* dedup: shared engine-core @0x80148AAC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (71 ins). switch binary-tree; s1 angle = pin-source-of-copy ($5 temp + retie); 2nd-block double-load + 0x80-clobber via $v1/$v0/$a0 pins + lazy hi-pin reusing dead c80 reg - -extern s32 ratan2(s32 a0, s32 a1); - -int func_80148AFC(void *a0) { - - extern s32 D_801151D4; - extern ActorFn D_8018B460[]; - s32 p = (s32)a0; - s32 iVar5 = *(s32 *)(p + 0x20); - register s32 tmp __asm__("$5") = (ratan2(*(s32 *)(D_801151D4 + 0x44) - *(s32 *)(D_801151D4 + 0x50), - *(s32 *)(D_801151D4 + 0x48) - *(s32 *)(D_801151D4 + 0x3C)) - 0x400) & 0xFFF; - s32 sVar3; - u8 bVar1; - __asm__("" : "=r"(tmp) : "0"(tmp)); - sVar3 = tmp; - bVar1 = *(u8 *)(p + 0xA9); - - switch (bVar1) { - case 0x41: - return D_8018B460[*(u16 *)(p + 0xAA) >> 12](a0) & 0xFF; - case 0x53: - case 0x73: - { - register u32 bb __asm__("$3"); - register s32 c80 __asm__("$2") = 0x80; - register s32 lo __asm__("$4"); - register s32 hi __asm__("$2"); - bb = *(u16 *)(p + 0xAE); - lo = bb & 0xFF; - if (lo != c80 || (hi = bb >> 8) != 0x80) { - s32 sVar4; - __asm__ __volatile__("" : : : "memory"); - sVar4 = ratan2((*(u16 *)(p + 0xAE) & 0xFF) - 0x80, 0x80 - (*(u16 *)(p + 0xAE) >> 8)); - *(u16 *)(iVar5 + 0x12) = (sVar3 + sVar4) & 0xFFF; - return 1; - } - return 0; - } - } -} - - -DEFINE_func_80148C18() /* dedup: shared engine-core @0x80148C18 (src/shared) */ - -DEFINE_func_80148C20() /* dedup: shared engine-core @0x80148C20 (src/shared) */ - -DEFINE_func_80148C34() /* dedup: shared engine-core @0x80148C34 (src/shared) */ - -DEFINE_func_80148C4C() /* dedup: shared engine-core @0x80148C4C (src/shared) */ - -DEFINE_func_80148C64() /* dedup: shared engine-core @0x80148C64 (src/shared) */ - -DEFINE_func_80148C7C() /* dedup: shared engine-core @0x80148C7C (src/shared) */ - -DEFINE_func_80148C84() /* dedup: shared engine-core @0x80148C84 (src/shared) */ - -DEFINE_func_80148C9C() /* dedup: shared engine-core @0x80148C9C (src/shared) */ - -DEFINE_func_80148CB4() /* dedup: shared engine-core @0x80148CB4 (src/shared) */ - -DEFINE_func_80148CCC() /* dedup: shared engine-core @0x80148CCC (src/shared) */ - -DEFINE_func_80148CE4() /* dedup: shared engine-core @0x80148CE4 (src/shared) */ - -DEFINE_func_80148CEC() /* dedup: shared engine-core @0x80148CEC (src/shared) */ - -DEFINE_func_80148CF4() /* dedup: shared engine-core @0x80148CF4 (src/shared) */ - -DEFINE_func_80148D0C() /* dedup: shared engine-core @0x80148D0C (src/shared) */ - -DEFINE_func_80148D24() /* dedup: shared engine-core @0x80148D24 (src/shared) */ - -DEFINE_func_80148D3C() /* dedup: shared engine-core @0x80148D3C (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (68 ins) -extern s32 ratan2(s32 a0, s32 a1); - -s32 func_80148D44(void) { - - extern s32 D_801151D4; - extern u8 D_80126C01; - extern u16 D_80126C02; - extern u16 D_80126C06; - extern s32 D_8018B4A0[]; - register s32 ang __asm__("$16"); - register s32 a __asm__("$4"); - s32 p; - s32 res; - s32 d; - - p = D_801151D4; - a = (ratan2(*(s32 *)(p + 0x44) - *(s32 *)(p + 0x50), - *(s32 *)(p + 0x48) - *(s32 *)(p + 0x3c)) - 0x400) & 0xFFF; - d = (s32)D_80126C01; - __asm__ __volatile__("" : : "r"(a)); - ang = a; - if (d == 0x53) { - goto final; - } - if (d < 0x54) { - if (d == 0x41) { - goto call; - } - return 0x41; - } - if (d != 0x73) { - return 0x73; - } - goto final; -call: - return (s32)(s16)((s16 (*)())(D_8018B4A0[D_80126C02 >> 0xc]))(); -final: - { - u32 e = D_80126C06; - if (((e & 0xff) == 0x80) && ((e >> 8) == (e & 0xff))) { - return -1; - } - __asm__ __volatile__("" : : : "memory"); - res = (ang + ratan2((D_80126C06 & 0xff) - 0x80, 0x80 - (D_80126C06 >> 8))) & 0xFFF; - } - return res; -} - - - -extern s32 ratan2(s32, s32); -/* derived from asm: lui/addu/lw %lo(D_8018B4E0) indexed by (u16>>12)*4, then jalr with no args; - * the result is sign-extended from 16 bits => the table's functions return s16. */ - -s32 func_80148E54(s32 arg0) { - - extern s32 D_801151D4; - extern s16 (*D_8018B4E0[])(); - register s32 tmp __asm__("$4") = (ratan2(*(s32 *)(D_801151D4 + 0x44) - *(s32 *)(D_801151D4 + 0x50), - *(s32 *)(D_801151D4 + 0x48) - *(s32 *)(D_801151D4 + 0x3C)) - 0x400) & 0xFFF; - s32 ang; - __asm__("" : "=r"(tmp) : "0"(tmp)); - ang = tmp; - - switch (*(u8 *)(arg0 + 0xA9)) { - case 0x41: - return D_8018B4E0[*(u16 *)(arg0 + 0xAA) >> 12](); - case 0x53: - case 0x73: - if ((*(u16 *)(arg0 + 0xAE) & 0xFF) == 0x80 && (*(u16 *)(arg0 + 0xAE) >> 8) == 0x80) { - return -1; - } - return (ang + ratan2((*(u16 *)(arg0 + 0xAE) & 0xFF) - 0x80, - 0x80 - (*(u16 *)(arg0 + 0xAE) >> 8))) & 0xFFF; - } -} - - -DEFINE_func_80148F60() /* dedup: shared engine-core @0x80148F60 (src/shared) */ - -DEFINE_func_80148F68() /* dedup: shared engine-core @0x80148F68 (src/shared) */ - -DEFINE_func_80148F74() /* dedup: shared engine-core @0x80148F74 (src/shared) */ - -DEFINE_func_80148F80() /* dedup: shared engine-core @0x80148F80 (src/shared) */ - -DEFINE_func_80148F8C() /* dedup: shared engine-core @0x80148F8C (src/shared) */ - -DEFINE_func_80148F98() /* dedup: shared engine-core @0x80148F98 (src/shared) */ - -DEFINE_func_80148FA0() /* dedup: shared engine-core @0x80148FA0 (src/shared) */ - -DEFINE_func_80148FAC() /* dedup: shared engine-core @0x80148FAC (src/shared) */ - -DEFINE_func_80148FB8() /* dedup: shared engine-core @0x80148FB8 (src/shared) */ - -DEFINE_func_80148FC4() /* dedup: shared engine-core @0x80148FC4 (src/shared) */ - -DEFINE_func_80148FD0() /* dedup: shared engine-core @0x80148FD0 (src/shared) */ - -DEFINE_func_80148FD8() /* dedup: shared engine-core @0x80148FD8 (src/shared) */ - -DEFINE_func_80148FE0() /* dedup: shared engine-core @0x80148FE0 (src/shared) */ - -DEFINE_func_80148FEC() /* dedup: shared engine-core @0x80148FEC (src/shared) */ - -DEFINE_func_80148FF8() /* dedup: shared engine-core @0x80148FF8 (src/shared) */ - -DEFINE_func_80149004() /* dedup: shared engine-core @0x80149004 (src/shared) */ - -DEFINE_func_8014900C() /* dedup: shared engine-core @0x8014900C (src/shared) */ - -DEFINE_func_80149020() /* dedup: shared engine-core @0x80149020 (src/shared) */ - -DEFINE_func_80149034() /* dedup: shared engine-core @0x80149034 (src/shared) */ - -DEFINE_func_80149048() /* dedup: shared engine-core @0x80149048 (src/shared) */ - -DEFINE_func_8014905C() /* dedup: shared engine-core @0x8014905C (src/shared) */ - -DEFINE_func_80149078() /* dedup: shared engine-core @0x80149078 (src/shared) */ - -DEFINE_func_801490E0() /* dedup: shared engine-core @0x801490E0 (src/shared) */ - -DEFINE_func_801490E8() /* dedup: shared engine-core @0x801490E8 (src/shared) */ - -DEFINE_func_801490F0() /* dedup: shared engine-core @0x801490F0 (src/shared) */ - -DEFINE_func_801490F8() /* dedup: shared engine-core @0x801490F8 (src/shared) */ - -DEFINE_func_80149184() /* dedup: shared engine-core @0x80149184 (src/shared) */ - -DEFINE_func_801491C4() /* dedup: shared engine-core @0x801491C4 (src/shared) */ - -DEFINE_func_80149204() /* dedup: shared engine-core @0x80149204 (src/shared) */ - -DEFINE_func_80149210() /* dedup: shared engine-core @0x80149210 (src/shared) */ - -DEFINE_func_80149228() /* dedup: shared engine-core @0x80149228 (src/shared) */ - -DEFINE_func_80149284() /* dedup: shared engine-core @0x80149284 (src/shared) */ - -DEFINE_func_80149290() /* dedup: shared engine-core @0x80149290 (src/shared) */ - -DEFINE_func_80149350() /* dedup: shared engine-core @0x80149350 (src/shared) */ - -DEFINE_func_80149374() /* dedup: shared engine-core @0x80149374 (src/shared) */ - -DEFINE_func_801493D0() /* dedup: shared engine-core @0x801493D0 (src/shared) */ - -DEFINE_func_8014942C() /* dedup: shared engine-core @0x8014942C (src/shared) */ - -DEFINE_func_80149450() /* dedup: shared engine-core @0x80149450 (src/shared) */ - -DEFINE_func_801494CC() /* dedup: shared engine-core @0x801494CC (src/shared) */ - -DEFINE_func_80149544() /* dedup: shared engine-core @0x80149544 (src/shared) */ - -DEFINE_func_80149584() /* dedup: shared engine-core @0x80149584 (src/shared) */ - -DEFINE_func_801495C4() /* dedup: shared engine-core @0x801495C4 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (34 ins). param_2 pinned to $s0; the two stack out-bufs (in@0x10, -// mid@0x20,out@0x18) would be HOISTED into $s1 across call1 (frame 0x38, +s1 save) — break -// that with a per-use CSE-break barrier (`__asm__("":"=r"(p):"0"(p))`) on &in, mid(call1), -// mid(call2) so each rematerializes `addiu reg,$sp,off` (frame 0x30, only $s0 saved). The -// two independent arg setups (`lw $a0,0x20($a0)` vs `addiu $a2,$sp,0x20`) tie in sched2 — -// force target order with VOLATILE barriers in textual order pin(&in)->mtx-load->mid. - -DEFINE_func_8014964C() /* dedup: shared engine-core @0x8014964C (src/shared) */ - - -DEFINE_func_801496D4() /* dedup: shared engine-core @0x801496D4 (src/shared) */ - -DEFINE_func_80149704() /* dedup: shared engine-core @0x80149704 (src/shared) */ - -DEFINE_func_80149724() /* dedup: shared engine-core @0x80149724 (src/shared) */ - -DEFINE_func_80149744() /* dedup: shared engine-core @0x80149744 (src/shared) */ - -DEFINE_func_80149788() /* dedup: shared engine-core @0x80149788 (src/shared) */ - - -DEFINE_func_801497A8() /* dedup: shared engine-core @0x801497A8 (src/shared) */ - - -DEFINE_func_80149864() /* dedup: shared engine-core @0x80149864 (src/shared) */ - -DEFINE_func_80149884() /* dedup: shared engine-core @0x80149884 (src/shared) */ - -DEFINE_func_801498C0() /* dedup: shared engine-core @0x801498C0 (src/shared) */ - -DEFINE_func_801498E0() /* dedup: shared engine-core @0x801498E0 (src/shared) */ - -DEFINE_func_80149954() /* dedup: shared engine-core @0x80149954 (src/shared) */ - -DEFINE_func_80149A64() /* dedup: shared engine-core @0x80149A64 (src/shared) */ - -DEFINE_func_80149AA8() /* dedup: shared engine-core @0x80149AA8 (src/shared) */ - -DEFINE_func_80149AD4() /* dedup: shared engine-core @0x80149AD4 (src/shared) */ - -DEFINE_func_80149B14() /* dedup: shared engine-core @0x80149B14 (src/shared) */ - -DEFINE_func_80149B54() /* dedup: shared engine-core @0x80149B54 (src/shared) */ - -DEFINE_func_80149BAC() /* dedup: shared engine-core @0x80149BAC (src/shared) */ - -DEFINE_func_80149BEC() /* dedup: shared engine-core @0x80149BEC (src/shared) */ - -DEFINE_func_80149C08() /* dedup: shared engine-core @0x80149C08 (src/shared) */ - -DEFINE_func_80149C94() /* dedup: shared engine-core @0x80149C94 (src/shared) */ - -DEFINE_func_80149CB4() /* dedup: shared engine-core @0x80149CB4 (src/shared) */ - -DEFINE_func_80149CD4() /* dedup: shared engine-core @0x80149CD4 (src/shared) */ - -DEFINE_func_80149D10() /* dedup: shared engine-core @0x80149D10 (src/shared) */ - -DEFINE_func_80149D9C() /* dedup: shared engine-core @0x80149D9C (src/shared) */ - -DEFINE_func_80149DD8() /* dedup: shared engine-core @0x80149DD8 (src/shared) */ - -DEFINE_func_80149E94() /* dedup: shared engine-core @0x80149E94 (src/shared) */ - -DEFINE_func_80149F2C() /* dedup: shared engine-core @0x80149F2C (src/shared) */ - -DEFINE_func_80149FA8() /* dedup: shared engine-core @0x80149FA8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (38 ins) -extern s32 D_8018B520[]; -extern u8 D_80078E78[]; -extern s16 currentLocationId; - -s32 func_80149FB0(s32 a0) { - s32 *p = &D_8018B520[0]; - register s32 v __asm__("$3") = *p; - u8 *q = &D_80078E78[0]; - s32 loc; - - if (v != 0) { - loc = currentLocationId; - p = p + 1; - do { - if (loc == v) { - goto ret0; - } - v = *p; - p = p + 1; - } while (v != 0); - } - - if ((*(u32 *)(a0 + 0x44) & 0x400) != 0) { - return 0; - } - if (*(s16 *)(a0 + 0x1C8) != 0) { - return 0; - } - if ((*(u16 *)(a0 + 0xAC) & 0x100) == 0) { - ret0: - return 0; - } - v = q[0x48]; - q[0x48] = v ^ 0x80; - return 1; -} - - - -// @class: struct -// @stuck: none — MATCH (90 ins). Keys: (1) single Loc struct pins the 0x10..0x25 stack -// region (frame 0x40) for the func_8012F14C/func_80135260 out-params; (2) loop is a -// while(1) with the 6 checks &&-chained in the loop CONDITION + the "found" block AFTER -// the loop (fall-through) so the success path is a forward j .L8014A190 — matches the -// target CFG (Ghidra-C while-form); (3) the base &D_801202A0 must be RECOMPUTED inside -// the loop, not hoisted: `s0 = (s32)D_801202A0 + s2;` + the in-place re-tie barrier -// `__asm__ __volatile__("":"=r"(s0):"0"(s0));` (cookbook §21) forces the lui/addiu/addu -// per iteration instead of caching the symbol addr in $s4 (kills 1 ins + $s4); (4) u32 -// counter -> sltiu; (5) bef8-fail uses `goto ret0;` to a ret0 label placed AFTER the -// success block -> gives the bef8 v0=0 its own .L8014A18C block (delay slot = a1 setup); -// (6) setup-store SOURCE order a30,a2e,a2c,a1e,a20,a1c makes the scheduler hold a2c(0xE) -// in $v1 (loaded early, stored last at 0x14) while a2e(0xA) stores immediately at 0x12. - -DEFINE_func_8014A048() /* dedup: shared engine-core @0x8014A048 (src/shared) */ - - -DEFINE_func_8014A1B0() /* dedup: shared engine-core @0x8014A1B0 (src/shared) */ - -DEFINE_func_8014A218() /* dedup: shared engine-core @0x8014A218 (src/shared) */ - -DEFINE_func_8014A238() /* dedup: shared engine-core @0x8014A238 (src/shared) */ - -DEFINE_func_8014A2E4() /* dedup: shared engine-core @0x8014A2E4 (src/shared) */ - -DEFINE_func_8014A380() /* dedup: shared engine-core @0x8014A380 (src/shared) */ - -DEFINE_func_8014A3E0() /* dedup: shared engine-core @0x8014A3E0 (src/shared) */ - -DEFINE_func_8014A454() /* dedup: shared engine-core @0x8014A454 (src/shared) */ - -DEFINE_func_8014A4B4() /* dedup: shared engine-core @0x8014A4B4 (src/shared) */ - -DEFINE_func_8014A4FC() /* dedup: shared engine-core @0x8014A4FC (src/shared) */ - -DEFINE_func_8014A51C() /* dedup: shared engine-core @0x8014A51C (src/shared) */ - -DEFINE_func_8014A59C() /* dedup: shared engine-core @0x8014A59C (src/shared) */ - -DEFINE_func_8014A638() /* dedup: shared engine-core @0x8014A638 (src/shared) */ - -DEFINE_func_8014A674() /* dedup: shared engine-core @0x8014A674 (src/shared) */ - -DEFINE_func_8014A680() /* dedup: shared engine-core @0x8014A680 (src/shared) */ - -DEFINE_func_8014A69C() /* dedup: shared engine-core @0x8014A69C (src/shared) */ - -DEFINE_func_8014A6A8() /* dedup: shared engine-core @0x8014A6A8 (src/shared) */ - -DEFINE_func_8014A6C4() /* dedup: shared engine-core @0x8014A6C4 (src/shared) */ - -DEFINE_func_8014A71C() /* dedup: shared engine-core @0x8014A71C (src/shared) */ - - - - - - - - - -DEFINE_func_8014A738() /* dedup: shared engine-core @0x8014A738 (src/shared) */ - - -DEFINE_func_8014A830() /* dedup: shared engine-core @0x8014A830 (src/shared) */ - -DEFINE_func_8014A850() /* dedup: shared engine-core @0x8014A850 (src/shared) */ - -DEFINE_func_8014AA04() /* dedup: shared engine-core @0x8014AA04 (src/shared) */ - -DEFINE_func_8014AA28() /* dedup: shared engine-core @0x8014AA28 (src/shared) */ - -DEFINE_func_8014AB5C() /* dedup: shared engine-core @0x8014AB5C (src/shared) */ - -DEFINE_func_8014AB7C() /* dedup: shared engine-core @0x8014AB7C (src/shared) */ - -DEFINE_func_8014ABF0() /* dedup: shared engine-core @0x8014ABF0 (src/shared) */ - -DEFINE_func_8014AC10() /* dedup: shared engine-core @0x8014AC10 (src/shared) */ - -DEFINE_func_8014ACC0() /* dedup: shared engine-core @0x8014ACC0 (src/shared) */ - -DEFINE_func_8014ACE8() /* dedup: shared engine-core @0x8014ACE8 (src/shared) */ - -DEFINE_func_8014AD30() /* dedup: shared engine-core @0x8014AD30 (src/shared) */ - -DEFINE_func_8014AD7C() /* dedup: shared engine-core @0x8014AD7C (src/shared) */ - -DEFINE_func_8014ADA8() /* dedup: shared engine-core @0x8014ADA8 (src/shared) */ - -DEFINE_func_8014ADE0() /* dedup: shared engine-core @0x8014ADE0 (src/shared) */ - -DEFINE_func_8014B00C() /* dedup: shared engine-core @0x8014B00C (src/shared) */ - -DEFINE_func_8014B034() /* dedup: shared engine-core @0x8014B034 (src/shared) */ - -DEFINE_func_8014B084() /* dedup: shared engine-core @0x8014B084 (src/shared) */ - -DEFINE_func_8014B12C() /* dedup: shared engine-core @0x8014B12C (src/shared) */ - -DEFINE_func_8014B154() /* dedup: shared engine-core @0x8014B154 (src/shared) */ - -DEFINE_func_8014B160() /* dedup: shared engine-core @0x8014B160 (src/shared) */ - -DEFINE_func_8014B190() /* dedup: shared engine-core @0x8014B190 (src/shared) */ - -DEFINE_func_8014B2A8() /* dedup: shared engine-core @0x8014B2A8 (src/shared) */ - -DEFINE_func_8014B2D0() /* dedup: shared engine-core @0x8014B2D0 (src/shared) */ - -DEFINE_func_8014B2F8() /* dedup: shared engine-core @0x8014B2F8 (src/shared) */ - -DEFINE_func_8014B310() /* dedup: shared engine-core @0x8014B310 (src/shared) */ - -DEFINE_func_8014B33C() /* dedup: shared engine-core @0x8014B33C (src/shared) */ - -DEFINE_func_8014B350() /* dedup: shared engine-core @0x8014B350 (src/shared) */ - -DEFINE_func_8014B4C4() /* dedup: shared engine-core @0x8014B4C4 (src/shared) */ - -DEFINE_func_8014B4D4() /* dedup: shared engine-core @0x8014B4D4 (src/shared) */ - -DEFINE_func_8014B504() /* dedup: shared engine-core @0x8014B504 (src/shared) */ - -DEFINE_func_8014B598() /* dedup: shared engine-core @0x8014B598 (src/shared) */ - -DEFINE_func_8014B5B0() /* dedup: shared engine-core @0x8014B5B0 (src/shared) */ - -DEFINE_func_8014B5B8() /* dedup: shared engine-core @0x8014B5B8 (src/shared) */ - -DEFINE_func_8014B5C4() /* dedup: shared engine-core @0x8014B5C4 (src/shared) */ - -DEFINE_func_8014B5D0() /* dedup: shared engine-core @0x8014B5D0 (src/shared) */ - -DEFINE_func_8014B5D8() /* dedup: shared engine-core @0x8014B5D8 (src/shared) */ - -DEFINE_func_8014B6F0() /* dedup: shared engine-core @0x8014B6F0 (src/shared) */ - -DEFINE_func_8014B768() /* dedup: shared engine-core @0x8014B768 (src/shared) */ - -DEFINE_func_8014B7A4() /* dedup: shared engine-core @0x8014B7A4 (src/shared) */ - -DEFINE_func_8014B944() /* dedup: shared engine-core @0x8014B944 (src/shared) */ - -DEFINE_func_8014BB0C() /* dedup: shared engine-core @0x8014BB0C (src/shared) */ - -DEFINE_func_8014BB24() /* dedup: shared engine-core @0x8014BB24 (src/shared) */ - -DEFINE_func_8014BC0C() /* dedup: shared engine-core @0x8014BC0C (src/shared) */ - -DEFINE_func_8014BC44() /* dedup: shared engine-core @0x8014BC44 (src/shared) */ - -DEFINE_func_8014BC80() /* dedup: shared engine-core @0x8014BC80 (src/shared) */ - -DEFINE_func_8014BCC0() /* dedup: shared engine-core @0x8014BCC0 (src/shared) */ - -DEFINE_func_8014BCEC() /* dedup: shared engine-core @0x8014BCEC (src/shared) */ - -DEFINE_func_8014BD24() /* dedup: shared engine-core @0x8014BD24 (src/shared) */ - -DEFINE_func_8014BD60() /* dedup: shared engine-core @0x8014BD60 (src/shared) */ - -DEFINE_func_8014BD98() /* dedup: shared engine-core @0x8014BD98 (src/shared) */ - -DEFINE_func_8014BDC8() /* dedup: shared engine-core @0x8014BDC8 (src/shared) */ - -DEFINE_func_8014BDE0() /* dedup: shared engine-core @0x8014BDE0 (src/shared) */ - -DEFINE_func_8014BDE8() /* dedup: shared engine-core @0x8014BDE8 (src/shared) */ - -DEFINE_func_8014BE78() /* dedup: shared engine-core @0x8014BE78 (src/shared) */ - -DEFINE_func_8014BE9C() /* dedup: shared engine-core @0x8014BE9C (src/shared) */ - -DEFINE_func_8014BEC0() /* dedup: shared engine-core @0x8014BEC0 (src/shared) */ - -DEFINE_func_8014BEF8() /* dedup: shared engine-core @0x8014BEF8 (src/shared) */ - -DEFINE_func_8014BF18() /* dedup: shared engine-core @0x8014BF18 (src/shared) */ - -DEFINE_func_8014BF48() /* dedup: shared engine-core @0x8014BF48 (src/shared) */ - -DEFINE_func_8014BF6C() /* dedup: shared engine-core @0x8014BF6C (src/shared) */ - -DEFINE_func_8014BF8C() /* dedup: shared engine-core @0x8014BF8C (src/shared) */ - -DEFINE_func_8014BFB0() /* dedup: shared engine-core @0x8014BFB0 (src/shared) */ - -DEFINE_func_8014BFD4() /* dedup: shared engine-core @0x8014BFD4 (src/shared) */ - -DEFINE_func_8014BFF4() /* dedup: shared engine-core @0x8014BFF4 (src/shared) */ - -DEFINE_func_8014C010() /* dedup: shared engine-core @0x8014C010 (src/shared) */ - -DEFINE_func_8014C050() /* dedup: shared engine-core @0x8014C050 (src/shared) */ - -DEFINE_func_8014C088() /* dedup: shared engine-core @0x8014C088 (src/shared) */ - -DEFINE_func_8014C0C8() /* dedup: shared engine-core @0x8014C0C8 (src/shared) */ - -DEFINE_func_8014C118() /* dedup: shared engine-core @0x8014C118 (src/shared) */ - -DEFINE_func_8014C168() /* dedup: shared engine-core @0x8014C168 (src/shared) */ - - - -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018B5A8[]; - -void func_8014C1A0(s32 arg0, s32 arg1) { - func_8014C1C8(arg0, arg1, D_8018B5A8); -} - - -DEFINE_func_8014C1C8() /* dedup: shared engine-core @0x8014C1C8 (src/shared) */ - -DEFINE_func_8014C278() /* dedup: shared engine-core @0x8014C278 (src/shared) */ - -DEFINE_func_8014C2B0() /* dedup: shared engine-core @0x8014C2B0 (src/shared) */ - -DEFINE_func_8014C308() /* dedup: shared engine-core @0x8014C308 (src/shared) */ - -DEFINE_func_8014C3A4() /* dedup: shared engine-core @0x8014C3A4 (src/shared) */ - -DEFINE_func_8014C3D0() /* dedup: shared engine-core @0x8014C3D0 (src/shared) */ - -DEFINE_func_8014C43C() /* dedup: shared engine-core @0x8014C43C (src/shared) */ - - -/* §37/§73/§124 asm-label alias: the fleet canon declares this `extern void` (engine_core.h, inside 8 - * DEFINE_func_* macros); the byte-true body must return s32. Aliasing the C name sidesteps the - * RETURN-axis conflict with no header edit. This line MUST travel with the body. */ -s32 aF8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4) __asm__("func_8014C4AC"); - -DEFINE_func_8014C4AC() /* dedup: shared engine-core @0x8014C4AC (src/shared) */ - - - -DEFINE_func_8014C568() /* dedup: shared engine-core @0x8014C568 (src/shared) */ - - -DEFINE_func_8014C59C() /* dedup: shared engine-core @0x8014C59C (src/shared) */ - - -extern u8 D_8018B5B0; -extern s32 func_8014C5FC(s32 a0, s32 a1, void *a2); - -s16 func_8014C5D0(s32 a0, s32 a1) { - return func_8014C5FC(a0, a1, &D_8018B5B0); -} - - -DEFINE_func_8014C5FC() /* dedup: shared engine-core @0x8014C5FC (src/shared) */ - -DEFINE_func_8014C6AC() /* dedup: shared engine-core @0x8014C6AC (src/shared) */ - -DEFINE_func_8014C6C0() /* dedup: shared engine-core @0x8014C6C0 (src/shared) */ - -DEFINE_func_8014C6D0() /* dedup: shared engine-core @0x8014C6D0 (src/shared) */ - -DEFINE_func_8014C6E0() /* dedup: shared engine-core @0x8014C6E0 (src/shared) */ - - - -// @class: schedule -// @stuck: none — MATCH (match_one 91/91) -// -// Levers used (all byte-gated on ov_SC07_006): -// 1. §struct 8-byte alignment-1 struct copy `*(M8_8014C6F4*)(a+0x164) = *(M8_8014C6F4*)(p+0x10)` -// -> the lwl/lwr,lwl/lwr,swl/swr,swl/swr block (engine_types.h M8_xxx convention). -// 2. §17 base-pointer cache: `u8 *p = D_80078E78;` (NOT a direct D_80078E78[0x49]) so gcc pins -// the base into callee-saved $s1 and hoists the la into the prologue (live across the jal). -// 3. §17 register pins: the search result `e` MUST be $v0 and the limit `lim` $v1, else -// local-alloc swaps the loop IV/limit pair ($v1<->$a0) and coalesces `e` into the IV. -// 4. DELAY-SLOT lever (new): writing the compare constant as its own pre-loop statement -// (`want = 0x22;`) instead of the literal `0x22` inside the loop test. With the literal, -// loop.c hoists the `li $a1,0x22` into the loop PREHEADER (after the duplicated entry test), -// so reorg.c's guard branch has nothing local to take and instead COPIES the branch-target -// insn (`addu $v0,$zero,$zero`) into its delay slot and redirects past it — a +1 shift that -// also lets the loop-back branch steal the same insn (nop -> move). Materialising the -// constant in the block BEFORE the entry test makes fill_simple_delay_slots take it from -// the preceding insns, reproducing `beqz $v0,.L8014C7F4 / addiu $a1,$zero,0x22` and leaving -// the loop-back delay slot a nop. `want` needs no pin — gcc lands it in $a1 on its own. - - -DEFINE_func_8014C6F4() /* dedup: shared engine-core @0x8014C6F4 (src/shared) */ - - -DEFINE_func_8014C860() /* dedup: shared engine-core @0x8014C860 (src/shared) */ - -DEFINE_func_8014C88C() /* dedup: shared engine-core @0x8014C88C (src/shared) */ - - -DEFINE_func_8014C8C8() /* dedup: shared engine-core @0x8014C8C8 (src/shared) */ - - -DEFINE_func_8014C8F0() /* dedup: shared engine-core @0x8014C8F0 (src/shared) */ - -DEFINE_func_8014C918() /* dedup: shared engine-core @0x8014C918 (src/shared) */ - -DEFINE_func_8014C968() /* dedup: shared engine-core @0x8014C968 (src/shared) */ - -DEFINE_func_8014C978() /* dedup: shared engine-core @0x8014C978 (src/shared) */ - -DEFINE_func_8014C98C() /* dedup: shared engine-core @0x8014C98C (src/shared) */ - -DEFINE_func_8014C99C() /* dedup: shared engine-core @0x8014C99C (src/shared) */ - -DEFINE_func_8014CA00() /* dedup: shared engine-core @0x8014CA00 (src/shared) */ - -DEFINE_func_8014CA14() /* dedup: shared engine-core @0x8014CA14 (src/shared) */ - -DEFINE_func_8014CA70() /* dedup: shared engine-core @0x8014CA70 (src/shared) */ - -DEFINE_func_8014CA88() /* dedup: shared engine-core @0x8014CA88 (src/shared) */ - -DEFINE_func_8014CAE4() /* dedup: shared engine-core @0x8014CAE4 (src/shared) */ - -DEFINE_func_8014CAFC() /* dedup: shared engine-core @0x8014CAFC (src/shared) */ - -DEFINE_func_8014CB0C() /* dedup: shared engine-core @0x8014CB0C (src/shared) */ - -DEFINE_func_8014CB1C() /* dedup: shared engine-core @0x8014CB1C (src/shared) */ - -DEFINE_func_8014CB2C() /* dedup: shared engine-core @0x8014CB2C (src/shared) */ - -DEFINE_func_8014CB58() /* dedup: shared engine-core @0x8014CB58 (src/shared) */ - -DEFINE_func_8014CB68() /* dedup: shared engine-core @0x8014CB68 (src/shared) */ - -DEFINE_func_8014CB7C() /* dedup: shared engine-core @0x8014CB7C (src/shared) */ - -DEFINE_func_8014CB8C() /* dedup: shared engine-core @0x8014CB8C (src/shared) */ - -DEFINE_func_8014CB9C() /* dedup: shared engine-core @0x8014CB9C (src/shared) */ - -DEFINE_func_8014CBD8() /* dedup: shared engine-core @0x8014CBD8 (src/shared) */ - -DEFINE_func_8014CBE8() /* dedup: shared engine-core @0x8014CBE8 (src/shared) */ - -DEFINE_func_8014CBF8() /* dedup: shared engine-core @0x8014CBF8 (src/shared) */ - -DEFINE_func_8014CC28() /* dedup: shared engine-core @0x8014CC28 (src/shared) */ - - -extern void func_8014CD0C(u8 *a0); - -void func_8014CCB4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014CD0C\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014CD0C() /* dedup: shared engine-core @0x8014CD0C (src/shared) */ - -DEFINE_func_8014CD80() /* dedup: shared engine-core @0x8014CD80 (src/shared) */ - -DEFINE_func_8014CF04() /* dedup: shared engine-core @0x8014CF04 (src/shared) */ - - - -extern void func_8014D0A4(s32 a0); - -void func_8014D04C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D0A4\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D0A4() /* dedup: shared engine-core @0x8014D0A4 (src/shared) */ - - -DEFINE_func_8014D12C() /* dedup: shared engine-core @0x8014D12C (src/shared) */ - - - -DEFINE_func_8014D2A0() /* dedup: shared engine-core @0x8014D2A0 (src/shared) */ - - - -extern void func_8014D438(s32 a0); - -void func_8014D3E0(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D438\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D438() /* dedup: shared engine-core @0x8014D438 (src/shared) */ - -DEFINE_func_8014D4C0() /* dedup: shared engine-core @0x8014D4C0 (src/shared) */ - - -DEFINE_func_8014D610() /* dedup: shared engine-core @0x8014D610 (src/shared) */ - - - -extern void func_8014D790(s32 a0); - -void func_8014D738(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014D790\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014D790() /* dedup: shared engine-core @0x8014D790 (src/shared) */ - -extern void func_8012AAAC(void *arg0); - -// @class: schedule -// @stuck: none — MATCH (304/304), symcheck SYMS-OK 12/12, and the whole-TU cc1 stage now compiles CLEAN -// -// ══════════════════════════════════════════════════════════════════════════════ -// SESSION-22 RE-DERIVATION + THE ROOT-CAUSE FIX FOR THE "ASSEMBLER-STAGE" FAILURE -// ══════════════════════════════════════════════════════════════════════════════ -// The SESSION-21 draft did reach match_one MATCH (re-verified this session, 304/304) -// and symcheck SYMS-OK — but the whole-binary build died with an opaque `Error 33` -// that was logged as "an ASSEMBLER-stage failure I did not finish diagnosing". -// -// IT IS NOT AN ASSEMBLER FAILURE. Stage-by-stage isolation of the real pipeline -// (cpp | cc1 | maspsx | as) over a scratch copy of src/ov_SC01_077/ov_SC01_077_after.c -// with this function spliced in place of its INCLUDE_ASM gives: -// cpp rc=0 -// cc1 rc=33 <-- ".../tu.c:1901: conflicting types for `Ent'" -// "src/shared/engine_types.h:434: previous declaration of `Ent'" -// maspsx rc=0 -// as rc=0 (only benign "used $at without .set noat" warnings) -// `33` is CC1's exit code, surfaced by the recipe's `set -o pipefail` (Makefile:560). -// Because `as` is the LAST stage in that pipe, make attributes the failure to the -// assembler — the same misread that made func_8012AAAC's "opaque Error 33" look -// assembler-shaped until it was isolated stage by stage. -// -// ROOT CAUSE: the draft declared `typedef struct Ent { ... } Ent;` at FILE scope. -// `Ent` is already a shared engine type (src/shared/engine_types.h:434, -// typedef struct { u16 guard; u16 pad; u16 field; u8 rest[14]; } Ent; -// a 20-byte struct), pulled into every overlay TU through -// src/ov_SC01_077/../shared/engine_core.h. gcc-2.7.2 rejects the redefinition -// outright (an ERROR, not the "type mismatch with previous external decl" -// WARNING that the rest of this TU is full of), so cc1 aborts. -// -// THE FIX, and why this shape: all three helper types are now declared at BLOCK -// scope inside func_8014D820 itself. That is strictly better than renaming to -// `Ent_8014D820` at file scope, because this function is an h_seq family EXEMPLAR -// with 138 members: a file-scope type name has to stay unique against 138 distinct -// overlay TUs *and* against whatever engine_types.h grows next, while a block-scope -// typedef can never collide with anything, in any TU, ever. It also matches the -// fleet convention — src/shared/engine_core.h contains ZERO `typedef struct` -// (all 0 of them); every DEFINE_ macro body uses engine_types.h types or local ones. -// Typedefs emit no code and create no allocno, so the move is byte-neutral: -// re-verified MATCH (304 ins) after the change, and the local DECLARATION ORDER -// below is untouched (§76 — declaration order is the dominant regalloc lever here). -// -// ══════════════════════════════════════════════════════════════════════════════ -// THE BODY (SESSION-21 derivation, each lever re-verified this session) -// ══════════════════════════════════════════════════════════════════════════════ -// func_8014D820 (304 ins, ov_SC01_077, h_seq family exemplar, 138 members). -// The whole residual off the SESSION-18 close=9 seed was a sched1 PERMUTATION -// inside ONE basic block (idx 79..101, the pos/desc set-up between the `slti 0x400` -// guard and the `currentLocationId` test): identical multiset of insns, identical -// register assignment, wrong positions. §66d-5 exactly — classed WIDTH [structural] -// at every waypoint and not structural at all. -// -// The lever (reusable): that block is 12 statements over a small dependency poset -// (load x0/y0/z0 -> add -> store pos.* / desc.*), so source ORDER is the only -// control and the space of linear extensions is enumerable. A dependency-respecting -// sweep found MATCH at -// x0; pos.x; y0; pos.y; z0; tx; pos.z; tz; desc.x; desc.z; ty; desc.y -// i.e. all three loads and both pos stores first, then the two adds, then the desc -// stores, with the y accumulator (`ty`) computed LAST. No pin, no barrier, no -// permuter run. Eleven hand attempts on this window (SESSION-18) were inert or -// worse — hand-reading a 12-statement schedule permutation is the wrong tool; -// brute-forcing the linear extensions is the right one. -// -// Load-bearing levers (each re-verified by removal this session): -// * the `a0v` launder (`__asm__("" : "=r"(a0v) : "0"(a0))`) — drop => 9 mismatched -// * the `a2` $7 pin — drop => 5 -// * the `a2x -> a2` launder (vs a plain copy) — drop => 1 -// * `new_var3` (the s16 stash of dx feeding ratan2) — drop => 2 -// * `new_var2` (the desc.y + 0x10 accumulator) — drop => 2 -// The `a2` pin's live range ENDS before the first `jal` (last use is -// `desc.z = a2[2] - a1[2]`), so it is §42e-CORRECTION / §74-safe to propagate. -// -// SYMBOLS (§58 rule 1/2): all five data externs use the canonical splat spelling and -// the engine_core.h type — `u8 D_801202A0[]`, `u8 D_801152A8[]`, `s16 D_801152AC`, -// `u8 D_8018B5B8[]`, `s16 currentLocationId`. symcheck: SYMS-OK, 12 symbols agree. -// -// The one deliberate divergence (§27 step 2 / rule 3): func_80135A4C's canonical -// extern is 4-arg but this call site sets only $a0-$a2, so the canonical decl is -// kept verbatim (it is also the TU's own spelling at ov_SC01_077_after.c:1651/1709) -// and the ARITY is cast at the call site. -// -// BANKING NOTE for the orchestrator (carried forward from SESSION-18, still true): -// 1 `self_decl_hdr` axis remains — DEFINE_func_8014D790's body declares -// func_8014D820, so that macro in engine_core.h needs the §85 return-axis widen -// (already applied). With the `Ent` collision gone the TU's cc1 stage is clean. - - - - - - - - - - -extern s16 currentLocationId; -extern s32 ratan2(s32 a0, s32 a1); -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_800139C8(s32 a0, void *a1, void *a2); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_8014DCE0(s32 a0, s32 a1, s32 a2); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -s32 func_8014D820(s32 a0, u16 *a1, u16 *a2x) -{ - - extern u8 D_801202A0[]; - extern u8 D_8018B5B8[]; - extern u8 D_801152A8[]; - extern s16 D_801152AC; - /* BLOCK-SCOPE types — see the header note. `Ent` at file scope collides with - src/shared/engine_types.h:434 and kills the TU's cc1 stage (exit 33). */ - typedef struct - { - u16 x; - u16 y; - u16 z; - u16 w; - } V4; - typedef struct EntD820 - { - u16 f0; - u16 f2; - u16 f4; - u16 x; - u16 f8; - u16 y; - u16 fC; - u16 z; - u8 p10[0x10]; - s32 f20; - u8 p24[0x34]; - s32 f58; - u16 f5C; - u16 f5E; - u8 p60[0x10C - 0x60]; - } Ent; - int new_var2; - s16 new_var3; -register u16 *a2 __asm__("$7"); - V4 out[3]; - V4 pos; - Desc desc; - Ent *ent; - Ent *p; - s32 dx; - s32 dz; - s32 ex; - s32 ez; - s32 r1; - s32 r2; - s32 r3; - s32 ang; - s32 x0; - s32 y0; - s32 z0; - s32 tx; - s32 tz; - s32 ty; - s32 r; - s32 t; - s32 u; - s32 a0v; -__asm__ __volatile__("" : "=r"(a2) : "0"(a2x)); - t = a2[0]; - u = a1[0]; - dx = t - u; -__asm__ __volatile__("" : "=r"(a0v) : "0"(a0)); - new_var3 = (s16) dx; - t = a2[2]; - u = a1[2]; - dz = t - u; - if (((s16) (dx | dz)) == 0) - { - goto fail; - } - desc.x = dx; - desc.y = a2[1] - a1[1]; - desc.z = a2[2] - a1[2]; - ent = *((Ent **) (a0v + 0x170)); - if (ent->f0 == 0) - { - goto fail; - } - if ((ent->f5C & 0x1000) == 0) - { - goto fail; - } - if (ent->f58 == 0) - { - goto fail; - } - if (((s32 (*)(s32, s32, s32)) func_80135A4C)(ent->f20, ent->f58, (s32) a1) == 0) - { - goto fail; - } - ex = ent->x - (*((u16 *) (a0v + 6))); - ez = ent->z - (*((u16 *) (a0v + 0xE))); - r1 = (s16) ratan2((s16) dz, new_var3); - r2 = (s16) ratan2((s16) ez, (s16) ex); - r3 = (s16) func_80012A60(r1, r2); - if (0x400 <= r3) - { - goto fail; - } - desc.f20 = 0; - desc.f1C = 0; - desc.f18 = 0; - x0 = ent->x; - pos.x = x0; - y0 = ent->y; - pos.y = y0; - z0 = ent->z; - tx = x0 + desc.x; - pos.z = z0; - tz = z0 + desc.z; - desc.x = tx; - desc.z = tz; - ty = (y0 + desc.y) + 8; - desc.y = ty; - if (currentLocationId != 0x3008) - { - for (p = (Ent *) D_801202A0; p < (Ent *) (D_801202A0 + 0x6480); p++) - { - if (p == ent) - { - continue; - } - if (p->f0 == 0) - { - continue; - } - if (p->f5C == 0) - { - continue; - } - if (p->f58 == 0) - { - continue; - } - func_80135888(p->f20, p->f58, (s32) (&pos), (s32) (&desc)); - } - - } - else - { - ang = ratan2(((s16) x0) - ((s16) tx), ((s16) z0) - ((s16) tz)) & 0xFFF; - func_800139C8(ang, D_8018B5B8, &out[0]); - func_800139C8((s16) (ang - 0x155), D_8018B5B8, &out[1]); - func_800139C8((s16) (ang + 0x155), D_8018B5B8, &out[2]); - out[0].x += pos.x; - out[0].y = pos.y; - out[0].z += pos.z; - out[1].x += pos.x; - out[1].y = pos.y; - out[1].z += pos.z; - out[2].x += pos.x; - out[2].y = pos.y; - out[2].z += pos.z; - for (p = (Ent *) D_801202A0; p < (Ent *) (D_801202A0 + 0x6480); p++) - { - if (p == ent) - { - continue; - } - if (p->f0 == 0) - { - continue; - } - if (p->f5C == 0) - { - continue; - } - if (p->f58 == 0) - { - continue; - } - if (func_8014DCE0((s32) p, (s32) (&pos), (s32) (&out[0])) != 0) - { - __builtin_memcpy((void *) ((s32) (&desc)), (void *) ((s32) (&pos)), 8); - } - } - - } - r = func_80133784(0, &pos, (s32) (&desc)); - if ((r == 0) || ((r == 0x2000) && (((*(u16 *) D_801152A8) | ((u16) D_801152AC)) == 0))) - { - ent->x = desc.x - desc.f18; - ent->y = desc.y; - ent->z = desc.z - desc.f20; - desc.x -= pos.x; - desc.y -= pos.y; - desc.z -= pos.z; - *((u16 *) (a0v + 6)) = a1[0] + desc.x; - new_var2 = desc.y; - new_var2 = new_var2 + 0x10; - *((u16 *) (a0v + 0xA)) = a1[1] + new_var2; - *((u16 *) (a0v + 0xE)) = a1[2] + desc.z; - } - else - { - *((u16 *) (a0v + 6)) = a1[0]; - *((u16 *) (a0v + 0xA)) = a1[1] + 0x10; - *((u16 *) (a0v + 0xE)) = a1[2]; - } - return 1; - fail: - *((s32 *) (a0v + 0x170)) = 0; - - return 0; -} - - -DEFINE_func_8014DCE0() /* dedup: shared engine-core @0x8014DCE0 (src/shared) */ - - -DEFINE_func_8014DD8C() /* dedup: shared engine-core @0x8014DD8C (src/shared) */ - - - -extern void func_8014DF94(s32 arg0); - -void func_8014DF3C(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014DF94\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014DF94() /* dedup: shared engine-core @0x8014DF94 (src/shared) */ - -DEFINE_func_8014E048() /* dedup: shared engine-core @0x8014E048 (src/shared) */ - -DEFINE_func_8014E284() /* dedup: shared engine-core @0x8014E284 (src/shared) */ - - -extern void func_8014E48C(s32 a0); - -void func_8014E434(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E48C\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E48C() /* dedup: shared engine-core @0x8014E48C (src/shared) */ - -DEFINE_func_8014E514() /* dedup: shared engine-core @0x8014E514 (src/shared) */ - -// — the guard makes $v1, CSE turns the in-body `e = p + 0x6480` into a copy of it, and -// regalloc does not coalesce (gcc-2.7.2 has no coalescing, regalloc.md K8). The back edge -// then uses the register ($s5), NOT a rematerialised %hi/%lo(D_80126720) as in -// func_8014CF04 — so do NOT reuse that sibling's absolute-bound half here. -// -// (2) TWO INDUCTION VARIABLES, secondary base +0xE. `q = p + 0xE` carries every access except -// the two that use the entry pointer itself (`*(u16 *)p` and `*(u8 **)(a0+0x17C) = p`): -// offsets -0x8 / 0x0 / 0x12 / 0x4A / 0x4E off q == 0x6 / 0xE / 0x20 / 0x58 / 0x5C off p. -// A single-pointer spelling is NOT equivalent: gcc emits ONE base and the function comes -// out 56 ins (verified). The negative displacement is the tell that the second pointer is -// in the source, not a compiler-made giv. -// -// (3) REGISTER PINS ($16/$17) — the one non-obvious lever, and it is a genuine density -// knife-edge (regalloc.md K2 / §RC-15). Unpinned, the .lreg reads -// p: 9 refs / 24 insns -> floor_log2(9)*9/24 = 1.125 -// q: 8 refs / 22 insns -> floor_log2(8)*8/22 = 1.091 -// so p wins $s0 by ~3% and the whole function comes out with p/q SWAPPED (17 mismatches, -// every one of them a bare $s0<->$s1 rename). The target wants q in $s0. Decl-order swap -// does nothing (ties are not what decides it — p genuinely out-scores q). Rather than -// hunt a +1-ref anchor (§RC-11 `#APP` would sit next to three delay slots that maspsx -// fills: the `beqz $a1` slot, the `jal` slot and the `bnez` slot), pin both: -// register u8 *p __asm__("$17"); register u8 *q __asm__("$16"); -// Both are callee-saved, so the live-across-`jal` range is §42e/§74-safe by construction -// (the ov_SC03_099 func_8014D820 caveat only applies to caller-saved pins). Everything -// else falls out naturally: a0->$s2, a1->$s3, a2->$s4, e->$s5. -// -// (4) `t = *(s32 *)(q + 0x4A)` is loaded ONCE and reused as arg1 of func_80135888 — that is -// why `lw $a1, 0x4A($s0)` sits at the zero-test rather than at the call. -// -// The func_80135888 decl below is byte-compatible with the one this TU already carries at -// ov_SC01_077_after.c:2303, so it is not a second conflict axis. - -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); - -/* §37/§124 asm-label alias: the fleet canon declares this `extern void` (engine_core.h:13392, - * inside DEFINE_func_8014E48C()); the byte-true body must return s32. Aliasing the C name - * sidesteps the RETURN-axis conflict with no header edit. This line MUST travel with the body. */ -s32 aF8014E5B4(s32 a0, void *a1, void *a2) __asm__("func_8014E5B4"); - -DEFINE_func_8014E5B4() /* dedup: shared engine-core @0x8014E5B4 (src/shared) */ - - - -extern void func_8014E6F8(struct SubE6F8 *a0); - -void func_8014E6A0(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E6F8\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E6F8() /* dedup: shared engine-core @0x8014E6F8 (src/shared) */ - -DEFINE_func_8014E790() /* dedup: shared engine-core @0x8014E790 (src/shared) */ - -DEFINE_func_8014E83C() /* dedup: shared engine-core @0x8014E83C (src/shared) */ - - -void func_8014E934(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014E98C\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014E98C() /* dedup: shared engine-core @0x8014E98C (src/shared) */ - -DEFINE_func_8014EA4C() /* dedup: shared engine-core @0x8014EA4C (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (handwritten full inline-asm scratchpad-stack-switch wrapper; no trailing .set reorder — that adds a stray epilogue nop) -/* - * HANDWRITTEN scratchpad-stack-switch wrapper: temporarily repoints $sp into the - * D-cache scratchpad stack held at *(0x1F8003FC), calls func_8014ED80, stashes the - * return value through D_801D3080, restores $sp and returns it. - * Manipulating $sp is not expressible in C; full inline asm (manages its own frame). - */ -extern s32 func_8014ED80(struct SubED80 *a0); -extern int D_801D3080; - -void func_8014ED28(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014ED80\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014ED80() /* dedup: shared engine-core @0x8014ED80 (src/shared) */ - -DEFINE_func_8014EE14() /* dedup: shared engine-core @0x8014EE14 (src/shared) */ - - -extern s32 func_8014F24C(struct SubF24C *a0); - -void func_8014F1F4(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F24C\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F24C() /* dedup: shared engine-core @0x8014F24C (src/shared) */ - -DEFINE_func_8014F2E0() /* dedup: shared engine-core @0x8014F2E0 (src/shared) */ - -DEFINE_func_8014F3E8() /* dedup: shared engine-core @0x8014f3e8 (src/shared) */ - - - -extern s32 func_8014F4C0(); - -s32 func_8014F468(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F4C0\n" - "lui $at, %%hi(D_801D3084)\n" - "sw $v0, %%lo(D_801D3084)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3084)\n" - "lw $v0, %%lo(D_801D3084)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F4C0() /* dedup: shared engine-core @0x8014F4C0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (22 ins, relocation-masked). Handwritten scratchpad-stack-switch -// wrapper, full inline asm like DEFINE_func_80155FF8. NOTE: do NOT write an explicit -// "nop" after "jal func_8014F74C" — maspsx --aspsx-version=2.56 auto-fills the jal -// delay slot with a nop; an explicit one yields a double-nop (+1 ins). %hi/%lo must be -// escaped as %%hi/%%lo inside __asm__ (bare % is read as an operand placeholder). - -/* HANDWRITTEN scratchpad-stack-switch wrapper (same idiom as func_80155FF8 / - * func_80128564): temporarily repoints $sp into the D-cache scratchpad stack held - * at *(0x1F8003FC), calls func_8014F74C, stores its $v0 result to D_801D3084, then - * restores $sp and returns the stored value. Manipulating $sp is not expressible in - * C; full inline asm (manages its own frame). */ - -extern int func_8014F74C(); - -int func_8014F6F4(void) { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014F74C\n" - "lui $at, %%hi(D_801D3084)\n" - "sw $v0, %%lo(D_801D3084)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3084)\n" - "lw $v0, %%lo(D_801D3084)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014F74C() /* dedup: shared engine-core @0x8014F74C (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (full inline-asm $sp-switch trampoline w/ 0x40000 guard, jal func_8014FA70, stash D_801D3084; maspsx auto-fills jal delay slot) - -extern s32 func_8014FA70(s32 a0); -extern s32 D_801D3084; - -void func_8014FA04(s32 a0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "sw $ra, 16($sp)\n" - "lw $v0, 68($a0)\n" - "lui $v1, 0x4\n" - "and $v0, $v0, $v1\n" - "bnez $v0, 1f\n" - "addu $v0, $zero, $zero\n" - "lui $a1, 0x1f80\n" - "ori $a1, $a1, 0x03fc\n" - "addu $t0, $a1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FA70\n" - "lui $at, %%hi(D_801D3084)\n" - "sw $v0, %%lo(D_801D3084)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3084)\n" - "lw $v0, %%lo(D_801D3084)($v0)\n" - "1:\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014FA70() /* dedup: shared engine-core @0x8014FA70 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (22 ins, relocation-masked). Handwritten scratchpad-stack-switch -// trampoline: byte-identical to the matched in-TU sibling func_8014F6F4 (line ~2005), -// differing ONLY in the callee (func_8014FC18 vs func_8014F74C). Full inline asm manages -// its own frame; both the callee and the D_801D3084 global live inside the asm, so NO C -// externs are declared — this sidesteps the canonical-sig-layer reconcile that CC1_FAILed -// the register-asm draft (func_8014FC18/D_801D3084 are declared elsewhere in the TU). -// maspsx --aspsx-version=2.56 auto-fills the jal delay slot with a nop, so do NOT write an -// explicit nop after `jal` (double-nop = +1 ins); %hi/%lo escaped as %% inside __asm__. -// gcc emits only the `jr $ra; nop` epilogue (leaf, no locals it can see) → exactly 22 ins. -s32 func_8014FBC0() { - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FC18\n" - "lui $at, %%hi(D_801D3084)\n" - "sw $v0, %%lo(D_801D3084)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3084)\n" - "lw $v0, %%lo(D_801D3084)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - - -DEFINE_func_8014FC18() /* dedup: shared engine-core @0x8014FC18 (src/shared) */ - - -extern int func_8014FD54(int param_1); - -void func_8014FCFC(void) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FD54\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_8014FD54() /* dedup: shared engine-core @0x8014FD54 (src/shared) */ - -DEFINE_func_8014FDF4() /* dedup: shared engine-core @0x8014FDF4 (src/shared) */ - -DEFINE_func_8014FE60() /* dedup: shared engine-core @0x8014FE60 (src/shared) */ - - - - -DEFINE_func_8014FFDC() /* dedup: shared engine-core @0x8014FFDC (src/shared) */ - - -DEFINE_func_80150150() /* dedup: shared engine-core @0x80150150 (src/shared) */ - -DEFINE_func_80150170() /* dedup: shared engine-core @0x80150170 (src/shared) */ - - -DEFINE_func_801502EC() /* dedup: shared engine-core @0x801502EC (src/shared) */ - - -DEFINE_func_80150460() /* dedup: shared engine-core @0x80150460 (src/shared) */ - - -extern void func_801504D8(u16 *a0); - -s32 func_80150480(s32 _arg0) -{ - __asm__ __volatile__( - ".set noreorder\n" - "addiu $sp, $sp, -24\n" - "lui $v1, 0x1f80\n" - "ori $v1, $v1, 0x03fc\n" - "sw $ra, 16($sp)\n" - "addu $t0, $v1, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_801504D8\n" - "lui $at, %%hi(D_801D3080)\n" - "sw $v0, %%lo(D_801D3080)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "lui $v0, %%hi(D_801D3080)\n" - "lw $v0, %%lo(D_801D3080)($v0)\n" - "lw $ra, 16($sp)\n" - "addiu $sp, $sp, 24\n" - : : : "memory"); -} - - -DEFINE_func_801504D8() /* dedup: shared engine-core @0x801504D8 (src/shared) */ - -DEFINE_func_80150528() /* dedup: shared engine-core @0x80150528 (src/shared) */ - -DEFINE_func_801505FC() /* dedup: shared engine-core @0x801505FC (src/shared) */ - - - -s32 func_801506A4(s32 arg0, s32 arg1) { - extern void func_80150820(int, unsigned short); - extern void func_8015086C(int); - extern unsigned short D_8018B5C8[]; - extern unsigned short D_8018B5D0[]; - extern unsigned short D_8018B5D8[]; - - int mode; - - mode = ((struct Ent_801506A4 *)arg1)->unk0; - ((struct Ent_801506A4 *)arg1)->unk5C |= 1; - switch (mode) { - case 0x31: - ((void(*)(int))func_80147324)(0x452); - ((void(*)(int, unsigned))func_8014ADA8)(((int)arg0), D_8018B5C8[((struct Ent_801506A4 *)arg1)->unk70]); - ((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 3, D_8018B5C8[((struct Ent_801506A4 *)arg1)->unk70]); - break; - case 0x32: - if ((*(unsigned short*)&D_80078EB4) != 0) { - ((void(*)(int))func_80147324)(0x452); - ((void(*)(int, unsigned, int))func_8014BB24)(((int)arg0), D_8018B5D0[((struct Ent_801506A4 *)arg1)->unk70], 1); - ((void(*)(int, int, unsigned))func_8014ACE8)(((int)arg0), 2, D_8018B5D0[((struct Ent_801506A4 *)arg1)->unk70]); - } - break; - case 0x33: - ((void(*)(int))func_80147324)(0x452); - func_80150820(((int)arg0), D_8018B5D8[((struct Ent_801506A4 *)arg1)->unk70]); - break; - case 0xC5: - case 0x27B: - ((void(*)(int))func_80147324)(0x452); - func_8015086C(((int)arg0)); - break; - } -} - - - -DEFINE_func_80150820() /* dedup: shared engine-core @0x80150820 (src/shared) */ - -DEFINE_func_8015086C() /* dedup: shared engine-core @0x8015086C (src/shared) */ - -DEFINE_func_801508B4() /* dedup: shared engine-core @0x801508B4 (src/shared) */ - -DEFINE_func_801508F8() /* dedup: shared engine-core @0x801508F8 (src/shared) */ - - -extern S16 D_801D2658; -extern s32 D_8018B5E0; -extern s32 D_80126990; -extern s32 D_80126994; -extern u8 D_80126948[]; -extern s32 func_80021174(s32 a0, s32 a1); - -s32 func_8015094C(s32 param_1) { - struct { s32 x, mid, y; s32 _pad[9]; } arg; /* 0x30 @ 0x10 */ - S16 local; /* 0x10 @ 0x40 */ - s32 pad1[4]; /* 0x10 @ 0x50 */ - register u8 *cam __asm__("$17") = D_80126948; - s32 ret; - - local = D_801D2658; - arg.x = *(short *)(param_1 + 6); - arg.mid = D_80126994; - arg.y = *(short *)(param_1 + 0xe); - ret = func_80021174(D_8018B5E0, (s32)&arg); - if (ret == 0) { - { - short cur = *(short *)(param_1 + 6); - s32 diff = D_80126990 - cur; - s32 av = (diff < 0) ? -diff : diff; - if (av >= 5) { - *(short *)(param_1 + 6) = (diff >= 0) ? cur + 4 : cur - 4; - } - } - { - short cur = *(short *)(param_1 + 0xe); - s32 diff = *(s32 *)(cam + 0x50) - cur; - s32 av = (diff < 0) ? -diff : diff; - if (av >= 5) { - *(short *)(param_1 + 0xe) = (diff >= 0) ? cur + 4 : cur - 4; - } - } - (void)&pad1; - return 1; - } - return 0; -} - - - -extern s32 func_8014FA70(s32 a0); -extern void func_80015978(s32 a0, s32 *a1); -extern s32 D_801D3084; - -void func_80150A70(s32 a0) -{ - __asm__ __volatile__( - ".set\tnoreorder\n" - "addiu $sp, $sp, -24\n" - "sw $s0, 16($sp)\n" - "addu $s0, $a0, $zero\n" - "sw $ra, 20($sp)\n" - "lh $v1, 6($s0)\n" - "lh $v0, 136($s0)\n" - "nop\n" - "bne $v1, $v0, 1f\n" - "nop\n" - "lh $v1, 10($s0)\n" - "lh $v0, 138($s0)\n" - "nop\n" - "bne $v1, $v0, 1f\n" - "nop\n" - "lh $v1, 14($s0)\n" - "lh $v0, 140($s0)\n" - "nop\n" - "beq $v1, $v0, 3f\n" - "nop\n" - "1:\n" - "lw $v0, 68($s0)\n" - "lui $v1, 0x4\n" - "and $v0, $v0, $v1\n" - "bnez $v0, 2f\n" - "addiu $a0, $s0, 4\n" - "lui $a2, 0x1f80\n" - "ori $a2, $a2, 0x03fc\n" - "addu $t0, $a2, $zero\n" - "lw $t1, 0($t0)\n" - "nop\n" - "sw $sp, 0($t1)\n" - "addiu $t1, $t1, -4\n" - "addu $sp, $t1, $zero\n" - "jal func_8014FA70\n" - "addu $a0, $s0, $zero\n" - "lui $at, %%hi(D_801D3084)\n" - "sw $v0, %%lo(D_801D3084)($at)\n" - "addiu $sp, $sp, 4\n" - "lw $sp, 0($sp)\n" - "addiu $a0, $s0, 4\n" - "2:\n" - "jal func_80015978\n" - "addiu $a1, $s0, 136\n" - "3:\n" - "lw $ra, 20($sp)\n" - "lw $s0, 16($sp)\n" - "addiu $sp, $sp, 24\n" - ".set\treorder\n" - : : : "memory"); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (fn-ptr table; split idx-1 into a $v0-pinned temp to stop (idx-1)*4 strength-reducing into a -4 load offset AND land the subtract in $v0) - - -void func_80150B28(int param_1) { - - extern s32 D_800AE6B0; - extern void (*D_8018B5E4[])(void); - u32 idx; - register u32 sub __asm__("$2"); - - if ((D_800AE6B0 & 0x80FFFFFF) == 0) { - idx = *(u16 *)(param_1 + 0x16C); - if (idx != 0 && idx < 0x26) { - sub = idx - 1; - D_8018B5E4[sub](); - } - } - *(u16 *)(param_1 + 0x16C) = 0; -} - - -DEFINE_func_80150B9C() /* dedup: shared engine-core @0x80150B9C (src/shared) */ - -DEFINE_func_80150BA4() /* dedup: shared engine-core @0x80150BA4 (src/shared) */ - -DEFINE_func_80150BC8() /* dedup: shared engine-core @0x80150BC8 (src/shared) */ - -DEFINE_func_80150C48() /* dedup: shared engine-core @0x80150C48 (src/shared) */ - -DEFINE_func_80150CA0() /* dedup: shared engine-core @0x80150CA0 (src/shared) */ - -DEFINE_func_80150CC4() /* dedup: shared engine-core @0x80150CC4 (src/shared) */ - -DEFINE_func_80150CE4() /* dedup: shared engine-core @0x80150CE4 (src/shared) */ - -DEFINE_func_80150D04() /* dedup: shared engine-core @0x80150D04 (src/shared) */ - -DEFINE_func_80150D24() /* dedup: shared engine-core @0x80150D24 (src/shared) */ - -DEFINE_func_80150D44() /* dedup: shared engine-core @0x80150D44 (src/shared) */ - -DEFINE_func_80150D64() /* dedup: shared engine-core @0x80150D64 (src/shared) */ - -DEFINE_func_80150D84() /* dedup: shared engine-core @0x80150D84 (src/shared) */ - -DEFINE_func_80150DA4() /* dedup: shared engine-core @0x80150DA4 (src/shared) */ - -DEFINE_func_80150DC4() /* dedup: shared engine-core @0x80150DC4 (src/shared) */ - -DEFINE_func_80150DE4() /* dedup: shared engine-core @0x80150DE4 (src/shared) */ - -DEFINE_func_80150E04() /* dedup: shared engine-core @0x80150E04 (src/shared) */ - -DEFINE_func_80150E24() /* dedup: shared engine-core @0x80150E24 (src/shared) */ - -DEFINE_func_80150E44() /* dedup: shared engine-core @0x80150E44 (src/shared) */ - -DEFINE_func_80150E64() /* dedup: shared engine-core @0x80150E64 (src/shared) */ - -DEFINE_func_80150E84() /* dedup: shared engine-core @0x80150E84 (src/shared) */ - -DEFINE_func_80150EA4() /* dedup: shared engine-core @0x80150EA4 (src/shared) */ - -DEFINE_func_80150EC4() /* dedup: shared engine-core @0x80150EC4 (src/shared) */ - -DEFINE_func_80150F78() /* dedup: shared engine-core @0x80150F78 (src/shared) */ - -DEFINE_func_80150F80() /* dedup: shared engine-core @0x80150F80 (src/shared) */ - -DEFINE_func_80150FB4() /* dedup: shared engine-core @0x80150FB4 (src/shared) */ - -DEFINE_func_80150FD8() /* dedup: shared engine-core @0x80150FD8 (src/shared) */ - -DEFINE_func_80151014() /* dedup: shared engine-core @0x80151014 (src/shared) */ - -DEFINE_func_80151038() /* dedup: shared engine-core @0x80151038 (src/shared) */ - -DEFINE_func_80151070() /* dedup: shared engine-core @0x80151070 (src/shared) */ - -DEFINE_func_80151094() /* dedup: shared engine-core @0x80151094 (src/shared) */ - -DEFINE_func_801510B8() /* dedup: shared engine-core @0x801510B8 (src/shared) */ - -DEFINE_func_801510C0() /* dedup: shared engine-core @0x801510C0 (src/shared) */ - -DEFINE_func_801510C8() /* dedup: shared engine-core @0x801510C8 (src/shared) */ - -DEFINE_func_801510EC() /* dedup: shared engine-core @0x801510EC (src/shared) */ - -DEFINE_func_80151110() /* dedup: shared engine-core @0x80151110 (src/shared) */ - -DEFINE_func_80151130() /* dedup: shared engine-core @0x80151130 (src/shared) */ - -DEFINE_func_80151138() /* dedup: shared engine-core @0x80151138 (src/shared) */ - -DEFINE_func_8015115C() /* dedup: shared engine-core @0x8015115C (src/shared) */ - -DEFINE_func_80151164() /* dedup: shared engine-core @0x80151164 (src/shared) */ - -DEFINE_func_80151184() /* dedup: shared engine-core @0x80151184 (src/shared) */ - -DEFINE_func_801511A8() /* dedup: shared engine-core @0x801511A8 (src/shared) */ - -DEFINE_func_801511C4() /* dedup: shared engine-core @0x801511C4 (src/shared) */ - -DEFINE_func_801511E0() /* dedup: shared engine-core @0x801511E0 (src/shared) */ - -DEFINE_func_80151204() /* dedup: shared engine-core @0x80151204 (src/shared) */ - -DEFINE_func_80151238() /* dedup: shared engine-core @0x80151238 (src/shared) */ - -DEFINE_func_8015126C() /* dedup: shared engine-core @0x8015126C (src/shared) */ - - -/* func_80151664 — INTEGRATE lane. - * Fleet canon (src/shared/engine_core.h:2924, inside DEFINE_func_8015410C()) declares - * extern void func_80151664(void); - * so a `void func_80151664(s32 a0)` definition is `conflicting types` in every TU that - * expands that macro (ov_SC01_077_after.c:3910 does). Cookbook §73 PARAMS axis / §42: - * keep the canonical (void) signature and read the incoming argument through a $a0 pin. - * The decl below is reproduced verbatim so this file compiles the real conflict. */ -extern void func_80151664(void); - -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801470AC(s32 *a0); -extern void func_801472B4(void *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80153C18(); /* fleet canon: K&R empty prototype (engine_core.h:75, :1682 defines it (void)); - * a prototyped (s32) decl is `conflicting types` in this TU. Arg still - * passes in $a0 under default promotions -> codegen unchanged. */ - -void func_80151664(void) { - register s32 a0v __asm__("$4"); - s32 s0; - s32 v1; - - s0 = a0v; - func_80154A74(s0, 0x11); - func_801553C0(s0); - func_801470AC((s32 *)s0); - func_801472B4((void *)s0); - v1 = *(s32 *)(s0 + 0x20); - *(s16 *)(s0 + 0x3E) = 0; - *(s16 *)(s0 + 0x40) = 0; - *(s16 *)(s0 + 0x42) = 0; - *(s8 *)(s0 + 0xDD) = 0; - *(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; - *(s16 *)(v1 + 0x10) = 0; - *(s16 *)(s0 + 0x60) = 0x1000; - *(s16 *)(s0 + 0x62) = 0x1000; - *(s16 *)(s0 + 0x64) = 0x1000; - func_801477E8((s32 *)s0, 0); - func_80153C18(s0); -} - - -DEFINE_func_801516F0() /* dedup: shared engine-core @0x801516F0 (src/shared) */ - -DEFINE_func_8015173C() /* dedup: shared engine-core @0x8015173C (src/shared) */ - -DEFINE_func_80151780() /* dedup: shared engine-core @0x80151780 (src/shared) */ - -DEFINE_func_80151878() /* dedup: shared engine-core @0x80151878 (src/shared) */ - -DEFINE_func_80151880() /* dedup: shared engine-core @0x80151880 (src/shared) */ - -DEFINE_func_801518D8() /* dedup: shared engine-core @0x801518D8 (src/shared) */ - -DEFINE_func_80151924() /* dedup: shared engine-core @0x80151924 (src/shared) */ - - - -void func_80151944(void *a0) { - - extern void (*D_8018B678[])(void); - D_8018B678[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80151980() /* dedup: shared engine-core @0x80151980 (src/shared) */ - -DEFINE_func_801519C8() /* dedup: shared engine-core @0x801519C8 (src/shared) */ - -DEFINE_func_80151AE4() /* dedup: shared engine-core @0x80151AE4 (src/shared) */ - -DEFINE_func_80151B98() /* dedup: shared engine-core @0x80151B98 (src/shared) */ - -DEFINE_func_80151C54() /* dedup: shared engine-core @0x80151C54 (src/shared) */ - - -extern void (*D_8018B688[])(void); - -void func_80151D24(void *a0) { - D_8018B688[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80151D60() /* dedup: shared engine-core @0x80151D60 (src/shared) */ - -DEFINE_func_80151DB0() /* dedup: shared engine-core @0x80151DB0 (src/shared) */ - -DEFINE_func_80151E78() /* dedup: shared engine-core @0x80151E78 (src/shared) */ - -DEFINE_func_80151ECC() /* dedup: shared engine-core @0x80151ECC (src/shared) */ - -DEFINE_func_80151F38() /* dedup: shared engine-core @0x80151F38 (src/shared) */ - -DEFINE_func_80151FB4() /* dedup: shared engine-core @0x80151FB4 (src/shared) */ - - -extern void (*D_8018B6AC[])(void); - -void func_80152058(void *a0) { - D_8018B6AC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152094() /* dedup: shared engine-core @0x80152094 (src/shared) */ - - -extern void func_80019064(void *a0); -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 void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern u8 D_80062C04[]; -extern M2C_UNK D_8018B69C; - -void func_801520DC(s32 arg0) -{ - func_80019064(&D_80062C04); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_801472C8(arg0); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - func_80146DB8(arg0, &D_8018B69C); - func_801477E8(arg0, 0x40000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146A6C(0x10, arg0, M2C_FIELD(arg0, s16 *, 6), M2C_FIELD(arg0, s16 *, 0xA), (s32) M2C_FIELD(arg0, s16 *, 0xE), 0, 0); - func_80147324(0x441); - func_80146CA0(arg0); -} - - -DEFINE_func_80152194() /* dedup: shared engine-core @0x80152194 (src/shared) */ - -DEFINE_func_8015220C() /* dedup: shared engine-core @0x8015220C (src/shared) */ - -DEFINE_func_80152254() /* dedup: shared engine-core @0x80152254 (src/shared) */ - -DEFINE_func_801522CC() /* dedup: shared engine-core @0x801522CC (src/shared) */ - - - -extern void (*D_8018B6C0[])(void); - -void func_80152370(void *a0) { - D_8018B6C0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801523AC() /* dedup: shared engine-core @0x801523AC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (67 ins) - - -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80019064(void *a0); -extern int func_80151204(int arg, int a1); -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 void func_80149020(s32 *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147324(s32 arg0); -extern void func_80146CA0(void *a0); - -extern u8 D_80062C04[]; -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern u8 D_8018B6CC[]; - -void func_801523F4(s32 arg0) -{ - s32 pad[4]; - s32 buf[4]; - register s32 s0a __asm__("$16"); /* $s0 = buf */ - register s32 s2a __asm__("$18") = (s32)&D_8018B6CC; /* $s2 = &D_8018B6CC */ - - ((void (*)(s32, s32))func_80146E90)(arg0, 0); - func_80019064(&D_80062C04); - ((void (*)(s32, s32))func_80151204)(arg0, *(s16 *)(arg0 + 0xF2)); - if ((s16)func_80012A60((s32)*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), - (s32)*(s16 *)(arg0 + 0xF4)) >= 0x401) { - ((void (*)(s32, s32))func_80154274)(arg0, (s32)&D_800D5880); - } else { - ((void (*)(s32, s32))func_80154274)(arg0, (s32)&D_800D58AC); - } - func_80154A74(arg0, 0x16); - ((void (*)(s32))func_80149020)(arg0); - s0a = (s32)buf; - ((void (*)(s32, s32, s32))func_8001382C)((*(u16 *)(arg0 + 0xF4) - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12)) & 0xFFF, - s2a, s0a); - ((void (*)(s32, s32))func_80146DB8)(arg0, s0a); - ((void (*)(s32, s32))func_801477E8)(arg0, *(s32 *)(s2a + 0xC)); - func_80147324(0x451); - ((void (*)(s32))func_80146CA0)(arg0); - (void)pad; -} - - -DEFINE_func_80152500() /* dedup: shared engine-core @0x80152500 (src/shared) */ - -DEFINE_func_801525F4() /* dedup: shared engine-core @0x801525F4 (src/shared) */ - - -extern void (*D_8018B6DC[])(void); - -void func_80152698(void *a0) { - D_8018B6DC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801526D4() /* dedup: shared engine-core @0x801526D4 (src/shared) */ - -DEFINE_func_80152714() /* dedup: shared engine-core @0x80152714 (src/shared) */ - -DEFINE_func_80152790() /* dedup: shared engine-core @0x80152790 (src/shared) */ - - -extern void (*D_8018B6F4[])(void); - -void func_8015282C(void *a0) { - D_8018B6F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152868() /* dedup: shared engine-core @0x80152868 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern void func_80154274(s32 *a0, s32 a1); -extern u8 D_80062C04[]; -extern M2C_UNK D_800D5880; -extern M2C_UNK D_8018B6E4; - -void func_801528B0(s32 arg0) -{ - func_80019064(&D_80062C04); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_80154274(arg0, &D_800D5880); - func_80147324(0x451); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - func_80146DB8(arg0, &D_8018B6E4); - func_801477E8(arg0, 0xFFF00000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_8015294C() /* dedup: shared engine-core @0x8015294C (src/shared) */ - -DEFINE_func_80152A08() /* dedup: shared engine-core @0x80152A08 (src/shared) */ - -DEFINE_func_80152A50() /* dedup: shared engine-core @0x80152A50 (src/shared) */ - -DEFINE_func_80152AC8() /* dedup: shared engine-core @0x80152AC8 (src/shared) */ - - -extern void (*D_8018B708[])(void); - -void func_80152B6C(void *a0) { - D_8018B708[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152BA8() /* dedup: shared engine-core @0x80152BA8 (src/shared) */ - -DEFINE_func_80152BF0() /* dedup: shared engine-core @0x80152BF0 (src/shared) */ - -DEFINE_func_80152C40() /* dedup: shared engine-core @0x80152C40 (src/shared) */ - -DEFINE_func_80152C80() /* dedup: shared engine-core @0x80152C80 (src/shared) */ - - -extern void (*D_8018B724[])(void); - -void func_80152D24(void *a0) { - D_8018B724[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80152D60() /* dedup: shared engine-core @0x80152D60 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80146CA0(void *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147324(s32 a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_8014CBF8(void *a0); -extern int func_80151204(int arg, int a1); -extern void func_80154274(s32 *a0, s32 a1); -extern s32 D_80062C14; -extern M2C_UNK D_800D5880; -extern M2C_UNK D_8018B714; - -void func_80152DA8(s32 arg0) -{ - func_80019064(&D_80062C14); - func_80151204(arg0, M2C_FIELD(arg0, s16 *, 0xF2)); - func_80149020(arg0); - func_80154274(arg0, &D_800D5880); - func_80147324(0x451); - M2C_FIELD(arg0, s8 *, 0xDE) = 0x10; - M2C_FIELD(arg0, s8 *, 0xDF) = 8; - func_80146DB8(arg0, &D_8018B714); - func_801477E8(arg0, 0xFFE40000); - func_8014CBF8(arg0); - func_801474EC(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80152E4C() /* dedup: shared engine-core @0x80152E4C (src/shared) */ - -DEFINE_func_80152EFC() /* dedup: shared engine-core @0x80152EFC (src/shared) */ - -DEFINE_func_80152F44() /* dedup: shared engine-core @0x80152F44 (src/shared) */ - -DEFINE_func_80152FBC() /* dedup: shared engine-core @0x80152FBC (src/shared) */ - - -extern void (*D_8018B738[])(void); - -void func_80153060(void *a0) { - D_8018B738[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015309C() /* dedup: shared engine-core @0x8015309C (src/shared) */ - -DEFINE_func_801530E4() /* dedup: shared engine-core @0x801530E4 (src/shared) */ - -DEFINE_func_80153150() /* dedup: shared engine-core @0x80153150 (src/shared) */ - -DEFINE_func_801531BC() /* dedup: shared engine-core @0x801531BC (src/shared) */ - -DEFINE_func_80153204() /* dedup: shared engine-core @0x80153204 (src/shared) */ - -DEFINE_func_8015327C() /* dedup: shared engine-core @0x8015327C (src/shared) */ - - -extern void (*D_8018B74C[])(void); - -void func_80153320(void *a0) { - D_8018B74C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015335C() /* dedup: shared engine-core @0x8015335C (src/shared) */ - -DEFINE_func_801533A4() /* dedup: shared engine-core @0x801533A4 (src/shared) */ - -DEFINE_func_80153410() /* dedup: shared engine-core @0x80153410 (src/shared) */ - -DEFINE_func_80153490() /* dedup: shared engine-core @0x80153490 (src/shared) */ - -DEFINE_func_801534D8() /* dedup: shared engine-core @0x801534D8 (src/shared) */ - -DEFINE_func_80153550() /* dedup: shared engine-core @0x80153550 (src/shared) */ - - -DEFINE_func_801535F4() /* dedup: shared engine-core @0x801535F4 (src/shared) */ - - -DEFINE_func_8015369C() /* dedup: shared engine-core @0x8015369C (src/shared) */ - -DEFINE_func_801536DC() /* dedup: shared engine-core @0x801536DC (src/shared) */ - -DEFINE_func_80153800() /* dedup: shared engine-core @0x80153800 (src/shared) */ - -DEFINE_func_80153978() /* dedup: shared engine-core @0x80153978 (src/shared) */ - -DEFINE_func_801539F8() /* dedup: shared engine-core @0x801539F8 (src/shared) */ - -DEFINE_func_80153B58() /* dedup: shared engine-core @0x80153B58 (src/shared) */ - -DEFINE_func_80153BD8() /* dedup: shared engine-core @0x80153BD8 (src/shared) */ - -DEFINE_func_80153BF0() /* dedup: shared engine-core @0x80153BF0 (src/shared) */ - -DEFINE_func_80153C18() /* dedup: shared engine-core @0x80153C18 (src/shared) */ - -DEFINE_func_80153C30() /* dedup: shared engine-core @0x80153C30 (src/shared) */ - -DEFINE_func_80153C44() /* dedup: shared engine-core @0x80153C44 (src/shared) */ - -DEFINE_func_80153C74() /* dedup: shared engine-core @0x80153C74 (src/shared) */ - -DEFINE_func_80153C8C() /* dedup: shared engine-core @0x80153C8C (src/shared) */ - -DEFINE_func_80153C9C() /* dedup: shared engine-core @0x80153C9C (src/shared) */ - -DEFINE_func_80153CBC() /* dedup: shared engine-core @0x80153CBC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (expected); dispatch-table %lo-fold via extern fn-ptr array, s0 holds param across both calls -extern void func_80019064(void *a0); -extern s32 D_8018B760; -extern void (*D_8018B788[])(void *a0); -extern s16 D_8011DB0C; -extern u16 D_8011F748; - -void func_80153CCC(S80153CCC *a0) { - ((s32 (*)(s32))func_80019064)((s32)&D_8018B760); - D_8018B788[a0->idx](a0); - D_8011DB0C = 0; - D_8011F748 = 0; -} - - -DEFINE_func_80153D34() /* dedup: shared engine-core @0x80153D34 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (33/33) - -extern void func_80147324(s32 arg0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80149020(s32 *a0); -extern void func_80146CA0(void *a0); -extern s16 currentLocationId; -extern u8 D_8018B768; - -void func_80153D7C(s32 param_1) -{ - func_80147324(0x451); - func_80154274((s32 *)param_1, (s32)&D_8018B768); - func_80149020((s32 *)param_1); - *(u16 *)(param_1 + 0x244) = *(u16 *)(param_1 + 6); - *(u16 *)(param_1 + 0x246) = *(u16 *)(param_1 + 10); - *(u16 *)(param_1 + 0x248) = *(u16 *)(param_1 + 0xe); - if (currentLocationId == 0x3075) *(u8 *)(param_1 + 0xde) = 0x14; - else *(u8 *)(param_1 + 0xde) = 10; - *(u8 *)(param_1 + 0xdf) = 0; - __asm__ __volatile__("" ::: "memory"); - func_80146CA0((void *)param_1); -} - - -DEFINE_func_80153E00() /* dedup: shared engine-core @0x80153E00 (src/shared) */ - -DEFINE_func_8015410C() /* dedup: shared engine-core @0x8015410C (src/shared) */ - -DEFINE_func_80154134() /* dedup: shared engine-core @0x80154134 (src/shared) */ - -DEFINE_func_80154150() /* dedup: shared engine-core @0x80154150 (src/shared) */ - -DEFINE_func_80154190() /* dedup: shared engine-core @0x80154190 (src/shared) */ - -DEFINE_func_801541D8() /* dedup: shared engine-core @0x801541D8 (src/shared) */ - -DEFINE_func_80154218() /* dedup: shared engine-core @0x80154218 (src/shared) */ - -DEFINE_func_80154274() /* dedup: shared engine-core @0x80154274 (src/shared) */ - -DEFINE_func_801542A4() /* dedup: shared engine-core @0x801542A4 (src/shared) */ - -DEFINE_func_801542DC() /* dedup: shared engine-core @0x801542DC (src/shared) */ - -DEFINE_func_8015430C() /* dedup: shared engine-core @0x8015430C (src/shared) */ - -DEFINE_func_80154358() /* dedup: shared engine-core @0x80154358 (src/shared) */ - -DEFINE_func_80154418() /* dedup: shared engine-core @0x80154418 (src/shared) */ diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8012ACE0.c b/src/ov_SC03_119/ov_SC03_119_jr_8012ACE0.c deleted file mode 100644 index 0b511064f..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8012ACE0.c +++ /dev/null @@ -1,3559 +0,0 @@ -#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. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -/* ==== end §8b carried decl layer ==== */ - - - - -// @class: iv-combine -// @stuck: none — MATCH (25 ins). Array-subscript induction o->list[i] fixes preheader hoist order + loop-top load-delay nop; scattered case labels force the jump table (gcc merges contiguous same-target cases, so 6+ non-contiguous nodes needed for the density heuristic). - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - -s32 func_8012ACE0(void *o) { - int i; - for (i = 0; ; i++) { - switch (((Owner_8012ACE0_8012ACE0 *)o)->list[i].cmd) { - case -2: - case -1: - case 0: - return i; - case -50: case -45: case -40: case -35: case -30: /* scatter -> force jump table (min=-50 sets low bound) */ - default: - break; - } - } -} - -DEFINE_func_8012AD44() /* dedup: shared engine-core @0x8012AD44 (src/shared) */ - -DEFINE_func_8012AD50() /* dedup: shared engine-core @0x8012AD50 (src/shared) */ - - - -void func_8012AD64(s32 *a0, s16 a1) { - *(s16*)((s32)a0 + 0x34) = a1; -} - - -DEFINE_func_8012AD6C() /* dedup: shared engine-core @0x8012AD6C (src/shared) */ - -DEFINE_func_8012AD80() /* dedup: shared engine-core @0x8012AD80 (src/shared) */ - -DEFINE_func_8012ADE4() /* dedup: shared engine-core @0x8012ADE4 (src/shared) */ - -DEFINE_func_8012AE00() /* dedup: shared engine-core @0x8012AE00 (src/shared) */ - -DEFINE_func_8012AF0C() /* dedup: shared engine-core @0x8012AF0C (src/shared) */ - -DEFINE_func_8012B030() /* dedup: shared engine-core @0x8012B030 (src/shared) */ - -DEFINE_func_8012B0B4() /* dedup: shared engine-core @0x8012B0B4 (src/shared) */ - -DEFINE_func_8012B14C() /* dedup: shared engine-core @0x8012B14C (src/shared) */ - -DEFINE_func_8012B178() /* dedup: shared engine-core @0x8012B178 (src/shared) */ - -DEFINE_func_8012B1B4() /* dedup: shared engine-core @0x8012B1B4 (src/shared) */ - -DEFINE_func_8012B200() /* dedup: shared engine-core @0x8012B200 (src/shared) */ - -DEFINE_func_8012B21C() /* dedup: shared engine-core @0x8012B21C (src/shared) */ - -DEFINE_func_8012B23C() /* dedup: shared engine-core @0x8012B23C (src/shared) */ - -DEFINE_func_8012B260() /* dedup: shared engine-core @0x8012B260 (src/shared) */ - -DEFINE_func_8012B2CC() /* dedup: shared engine-core @0x8012B2CC (src/shared) */ - -DEFINE_func_8012B370() /* dedup: shared engine-core @0x8012B370 (src/shared) */ - -DEFINE_func_8012B414() /* dedup: shared engine-core @0x8012B414 (src/shared) */ - -DEFINE_func_8012B4B8() /* dedup: shared engine-core @0x8012B4B8 (src/shared) */ - -DEFINE_func_8012B608() /* dedup: shared engine-core @0x8012B608 (src/shared) */ - -DEFINE_func_8012B6D4() /* dedup: shared engine-core @0x8012B6D4 (src/shared) */ - -DEFINE_func_8012B70C() /* dedup: shared engine-core @0x8012B70C (src/shared) */ - -DEFINE_func_8012B744() /* dedup: shared engine-core @0x8012B744 (src/shared) */ - - -DEFINE_func_8012B77C() /* dedup: shared engine-core @0x8012B77C (src/shared) */ - - -DEFINE_func_8012B864() /* dedup: shared engine-core @0x8012B864 (src/shared) */ - -DEFINE_func_8012B8A4() /* dedup: shared engine-core @0x8012B8A4 (src/shared) */ - -DEFINE_func_8012B8E4() /* dedup: shared engine-core @0x8012B8E4 (src/shared) */ - -DEFINE_func_8012BA10() /* dedup: shared engine-core @0x8012BA10 (src/shared) */ - -DEFINE_func_8012BB3C() /* dedup: shared engine-core @0x8012BB3C (src/shared) */ - -DEFINE_func_8012BC60() /* dedup: shared engine-core @0x8012BC60 (src/shared) */ - -DEFINE_func_8012BCCC() /* dedup: shared engine-core @0x8012BCCC (src/shared) */ - -DEFINE_func_8012BD14() /* dedup: shared engine-core @0x8012BD14 (src/shared) */ - -DEFINE_func_8012BD3C() /* dedup: shared engine-core @0x8012BD3C (src/shared) */ - -DEFINE_func_8012BDBC() /* dedup: shared engine-core @0x8012BDBC (src/shared) */ - -DEFINE_func_8012BE54() /* dedup: shared engine-core @0x8012BE54 (src/shared) */ - -DEFINE_func_8012BE98() /* dedup: shared engine-core @0x8012BE98 (src/shared) */ - -DEFINE_func_8012BEE8() /* dedup: shared engine-core @0x8012BEE8 (src/shared) */ - -DEFINE_func_8012BF10() /* dedup: shared engine-core @0x8012BF10 (src/shared) */ - - -void func_8012BF4C(s32 *a0, s32 a1) { - *(s32*)((s32)a0 + 0x1C) = a1; -} - - -DEFINE_func_8012BF54() /* dedup: shared engine-core @0x8012BF54 (src/shared) */ - -DEFINE_func_8012BF68() /* dedup: shared engine-core @0x8012BF68 (src/shared) */ - -DEFINE_func_8012BF7C() /* dedup: shared engine-core @0x8012BF7C (src/shared) */ - -DEFINE_func_8012BFA8() /* dedup: shared engine-core @0x8012BFA8 (src/shared) */ - -DEFINE_func_8012C044() /* dedup: shared engine-core @0x8012C044 (src/shared) */ - -DEFINE_func_8012C098() /* dedup: shared engine-core @0x8012C098 (src/shared) */ - -DEFINE_func_8012C0EC() /* dedup: shared engine-core @0x8012C0EC (src/shared) */ - -DEFINE_func_8012C194() /* dedup: shared engine-core @0x8012C194 (src/shared) */ - -DEFINE_func_8012C1B8() /* dedup: shared engine-core @0x8012C1B8 (src/shared) */ - -DEFINE_func_8012C1DC() /* dedup: shared engine-core @0x8012C1DC (src/shared) */ - -DEFINE_func_8012C218() /* dedup: shared engine-core @0x8012C218 (src/shared) */ - -DEFINE_func_8012C284() /* dedup: shared engine-core @0x8012C284 (src/shared) */ - -DEFINE_func_8012C2D0() /* dedup: shared engine-core @0x8012C2D0 (src/shared) */ - -DEFINE_func_8012C31C() /* dedup: shared engine-core @0x8012C31C (src/shared) */ - -DEFINE_func_8012C354() /* dedup: shared engine-core @0x8012C354 (src/shared) */ - -DEFINE_func_8012C438() /* dedup: shared engine-core @0x8012C438 (src/shared) */ - -DEFINE_func_8012C51C() /* dedup: shared engine-core @0x8012C51C (src/shared) */ - -DEFINE_func_8012C588() /* dedup: shared engine-core @0x8012C588 (src/shared) */ - -DEFINE_func_8012C658() /* dedup: shared engine-core @0x8012C658 (src/shared) */ - -DEFINE_func_8012C724() /* dedup: shared engine-core @0x8012C724 (src/shared) */ - -DEFINE_func_8012C750() /* dedup: shared engine-core @0x8012C750 (src/shared) */ - -DEFINE_func_8012C820() /* dedup: shared engine-core @0x8012C820 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (149 ins). Counter (*(u16 *)&D_801270C4): gcc CSE's the two reads (store to -// dst+0x36 assumed non-aliasing the global) AND folds %lo per-access — target instead RELOADS -// and keeps &(*(u16 *)&D_801270C4) in one reg. Fix = pin a `u16*` to $v1 (register asm "$3"), read via -// `*(volatile u16*)pc` (defeats CSE -> 2 loads) but STORE via plain `*pc` (non-volatile store -// schedules store-before-sll, no extra `move`). count is s16 so `count==0` -> `sll 16;bnez`. -// else-block obj must be a BLOCK-LOCAL (gcc then picks $a1, not the shared if-branch $a0). - -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern void func_80016714(void *a0, s32 a1); - -s32 func_8012C890(s32 a0, s32 a1, s32 a2) { - u8 *src = (u8 *)a0; - u8 *dst = (u8 *)a1; - u16 *d; - s16 count; - u16 v2, v4; - s32 v10; - void *obj; - - *(u16 *)(dst + 0x0) = *(u16 *)(src + 0x6); - v2 = *(u16 *)(src + 0x0); - *(u16 *)(dst + 0x6) = v2; - *(u16 *)(dst + 0x88) = v2; - v2 = *(u16 *)(src + 0x2); - *(u16 *)(dst + 0xA) = v2; - *(u16 *)(dst + 0x8A) = v2; - v4 = *(u16 *)(src + 0x4); - *(u16 *)(dst + 0xC) = 0; - *(u16 *)(dst + 0x8) = 0; - *(u16 *)(dst + 0x4) = 0; - *(u16 *)(dst + 0xE) = v4; - *(u16 *)(dst + 0x8C) = v4; - *(u16 *)(dst + 0x70) = *(u16 *)(src + 0x8); - *(u16 *)(dst + 0x72) = *(u16 *)(src + 0xA) & 0xF7FF; - *(u16 *)(dst + 0xFC) = *(u16 *)(src + 0xE); - v10 = *(s32 *)(src + 0x10); - *(s32 *)(dst + 0x78) = (s32)&D_8018D178; - *(s32 *)(dst + 0xDC) = v10; - - { - register u16 *pc __asm__("$3"); - pc = &(*(u16 *)&D_801270C4); - *(u16 *)(dst + 0x36) = *(volatile u16 *)pc; - count = *(volatile u16 *)pc + 1; - *pc = count; - if (count == 0) { - *pc = 1; - } - } - - if (a2 != 0) { - *(s32 *)(dst + 0x64) = a2; - *(s32 *)(dst + 0x68) = 0; - } else { - *(s32 *)(dst + 0x64) = 0; - *(s32 *)(dst + 0x68) = (s32)src; - } - - *(u16 *)(src + 0xA) |= 0x8000; - *(u16 *)(dst + 0x2) = 0; - d = D_801274E4; - *d &= 0xFFFE; - (*(void (**)(void *))(D_8011DB08 + *(u16 *)(dst + 0x0) * 4))(dst); - - if (*d & 1) { - s32 a1v; - obj = *(void **)(dst + 0x20); - if (obj != 0) { - s32 t = *(u16 *)obj; - if (t != 1) { - if (t != 2) { - goto done; - } - a1v = 0x38; - } else { - a1v = 0x84; - } - func_80016714(obj, a1v); - done:; - } - func_80016714(dst, 0x10C); - *(u16 *)(src + 0xA) &= 0x7FFF; - return 0; - } - - if (*(s32 *)(dst + 0x64) == 0) { - void *o = *(void **)(dst + 0x20); - if (o == 0) { - return (s32)dst; - } - if (*(u16 *)o == 1) { - s16 c = *(s16 *)(src + 0xC); - if (c != 0x7FFF) { - *(s16 *)((u8 *)o + 0x12) = c; - } - } - } - if (*(s32 *)(dst + 0x20) != 0) { - *(u16 *)(*(s32 *)(dst + 0x20) + 0x8) = *(u16 *)(dst + 0x6) + *(u16 *)(dst + 0x50); - *(u16 *)(*(s32 *)(dst + 0x20) + 0xA) = *(u16 *)(dst + 0xA) + *(u16 *)(dst + 0x52); - *(u16 *)(*(s32 *)(dst + 0x20) + 0xC) = *(u16 *)(dst + 0xE) + *(u16 *)(dst + 0x54); - } - return (s32)dst; -} - - -DEFINE_func_8012CAE4() /* dedup: shared engine-core @0x8012CAE4 (src/shared) */ - -DEFINE_func_8012CB64() /* dedup: shared engine-core @0x8012CB64 (src/shared) */ - -DEFINE_func_8012CBA4() /* dedup: shared engine-core @0x8012CBA4 (src/shared) */ - -DEFINE_func_8012CBCC() /* dedup: shared engine-core @0x8012CBCC (src/shared) */ - -DEFINE_func_8012CBF4() /* dedup: shared engine-core @0x8012CBF4 (src/shared) */ - -DEFINE_func_8012CC1C() /* dedup: shared engine-core @0x8012CC1C (src/shared) */ - -DEFINE_func_8012CC40() /* dedup: shared engine-core @0x8012CC40 (src/shared) */ - -DEFINE_func_8012CC64() /* dedup: shared engine-core @0x8012CC64 (src/shared) */ - - -DEFINE_func_8012CC88() /* dedup: shared engine-core @0x8012CC88 (src/shared) */ - - -DEFINE_func_8012CE2C() /* dedup: shared engine-core @0x8012CE2C (src/shared) */ - -DEFINE_func_8012CEB0() /* dedup: shared engine-core @0x8012CEB0 (src/shared) */ - -DEFINE_func_8012CFA8() /* dedup: shared engine-core @0x8012CFA8 (src/shared) */ - -DEFINE_func_8012D098() /* dedup: shared engine-core @0x8012D098 (src/shared) */ - -DEFINE_func_8012D38C() /* dedup: shared engine-core @0x8012D38C (src/shared) */ - -DEFINE_func_8012D3AC() /* dedup: shared engine-core @0x8012D3AC (src/shared) */ - -DEFINE_func_8012D3B4() /* dedup: shared engine-core @0x8012D3B4 (src/shared) */ - -DEFINE_func_8012D4B4() /* dedup: shared engine-core @0x8012D4B4 (src/shared) */ - -DEFINE_func_8012D5DC() /* dedup: shared engine-core @0x8012D5DC (src/shared) */ - -DEFINE_func_8012D5E4() /* dedup: shared engine-core @0x8012D5E4 (src/shared) */ - -DEFINE_func_8012D624() /* dedup: shared engine-core @0x8012D624 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH - - - -int func_8012D664(int arg0, int arg1, int arg2) { - extern int func_8012F568(); - extern int D_80189CA4; - - struct S8012D664_8012D664 s; - int ret; - int t; - - s.a = (*(unsigned short*)&D_80126B5E); - s.b = (*(unsigned short*)&D_80126B62) - 0x40; - s.c = (*(unsigned short*)&D_80126B66); - ret = ((int(*)())func_800132BC)(arg0, &s); - t = arg1 + 0x20; - if (ret < t * t) { - func_8012F568(1, 1, 0, arg2, arg0, &D_80189CA4); - return 1; - } - return 0; -} - - - -DEFINE_func_8012D714() /* dedup: shared engine-core @0x8012D714 (src/shared) */ - - - -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; - -s32 func_8012DB84(void) -{ - func_8014C978(); - func_8012F568(1, 0xC001, 0, 0x3E8, &D_80189CAC, &D_80189CB4); -} - - -DEFINE_func_8012DBD0() /* dedup: shared engine-core @0x8012DBD0 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH - - - - -s32 func_8012DDA4() -{ - extern Entry_8012DDA4 * D_801D2F0C; - extern Entry_8012DDA4 * D_801D2F08; - - Entry_8012DDA4 *p; - Entry_8012DDA4 *end = ((Entry_8012DDA4 *)D_80126720); - - while (D_801D2F0C != end) { - p = D_801D2F0C; - if (p->active != 0 && p != D_801D2F08) { - D_801D2F0C = p + 1; - return p; - } - D_801D2F0C++; - } - D_801D2F0C = 0; - return 0; -} - - - -// @class: plumbing -// @stuck: none — MATCH (35/35 ins, relocation-masked) - - -s32 func_8012DE2C(s32 a0) { - extern u8 * D_801D2F0C; - extern u8 * D_801D2F08; - - u8 *base; - u8 *end; - u8 *p; - - base = D_801202A0; - end = base + 0x6480; - D_801D2F0C = base; - D_801D2F08 = ((u8 *)a0); - - while (D_801D2F0C != end) { - p = D_801D2F0C; - if (*(u16 *)p != 0 && p != ((u8 *)a0)) { - D_801D2F0C = p + 0x10C; - return p; - } - D_801D2F0C += 0x10C; - } - D_801D2F0C = 0; - return 0; -} - - - -DEFINE_func_8012DEB8() /* dedup: shared engine-core @0x8012DEB8 (src/shared) */ - -DEFINE_func_8012DF34() /* dedup: shared engine-core @0x8012DF34 (src/shared) */ - -DEFINE_func_8012DFBC() /* dedup: shared engine-core @0x8012DFBC (src/shared) */ - -DEFINE_func_8012DFCC() /* dedup: shared engine-core @0x8012DFCC (src/shared) */ - -DEFINE_func_8012DFD4() /* dedup: shared engine-core @0x8012DFD4 (src/shared) */ - -DEFINE_func_8012E014() /* dedup: shared engine-core @0x8012E014 (src/shared) */ - -DEFINE_func_8012E138() /* dedup: shared engine-core @0x8012E138 (src/shared) */ - - -s32 func_8012E27C(void) { - return 1; -} - - -DEFINE_func_8012E284() /* dedup: shared engine-core @0x8012E284 (src/shared) */ - -DEFINE_func_8012E28C() /* dedup: shared engine-core @0x8012E28C (src/shared) */ - -DEFINE_func_8012E32C() /* dedup: shared engine-core @0x8012E32C (src/shared) */ - - -/* func_8012E364 (ov_SC01_077_jr_8012ACE0) — MATCH, 67/67 ins, 0 mismatched (reloc-masked). - * - * Verified: - * python3 tools/match_one.py func_8012E364 --c .run/near6/wave23/func_8012E364.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8012ACE0 - * -> MATCH (67 ins) func_8012E364 - * - * Symbols: sig_hints listed no callees and no data decls for this fn, so the three externs below - * are derived from the asm's %hi/%lo pairs: - * D_80126CE0 -> `lh` (0x8012E370) => s16 - * D_801D2F00 -> `lw`/`sw` => s32 - * D_801D2F04 -> `lw`/`sw` => s32 - * D_80126CE0 is already declared `extern s16 D_80126CE0;` inside ov_SC03_099_jr_8016AB6C.c etc., - * so the s16 typing is consistent with the rest of the tree. - * - * --------------------------------------------------------------------------------------------- - * HOW THE LAST 7 SLOTS CAME OFF (wave22 plateaued here at closeness 7; that header's - * "genuine regalloc hard tail / not C-expressible" verdict was WRONG on both clusters). - * - * CLUSTER B - idx 59-62 (`nop`/`negu $v1,$v1` vs `addu $v0,$v1,$zero`/`negu $v0,$v0`): 7 -> 3. - * NOT a delay-slot (dbr) residual at all. `mips.md:1526 abssi2` is a 3-instruction `multi` - * template that emits its OWN branch AND fills its OWN slot: - * REGNO(op0) == REGNO(op1): "bgez %1,1f%#\n\tsubu %0,%z2,%0\n1:" (slot -> maspsx nop) - * REGNO(op0) != REGNO(op1): "%(bgez %1,1f\n\tmove %0,%1\n\tsubu %0,%z2,%0\n1:%)" - * The target IS the second form (`.set noreorder` + `move` in the slot). So the whole residual - * was one question: does the abs DEST get a different hard reg from its SOURCE? - * Two edits, both required: - * (a) spell the abs as `__builtin_abs(v)` so a real `(abs:SI ...)` insn exists. A hand-rolled - * `d = v; if (d<0) d = -d;` is equivalent (cse folds it to the same abs insn - the wave22 - * draft was ALREADY going through abssi2, it just hit the dest==src arm), but a - * `(v<0) ? -v : v` ternary does NOT fold here: 68 ins, 19 off. - * (b) PIN the abs result to $2. Unpinned, local-alloc's combine_regs (K8) ties the abs dest - * into its dying input `v` -> REGNO(op0)==REGNO(op1) -> the nop form. Measured: the same - * file with `s32 d;` instead of the pin is 5 off; with the pin, 3 off. - * (Rejected on measurement: `d = v; asm("" :: "r"(v))` dead-read to break the tie = 68 ins/13; - * RC-12 `$0`-add opaque copy = 9; pinning d to $3 = 5.) - * - * CLUSTER A - idx 43-45 (the D_801D2F04 load vs the 0x20($a2) load, swapped): 3 -> MATCH. - * Pure sched1 rank, and it IS steerable (sched.md S2, the birthing boost). The `.i.sched` dump - * of the wave22 draft says it outright: - * ;; insn[ 104]: priority = 1 (prev = D_801D2F04) - * ;; insn[ 107]: priority = 1 (a = *(arg0+0x20)) - * ;; ready list at T-17: 107 (1) 104 (7f000001), now 104 107 - * Equal base priority, but 104 carries the `adjust_priority`/`birthing_insn_p` boost - * (sched.c:2506/2469 - `reg_n_sets[dest] == 1`) and 107 does NOT, because wave22 reused ONE - * variable `a` for four roles (hint value, division result, both tail entity loads) -> 4 sets. - * Backward scheduling means picked-first = placed-LAST, so the boosted 104 got pushed BELOW 107. - * Fix: give each tail entity load its own single-set local (`e1`, `e2`). Now both loads are - * boosted, the rank falls through to `rank_for_schedule`'s LUID tie-break (sched.c:2427, - * "highest LUID first" = ascending source order forward) and the two loads come out in - * statement order = the target order. - * NB the wave22 header's claim "splitting `a` regresses 2 slots" only applies to splitting the - * FIRST two roles (hint value / division result) - those must stay one multi-set cross-block - * variable. Splitting only the TAIL roles is what pays. - * - * LOAD-BEARING constructs (do not "simplify"): - * 1. `spd` - a local holding 0x1000 SET BEFORE the if/else chain, so the constant lives in a - * pseudo across the branch: `addiu $a3,$zero,0x1000` in the `blez` slot at 0x8012E3DC and the - * `sw $a3` / `addu $v1,$v1,$a3` forms at L8012E410. - * 2. `a` reused for the D_80126CE0 value AND the division result (multi-set, cross-block) - that - * is what puts the quotient in $a0 (`subu $a0,$v0,$v1`) instead of coalescing into $v0. - * 3. `flags` pinned to $2 (dropping it = 13 off) and `prev` pinned to $5 (dropping it = 6 off). - * 4. `d` pinned to $2 - see CLUSTER B(b). - * 5. `e1`/`e2` must be SEPARATE single-set locals - see CLUSTER A. - * The `arg0` $6 pin is NOT load-bearing any more (verified: still MATCH without it); it is kept - * because it costs nothing and documents the target's `addu $a2,$a0,$zero`. - */ - -void func_8012E364(s32 arg0_) -{ - - extern s16 D_80126CE0; - extern s32 D_801D2F00; - extern s32 D_801D2F04; - register s32 arg0 __asm__("$6"); - register s32 prev __asm__("$5"); - register u16 flags __asm__("$2"); - s32 a; - s32 diff; - s32 v; - register s32 d __asm__("$2"); - s32 spd; - s32 e1; - s32 e2; - - arg0 = arg0_; - *(s16 *)(arg0 + 0x5C) = 0; - a = D_80126CE0; - if (a == 0) { - D_801D2F00 = 0x1000; - D_801D2F04 = 0x1000; - } - a = ((0x90 - a) << 12) / 0x90; - *(s32 *)(arg0 + 0x1C) += 1; - spd = 0x1000; - - diff = D_801D2F00 - a; - if (diff > 0) { - D_801D2F00 -= diff >> 2; - } else if (diff < 0) { - D_801D2F00 += (-diff) / 4; - } - - prev = D_801D2F04; - e1 = *(s32 *)(arg0 + 0x20); - v = D_801D2F00 - prev + spd; - D_801D2F04 = spd; - flags = *(u16 *)(e1 + 0x2C); - D_801D2F00 = v; - *(u16 *)(e1 + 0x2C) = flags | 0x10; - - e2 = *(s32 *)(arg0 + 0x20); - d = __builtin_abs(v); - *(s16 *)(e2 + 0x1C) = d; - *(s16 *)(e2 + 0x18) = d; - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x1A) = 0x1000; -} - - -DEFINE_func_8012E470() /* dedup: shared engine-core @0x8012E470 (src/shared) */ - -DEFINE_func_8012E4C8() /* dedup: shared engine-core @0x8012E4C8 (src/shared) */ - -DEFINE_func_8012E504() /* dedup: shared engine-core @0x8012E504 (src/shared) */ - -DEFINE_func_8012E544() /* dedup: shared engine-core @0x8012E544 (src/shared) */ - -DEFINE_func_8012E57C() /* dedup: shared engine-core @0x8012E57C (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH -DEFINE_func_8012E5CC() /* dedup: shared engine-core @0x8012E5CC (src/shared) */ - - -DEFINE_func_8012E688() /* dedup: shared engine-core @0x8012E688 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldlv0(r0) __asm__ volatile ( \ - "lhu $13, 4( %0 );" \ - "lhu $12, 0( %0 );" \ - "sll $13, $13, 16;" \ - "or $12, $12, $13;" \ - "mtc2 $12, $0;" \ - "lwc2 $1, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "$13" ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) - - - -DEFINE_func_8012E778() /* dedup: shared engine-core @0x8012E778 (src/shared) */ - - -DEFINE_func_8012E88C() /* dedup: shared engine-core @0x8012E88C (src/shared) */ - -DEFINE_func_8012E8A8() /* dedup: shared engine-core @0x8012E8A8 (src/shared) */ - -DEFINE_func_8012E8C4() /* dedup: shared engine-core @0x8012E8C4 (src/shared) */ - -DEFINE_func_8012E8E0() /* dedup: shared engine-core @0x8012E8E0 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (branch-polarity invert: `0x78 != 0` puts compute block as fall-through) - -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; - -void func_8012E9C0(int param_1) -{ - int iVar1; - - if (*(short *)(param_1 + 0x60) != 0) { - if (*(unsigned char *)(param_1 + 0x5e) == 0x1d) { - *(short *)(param_1 + 0x82) = 0; - *(short *)(param_1 + 0x7c) = *(unsigned short *)(param_1 + 6); - *(short *)(param_1 + 0x7e) = *(unsigned short *)(param_1 + 0xa); - *(short *)(param_1 + 0x80) = *(unsigned short *)(param_1 + 0xe); - } - if (*(int *)(param_1 + 0x78) != 0) { - iVar1 = *(short *)(param_1 + 0x60) * - *(short *)(*(int *)(param_1 + 0x78) + 0x30) >> 0xc; - if (iVar1 < 1) { - iVar1 = 1; - } - } else { - iVar1 = *(short *)(param_1 + 0x60); - } - func_8016AA50(param_1, iVar1); - if ((*(unsigned short *)(param_1 + 0x82) & 1) != 0) { - func_8016B428(param_1); - func_80019064(&D_80189CBC); - } - } - return; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (93 ins) - - -extern void func_80049CAC(s32 a0, s32 a1); - -/* Blk16 lifted to src/shared/engine_types.h (Phase 22). */ - -DEFINE_func_8012EA90() /* dedup: shared engine-core @0x8012EA90 (src/shared) */ - - -DEFINE_func_8012EC04() /* dedup: shared engine-core @0x8012EC04 (src/shared) */ - -DEFINE_func_8012EECC() /* dedup: shared engine-core @0x8012EECC (src/shared) */ - -DEFINE_func_8012EF34() /* dedup: shared engine-core @0x8012EF34 (src/shared) */ - -DEFINE_func_8012EF70() /* dedup: shared engine-core @0x8012EF70 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtps() __asm__ volatile ("nop;nop;rtps") -#define gte_stsxy(r0) __asm__ volatile ( \ - "swc2 $14, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -/* §37/§124 asm-label alias: the fleet canon declares this `extern void - * func_8012EFB8(s32 a0);` inside the DEFINE_func_* macros in - * src/shared/engine_core.h (the one at src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c:1169 - * comes from DEFINE_func_8012EF70()). The byte-true body returns s32 and takes - * TWO pointers, so it conflicts on BOTH the return axis and the arity axis. - * Aliasing the C name sidesteps both with no header edit and no codegen change. - * This declaration MUST travel with the body. */ -s32 aF8012EFB8(void *param_1, void *param_2) __asm__("func_8012EFB8"); - -DEFINE_func_8012EFB8() /* dedup: shared engine-core @0x8012EFB8 (src/shared) */ - - - -// @class: other -// @stuck: none — MATCH (33 ins, match_one verified) - -DEFINE_func_8012F038() /* dedup: shared engine-core @0x8012F038 (src/shared) */ - - -DEFINE_func_8012F0BC() /* dedup: shared engine-core @0x8012F0BC (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (clone of confirmed func_8012F214 template; passthrough a0) -DEFINE_func_8012F14C() /* dedup: shared engine-core @0x8012F14C (src/shared) */ - - -DEFINE_func_8012F1A4() /* dedup: shared engine-core @0x8012F1A4 (src/shared) */ - -DEFINE_func_8012F214() /* dedup: shared engine-core @0x8012F214 (src/shared) */ - -DEFINE_func_8012F274() /* dedup: shared engine-core @0x8012F274 (src/shared) */ - -DEFINE_func_8012F2E8() /* dedup: shared engine-core @0x8012F2E8 (src/shared) */ - -DEFINE_func_8012F374() /* dedup: shared engine-core @0x8012F374 (src/shared) */ - - - -// @class: remat -// @stuck: none — MATCH - -DEFINE_func_8012F40C() /* dedup: shared engine-core @0x8012F40C (src/shared) */ - - -DEFINE_func_8012F49C() /* dedup: shared engine-core @0x8012F49C (src/shared) */ - -DEFINE_func_8012F568() /* dedup: shared engine-core @0x8012F568 (src/shared) */ - -DEFINE_func_8012F5F4() /* dedup: shared engine-core @0x8012F5F4 (src/shared) */ - -DEFINE_func_8012F68C() /* dedup: shared engine-core @0x8012F68C (src/shared) */ - -DEFINE_func_8012F75C() /* dedup: shared engine-core @0x8012F75C (src/shared) */ - -DEFINE_func_8012F7B4() /* dedup: shared engine-core @0x8012F7B4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; - -void func_8012F828(int param_1) -{ - *(unsigned char *)(param_1 + 0xC1) = 4; - if (*(unsigned int *)(param_1 + 0xB4) & 8) { - func_80131170(param_1, D_80189CD8, 0xB); - } - func_80131CA8(param_1, 9); -} - - -DEFINE_func_8012F87C() /* dedup: shared engine-core @0x8012F87C (src/shared) */ - - -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern void func_80131CA8(int a0, int a1); -extern u8 D_80189CE4[]; - -void func_8012F8C8(u8* arg0) { - *(u8*)(arg0 + 0xC1) = 7; - if (*(u32*)(arg0 + 0xB4) & 0x80) { - ((void (*)(void*, void*, s32))func_80131170)(arg0, D_80189CE4, 0xB); - } - ((void (*)(void*, s32))func_80131CA8)(arg0, 0x16); -} - - -DEFINE_func_8012F91C() /* dedup: shared engine-core @0x8012F91C (src/shared) */ - -DEFINE_func_8012F968() /* dedup: shared engine-core @0x8012F968 (src/shared) */ - -DEFINE_func_8012FB54() /* dedup: shared engine-core @0x8012FB54 (src/shared) */ - -DEFINE_func_8012FC30() /* dedup: shared engine-core @0x8012FC30 (src/shared) */ - -DEFINE_func_8012FCA4() /* dedup: shared engine-core @0x8012FCA4 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (57 ins), byte-exact via rtu_match on the real TU. -// ROOT CAUSE of the prior 3-off "irreducible schedule-steal": the wave-2 draft had the WRONG ARITY for -// func_80131B14. It cast the call to (int,int) and passed (param_1, 0x1C), which forced `li a1,0x1C` to be -// func_80131B14's OWN arg. That premise made the beqz-delay `li a1,0x1C` / jal-delay `move a0,s0` look like an -// un-reorderable {li,move} schedule-steal (calls.c emits a0 first; sched2 keeps LUID; reorg swaps them). -// THE FIX: func_80131B14 takes ONE arg — ((void(*)(int))func_80131B14)(param_1). Then: -// - func_80131B14's own delay slot = `move a0,s0` (its a0 arg), and a1 is NOT live across it. -// - the `li a1,0x1C` in the beqz(0x100) delay slot is the TERMINAL func_80131CA8(param_1,0x1C)'s arg, which -// reorg fill_slots_from_thread shares into the delay slot for the beqz-taken (else) edge FOR FREE, because -// a1 is dead on the fall-through (1-arg func_80131B14 never reads a1) so there is no resource conflict. -// No barrier, no register pin, no schedule mutation — the correct arity makes the target schedule fall out -// of stock gcc-2.7.2 reorg. (Lesson for the cookbook: before conceding a delay-slot "steal" as irreducible, -// re-derive the CALLEE ARITY from the asm — a spurious extra register arg that is live across the call is what -// blocks reorg from sharing a downstream constant into a branch delay slot.) - - -s32 func_8012FCC4(s32 param_1) { - extern int D_80189CF0; - - int v1 = *(int *)(((int)param_1) + 0xC4); - *(char *)(((int)param_1) + 0xC1) = 8; - if (v1 & 2) { - *(char *)(((int)param_1) + 0xC1) = 1; - func_80131CA8(((int)param_1), 3); - return; - } - if (v1 & 1) { - ((void (*)(int, int))func_80131E00)(((int)param_1), 1); - return; - } - if (*(int *)(((int)param_1) + 0xB4) & 0x100) { - ((void (*)(int))func_80131B14)(((int)param_1)); - if (*(short *)(((int)param_1) + 0x76) <= 0) { - ((void (*)(int, int))func_80131E00)(((int)param_1), 0xC); - return; - } - if (((s32(*)(s32, s32))func_80131A34)(((int)param_1), 4) != 0) { - *(char *)(((int)param_1) + 0xC2) = 0; - } else { - *(short *)(((int)param_1) + 0x98) = 0; - *(char *)(((int)param_1) + 0xC2) = 1; - } - ((void (*)(int, void *))func_8012B14C)(((int)param_1), &D_80189CF0); - *(int *)(((int)param_1) + 0x1C) = 0; - func_80131CA8(((int)param_1), 0x1C); - return; - } - func_80131CA8(((int)param_1), 0x1C); -} - - - -DEFINE_func_8012FDA8() /* dedup: shared engine-core @0x8012FDA8 (src/shared) */ - -DEFINE_func_8012FE70() /* dedup: shared engine-core @0x8012FE70 (src/shared) */ - -DEFINE_func_8012FF00() /* dedup: shared engine-core @0x8012FF00 (src/shared) */ - -DEFINE_func_8012FF4C() /* dedup: shared engine-core @0x8012FF4C (src/shared) */ - -DEFINE_func_8012FF98() /* dedup: shared engine-core @0x8012FF98 (src/shared) */ - -DEFINE_func_8013001C() /* dedup: shared engine-core @0x8013001C (src/shared) */ - -DEFINE_func_80130088() /* dedup: shared engine-core @0x80130088 (src/shared) */ - -DEFINE_func_801300F4() /* dedup: shared engine-core @0x801300F4 (src/shared) */ - -DEFINE_func_801301E8() /* dedup: shared engine-core @0x801301E8 (src/shared) */ - -DEFINE_func_80130278() /* dedup: shared engine-core @0x80130278 (src/shared) */ - -DEFINE_func_80130314() /* dedup: shared engine-core @0x80130314 (src/shared) */ - -DEFINE_func_80130360() /* dedup: shared engine-core @0x80130360 (src/shared) */ - -DEFINE_func_801303A0() /* dedup: shared engine-core @0x801303A0 (src/shared) */ - -DEFINE_func_801303EC() /* dedup: shared engine-core @0x801303EC (src/shared) */ - -DEFINE_func_80130438() /* dedup: shared engine-core @0x80130438 (src/shared) */ - -DEFINE_func_80130514() /* dedup: shared engine-core @0x80130514 (src/shared) */ - -DEFINE_func_801305CC() /* dedup: shared engine-core @0x801305CC (src/shared) */ - -DEFINE_func_80130650() /* dedup: shared engine-core @0x80130650 (src/shared) */ - -DEFINE_func_80130740() /* dedup: shared engine-core @0x80130740 (src/shared) */ - -DEFINE_func_801307B0() /* dedup: shared engine-core @0x801307B0 (src/shared) */ - -DEFINE_func_80130858() /* dedup: shared engine-core @0x80130858 (src/shared) */ - -DEFINE_func_80130898() /* dedup: shared engine-core @0x80130898 (src/shared) */ - -DEFINE_func_801308DC() /* dedup: shared engine-core @0x801308DC (src/shared) */ - -DEFINE_func_80130974() /* dedup: shared engine-core @0x80130974 (src/shared) */ - -DEFINE_func_80130A18() /* dedup: shared engine-core @0x80130A18 (src/shared) */ - -DEFINE_func_80130AC4() /* dedup: shared engine-core @0x80130AC4 (src/shared) */ - -DEFINE_func_80130AF0() /* dedup: shared engine-core @0x80130AF0 (src/shared) */ - -DEFINE_func_80130C08() /* dedup: shared engine-core @0x80130C08 (src/shared) */ - - -extern void (*D_80189CF8[])(void); - -void func_80130D0C(void *a0) { - D_80189CF8[*(u8 *)((s32)a0 + 0xC1)](); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (266/266). Levers: pin pa=$s2 p=$s3, tbl=$s0 (NOT s1v — leave natural so switch-mask lands in $v1); tight-block pins for the table-addr temps `register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2")` force offset=$v1/base=$v0 (else compute-into-dest $s0); inline offset `TABLE + s1v*2` (late) keeps the 2-sll delay-slot dup; 0x60000 reuses `tbl` (not a fresh `e`) so it stays $s0 and materializes after rand(). -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; - -void func_80130D48(s32 arg0) -{ - register s16 *tbl __asm__("$16"); - register s32 pa __asm__("$18") = arg0; - register u8 *p __asm__("$19") = D_80078E78; - s32 s1v; - s32 call_a0; - s32 call_a1; - s32 cnt; - s32 r; - void *ret; - - s1v = func_80131CF4(*(s32 *)((s8 *)pa + 0xBC), 0x15); - if (s1v == 0) { - return; - } - - if (*(u8 *)((s8 *)pa + 0x5E) == 0xB) { - call_a0 = 0x33; - call_a1 = 0; - goto do_call; - } - - switch (s1v & 0xFFFF0000) { - case 0x10000: { - u32 x = D_80078EB4; - u32 y = D_80078EB2; - u32 b; - u32 a; - - s1v = 0; - if (x == y) { - s1v = 0xC; - } else if ((y >> 1) >= x) { - s1v = 3; - } - - b = *(u16 *)(p + 0x40); - a = *(u16 *)(p + 0x3E); - if (b == a) { - s1v += 0x18; - } else if ((a >> 1) >= b) { - s1v += 6; - } - { register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2"); v1 = s1v * 2; bp = (s8 *)D_80189D78; tbl = (s16 *)(bp + v1); } - - r = rand() % 100; - cnt = 0; - loop27: - if (r >= *tbl) { - cnt += 1; - tbl += 1; - if (cnt < 3) { - goto loop27; - } - } - - s1v = 0; - switch (cnt) { - case 0: - tbl = D_80189DD8; - s1v = 0x31; - break; - case 1: { - s32 mx = *(u16 *)(p + 0x3A); - s32 cur = *(u16 *)(p + 0x3C); - if (((mx * 7) / 10) >= cur) { - s1v = 4; - if ((mx / 2) >= cur) { - s1v = 8; - if ((mx / 5) >= cur) { - s1v = 0xC; - } - } - } - { register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2"); v1 = s1v * 2; bp = (s8 *)D_80189DE0; tbl = (s16 *)(bp + v1); } - s1v = 0x32; - break; - } - case 2: { - s32 mx = *(u16 *)(p + 0x3E); - s32 cur = *(u16 *)(p + 0x40); - if (((mx * 7) / 10) >= cur) { - s1v = 4; - if ((mx / 2) >= cur) { - s1v = 8; - if ((mx / 5) >= cur) { - s1v = 0xC; - } - } - } - { register s32 v1 __asm__("$3"); register s8 *bp __asm__("$2"); v1 = s1v * 2; bp = (s8 *)D_80189E00; tbl = (s16 *)(bp + v1); } - s1v = 0x33; - break; - } - } - - r = rand() % 100; - call_a1 = 0; - loop50: - if (r >= *tbl) { - call_a1 += 1; - tbl += 1; - if (call_a1 < 4) { - goto loop50; - } - } - call_a0 = s1v; - goto do_call; - } - case 0x20000: - call_a0 = 0x33; - call_a1 = 0; - goto do_call; - case 0x30000: - call_a0 = 0x31; - call_a1 = 0; - goto do_call; - case 0x40000: - call_a0 = 0x32; - call_a1 = 0; - goto do_call; - case 0x50000: - call_a0 = 0x33; - call_a1 = 0; - goto do_call; - case 0x60000: { - s32 rr = rand() & 0xFF; - tbl = D_80189D48; - if (rr >= *tbl) { - do { - tbl += 3; - } while (rr >= *tbl); - } - call_a0 = tbl[1]; - if (*(u16 *)(p + 0x40) < 4U) { - call_a0 = 0x33; - } - call_a1 = tbl[2]; - goto do_call; - } - case 0x70000: - call_a0 = 0x27B; - call_a1 = 0; - goto do_call; - default: - return; - } - -do_call: - ret = func_8012C658(call_a0, call_a1, pa); - if (ret != 0) { - *(u16 *)((s8 *)ret + 0xA) -= 0x20; - } -} - - -// @class: loop-guard -// @stuck: none — MATCH (88 ins). Keys: duplicate the c!=0/c==0 bodies verbatim (gcc cross-jumps -// the shared "|=4;goto tail" into L240 on its own); tail dispatch as `if (((s32(*)(s32))func_8012BCCC)(p) <= 0x8FFF)` -// (the <= polarity makes the >0x8FFF/0x33-first block the bnez'd else=L298, fall-through = 0x32-first); -// both AC8 tails cross-jump-merge into the shared L2AC final call. Externs aligned to the file's -// existing decls for gate-safety: func_80131B14(void) [file line 1486], func_8012B14C/func_8012BCCC -// canonical (s32) [DEFINE macros], ((s32(*)())func_80131AC8)() no-proto (compatible w/ later 1-arg DEFINE, 2-arg call). - - -void func_80131170(s32 p, s32 b, s32 c) { - extern u8 D_80189CCC[]; - - func_80131B14(); - *(u8 *)(((u8 *)p) + 0xC2) = 0; - *(u8 *)(((u8 *)p) + 0xC3) = 0; - *(s16 *)(((u8 *)p) + 0x98) = 0; - if (((u8 *)b) == 0) { - ((u8 *)b) = D_80189CCC; - } - func_8012B14C((s32)((u8 *)p), (s32)((u8 *)b)); - *(s32 *)(((u8 *)p) + 0x1C) = 0; - if (c != 0) { - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), c) != 0) goto tail; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x24) != 0) goto tail; - *(s32 *)(((u8 *)p) + 0xC4) &= ~4; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x20) != 0) { - *(s32 *)(((u8 *)p) + 0xC4) |= 4; - } else { - *(s16 *)(((u8 *)p) + 0x98) = 0; - } - } else { - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x24) != 0) goto tail; - *(s32 *)(((u8 *)p) + 0xC4) &= ~4; - if (((s32(*)(s32, s32))func_80131A34)((s32)((u8 *)p), 0x20) != 0) { - *(s32 *)(((u8 *)p) + 0xC4) |= 4; - } else { - *(s16 *)(((u8 *)p) + 0x98) = 0; - } - } -tail: - if (*(s16 *)(((u8 *)p) + 0x76) > 0) { - return; - } - if (((s32(*)(s32))func_8012BCCC)((s32)((u8 *)p)) <= 0x8FFF) { - if (((s32(*)())func_80131AC8)(((u8 *)p), 0x32) != 0) return; - ((s32(*)())func_80131AC8)(((u8 *)p), 0x33); - } else { - if (((s32(*)())func_80131AC8)(((u8 *)p), 0x33) != 0) return; - ((s32(*)())func_80131AC8)(((u8 *)p), 0x32); - } -} - - - -// @class: struct -// @stuck: none — MATCH (8-byte alignment-1 struct copy → lwl/lwr/swl/swr) - - /* size 8, alignment 1 -> unaligned copy */ - - -s32 func_801312D0(s32 param_1, void *param_2) -{ - extern int func_80131CF4(int, int); - extern M8_801312D0 D_80189E20; - - int iVar5; - - iVar5 = func_80131CF4(*(int *)(((int)param_1) + 0xBC), 0x2E); - if (iVar5 != 0) { - ((short *)param_2)[2] = 0; - ((short *)param_2)[0] = 0; - ((short *)param_2)[1] = (short)iVar5; - } else { - *(M8_801312D0 *)((short *)param_2) = D_80189E20; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (424/424). Verified TWICE: match_one 424/424 standalone AND 424/424 -// relocation-masked through the REAL src/ov_SC01_077/ov_SC01_077_jr_8012ACE0.c at the -// func_80131340 slot (L1635) with every DEFINE_ macro expanded (cpp -> cc1 -> maspsx -// --expand-div -> as, exit 0, zero `conflicting types`). -// -// --------------------------------------------------------------------------------------- -// THE TWO LEVERS THAT CRACKED IT (both byte-proven; do not "clean up"): -// -// (1) `case 0: case 1:` SHARE one block. jtbl_801D8144 (read from the sibling overlay data, -// asm/ov_SC03_099/data/tail2.data.s @801BCE68) is -// [0]=0x80131440 [1]=0x80131440 [2]=0x80131634 [3]=0x8013174C [4]=0x801318F4 -// — two entries point at the SAME block. That is the ONLY reason the shared block -// re-tests `*(u8*)(a0+0xC2) == 0` to gate its vector-init half (gcc-2.7.2 has no VRP, -// so the switch value is not propagated into the case body). -// -// (2) CROSS-JUMP POLARITY (§5a, the 4-instruction shortfall). The `lh 0x76` / E00-vs-C78 -// if-else appears TWICE (case 3's tail @801318DC and case 4 @80131944). Both arms must -// be written `if (x <= 0) E00(a0,6); else C78(a0);` — the SAME polarity in BOTH sites. -// Writing case 3 as the "natural" `if (x > 0) C78 else E00` compiles 4 ins SHORT: gcc -// merges case 3's ENTIRE tail into case 4's (`j` straight to the shared `lh`). -// Why (ground-truthed against tools/reference/gcc-2.7.2/jump.c): -// - jump.c:1969 `find_cross_jump(insn, target, 2, ...)` pairs each `j Lend` with every -// OTHER jump to Lend (the jump_chain) and merges BACKWARD while -// `rtx_renumbered_equal_p` holds. The forward walk hits the LOWER address first, so -// case 3 is always e1 (deleted/redirected) and case 4 is e2 (kept) — hence the -// surviving .L80131954/.L80131964 bodies physically live in case 4. -// - With the matching polarity, case 3's FIRST `j` is the E00 body -> it merges into -// .L80131954, leaving `bgtz -> Lelse; j .L80131954; Lelse:`. Lelse now sits directly -// after the `j`, so jump.c's conditional-jump-around-an-unconditional-jump transform -// fires and INVERTS it to `blez -> .L80131954`; the C78 body then merges into -// .L80131964, giving exactly `blez .L80131954 / j .L80131964`. The two sites are now -// textually different (blez+j vs bgtz+fallthru), so find_cross_jump stops at the -// branch and both `lh` blocks survive. That asymmetric-looking output is EMITTED BY -// symmetric source — the inversion is what creates the asymmetry. -// - With the opposite polarity in case 3, the C78 body merges FIRST, the inversion -// fires the other way, and case 3 becomes byte-identical to case 4 -> fully merged. -// NOTE: the §5a volatile-asm barrier is the WRONG tool here — it would also un-merge the -// .L80131954/.L80131964 call bodies (+8 ins). The fix is polarity, not a barrier. -// -// OTHER BYTE-PROVEN KEYS: -// - Two SEPARATE locals for the two func_80131CF4 results. Reusing one `temp` lets gcc -// coalesce it into $a1 for the second call and emits an extra `move a1,v0` up at the -// FIRST call site (+1 ins, whole-function cascade). -// - The /3 store block: `*(s32*)(a0+0x14) = (-D_801D2F14)/3;` must come FIRST (before the -// 0x1C/0xC2 stores). Written after them, gcc will not hoist the D_801D2F14 load above -// `sw zero,0x1C($s0)` and the mult-latency slots fill differently (9 ins reordered). -// - sp10/18/20/28 are four 8-byte, 2-byte-aligned vectors. `sp28 = sp20` is a DEAD -// aggregate copy that gcc-2.7.2 KEEPS (no aggregate DSE) — it is load-bearing, not dead -// code. align(2) < 4 is what makes the copies lwl/lwr + swl/swr (cf. the TU's own `M8` -// align-1 idiom at L1614, used by func_801312D0 directly above this slot). -// - Every vector field read is `lhu` -> the fields are u16. Contrast `lh 0xA($s0)`, -// `lh 0x76($s0)`, `lh 0x12($v0)`, which are genuinely signed (s16 casts). -// - `func_801319E0(a0)` gets a NOP delay slot, not `addu $a0,$s0,$zero`: cse-2.7.2 deletes -// the redundant arg copy because $a0 still holds the param at the first call. Declaring -// it 0-arg to "explain" the nop would be wrong (canonical is 1-arg) — just call it. -// - `*(s32*)(a0+0x10) = *(s32*)(a0+0x10) * 15 / 16;` -> (x<<4)-x then the bgez/+0xF/sra-4 -// signed-div-by-16 fixup. `>>4` would drop the fixup. -// - func_80131D68 is 2-arg here — (a0, D_801D2F10); a1 is reloaded from the global before -// all 5 of its call sites (the value is NOT cached in a callee reg: gcc-2.7.2's cse is -// extended-basic-block-local, so each join point reloads). -// -// DECL RECONCILE (§17a-1) — the TU declares these at FILE scope BEFORE this slot (L1635), -// so they are HARD `conflicting types` if redeclared differently. Sigs below are byte-copies -// of the canonical set; where the canonical return is `void` but the asm USES $v0, the read -// is done with a call-site cast (the codebase's own idiom, engine_core.h L17026) — which is -// codegen-neutral: -// - func_8012CBF4 / func_8012CBA4 / func_8012CC64: canonical `void`, $v0 used -> cast. -// - func_80131E00: canonical takes `struct S80131E00 *` -> declared K&R no-proto here -// (compatible with the prototyped decl at L1250; params are promotion-safe: ptr + s32), -// matching the TU's own precedent `extern void func_80131CA8();` at L1189. -// - func_8012B23C / func_8012CC64 / func_8012CEB0 / func_8012DBD0 / func_8012CBF4 are -// DEFINE_-instantiated ABOVE this slot — the decls here are exact-identical -// redeclarations (legal C), not new sigs. -// - func_80131CF4 is declared 2-arg `(int,int)`, mirroring func_801312D0's already-matched -// block-scope decl at L1619 (the engine_core canonical 1-arg form is the stale one). - -extern void func_801319E0(s32 a0); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern int func_80131D68(int, int); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012B23C(s32 a0); -extern void func_8012CBA4(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_80131E00(); -extern void func_80131C78(s32 a0); -extern void func_80131CA8(int a0, int a1); - -extern s32 D_801D2F10; -extern s32 D_801D2F14; - -void func_80131340(s32 a0) -{ - /* 8-byte, align-2 vector: align < 4 is what makes the assignments unaligned - * (lwl/lwr + swl/swr) block moves. Block-scope so the body stays self-contained - * for the dedup_propagate lift (§28-#1) and cannot collide with the TU's `M8`. */ - struct V8 { - u16 vx, vy, vz, pad; - }; - extern struct V8 D_80189E20; - /* BLOCK-scope, mirroring the already-matched func_801312D0's decl at TU L1619: the - * later DEFINE_func_80131AC8() (TU L1964, AFTER this slot) redeclares func_80131CF4 - * with the stale 1-arg engine_core canonical. A file-scope `extern int - * func_80131CF4(int,int);` here is a HARD `conflicting types` against it (cc1 rc=33, - * measured); block-scope goes out of scope before that macro and compiles clean. */ - extern int func_80131CF4(int, int); - - struct V8 sp10; - struct V8 sp18; - struct V8 sp20; - struct V8 sp28; - s32 temp; - s32 var_a1; - - if (*(s16 *)(a0 + 0xA) >= 0x10) { - func_801319E0(a0); - return; - } - - temp = func_80131CF4(*(s32 *)(a0 + 0xBC), 0x2E); - if (temp != 0) { - sp10.vz = 0; - sp10.vx = 0; - sp10.vy = temp; - } else { - sp10 = D_80189E20; - } - - if (*(s32 *)(a0 + 0x10) != 0 || *(s32 *)(a0 + 0x18) != 0) { - var_a1 = func_80131CF4(*(s32 *)(a0 + 0xBC), 0x19); - if (var_a1 == 0) { - var_a1 = 0x50; - } - func_8012DBD0(a0, var_a1, - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x800, 0x1D); - } - - switch (*(u8 *)(a0 + 0xC2)) { - case 0: - case 1: - if (*(s32 *)(a0 + 0xC4) & 4) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) -= 0x100; - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - if (*(u8 *)(a0 + 0xC2) == 0) { - *(u8 *)(a0 + 0xC2) = 1; - sp18.vx = *(u16 *)(a0 + 0x3A); - sp18.vy = *(u16 *)(a0 + 0x3E); - sp18.vz = *(u16 *)(a0 + 0x42); - sp20 = sp18; - sp20.vx += sp10.vx; - sp20.vy += sp10.vy; - sp20.vz += sp10.vz; - sp28 = sp20; /* load-bearing dead aggregate copy — gcc-2.7.2 has no aggregate DSE */ - func_8012CEB0((s32)&sp18, (s32)&sp20, 1); - sp20.vx -= sp10.vx; - sp20.vy -= sp10.vy; - sp20.vz -= sp10.vz; - *(u16 *)(a0 + 0x3A) = sp20.vx; - *(u16 *)(a0 + 0x3E) = sp20.vy; - *(u16 *)(a0 + 0x42) = sp20.vz; - *(u16 *)(a0 + 0x6) = sp20.vx; - *(u16 *)(a0 + 0xA) = sp20.vy; - *(u16 *)(a0 + 0xE) = sp20.vz; - } - D_801D2F10 = ((s32 (*)(s32, s32))func_8012CC64)(a0, (s32)&sp10); - if (D_801D2F10 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801D2F10 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - } else if (D_801D2F10 & 0x2000) { - if (func_80131D68(a0, D_801D2F10) == 1) { - return; - } - *(u8 *)(a0 + 0xC2) = 2; - func_80143B6C(a0, 1); - *(s32 *)(a0 + 0x14) = 0xFFF30000; - *(s32 *)(a0 + 0x1C) = 0; - } else if (D_801D2F10 & 0x8000) { - *(u8 *)(a0 + 0xC2) = 2; - *(s32 *)(a0 + 0x1C) = 0; - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - break; - - case 2: - if (*(s32 *)(a0 + 0xC4) & 4) { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) -= 0x100; - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - D_801D2F14 = *(s32 *)(a0 + 0x14); - D_801D2F10 = ((s32 (*)(s32, s32))func_8012CC64)(a0, (s32)&sp10); - if (D_801D2F10 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801D2F10 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - } else if (D_801D2F10 & 0x2000) { - if (func_80131D68(a0, D_801D2F10) == 1) { - return; - } - func_80143B6C(a0, 1); - /* MUST precede the 0x1C/0xC2 stores — see the header note on the /3 block. */ - *(s32 *)(a0 + 0x14) = (-D_801D2F14) / 3; - *(s32 *)(a0 + 0x1C) = 0; - *(u8 *)(a0 + 0xC2) = 3; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; - } else if (D_801D2F10 & 0x8000) { - *(u8 *)(a0 + 0xC2) = 3; - *(s32 *)(a0 + 0x1C) = 0; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - break; - - case 3: - *(s32 *)(a0 + 0x10) = *(s32 *)(a0 + 0x10) * 15 / 16; - *(s32 *)(a0 + 0x18) = *(s32 *)(a0 + 0x18) * 15 / 16; - if (*(u8 *)(a0 + 0xC3) & 1) { - D_801D2F10 = ((s32 (*)(s32))func_8012CBA4)(a0); - if (D_801D2F10 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (func_80131D68(a0, D_801D2F10) == 1) { - return; - } - if (!(D_801D2F10 & 0x6000)) { - func_80131E00(a0, 0xD); - return; - } - } else { - D_801D2F10 = ((s32 (*)(s32))func_8012CBF4)(a0); - if (D_801D2F10 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801D2F10 & 0x4000) { - func_8012B23C(a0); - *(u8 *)(a0 + 0xC2) = 4; - break; - } else if (D_801D2F10 & 0x2000) { - if (func_80131D68(a0, D_801D2F10) == 1) { - return; - } - *(u8 *)(a0 + 0xC3) |= 1; - } else if (D_801D2F10 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - } - if ((*(s32 *)(a0 + 0x1C) & 3) == 3) { - func_80143B6C(a0, 1); - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) < 0x11) { - break; - } - if (!(D_801D2F10 & 0x6000)) { - func_80131E00(a0, 0xD); - return; - } - /* polarity MUST match case 4's — see the cross-jump note in the header. */ - if (*(s16 *)(a0 + 0x76) <= 0) { - func_80131E00(a0, 6); - } else { - func_80131C78(a0); - } - break; - - case 4: - D_801D2F10 = ((s32 (*)(s32))func_8012CBA4)(a0); - if (D_801D2F10 & 0x8000) { - *(s32 *)(a0 + 0x18) = 0; - *(s32 *)(a0 + 0x10) = 0; - } - if (D_801D2F10 & 0x2000) { - if (func_80131D68(a0, D_801D2F10) == 1) { - return; - } - if (*(s16 *)(a0 + 0x76) <= 0) { - func_80131E00(a0, 6); - } else { - func_80131C78(a0); - } - } else { - if ((*(s32 *)(a0 + 0x1C) & 3) == 3) { - func_80143B6C(a0, 1); - } - *(s32 *)(a0 + 0x1C) += 1; - if (*(s32 *)(a0 + 0x1C) >= 0x3D) { - func_80131E00(a0, 0xD); - return; - } - } - break; - } - - func_80131CA8(a0, 0x2F); -} - - -DEFINE_func_801319E0() /* dedup: shared engine-core @0x801319E0 (src/shared) */ - - - -/* func_80131A34 — MATCH (37/37). - * Keys: - * - func_80131CF4 is the TU's 2-arg canonical `(int,int)` and the SECOND arg is the - * incoming `a1` (kind). $a1 already holds it, so the call costs no arg-setup insn -- - * but the extra arg ref is what breaks the sched2 prologue save-order tie so - * `sw $s0` schedules before `sw $ra` (cookbook §52a RC-3 / sched.md S7). Without it - * the pair comes out ra-then-s0 (2 mismatches); the `const`-load form of RC-3 fixes - * the tie but OVER-frees (the `lw $a0` hoists above both saves, 3 mismatches). - * - Declaration is BLOCK-SCOPE on purpose, mirroring func_801312D0 (TU L1619) and - * func_80131340 (TU L1822): the later DEFINE_func_80131AC8() re-declares - * func_80131CF4 with the stale 1-arg engine_core canonical, so a file-scope 2-arg - * decl here is a hard `conflicting types` (cc1 rc=33). - * - func_8012A828 is the TU's file-scope canonical (L280) `(s32, void *)`; `p` rides in - * $a1 from the return of func_80131CF4, so no move is emitted. - */ -DEFINE_func_80131A34() /* dedup: shared engine-core @0x80131A34 (src/shared) */ - - -DEFINE_func_80131AC8() /* dedup: shared engine-core @0x80131AC8 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (89 ins). Reconcile: TU canonical decl is `void func_80131B14(void)` -// (ov_SC01_077_a.c L1676/L1756; callers cast to (void(*)(int)) when passing p), so the def MUST be -// (void) or cc1 hard-errors `conflicting types` (exit 33). §42c lever #6: capture incoming $a0 into a -// NORMAL pseudo (`register u8 *a0v __asm__("$4"); u8 *p = a0v;`) so p gets a callee-saved home ($s0). -// func_8012B2CC/func_8012B23C are file-scope DEFINE'd here (split L740/L744) as void(s32) — do NOT redeclare; -// the (void(*)(void*)) cast on the bare name is byte-neutral. Body keys: e(0x5E) as s32 not u8 (kills the -// compare-time andi 0xff); f76 dual-width via per-access casts (lhu in the decrement, lh in the <=0 compare); -// the p->f20 reload split into TWO separate temps so the 2nd load takes $v0 not $v1. - -void func_80131B14() { - extern void func_8002A520(void *); - extern void func_8002A790(void *); - extern u8 D_80189E28; - - register u8 *a0v __asm__("$4"); - u8 *p = a0v; - - - s32 e = *(u8 *)(p + 0x5E); - - if (*(s16 *)(p + 0x60) != 0) { - if (e == 0x1D) { - *(s16 *)(p + 0x82) = 0; - *(s16 *)(p + 0x7C) = *(u16 *)(p + 0x06); - *(s16 *)(p + 0x7E) = *(u16 *)(p + 0x0A); - *(s16 *)(p + 0x80) = *(u16 *)(p + 0x0E); - } - { - s32 dec; - s32 q = *(s32 *)(p + 0x78); - if (q != 0) { - dec = ((s32)*(s16 *)(p + 0x60) * (s32)*(s16 *)(q + 0x30)) >> 12; - if (dec <= 0) dec = 1; - } - *(u16 *)(p + 0x76) = *(u16 *)(p + 0x76) - dec; - } - ((void (*)(void *))func_8016AA50)(p); - if (*(u16 *)(p + 0x82) & 1) { - ((void (*)(void *))func_8016B428)(p); - ((void(*)(void *))func_80019064)(&D_80189E28); - } - } - - *(u16 *)(p + 0x5C) = *(u16 *)(p + 0x5C) & 0xFFFE; - - if (e != 0x1D) { - if (*(u8 *)(p + 0xC8)) func_8002A520(p); - if (*(u8 *)(p + 0xC9)) func_8002A790(p); - } - - if (*(s16 *)(p + 0x76) <= 0) *(s16 *)(p + 0x5C) = 0; - - { - s32 r = *(s32 *)(p + 0x20); - *(s16 *)(r + 0x12) = (*(u16 *)(p + 0x62) + 0x800) & 0xFFF; - { - s32 r2 = *(s32 *)(p + 0x20); - *(s16 *)(r2 + 0x14) = 0; - *(s16 *)(r2 + 0x10) = 0; - } - } - - ((void (*)(void *))func_8012B2CC)(p); - ((void (*)(void *))func_8012B23C)(p); -} - - - -DEFINE_func_80131C78() /* dedup: shared engine-core @0x80131C78 (src/shared) */ - - -/* func_80131CA8 — RECONCILE (§37/§124 asm-label alias) - * - * Declaration-environment conflict, NOT a body problem: - * The TU's DEFINE_func_80131C78() expansion (jr_8012ACE0.c L2232) and the later - * DEFINE_func_80131D68() expansion (L2250) each emit the canonical - * extern void func_80131CA8(int a0, int a1); - * (src/shared/engine_core.h, e.g. L1961/L4131). The byte-correct body is - * `s32 f(int)` — it disagrees on BOTH the return axis (s32 vs void) and the - * arity axis (1 vs 2), so it collides with the macro-emitted declaration on - * either side of the slot. Escape 1 (conform + cast at use) cannot apply: the - * conflict is on the DEFINED symbol itself. - * - * Fix: define under the C name aF80131CA8 with __asm__("func_80131CA8") so the - * C-level name never meets the canonical declaration, while the emitted symbol - * is unchanged. Codegen-neutral — match_one still prints MATCH (19/19). - * This declaration MUST travel with the body. - * - * func_80131CF4 is declared here 1-arg s32, matching the engine_core canonical - * at engine_core.h L6563; it does not collide anywhere in this TU (verified by - * a full preprocess+cc1 of the spliced TU: diagnostic-free apart from - * pre-existing warnings). - */ -extern s32 func_80131CF4(s32 a0); - -s32 aF80131CA8(int a0) __asm__("func_80131CA8"); - -DEFINE_func_80131CA8() /* dedup: shared engine-core @0x80131CA8 (src/shared) */ - - - - -/* func_80131CF4 — table lookup: walk (key, value) pairs; key 0xD chains to the - * next table via value; key == wanted returns value; key 0 terminates. - * - * The __asm__ inside the body is a matching pin, not logic. It does two things - * gcc-2.7.2 -O2 needs in order to reproduce the target's preheader exactly: - * 1. "0"(0xD) forces the 0xD compare constant to be materialised HERE - * (`addiu $v1,$zero,0xD`) instead of being loop-hoisted, which places it - * AFTER the preheader load and drops the load-delay nop at the loop head. - * 2. the "memory" clobber stops CSE folding the preheader re-read of a0[0] - * into the guard's read (that CSE costs the second `lw $v0,0x0($a0)`). - * The asm body is empty, so it emits no instruction of its own. - * - * RECONCILE (§37/§124 asm-label alias) — the gate error was - * jr_8012ACE0.c:2248 conflicting types for func_80131CF4 || :2164 previous declaration - * :2164 is `DEFINE_func_80131AC8()`, whose expansion (src/shared/engine_core.h:6563) - * carries the STALE 1-arg engine-core canonical `extern s32 func_80131CF4(s32 a0);`. - * That prototype is wrong for this function (the TU's own call sites at L1780/L1903/ - * L2147 all declare and call the real 2-arg form `int func_80131CF4(int, int)`), but - * it is file-visible before the splice point, so a file-scope definition with the true - * signature is a hard `conflicting types` (arity AND param type). Conforming the - * definition to the 1-arg prototype is impossible without changing codegen, and the - * §42 `register s32 a1 __asm__("$5")` route would still leave the param-type mismatch - * on a0 (s32 vs s32*). So the definition is given a different C identifier and pinned - * to the real symbol with an asm label: no declaration ever collides, the emitted - * label is still `func_80131CF4`, and the callers' `jal func_80131CF4` binds to it. - * Zero header edits; body byte-identical (match_one: MATCH, 29 ins). - */ -DEFINE_func_80131CF4() /* dedup: shared engine-core @0x80131CF4 (src/shared) */ - - -DEFINE_func_80131D68() /* dedup: shared engine-core @0x80131D68 (src/shared) */ - - -extern void (*D_80189E38[])(struct S80131E00 *a0); - -void func_80131E00(struct S80131E00 *a0, s32 a1) { - a0->field_B0 = a1; - D_80189E38[a1](a0); -} - - -DEFINE_func_80131E38() /* dedup: shared engine-core @0x80131E38 (src/shared) */ - -DEFINE_func_80131E7C() /* dedup: shared engine-core @0x80131E7C (src/shared) */ - -DEFINE_func_80131EE4() /* dedup: shared engine-core @0x80131EE4 (src/shared) */ - - -extern void (*D_80189E90[])(void); - -void func_80131EEC(void *a0) { - D_80189E90[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80189ED8[])(void); - -void func_80131F28(void *a0) { - D_80189ED8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80189EE0[])(void); - -void func_80131F64(void *a0) { - D_80189EE0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80189EE8[])(void); - -void func_80131FA0(void *a0) { - D_80189EE8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_80189EF0[])(void); - -void func_80131FDC(void *a0) { - D_80189EF0[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); - -/* §37 asm-label aliases: D_80189E90 is declared in this TU as `void (*[])(void)` - * (func_80131EEC's dispatch table) — a conflicting type. The 20-byte-stride view - * below is this function's own. D_80189E94 == D_80189E90 + 4 is a SEPARATE - * per-overlay symbol and is referenced BY NAME, never as base+literal (§84). */ - -void func_80132018(int param_1) -{ - - extern int tbl_D_80187044[][5] __asm__("D_80189E90"); - extern int tbl_D_80187048[][5] __asm__("D_80189E94"); - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - *(int *)(param_1 + 0x58) = (int)&tbl_D_80187048[*(unsigned short *)(param_1 + 0x70) & 0xfff]; - *(int *)(param_1 + 0xdc) = tbl_D_80187044[*(unsigned short *)(param_1 + 0x70) & 0xfff][0]; - *(short *)(param_1 + 0xfc) = (*(unsigned short *)(param_1 + 0x70) >> 12) << 9; - } -} - - -DEFINE_func_801320D0() /* dedup: shared engine-core @0x801320D0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_80189E98; - -void func_801320D8(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_80189E98; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - - -s32 func_80132144(s32 param_1) -{ - extern int D_80189EA8; - - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(((int)param_1) + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(((int)param_1)); - } else { - ((void(*)(int, int))func_8001C214)(v0, 0); - *(int *)(((int)param_1) + 0x58) = (int)&D_80189EA8; - *(short *)(((int)param_1) + 0x5c) = 0x80; - *(unsigned short *)(((int)param_1) + 2) += 1; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_80189EB8; - -void func_801321B0(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_80189EB8; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple if/else, param saved in $s0 across call - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(int, int); -extern int D_80189EC8; - -void func_8013221C(int param_1) -{ - int v0; - - v0 = ((int (*)(void))func_8012C1B8)(); - *(int *)(param_1 + 0x20) = v0; - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - func_8001C214(v0, 0); - *(int *)(param_1 + 0x58) = (int)&D_80189EC8; - *(short *)(param_1 + 0x5c) = 0x80; - *(unsigned short *)(param_1 + 2) += 1; - } -} - - -DEFINE_func_80132288() /* dedup: shared engine-core @0x80132288 (src/shared) */ - -DEFINE_func_8013240C() /* dedup: shared engine-core @0x8013240C (src/shared) */ - -DEFINE_func_801325B8() /* dedup: shared engine-core @0x801325B8 (src/shared) */ - -DEFINE_func_8013277C() /* dedup: shared engine-core @0x8013277C (src/shared) */ - -DEFINE_func_80132784() /* dedup: shared engine-core @0x80132784 (src/shared) */ - -DEFINE_func_80132DC4() /* dedup: shared engine-core @0x80132DC4 (src/shared) */ - -DEFINE_func_80132E6C() /* dedup: shared engine-core @0x80132E6C (src/shared) */ - -DEFINE_func_80132EC4() /* dedup: shared engine-core @0x80132EC4 (src/shared) */ - -DEFINE_func_80132EF4() /* dedup: shared engine-core @0x80132EF4 (src/shared) */ - - -/* func_80132F40 — ov_SC01_077 (jr_8012ACE0 region), 72 ins, -O2. *** MATCH *** - * - * Verified: - * python3 tools/match_one.py func_80132F40 --c .run/near6/wave23/func_80132F40.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8012ACE0 - * -> MATCH (72 ins) - * - * --------------------------------------------------------------------------- - * WHAT THE WAVE-22 SEED GOT WRONG (the 6-mismatch plateau, and why s32 "cost 3") - * --------------------------------------------------------------------------- - * The seed's note blamed the `addiu $s3,$sp,0x10` hoist on a *whole-function CSE - * fork keyed on s16-vs-s32 w/h*, and concluded the s32 world was unreachable. - * Both halves of that are wrong, and the real mechanism is a reusable idiom. - * - * The hoisted register is the block-move source-address pseudo (reg 83 = - * `(plus fp 16)`, created by expand for `v[1] = v[0]`). Whether it survives is - * decided by ONE thing: does CSE's *extended basic block* still contain it when - * CSE reaches the two `&v[0]` call arguments? - * - * cse.c:cse_end_of_basic_block scans `while (p && GET_CODE (p) != CODE_LABEL)`. - * It can walk PAST a conditional jump only via - * - follow_jumps : target label preceded by a BARRIER, LABEL_NUSES == 1, or - * - skip_blocks : "branch around a block", no labels inside (-O2 sets both) - * and it BREAKS EARLY on - * `if (! after_loop && NOTE_LINE_NUMBER (p) == NOTE_INSN_LOOP_END) break;` - * - * With s16 w the min block stayed a *diamond* (jump.c's `if(..) x=a; else x=b;` - * -> `x=b; if(..) x=a;` at jump.c:699 is blocked when the moved insn carries a - * REG_EQUAL note — the sign_extend note from the sll/sra pair). The diamond's - * BARRIER + join label ended CSE's block before the calls, so `&v[0]` was - * recomputed at each site. With s32 w the diamond was flattened in jump1, and - * skip_blocks then walked CSE straight through to both call sites -> reg 83 was - * substituted, went live across a call, and took a 5th callee-saved register. - * So the fork was never about the *type* — it was about the CFG shape at CSE. - * - * --------------------------------------------------------------------------- - * THE NEW LEVER (cookbook candidate: "zero-instruction CSE path cut") - * --------------------------------------------------------------------------- - * `do { } while (0);` emits NOTE_INSN_LOOP_BEG/CONT/END and ZERO instructions. - * A NOTE_INSN_LOOP_END is exactly what cse1 (after_loop == 0) breaks its - * extended basic block on. Dropping one between the struct copy and the call - * sites cuts the path, kills the hoist, and costs nothing: 73 ins -> 70 ins. - * (Measured: without it this same file is 75 ins / 58 mismatched.) - * It is *not* an ordering/pressure hack — 1..8 empty `__asm__ __volatile__("")` - * barriers, which lengthen live ranges but emit no LOOP notes, changed the hoist - * by exactly nothing, which refutes the global.c allocno-priority explanation. - * - * --------------------------------------------------------------------------- - * THE MIN BLOCK (idx 37..44) - * --------------------------------------------------------------------------- - * lh $v1,8($v0) w (both loads are SImode sign_extend -> `lh`) - * lh $v0,0xA($v0) h (reuses the dying pointer's $v0) - * nop (load-delay; nothing schedulable) - * addu $a0,$v0,$zero hh = h (a REAL source-level carrier) - * slt $v0,$v0,$v1 c = h 75 ins / 58 drop `p` pin -> 71 ins / 40 - * drop `h` pin -> 71 ins / 33 drop `c` pin -> 70 ins / 36 - * drop `hh` pin -> 71 ins / 32 drop `q` pin -> 72 ins / 12 - * adding a `w`->$3 pin or an `m`->$18 pin -> still MATCH (so both are omitted) - * - * Canonical decls (wave22_targets.json sig_hints) verbatim; D_80126BE0 is - * declared exactly as the 20+ sibling TUs already declare it. - */ -DEFINE_func_80132F40() /* dedup: shared engine-core @0x80132F40 (src/shared) */ - - -DEFINE_func_80133060() /* dedup: shared engine-core @0x80133060 (src/shared) */ - -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#define gte_rtv0tr() __asm__ volatile ( \ - "nop;" \ - "nop;" \ - "mvmva 1, 0, 0, 0, 0" \ - : \ - : \ - : "memory" ) -#define gte_stlvnl(r0) __asm__ volatile ( \ - "swc2 $25, 0( %0 );" \ - "swc2 $26, 4( %0 );" \ - "swc2 $27, 8( %0 )" \ - : \ - : "r"( r0 ) \ - : "memory" ) -#define gte_stflg(r0) __asm__ volatile ( \ - "cfc2 $12, $31;" \ - "nop;" \ - "sw $12, 0( %0 )" \ - : \ - : "r"( r0 ) \ - : "$12", "memory" ) - -DEFINE_func_801330E0() /* dedup: shared engine-core @0x801330E0 (src/shared) */ - - - -/* 32-byte opaque block: drives gcc's movstrsi block-move (4x lw / 4x sw, cookbook - * struct-fold) instead of 8 serial lw/sw pairs. Locally named (engine_types.h's - * identical `Blk32` is an anonymous-tag typedef -> a same-name redefinition here - * is a C89 error in the real TU). */ - - -DEFINE_func_80133298() /* dedup: shared engine-core @0x80133298 (src/shared) */ - - -DEFINE_func_8013339C() /* dedup: shared engine-core @0x8013339C (src/shared) */ - -DEFINE_func_8013361C() /* dedup: shared engine-core @0x8013361C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH - -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); - -void func_801336E8(void *a0, int a1, int a2) { - if (a0 != 0) { - (*(void * *)&D_801D2F58) = a0; - ((void (*)(void))func_80136BC4)(); - } - (*(int *)&D_801D2F5C) = a1; - D_801D2F60 = a2; -} - - - - -extern s32 D_801D2F5C[]; -extern s32 D_801D2F58; -extern void func_80136BC4(s32); - -void func_8013373C(s16 arg0) { - s32 temp = D_801D2F5C[arg0]; - if (temp != 0) { - D_801D2F58 = temp; - func_80136BC4(temp); - } -} - - -// @class: regalloc-order -#include "common.h" - - - -s32 func_80133784(s32 arg0, void *arg1, s32 arg2) { - extern s32 func_80047D3C(s32); - extern s32 func_80133AB0(s16, s16, s16, s32); - extern Box_80133784 * D_80189EF8; - extern Box_80133784 * D_80189EFC; - extern s16 D_801D2F64; - extern u16 D_801D2F68; - - register s32 s1 __asm__("$17"); - s32 s2; - register s16 s3 __asm__("$19"); - register s32 s4 __asm__("$20"); - register s16 a0v __asm__("$4"); - register s16 arg0s __asm__("$21"); - s32 dx, dy, dz; - s32 r, ret; - - a0v = ((s16)arg0); - s1 = 0; - s3 = 0; - s4 = 0; - s2 = 0; - arg0s = a0v; - D_80189EF8->f6 = -0x7FFF; - D_80189EFC->f6 = 0x7FFF; - D_80189EF8->f0 = ((Box_80133784 *)arg1)->f0; - D_80189EF8->f4 = ((Box_80133784 *)arg1)->f4; - D_80189EFC->f0 = ((Box_80133784 *)arg2)->f0; - D_80189EFC->f4 = ((Box_80133784 *)arg2)->f4; - D_801D2F68 = 0; - D_801D2F64 = 0; - - if ((s16)a0v == 0) { - s16 sx = ((Box_80133784 *)arg2)->f0 - ((Box_80133784 *)arg1)->f0; - s16 sy = ((Box_80133784 *)arg2)->f2 - ((Box_80133784 *)arg1)->f2; - s16 sz = ((Box_80133784 *)arg2)->f4 - ((Box_80133784 *)arg1)->f4; - if (sx == 0 && sy == 0) { - s32 zt = (sz == 0); - __asm__("addu %0,%1,$zero" : "=r"(s2) : "r"(zt)); - } - D_80189EF8->f2 = ((Box_80133784 *)arg1)->f2 - 4; - r = func_80047D3C(sx * sx + sz * sz); - if (r < 3) { - r = 4; - } else if (r < 5) { - r += 1; - } - D_80189EFC->f2 = ((Box_80133784 *)arg2)->f2 + r + 1; - } else { - D_80189EF8->f2 = ((Box_80133784 *)arg1)->f2; - if ((s16)a0v == 2) { - D_80189EFC->f0 = D_80189EF8->f0; - D_80189EFC->f2 = D_80189EF8->f2 + 6; - s2 = 1; - D_80189EFC->f4 = D_80189EF8->f4; - } else { - D_80189EFC->f2 = ((Box_80133784 *)arg2)->f2; - } - } - - while (1) { - s32 ret0; - register s32 retc __asm__("$3"); - __asm__ __volatile__(""); - ret0 = func_80133AB0(arg0s, (s16)D_80189EF8->f0, (s16)D_80189EF8->f4, (*(s32*)&D_801D2F58)); - __asm__("addu %0,%1,$zero" : "=r"(retc) : "r"(ret0)); - ret = retc; - if (ret == 0) goto after; - s4 |= ret; - if (s2 != 0) goto after; - { - s16 oldc = s3; - s3 = s3 + 1; - if (oldc >= 5) break; - } - } - - D_80189EFC->f0 = D_80189EF8->f0; - D_80189EFC->f2 = D_80189EF8->f2; - s1 = 0x2000; - D_80189EFC->f4 = D_80189EF8->f4; - goto store_out; - -after: - if ((s16)s4 != 0 || D_801D2F64 != 0) { - s16 t; - __asm__ __volatile__("" :: "r"(s4)); - t = D_80189EF8->f6; - if (t >= -0xBCB) { - if (t < -0x578) { - s1 |= 0x4000; - } else { - s1 |= 0x8000; - } - } - if ((s16)D_80189EFC->f6 < -0xBCB) { - s1 |= 0x2000; - } - store_out: - ((Box_80133784 *)arg2)->f0 = D_80189EFC->f0; - ((Box_80133784 *)arg2)->f2 = D_80189EFC->f2; - ((Box_80133784 *)arg2)->f4 = D_80189EFC->f4; - ((Box_80133784 *)arg2)->f6 = D_801D2F68; - return s1 & 0xFFFF; - } - ((Box_80133784 *)arg2)->f6 = D_801D2F68; - return 0; -} - - - - - -s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3) -{ - extern u8 D_80189EFC; - extern u8 D_80189EF8; - extern u8 D_80189F04; - extern u16 D_801D2F68; - extern s16 D_801D2F64; - extern s32 func_80133CD4(); - - Map_80133AB0 *map = (Map_80133AB0 *)arg3; - u16 *pA = (*(u16 * *)&D_80189EFC); - u16 *pB = (*(u16 * *)&D_80189EF8); - u16 *pC = (*(u16 * *)&D_80189F04); - register int zr __asm__("$0"); - u32 X, Y, cell, Xc, Yc; - u16 k, off; - int cnt; - u16 *cp, *lst; - u8 *s0; - u16 raw; - u32 hib; - register int harg __asm__("$4"); - s32 ret; - void *p0C, *p10; - u8 *p14, *p18, *p1C; - u16 *cells; - - pC[0] = pA[0] - pB[0]; - pC[1] = pA[1] - pB[1]; - pC[2] = pA[2] - pB[2]; - - X = ((((u16)x + 0x8000) >> 7) & 0x1ff) - map->ox; - __asm__("addu %0,%1,$zero" : "=r"(Xc) : "r"(X)); - if (!((X & 0xffff) < map->w)) - return 0; - Y = ((((u16)y + 0x8000) >> 7) & 0x1ff) - map->oy; - __asm__("addu %0,%1,$zero" : "=r"(Yc) : "r"(Y)); - if (!((Y & 0xffff) < map->h)) - return 0; - - cell = (Yc & 0xffff) * map->w + (Xc & 0xffff); - cells = map->cells; - p14 = map->p14; - p0C = map->p0C; - p10 = map->p10; - p18 = map->p18; - p1C = map->p1C; - k = cell * 2; - cp = (u16 *)(k * 2 + (u32)cells); - off = cp[0]; - cnt = cp[1]; - lst = (u16 *)(p14 + off); - - while (((cnt-- + zr) & 0xffff) != 0) { - raw = *lst; - hib = raw & 0x8000; - harg = hib + zr; - if (hib == 0) { - s0 = p18 + raw * 18; - } else { - s0 = p1C + (raw & 0x7fff) * 22; - } - ret = (s16)func_80133CD4((s16)(harg | flag), s0, p10, p0C); - if (ret != 0) { - if (ret > 0) - D_801D2F68 = *(u16 *)s0; - return 1; - } - lst++; - if (D_801D2F64 != 0) { - D_801D2F68 = *(u16 *)s0; - return 0; - } - } - return 0; -} - - - -s32 func_80133CD4(arg0, cmd, base, arr) - s16 arg0; - s16 *cmd; - s16 *base; - s32 *arr; -{ - - extern u16 *D_80189EFC; - extern u16 *D_80189EF8; - extern s16 *D_80189F04; - extern s16 *D_80189F00; - extern s32 *D_80189F0C; - extern s32 *D_80189F10; - extern u16 D_801D2F68; - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern u16 D_801152AE; - extern u8 D_801152B0; - extern s32 func_80134310(); - extern s32 func_8013435C(); - - s16 *s3 = ((ElemK *)base)[cmd[1]].e; - s32 s6 = arr[cmd[2]]; - s32 s0var, s1var; - s32 s2a; - s16 y; - - if (func_80134310(s3, D_80189EFC, s6) >= 0) - return 0; - - s1var = func_80134310(s3, D_80189EF8, s6); - if (s1var < 0) - return 0; - - s0var = func_80134310(s3, D_80189F04, 0); - { - u16 *pac = D_80189EF8; - s16 *pb8 = D_80189F04; - s16 *pb4 = D_80189F00; - s32 neg = -s1var; - pb4[0] = pac[0] + neg * pb8[0] / s0var; - pb4[1] = pac[1] + neg * pb8[1] / s0var; - pb4[2] = pac[2] + neg * pb8[2] / s0var; - if (func_8013435C(((ElemK *)base)[cmd[3]].e, pb4, arr[cmd[4]], s3)) - return 0; - } - if (func_8013435C(((ElemK *)base)[cmd[5]].e, D_80189F00, arr[cmd[6]], s3)) - return 0; - if (func_8013435C(((ElemK *)base)[cmd[7]].e, D_80189F00, arr[cmd[8]], s3)) - return 0; - if (arg0 < 0) { - if (func_8013435C(((ElemK *)base)[cmd[9]].e, D_80189F00, arr[cmd[10]], s3)) - return 0; - } - if (arg0 & 0x10) { - if (*(u16 *)cmd & 0x100) - return 0; - } - if (*(u16 *)cmd & 0x200) { - D_801D2F68 = *(u16 *)cmd; - return 0; - } - - { - s32 ret = func_80134310(s3, D_80189EFC, s6); - s32 *pc0; - s32 *pc4; - u16 *pb0; - s32 t, o2; - s32 q3v; - - { - s32 *pw = D_80189F0C; - ((struct { s32 w; } *)pw)->w = s3[0]; - pw[1] = s3[1]; - pw[2] = s3[2]; - } - s1var = -ret; - - __asm__ __volatile__( - "lwc2 $9, 0(%0)\n" - "lwc2 $10, 4(%0)\n" - "lwc2 $11, 8(%0)\n" - "nop\n" - "nop\n" - "sqr 0\n" - : : "r"(D_80189F0C) : "$9", "$10", "$11", "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"(D_80189F10) : "memory"); - - pc0 = D_80189F0C; - pc4 = D_80189F10; - s0var = pc4[0] + pc4[1] + pc4[2]; - pb0 = D_80189EFC; - pb0[0] += s1var * pc0[0] / s0var; - pb0[1] += s1var * pc0[1] / s0var; - q3v = s1var * pc0[2] / s0var; - - { - s32 h; - h = ((s16 *)pb0)[0]; - s1var = h << 16; - __asm__("lh %0, 2(%2)" : "=r"(h) : "0"(h), "r"(pb0) : "memory"); - s0var = h << 16; - } - pb0[2] += q3v; - s2a = (s16)pb0[2] << 16; - - t = pc0[0] << 4; - pc0[0] = t; - if (t < 0) s1var |= 0xFFFF; - t = pc0[1] << 4; - pc0[1] = t; - if (t < 0) s0var |= 0xFFFF; - o2 = pc0[2]; - t = o2 << 4; - pc0[2] = t; - if (t < 0) s2a |= 0xFFFF; - s2a += o2 << 5; - s1var += pc0[0] << 1; - s0var += pc0[1] << 1; - - do { - s32 *pl = D_80189F0C; - u16 *pb; - s1var += pl[0]; - s0var += pl[1]; - s2a += pl[2]; - pb = D_80189EFC; - pb[0] = s1var >> 16; - pb[1] = s0var >> 16; - pb[2] = s2a >> 16; - ret = func_80134310(s3, pb, s6); - } while (ret < ((s3[1] < -0xE00) ? 0x1800 : 0x2F00)); - } - - y = s3[1]; - if (y >= -0xBCB) { - D_80189EF8[3] = y; - { - typedef struct { s8 c[8]; } Blk8; - *(Blk8 *)&D_801152B0 = *(Blk8 *)s3; - } - if (*(u8 *)cmd != 0) - goto ret1; - return -1; - } - { - u16 *s3u = (u16 *)s3; - u16 *bp = D_80189EFC; - u16 w; - ((H16 *)D_801152A8)->h = s3u[0]; - w = s3u[1]; - bp[3] = w; - ((H16 *)&D_801152AA)->h = w; - ((H16 *)&D_801152AC)->h = s3u[2]; - ((H16 *)&D_801152AE)->h = s3u[3]; - } -ret1: - return 1; -} - - - - - -DEFINE_func_80134310() /* dedup: shared engine-core @0x80134310 (src/shared) */ - - -DEFINE_func_8013435C() /* dedup: shared engine-core @0x8013435C (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (83 ins, relocation-masked) - - - -s32 func_801343C4(s32 angle, s32 p1, s32 p2) -{ - extern s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3); - extern s16 * D_80189EF8; - extern s16 * D_80189EFC; - extern u16 D_801D2F68; - extern u16 D_801D2F64; - - s16 *pac; - s16 *pb0; - s16 *pacs, *pb0s; - u16 *pb0u; - int a1v, a2v, d94, b0; - int sangle = ((s16)angle); - - pac = D_80189EF8; - d94 = D_801D2F58; - pb0 = D_80189EFC; - pac[0] = ((u16 *)p1)[0]; - pac[1] = ((u16 *)p1)[1]; - pac[2] = ((u16 *)p1)[2]; - pb0[0] = ((u16 *)p2)[0]; - pb0[1] = ((u16 *)p2)[1]; - pb0[2] = ((u16 *)p2)[2]; - - a1v = pac[0]; a2v = pac[2]; - __asm__ __volatile__("" ::: "memory"); - D_801D2F68 = 0; - D_801D2F64 = 0; - if (((int (*)(int, s16, s16, int))func_80133AB0)(sangle, a1v, a2v, d94)) { - setdst: - pb0u = (u16 *)D_80189EFC; - ((u16 *)p2)[0] = pb0u[0]; - ((u16 *)p2)[1] = pb0u[1]; - ((u16 *)p2)[2] = pb0u[2]; - ((u16 *)p2)[3] = D_801D2F68; - return 1; - } - - pacs = D_80189EF8; - pb0s = D_80189EFC; - b0 = pb0s[0]; - if ((pacs[0] & 0xFF80) == (b0 & 0xFF80) && - (pacs[2] & 0xFF80) == (pb0s[2] & 0xFF80)) { - return 0; - } - if (((int (*)(int, s16, s16, int))func_80133AB0)(sangle, b0, pb0s[2], D_801D2F58)) { - goto setdst; - } - return 0; -} - - - -// @class: schedule - - -s32 func_80134510(s32 param) { - extern s32 func_801345F8(s32); - extern Foo_80134510_80134510 * D_80189EF8; - extern Foo_80134510_80134510 * D_80189EFC; - extern Foo_80134510_80134510 * D_80189F00; - extern u16 D_801D2F68; - - - s32 ret = 0; - Foo_80134510_80134510 *b0 = D_80189EFC; - Foo_80134510_80134510 *ac = D_80189EF8; - u16 t0 = ((Foo_80134510_80134510 *)param)->f0; - u16 t2, t4; - - ((Foo_80134510_80134510 *)param)->f6 = 0; - ac->f0 = t0; - b0->f0 = t0; - t2 = ((Foo_80134510_80134510 *)param)->f2; - ac->f2 = t2 - 4; - b0->f2 = t2 + 0x2FC; - t4 = ((Foo_80134510_80134510 *)param)->f4; - ac->f4 = t4; - b0->f4 = t4; - - if (func_801345F8((*(s32*)&D_801D2F58)) != 0) { - s16 x; - ((Foo_80134510_80134510 *)param)->f2 = D_80189F00->f2 - 2; - x = D_80189EF8->f6; - if (x >= -3019) { - if (x < -1400) { - ret = 0x4000; - } else { - ret = 0x8000; - } - } else { - ret = 0x2000; - } - D_80189EF8->f6 = D_801D2F68; - } - return ret; -} - - - -// @class: regalloc-order -// @stuck: 26-mismatch near-miss (structure fully matches: while-loop test-first via j-to-bottom-test, s0=puVar7/s1=cnt/s2=scan/s3=iVar8/s4=iVar9/s5=uVar3/s6=uVar10, a1=param/a0=cc/a3=0x8000 pinned, both range-persist copies present, mult+GPU-index+call all byte-correct). Residual = 4 instances of ONE gcc-2.7.2 regalloc/copy-prop tie-break: target computes a preserved-then-masked value in $v0 and reads $v0 for the mask (`subu $v0; addu $persist,$v0; andi $v0,$v0`), gcc here reads the persist reg (`andi $v0,$t0`). (1) range-check-1 andi reads $t0 not $v0; (2) range-check-2 andi reads $a0 not $v0; (3) `hi=uVar1&0x8000` folds into $a0 — target computes in $v0 + copies to $a0 in the branch-delay (same-block copy, gcc coalesces mine); (4) loop-test `cnt&0xffff` folds to direct `andi $v0,$s1` — target copies `addu $v0,$s1` first. Splitting the value into compare-temp + persist-var produces the copy but gcc forward-propagates the copy DEST into the mask; persist-after-compare kills the copy; explicit `register __asm__` pins fold the whole expr chain into the pinned reg; `=r/0` barriers force bad materialization. Also minor: while-loop header-copy adds a `beqz s1` entry guard vs target `j`, and a2/a3 call-arg setup order. Permuter can't run (register __asm__ pins rejected by pycparser). Genuinely compiler-internal — hand-finish or accept as ceiling. - - -s32 func_801345F8(s32 arg) -{ - extern int func_801347A0(short, u16 *, int, int); - extern u16 * D_80189EF8; - extern u16 D_801D2F68; - - register u16 *param_1 __asm__("$5") = ((u16 *)arg); - register u16 *cc __asm__("$4") = D_80189EF8; - int c8000 = 0x8000; - register int zr __asm__("$0"); - u32 c1, c2, uVar6, uVar2, cnt, v14; - u16 *ptmp, *puVar4, *puVar7, uVar1; - int hi, harg, iVar9, iVar8, uVar3, uVar10, tbl; - - c1 = ((int)(cc[0] + c8000) >> 7 & 0x1ff) - (u32)param_1[0]; - uVar6 = c1 + zr; - if ((c1 & 0xffff) < (u32)param_1[2]) { - c2 = ((int)(cc[2] + c8000) >> 7 & 0x1ff) - (u32)param_1[1]; - uVar2 = c2 + zr; - if ((c2 & 0xffff) < (u32)param_1[3]) - goto do_mult; - return 0; - found: - D_801D2F68 = *puVar7; - return 1; - do_mult: - tbl = *(int *)(param_1 + 4); - uVar10 = *(int *)(param_1 + 6); - uVar3 = *(int *)(param_1 + 8); - iVar9 = *(int *)(param_1 + 0xc); - iVar8 = *(int *)(param_1 + 0xe); - ptmp = (u16 *)((((u32)(u16)uVar2 * (u32)param_1[2] + (u32)(u16)uVar6) * 2 & 0xffff) * 2 + tbl); - cnt = (u32)ptmp[1]; - v14 = *(int *)(param_1 + 10); - puVar4 = (u16 *)(v14 + (u32)*ptmp + cnt * 2) - 1; - while (((cnt-- + zr) & 0xffff) != 0) { - uVar1 = *puVar4; - hi = uVar1 & 0x8000; - harg = hi + zr; - if (hi == 0) - puVar7 = (u16 *)(iVar9 + (u32)uVar1 * 0x12); - else - puVar7 = (u16 *)(iVar8 + (uVar1 & 0x7fff) * 0x16); - if (func_801347A0((short)harg, puVar7, uVar3, uVar10) != 0) - goto found; - puVar4 = puVar4 - 1; - } - } - return 0; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (162 ins). iv pinned to $4 (a0) forces move+delay-slot negu; divisor-temp forces divisor-first schedule (load-delay nop). Globals declared pointer-typed (SVec_801347A0*/s16*) so %lo folds per-use instead of &sym address-CSE into callee regs. -#include "common.h" - - - - - - -s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); - extern s16 * D_80189EFC; - extern SVec_801347A0 * D_80189EF8; - extern SVec_801347A0 * D_80189F00; - - Elem_801347A0 *pElem; - s32 val; - register s32 iv __asm__("$4"); - s32 q; - s32 dvsr; - - pElem = &((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f2]; - val = ((s32 *)arg3)[((S0_801347A0 *)arg1)->f4]; - if (func_80134A28((s32)pElem, (s32)D_80189EFC, val) >= 0) { - return 0; - } - iv = func_80134A28((s32)pElem, (s32)D_80189EF8, val); - if (iv < 0) { - return 0; - } - iv = -iv; - dvsr = pElem->f2 * 48; - q = (iv * 48) / dvsr; - D_80189F00->f0 = D_80189EF8->f0; - D_80189F00->f2 = D_80189EF8->f2 + q; - D_80189F00->f4 = D_80189EF8->f4; - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f6], (s32)D_80189F00, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f8]) < -0x2F00) { - return 0; - } - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->fa], (s32)D_80189F00, ((s32 *)arg3)[((S0_801347A0 *)arg1)->fc]) < -0x2F00) { - return 0; - } - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->fe], (s32)D_80189F00, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f10]) < -0x2F00) { - return 0; - } - if ((s16)arg0) { - if (func_80134A28((s32)&((Elem_801347A0 *)arg2)[((S0_801347A0 *)arg1)->f12], (s32)D_80189F00, ((s32 *)arg3)[((S0_801347A0 *)arg1)->f14]) < -0x2F00) { - return 0; - } - } - if ((((S0_801347A0 *)arg1)->f0 & 0x300) != 0) { - return 0; - } - D_80189F00->f0 = D_80189EF8->f0; - D_80189F00->f4 = D_80189EF8->f4; - (*(Elem_801347A0*)D_801152A8) = *pElem; - D_80189EF8->f6 = pElem->f2; - return 1; -} - - - -DEFINE_func_80134A28() /* dedup: shared engine-core @0x80134A28 (src/shared) */ - - -int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4) -{ - extern u16 D_801D2F68; - extern s32 func_80134C20(s32, s32, s32, s32); - - u16 *param_4p = (u16 *)param_4; - register u32 zr __asm__("$0"); - u32 uVar6, uVar2, uVar2c; - register u32 uVar6c __asm__("$9"); - u16 *puVar4, *ptmp; - register u32 n __asm__("$18"); - register u32 p0 __asm__("$4"); - register int v14 __asm__("$3"); - u16 *puVar7, uVar1; - u32 hi, hic; - int iVar5, iVar9, iVar8, uVar3, uVar10; - - uVar6 = ((int)((param_2 & 0xffff) + 0x8000) >> 7 & 0x1ff) - (u32)param_4p[0]; - uVar6c = uVar6 + zr; - if ((uVar6 & 0xffff) < (u32)param_4p[2]) { - uVar2 = ((int)((param_3 & 0xffff) + 0x8000) >> 7 & 0x1ff) - (u32)param_4p[1]; - __asm__("addu %0,%1,$zero" : "=r"(uVar2c) : "r"(uVar2)); - if ((uVar2 & 0xffff) < (u32)param_4p[3]) goto work; - return 0; - found: - D_801D2F68 = *puVar7; - return 1; - work: - uVar10 = *(int *)(param_4p + 6); - uVar3 = *(int *)(param_4p + 8); - iVar9 = *(int *)(param_4p + 0xc); - iVar8 = *(int *)(param_4p + 0xe); - ptmp = (u16 *)((((uVar2c & 0xffff) * (u32)param_4p[2] + (uVar6c & 0xffff)) * 2 & 0xffff) * 2 + *(int *)(param_4p + 4)); - v14 = *(int *)(param_4p + 10); - __asm__ __volatile__("" :: "r"(uVar6c)); - p0 = (u32)*ptmp; - n = (u32)ptmp[1]; - puVar4 = (u16 *)(v14 + p0 + n * 2) - 1; - goto test; - body: - uVar1 = *puVar4; - hi = uVar1 & 0x8000; - hic = hi + zr; - if (hi == 0) - puVar7 = (u16 *)(iVar9 + (u32)uVar1 * 0x12); - else - puVar7 = (u16 *)(iVar8 + (uVar1 & 0x7fff) * 0x16); - puVar4 = puVar4 - 1; - iVar5 = func_80134C20((short)(hic | param_1), (s32)puVar7, uVar3, uVar10); - if (iVar5 != 0) goto found; - test: - { - u32 m; - __asm__("addu %0,%1,$zero" : "=r"(m) : "r"(n)); - n--; - if ((m & 0xffff) != 0) goto body; - } - } - return 0; -} - - -// @class: regalloc-order -// @try: variant B — direct pins m=$s5($21), c=$s6($22) - - -s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); - extern void * D_80189EF8; - extern void * D_80189EFC; - extern void * D_80189F00; - extern void * D_80189F04; - extern u16 D_801D2F68; - - s32 temp_a3; - s32 temp_s1; - s32 temp_v0; - s32 temp_v0_2; - s32 var_v0; - u16 temp_a1; - s32 temp_s4; - s32 c = arg0; - __asm__ __volatile__("" : "=r"(c) : "0"(c)); - __asm__ __volatile__("" : : "r"(arg0)); - - temp_s4 = arg2 + (M2C_FIELD(((void *)arg1), s16 *, 2) * 8); - temp_s1 = *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 4) * 4)); - var_v0 = 0; - if (func_80134FB8(temp_s4, (s32) D_80189EFC, temp_s1) >= 0) { - return var_v0; - } - temp_v0 = func_80134FB8(temp_s4, (s32) D_80189EF8, temp_s1); - if (temp_v0 < 0) { - goto block_13; - } - temp_v0_2 = func_80134FB8(temp_s4, (s32) D_80189F04, 0); - temp_a3 = -temp_v0; - { - u16 *pB4 = (u16 *)D_80189F00; - u16 *pAC = (u16 *)D_80189EF8; - s16 *pB8 = (s16 *)D_80189F04; - pB4[0] = pAC[0] + (temp_a3 * pB8[0]) / temp_v0_2; - pB4[1] = pAC[1] + (temp_a3 * pB8[1]) / temp_v0_2; - pB4[2] = pAC[2] + (temp_a3 * pB8[2]) / temp_v0_2; - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 6) * 8), (s32) pB4, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 8) * 4))) < -0x2F00) { - return var_v0; - } - } - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0xA) * 8), (s32) D_80189F00, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0xC) * 4))) < -0x2F00) { - return var_v0; - } - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0xE) * 8), (s32) D_80189F00, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0x10) * 4))) < -0x2F00) { - return var_v0; - } - if ((arg0 << 16) < 0) { - var_v0 = 0; - if (func_80134FB8(arg2 + (M2C_FIELD(((void *)arg1), s16 *, 0x12) * 8), (s32) D_80189F00, *(s32 *)(arg3 + (M2C_FIELD(((void *)arg1), s16 *, 0x14) * 4))) < -0x2F00) { - return var_v0; - } - } - if (c & 1) { - if (!(M2C_FIELD(((void *)arg1), u16 *, 0) & 0x300)) { - goto block_14; - } - return 0; - } - temp_a1 = M2C_FIELD(((void *)arg1), u16 *, 0); - if (!(temp_a1 & 0x200)) { - goto block_14; - } - D_801D2F68 = temp_a1; -block_13: - return 0; -block_14: - __builtin_memcpy(D_801152A8, (void *)temp_s4, 8); - VectorNormalSS(D_80189F04, D_80189F04); - { - u16 *pB8 = (u16 *)D_80189F04; - u16 *pB4b = (u16 *)D_80189F00; - pB4b[0] = pB4b[0] - ((pB8[0] << 0x10) >> 0x1B); - var_v0 = 1; - pB4b[1] = pB4b[1] - ((pB8[1] << 0x10) >> 0x1B); - pB4b[2] = pB4b[2] - ((pB8[2] << 0x10) >> 0x1B); - } - return var_v0; -} - - - -DEFINE_func_80134FB8() /* dedup: shared engine-core @0x80134FB8 (src/shared) */ - -// @class: plumbing -// @stuck: MATCH (89 ins). To BANK: retype D_80189EFC + D_80189EF8 (u8 -> s16*) in sibling func_80135168's externs (src/ov_SC01_077/ov_SC01_077_a.c ~L1879); they hold pointers double-referenced across a call, so only a 4-byte/pointer decl folds %lo (u8 &-cast CSE's the address into a saved reg). Retype is byte-NEUTRAL for the sibling (verified: identical objdump bytes u8 vs s16*). - - - - -s32 func_80135004(s32 arg0, s32 p1, s32 p2) -{ - extern int func_80134A74(int, s16, s16, int); - extern s16 * D_80189EFC; - extern s16 * D_80189EF8; - extern u8 D_80189F04; - extern s16 *D_80189F00; - extern u16 D_801D2F68; - - register s16 *pb0 __asm__("$9"); /* D_80189EFC -> $t1 */ - register s16 *pac __asm__("$6"); /* D_80189EF8 -> $a2 */ - register s16 *pb8 __asm__("$8"); /* D_80189F04 -> $t0 */ - u16 *pb4; - u16 a, b; - int id; - int a1v, a2v, d94; - - pb0 = D_80189EFC; - __asm__ __volatile__("" : : "r"(pb0)); - - a = ((u16 *)p2)[0]; pac = D_80189EF8; pb0[0] = a; b = ((u16 *)p1)[0]; pb8 = (*(s16 * *)&D_80189F04); pac[0] = b; pb8[0] = a - b; - a = ((u16 *)p2)[1]; pb0[1] = a; b = ((u16 *)p1)[1]; pac[1] = b; pb8[1] = a - b; - a = ((u16 *)p2)[2]; pb0[2] = a; b = ((u16 *)p1)[2]; pac[2] = b; pb8[2] = a - b; - - id = ((int)arg0) & 0xFFFF; - a1v = pac[0]; a2v = pac[2]; d94 = D_801D2F58; - __asm__ __volatile__("" ::: "memory"); - D_801D2F68 = 0; - - if (func_80134A74(id, a1v, a2v, d94)) { - found: - pb4 = (*(u16 * *)&D_80189F00); - ((u16 *)p2)[0] = pb4[0]; - ((u16 *)p2)[1] = pb4[1]; - ((u16 *)p2)[2] = pb4[2]; - ((u16 *)p2)[3] = D_801D2F68; - return 1; - } - { - register u16 *qb __asm__("$4"); /* D_80189EF8 -> $a0 (reloaded) */ - register int qa0 __asm__("$5"); /* D_80189EFC[0], kept in $a1 for the 2nd-call arg */ - register u16 *qa __asm__("$6"); /* D_80189EFC -> $a2 (reloaded) */ - qb = (u16 *)D_80189EF8; - qa = (u16 *)D_80189EFC; - qa0 = qa[0]; - if (((qb[0] & 0xFF80) == (qa0 & 0xFF80)) && - ((qb[2] & 0xFF80) == (qa[2] & 0xFF80))) - return 0; - if (func_80134A74(id, (s16)qa0, (s16)qa[2], D_801D2F58)) - goto found; - return 0; - } -} - - - - -// @class: schedule -// @stuck: none — MATCH (62 ins, relocation-masked) - - -extern s16 *D_80189F00; -extern int D_801D2F58; -extern u16 D_801D2F68; - -extern int func_80134A74(int, s16, s16, int); - -int func_80135168(u16 arg0, u16 *p1, u16 *p2) -{ - /* [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 §100); the whole-binary byte-gate is the arbiter. */ - extern u8 D_80189EF8; - extern u8 D_80189EFC; - extern u8 D_80189F04; - register s16 *pb0 __asm__("$8"); - register s16 *pac __asm__("$6"); - register s16 *pb8 __asm__("$7"); - u16 *pb4; - u16 a, b; - int a1v, a2v, d94; - - pb0 = (*(s16 * *)&D_80189EFC); - __asm__ __volatile__("" : : "r"(pb0)); - - a = p2[0]; pac = (*(s16 * *)&D_80189EF8); pb0[0] = a; b = p1[0]; pb8 = (*(s16 * *)&D_80189F04); pac[0] = b; pb8[0] = a - b; - a = p2[1]; pb0[1] = a; b = p1[1]; pac[1] = b; pb8[1] = a - b; - a = p2[2]; pb0[2] = a; b = p1[2]; pac[2] = b; pb8[2] = a - b; - - a1v = pac[0]; a2v = pac[2]; d94 = D_801D2F58; - __asm__ __volatile__("" ::: "memory"); - D_801D2F68 = 0; - if (func_80134A74(arg0, a1v, a2v, d94)) { - pb4 = (*(u16 * *)&D_80189F00); - p2[0] = pb4[0]; - p2[1] = pb4[1]; - p2[2] = pb4[2]; - p2[3] = D_801D2F68; - return 1; - } - return 0; -} - - - - -/* func_80135260 — "is reachable/hittable" gate (136 ins, ov_SC01_077 jr_8012ACE0). - * - * Sibling of the already-banked func_80135D20 (src/ov_SC03_099/ov_SC03_099_jr_80135D20.c L659+): - * same func_80135480 switch (jtbl_801D8158, cases 0..4, default falls through with p/flag/q - * UNINITIALISED — reproduced by leaving the switch without a default), same peeled-probe + - * rotated list loop, different `elsepath`. - * - * Load-bearing details (all byte-proven by ablation against match_one): - * - func_80135480 is DEFINED later in this same TU (L3261) returning s16. Calling it through an - * `s32 (*)(...)` cast is REQUIRED: the target does NOT re-extend the callee result before the - * switch (`addu $v1,$v0,$zero` only); a plain s16-returning call costs an extra `sll/sra 16`. - * The cast is call-site-local, so func_80135480's own definition is untouched (no //@EDIT). - * - D_80189EF8 / D_80189EFC / D_80189F04 MUST be declared as 4-byte POINTERS - * (`extern u16 *D_801870Bx;`), not the canonical `extern u8` + `(*(u16**)&sym)` cast. With the - * u8 form gcc CSEs `&sym` into two callee-saved regs ($s1/$s5), which costs a 7th saved - * register ($s6 for arg3) and 3 extra instructions. This is exactly the retype already - * documented in this TU's @stuck note at L3127. The decls are BLOCK-SCOPE-compatible with the - * TU's other `extern u8 D_80189EF8;` bodies (the TU already mixes both forms: L2461 vs L2587). - * - `u8 dead[56];` is a DEAD local that only sets the frame: without it the frame is 0x30, the - * target's is 0x68 (gcc-2.7.2 assign_stack_local runs at expand time, so an unreferenced - * aggregate still owns its slot). Body bytes are already exact at 136/136 without it — the 16 - * residual diffs are purely the sp/save-slot immediates. - * - explicit goto layout (loop / hit / body / elsepath) reproduces the target's block ORDER: the - * `hit` block sits physically between the loop test and the loop body, and its leading - * `move a0,flag` gets copied into all four branch delay slots. - * - the two D_801870xx compare fields are read `lhu` -> u16; the func_80134A74 args are `(s16)` - * casts of those u16 lvalues (combine folds the fresh ones into `lh`, and sll/sra the one that - * is still live in $a1 from the 0xFF80 compare). - * - func_80135D20's §5a cross-jump barrier is NOT needed here (ablated: MATCH either way). - */ -extern s16 func_80135480(void*, s32, s16*, s16*); -extern s32 func_80135EB0(void *arg0, s32 arg1_); -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_80134A74(int, s16, s16, int); - -s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3) -{ - /* BLOCK scope on purpose: this TU already declares D_80189EF8/B0/B8 as `extern u8` inside - * other function bodies (L2461-2463) and as `extern u16 *` inside others (L2587-2589). - * A FILE-scope pointer decl here would make those inner `extern u8` decls conflicting-types. - * The same reason keeps D_801D2F6C/D_801D2F8C local (cf. the TU's own L3268-3270). */ - extern u16 *D_80189EF8; - extern u16 *D_80189EFC; - extern u16 *D_80189F04; - extern s32 D_801D2F6C; - extern s32 D_801D2F8C; - - u8 dead[56]; - s32 *p; - s32 flag; - s32 q; - u16 *pa; - u16 *pb; - u16 *pc; - u16 *pd; - u16 *pe; - u16 t; - - switch (((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)((void *)arg0, arg1, arg2, arg3)) { - case 0: - return 0; - case 1: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - q = arg0 + 0x34; - p = &D_801D2F8C; - flag = 0; - break; - case 4: - q = (s32)&D_801D2F6C; - p = &D_801D2F8C; - flag = 1; - break; - } - if (arg1 >= 0) { - goto elsepath; - } - if (func_80135EB0(p, 0) != 0) { - goto hit; - } - p = (s32 *)*p; - if (p == 0) { - return 0; - } -loop: - if (func_80135EB0(p, 0) == 0) { - goto body; - } -hit: - func_80136A94(flag, arg0, (s32)arg3, q); - return 1; -body: - p = (s32 *)*p; - if (p != 0) { - goto loop; - } - return 0; -elsepath: - pa = D_80189EFC; - pb = D_80189EF8; - pc = D_80189F04; - pc[0] = pa[0] - pb[0]; - pc[1] = pa[1] - pb[1]; - pc[2] = pa[2] - pb[2]; - if (func_80134A74(0, (s16)pb[0], (s16)pb[2], (int)p) != 0) { - goto hit; - } - pd = D_80189EF8; - pe = D_80189EFC; - t = pe[0]; - if (((pd[0] & 0xFF80) == (t & 0xFF80)) && ((pd[2] & 0xFF80) == (pe[2] & 0xFF80))) { - return 0; - } - if (func_80134A74(0, (s16)t, (s16)pe[2], (int)p) != 0) { - goto hit; - } - return 0; -} - - -/* func_80135480 — cull + coordinate-transform emitter (258 ins, ov_SC01_077 split _a, ×134 family). - * - * NOT a §43 s16-param giant. Params are (void*, s32, s16*, s16*); the sole `sll/sra 16` is the s16 - * RETURN narrowing on $s3 (result), not an in-place arg-reg narrow. So §43's K&R-s16-param map does - * not apply here — no //@EDIT, no ec_edit. func_80135480 has NO ambient prototype/caller anywhere in - * src/include, so the s16 return type is free (no void->s32 flip, no engine_core.h edit). - * - * THE CRACK (residual class = §31 regalloc/schedule, RC-4/RC-2 in gcc-2.7.2-map/regalloc.md): - * the two output buffers D_80189EF8 / D_80189EFC are written through a pointer in each of the two - * return tails (mode!=0 and mode==0). A single function-scope `s16 *tmp` reused across both tails is a - * GLOBAL allocno (used in 2 blocks, dies 4x) -> forced onto one hard reg ($a1), which is WRONG and also - * perturbs the switch's first-`beq` delay-slot fill (extra nop). The target instead allocates each - * store-group's pointer as a LOCAL-ALLOC pseudo (set once, used 3x, dies once, single block) that picks - * the lowest-free scratch over its OWN window: - * mode!=0 tail: p_AC -> $v1, p_B0 -> $v1 (reused, $v0 = the load temp) - * mode==0 tail: p_AC -> $v1, p_B0 -> $a0 (the sub-scratch occupies $v1, so $v1 is unavailable) - * Reproduced by giving each of the four store-groups its OWN block-scoped pointer. With the tail - * allocation correct, the whole schedule (incl. the beq delay slot) re-derives to byte-identical. - * No register pins (§17 caveat: don't pin $v1 — the target reuses it for the cull; a pin cascades - * per RC-5). NOTE: the block-scope `s16 *p` intentionally shadows the function-scope `s32 p` (the - * case-0x20000000 pointer base); scopes never overlap — legal and byte-verified. - * - * Zero file-scope footprint (block-scoped typedefs + externs; D_80189EF8/B0 read via the ambient - * `extern u8` + `*(s16**)&` §30 anon-cast, matching neighbor func_80135168) -> ×134-clean for - * family_sweep --edit-remap with no cc1 crash. - * - * VERIFIED: tools/rtu_match.py func_80135480 --split ov_SC01_077_a -> MATCH (258 ins), 3x stable. - */ -s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4) -{ - /* [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 §100); the whole-binary byte-gate is the arbiter. */ - extern u8 D_80189EF8; - extern u8 D_80189EFC; - extern void func_80048EAC(void *m0, void *m1); - extern void func_8004914C(void *m); - extern void ApplyTransposeMatrixLV(void *m, void *in, void *out); - extern void ApplyRotMatrixLV(void *in, void *out); - extern void ApplyRotMatrix(void *in, void *out); - extern s32 D_801D2F6C, D_801D2F70, D_801D2F74, D_801D2F78; - extern s16 D_801D2F7C; - extern s32 D_801D2F8C; - extern s16 D_801D2F90, D_801D2F92, D_801D2F94, D_801D2F96, D_801D2F98, D_801D2F9A; - - Vec32 in0, in1, rotout; - Mat32 mat2; - Vec16 vecin; - s32 result; - s32 mode; - s32 q1, q2; - s32 p; - s32 t18, t1A, t1C; - s32 *m; - - in0.vx = param_3[0] - *(s32 *)((s32)param_1 + 0x48); - in0.vz = param_3[2] - *(s32 *)((s32)param_1 + 0x50); - if ((param_2 & 0x10000000) == 0) { - if (in0.vx * in0.vx + in0.vz * in0.vz > 0x40000) { - return 0; - } - } - mode = param_2 & 0x60000000; - if (mode != 0) { - result = 1; - if (param_2 >= 0) { - mode &= 0x40000000; - } - in0.vy = param_3[1] - *(s32 *)((s32)param_1 + 0x4C); - in1.vx = param_4[0] - *(s32 *)((s32)param_1 + 0x48); - in1.vy = param_4[1] - *(s32 *)((s32)param_1 + 0x4C); - in1.vz = param_4[2] - *(s32 *)((s32)param_1 + 0x50); - switch (mode) { - case 0x60000000: - m = &D_801D2F6C; - *m = 0x1000000 / *(s16 *)((s32)param_1 + 0x18); - q1 = 0x1000000 / *(s16 *)((s32)param_1 + 0x1A); - q2 = 0x1000000 / *(s16 *)((s32)param_1 + 0x1C); - D_801D2F70 = 0; - D_801D2F78 = 0; - D_801D2F74 = q1; - D_801D2F7C = q2; - func_80048EAC((void *)((s32)param_1 + 0x34), m); - ApplyTransposeMatrixLV(m, &in0, &in0); - ApplyRotMatrixLV(&in1, &in1); - result = 2; - /* fallthrough */ - case 0x20000000: - p = (param_2 & 0xFFFFFFF) | 0x80000000; - t18 = *(s16 *)((s32)param_1 + 0x18); - t1A = *(s16 *)((s32)param_1 + 0x1A); - t1C = *(u16 *)((s32)param_1 + 0x1C); - mat2.w4 = 0; - mat2.wC = 0; - mat2.w0 = t18; - mat2.w8 = t1A; - mat2.h10 = t1C; - func_8004914C(&mat2); - vecin.vx = *(u16 *)(p + 4); - vecin.vy = *(u16 *)(p + 8); - vecin.vz = *(u16 *)(p + 0xC); - ApplyRotMatrix(&vecin, &rotout); - D_801D2F90 = rotout.vx; - D_801D2F94 = rotout.vy; - D_801D2F98 = rotout.vz; - vecin.vx = *(u16 *)(p + 6); - vecin.vy = *(u16 *)(p + 0xA); - vecin.vz = *(u16 *)(p + 0xE); - ApplyRotMatrix(&vecin, &rotout); - D_801D2F8C = 0; - D_801D2F92 = rotout.vx; - D_801D2F96 = rotout.vy; - D_801D2F9A = rotout.vz; - result += 2; - break; - case 0x40000000: - ApplyTransposeMatrixLV((void *)((s32)param_1 + 0x34), &in0, &in0); - ApplyRotMatrixLV(&in1, &in1); - result = 2; - break; - } - { - s16 *p = *(s16 **)&D_80189EF8; - p[0] = in0.vx; - p[1] = in0.vy; - p[2] = in0.vz; - } - { - s16 *p = *(s16 **)&D_80189EFC; - p[0] = in1.vx; - p[1] = in1.vy; - p[2] = in1.vz; - } - return result; - } - { - s16 *p = *(s16 **)&D_80189EF8; - p[0] = in0.vx; - p[1] = ((u16 *)param_3)[1] - *(s32 *)((s32)param_1 + 0x4C); - p[2] = in0.vz; - } - { - s16 *p = *(s16 **)&D_80189EFC; - p[0] = ((u16 *)param_4)[0] - *(s32 *)((s32)param_1 + 0x48); - p[1] = ((u16 *)param_4)[1] - *(s32 *)((s32)param_1 + 0x4C); - p[2] = ((u16 *)param_4)[2] - *(s32 *)((s32)param_1 + 0x50); - } - return 1; -} diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80135888.c b/src/ov_SC03_119/ov_SC03_119_jr_80135888.c deleted file mode 100644 index 95128e48b..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_80135888.c +++ /dev/null @@ -1,707 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_80189CE4[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_80189CF8[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801D2F10; -extern s32 D_801D2F14; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_80189E38[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_80189E90[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_80189ED8[])(void); -extern void func_80131F28(void *a0); -extern void (*D_80189EE0[])(void); -extern void func_80131F64(void *a0); -extern void (*D_80189EE8[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_80189EF0[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_80189E98; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_80189EB8; -extern void func_801321B0(int param_1); -extern int D_80189EC8; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern int D_801D2F58; -extern u16 D_801D2F68; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -/* ==== end §8b carried decl layer ==== */ - - - -extern s16 func_80135480(void*, s32, s16*, s16*); -extern s32 func_80135EB0(void *arg0, s32 arg1_); -extern int func_80134A74(int, s16, s16, int); -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); - -extern u8 D_80189EF8; -extern u8 D_80189EFC; -extern u8 D_80189F04; -extern s32 D_801D2F6C; -extern s32 D_801D2F8C; - -s32 func_80135888(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - s32 pad_[8]; - register s32 m __asm__("$2"); - s32 sp; - register s32 p1 __asm__("$17"); - register s32 mode __asm__("$18"); - register s32 p0 __asm__("$19"); - register s32 base __asm__("$20"); - register s32 p3 __asm__("$21"); - - p0 = arg0; - p1 = arg1; - p3 = arg3; - - switch (((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)((void *)arg0, arg1, (s16 *)arg2, (s16 *)arg3)) { - case 0: - return 0; - case 1: - base = p0 + 0x34; - m = p1 & 0xFFFFFFF; - sp = m | 0x80000000; - mode = 0; - break; - case 2: - base = p0 + 0x34; - m = p1 & 0xFFFFFFF; - sp = m | 0x80000000; - mode = 1; - break; - case 3: - base = p0 + 0x34; - sp = (s32)&D_801D2F8C; - mode = 0; - break; - case 4: - base = (s32)&D_801D2F6C; - sp = (s32)&D_801D2F8C; - mode = 1; - break; - } - - if (p1 < 0) { - if (func_80135EB0(sp, 0) != 0) { - func_80136A94(mode, p0, p3, base); - return 1; - } - sp = *(s32 *)sp; - __asm__ __volatile__(""); - while (sp != 0) { - if (func_80135EB0(sp, 0) != 0) { -hit: - func_80136A94(mode, p0, p3, base); - return 1; - } - sp = *(s32 *)sp; - } - return 0; - } - { - u16 *pb = (*(u16 * *)&D_80189EFC); - u16 *pa = (*(u16 * *)&D_80189EF8); - s16 *pc = (*(s16 * *)&D_80189F04); - pc[0] = pb[0] - pa[0]; - pc[1] = pb[1] - pa[1]; - pc[2] = pb[2] - pa[2]; - if (func_80134A74(0, (s16)pa[0], (s16)pa[2], sp) == 0) { - return 0; - } - } - goto hit; -} - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80135A4C.c b/src/ov_SC03_119/ov_SC03_119_jr_80135A4C.c deleted file mode 100644 index d93b8f06a..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_80135A4C.c +++ /dev/null @@ -1,730 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_80189CE4[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_80189CF8[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801D2F10; -extern s32 D_801D2F14; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_80189E38[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_80189E90[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_80189ED8[])(void); -extern void func_80131F28(void *a0); -extern void (*D_80189EE0[])(void); -extern void func_80131F64(void *a0); -extern void (*D_80189EE8[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_80189EF0[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_80189E98; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_80189EB8; -extern void func_801321B0(int param_1); -extern int D_80189EC8; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern int D_801D2F58; -extern u16 D_801D2F68; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -/* ==== end §8b carried decl layer ==== */ - - -s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3) { - typedef struct { s8 c[8]; } Blk8; - extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); - extern s32 func_80135EB0(void *arg0, s32 arg1_); - extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); - extern s32 func_80133AB0(s16, s16, s16, s32); - extern u8 D_80189EF8; - extern u8 D_80189EFC; - extern s16 *D_80189F00; - extern s16 D_801D2F64; - extern u16 D_801D2F68; - extern s32 D_801D2F6C; - extern s32 D_801D2F8C; - extern u8 D_801152A8[]; - extern u8 D_801152B0; - - s32 *p; - register s32 s7 __asm__("$23"); - s32 flag; - s32 acc; - s16 i; - s32 eq; - s32 ret; - s32 frame_pad[8]; - (void)&frame_pad; - - switch (((s32 (*)(void))func_80135480)()) { - case 0: - return 0; - case 1: - s7 = a0 + 0x34; - p = (s32 *)((a1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - s7 = a0 + 0x34; - p = (s32 *)((a1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - s7 = a0 + 0x34; - p = (s32 *)&D_801D2F8C; - flag = 0; - break; - case 4: - s7 = (s32)&D_801D2F6C; - p = (s32 *)&D_801D2F8C; - flag = 1; - break; - } - - acc = 0; - if (a1 < 0) { - if (func_80135EB0(p, -0x8000) == 0) { - p = (s32 *)*p; - if (p == 0) return 0; - loop: - if (func_80135EB0(p, -0x8000) == 0) goto next; - } - docall: - func_80136A94(flag, a0, a3, s7); - return 1; - next: - p = (s32 *)*p; - __asm__ __volatile__(""); - if (p != 0) goto loop; - return 0; - } - - i = 0; - *(s16 *)((*(u8 **)&D_80189EF8) + 6) = -0x7FFF; - *(s16 *)((*(u8 **)&D_80189EFC) + 6) = 0x7FFF; - D_801D2F68 = 0; - D_801D2F64 = 0; - { - s32 t = 0; - if (((V3 *)a2)->x == ((V3 *)a3)->x && ((V3 *)a2)->y == ((V3 *)a3)->y) { - s32 zt = (((V3 *)a2)->z == ((V3 *)a3)->z); - __asm__("addu %0,%1,$zero" : "=r"(t) : "r"(zt)); - } - eq = t; - } - - while (1) { - ret = func_80133AB0(0, (s16)(*(Box **)&D_80189EF8)->f0, (s16)(*(Box **)&D_80189EF8)->f4, (s32)p); - if (ret == 0) goto out; - acc |= ret; - if (eq != 0) goto out; - { - s16 old = i; - i = i + 1; - if (old >= 5) return 0; - } - } - -out: - if ((s16)acc != 0 || D_801D2F64 != 0) { - if ((*(Box **)&D_80189EF8)->f6 >= -0xBCB) { - *(Blk8 *)D_801152A8 = *(Blk8 *)&D_801152B0; - } - (*(Box **)&D_80189F00)->f0 = (*(Box **)&D_80189EFC)->f0; - (*(Box **)&D_80189F00)->f2 = (*(Box **)&D_80189EFC)->f2; - (*(Box **)&D_80189F00)->f4 = (*(Box **)&D_80189EFC)->f4; - goto docall; - } - return 0; -} diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80135D20.c b/src/ov_SC03_119/ov_SC03_119_jr_80135D20.c deleted file mode 100644 index 1f7122343..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_80135D20.c +++ /dev/null @@ -1,1502 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C218(void *a0); -extern void func_8012C098(void *param_1); -extern s32 func_8012C0EC(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C750(s32 a0); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern s32 func_8012E778(int param_1, int param_2); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; -extern void func_8012E9C0(int param_1); -extern void func_8012EA90(s32 param_1, s32 param_2, s32 *param_3); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_80189CE4[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern void func_8012CBF4(s32); -extern s32 func_80131D68(s32 a0, s32 a1); -extern void func_80130650(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130A18(u8 *a0); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_80189CF8[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_80131E00(); -extern s32 D_801D2F10; -extern s32 D_801D2F14; -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern int func_80131D68(int a0, int a1); -extern void (*D_80189E38[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_80189E90[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_80189ED8[])(void); -extern void func_80131F28(void *a0); -extern void (*D_80189EE0[])(void); -extern void func_80131F64(void *a0); -extern void (*D_80189EE8[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_80189EF0[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_80189E98; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_80189EB8; -extern void func_801321B0(int param_1); -extern int D_80189EC8; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void memcpy(); -extern void gteMIMefunc(); -extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_80134310(Vec3s *a0, Vec3s *a1, s32 a2); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern int func_80134A74(int param_1, s16 param_2, s16 param_3, int param_4); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern int D_801D2F58; -extern u16 D_801D2F68; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); -/* ==== end §8b carried decl layer ==== */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (match_one 100/100 + rtu_match real-TU); needs the PAIRED //@EDIT on ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(return s16->s32 + `s32 result;`->`s16 result;`, whole-TU byte-neutral, verified) + one $s1 pin on `flag` -//@EDIT s16 ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(void *param_1, s32 param_2, s16 *param_3, s16 *param_4)||s32 ((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)(void *param_1, s32 param_2, s16 *param_3, s16 *param_4) -//@EDIT s32 result;|| s16 result; - -/* func_80135D20 — "is visible/hittable from " gate (100 ins, ov_SC06_018 jr_8012ACE0). - * - * Builds a second probe point 0x300 above the caller's point on the stack, asks func_80135480 to - * cull/transform it, then dispatches on that result (jtbl_801D2A90, cases 0..4; default falls - * through with p/flag/q UNINITIALISED — reproduced by leaving the switch without a default). - * - * Load-bearing details (do not "clean up"): - * - `u8 dead[96];` is a DEAD aggregate whose only job is the frame layout: it forces the probe - * buffer to sp+0x70 and the frame to 0x98 (gcc-2.7.2 assign_stack_local runs at expand time, so - * an unreferenced aggregate still owns its slot). Remove it and every sp offset shifts by 0x60. - * - `__asm__ __volatile__("")` is the §5a CROSS-JUMP BARRIER: without it jump.c merges the peeled - * first func_80135EB0 probe into the list loop (100 ins -> 88). - * - the explicit goto layout (loop / hit / body / elsepath) reproduces the target's basic-block - * ORDER: the `hit` block sits physically between the loop test and the loop body. A structured - * while/do-while emits the inverted layout (-3 ins, 39 diffs). - * - `register s32 flag __asm__("$17")` is a §17 pin. WITHOUT it gcc ties `arg1`->$s1 / `flag`->$s2, - * the reverse of the target (12 diffs, everything else already byte-exact). Pin-free attempts - * (declaring `flag` before `p`; assigning `flag` first in every case body) were both tried and - * do NOT flip the tie-break. The pin's live range does cross calls, so prefer ×1 banking. - * - func_80135480 must be declared INT-returning here: the target does NOT re-extend the callee's - * result before the switch (`addu $v1,$v0,$zero` only), while an s16-returning prototype costs a - * `sll/sra 16` pair. The two //@EDIT lines flip the in-TU definition s16->s32 and narrow its local - * `result` to s16 instead — the narrowing simply moves from the return-type conversion to the - * assignment, so the WHOLE TU compiles byte-identically (objdump-diffed: only the filename line - * changes). Both edits are required; flipping the return type alone drops func_80135480's tail - * `sll/sra` and shortens it by one instruction. - */ -extern s16 func_80135480(void*, s32, s16*, s16*); -extern s32 func_80135EB0(void *arg0, s32 arg1_); -extern s32 func_801345F8(s32 arg); -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 D_801D2F6C; -extern s32 D_801D2F8C; - -s32 func_80135D20(s32 arg0, s32 arg1, u16 *arg2) -{ - u8 dead[96]; - u16 sp[3]; - s32 *p; - register s32 flag __asm__("$17"); - s32 q; - - sp[0] = arg2[0]; - sp[1] = arg2[1] + 0x300; - sp[2] = arg2[2]; - switch (((s32 (*)(void *, s32, s16 *, s16 *))func_80135480)((void *)arg0, arg1, (s16 *)arg2, (s16 *)sp)) { - case 0: - return 0; - case 1: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 0; - break; - case 2: - q = arg0 + 0x34; - p = (s32 *)((arg1 & 0xFFFFFFF) | 0x80000000); - flag = 1; - break; - case 3: - q = arg0 + 0x34; - p = &D_801D2F8C; - flag = 0; - break; - case 4: - q = (s32)&D_801D2F6C; - p = &D_801D2F8C; - flag = 1; - break; - } - if (arg1 >= 0) { - goto elsepath; - } - if (func_80135EB0(p, 0) != 0) { - goto hit; - } - p = (s32 *)*p; - if (p == NULL) { - return 0; - } - __asm__ __volatile__(""); -loop: - if (func_80135EB0(p, 0) == 0) { - goto body; - } -hit: - func_80136A94(flag, arg0, (s32)arg2, q); - return 1; -body: - p = (s32 *)*p; - if (p != NULL) { - goto loop; - } - return 0; -elsepath: - if (func_801345F8(arg1) != 0) { - goto hit; - } - return 0; -} - - -// @class: struct -// @stuck: none — MATCH (289 ins). symcheck: only the cosmetic jtbl_801D81B8 floor (§8 carve). -// -// func_80135EB0 — h_seq family exemplar (x138 across the overlay fleet). Levers that made it: -// 1. m2 (the y-axis mask) MUST be the if/else form, NOT `m2=0x10; if (a8<=t3) m2=...`. -// Both emit the same compact `bnez; li $s2,0x10` pair, but the pre-init form lets CSE carry -// the D_80189EF8 pointer load into the (m1|m2)==0 block; the if/else form ends the CSE -// extended-BB so the block reloads `lui/lw D_80189EF8` (target does). Worth 2 ins + the whole -// big-block register assignment. -// 2. Zero-byte `__asm__ __volatile__("")` fences in case 1 and case 2 (DIFFERENT templates, "" vs " ") -// block gcc-2.7.2 cross_jump from folding those two bodies into case 6's second-call tail -// (they are byte-identical to it; the target keeps all three copies). Worth 10 ins. -// 3. Zero-byte fences between the three big-block coordinate groups stop sched2 hoisting the next -// group's `lhu` into the previous group's load-delay nop (restores 2 nops). -// 4. `D_801152AA = 0;` AFTER the h0 statement: it shortens the [6]-field temp's local-alloc live -// range so c0 wins $v1 and the field temps take $v0/$a0 (target), not $v1/$v0. -// 5. case 4 reaches case 8's tail through a shared `L288` label using `w = x << 16` / `w >> 16` -// so the shared block is exactly `sra $a1,$a1,16` — that is target's .L80136288. `w` pinned to -// $a1 ($5); it never spans a jal so §74 does not apply. -// 6. arg1 copied into a $s3-pinned local — without it global-alloc gives arg1 $s2 and m2 $s3 -// (arg1 has more refs; target's priority order is arg0, sext-temp, m2, arg1). -// 7. `ret0:` sits between case 8 and case 10 and `done:`/`case 0:` after case 10 — that is the -// target's basic-block order; reorg then produces the inline `move $v0,$zero` delay slots. - -extern u8 D_80189EF8; -extern u8 D_80189EFC; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern s32 D_801150D8; -extern u8 D_80126720[]; - -extern s32 VectorNormalSS(void *a0, void *a1); -extern s32 func_801365B8(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32, s32, s32); - -s32 func_80135EB0(void *arg0, s32 arg1_) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - register s32 arg1 __asm__("$19") = arg1_; - s32 t1; - s32 t2; - s32 t3; - s32 m1; - s32 m2; - s32 t4; - s32 t5; - s32 t6; - s32 n1; - s32 n2; - s32 r; - s32 sv; - register s32 w __asm__("$5"); - void *q; - - t1 = (*(s16 **)&D_80189EF8)[0]; - if (t1 < M2C_FIELD(arg0, s16 *, 4)) { - m1 = 1; - } else { - m1 = (M2C_FIELD(arg0, s16 *, 6) < t1) << 1; - } - t2 = (*(s16 **)&D_80189EF8)[2]; - if (t2 < M2C_FIELD(arg0, s16 *, 0xC)) { - m1 |= 4; - } else if (M2C_FIELD(arg0, s16 *, 0xE) < t2) { - m1 |= 8; - } - t3 = (*(s16 **)&D_80189EF8)[1]; - if (t3 < M2C_FIELD(arg0, s16 *, 8)) { - m2 = 0x10; - } else { - m2 = (M2C_FIELD(arg0, s16 *, 0xA) < t3) << 5; - } - if ((m1 | m2) == 0) { - u16 *ac; - s16 *b4; - s32 c0; - s32 c1; - s32 h0; - s32 h1; - - ac = *(u16 **)&D_80189EF8; - b4 = D_80189F00; - c0 = ac[0]; - b4[0] = c0; - h0 = (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1; - D_801152AA = 0; - (*(s16 *)D_80126720) = h0; - (*(s16 *)D_801152A8) = c0 - h0; - __asm__ __volatile__(""); - c1 = ac[2]; - b4[2] = c1; - h1 = (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1; - D_80126724 = h1; - D_801152AC = c1 - h1; - __asm__ __volatile__(""); - b4[1] = ac[1]; - D_80126722 = (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1; - VectorNormalSS(D_801152A8, D_801152A8); - D_801150D8 |= 1; - return 1; - } - - t4 = (*(s16 **)&D_80189EFC)[0]; - if (t4 < M2C_FIELD(arg0, s16 *, 4)) { - n1 = 1; - } else { - n1 = (M2C_FIELD(arg0, s16 *, 6) < t4) << 1; - } - t5 = (*(s16 **)&D_80189EFC)[2]; - if (t5 < M2C_FIELD(arg0, s16 *, 0xC)) { - n1 |= 4; - } else if (M2C_FIELD(arg0, s16 *, 0xE) < t5) { - n1 |= 8; - } - t6 = (*(s16 **)&D_80189EFC)[1]; - if (t6 < M2C_FIELD(arg0, s16 *, 8)) { - n2 = 0x10; - } else { - n2 = (M2C_FIELD(arg0, s16 *, 0xA) < t6) << 5; - } - if (((m1 | m2) & (n1 | n2)) != 0) { - goto ret0; - } - { - u16 *b0 = *(u16 **)&D_80189EFC; - u16 *ac = *(u16 **)&D_80189EF8; - s16 *b8 = *(s16 **)&D_80189F04; - - b8[0] = b0[0] - ac[0]; - b8[1] = b0[1] - ac[1]; - b8[2] = b0[2] - ac[2]; - } - - switch (m1) { - case 4: - q = arg0; - sv = M2C_FIELD(arg0, s16 *, 0xC); - w = arg1 << 16; - goto L288; - case 1: - r = func_801365B8(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 4)); - __asm__ __volatile__(""); - goto done; - case 2: - r = func_801365B8(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 6)); - __asm__ __volatile__(" "); - goto done; - case 5: - if (func_80136334(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 0xC)) != 0) { - return 1; - } - r = func_801365B8(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 4)); - goto done; - case 6: - if (func_80136334(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 0xC)) != 0) { - return 1; - } - r = func_801365B8(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 6)); - goto done; - case 9: - if (func_801365B8(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 4)) != 0) { - return 1; - } - /* fallthrough */ - case 8: - q = arg0; - sv = M2C_FIELD(arg0, s16 *, 0xE); - w = (arg1 | 1) << 16; - L288: - r = func_80136334(q, w >> 16, sv); - goto done; - ret0: - return 0; - case 10: - if (func_801365B8(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 6)) != 0) { - return 1; - } - r = func_80136334(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 0xE)); - done: - if (r != 0) { - return 1; - } - case 0: - if (m2 == 0) { - goto ret0; - } - if (m2 == 0x10) { - if (((s32 (*)(void *, s32, s32))func_80136824)(arg0, (s16) arg1, M2C_FIELD(arg0, s16 *, 8)) == 0) { - goto ret0; - } - } else { - if (((s32 (*)(void *, s32, s32))func_80136824)(arg0, (s16) (arg1 | 1), M2C_FIELD(arg0, s16 *, 0xA)) == 0) { - goto ret0; - } - } - default: - return 1; - } -} - - -s32 func_80136334(void *arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - register s32 a1v __asm__("$11"); - register s32 a2v __asm__("$12"); - register s32 n __asm__("$5"); - register s16 *b4 __asm__("$7"); - s32 d; - s32 dx; - s32 denom; - s32 result; - s32 frame_pad[2]; - (void)&frame_pad; - __asm__("" : "=r"(a1v) : "0"(arg1)); - a2v = arg2; - - if (!(arg1 & 1)) { - dx = (s16) arg2 - (*(s16 **)&D_80189EF8)[2]; - d = dx; - denom = -(*(s16 **)&D_80189F04)[2]; - } else { - denom = (*(s16 **)&D_80189F04)[2]; - d = (*(s16 **)&D_80189EF8)[2] - (s16) arg2; - dx = -d; - } - n = -d; - { - register s16 *b8 __asm__("$6") = *(s16 **)&D_80189F04; - u16 *ac = *(u16 **)&D_80189EF8; - b4 = D_80189F00; - b4[0] = ac[0] + n * b8[0] / denom; - b4[1] = ac[1] + n * b8[1] / denom; - b4[2] = ac[2] + dx; - } - - if (b4[0] < M2C_FIELD(arg0, s16 *, 4)) return 0; - if (M2C_FIELD(arg0, s16 *, 6) < b4[0]) return 0; - if (b4[1] < M2C_FIELD(arg0, s16 *, 8)) return 0; - if (M2C_FIELD(arg0, s16 *, 0xA) < b4[1]) return 0; - if (a1v & 0x8000) { - u16 *b0 = *(u16 **)&D_80189EFC; - b4[0] = b0[0]; - b4[1] = b0[1]; - } - D_801152AA = 0; - (*(s16 *)D_801152A8) = 0; - if (a1v & 1) { - D_80189F00[2] = a2v + 2; - __asm__ __volatile__(""); - D_801152AC = 0xFFF; - } else { - D_801152AC = -0xFFF; - D_80189F00[2] = a2v - 2; - } - __asm__ __volatile__("" :: "r"(a1v), "r"(a2v)); - (*(s16 *)D_80126720) = (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1; - D_80126722 = (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1; - result = 1; - D_80126724 = (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1; - return result; -} - - - - -// @class: regalloc-order — per-location family member of ov_SC01_077 exemplar func_801365B8 (x134). -// @stuck: none — MATCH expected; identical structure, only the 4 data ptrs differ (AC/B0/B4/B8 -> B64/68/6C/70). - -// D_80189EF8/68/70 file-scope `extern u8` holding pointers -> read via *(T**)&sym (§42c-2). -// D_80189F00 file-scope `extern s16*` -> use directly. D_80126720 file-scope `extern u8[]` -// -> single store via *(s16*)D_80126720. D_801152A8/AA/AC, D_80126722/24 block-scope externs -// (siblings use block-scope; gcc-2.7.2 does not cross-conflict block-scope externs). -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern u8 D_80126720[]; - -s32 func_801365B8(void *arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - u16 *ac; - s16 *b8; - s16 *b4; - s16 temp_v0; - s16 temp_v1; - s32 var_a3; - s32 temp_a1; - s32 var_a1; - s32 var_v0; - s32 var_v1; - s32 a1c; - s32 a2c; - s32 cond; - register u32 zr __asm__("$0"); - - __asm__("addu %0,%1,$zero" : "=r"(a1c) : "r"(arg1)); - cond = arg1 & 1; - a2c = arg2 + zr; - if (!cond) { - var_v1 = (s16) arg2 - (*(s16 **)&D_80189EF8)[0]; - var_a1 = var_v1; - var_a3 = -(*(s16 **)&D_80189F04)[0]; - } else { - var_a3 = (*(s16 **)&D_80189F04)[0]; - var_v1 = (*(s16 **)&D_80189EF8)[0] - (s16) arg2; - var_a1 = -var_v1; - } - ac = *(u16 **)&D_80189EF8; - b4 = D_80189F00; - b8 = *(s16 **)&D_80189F04; - b4[0] = ac[0] + var_a1; - temp_a1 = -var_v1; - b4[1] = ac[1] + (temp_a1 * b8[1]) / var_a3; - temp_v0 = ac[2] + (temp_a1 * b8[2]) / var_a3; - b4[2] = temp_v0; - var_v0 = 0; - if (temp_v0 < M2C_FIELD(arg0, s16 *, 0xC)) { - return var_v0; - } - if (M2C_FIELD(arg0, s16 *, 0xE) < temp_v0) { - return var_v0; - } - temp_v1 = b4[1]; - if (temp_v1 < M2C_FIELD(arg0, s16 *, 8)) { - return var_v0; - } - if (M2C_FIELD(arg0, s16 *, 0xA) < temp_v1) { - return var_v0; - } - __asm__("" :: "r"(a1c)); - __asm__("" :: "r"(a1c)); - if (a1c & 0x8000) { - b4[1] = (s16) (*(u16 **)&D_80189EFC)[1]; - b4[2] = (s16) (*(u16 **)&D_80189EFC)[2]; - } - D_801152AC = 0; - D_801152AA = 0; - if ((a1c & 1) != 0) { - *(s16 *)D_801152A8 = 0xFFF; - M2C_FIELD(D_80189F00, s16 *, 0) = a2c + 2; - } else { - *(s16 *)D_801152A8 = -0xFFF; - M2C_FIELD(D_80189F00, s16 *, 0) = a2c - 2; - } - *(s16 *)D_80126720 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 4) + M2C_FIELD(arg0, s16 *, 6)) >> 1); - D_80126722 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 8) + M2C_FIELD(arg0, s16 *, 0xA)) >> 1); - var_v0 = 1; - D_80126724 = (s16) ((s32) (M2C_FIELD(arg0, s16 *, 0xC) + M2C_FIELD(arg0, s16 *, 0xE)) >> 1); - return var_v0; -} - - - -// @class: pointer-type — pointer-vs-array reconcile for func_80136824 (ov_SC01_077_a) -// D_80189EF8/B0/B8 are file-scope `extern u8`, D_80189F00 is `extern s32 []`; each HOLDS a -// pointer value that the target loads via lw then derefs. Read as pointer via *(T**)&sym. -// D_80189F00 must be a SCALAR pointer (not s32[]) — as an array it decays and gcc CSEs the -// base address into a held reg (lui;addiu;lw 0(reg)) across the 3 reloads; as a scalar -// pointer it folds %lo (lui;lw %lo). Retype all 3 file-TU occurrences (byte-neutral: the -// siblings read it once via *(u16**)&sym == direct lw either way). - -s32 func_80136824(s32 arg0, s32 arg1, s32 arg2) { - extern u8 D_801152A8[]; - extern s16 D_801152AA; - extern s16 D_801152AC; - extern s16 D_80126722; - extern s16 D_80126724; - - register u16 *ac __asm__("$4"); - register s16 *b8 __asm__("$6"); - register s16 *b4 __asm__("$9"); - register s32 r __asm__("$3"); - register s32 pos __asm__("$12"); - register s32 a1v __asm__("$5"); - s16 temp_v0; - s16 temp_v1; - s32 var_a3; - s16 var_v0_3; - s32 temp_a1; - s32 var_t0; - s32 var_v1; - s16 *b4b; - u16 *p; - - __asm__ ("" : "=r"(a1v) : "0"(arg1)); - pos = arg2; - if (!(a1v & 1)) { - var_t0 = (s16) arg2 - (*(s16 **)&D_80189EF8)[1]; - var_v1 = var_t0; - var_a3 = -(*(s16 **)&D_80189F04)[1]; - } else { - var_a3 = (*(s16 **)&D_80189F04)[1]; - var_v1 = (*(s16 **)&D_80189EF8)[1] - (s16) arg2; - var_t0 = -var_v1; - } - b8 = (*(s16 **)&D_80189F04); - ac = (*(u16 **)&D_80189EF8); - b4 = D_80189F00; - temp_a1 = -var_v1; - r = (temp_a1 * b8[0]) / var_a3; - b4[0] = ac[0] + r; - b4[1] = ac[1] + var_t0; - r = (temp_a1 * b8[2]) / var_a3; - temp_v0 = ac[2] + r; - b4[2] = temp_v0; - temp_v1 = b4[0]; - if (temp_v1 < M2C_FIELD(((void *)arg0), s16 *, 4)) { - return 0; - } - if (M2C_FIELD(((void *)arg0), s16 *, 6) < temp_v1) { - return 0; - } - if (temp_v0 < M2C_FIELD(((void *)arg0), s16 *, 0xC)) { - return 0; - } - if (M2C_FIELD(((void *)arg0), s16 *, 0xE) < temp_v0) { - return 0; - } - if (arg1 & 0x8000) { - p = (*(u16 **)&D_80189EFC); - b4[0] = (s16) p[0]; - b4[2] = (s16) p[2]; - } - D_801152AC = 0; - (*(s16 *)D_801152A8) = 0; - if (arg1 & 1) { - b4b = D_80189F00; - D_801152AA = 0xFFF; - __asm__ __volatile__(""); - var_v0_3 = pos + 2; - } else { - b4b = D_80189F00; - D_801152AA = -0xFFF; - __asm__ __volatile__(""); - var_v0_3 = pos - 2; - } - b4b[1] = var_v0_3; - __asm__ __volatile__("" :: "r"(pos)); - (*(s16 *)D_80126720) = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 4) + M2C_FIELD(((void *)arg0), s16 *, 6)) >> 1); - D_80126722 = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 8) + M2C_FIELD(((void *)arg0), s16 *, 0xA)) >> 1); - D_80126724 = (s16) ((s32) (M2C_FIELD(((void *)arg0), s16 *, 0xC) + M2C_FIELD(((void *)arg0), s16 *, 0xE)) >> 1); - return 1; -} - - -// @class: schedule -// @stuck: none — MATCH (76 ins, relocation-masked). Key lever: the D_80126720/22/24 tail is a -// global-short RMW `+=`. Writing it via a cast `*(u16*)&SYM = *(u16*)&SYM + x` makes gcc CSE -// the address into a base reg (base-reuse) for ALL three — but the target only base-reuses -// D_80126720 (a SCHEDULER artifact: its addr-lui fills the load-delay slot after the pb4[4] -// load, and since $v0 is live it lands in $a0, reused for load+store). D_80126722/24 use the -// plain inline 2-lui form. Fix = DIRECT scalar RMW `SYM = SYM + x` (no &/cast) → inline %hi/%lo; -// the scheduler alone forces base-reuse on #1. Also: `s16 D_80126724 = D_80126724 + int` emits -// LHU (gcc-2.7.2 drops the sign-extend because the sum is truncated to 16b on the sh) — so the -// canonical s16 decl is byte-safe here (no u16 retype needed, keeps the sign-sensitive callers). - - -extern s16 *D_80189F00; /* holds a pointer value (*(u16**)&D_80189F00) */ - -s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3) { - extern void ApplyMatrixSV(void *m, void *v0, void *v1); - extern void ApplyRotMatrix(void *v0, void *v1); - extern u16 D_80126722; - extern s16 D_80126724; - extern s16 D_801152AA; - extern s16 D_801152AC; - - s32 out[4]; - u16 *pb4; - - if (a0) { - ApplyMatrixSV((void *)a3, *(void **)&D_80189F00, *(void **)&D_80189F00); - ApplyMatrixSV((void *)a3, (void *)D_80126720, (void *)D_80126720); - ApplyRotMatrix((void *)D_801152A8, (void *)out); - *(s16 *)D_801152A8 = out[0]; - D_801152AA = out[1]; - D_801152AC = out[2]; - } - - pb4 = *(u16 **)&D_80189F00; - *(s16 *)(a2) = pb4[0] + *(s32 *)(a1 + 0x48); - *(s16 *)(a2 + 2) = pb4[1] + *(s32 *)(a1 + 0x4C); - *(s16 *)(a2 + 4) = pb4[2] + *(s32 *)(a1 + 0x50); - - *(u16 *)D_80126720 = *(u16 *)D_80126720 + *(s32 *)(a1 + 0x48); - D_80126722 = D_80126722 + *(s32 *)(a1 + 0x4C); - D_80126724 = D_80126724 + *(s32 *)(a1 + 0x50); -} - - - -DEFINE_func_80136BC4() /* dedup: shared engine-core @0x80136BC4 (src/shared) */ - -DEFINE_func_80136C1C() /* dedup: shared engine-core @0x80136C1C (src/shared) */ - -DEFINE_func_80136C3C() /* dedup: shared engine-core @0x80136C3C (src/shared) */ - -DEFINE_func_80136C44() /* dedup: shared engine-core @0x80136C44 (src/shared) */ - -DEFINE_func_80136C4C() /* dedup: shared engine-core @0x80136C4C (src/shared) */ - - -extern unsigned short D_800B99F0; -extern void (*D_80189F14[])(void); - -void func_80136C54(void) -{ - D_80189F14[D_800B99F0](); -} - - -// @class: struct -// @stuck: none — MATCH (28 ins). 10-byte 1-aligned struct copy (S10_80136C90{char s[10]}) from global D_801D1F18 into a stack buffer, then func_8001534C(0,&buf,0x78,0x10,0,0). gcc emits the block move as 2 unaligned words (lwl/lwr+swl/swr) + 2 bytes (lb/sb). - - -s32 func_80136C90() -{ - extern void func_8001534C(int, void *, int, int, int, int); - extern S10_80136C90 D_801D1F18; - - S10_80136C90 buf = D_801D1F18; - func_8001534C(0, &buf, 0x78, 0x10, 0, 0); -} - - - -DEFINE_func_80136D00() /* dedup: shared engine-core @0x80136D00 (src/shared) */ - -DEFINE_func_80136D08() /* dedup: shared engine-core @0x80136D08 (src/shared) */ - -DEFINE_func_80136DFC() /* dedup: shared engine-core @0x80136DFC (src/shared) */ - -DEFINE_func_80136EC4() /* dedup: shared engine-core @0x80136EC4 (src/shared) */ - -DEFINE_func_80136ECC() /* dedup: shared engine-core @0x80136ECC (src/shared) */ - -DEFINE_func_80136F3C() /* dedup: shared engine-core @0x80136F3C (src/shared) */ - -DEFINE_func_80137030() /* dedup: shared engine-core @0x80137030 (src/shared) */ - -DEFINE_func_80137178() /* dedup: shared engine-core @0x80137178 (src/shared) */ - -DEFINE_func_801372B0() /* dedup: shared engine-core @0x801372B0 (src/shared) */ - -DEFINE_func_801375EC() /* dedup: shared engine-core @0x801375EC (src/shared) */ - -extern void func_801375EC(s32 a0, s16 a1); - -// @class: schedule (arg-copy placement) — PIN-FREE -// match_one: MATCH (26 ins). rtu: MATCH (26 ins) with NO //@EDIT and NO header edit. -// -// ---- RECONCILE 2026-08-01 (uc2 -> uc3) --------------------------------------------------- -// GATE ERROR was: -// jr_80135D20.c:1412 conflicting types for func_80137614 || :1362 previous declaration -// :1362 is `DEFINE_func_801375EC()`, whose expansion (src/shared/engine_core.h:2819) carries -// extern void func_80137614(s32 a0, s32 a1, s32 a2); -// and it is instantiated two lines ABOVE this function's INCLUDE_ASM splice point (:1364). -// :1412 is this draft's own definition. So the conflicting symbol is func_80137614 ITSELF -// and the axis is the §73 RETURN type: the shared header says `void`, the target ends -// `addu $v0, $s0, $zero` and callers in other overlays consume the result -// (ov_SC03_099_jr_80178D40.c already declares it `extern s32 func_80137614(s32,s32,s32)`), -// so the definition MUST stay s32. Re-voiding the definition is the decay loop: gcc-2.7.2 -// silently drops the $v0 set and you get 25/26 ins, class LENGTH-DRIFT/-1. -// -// ESCAPE USED: §37/§124 ASM-LABEL ALIAS (escape #2). The definition is given a distinct C -// identifier `aF80137614` with __asm__("func_80137614"), so it never collides with the -// header's `extern void func_80137614` while still emitting the canonical symbol. Zero -// header edits, zero TU edits, blast radius 0 — this replaces uc2's //@EDIT §65b de-macroize -// of DEFINE_func_801375EC, which would have had to be repeated at all 138 sweep sites. -// The TU already uses this exact idiom 60-odd lines below -// (`void *aF801376E8(int a0, int a1) __asm__("func_801376E8");`), so it travels to siblings. -// The in-TU call from func_801375EC still binds to the header's extern declaration and -// resolves to the same symbol at link time; func_801375EC's own 10 instructions are unchanged. -// -// ---- CODEGEN (unchanged from uc2 — do not touch) ----------------------------------------- -// Residual before the lever: 4 mismatched, the (sw $sN / addu $sN,$aX) prologue PAIRS mirrored — -// target births $s2<-a2 then $s3<-a1; the naive draft births $s3<-a1 then $s2<-a2 (parm order), -// and drags `sw $s3` above `sw $s2` with it. Register ASSIGNMENT was already right in both, so -// this is NOT a regalloc problem. Measured INERT: body statement order, extra plain locals, -// K&R parm-declaration order (incl. declaring a2 before a1 in the K&R decl block). -// -// LEVER — cookbook §67 (arg-copy PLACEMENT). One zero-instruction launder of the a1 parameter -// pins WHERE its entry copy materialises; a2's copy then takes the earlier slot and the register -// saves fall back into ascending order. DIRECTION MATTERS and is the opposite of the intuition: -// laundering a2 (the copy that must move EARLIER) is inert — launder the copy that must land -// LATER. §67 rule 1 respected: the laundered local is NOT pinned. A pinned variant -// (register s32 __asm__("$18") / __asm__("$19") on a2/a1) also MATCHes, but pins are strictly -// worse for the ×138 family sweep (§42e/§86 pin guard), so the pin-free single launder is banked. -// -// Shape copied from the matched next-door sibling DEFINE_func_8013767C() (engine_core.h), -// which is this function minus the 0xD8 mask and the +0x1C halfword store. - -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); - -s32 aF80137614(s32 a0, s32 a1, s32 a2) __asm__("func_80137614"); - -DEFINE_func_80137614() /* dedup: shared engine-core @0x80137614 (src/shared) */ - - -DEFINE_func_8013767C() /* dedup: shared engine-core @0x8013767C (src/shared) */ - -DEFINE_func_801376C8() /* dedup: shared engine-core @0x801376C8 (src/shared) */ - - -/* @class: plumbing (globals-around-two-calls) - * @stuck: none — MATCH (51 ins). - * - * RECONCILE (§37/§124 ASM-LABEL ALIAS) — no TU / header edit required. - * Gate error: ov_SC01_077_jr_80135D20.c:1415: conflicting types for `func_801376E8' - * || previous declaration at :1368 - * :1368 is DEFINE_func_801376C8(), the shared engine-core macro that carries - * `extern void func_801376E8(int a0, int a1);` — a VOID return. The target's last - * pre-epilogue instruction is `addu $v0, $s1, $zero`, i.e. it RETURNS &D_801269F0, - * so the definition MUST be non-void; a `void` definition makes gcc-2.7.2 merely warn - * and DROP the returned value, killing that instruction (LENGTH-DRIFT/-1, 50 ins). - * The conflict is on func_801376E8 ITSELF and is a pure RETURN-type disagreement - * (params already agree: int,int), so the §37/§124 alias applies verbatim: - * define under the C name aF801376E8 with __asm__("func_801376E8") so the C-level - * declaration never collides, while the emitted symbol is still func_801376E8. - * Codegen is untouched — an asm label renames the symbol, nothing else. - * (The earlier draft's `//@EDIT` widening of the shared extern to `void *` is a - * T2 fleet-shared edit; the alias is T0 draft-only. Cookbook §124: fix the reader, - * not the source.) - * - * Byte levers (unchanged from the passing draft): - * - `obj` local holding (s32)&D_801269F0: the address is CSEd ONCE into $s1 and reused - * for both jal args and the return (same idiom as the neighbouring func_80137B80). - * - D_80126A24 is s16 (`lh`) but D_80126A26 is u16 (`lhu`) with an explicit (s16) cast - * at the use site: gcc combines the cast's `sll 16; sra 16` with the `>>1` into - * `sll 16; sra 17`, which is exactly what the target emits. A plain s16 D_80126A26 - * would give `lh; sra 1` instead. - * - D_80126A14 as u16[2] (`lhu` loads, `%lo(D_80126A14 + 0x2)` for element 1). - */ - - -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern void func_80139BE0(s32 a0); - -void *aF801376E8(int a0, int a1) __asm__("func_801376E8"); - -DEFINE_func_801376E8() /* dedup: shared engine-core @0x801376E8 (src/shared) */ - - -DEFINE_func_801377B4() /* dedup: shared engine-core @0x801377B4 (src/shared) */ - -DEFINE_func_80137840() /* dedup: shared engine-core @0x80137840 (src/shared) */ - - -extern void func_80016714(void *a0, s32 a1); -extern void func_8013A860(void); - -void func_801378F0(void) { - - extern u8 D_80127520[]; - extern u8 aD801269F0[] __asm__("D_801269F0"); /* §37 alias: TU canon is `extern int D_801269F0` */ - extern u8 D_80126A28[]; - extern u8 D_80189F1C[]; - s32 i; - s32 si; - s32 di; - u8 *p; - - func_80016714(D_80127520, 0xBFC); - i = 0; - si = 0; - p = aD801269F0; - di = 0; - do { - func_80016714(p, 0x4C); - *(u16 *)&D_80126A28[di] = *(u16 *)&D_80189F1C[si]; - *(u16 *)&D_80126A28[di + 2] = *(u16 *)&D_80189F1C[si + 2]; - *(u16 *)&D_80126A28[di + 4] = *(u16 *)&D_80189F1C[si + 4]; - *(u16 *)&D_80126A28[di + 6] = *(u16 *)&D_80189F1C[si + 6]; - p += 0x4C; - i += 1; - si += 8; - di += 0x4C; - } while (i < 3); - func_8013A860(); -} - - -DEFINE_func_801379D8() /* dedup: shared engine-core @0x801379D8 (src/shared) */ - -DEFINE_func_801379EC() /* dedup: shared engine-core @0x801379EC (src/shared) */ - - -// @class: regalloc-order (walker-family, §52/§52a) — PIN-FREE -// Role-swap ($s0<->$s2 between loop1 and loops2/3) is driven by DENSITY (K2), not pins: -// - loop1 pointer has an extra ref (p != D_80127524 compare) -> wins $s0; index -> $s2 -// - loop2/3 index has >= pointer refs -> wins $s0; pointer -> $s2 -// Separate per-loop pointer/index vars => separate pseudos => can take different regs. - - -DEFINE_func_801379FC() /* dedup: shared engine-core @0x801379FC (src/shared) */ - - - -// @class: remat -// @stuck: target CSEs &D_801269F0 once for load+call arg; force via local pointer -extern s32 D_80127548[]; -extern int D_80189F68; -extern int D_801269F0; -extern void func_80138BE0(int p); - -void func_80137B80(void) { - int *p = &D_801269F0; - (*(int *)&D_80127548) = 0x24; - if (*p != 0) { - ((void (*)(int *))func_80138BE0)(p); - } - D_80189F68 += 1; -} - - -DEFINE_func_80137BD8() /* dedup: shared engine-core @0x80137BD8 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Three globals stored/loaded around 3 calls; &D_801269F0 held in $s1, arg1 in $s0 across calls; return reloads global D_800A5E60. - -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int D_80189F68; -extern int D_801269F0; - -extern void func_801392FC(); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); - -int func_80137D08(int arg0, int arg1, short arg2) -{ - unsigned char buf[3]; - - D_800A5E60 = arg0; - D_80126A0A = arg2; - ((void (*)(void *, int, int))func_801392FC)(&D_801269F0, D_80126A0E, arg1); - if ((*(short *)&D_801269F4) == 7) { - buf[0] = 0x39; - buf[1] = 0xFF; - buf[2] = 0x71; - ((void (*)(void *, void *, int))func_80137DD4)(&D_801269F0, buf, arg1); - } else if ((*(short *)&D_801269F4) == 3) { - if (D_80189F68 & 4) { - ((void (*)(void *, int))func_80139680)(&D_801269F0, arg1); - } - } - return D_800A5E60; -} - - -DEFINE_func_80137DD4() /* dedup: shared engine-core @0x80137DD4 (src/shared) */ - -DEFINE_func_80137FD8() /* dedup: shared engine-core @0x80137FD8 (src/shared) */ - - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_801380E0.c b/src/ov_SC03_119/ov_SC03_119_jr_801380E0.c deleted file mode 100644 index ddf5012da..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_801380E0.c +++ /dev/null @@ -1,1477 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_80189CE4[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_80189CF8[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_80189E38[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_80189E90[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_80189ED8[])(void); -extern void func_80131F28(void *a0); -extern void (*D_80189EE0[])(void); -extern void func_80131F64(void *a0); -extern void (*D_80189EE8[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_80189EF0[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_80189E98; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_80189EB8; -extern void func_801321B0(int param_1); -extern int D_80189EC8; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern int D_801D2F58; -extern u16 D_801D2F68; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_80189F00; /* holds a pointer value (*(u16**)&D_80189F00) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_80189F14[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_80189F68; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -/* ==== end §8b carried decl layer ==== */ - -/* func_801380E0 (ov_SC01_077_a, 438 ins, jtbl_801D81F0) — Phase 26 crack - * Script-command interpreter: for(;;) fetch cmd byte, dispatch (>=0x20 -> extern - * handler; ==0 -> END; else 25-case jump table), loop while `cont`. - * PIN-FREE. Offset-pure (s32 arg0 + raw offsets) — x134 template-safe. - * - * match_one: MATCH (438 ins). jtbl VERIFIED: 25 entries, byte-identical offsets - * (0x17C 0x184 0x220 0x218 0x20C 0x254 0x13C 0x168 0x404 0x118 0x268 0x3C0 0x3D0 - * 0x424 0x444 0x454 0x47C 0x494 0x4EC 0x544 0x58C 0x1F8 0x5B4 0x5C0 0x5E4); - * bound `sltiu 0x19`; default -> +0x624; case 0 peel `beqz` -> +0x634; .text 0x6D8. - * - * FOUR levers made this land (all in the cookbook's §46/§47 family): - * L-A s32 (NOT pointer) address arithmetic. `pc + base` vs `base + pc` is a real - * byte difference (`addu $v0,$v0,$s3` vs `addu $v0,$s3,$v0`): C's - * pointer_int_sum() canonicalises ptr-first and DESTROYS source operand order, - * so a `u8 *base` can never emit the idx-first form. Plain int + a cast at the - * deref keeps gcc's PLUS operand order == source order. - * L-B `u32 cmd` — the `cmd >= 0x20` guard must be UNSIGNED (`sltiu`, not `slti`). - * L-C THE $s5 HOIST (this is the crack). The target holds &D_8012752E in a - * callee-saved reg across the whole loop and reaches D_8012752C at -2($s5). - * gcc will NOT do this for a plain global (a symbolic address is a legitimate - * MIPS address — GO_IF_LEGITIMATE_ADDRESS/CONSTANT_ADDRESS_P), and a local - * `s16 *snd = &D_8012752E;` written INSIDE case 11 gets constant-folded straight - * back into `sh $x, %lo(D_8012752E)-2($at)` by cse's find_best_addr. - * §46-L2 is the fix: set the pointer at the LOOP TOP, so its def and its uses - * live in DIFFERENT extended basic blocks (the case-11 body is only reachable - * through the `jr` table, so cse starts a fresh hash table there and cannot - * fold). The `la` then survives cse, loop.c's move_movables hoists it into the - * PREHEADER (exactly .L80138138), and global-alloc gives it $s5. - * Case 25 deliberately keeps the PLAIN global (lui/lh) — matching the target. - * L-D PER-CASE temps. Sharing one `q` across cases 18/19/20 makes the pseudo - * multi-block => it leaves local-alloc for global-alloc and both branches of - * case 18/19 land their result in $v0 — which lets the post-reload cross_jump - * tail-merge the `sh $v0,0($s0)` with the default block's store (2 ins short). - * Separate q18/q19/q20 keeps each block-local; the true-branch gets $v1, the - * false-branch $v0, and the tails stay APART (the §46-L5 register-divergence - * rule, here obtained for free by scoping rather than by pinning). - * - * Bonus (no lever needed, just don't fight it): the two out-of-line blocks at the top - * of the function (func_80139914+return, and state=0xD+return) are loop.c - * find_and_verify_loops (loop.c:2382) MOVING a loop-exiting block to the barrier - * before the loop and inverting the branch around it. Writing the natural - * `if (...) { call(); return; }` inside a real `for(;;)` reproduces it exactly. - - */ - - -s32 func_801380E0(s32 arg0) { - extern void func_8001931C(s32); - extern void func_8001AAD0(s32, s32); - extern s32 func_8001B22C(void); - extern void func_80029124(s32, s32); - extern s32 func_800CF864(s32, s32); - extern void func_80138AB4(s32, s32); - extern s32 func_80138C60(s32, s32); - extern void func_80138D58(s32, s32); - extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); - extern void func_801391F0(s32, s32); - extern void func_80139220(s32, s32); - extern void func_80139788(s32); - extern void func_80139914(s32); - extern void func_80139A8C(s32); - extern void func_80139B18(s32); - extern s16 D_8012752C; - extern s32 D_80127530[]; - - u16 *p; - s32 base; - s32 cont; - u32 cmd; - s32 sub; - s32 pc; - s32 t; - s32 f; - s32 f0; - s32 q18; - s32 q19; - s32 q20; - u32 idx; - s16 *snd; - - t = *(u8 *)(arg0 + 0xC); - if (t != 0) { - *(u8 *)(arg0 + 0xC) = t - 1; - goto done; - } - - for (;;) { - cont = 0; - snd = &D_8012752E; - if (*(s32 *)(arg0 + 8) & 0x400) { - base = D_80127530[*(u16 *)(arg0 + 0x4A)]; - p = (u16 *)(arg0 + 0x44); - } else { - p = (u16 *)(arg0 + 0x10); - base = *(s32 *)(arg0 + 0); - } - pc = *p; - cmd = *(u8 *)(pc + base); - sub = *(u8 *)(pc + base + 1); - - if (cmd >= 0x20) { - cont = ((s32 (*)(s32, s32, s32))func_80138DE0)(arg0, cmd, sub); - if (!(*(s32 *)(arg0 + 8) & 0x80220)) { - cont = 0; - } - } else if (cmd != 0) { - switch (cmd) { - case 10: - func_80139220(arg0, cmd); - *p += 1; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) & ~0x80000; - break; - - case 7: - if (*(s32 *)(arg0 + 8) & 0x10000) { - cont = 1; - } else { - *(s16 *)(arg0 + 4) = 3; - } - *p += 1; - break; - - case 8: - func_801391F0(arg0, cmd); - *p += 1; - break; - - case 1: - *(u8 *)(arg0 + 0x23) = sub; - cont = 1; - *p += 2; - break; - - case 2: - *(u8 *)(arg0 + 0x22) = sub; - *(u8 *)(arg0 + 0x20) = *(u8 *)(*p + base + 2); - *p += 3; - if (func_80138C60(arg0, cmd) == 0) { - func_80139914(arg0); - return; - } - *(s16 *)(arg0 + 4) = 9; - if (*(u8 *)(base + *p) == 5) { - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4000; - *p += 1; - } - break; - - case 22: - *(s32 *)(arg0 + 8) = (*(s32 *)(arg0 + 8) & ~0x20) | 0x4001; - cont = 1; - *p += 1; - break; - - case 5: - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4000; - cont = 1; - *p += 1; - break; - - case 4: - *(u8 *)(arg0 + 0xD) = sub; - cont = 1; - *p += 2; - break; - - case 3: - if (*(s32 *)(arg0 + 8) & 0x20000) { - cont = 1; - *p += 2; - } else { - *(s16 *)(arg0 + 4) = 0xB; - *(u8 *)(arg0 + 0xD) = sub; - *(s32 *)(arg0 + 8) = (*(s32 *)(arg0 + 8) | 0x8000) & ~0x20; - } - break; - - case 6: - *(s16 *)(arg0 + 4) = 4; - *p += 1; - break; - - case 11: - if ((*snd != 0) || (*(s32 *)(arg0 + 8) & 0x20) - || (func_800CF864(pc, cmd) == 0)) { - cont = 1; - *p += 4; - } else { - snd[-1] = *(u8 *)(*p + base + 2) + (*(u8 *)(*p + base + 3) << 8); - *p += 4; - *(s32 *)(arg0 + 8) = (*(s32 *)(arg0 + 8) & ~0x60020) | 0x10000; - if (snd[-1] != 0) { - func_8001AAD0(sub & 0x7F, snd[-1]); - if (sub & 0x80) { - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x40000; - } - if ((*(u8 *)(base + *p) == 2) || (*(s32 *)(arg0 + 8) & 0x40000)) { - cont = 1; - } else { - *(s16 *)(arg0 + 4) = 0x10; - } - if (func_8001B22C() == 0) { - f = *(s32 *)(arg0 + 8); - if (f & 1) { - func_8001931C(f); - } else { - *(s32 *)(arg0 + 8) = (f & ~0x10000) | 0x20020; - func_80139788(f); - } - *(s16 *)(arg0 + 4) = 2; - } - } else { - cont = 1; - } - } - break; - - case 12: - *(s16 *)(arg0 + 4) = 6; - *(u8 *)(arg0 + 0x21) = 2; - *p += 1; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4300; - break; - - case 13: - *(s16 *)(arg0 + 4) = 6; - *(u8 *)(arg0 + 0x21) = 3; - *p += 1; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x4300; - break; - - case 9: - func_80138D58(arg0, sub); - cont = 1; - *p += 2; - break; - - case 14: - *(s16 *)(arg0 + 4) = 8; - *(u16 *)(arg0 + 0x44) = 0; - func_80138AB4(arg0, cmd); - *p += 1; - break; - - case 15: - *(u16 *)(arg0 + 0x44) = 0; - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x400; - cont = 1; - *p += 1; - break; - - case 16: - func_80029124(sub | (*(u8 *)(*p + base + 2) << 8), 1); - cont = 1; - *p += 3; - break; - - case 17: - func_80029124(sub | (*(u8 *)(*p + base + 2) << 8), 0); - cont = 1; - *p += 3; - break; - - case 18: - if (((u8(*)(s32, s32))func_80029178)(sub | (*(u8 *)(*p + base + 2) << 8), cmd)) { - q18 = *p; - *p = *(u8 *)(q18 + base + 3) + (q18 + 4); - } else { - *p = *p + 4; - } - cont = 1; - break; - - case 19: - if (!((u8(*)(s32, s32))func_80029178)(sub | (*(u8 *)(*p + base + 2) << 8), cmd)) { - q19 = *p; - *p = *(u8 *)(q19 + base + 3) + (q19 + 4); - } else { - *p = *p + 4; - } - cont = 1; - break; - - case 20: - if (!(*(s32 *)(arg0 + 8) & 0x20000)) { - q20 = *p + base; - *(u16 *)(arg0 + 0xE) = *(u8 *)(q20 + 1) + (*(u8 *)(q20 + 2) << 8); - } - cont = 1; - *p += 3; - break; - - case 21: - if (*(u16 *)(arg0 + 0xE) != 0) { - *(s16 *)(arg0 + 4) = 0xF; - } else { - cont = 1; - } - *p += 1; - break; - - case 23: - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 2; - cont = 1; - *p += 1; - break; - - case 24: - *(s32 *)(arg0 + 8) = *(s32 *)(arg0 + 8) | 0x80000; - cont = 1; - *p += 1; - break; - - case 25: - *p += 1; - if ((*(s32 *)(arg0 + 8) & 0x10000) && (D_8012752C != 0)) { - *(s16 *)(arg0 + 4) = 0x10; - } else { - cont = 1; - } - break; - - default: - *p = pc + 1; - cont = 1; - break; - } - } else { - f0 = *(s32 *)(arg0 + 8); - if (f0 & 0x400) { - idx = *(u16 *)(arg0 + 0x4A); - *(s32 *)(arg0 + 8) = f0 & ~0x400; - if (idx < 3) { - *(u16 *)(arg0 + 0x4A) = idx + 1; - } - } else if (f0 & 0x2000) { - *(s16 *)(arg0 + 4) = 0xD; - return; - } else { - *(s16 *)(arg0 + 4) = 0xA; - return; - } - } - - if (cont == 0) { - break; - } - } - - if (*(u8 *)(arg0 + 0xC) == 0) { - *(u8 *)(arg0 + 0xC) = *(u8 *)(arg0 + 0xD); - } -done: - func_80139A8C(arg0); - func_80139B18(arg0); -} - - -DEFINE_func_801387B8() /* dedup: shared engine-core @0x801387B8 (src/shared) */ - -DEFINE_func_80138948() /* dedup: shared engine-core @0x80138948 (src/shared) */ - -DEFINE_func_8013895C() /* dedup: shared engine-core @0x8013895C (src/shared) */ - -DEFINE_func_80138AB4() /* dedup: shared engine-core @0x80138AB4 (src/shared) */ - -DEFINE_func_80138B88() /* dedup: shared engine-core @0x80138B88 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (match_one: MATCH 20 ins) - -extern void (*D_80189F6C[])(void); - -void func_80138BE0(int p) -{ - if (*(unsigned short *)(p + 0xe) != 0) { - *(unsigned short *)(p + 0xe) -= 1; - } - D_80189F6C[*(short *)(p + 4)](); -} - - -void func_80138C30(void *a0) { - if (*(s16 *)((s32)a0 + 4) == 4) { - *(s16 *)((s32)a0 + 4) = 2; - } else { - *(u32 *)((s32)a0 + 8) |= 0x800; - } -} - - -extern s32 func_80139BE0(s32); - -s32 func_80138C60(s32 arg0) -{ - extern Q_80138C60 D_80189F38[]; - u16 t; - u8 b; - s32 f; - s32 idx; - - if (*(s32 *)(arg0 + 8) & 0x2000) { - return 1; - } - - t = *(u8 *)(arg0 + 0x22) & 7; - *(s16 *)(arg0 + 0x18) = t; - if (t < 2) { - *(u8 *)(arg0 + 0x20) = 0; - } - - f = *(s32 *)(arg0 + 8); - if (f & 0x40) { - *(u8 *)(arg0 + 0x22) = (*(u8 *)(arg0 + 0x22) & 0x67) | (f & ~0x67); - } - - b = *(u8 *)(arg0 + 0x22); - if (b & 0x80) { - idx = (b & 0x18) >> 3; - } else { - idx = (b & 0x78) >> 3; - if (b & 0x60) { - *(s16 *)(arg0 + 0x1C) = 0; - } - } - - *(Q_80138C60 *)(arg0 + 0x24) = D_80189F38[idx]; - - func_80139BE0(arg0); - func_80139C7C((u8 *)arg0); - return func_8013A8FC(arg0); -} - - -DEFINE_func_80138D58() /* dedup: shared engine-core @0x80138D58 (src/shared) */ - -DEFINE_func_80138DB8() /* dedup: shared engine-core @0x80138DB8 (src/shared) */ - - -DEFINE_func_80138DE0() /* dedup: shared engine-core @0x80138DE0 (src/shared) */ - - -DEFINE_func_80138ED0() /* dedup: shared engine-core @0x80138ED0 (src/shared) */ - -DEFINE_func_8013914C() /* dedup: shared engine-core @0x8013914C (src/shared) */ - -DEFINE_func_801391F0() /* dedup: shared engine-core @0x801391F0 (src/shared) */ - -DEFINE_func_80139220() /* dedup: shared engine-core @0x80139220 (src/shared) */ - -DEFINE_func_801392C8() /* dedup: shared engine-core @0x801392C8 (src/shared) */ - -DEFINE_func_801392FC() /* dedup: shared engine-core @0x801392FC (src/shared) */ - -DEFINE_func_801395D4() /* dedup: shared engine-core @0x801395D4 (src/shared) */ - -DEFINE_func_80139634() /* dedup: shared engine-core @0x80139634 (src/shared) */ - -DEFINE_func_80139680() /* dedup: shared engine-core @0x80139680 (src/shared) */ - -DEFINE_func_80139788() /* dedup: shared engine-core @0x80139788 (src/shared) */ - - -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern u8 D_80189FB0; -extern u8 D_80189FF4; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); - -void func_801397B0(s32 arg0) -{ - register u8 *e __asm__("$7"); - register s32 off __asm__("$4"); - s32 buf[12]; - u8 *b164; - u8 *b1A8; - s32 sc; - s32 t2; - s32 t0; - s32 hi; - s32 lo; - s32 uu; - s32 vv; - - e = (u8 *)arg0; - b164 = (u8 *)&D_80189FB0; - off = ((s32)*(u8 *)(e + 0x20) - 1) << 2; - b164 = off + b164; - - *(s32 *)((u8 *)buf + 0x00) = 0; - - t2 = *(s16 *)(b164 + 2); - t0 = *(s16 *)(b164 + 0); - hi = (t2 & 0x100) >> 4; - lo = ((t0 & 0x3C0) >> 6) | 0x20; - *(s16 *)((u8 *)buf + 0x0C) = hi | lo | ((t2 & 0x200) << 2); - - b1A8 = (u8 *)&D_80189FF4 + off; - *(s16 *)((u8 *)buf + 0x10) = *(u16 *)(b1A8 + 0); - *(s16 *)((u8 *)buf + 0x12) = *(u16 *)(b1A8 + 2); - *(u8 *)((u8 *)buf + 0x16) = 0x80; - *(u8 *)((u8 *)buf + 0x15) = 0x80; - *(u8 *)((u8 *)buf + 0x14) = 0x80; - *(s16 *)((u8 *)buf + 0x06) = *(u16 *)(e + 0x32); - *(s16 *)((u8 *)buf + 0x08) = 0x20; - *(s16 *)((u8 *)buf + 0x0A) = 0x28; - - uu = (*(u16 *)(b164 + 0) & 0x3F) << 2; - *(u8 *)((u8 *)buf + 0x0E) = uu; - vv = *(u16 *)(b164 + 2); - *(u8 *)((u8 *)buf + 0x0F) = vv; - - if (*(u8 *)(e + 0x22) & 8) { - *(s16 *)((u8 *)buf + 0x04) = - *(u16 *)(e + 0x30) + *(u16 *)(e + 0x34) + 0x28; - sc = -*(u16 *)(e + 0x28); - } else { - *(s16 *)((u8 *)buf + 0x04) = *(u16 *)(e + 0x30) - 0x28; - sc = *(u16 *)(e + 0x28); - } - *(s16 *)((u8 *)buf + 0x1C) = sc; - *(s16 *)((u8 *)buf + 0x1E) = *(u16 *)(e + 0x2A); - *(s16 *)((u8 *)buf + 0x1A) = 0; - *(s16 *)((u8 *)buf + 0x18) = 0; - *(s32 *)((u8 *)buf + 0x20) = 0; - - GsSortSprite(buf, &D_800A6518[(u16)D_800B9A02 * 20], - *(u16 *)(e + 0x1A)); -} - - -DEFINE_func_80139914() /* dedup: shared engine-core @0x80139914 (src/shared) */ - -DEFINE_func_80139954() /* dedup: shared engine-core @0x80139954 (src/shared) */ - -DEFINE_func_801399A8() /* dedup: shared engine-core @0x801399A8 (src/shared) */ - -DEFINE_func_801399F0() /* dedup: shared engine-core @0x801399F0 (src/shared) */ - -DEFINE_func_80139A34() /* dedup: shared engine-core @0x80139A34 (src/shared) */ - -DEFINE_func_80139A44() /* dedup: shared engine-core @0x80139A44 (src/shared) */ - -DEFINE_func_80139A68() /* dedup: shared engine-core @0x80139A68 (src/shared) */ - -DEFINE_func_80139A8C() /* dedup: shared engine-core @0x80139A8C (src/shared) */ - -DEFINE_func_80139B18() /* dedup: shared engine-core @0x80139B18 (src/shared) */ - - -/* func_80139BE0 — ov_SC01_077 / ov_SC01_077_jr_801380E0, 39 ins, MATCH. - * - * REDRAFT of the decayed backlog draft: the stored draft was -1 instruction - * (LENGTH-DRIFT) because the target keeps a QI->SI zero-extend of the masked - * byte (`andi $a1,$v0,0xFF` after `andi $v0,$v0,0x60`) that gcc-2.7.2 folds - * away: combine proves nonzero_bits(x & 0x60) <= 0xff and simplifies the - * extend to nothing. No pure-C spelling survives that fold when the def and - * the extend sit in the SAME basic block (verified: u8 local, (u8) cast at - * the use, `& 0xff` at the use, u8-via-int, u16 hold, hard-register pins) — - * a cross-BB def keeps it but lands the andi in the wrong block. - * The opacity idiom (already used in src/ov_SC03_099) makes the value's range - * unprovable in place, so the extend survives at its original position. - * cookbook §1/I2 ("masked andi survives only if the value's range is - * unprovable"), §17 (pins/barriers). - */ - -s32 func_80139BE0(int param_1) -{ - - extern unsigned char D_80189F34[]; - int v; - - if ((*(unsigned int *)(param_1 + 8) & 0x2000) == 0) { - int t = *(unsigned char *)(param_1 + 0x22) & 0x60; - int h = *(unsigned short *)(param_1 + 0x18); - unsigned int idx; - - __asm__("" : "=r"(t) : "0"(t)); - idx = (unsigned char)t; - if (h < 7) { - if (h >= 2) { - v = D_80189F34[idx >> 5]; - } else { - v = D_80189F34[0]; - } - } else { - v = D_80189F34[0]; - } - *(short *)(param_1 + 0x2e) = 3; - *(short *)(param_1 + 0x2c) = v; - } - *(short *)(param_1 + 0x34) = *(short *)(param_1 + 0x2c) * 6; - { - int x = *(short *)(param_1 + 0x2e); - *(short *)(param_1 + 0x36) = x * 12 + (x - 1) * 2; - } -} - - -DEFINE_func_80139C7C() /* dedup: shared engine-core @0x80139C7C (src/shared) */ - -DEFINE_func_80139D04() /* dedup: shared engine-core @0x80139D04 (src/shared) */ - -DEFINE_func_80139DC8() /* dedup: shared engine-core @0x80139DC8 (src/shared) */ - -DEFINE_func_80139DEC() /* dedup: shared engine-core @0x80139DEC (src/shared) */ - -DEFINE_func_80139DF4() /* dedup: shared engine-core @0x80139DF4 (src/shared) */ - -DEFINE_func_80139E84() /* dedup: shared engine-core @0x80139E84 (src/shared) */ - -DEFINE_func_80139F0C() /* dedup: shared engine-core @0x80139F0C (src/shared) */ - -DEFINE_func_80139FBC() /* dedup: shared engine-core @0x80139FBC (src/shared) */ - -DEFINE_func_80139FE8() /* dedup: shared engine-core @0x80139FE8 (src/shared) */ - -DEFINE_func_8013A0A4() /* dedup: shared engine-core @0x8013A0A4 (src/shared) */ - -DEFINE_func_8013A164() /* dedup: shared engine-core @0x8013A164 (src/shared) */ - -DEFINE_func_8013A1E8() /* dedup: shared engine-core @0x8013A1E8 (src/shared) */ - -DEFINE_func_8013A250() /* dedup: shared engine-core @0x8013A250 (src/shared) */ - -DEFINE_func_8013A2BC() /* dedup: shared engine-core @0x8013A2BC (src/shared) */ - -DEFINE_func_8013A378() /* dedup: shared engine-core @0x8013A378 (src/shared) */ - -DEFINE_func_8013A380() /* dedup: shared engine-core @0x8013A380 (src/shared) */ - -DEFINE_func_8013A448() /* dedup: shared engine-core @0x8013A448 (src/shared) */ - -DEFINE_func_8013A4C4() /* dedup: shared engine-core @0x8013A4C4 (src/shared) */ - -DEFINE_func_8013A530() /* dedup: shared engine-core @0x8013A530 (src/shared) */ - -DEFINE_func_8013A860() /* dedup: shared engine-core @0x8013A860 (src/shared) */ - -DEFINE_func_8013A8B0() /* dedup: shared engine-core @0x8013A8B0 (src/shared) */ - -DEFINE_func_8013A8BC() /* dedup: shared engine-core @0x8013A8BC (src/shared) */ - -DEFINE_func_8013A8FC() /* dedup: shared engine-core @0x8013A8FC (src/shared) */ - -DEFINE_func_8013A9B4() /* dedup: shared engine-core @0x8013A9B4 (src/shared) */ - -DEFINE_func_8013A9F8() /* dedup: shared engine-core @0x8013A9F8 (src/shared) */ - -DEFINE_func_8013AA24() /* dedup: shared engine-core @0x8013AA24 (src/shared) */ - -DEFINE_func_8013AB54() /* dedup: shared engine-core @0x8013AB54 (src/shared) */ - -// @class: schedule -// @stuck: none — MATCH (122 ins). GTE lerp+mvmva loop. Two levers: (1) flat `extern s16` -// source arrays indexed [2*i]/[2*i+1] force 4 separate walking IVs (t2/t3/t4/t5) instead of -// one shared offset-IV + symbol(reg) addressing; (2) INVERTED-arm if/else -// `if (flag<0) out3=-tbl; else out3=tbl;` gives the target's bgez polarity + reload-per-arm -// sign-flip block (a plain ?: hoists the common lbu; the inverted if/else does not, and gcc -// still merges the sb). out2[i]=out2[0] tail-copy of the align-2 Pair_8013AD38 emits lwl/lwr/swl/swr. -#include "common.h" - - -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018A038[]; /* sign table, alt (when a1 < 0xC00) */ - -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") - -#define gte_mvmva0() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") - -#define gte_stlvnl(r0) __asm__ __volatile__( \ - "swc2 $25, 0(%0)\n" \ - "swc2 $26, 4(%0)\n" \ - "swc2 $27, 8(%0)\n" \ - : : "r"(r0) : "memory") - -void func_8013AD38(void *flag, s32 a1, void *out2, void *out3) -{ - extern s16 D_800D466C[]; - extern u8 D_8018A074[]; - - u8 *tbl; - s16 vec[4]; - s32 res[3]; - s32 i; - - tbl = D_8018A074; - if (((s16)a1) < 0xC00) { - tbl = D_8018A038; - } - - for (i = 0; i < 30; i++) { - vec[0] = D_800D45F4[2 * i] + (((D_800D466C[2 * i] - D_800D45F4[2 * i]) * ((s16)a1)) >> 12); - vec[1] = D_800D45F4[2 * i + 1] + (((D_800D466C[2 * i + 1] - D_800D45F4[2 * i + 1]) * ((s16)a1)) >> 12); - gte_ldv0(vec); - gte_mvmva0(); - gte_stlvnl(res); - ((Pair_8013AD38 *)out2)[i].x = res[0]; - ((Pair_8013AD38 *)out2)[i].y = res[1]; - if (((s16 *)flag)[0] < 0) ((s8 *)out3)[2 * i] = -tbl[2 * i]; else ((s8 *)out3)[2 * i] = tbl[2 * i]; - if (((s16 *)flag)[1] < 0) ((s8 *)out3)[2 * i + 1] = -tbl[2 * i + 1]; else ((s8 *)out3)[2 * i + 1] = tbl[2 * i + 1]; - } - ((Pair_8013AD38 *)out2)[i] = ((Pair_8013AD38 *)out2)[0]; - if (((s16 *)flag)[0] < 0) ((s8 *)out3)[2 * i] = -tbl[0]; else ((s8 *)out3)[2 * i] = tbl[0]; - if (((s16 *)flag)[1] < 0) ((s8 *)out3)[2 * i + 1] = -tbl[1]; else ((s8 *)out3)[2 * i + 1] = tbl[1]; -} - - - -DEFINE_func_8013AF20() /* dedup: shared engine-core @0x8013AF20 (src/shared) */ - -DEFINE_func_8013B204() /* dedup: shared engine-core @0x8013B204 (src/shared) */ - - - -extern void *func_80010A08(s32); -extern s16 D_8018A0B0, D_8018A0B2, D_8018A0B4, D_8018A0B6, D_8018A0B8, D_8018A0BA; -extern u16 D_800D45F6; - -void func_8013B274(s32 a0, s32 a1, void *a2) -{ - u8 *p; - s32 L[10]; - s16 sa; - s32 quot; - s16 ang; - - p = (u8 *)func_80010A08(0x28); - p[3] = 9; - p[7] = 0x2C; - p[4] = 0x80; - p[5] = 0x80; - p[6] = 0x80; - *(s16 *)(p + 0x16) = 0x37; - *(s16 *)(p + 0xE) = 0x6FD6; - p[0xC] = 0xE0; - p[0xD] = 0; - p[0x14] = 0xEF; - p[0x15] = 0; - p[0x1C] = 0xE0; - p[0x1D] = 0xF; - p[0x24] = 0xEF; - p[0x25] = 0xF; - - sa = (s16)a1; - if (sa == 0) { - *(s16 *)L = 0; - } else { - quot = ((s32)sa << 12) / ((s16*)a2)[0]; - ang = (s16)quot; - if (!(D_8018A0B2 < ang)) goto outer_else; - if (!(ang < D_8018A0B8)) goto inner_else; - if (ang < D_8018A0B4) { *(s16 *)L = D_8018A0B4; goto done; } - if (D_8018A0B6 < ang) { *(s16 *)L = D_8018A0B6; goto done; } - *(s16 *)L = quot; - goto done; - outer_else: - if (ang < D_8018A0B0) { *(s16 *)L = D_8018A0B0; goto done; } - *(s16 *)L = quot; - goto done; - inner_else: - if (D_8018A0BA < ang) { *(s16 *)L = D_8018A0BA; goto done; } - *(s16 *)L = quot; - done: ; - } - *(s16 *)((u8 *)L + 2) = D_800D45F6; - - __asm__ __volatile__( - "lwc2 $0, 0(%0)\n" - "lwc2 $1, 4(%0)\n" - "nop\n" "nop\n" - "mvmva 1, 0, 0, 0, 0\n" - : : "r"(L) : "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"((u8 *)L + 8) : "memory"); - - if (((s16*)a2)[1] > 0) - *(s32 *)((u8 *)L + 0xC) -= 1; - else - *(s32 *)((u8 *)L + 0xC) += 2; - - *(s16 *)L = 9; - *(s16 *)((u8 *)L + 2) = 9; - __asm__ __volatile__( - "lwc2 $0, 0(%0)\n" - "lwc2 $1, 4(%0)\n" - "nop\n" "nop\n" - "mvmva 1, 0, 0, 3, 0\n" - : : "r"(L) : "memory"); - __asm__ __volatile__( - "swc2 $25, 0(%0)\n" - "swc2 $26, 4(%0)\n" - "swc2 $27, 8(%0)\n" - : : "r"((u8 *)L + 0x18) : "memory"); - - *(s16 *)(p + 8) = *(volatile s32 *)((u8 *)L + 8); - *(s16 *)(p + 0xA) = *(volatile s32 *)((u8 *)L + 0xC); - *(s16 *)(p + 0x10) = *(volatile s32 *)((u8 *)L + 8) + *(volatile s32 *)((u8 *)L + 0x18); - *(s16 *)(p + 0x12) = *(volatile s32 *)((u8 *)L + 0xC); - *(s16 *)(p + 0x18) = *(volatile s32 *)((u8 *)L + 8); - *(s16 *)(p + 0x1A) = *(volatile s32 *)((u8 *)L + 0xC) + *(volatile s32 *)((u8 *)L + 0x1C); - *(s16 *)(p + 0x20) = *(volatile s32 *)((u8 *)L + 8) + *(volatile s32 *)((u8 *)L + 0x18); - *(s16 *)(p + 0x22) = *(volatile s32 *)((u8 *)L + 0xC) + *(volatile s32 *)((u8 *)L + 0x1C); - - ((P_TAG *)p)->addr = ((P_TAG *)a0)->addr; - ((P_TAG *)a0)->addr = (u32)p; -} diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8013C98C.c b/src/ov_SC03_119/ov_SC03_119_jr_8013C98C.c deleted file mode 100644 index d0e81723b..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8013C98C.c +++ /dev/null @@ -1,2234 +0,0 @@ -#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. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_80189CE4[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_80189CF8[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_80189E38[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_80189E90[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_80189ED8[])(void); -extern void func_80131F28(void *a0); -extern void (*D_80189EE0[])(void); -extern void func_80131F64(void *a0); -extern void (*D_80189EE8[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_80189EF0[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_80189E98; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_80189EB8; -extern void func_801321B0(int param_1); -extern int D_80189EC8; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern int D_801D2F58; -extern u16 D_801D2F68; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_80189F00; /* holds a pointer value (*(u16**)&D_80189F00) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_80189F14[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_80189F68; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_80189F6C[])(void); -extern void func_80138C30(void *a0); -extern s32 func_80139BE0(s32); -extern s32 func_80138C60(s32 arg0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 D_80127548[]; -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_801395D4(void * a0); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_80189FB0; -extern u8 D_80189FF4; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018A038[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018A0B0, D_8018A0B2, D_8018A0B4, D_8018A0B6, D_8018A0B8, D_8018A0BA; -extern u16 D_800D45F6; -/* ==== end §8b carried decl layer ==== */ - - -/* ==== 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(s32 a0); /* 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 ==================================================== */ - -extern void func_80016714(void *a0, s32 a1); -extern s32 D_801D2FD0; -extern s32 D_801269D4; -extern s32 D_801269C8; - -void func_8013C98C(void) { - func_80016714(&D_801D2FD0, 8); - D_801269D4 = 0; - D_801269C8 = 0; -} - - -extern M2C_UNK D_80062BC0; -extern s32 D_801D2FD0; -extern s8 D_801D2FD4; -extern s8 D_801D2FD5; - -void func_8013C9C4(void * arg0) -{ - D_801D2FD0 = arg0; - D_801D2FD4 = 0; - D_801D2FD5 = 0; - if (func_80019198() == 0) { - func_80019064(&D_80062BC0); - } -} - - - - -extern s32 D_801D2FD0; -extern s8 D_801D2FD4; -extern s8 D_801D2FD5; -extern s32 D_801269C8; -extern s32 D_801269D4; -void func_8013CA14(void) -{ - int *base = &D_801D2FD0; - signed char *p; - unsigned char c; - int t; - if ((*base) != 0) - { - c = D_801D2FD5; - if (c == 0) - { - p = (signed char *) ((((unsigned int) ((unsigned char) D_801D2FD4)) * 2) + D_801D2FD0); - t = (int) (*p); - D_801269D4 = t; - D_801269C8 = t; - D_801D2FD5 = (unsigned char) p[1]; - D_801D2FD4 = D_801D2FD4 + 1; - if (D_801D2FD5 == 0) - { - D_801269D4 = 0; - D_801269C8 = 0; - D_801D2FD4 = 0; - *base = 0; - } - } - else - { - D_801D2FD5 = c - 1; - } - } - return; -} - - - -extern s32 D_801D2FF4; -extern s32 D_801D2FE8; -extern s32 D_801D2FEC; -extern s32 D_801D2FF8; - -void func_8013CABC(void) { - D_801D2FF4 = 1; - D_801D2FE8 = 1; - D_801D2FEC = 0; - D_801D2FF8 = 1; -} - - - -extern s32 D_801D2FE8; -extern s32 D_801D2FEC; -extern s32 D_801D2FF0; -extern s32 D_801D2FF4; -extern s32 D_801D2FF8; - -void func_8013CAE8(void) { - D_801D2FE8 = 1; - D_801D2FF4 = 0; - D_801D2FEC = 0; - D_801D2FF0 = -1; - D_801D2FF8 = 0; -} - - - -extern s32 D_801D2FF4; -extern s32 D_801D2FF8; -extern s32 D_801D3020; -extern s32 D_801D3024; - -void func_8013CB20(void) -{ - D_801D3020 = D_801D2FF8; - D_801D3024 = D_801D2FF4; - D_801D2FF8 = 1; - D_801D2FF4 = 0; -} - - - -extern s32 D_801D3020; -extern s32 D_801D3024; -extern s32 D_801D2FF8; -extern s32 D_801D2FF4; - -void func_8013CB5C(void) { - D_801D2FF8 = D_801D3020; - D_801D2FF4 = D_801D3024; -} - - - - -extern s16 currentLocationId; -extern s32 D_801D2FF8; -extern s32 D_801D2FF0; -extern s32 D_801D2FF4; -extern s32 D_801D2FE8; -extern s32 D_801D2FEC; - -extern void func_8013DBE4(); -extern void func_8013D9B0(); -extern void func_8013D330(void); -extern void func_8013D178(void); -extern void func_8013CF68(void); - -void func_8013CB84(void) { - - extern u8 D_80078EAF; - extern s32 D_801D2FFC; - extern s32 D_801D3008; - extern s32 D_801D3010; - extern s32 D_801D47C0; - extern s32 D_801D4740; - extern s32 D_801D4734[]; - extern u8 D_801D4701; - extern u8 D_801D484E; - extern u8 D_801D47BC; - extern Rec12 D_8018A2D0[]; - extern Rec9 D_8018A298[]; - extern u8 D_801D4798; /* canonical (§8d); Rec9 block-move via cast-at-use */ - s32 loc = currentLocationId; - s32 s0 = D_80078EAF; - s32 ta, tb, tc, t; - - D_801D47C0 = 0; - if (D_801D2FF8 == 0 && s0 != D_801D2FF0) { - ta = D_8018A2D0[s0].a; - tb = D_8018A2D0[s0].b; - tc = D_8018A2D0[s0].c; - D_801D2FF0 = s0; - D_801D4701 = tc; - D_801D484E = ta; - D_801D47BC = tb; - *(Rec9 *)&D_801D4798 = D_8018A298[s0]; - D_801D2FF4 = 1; - D_801D2FE8 = 1; - if (D_801D3008 & 2) { - if (s0 == 4) { D_801D4734[0] = 0x100; D_801D4740 = 0x80; } - if (s0 == 0) { D_801D4734[0] = 0x100; D_801D4740 = 0; } - } - } - if (D_801D2FF4 != 0) { - t = D_801D2FE8 - 1; - D_801D2FE8 = t; - if (t == 0) { - if (D_801D2FF8 == 0) { - if ((D_801D3008 & 2) && s0 == 4) { - if (D_801D3010 != 0) func_8013DBE4(6); - else func_8013D9B0(6); - } else { - if (D_801D3010 != 0) func_8013DBE4(s0); - else func_8013D9B0(s0); - } - func_8013D330(); - func_8013D178(); - func_8013CF68(); - D_801D2FE8 = 2; - if (D_801D2FF4 != 0) { - if (D_801D3008 & 2) { - if (s0 == 4) { - s32 *p = &D_801D4740; - t = *p - 8; - *p = t; - if (t < 0) *p = 0; - } else if (s0 == 0) { - s32 *p = &D_801D4740; - t = *p + 0x20; - *p = t; - if (t >= 0x81) *p = 0x80; - } - } - } else if (D_801D3008 & 2) { - if (s0 == 4) D_801D4740 = 0; - if (s0 == 0) D_801D4740 = 0x80; - } - } else { - if (D_801D3010 != 0) func_8013DBE4(5); - else func_8013D9B0(5); - D_801D2FE8 = 1; - } - } - } - D_801D2FFC = 0; - if (loc == 0x1010) { - if (s0 == 3) { - if (D_801D2FF4 != 0) D_801D2FFC = D_801D2FEC; - else D_801D2FFC = 0x1F; - } else if (s0 == 4) { - if (D_801D2FF4 != 0) D_801D2FFC = 0x1F - D_801D2FEC; - else D_801D2FFC = 0; - } - } -} - - -// @class: struct -// @stuck: none — MATCH (63 ins) -// -// Sets up 3 consecutive 16-byte records (at D_800A5E88[0..2]: {s32 a,b,c; u8 d,e,f,g}) -// and registers each via func_80028620(i, &rec[i]). -// -// Keys to the byte match: -// (1) The base pointer is anchored at D_800A5E94 (= &rec0.d, i.e. rec0+0xC) and materialized -// via a NON-volatile inline-asm `la` so gcc treats it as OPAQUE (not a const symbol). -// Opacity is what makes the base-relative stores FOLD into `off($s0)` instead of -// const-folding to a direct `lui $at; sw %lo(sym)`. A `__asm__ __volatile__` re-tie -// barrier (cookbook §21) also launders base, but the barrier pins the schedule and -// pushes the first call's `a0=0` down; the non-volatile `la` avoids the barrier so the -// scheduler still hoists `addu $a0,$zero,$zero` to the top (matches target idx1). -// (2) rec0's inner fields (E8C/E90 ints, E95/E96 bytes) are written as DIRECT globals, not -// base-relative — in the entry block gcc emits them as `lui $at; sw/sb %lo(sym)`. Only -// the address-taken E88 (= call arg base-0xC) and the offset-0 E94 fold via $s0. rec1/rec2 -// fold entirely (base opaque, all offsets small). -// (3) The three source bytes per record are loaded into temps t0/t1/t2 BEFORE the stores so -// gcc keeps them live in three registers ($v1/$a2/$a3) as a group (not one-at-a-time in $v0). -// (4) Statement order matches the target scheduler: rec1 stores b(=7) before the loads; -// rec2 stores b(=-0x12) AFTER the loads (the differing constants drive the scheduler). -#include "common.h" - - -void func_8013CF68() -{ - extern void func_80028620(); - extern u8 D_800A5E94[]; - extern s32 D_800A5E8C; - extern s32 D_800A5E90; - extern u8 D_800A5E95; - extern u8 D_800A5E96; - extern u8 D_801D46F8; - extern u8 D_801D46F9; - extern u8 D_801D46FA; - extern u8 D_801D46FB; - extern u8 D_801D46FC; - extern u8 D_801D46FD; - extern u8 D_801D46FE; - extern u8 D_801D46FF; - extern u8 D_801D4700; - - u8 t0, t1, t2; - u8 *base; - __asm__("la %0, D_800A5E94" : "=r"(base)); - - *(s32 *)(base - 0xC) = 0; - t0 = D_801D46F8; t1 = D_801D46F9; t2 = D_801D46FA; - D_800A5E8C = 0x1E; - D_800A5E90 = 0; - base[0] = t0; D_800A5E95 = t1; D_800A5E96 = t2; - func_80028620(0, base - 0xC); - - *(s32 *)(base + 4) = 0; *(s32 *)(base + 8) = 7; - t0 = D_801D46FB; t1 = D_801D46FC; t2 = D_801D46FD; - *(s32 *)(base + 0xC) = 0x14; - base[0x10] = t0; base[0x11] = t1; base[0x12] = t2; - func_80028620(1, base + 4); - - *(s32 *)(base + 0x14) = 0; - t0 = D_801D46FE; t1 = D_801D46FF; t2 = D_801D4700; - *(s32 *)(base + 0x18) = -0x12; - *(s32 *)(base + 0x1C) = 0; - base[0x20] = t0; base[0x21] = t1; base[0x22] = t2; - func_80028620(2, base + 0x14); -} - - - - -// @class: schedule -// @stuck: testing if/else-if with ==2 placed as the else (tail) block - -extern s32 D_801D3000; -extern s32 D_801D2FE8; -extern s32 D_801D3004; -extern s32 D_801D2FF4; -extern void func_8013D9B0(); - -void func_8013D064(void) -{ - if (D_801D3000 != 0) { - if (D_801D3000 != 2) { - if (((D_801D3000 < 3) && (D_801D3000 == 1)) && - (D_801D3004 = D_801D3004 + 1, 0x23a < D_801D3004)) { - D_801D2FE8 = D_801D3000; - D_801D3000 = 2; - } - } else { - D_801D2FE8 = D_801D2FE8 + -1; - if (D_801D2FE8 == 0) { - D_801D2FE8 = D_801D3000; - ((void (*)(s32))func_8013D9B0)(2); - if (D_801D2FF4 == 0) { - D_801D3000 = D_801D3000 + 1; - } - } - } - } - return; -} - - - - -extern void func_8013D9B0(); -extern s32 D_801D2FF4; - -s32 func_8013D13C(void) { - func_8013D9B0(); - return D_801D2FF4; -} - - - -extern s32 D_801D3000; - -void func_8013D164(void) { - D_801D3000 = 1; -} - - - -void func_8013D178(void) { - - extern u8 D_801D46F8; - extern u8 D_801D46F9; - extern u8 D_801D46FA; - extern u8 D_801D46FB; - extern u8 D_801D46FC; - extern u8 D_801D46FD; - extern u8 D_801D46FE; - extern u8 D_801D46FF; - extern u8 D_801D4700; - extern unsigned char D_801D4798, D_801D4799, D_801D479A, D_801D479B, D_801D479C, D_801D479D, D_801D479E, D_801D479F, D_801D47A0; - extern unsigned char D_801D4798, D_801D4799, D_801D479A, D_801D479B, D_801D479C, D_801D479D, D_801D479E, D_801D479F, D_801D47A0; - extern unsigned char D_801D4798, D_801D4799, D_801D479A, D_801D479B, D_801D479C, D_801D479D, D_801D479E, D_801D479F, D_801D47A0; - extern unsigned char D_801D4798, D_801D4799, D_801D479A, D_801D479B, D_801D479C, D_801D479D, D_801D479E, D_801D479F, D_801D47A0; - extern unsigned char D_801D4798, D_801D4799, D_801D479A, D_801D479B, D_801D479C, D_801D479D, D_801D479E, D_801D479F, D_801D47A0; - extern unsigned char D_801D4798, D_801D4799, D_801D479A, D_801D479B, D_801D479C, D_801D479D, D_801D479E, D_801D479F, D_801D47A0; - extern unsigned char D_801D4798, D_801D4799, D_801D479A, D_801D479B, D_801D479C, D_801D479D, D_801D479E, D_801D479F, D_801D47A0; - extern unsigned char D_801D4798, D_801D4799, D_801D479A, D_801D479B, D_801D479C, D_801D479D, D_801D479E, D_801D479F, D_801D47A0; - extern unsigned char D_801D4798, D_801D4799, D_801D479A, D_801D479B, D_801D479C, D_801D479D, D_801D479E, D_801D479F, D_801D47A0; - unsigned char v, t; - register unsigned char *p __asm__("$5"); - - p = &D_801D46F8; v = *p; t = D_801D4798; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801D46F9; v = *p; t = D_801D4799; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801D46FA; v = *p; t = D_801D479A; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801D46FB; v = *p; t = D_801D479B; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801D46FC; v = *p; t = D_801D479C; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801D46FD; v = *p; t = D_801D479D; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801D46FE; v = *p; t = D_801D479E; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801D46FF; v = *p; t = D_801D479F; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } - p = &D_801D4700; v = *p; t = D_801D47A0; - if (v != t) { if (v < t) *p = v + 8; else *p = v - 8; } -} - - - -// @class: other -// @stuck: none — MATCH (three step-toward-target byte clamps + word store) - -extern u8 D_801D47DA; -extern u8 D_801D484E; -extern u8 D_801D4702; -extern u8 D_801D47BC; -extern u8 D_801D46E0; -extern u8 D_801D4701; -extern s32 D_801D47C0; - -void func_8013D330(void) { - if ((D_801D47DA & 0xff) != D_801D484E) { - D_801D47DA = ((D_801D47DA & 0xff) < D_801D484E) ? (D_801D47DA + 1) : (D_801D47DA - 1); - } - if ((D_801D4702 & 0xff) != D_801D47BC) { - D_801D4702 = ((D_801D4702 & 0xff) < D_801D47BC) ? (D_801D4702 + 1) : (D_801D4702 - 1); - } - if ((D_801D46E0 & 0xff) != D_801D4701) { - D_801D46E0 = ((D_801D46E0 & 0xff) < D_801D4701) ? (D_801D46E0 + 1) : (D_801D46E0 - 1); - } - D_801D47C0 = 1; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (match_one 90/90); base &D_80078E78 cached in a pointer local so gcc pins it into callee-saved $s1 and hoists the addr to the prologue (live across all 4 calls); direct array access D_80078E78[0x37] instead folds %lo per use (no $s1, frame 0x18 not 0x20) - -extern u8 D_80078E78[]; - -extern void *D_801D2FD8; -extern void *D_801D2FDC; -extern void *D_801D2FE0; -extern s32 D_801D3008; -extern s32 D_801D300C; -extern s32 D_801D3010; -extern s32 D_801D4734[]; - -extern u8 D_8018A1A8[]; -extern u8 D_8018A250[]; -extern u8 D_8018A100[]; -extern u8 D_8018A1FC[]; -extern u8 D_8018A27C[]; -extern u8 D_8018A154[]; - -extern void func_8013D53C(); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); - -void func_8013D3D4(int param_1, int param_2) -{ - u8 *p = D_80078E78; - - D_801D3008 = param_2; - D_801D300C = (param_2 >> 2) & 3; - D_801D3010 = (param_2 >> 4) & 1; - if (((param_2 >> 2) & 3) == 0) { - D_801D2FD8 = D_8018A1A8; - D_801D2FDC = D_8018A250; - D_801D2FE0 = D_8018A100; - } else { - D_801D2FD8 = D_8018A1FC; - D_801D2FDC = D_8018A27C; - D_801D2FE0 = D_8018A154; - } - func_8013D53C(); - if ((param_2 & 1) != 0) { - if (D_801D3010 != 0) { - func_8013DD68(); - } else { - func_8013D8FC(); - } - func_8013CF68(); - if ((D_801D3008 & 2) != 0) { - D_801D4734[0] = 0x140; - D_801D4734[3] = 0x80; - if (p[0x37] == 4) { - D_801D4734[0] = 0x140; - D_801D4734[3] = 0; - } - if (p[0x37] == 0) { - D_801D4734[0] = 0x140; - D_801D4734[3] = 0x80; - } - } - } -} - - - - /* 9-byte, align-1 -> unaligned block copy */ - - -extern s32 D_801D3008; -extern s32 D_801D2FF0; - - -extern u8 D_801D47DA; -extern u8 D_801D484E; -extern u8 D_801D4702; -extern u8 D_801D47BC; -extern u8 D_801D46E0; -extern u8 D_801D4701; - - -extern s32 D_801D47C0; -extern s32 D_801D3004; -extern s32 D_801D3000; -extern s32 D_801D2FE8; -extern s32 D_801D2FF4; -extern s32 D_801D2FF8; - -extern void *D_801D2FD8; -extern s32 D_801D3010; -extern void *D_801D2FE0; - -void func_8013D53C(void *arg0v) { - - extern Rec9 D_8018A298[]; - extern Rec12 D_8018A2D0[]; - extern u8 D_80078EAF; - extern u8 D_801D4798; - extern s32 D_801D2FFC; - Cmd_8013D53C *arg0 = arg0v; - - extern u8 D_8018A2D4[]; - extern u8 D_8018A2D8[]; - extern unsigned char D_801D46F8; - extern s16 *D_801D2FE4; - extern s32 D_801D3014; - extern s32 D_801D3018; - extern s32 D_801D301C; - s32 s0v; - s32 t9v; - s32 t8v; - u8 b0, b1, b2; - u8 pad[8]; /* dead BLKmode local: frame 0x10 -> 0x18, zero code */ - - if (!(D_801D3008 & 1)) { - D_801D2FF0 = 1; - } else { - D_801D2FF0 = D_80078EAF; - } - - b0 = ((u8 *)D_8018A2D0)[D_801D2FF0 * 12]; - D_801D47DA = b0; - D_801D484E = b0; - b1 = D_8018A2D4[D_801D2FF0 * 12]; - D_801D4702 = b1; - D_801D47BC = b1; - b2 = D_8018A2D8[D_801D2FF0 * 12]; - D_801D46E0 = b2; - D_801D4701 = b2; - - (*(S9 *)&D_801D46F8) = ((S9 *)D_8018A298)[D_801D2FF0]; - (*(S9 *)&D_801D4798) = *(S9 *)(&D_801D46E0 + 0x18); /* same addr as (*(S9 *)&D_801D46F8); distinct sym defeats cse, keeps %hi/%lo */ - - D_801D47C0 = 1; - D_801D3004 = -1; - D_801D3000 = 0; - D_801D2FFC = -1; - D_801D2FE8 = 0; - D_801D2FF4 = 0; - D_801D2FF8 = 0; - - if ((D_801D3008 & 2) && (D_801D2FF0 == 4)) { - s0v = (*(s32 * *)&D_801D2FD8)[18]; - t9v = (*(s32 * *)&D_801D2FD8)[19]; - t8v = (*(s32 * *)&D_801D2FD8)[20]; - } else { - s32 *p = (s32 *)(D_801D2FF0 * 12 + (s32) (*(s32 * *)&D_801D2FD8)); /* block-local: local-alloc ties sum into mul chain */ - s0v = p[0]; - t9v = p[1]; - t8v = p[2]; - } - - (*(Cmd_8013D53C * *)&D_801D2FE4) = arg0; - if (arg0 != 0) { - if (D_801D3010 != 0) { - s32 *p = (s32 *)(D_801D2FF0 * 12 + (s32) (*(s32 * *)&D_801D2FE0)); - D_801D3014 = p[0]; - D_801D3018 = p[1]; - D_801D301C = p[2]; - } else { - while ((arg0->cmd & 0xFFFF) != 0xFF) { - if ((arg0->cmd & 0xFFFF) == 9) { - s32 n; - s32 i; - u16 *src; - u16 *dst; - n = arg0->w * arg0->h; - i = 0; - src = arg0->data; - __asm__("" :: "r"(src)); /* +2 refs on src (depth-2): keeps src above i, below the mfhi temp */ - dst = src + n; - if (n > 0) { - do { - u16 px; - s32 r, g, b, out; - __asm__("" :: "r"(i)); /* +3 refs on i (depth-3): lifts i over dst in the $t2 race */ - px = *src; - r = ((px & 0x1F) * s0v) / 2560; - g = (((px & 0x3E0) * t9v) / 2560) & 0x3E0; - b = (((px & 0x7C00) * t8v) / 2560) & 0x7C00; - out = r | g | b | (px & 0x8000); - if (out == 0 && px != 0) { - out = 0x8000; - } - *dst = out; - dst++; - i++; - src++; - } while (i < n); - } - } - arg0++; - } - } - } -} - - - - - - - - -extern void func_800599B8(u16*); - -void func_8013D8FC(void) -{ - - extern s16 *D_801D2FE4; - register s16 *psVar3 __asm__("$17"); - register s16 *psVar2 __asm__("$16"); - register s32 c9 __asm__("$19"); - register s32 cff __asm__("$18"); - u16 sVar1; - s16 buf[4]; - - psVar3 = D_801D2FE4; - if (psVar3 != (s16 *)0x0 && (sVar1 = (u16)*psVar3, sVar1 != 0xff)) { - c9 = 9; - cff = 0xff; - psVar2 = psVar3 + 5; - do { - if (sVar1 == c9) { - s32 arg2 = *(s32 *)(psVar2 + 1) + psVar2[-1] * 2; - buf[0] = psVar2[-3]; - buf[1] = psVar2[-2]; - buf[2] = psVar2[-1]; - buf[3] = *psVar2; - ((void (*)(s32, s32))func_800599B8)((s32)buf, arg2); - } - psVar3 = psVar3 + 8; - sVar1 = (u16)*psVar3; - psVar2 = psVar2 + 8; - } while (sVar1 != cff); - } -} - - -extern void *D_801D2FDC; -extern s32 D_801D2FF4; -extern void func_800599B8(u16*); -#define gte_ldIR0z() __asm__ __volatile__("mtc2 $0, $8") -#define gte_ldrgb(p) __asm__ __volatile__("lwc2 $6, 0(%0)" :: "r"(p) : "memory") -#define gte_ldIRGB(p) __asm__ __volatile__("lwc2 $28, 0(%0)" :: "r"(p) : "memory") -#define gte_dpcl() __asm__ __volatile__("nop\n\tnop\n\tdpcl") -#define gte_stORGB(p) __asm__ __volatile__("swc2 $29, 0(%0)" :: "r"(p) : "memory") - -void func_8013D9B0(int param_1) -{ - - extern s16 *D_801D2FE4; - extern s32 D_801D2FFC; - u8 buf[0x20]; - register s32 uVar13 __asm__("$16"); - register u16 *psVar14 __asm__("$17"); - register u16 *psVar15 __asm__("$18"); - register s32 uVar16 __asm__("$19"); - register void *r0 __asm__("$20"); - register u16 *puVar10 __asm__("$11"); - register u16 *puVar9 __asm__("$10"); - register s32 iVar11 __asm__("$13"); - register s32 iVar12 __asm__("$14"); - u16 sVar4; - register u32 uVar5 __asm__("$3"); - register u32 uVar7 __asm__("$6"); - register u32 uVar1 __asm__("$7"); - register u32 uVar6 __asm__("$4"); - register u32 uVar8 __asm__("$8"); - register u32 uVar3 __asm__("$9"); - - psVar15 = (*(u16 * *)&D_801D2FE4); - if (psVar15 != 0) { - sVar4 = *psVar15; - *(u32 *)(buf + 8) = (*(u32 * *)&D_801D2FDC)[param_1]; - D_801D2FFC = -1; - uVar16 = 0; - if (sVar4 != 0xff) { - r0 = buf + 8; - psVar14 = psVar15 + 6; - do { - iVar11 = 0; - if (sVar4 == 9) { - *(s16 *)(buf + 0) = psVar14[-4]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 2) = psVar14[-3]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 4) = psVar14[-2]; - __asm__ __volatile__("" ::: "memory"); - *(s16 *)(buf + 6) = psVar14[-1]; - __asm__ __volatile__("" ::: "memory"); - { - register s32 mw __asm__("$3") = (s32)((s16 *)psVar14)[-2]; - register s32 mh __asm__("$2") = (s32)((s16 *)psVar14)[-1]; - iVar12 = mw * mh; - } - uVar13 = 0; - puVar10 = *(u16 **)psVar14; - { - register s32 boff __asm__("$2") = iVar12 * 2; - register u16 *pi __asm__("$5"); - pi = (u16 *)((s32)puVar10 + boff); - __asm__ __volatile__("" : "=r"(pi) : "0"(pi)); - puVar9 = pi; - } - if (0 < iVar12) { - do { - register u32 pix __asm__("$2"); - register u32 out __asm__("$2"); - u32 result; - *(u32 *)(buf + 0xc) = (u32)*puVar10; - pix = (u32)*puVar9; - uVar5 = pix & 0x1f; - uVar7 = pix & 0x3e0; - uVar1 = pix & 0x7c00; - { - void *p1; - register void *pa __asm__("$2"); - register void *pb __asm__("$12"); - __asm__ __volatile__(""); - p1 = buf + 0xc; - __asm__ __volatile__("" : "=r"(p1) : "0"(p1)); - gte_ldIR0z(); - gte_ldrgb(r0); - gte_ldIRGB(p1); - gte_dpcl(); - pa = buf + 0x10; - __asm__ __volatile__("" : "=r"(pa) : "0"(pa)); - pb = pa; - gte_stORGB(pb); - } - out = *(u32 *)(buf + 0x10); - uVar6 = out & 0x1f; - uVar8 = out & 0x3e0; - uVar3 = out & 0x7c00; - if (uVar5 != uVar6) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar5 < (s32)uVar6) uVar5 = uVar5 + 1; - c = (s32)uVar6 < (s32)uVar5; - if (c) uVar5 = uVar5 - 1; - } - if (uVar7 != uVar8) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar7 < (s32)uVar8) uVar7 = uVar7 + 0x20; - c = (s32)uVar8 < (s32)uVar7; - if (c) uVar7 = uVar7 - 0x20; - } - if (uVar1 != uVar3) { - register s32 c __asm__("$2"); - uVar13 = 1; - if ((s32)uVar1 < (s32)uVar3) uVar1 = uVar1 + 0x400; - c = (s32)uVar3 < (s32)uVar1; - if (c) uVar1 = uVar1 - 0x400; - } - result = uVar5 | uVar7 | uVar1 | (*(u32 *)(buf + 0xc) & 0x8000); - if (result == 0 && *(u32 *)(buf + 0xc) != 0) { - result = 0x8000; - } - *puVar9 = (u16)result; - puVar9 = puVar9 + 1; - iVar11 = iVar11 + 1; - puVar10 = puVar10 + 1; - } while (iVar11 < iVar12); - } - if (uVar13 != 0) { - ((void (*)(void *))func_800599B8)(buf); - } - uVar16 = uVar16 | uVar13; - } - psVar15 = psVar15 + 8; - sVar4 = *psVar15; - psVar14 = psVar14 + 8; - } while (sVar4 != 0xff); - } - D_801D2FF4 = uVar16; - } - return; -} - - - -// @class: struct -// @stuck: none — MATCH (match_one 97/97). Two levers: (1) offset-first pointer arith -// `(int*)(param_1*12 + (int)D_801D2FE0)` makes the addu `offset+base` (dest=v0) so x/y/z -// load into a0/a1/a2 and each global loads LATE into v1 (base-first gave addu dest=v1 → -// global hoisted into a0, shifting x/y/z to a1/a2/a3). (2) the clamp must be NESTED -// if/else (slti dup'd inside each <,>= branch), NOT a merged `if(diff<5)` after the -// branch — gcc cross-jumps the identical `G=x` and `G=t` store tails into the two shared -// sites; the merged form emits one slti + unconditional store and diverges. - -extern void *D_801D2FE0; -extern s16 *D_801D2FE4; -extern s32 D_801D2FF4; -extern s32 D_801D3014; -extern s32 D_801D3018; -extern s32 D_801D301C; - -extern void func_8013DD68(void); - -void func_8013DBE4(int param_1) -{ - int *p; - int x, y, z; - int flag; - - if (D_801D2FE4 != 0) { - D_801D2FF4 = 0; - p = (int *)(param_1 * 12 + (int)D_801D2FE0); - x = p[0]; - y = p[1]; - z = p[2]; - flag = 0; - if (D_801D3014 != x) { - flag = 1; - if (D_801D3014 < x) { - if (x - D_801D3014 < 5) { - D_801D3014 = x; - } else { - D_801D3014 = D_801D3014 + 4; - } - } else { - if (D_801D3014 - x < 5) { - D_801D3014 = x; - } else { - D_801D3014 = D_801D3014 - 4; - } - } - } - if (D_801D3018 != y) { - flag = 1; - if (D_801D3018 < y) { - if (y - D_801D3018 < 5) { - D_801D3018 = y; - } else { - D_801D3018 = D_801D3018 + 4; - } - } else { - if (D_801D3018 - y < 5) { - D_801D3018 = y; - } else { - D_801D3018 = D_801D3018 - 4; - } - } - } - if (D_801D301C != z) { - flag = 1; - if (D_801D301C < z) { - if (z - D_801D301C < 5) { - D_801D301C = z; - } else { - D_801D301C = D_801D301C + 4; - } - } else { - if (D_801D301C - z < 5) { - D_801D301C = z; - } else { - D_801D301C = D_801D301C - 4; - } - } - } - if (flag != 0) { - func_8013DD68(); - } - D_801D2FF4 = flag; - } -} - - -// @class: regalloc-order -// @stuck: none — MATCH (187 ins). Levers: struct-assign DRAWENV copy (align via type); pbase local for $s2-relative D_800B9A02; two-biv SPRT loop (q anchored one-above -> gcc re-anchors, no bare-deref); P_TAG_8013DD68 addPrim; single p var coalesces puVar7->puVar15; pins uVar2=$v1,iVar14=$a3,c5=$t3; biv-increment order sets q-init-before-puVar10-init; Buf_8013DD68 0x68 -> frame 0xA0. - - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ - - -#define IDVAL (*(u16 *)(pbase + 0xA3D2)) -#define OTE ((P_TAG_8013DD68 *)(D_800BA0E4 + IDVAL * 0x10)) - -void func_8013DD68() { - extern void SetDrawEnv(void *p, void *env); - extern u16 D_800AF7B8; - extern u8 D_800BA0E4[]; - extern u8 D_8018A30C[]; - - u32 *p; - u16 uVar1; - u16 *puVar16; - u16 *q; - u16 *puVar10; - register u16 uVar2 __asm__("$3"); - int uVar5; - register int iVar14 __asm__("$7"); - Buf_8013DD68 buf; - u8 *pbase; - u8 *base; - - pbase = D_800AF630; - puVar16 = (*(u16 * *)&D_801D2FE4); - p = (*(u32 * *)&D_800A5E60); - uVar1 = *puVar16; - puVar16 = puVar16 + 1; - base = pbase + (u32)D_800AF7B8 * 0x5C; - buf.env = *(DrawEnv_8013DD68 *)(base + 0x38); - *((u8 *)&buf + 0x18) = 0; - SetDrawEnv(p, &buf); - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - OTE->addr = (u32)p; - p = p + 0x10; - iVar14 = 0; - if (uVar1 != 0) { - register int c5 __asm__("$11") = 5; - puVar10 = (u16 *)((int)p + 0x18); - q = puVar16 + 8; - do { - *(u8 *)((int)puVar10 + -0x15) = c5; - uVar2 = q[-6]; - *(u8 *)((int)puVar10 + -0xd) = 100; - *(u8 *)((int)puVar10 + -0x10) = (u8)(*(int*)&D_801D3014); - *(u8 *)((int)puVar10 + -0xf) = (u8)(*(int*)&D_801D3018); - uVar5 = (*(int*)&D_801D301C); - *(u32 *)((int)puVar10 + -0x14) = uVar2 & 0x9ff | 0xe1000400; - *(u8 *)((int)puVar10 + -0xe) = (u8)uVar5; - *(u16 *)((int)puVar10 + -0xc) = q[-4]; - iVar14 = iVar14 + 1; - *(u16 *)((int)puVar10 + -0xa) = q[-3]; - *(u8 *)((int)puVar10 + -8) = (u8)*puVar16; - uVar2 = q[-7]; - *(u16 *)((int)puVar10 + -6) = 0x7800; - *(u8 *)((int)puVar10 + -7) = (u8)uVar2; - puVar16 = puVar16 + 8; - *(u16 *)((int)puVar10 + -4) = q[-2]; - *(u16 *)((int)puVar10 + -2) = q[-1]; - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - puVar10 = puVar10 + 0xc; - OTE->addr = (u32)p; - p = p + 6; - q = q + 8; - } while (iVar14 < (int)(u32)uVar1); - } - SetDrawEnv(p, D_8018A30C); - ((P_TAG_8013DD68 *)p)->addr = OTE->addr; - OTE->addr = (u32)p; - p = p + 0x10; - (*(u32 * *)&D_800A5E60) = p; - return; -} - - - - -extern s32 D_801D2FFC; - -s32 func_8013E054(void) { - return D_801D2FFC; -} - - -DEFINE_func_8013E064() /* dedup: shared engine-core @0x8013E064 (src/shared) */ - -DEFINE_func_8013E0FC() /* dedup: shared engine-core @0x8013E0FC (src/shared) */ - -DEFINE_func_8013E194() /* dedup: shared engine-core @0x8013E194 (src/shared) */ - -DEFINE_func_8013E22C() /* dedup: shared engine-core @0x8013E22C (src/shared) */ - -DEFINE_func_8013E298() /* dedup: shared engine-core @0x8013E298 (src/shared) */ - -DEFINE_func_8013E2C4() /* dedup: shared engine-core @0x8013E2C4 (src/shared) */ - -DEFINE_func_8013E370() /* dedup: shared engine-core @0x8013E370 (src/shared) */ - -DEFINE_func_8013E410() /* dedup: shared engine-core @0x8013E410 (src/shared) */ - -DEFINE_func_8013E448() /* dedup: shared engine-core @0x8013E448 (src/shared) */ - -DEFINE_func_8013E4B4() /* dedup: shared engine-core @0x8013E4B4 (src/shared) */ - -DEFINE_func_8013E558() /* dedup: shared engine-core @0x8013E558 (src/shared) */ - -DEFINE_func_8013E588() /* dedup: shared engine-core @0x8013E588 (src/shared) */ - - -extern void func_80029444(void); -extern void func_801754A8(void); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_800190AC(void); -extern void func_80141C04(void); - - -void func_8013E5E8(void) -{ - - extern u16 D_8011511E; - extern u16 D_8011511C; - extern unsigned short D_80115112; - extern u16 D_80115116; - extern void (*D_8018AD1C[])(void); - register void (*fp)(void) __asm__("$2"); /* pin fn-ptr to $v0 -> store retires early */ - func_80029444(); - func_801754A8(); - D_8011511E = func_80014ED4(0); - D_8011511C = func_80015018(0); - fp = D_8018AD1C[D_80115112]; - fp(); - func_800190AC(); - func_80141C04(); - D_80115116 += 1; -} - - -DEFINE_func_8013E67C() /* dedup: shared engine-core @0x8013E67C (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (90 ins, relocation-masked) - -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018AD08; -extern u16 D_80115110; -extern s32 D_80115188; -extern s16 currentLocationId; -extern s16 D_8018ACE0; -extern s16 D_8018ACE2; -extern unsigned short D_80115112; - -extern void func_8013E83C(void); -extern s32 func_80029504(void); - -void func_8013E6AC(void) { - short i; - - func_8013E83C(); - D_8011511A = 0; - D_80115124 = D_80078EC0; - for (i = 0; i < 8; i++) { - *(s16 *)((char *)&D_80115148 + (i << 1)) = 0; - D_80115140[i] = 0; - } - if (!((u32)func_80029504() < 5 || currentLocationId == 0x302A || currentLocationId == 0x3073)) { - register s32 *ep __asm__("$8"); - register s32 *fp __asm__("$9"); - fp = (s32 *)&D_80115110; - ep = (s32 *)&D_8018AD08; - for (i = 0; i < 5; i++) { - register s32 *fa __asm__("$6"); - s32 v; - fa = (s32 *)(i * 4 + (s32)fp); - v = ep[i] * 3 >> 2; - fa[0x16] = v; - *(s32 *)((char *)&D_80115188 + (i << 2)) = v; - } - D_8018ACE0 = 2; - D_8018ACE2 = 1; - { u16 *q = &D_80115112; *q += 1; } - } else { - func_8013E83C(); - D_8011511A = 7; - D_8018ACE2 = 0; - D_8018ACE0 = 0; - D_80115112 = 6; - } -} - - -DEFINE_func_8013E814() /* dedup: shared engine-core @0x8013E814 (src/shared) */ - -// @class: plumbing -// @stuck: none — MATCH (direct u16 global reads fold to lui/lhu; scheduler hoists the D_8011511A read above the prologue, reproduced by -O2) - -void func_8013E83C() { - extern void func_80141C0C(int); - extern unsigned short D_80115118; - extern unsigned short D_80115128; - extern unsigned short D_8011512E; - extern unsigned int D_80115130; - extern unsigned short D_80115158; - extern unsigned short D_8011515A; - extern unsigned short D_8011515C; - extern unsigned short D_8011515E; - extern unsigned short D_80115162; - extern unsigned short D_80115166; - extern void * D_801D3030; - extern void * D_801D3034; - extern unsigned char D_8018A980; - extern unsigned char D_8018A998; - extern unsigned char D_8018AA0C; - extern unsigned char D_8018AA14; - - - D_80115118 = 0; - D_80115130 = 0; - if (D_8011511A >= 4) { - D_8011511A = D_8011511A - 3; - } - D_80115158 = 0x106; - - if ((((int(*)(int))func_80029178)(0x1c) & 0xFF) == 0) { - D_801D3030 = &D_8018A980; - D_801D3034 = &D_8018AA0C; - } else { - D_801D3030 = &D_8018A998; - D_801D3034 = &D_8018AA14; - } - - D_8011515A = 0x104; - D_8011515C = 0x104; - D_8011515E = 0x129; - D_80115162 = 0x103; - D_80115166 = 0x105; - D_80115128 = 0; - D_8011512E = 0; - - if (D_80115110 == 3) { - ((void(*)(int, int))func_8002D4C8)(0x46e, 0); - } else { - func_80141C0C(0); - } -} - - - -// @class: schedule -// @stuck: none — MATCH (63 ins). The idx-32+ residual was a THIRD held base pointer for the -// D_80115188 store: the draft's `((Cell*)&D_80115188)[i].v = v` allocates a pointer, so gcc kept -// three bases (D_80115110/D_8018AD08/D_80115188) and buried the branch-delay `sll` (i<<16 carry) -// under the extra store. Switching to the sibling func_8013E6AC's relocation-masked form -// `*(s32*)((char*)&D_80115188 + (i<<2))` recomputes that address via per-iteration %hi/%lo, leaving -// only TWO held pointers (fp=&D_80115110 -> $t0, ep=&D_8018AD08 -> $a3) and freeing the delay slot -// to carry `i<<16` in $a0 exactly as the target does. Head (idx 0-31) already matched; i naturally -// lands in $a2 from the goto-loop delay slots, driving the fp/ep/fa=$8/$7/$5 alloc with no pins. - -void func_8013E958() -{ - extern void func_8014AA28(void); - extern s32 func_800D0488(s32); - extern void func_80141C0C(s32); - - - s16 *p = &(*(s16*)&D_80115124); - s16 i; - s32 v; - s16 m; - - D_800B9A15 = 0; - func_80139954(); - if (D_80078EC0 != *p) { - func_8014AA28(); - if ((D_80078EC0 & 0x7F) != 0) { - m = D_80078EC0 & 0x7F; - *p = m; - if (m == 0 || func_800D0488(m) == 0) - goto loop; - } - } - *p = 0; -loop: - for (i = 0; i < 5; i++) { - s32 *q = &((s32 *)&D_80115110)[i]; - v = ((s32 *)&D_8018AD08)[i] >> 6; - q[0x16] = v; - *(s32 *)((char *)&D_80115188 + (i << 2)) = v; - } - func_80141C0C(7); - (*(u16*)&D_80115112) = 4; -} - - - -DEFINE_func_8013EA54() /* dedup: shared engine-core @0x8013EA54 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (sVar2 pinned to $v0 forces in-place sll/sra sign-ext scratch) - - -extern s32 func_80141C50(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern void func_8013FAF8(s16 a0, s16 a1); -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_801376E8(int a0, int a1); -extern void func_80137B80(void); -extern unsigned char *func_80141CA4(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8013E958(void); - -extern short D_800B9A02; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511A; -extern u16 D_8011511E; -extern short D_80115128; -extern unsigned short D_80115112; -extern s16 D_8011512A; -extern s32 D_80115130; -extern unsigned char D_8018ACE4; - -void func_8013EB7C(void) { - s32 sp10[2]; - short sVar1; - register short sVar2 __asm__("$2"); - s32 a0v; - s32 iVar4; - - if ((s16)func_80141C50() == 0) { - D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; - sVar1 = ((short (*)(void))func_8013F350)(); - if (D_8011511A >= 4) { - func_8013FAF8((s16)D_8011511A, (s16)(D_8011511A + 1)); - } - func_8013FAF8(0, 5); - if (D_8011511A == 5) { - sVar2 = ((short (*)(s32))func_8014168C)(2); - a0v = 2; - } else { - sVar2 = ((short (*)(s32))func_8014168C)((s16)D_8011511A); - a0v = (s16)D_8011511A; - } - iVar4 = func_8014032C(a0v, sVar2); - if (iVar4 != 0) { - s32 *p130 = &D_80115130; - if (iVar4 != *p130) { - *p130 = iVar4; - func_80139954(); - func_801376E8(iVar4, (s32)&(*(u8 *)&D_8018ACE4)); - } - } - func_80137B80(); - if ((D_8011511E & 0x10) != 0 && D_8011511A < 5 && sVar1 == 0) { - (*(s16 *)&D_80115128) = 0; - func_8002D4C8(0x466, 0); - if (D_8011511A != 4) { - func_801376E8((s32)((s32 (*)(void))func_80141CA4)(), (s32)&(*(u8 *)&D_8018ACE4)); - } - (*(unsigned short *)&D_80115112) -= 1; - } else { - if ((D_8011511E & 0x800) != 0 || D_8011512A != 0) { - func_8013E958(); - } - } - } - (void)sp10; -} - - -DEFINE_func_8013ED6C() /* dedup: shared engine-core @0x8013ED6C (src/shared) */ - -extern short D_800B9A02; -extern unsigned short D_80115112; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern s16 D_8018ACE0; -extern s16 D_8018ACE2; -extern unsigned char D_8018ACE4; -extern void func_801376E8(int a0, int a1); -extern void func_8013FAF8(s16 a0, s16 a1); -extern unsigned char *func_80141CA4(void); - -// @class: struct -// @stuck: none — MATCH (94 ins, relocation-masked). Keys: (1) §18 array-of-STRUCT fold -// `typedef struct{s32 f0;} E4; extern E4 arr[]; arr[i].f0` defeats gcc's base-CSE/loop-hoist so each -// global-array access stays a per-access `lui %hi; addu idx; lw/sw %lo(sym)($at)` (a plain `s32 arr[]; -// arr[i]` HOISTS the base into a reg → wrong). (2) §21 global-RMW: the conditional `D_8018ACE2` bump and -// the `D_80115112` increment keep the address in ONE reg → access via a pointer var, not the bare global. -// (3) the 2nd-loop base `q = p-8` (=&D_80115118 kept in $s0 across the calls) is declared INSIDE the loop -// so loop.c hoists it to the preheader slot AFTER `i=0` (an explicit pre-loop `q=` emits it BEFORE i=0, -// +2 off). (4) dead `s32 sp10[2];(void)sp10;` reserves the extra 8 frame bytes (0x28, not 0x20). -// Conflict-safe externs: asm-alias `aD80115188` (file-scope decl is scalar `s32 D_80115188`); `(u16)` -// cast on the `s16 D_8018ACE0` read for the `lhu`; `D_80115168` is undeclared elsewhere in the TU. - - - - -s32 func_8013EE10() { - extern E4 aD80115188[] __asm__("D_80115188"); - extern E4 D_80115168[]; - extern unsigned short D_80115118; - - short i; - u16 *p; - u16 old; - s16 *r; - u16 *c; - s32 sp10[2]; - - D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; - func_8013FAF8(0, 5); - for (i = 0; i < 5; i++) { - s32 t = D_80115168[i].f0 * 3 >> 2; - aD80115188[i].f0 = t; - D_80115168[i].f0 = D_80115168[i].f0 - t; - } - r = &D_8018ACE2; - if (*r < 3) { - *r = *r + 1; - } - D_8018ACE0 = (u16)D_8018ACE0 + 2; - p = &D_80115118; - old = *p; - *p = old + 1; - if (old >= 5) { - ((void (*)(int, unsigned char *))func_801376E8)((int)func_80141CA4(), &D_8018ACE4); - for (i = 0; i < 5; i++) { - s32 *q = (s32 *)((char *)p - 8); - *(s32 *)((char *)&q[i] + 0x78) = 0; - D_80115168[i].f0 = 0; - } - c = &D_80115112; - *c += 1; - } - (void)sp10; -} - - - - - - - - - - - -extern s16 D_800B9A02; -extern s32 D_801151D0; -extern E4 aD80115188[] __asm__("D_80115188"); -extern u16 D_80115124; -extern u16 D_80115112; -extern s16 D_8018ACE2; -extern s16 D_8018ACE0; - -extern void func_8013FAF8(s16 a0, s16 a1); -extern s32 func_800D0488(s16 a0); -extern void func_800D2624(void); - -void func_8013EF88(void) -{ - - extern u16 D_80115118; - extern E4 D_80115168[]; - extern u16 D_80115114; - u16 *p = &D_80115118; - u16 old = *p; - short i; - - if (old != 0) { - u16 nw = old - 1; - *p = nw; - if (nw != 0) { - D_801151D0 = *(s32 *)((char *)&D_80115118 + 0xB0 + (u16)D_800B9A02 * 4); - func_8013FAF8(0, 5); - for (i = 0; i < 5; i++) { - s32 t = aD80115188[i].f0 * 3; - aD80115188[i].f0 = t; - D_80115168[i].f0 = D_80115168[i].f0 + t; - } - if (D_80115118 < 3) { - u16 *s = &(*(u16 *)&D_8018ACE2); - *s -= 1; - } - { - u16 *w = &(*(u16 *)&D_8018ACE0); - *w -= 2; - if ((s16)*w < 0) { - *w = 0; - } - } - } - } - - { - s16 *pv = &(*(s16 *)&D_80115124); - if (*pv != 0) { - if (func_800D0488(*pv) == 0) return; - *pv = 0; - } - } - - if (D_80115118 == 0) { - if (D_80115114 == ((u16)D_800B9A02 ^ 1)) { - func_800D2624(); - } else { - D_80115112 += 1; - } - } -} - - - -// @class: struct -// @stuck: none — MATCH expected (u16* base materialization for read+write, %lo-folded single-access globals) - - -extern unsigned short D_80115118; -extern unsigned short D_80115112; -extern u16 D_80115110; -extern unsigned char D_8018ACE4; - -extern unsigned char *func_80141CA4(void); -extern void func_801376E8(int a0, int a1); - -void func_8013F138(void) { - u16 *p = &D_80115118; - *p += 0x10; - if ((u16)*p >= 0x40) { - if (D_80115110 == 0) { - ((void (*)(int, unsigned char *))func_801376E8)((int)func_80141CA4(), &D_8018ACE4); - } - D_80115112 += 1; - } -} - - -DEFINE_func_8013F1BC() /* dedup: shared engine-core @0x8013F1BC (src/shared) */ - -DEFINE_func_8013F244() /* dedup: shared engine-core @0x8013F244 (src/shared) */ - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8013F350.c b/src/ov_SC03_119/ov_SC03_119_jr_8013F350.c deleted file mode 100644 index 5bdf6e1b4..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8013F350.c +++ /dev/null @@ -1,1351 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_80189CE4[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_80189CF8[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_80189E38[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_80189E90[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_80189ED8[])(void); -extern void func_80131F28(void *a0); -extern void (*D_80189EE0[])(void); -extern void func_80131F64(void *a0); -extern void (*D_80189EE8[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_80189EF0[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_80189E98; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_80189EB8; -extern void func_801321B0(int param_1); -extern int D_80189EC8; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern int D_801D2F58; -extern u16 D_801D2F68; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_80189F00; /* holds a pointer value (*(u16**)&D_80189F00) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_80189F14[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_80189F68; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_80189F6C[])(void); -extern void func_80138C30(void *a0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_80189FB0; -extern u8 D_80189FF4; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018A038[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018A0B0, D_8018A0B2, D_8018A0B4, D_8018A0B6, D_8018A0B8, D_8018A0BA; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* 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 */ -extern s32 D_801D2FD0; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801D2FD4; -extern s8 D_801D2FD5; -extern void func_8013C9C4(void * arg0); -extern s32 D_801D2FF4; -extern s32 D_801D2FE8; -extern s32 D_801D2FEC; -extern s32 D_801D2FF8; -extern void func_8013CABC(void); -extern s32 D_801D2FF0; -extern void func_8013CAE8(void); -extern s32 D_801D3020; -extern s32 D_801D3024; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801D3000; -extern s32 D_801D3004; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern void func_8013D178(void); -extern u8 D_801D47DA; -extern u8 D_801D484E; -extern u8 D_801D4702; -extern u8 D_801D47BC; -extern u8 D_801D46E0; -extern u8 D_801D4701; -extern s32 D_801D47C0; -extern void func_8013D330(void); -extern void *D_801D2FD8; -extern void *D_801D2FDC; -extern void *D_801D2FE0; -extern s32 D_801D3008; -extern s32 D_801D300C; -extern s32 D_801D3010; -extern s32 D_801D4734[]; -extern u8 D_8018A1A8[]; -extern u8 D_8018A250[]; -extern u8 D_8018A100[]; -extern u8 D_8018A1FC[]; -extern u8 D_8018A27C[]; -extern u8 D_8018A154[]; -extern void func_8013D53C(); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801D2FE4; -extern s32 D_801D3014; -extern s32 D_801D3018; -extern s32 D_801D301C; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801D2FFC; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_80141C04(void); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018AD08; -extern s32 D_80115188; -extern s16 D_8018ACE0; -extern s16 D_8018ACE2; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018ACE4; -extern void func_8013EB7C(void); -extern s32 func_8013F350(void); /* §30#2 widened (discarding caller) */ -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -/* ==== end §8b carried decl layer ==== */ - -// @class: regalloc-order -// @stuck: none — MATCH (490 ins, match_one, canonical-typed) -// -// func_8013F350 — 490-ins GIANT (menu/pad state machine, double jump table -// jtbl_801D8860 [8] + jtbl_801D8880 [5]). Load-bearing levers, do NOT "clean up": -// -// 1. `register s32 off __asm__("$4")` — THE crack. gcc otherwise emits pmax -// before pcur, letting pcur sink into the beq delay slot (target has a nop -// there) and losing the off/pmax coalesce into $a0. Pinning off cost 0 insns -// and took the diff 162 -> 13. (`bb` shares $4; live ranges are disjoint.) -// 2. `register u16 *pd __asm__("$5")` + the "=r"/"0" self-barrier — without the -// barrier gcc const-propagates &D_8011511C away and %lo-folds every access -// (target holds the base: lhu 0($a1) / lhu 4($a1) / sh 4($a1)). The barrier -// emits zero code; it only hides the pointer's constant value from cse. -// NOTE: `ps` (&D_8011511A) must NOT get the same barrier — it regressed. -// 3. `case 0/2/3: break;` in the inner switch are NOT dead — 5 case nodes is -// what pushes gcc past CASE_VALUES_THRESHOLD into a jump table (jtbl_801D8880) -// instead of a compare chain (worth 18 instructions). -// 4. case 5 tests (flags & 0x10) with `!= 0 -> goto tail6`, case 6 with -// `== 0 -> break`. The OPPOSITE polarity is what stops gcc cross-jumping the -// two tails into one (§5a class, solved by source shape, not an asm barrier). -// 5. `if (d > 0) A; else if (d < 0) A;` — a single `d > 0 || d < 0` is folded to -// `d != 0` by the FRONT END (andi 0xffff; beqz). Two ifs keep bgtz+bgez; gcc's -// cross-jump then re-merges the twin store blocks, which is the target's shape. -// 6. 0x1000/0x8000/0x2000 blocks are written in-place (`pcur[0] = pcur[0] - 1`) -// -> one register + a load-delay nop. The 0x4000 block needs the `b` temp -// (its ==3 arm restores the original), so it keeps two registers and no nop. -// 7. `s16 d` (not s32 + <<16>>16): the wide form pushed the frame 0x30 -> 0x38. -// 8. `pad` is u16 (its andi 0xFFFF is real) but `st` must stay u16 AND be used -// only for the pointer math / `st == 2` — the D_80115140 index re-reads -// D_8011511A, which is what keeps st free of a masking andi. -// -// Canonical-reconciled (§17a-1) and re-verified MATCH: D_8011512E keeps the TU's -// `u16` canonical with `*(s16*)&` at the read sites (target needs lh), and -// func_8014168C keeps the canonical s16(s16) decl with s32(s32) call-site casts. -// Def sig is s32(void); engine_core.h canon is `void func_8013F350(void)` and the -// callers already cast (`((short (*)(void))func_8013F350)()`) -> def-side reconcile. - -extern u16 D_80115110; -extern u16 D_8011511A; -extern u16 D_8011511C; -extern u16 D_8011511E; -extern u16 D_80115120; -extern u16 D_80115122; -extern s16 D_80115128; -extern s16 D_8011512A; -extern u16 D_8011512E; -extern u8 D_80115140[]; -extern s16 D_8011514C; -extern s16 D_8011514E; -extern u8 D_80115152; -extern u8 D_80115158[]; /* macro-canonical (§8e) */ -extern u8 D_8011515C; /* macro-canonical (§8e) */ -extern u8 D_8018AA04[]; -extern u8 D_8018AA1C[]; -extern u16 D_8018A920[]; - -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); -extern s16 func_8014168C(s16 a0); -extern void func_8014AA04(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_801415C0(s32 a0, s32 a1); -extern void func_80141C0C(s32 a0); -extern s32 func_80140608(s32 a0); -extern void func_801407F4(void); -extern s32 func_801416D4(s16); /* macro-canonical (§8e) */ - -s32 func_8013F350(void) { - register u16 *pd __asm__("$5") = &D_8011511C; - u16 *ps; - u16 *pf; - u16 *pg; - u16 pad; - u16 st; - u8 *pcur; - u8 *pmax; - u8 *p2e; - u8 *p3e; - register s32 off __asm__("$4"); - s16 i; - s32 r; - s16 rs; - s16 d; - u8 b; - register u8 bb __asm__("$4"); - u8 m; - s32 chg; - - __asm__ __volatile__("" : "=r"(pd) : "0"(pd)); - pad = *pd; - chg = 0; - if (pad != 0) { - if (pad == pd[2]) { - D_80115122 = D_80115122 - 1; - if (D_80115122 == 0) { - D_8011511E = pad & 0xF000; - D_80115122 = 3; - } - } else { - pd[2] = pad; - D_80115122 = 6; - } - } else { - D_80115120 = 0; - D_80115122 = 0xC; - } - - i = 0; - do { - if ((func_80029178(D_8018AA04[i]) & 0xFF) == 0) { - break; - } - i = i + 1; - } while (i < 6); - *(u16 *)D_80115158 = i | 0x100; - - switch (D_8011511A) { /* jtbl_801D8860 */ - case 0: - r = ((s32 (*)(s32))func_8014168C)(0); - rs = (s16)r; - if ((func_80029178(D_8018AA04[rs]) & 0xFF) != 0 && (D_8011511E & 0x40) != 0) { - func_8014AA04((r + 1) & 0xFF); - if (rs != 0) { - func_8002D4C8(0x461, 0); - } else { - func_8002D4C8(0x460, 0); - } - } - break; - case 1: - if ((D_8011511E & 0x40) != 0) { - D_80115128 = ((s32 (*)(s32))func_8014168C)(1) + 1; - D_8011511A = 2; - func_80141C0C(3); - return 1; - } - if (D_80115128 != 4) { - break; - } - goto tail7; - case 2: - switch (D_80115128) { /* jtbl_801D8880 */ - case 0: - break; - case 1: - r = ((s32 (*)(s32))func_8014168C)(2); - pf = &D_8011511E; - if ((*pf & 0x40) != 0) { - if ((*(s16 *)&D_8011512E) == 0) { - if ((func_800291B4(D_8018AA1C[(s16)r]) & 0xFF) != 0 && (*pf & 0x40) != 0) { - D_8011511A = 5; - *(s16 *)&D_80115152 = 0; - func_80141C0C(3); - return 1; - } - func_80141C0C(5); - } else { - func_801415C0((s16)r, (*(s16 *)&D_8011512E) & 0xF); - D_8011512E = 0; - func_80141C0C(3); - return 1; - } - } else if ((*pf & 0x20) != 0) { - if ((*(s16 *)&D_8011512E) == 0) { - D_8011512E = r | 0x8000; - } else { - func_801415C0((s16)r, (*(s16 *)&D_8011512E) & 0xF); - D_8011512E = 0; - } - func_80141C0C(3); - } - break; - case 4: - if ((D_8011511E & 0xA000) != 0) { - chg = func_80140608(2); - } - func_801407F4(); - break; - case 2: - break; - case 3: - break; - } - if (D_80115128 != 0 && (D_8011511E & 0x10) != 0 && D_80115110 != 1) { - D_8011511E = D_8011511E & 0xFFEF; - D_8011511A = 1; - D_8011512E = 0; - func_80141C0C(6); - } - break; - case 3: - if (D_8011514E == 0 && (D_8011511E & 0x40) != 0) { - D_8011511A = D_8011511A + 3; - func_80141C0C(3); - return 1; - } - break; - case 5: - if ((D_8011511E & 0x40) != 0) { - rs = (s16)((s32 (*)(s32))func_801416D4)(D_80115152); - if (rs != 0) { - if (rs < 0) { - D_8011512A = 1; - } else { - D_8011511A = D_8011511A - 3; - func_80141C0C(4); - return 1; - } - } - break; - } - if ((D_8011511E & 0x10) != 0) { - goto tail6; - } - break; - case 6: - if ((D_8011511E & 0x10) == 0) { - break; - } - tail6: - pg = &D_8011511E; - *pg = *pg & 0xFFEF; - D_8011511A = D_8011511A - 3; - func_80141C0C(6); - return 1; - case 7: - if ((D_8011511E & 0xA000) != 0) { - chg = func_80140608(7); - } - tail7: - func_801407F4(); - break; - } - - ps = &D_8011511A; - - st = *ps; - p2e = (u8 *)ps + 0x2E; - p3e = (u8 *)ps + 0x3E; - off = st << 1; - pcur = p2e + off; - pmax = p3e + off; - if (st == 2 || 1 < pmax[0]) { - if ((D_8011511E & 0x1000) != 0) { - pcur[0] = pcur[0] - 1; - chg = 1; - if (0x7F < pcur[0]) { - if (D_8011511A != 3) { - pcur[0] = pmax[0] - 1; - } else { - pcur[0] = 0; - chg = 0; - } - } - } - if ((D_8011511E & 0x4000) != 0) { - b = pcur[0]; - pcur[0] = b + 1; - chg = 1; - if (pmax[0] <= (u8)(b + 1)) { - if (D_8011511A != 3) { - pcur[0] = 0; - } else { - pcur[0] = b; - chg = 0; - } - } - } - if (D_8011511A == 2 && D_80115128 == 1) { - if ((D_8011511E & 0x8000) != 0) { - pcur[1] = pcur[1] - 1; - chg = 1; - if (0x7F < pcur[1]) { - pcur[1] = pmax[1] - 1; - } - } - if ((D_8011511E & 0x2000) != 0) { - pcur[1] = pcur[1] + 1; - chg = 1; - if (pmax[1] <= pcur[1]) { - pcur[1] = 0; - } - } - } else { - bb = pcur[0]; - m = D_80115140[D_8011511A]; - d = (s8)bb - (s8)m; - if (d > 0) { - D_80115140[D_8011511A] = bb; - } else if (d < 0) { - D_80115140[D_8011511A] = bb; - } - } - if (D_8011511A == 1) { - D_80115128 = ((s32 (*)(s32))func_8014168C)(1) + 1; - if ((D_8011511E & 0x5000) != 0) { - D_8011514C = 0; - } - } - *(u16 *)&D_8011515C = D_8018A920[D_80115128]; - if ((chg << 0x10) != 0) { - func_80141C0C(1); - } - } - return 0; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (312/312, relocation-masked) - - - - - - - - - - -extern void func_80140E6C(void); -extern void func_80140F00(void); -extern s32 *func_80140958(s32 *, s32, s32); -extern int func_80141100(int); -extern s16 func_8014168C(s16); -extern s32 func_8013FFD8(s16, s32, s32 *); -extern void func_80024054(void *a0, void *a1); -extern s32 *func_800D2650(s32 *, void *, s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern s32 func_800D27DC(s32, s32 *, void *, s32, s32); -extern s32 *func_800D29F8(s32, s32, void *, s32, s32); -extern int func_80137D08(int arg0, int arg1, short arg2); -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); - -extern s32 D_801151D0; -extern u16 D_8011511A; -extern short D_80115128; -extern u8 D_80078EC0; -extern short D_800B9A02; -extern s16 D_8018ACE0; -extern s16 D_8018ACE2; - -void func_8013FAF8(s16 arg0, s16 arg1) { - - extern Hw4 D_8011516A[]; - extern Rec20 D_800AE7B8[]; - extern Blk60 D_8018A368[]; - extern Blk20 D_8018A668[]; - extern Prim4 D_8018A768[]; - extern Prim4 D_8018A7D8[]; - extern Prim4 *D_8018A8CC[]; - extern s32 D_8018A8EC[]; - extern u8 D_8018A90C; - u8 sp18[72]; - s32 sp60[2]; - s32 *ot; - s16 i; - s16 j; - s32 flag; - s32 addr; - Prim4 *p; - s32 r; - s32 t; - s16 *pp; - s32 flag2; - register s32 flag3 __asm__("$18"); - - func_80140E6C(); - func_80140F00(); - ot = func_80140958((s32 *)D_801151D0, arg0, arg1); - if (D_8011511A < 6) { - ot = (s32 *)func_80141100((int)ot); - } - for (i = arg0; i < arg1; i++) { - if (i == D_8011511A || i == 2 || i == 4) { - flag = 0; - } else { - flag = 0xFF; - } - p = &D_8018A768[i]; - if (i != 5) { - if (i == 2) { - addr = ((s32 *)&D_8018A90C)[*(s16 *)&D_80115128]; - } else { - addr = D_8018A8EC[i]; - } - } else { - addr = func_8013FFD8(2, func_8014168C(2), sp60); - } - func_80024054(addr, sp18); - ot = func_800D2650(ot, sp18, (s16)(p->f0 + (u16)D_8011516A[i].x), p->f2, 1, - flag != 0 ? 0x585858 : 0x808080); - p = D_8018A8CC[i]; - j = 0; - if (p != 0) { - if (i == 2 && *(s16 *)&D_80115128 != 0) { - p = D_8018A7D8; - } - flag2 = flag; - for (;;) { - r = func_8013FFD8(i, j++, sp60); - if (r == 0) { - break; - } - if (r < 0) { - func_80024054(r, sp18); - t = 1; - if (i == 0 && (D_80078EC0 & 0x7F) == j) { - t = 0xB6; - } - if (flag2 != 0) { - sp60[0] += -0x282828; - } - ot = func_800D2650(ot, sp18, (s16)(p->f0 + (u16)D_8011516A[i].x), p->f2, t, sp60[0]); - } - p++; - } - } - func_8005A600((s32)ot, 0, 0, 0x15, 0); - flag3 = flag; - *ot = 0x2000000; - *ot = (D_800AE7B8[*(u16 *)&D_800B9A02].f4[2] & 0xFFFFFF) | 0x2000000; - D_800AE7B8[*(u16 *)&D_800B9A02].f4[2] = - (D_800AE7B8[*(u16 *)&D_800B9A02].f4[2] & 0xFF000000) | ((u32)ot & 0xFFFFFF); - ot = func_800D29F8(flag3, - func_800D27DC(flag3 != 0, ot + 10, &D_8018A368[i], 8, D_8011516A[i].x), - &D_8018A668[i], 2, D_8011516A[i].x); - } - pp = &D_8018ACE0; - if (*pp == 0xE) { - ot = func_80137D08(ot, &D_800AE7B8[*(u16 *)&D_800B9A02], 2); - } - if (*pp != 0 && D_8018ACE2 != 0) { - ot = func_8013AB54(ot, D_800AE7B8[*(u16 *)&D_800B9A02].f4 + 2, (s32)(pp - 2), 0x8000); - } - D_801151D0 = (s32)ot; -} - - - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8013FFD8.c b/src/ov_SC03_119/ov_SC03_119_jr_8013FFD8.c deleted file mode 100644 index a6fa2193d..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8013FFD8.c +++ /dev/null @@ -1,1159 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_80189CE4[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_80189CF8[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_80189E38[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_80189E90[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_80189ED8[])(void); -extern void func_80131F28(void *a0); -extern void (*D_80189EE0[])(void); -extern void func_80131F64(void *a0); -extern void (*D_80189EE8[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_80189EF0[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_80189E98; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_80189EB8; -extern void func_801321B0(int param_1); -extern int D_80189EC8; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern int D_801D2F58; -extern u16 D_801D2F68; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_80189F00; /* holds a pointer value (*(u16**)&D_80189F00) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_80189F14[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_80189F68; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_80189F6C[])(void); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_80189FB0; -extern u8 D_80189FF4; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_80138C30(void *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018A038[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018A0B0, D_8018A0B2, D_8018A0B4, D_8018A0B6, D_8018A0B8, D_8018A0BA; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* 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 */ -extern s32 D_801D2FD0; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801D2FD4; -extern s8 D_801D2FD5; -extern void func_8013C9C4(void * arg0); -extern s32 D_801D2FF4; -extern s32 D_801D2FE8; -extern s32 D_801D2FEC; -extern s32 D_801D2FF8; -extern void func_8013CABC(void); -extern s32 D_801D2FF0; -extern void func_8013CAE8(void); -extern s32 D_801D3020; -extern s32 D_801D3024; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801D3000; -extern s32 D_801D3004; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern u8 D_801D47DA; -extern u8 D_801D484E; -extern u8 D_801D4702; -extern u8 D_801D47BC; -extern u8 D_801D46E0; -extern u8 D_801D4701; -extern s32 D_801D47C0; -extern void func_8013D330(void); -extern void *D_801D2FD8; -extern void *D_801D2FDC; -extern void *D_801D2FE0; -extern s32 D_801D3008; -extern s32 D_801D300C; -extern s32 D_801D3010; -extern s32 D_801D4734[]; -extern u8 D_8018A1A8[]; -extern u8 D_8018A250[]; -extern u8 D_8018A100[]; -extern u8 D_8018A1FC[]; -extern u8 D_8018A27C[]; -extern u8 D_8018A154[]; -extern void func_8013D53C(); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801D2FE4; -extern s32 D_801D3014; -extern s32 D_801D3018; -extern s32 D_801D301C; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801D2FFC; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018AD08; -extern s32 D_80115188; -extern s16 D_8018ACE0; -extern s16 D_8018ACE2; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018ACE4; -extern void func_8013EB7C(void); -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -/* ==== end §8b carried decl layer ==== */ - -/* func_8013FFD8 — 213 ins, double jump-table, per-location family (134 members). */ - -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); - -extern short D_80115128; - -s32 func_8013FFD8(s16 arg0, s32 arg1, s32 *arg2) { - - extern int D_8018AA04; - extern u8 D_8018AA1C[]; - extern u8 D_8018AA28[]; - extern u8 D_8018AA2F[]; - extern int *D_8018AA30[]; - extern s32 D_8018A958[]; - extern u8 D_8018A970; - extern char *D_8018A92C; - extern u8 D_8018A940[]; - extern s32 D_8018A9B0; - extern s32 D_8018A9B4[]; - extern u8 *D_8018A9C0; - extern s32 D_8010F3C4[]; - extern s32 D_8010EDE8[]; - extern u8 D_80115143; - extern void * D_801D3034; - extern void * D_801D3030; - s32 ret; - - *arg2 = 0x808080; - ret = 0; - - switch (arg0) { /* jtbl_801D8898 */ - case 0: { - s16 s0 = (s16) arg1; - if (s0 < 6) { - if ((((s32 (*)(u8))func_80029178)(((u8 *)&D_8018AA04)[s0]) & 0xFF) == 0) { - return 1; - } - ret = D_8018A958[s0]; - } - break; - } - case 1: { - s16 v1 = (s16) arg1; - if (v1 < 4) { - ret = ((s32 *)&D_8018A970)[v1]; - } - break; - } - case 2: - switch ((*(s16 *)&D_80115128)) { /* jtbl_801D88B8 */ - case 0: { - s16 v1 = (s16) arg1; - if (v1 < 5) { - ret = ((s32 *)&D_8018A92C)[v1]; - } - break; - } - case 1: { - s16 v1 = (s16) arg1; - if (v1 < 0xC) { - s32 v3 = ((s32 (*)(u8, s32))func_800291B4)(D_8018AA1C[v1], arg1) & 0xFF; - if (v3 == 0) { - return 1; - } - ret = D_8010EDE8[v3 * 3]; - } - break; - } - case 2: { - s16 s0 = (s16) arg1; - if (s0 < 6) { - if ((((s32 (*)(u8))func_80029178)((*(u8 * *)&D_801D3034)[s0]) & 0xFF) == 0) { - return 1; - } - ret = (*(s32 * *)&D_801D3030)[s0]; - } - break; - } - case 3: { - s16 s0 = (s16) arg1; - if (s0 < 6) { - if ((((s32 (*)(u8))func_80029178)(D_8018AA28[s0]) & 0xFF) == 0) { - return 1; - } - ret = ((s32 *)D_8018A940)[s0]; - } - break; - } - case 4: { - s16 v1 = (s16) arg1; - if (v1 < 5) { - ret = ((s32 *)&D_8018A9C0)[v1]; - } - break; - } - } - break; - case 3: { - s16 t = (s16) arg1; - if (t <= 0) { - s16 s0 = t + D_80115143; - if (s0 != 0) { - if ((((s32 (*)(u8, s32))func_800291B4)(D_8018AA2F[s0], arg1) & 0xFF) == 0) { - *arg2 = 0x804040; - } - ret = D_8010F3C4[s0]; - } else { - ret = D_8018A9B0; - } - } - break; - } - case 5: { - s16 v1 = (s16) arg1; - if (v1 < 3) { - ret = D_8018A9B4[v1]; - } - break; - } - case 6: { - s16 s0 = (s16) arg1; - if (s0 < 0x28) { - s32 idx; - if ((((s32 (*)(u8, s32))func_800291B4)(((u8 *)D_8018AA30)[s0], arg1) & 0xFF) == 0) { - *arg2 = 0x804040; - } - idx = s0 + 1; - ret = D_8010F3C4[idx]; - } - break; - } - case 7: { - s16 v1 = (s16) arg1; - if (v1 < 5) { - ret = ((s32 *)&D_8018A9C0)[v1]; - } - break; - } - } - return ret; -} - - -extern short D_80115128; -extern u8 D_8018AA04[]; -extern u8 D_8018AA1C[]; -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); - - - - -/* indexed data arrays (overlay) */ - - -/* address-return symbols (main RAM) */ - -s32 func_8014032C(s32 param_1, s32 param_2) { - extern int (*D_8018AD4C[])(void); - extern int (*D_8018AD3C[])(void); - extern void * D_8018AA58[]; - extern void * D_8018AA88[]; - extern void * D_8018AA98[]; - extern void * D_8018AA70[]; - extern u8 D_8018AA28[]; - extern void * D_8018AAB0[]; - extern void * D_8018AAC8[]; - extern void * D_8018AADC[]; - extern u8 D_8018AA2F[]; - extern u8 * D_801D3034; - extern u8 D_801117EC[]; - extern u8 D_801117B4[]; - extern u8 D_80112BC8[]; - extern u8 D_80112B58[]; - extern u8 D_80112BA8[]; - extern u8 D_80112B90[]; - - - int cVar1; - unsigned int uVar3; - void *result; - - result = D_801117EC; - switch (((short)param_1)) { - case 0: - if (((s32(*)(s32))func_80029178)(D_8018AA04[((short)param_2)]) & 0xFF) { - result = D_8018AA58[((short)param_2)]; - } - break; - case 1: - result = D_8018AA88[((short)param_2)]; - break; - case 2: - switch ((*(s16*)&D_80115128)) { - case 0: - if (D_8018AD4C[((short)param_2)]() == 0) { - ((short)param_2) = 5; - } else if (D_8018AD3C[((short)param_2)]() != 0) { - ((short)param_2) = 4; - } - result = D_8018AA98[((short)param_2)]; - break; - case 1: - goto case5; - case 2: - if (((s32(*)(s32))func_80029178)(D_801D3034[((short)param_2)]) & 0xFF) { - if (((short)param_2) == 5 && (((s32(*)(s32))func_80029178)(0x1C) & 0xFF)) { - result = D_801117B4; - } else { - result = D_8018AA70[((short)param_2)]; - } - } - break; - case 3: - if (((s32(*)(s32))func_80029178)(D_8018AA28[((short)param_2)]) & 0xFF) { - result = D_8018AAB0[((short)param_2)]; - } - break; - case 4: - result = D_8018AAC8[((short)param_2)]; - break; - } - break; - case 5: - case5: - uVar3 = ((s32(*)(s32))func_800291B4)(D_8018AA1C[((short)param_2)]) & 0xFF; - if (uVar3 != 0) { - result = D_8018AADC[uVar3]; - } - break; - case 3: - if (((short)param_2) != 0) { - cVar1 = ((s32(*)(s32))func_800291B4)(D_8018AA2F[((short)param_2)]) & 0xFF; - if (cVar1 == 0) { - result = D_80112B58; - } else { - result = D_80112BA8; - if (cVar1 == 1) { - result = D_80112B90; - } - } - } else { - result = D_80112BC8; - } - break; - case 6: - case 7: - default: - result = 0; - break; - } - return result; -} diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80140608.c b/src/ov_SC03_119/ov_SC03_119_jr_80140608.c deleted file mode 100644 index 0146dacbd..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_80140608.c +++ /dev/null @@ -1,2526 +0,0 @@ -#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. */ - /* 8-byte element, cmd @ +4 */ - /* list ptr @ +0x90 */ - /* size 8, alignment 1 -> unaligned copy */ - /* 0x5C copy unit, align 4 */ - /* -> frame 0xA0 (gcc adds 0x10 for the struct-copy) */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern s32 D_801D47E0; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern struct BigCopy D_80126DB8;/* canonical (engine_core macro): struct BigCopy — (s32*)& at use */ -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern struct BigCopy D_80126DB8; -extern struct BigCopy D_80114EE8; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_80189CE4[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_80189CF8[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_80189E38[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_80189E90[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_80189ED8[])(void); -extern void func_80131F28(void *a0); -extern void (*D_80189EE0[])(void); -extern void func_80131F64(void *a0); -extern void (*D_80189EE8[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_80189EF0[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_80189E98; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_80189EB8; -extern void func_801321B0(int param_1); -extern int D_80189EC8; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern int D_801D2F58; -extern u16 D_801D2F68; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_80189F00; /* holds a pointer value (*(u16**)&D_80189F00) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_80189F14[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern s32 D_80127548[]; -extern int D_80189F68; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(s32 a0, s32 a1, s32 a2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_80189F6C[])(void); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_80189FB0; -extern u8 D_80189FF4; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_80138C30(void *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018A038[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018A0B0, D_8018A0B2, D_8018A0B4, D_8018A0B6, D_8018A0B8, D_8018A0BA; -extern u16 D_800D45F6; -extern s32 func_8016EC0C(s32 a0, s32 a1); /* match-first, arity 2 */ -extern s32 func_8012B4B8(s32 a0); /* 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 */ -extern s32 D_801D2FD0; -extern s32 D_801269D4; -extern s32 D_801269C8; -extern M2C_UNK D_80062BC0; -extern s8 D_801D2FD4; -extern s8 D_801D2FD5; -extern void func_8013C9C4(void * arg0); -extern s32 D_801D2FF4; -extern s32 D_801D2FE8; -extern s32 D_801D2FEC; -extern s32 D_801D2FF8; -extern void func_8013CABC(void); -extern s32 D_801D2FF0; -extern void func_8013CAE8(void); -extern s32 D_801D3020; -extern s32 D_801D3024; -extern void func_8013CB20(void); -extern void func_8013CB5C(void); -extern void func_8013CF68(); -extern s32 D_801D3000; -extern s32 D_801D3004; -extern void func_8013D9B0(void); -extern void func_8013D064(void); -extern s32 func_8013D13C(void); -extern void func_8013D164(void); -extern u8 D_801D47DA; -extern u8 D_801D484E; -extern u8 D_801D4702; -extern u8 D_801D47BC; -extern u8 D_801D46E0; -extern u8 D_801D4701; -extern s32 D_801D47C0; -extern void func_8013D330(void); -extern void *D_801D2FD8; -extern void *D_801D2FDC; -extern void *D_801D2FE0; -extern s32 D_801D3008; -extern s32 D_801D300C; -extern s32 D_801D3010; -extern s32 D_801D4734[]; -extern u8 D_8018A1A8[]; -extern u8 D_8018A250[]; -extern u8 D_8018A100[]; -extern u8 D_8018A1FC[]; -extern u8 D_8018A27C[]; -extern u8 D_8018A154[]; -extern void func_8013D53C(); -extern void func_8013DD68(void); -extern void func_8013D8FC(void); -extern void func_8013CF68(void); -extern void func_8013D3D4(int param_1, int param_2); -extern s16 *D_801D2FE4; -extern s32 D_801D3014; -extern s32 D_801D3018; -extern s32 D_801D301C; -extern void func_8013DBE4(int param_1); -extern void func_8013DD68(); -extern s32 D_801D2FFC; -extern s32 func_8013E054(void); -extern int SquareRoot12(int a0); -extern int func_8013E064(s16 *a0, s16 *a1); -extern int func_8013E0FC(s16 *a0, s16 *a1); -extern int func_8013E194(s16 *a0, s16 *a1); -extern void Square12(s32 *a0, s32 *a1); -extern s32 func_8013E22C(struct VecA *a0, struct VecB *a1); -extern s32 func_8013E298(s16 *a0); -extern int func_8013E2C4(short *a0); -extern void *D_801274CC; -extern s32 func_8013E410(void); -extern s32 func_8013E448(s32 a0); -extern void func_8013E370(void); -extern s32 (*D_801274D0)(s32); -extern s32 D_801274D8; -extern s32 D_801274DC; -extern s32 func_8013E448(s32 param_1); -extern s32 func_8012C750(s32 a0); -extern u8 *D_801274C8; -extern void func_8013E4B4(void); -extern void func_800D24A0(s32 a0); -extern void func_80141788(void); -extern void *D_8011DB24; -extern s32 func_800D0EC4(void); -extern void func_80141874(void); -extern u8 D_800B9A15; -extern unsigned char D_800B9A13; -extern u16 D_80115110; -extern unsigned short D_80115112; -extern void func_8013E588(void * _arg0); -extern void func_8013E5E8(void); -extern u8 D_80078EC0; -extern u16 D_8011511A; -extern u16 D_80115124; -extern u8 D_80115148[]; -extern u8 D_80115140[]; -extern s32 D_8018AD08; -extern s32 D_80115188; -extern s16 D_8018ACE0; -extern s16 D_8018ACE2; -extern void func_8013E83C(void); -extern void func_8013E6AC(void); -extern void func_800D24A0(s32 arg); -extern void func_8013E814(void); -extern void func_8013E83C(); -extern void func_8013E958(); -extern s32 func_80141C50(void); -extern void func_8013F244(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern void func_8013E958(void); -extern u8 D_801151C8[]; -extern s32 D_801151D0; -extern u16 D_8011511E; -extern s32 D_80115130; -extern s16 D_8011514C; -extern void func_8013EA54(void); -extern s32 func_8013F350(void); /* §30#2 widened: def returns live $v0; callers discard */ -extern s16 func_8014168C(s16 a0); -extern s32 func_8014032C(s32 a0, s32 a1); -extern unsigned char *func_80141CA4(void); -extern short D_80115128; -extern s16 D_8011512A; -extern unsigned char D_8018ACE4; -extern void func_8013EB7C(void); -extern u16 D_80115112; -extern void func_8013ED6C(void); -extern s32 func_8013EE10(); -extern unsigned short D_80115118; -extern void func_8013F138(void); -extern void func_800D2624(void); -extern unsigned short D_80115114; -extern void func_8013F1BC(void); -extern void func_80141C0C(s32); -extern s32 func_80029178(s32 arg); -extern s32 func_800291B4(s32 arg); -extern s32 func_8013FFD8(s16 arg0, s32 arg1, s32 *arg2); -/* ==== end §8b carried decl layer ==== */ - -#include "common.h" - -extern u8 D_80115148[]; -extern u16 D_8011511E; -extern u8 D_80062BDC; - -extern s32 func_80028D58(void); -extern void func_80028D78(s32 a0); -extern void func_80019064(void *a0); -extern s32 func_80028DE0(void); -extern void func_80028E00(s32 a0); -extern s32 func_80028FBC(void); -extern void func_80028FDC(s32 a0); -extern s32 func_80029000(void); -extern void func_80029020(s32 a0); -extern s32 func_80028D9C(void); -extern void func_80028DBC(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); - -s32 func_80140608(s32 a0) { - s16 t; - register s32 iVar2 __asm__("$2"); - register s32 zr __asm__("$0"); - s32 uVar3; - u32 uVar4; - s32 uVar5 = 1; - - switch (D_80115148[(s16)a0 * 2]) { - case 0: - t = func_80028D58() ^ 1; - func_80028D78(t); - if (t != 0) { - return uVar5; - } - func_80019064(&D_80062BDC); - return uVar5; - case 1: - func_80028E00((s16)(func_80028DE0() ^ 1)); - return uVar5; - case 2: - iVar2 = func_80028FBC(); - if (D_8011511E & 0x8000) { - iVar2 = iVar2 - 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 < 0) { - uVar4 = 0; - uVar5 = 0; - } - } else { - iVar2 = iVar2 + 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 >= 8) { - uVar4 = 7; - uVar5 = 0; - } - } - func_80028FDC((s16)uVar4); - func_8002D4C8(0x21, uVar4 & 0xFFFF); - goto ret; - case 3: - iVar2 = func_80029000(); - if (D_8011511E & 0x8000) { - iVar2 = iVar2 - 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 < 0) { - uVar4 = 0; - uVar5 = 0; - } - } else { - iVar2 = iVar2 + 1; - uVar4 = iVar2 + zr; - if ((s16)iVar2 >= 8) { - uVar4 = 7; - uVar5 = 0; - } - } - func_80029020((s16)uVar4); - func_8002D4C8(0x22, uVar4 & 0xFFFF); - goto ret; - case 4: - t = func_80028D9C() ^ 1; - func_80028DBC(t); - uVar3 = 0xB; - if (t == 0) { - uVar3 = 0xC; - } - func_8002D4C8(uVar3, 0); - goto ret; - default: - goto ret; - } -ret: - return uVar5; -} - - - -// @class: iv-combine -// @stuck: none — MATCH (89 ins). Sequential struct fields fed from a running source -// pointer compile to fixed offsets when written base[0..n]; the target advances -// the pointer, so use post-increment `*p++` for EVERY field (gcc drops the dead -// final increment, yielding the "increment N-2 then offset 0/2" tail). - -extern u8 *D_8018A9C0; -extern u8 *D_8018A9C4; -extern u8 *D_8018A9C8; -extern u8 *D_8018A9CC; -extern u8 *D_8018A9D0; -extern u16 *D_8018A9D4[]; -extern u16 *D_8018A9DC[]; -extern u16 *D_8018A9FC[]; - -extern s32 func_80028D58(void); -extern s32 func_80028DE0(void); -extern s32 func_80028FBC(void); -extern s32 func_80029000(void); -extern s32 func_80028D9C(void); - -void func_801407F4(void) -{ - u8 *puVar1; - s32 iVar2; - u16 *puVar3; - - puVar1 = D_8018A9C0; - iVar2 = func_80028D58(); - puVar3 = D_8018A9D4[iVar2]; - *(s16 *)(puVar1 + 0x16) = *puVar3++; - *(s16 *)(puVar1 + 0x18) = *puVar3++; - *(s16 *)(puVar1 + 0x1a) = *puVar3++; - - puVar1 = D_8018A9C4; - iVar2 = func_80028DE0(); - puVar3 = D_8018A9D4[iVar2]; - *(s16 *)(puVar1 + 0x16) = *puVar3++; - *(s16 *)(puVar1 + 0x18) = *puVar3++; - *(s16 *)(puVar1 + 0x1a) = *puVar3++; - - iVar2 = func_80028FBC(); - *(s16 *)(D_8018A9C8 + 0x18) = *D_8018A9DC[iVar2]; - iVar2 = func_80029000(); - *(s16 *)(D_8018A9CC + 0x18) = *D_8018A9DC[iVar2]; - - puVar1 = D_8018A9D0; - iVar2 = func_80028D9C(); - puVar3 = D_8018A9FC[iVar2]; - *(s16 *)(puVar1 + 0x12) = *puVar3++; - *(s16 *)(puVar1 + 0x14) = *puVar3++; - *(s16 *)(puVar1 + 0x16) = *puVar3++; - *(s16 *)(puVar1 + 0x18) = *puVar3++; - *(s16 *)(puVar1 + 0x1a) = *puVar3++; - *(s16 *)(puVar1 + 0x1c) = *puVar3++; -} - - - - - - - - - - - - - - - - - - - - - -extern s16 func_8014168C(s16); -extern s32 *func_80140D68(s32 *, Prim4 *, s32, s32, s32); -/* func_80140958 -- MATCH (260 ins), verified by - * python3 tools/match_one.py func_80140958 --c .run/near6/wave23/func_80140958.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077 - * - * Three levers took the seed from 6 -> 0 (see the numbered notes in the inner block): - * [L1] `m == i` (not `m == 3`) -- keeps b[0] a RUNTIME value; `m == 3` let gcc - * const-fold it and materialise `li a3,3` / `li t3,12` instead of - * `addu a3,v1,zero` / `sll t3,v1,2`. - * [L2] one dead `__asm__ volatile("" :: "r"(j))` -- +1 weighted REG_N_REFS on j so - * global.c:594 allocno_compare ranks j above k (j -> $a2, k -> $a3). - * [L3] `t3v = m * 4` as an EXPLICIT preheader statement (instead of letting loop.c - * hoist D_8011516A[m]'s index) -- gives it a LUID *below* the three constant - * assignments, which is what puts `move a3,v1 / sll t3,v1,2` ahead of them in - * sched1's backward LUID tie-break. - */ -s32 *func_80140958(ot, i, n) -s32 *ot; -s16 i; -s16 n; -{ - - extern s16 D_8011514E; - extern u8 D_80115158[]; - extern Hw4 D_8011516A[]; - extern Prim4 D_8018A7D8[]; - extern Prim4 *D_8018A8CC[]; - extern u8 D_80115143; - extern Prim4 D_8018A788[]; - extern s16 D_8018ACE8[]; - extern s16 D_8018ACF8[]; - extern u16 D_8018A808; - extern u16 D_8018A80A; - extern Env_80140958 D_800AE7BC[]; - Prim4 *p; - s16 t; - s32 c3; -register u16 *a __asm__("$20"); -register u16 *b __asm__("$21"); -register u16 *c __asm__("$23"); -register u16 *e __asm__("$22"); -register u16 *pb __asm__("$10"); -register u32 m24 __asm__("$8"); -register u32 mhi __asm__("$9"); -register s32 eight __asm__("$2"); - if (i < n) - { - c3 = 3; - a = &D_80115110; - b = a + 5; - c = a + 3; - e = &D_8018A80A; - do - { - if (((a[0] == 0) && (a[1] != c3)) && (a[1] < 6)) - { - if (i == a[5]) - { - ot = func_80140D68(ot, &D_8018A788[i], i, D_8018ACE8[a[3] & 7], 0); - } - } - else - { - p = D_8018A8CC[i]; - if (((p != 0) && (i == b[0])) && (i != 6)) - { - if ((i == 2) && ((*((s16 *) (b + 7))) != 0)) - { - p = D_8018A7D8; - } - if (i != c3) - { - t = ((s32 (*)(s16)) func_8014168C)(i) * 2; - } - else - { - t = ((*((u8 *) (&D_8011514E))) - D_80115143) * 2; - } - ot = func_80140D68(ot, p, i, D_8018ACF8[c[0] & 7], t); - if (((i == 2) && ((*((s16 *) (c + 9))) == 1)) && ((*((s16 *) (c + 12))) != 0)) - { - ot = func_80140D68(ot, p, 2, 8, ((*((s16 *) (c + 12))) & 0xF) * 2); - } - } - } - if (i == c3) - { - s32 m = b[0]; - /* [L1] compare against `i`, NOT against the literal 3. */ - if ((m == i) && ((b[-2] & 8) != 0)) - { - s16 j; - s32 k; - s32 t3v; - u8 *q = ((u8 *) ot) + 0x14; - s16 y; - j = 0; - k = m; - t3v = m * 4; /* [L3] explicit, must sit before the 3 constants */ - pb = (u16 *) (&D_800B9A02); - m24 = 0xFFFFFF; - mhi = 0xFF000000; - for (; j < 2; j++) - { - if (j == 0) - { - if (D_80115140[k] == 0) - { - continue; - } - q[-7] = 0x30; - y = (*e) - 4; - } - else - { - s32 k2 = k * 2; - if ((((s8 *) D_80115158)[k2] - ((s8 *) D_80115140)[k]) < 2) - { - continue; - } - q[-7] = 0x38; - y = (*e) + 3; - } - *((s16 *) (q - 10)) = y; -__asm__("" ::: "memory"); - *((u32 *) ot) = 0x4000000; - q[-8] = 0x78; - *((u32 *) (q - 0x10)) = 0x64808080; - *((s16 *) (q - 6)) = 0x4056; - *((s16 *) (q - 0xC)) = (D_8018A808 + ((u16) *((u16 *) (((u8 *) D_8011516A) + t3v)))) + 0x4A; - eight = 8; - *((s16 *) (q - 2)) = eight; - *((s16 *) (q - 4)) = eight; - *((u32 *) ot) = ((*((u32 *) ot)) & mhi) | (D_800AE7BC[*pb].ot[2] & m24); - { -register u32 *op __asm__("$4"); - op = D_800AE7BC[*pb].ot; - op[2] = (op[2] & mhi) | (((u32) ot) & m24); - } - q += 0x14; - ot += 5; - __asm__ volatile("" :: "r"(j)); /* [L2] zero code, +1 ref on j */ - } - - } - } - i = i + 1; - } - while (i < n); - } - return ot; -} - - - - - -s32 *func_80140D68(out, src, idx, dx, ofs) - s32 *out; - Prim4 *src; /* conformed to the fleet prototype; used only as (s32)src */ - s16 idx; - s32 dx; - s16 ofs; -{ - - extern Hw4 D_8011516A[]; - /* §94 TYPE-CARRY: this typedef and its extern MUST be BLOCK-scope. extract_unit carries - file-scope externs and #defines into each remapped sibling (Phase-27 _carry_macros) but - NOT file-scope typedefs — so a file-scope Env_800D29F8 is silently dropped from every - sibling and the family sweeps 0/137. Body-local typedefs DO survive (PTag_80140D68 below - is the proof), so it lives here. */ - /* 0x14 stride */ - extern Env_800D29F8 D_800AE7BC[]; - - - register u32 mhi __asm__("$8"); - s16 *q; - s32 a; - - out[0] = 0x04000000; - *((u8 *)out + 0xC) = 0x70; - *((u8 *)out + 0xD) = 0x10; - mhi = 0x64808080; - out[1] = mhi; - *(u16 *)((u8 *)out + 0xE) = 0x4056; - - dx -= 0xD; - q = (s16 *)(ofs * 2 + (s32)src); - a = (u16)q[0] + (u16)D_8011516A[idx].x; - a += dx; - *(s16 *)((u8 *)out + 0x8) = a; - *(s16 *)((u8 *)out + 0xA) = q[1] - 4; - *(s16 *)((u8 *)out + 0x12) = 0x10; - *(s16 *)((u8 *)out + 0x10) = 0x10; - - ((PTag_80140D68 *)out)->addr = ((PTag_80140D68 *)((D_800AE7BC[*(volatile u16 *)&D_800B9A02].ot) + 2))->addr; - ((PTag_80140D68 *)((D_800AE7BC[*(volatile u16 *)&D_800B9A02].ot) + 2))->addr = (u32)out; - - return out + 5; -} - - - -// @class: struct -// @stuck: none — MATCH - -extern unsigned char D_80078E7F; -extern unsigned char D_80078E7E; -extern unsigned char D_80078E7D; -extern M2C_UNK D_8018A8FC; - -extern int func_800D2CA8(int, int); -extern void func_800D2D10(int, int, void *, int); - -void func_80140E6C(void) { - void *puVar1; - unsigned int uVar2; - unsigned int uVar3; - unsigned int uVar4; - - puVar1 = (*(void * *)&D_8018A8FC); - uVar2 = func_800D2CA8(D_80078E7F, 0x18); - uVar3 = func_800D2CA8(D_80078E7E, 0xc); - uVar4 = func_800D2CA8(D_80078E7D, 0); - func_800D2D10(uVar2 | 0xb00000 | uVar3 | 0xb00 | uVar4, 8, puVar1, 0); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (128/128 ins, match_one confirmed) - -extern short D_80115128; -extern u8 D_8018A90C; -extern char *D_8018A92C; -extern char *D_8018A930; -extern char *D_8018A934; -extern char *D_8018A938; -extern char *D_8018A93C; - -extern int func_80029FE4(void); -extern int func_800D2CA8(int, int); -extern void func_800D2D10(int, int, void *, int); -extern char *func_8002AAB4(void); -extern char *strcpy(char *, const char *); -extern int func_8002A26C(void); -extern int func_8002A2B0(void); -extern int func_8002A4B8(void); -extern s32 func_8002A4FC(s32 a0); -extern int func_8002A998(void); -extern int func_8002A9DC(void); -extern int func_8002A728(void); -extern int func_8002A76C(void); -extern int func_80029FD4(void); - -void func_80140F00(void) { - char *p; - int r; - - if (D_80115128 == 0) { - p = (*(char * *)&D_8018A90C); - r = func_800D2CA8(func_80029FE4() + 1, 0x18); - func_800D2D10(r, 2, p + 4, 1); - strcpy(p + 0xA, func_8002AAB4()); - - p = D_8018A92C; - r = func_800D2CA8(func_8002A26C() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(func_8002A2B0(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018A930; - r = func_800D2CA8(func_8002A4B8() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(((int (*)(void))func_8002A4FC)(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018A934; - r = func_800D2CA8(func_8002A998() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(func_8002A9DC(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018A938; - r = func_800D2CA8(func_8002A728() + 1, 0x18); - func_800D2D10(r, 2, p + 0x12, 1); - r = func_800D2CA8(func_8002A76C(), 0x18); - func_800D2D10(r, 2, p + 0x22, -1); - - p = D_8018A93C; - r = func_800D2CA8(func_80029FD4(), 4); - func_800D2D10(r, 7, p + 0x18, -1); - } -} - - - -// @class: other -// @stuck: none — MATCH - -extern short D_80115128; -extern unsigned short D_80115172; -extern unsigned short D_8018A7C6; -extern unsigned short D_8018A7CA; -extern unsigned short D_8018A7CE; -extern unsigned short D_8018A7D2; - -extern s32 func_8002A1B4(void); -extern short func_8002A28C(void); -extern short func_8002A27C(void); -extern s32 func_8002A400(void); -extern short func_8002A4D8(void); -extern short func_8002A4C8(void); -extern s32 func_8002A8E0(void); -extern short func_8002A9B8(void); -extern short func_8002A9A8(void); -extern s32 func_8002A670(void); -extern short func_8002A748(void); -extern short func_8002A738(void); -extern int func_801412A8(int, int, int, int, int, int); - -int func_80141100(int param_1) -{ - short sVar1; - int iVar7; - - if (D_80115128 == 0) { - iVar7 = D_80115172 + 0x31; - sVar1 = D_8018A7C6; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A1B4)(), func_8002A28C(), func_8002A27C(), (short)iVar7, (int)sVar1); - sVar1 = D_8018A7CA; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A400)(), func_8002A4D8(), func_8002A4C8(), (short)iVar7, (int)sVar1); - sVar1 = D_8018A7CE; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A8E0)(), func_8002A9B8(), func_8002A9A8(), (short)iVar7, (int)sVar1); - sVar1 = D_8018A7D2; - param_1 = func_801412A8(param_1, ((short (*)(void))func_8002A670)(), func_8002A748(), func_8002A738(), (short)iVar7, (int)sVar1); - } - return param_1; -} - - -#define addPrim_1412A8(ot, p) (setaddr_1412A8(p, getaddr_1412A8(ot)), setaddr_1412A8(ot, p)) -/* §37/§124 def-side asm-label alias (the S40 class lever). The TU declares - * extern int func_801412A8(int, int, int, int, int, int); (ov_SC01_077.c:2720) - * and its callers USE the return value (`param_1 = func_801412A8(...)`, :2730-:2736), while the - * byte-true definition is `Prim_1412A8 *(Prim_1412A8 *, int, int, int, u16, u16)`. The u16 params - * cannot agree with an `int` prototype (C default argument promotion) and the `()` no-prototype - * escape is illegal precisely when a param promotes -- so NEITHER side can move. Giving the - * DEFINITION a private C identifier bound to the emitted symbol by a GNU asm label decouples - * them: the TU's declaration continues to govern the CALL SITES (their codegen is untouched -- - * which is what match_one could not see, since it only compiles this function), and the - * definition keeps its byte-true signature. Zero blast radius. */ -DEFINE_func_801412A8() /* dedup: shared engine-core @0x801412A8 (src/shared) */ - - -DEFINE_func_801415C0() /* dedup: shared engine-core @0x801415C0 (src/shared) */ - -DEFINE_func_8014168C() /* dedup: shared engine-core @0x8014168C (src/shared) */ - -DEFINE_func_801416D4() /* dedup: shared engine-core @0x801416D4 (src/shared) */ - - -extern unsigned short D_80115112; -extern void (*D_8018AD5C[])(void); - -void func_80141788(void) -{ - D_8018AD5C[D_80115112](); -} - - -DEFINE_func_801417C4() /* dedup: shared engine-core @0x801417C4 (src/shared) */ - -DEFINE_func_801417F8() /* dedup: shared engine-core @0x801417F8 (src/shared) */ - - -extern void func_801754A8(void); -extern s32 func_80014ED4(s32); -extern s32 func_80015018(s32); -extern void func_80141C04(void); - -extern u16 D_8011511E; -extern unsigned short D_80115112; - -void func_80141874(void) { - - extern u16 D_8011511C; - extern u16 D_80115116; - extern void (*D_8018AD68[])(void); - register void (*fp)(void) __asm__("$2"); /* pin fn-ptr to $v0 → store retires early */ - func_801754A8(); - D_8011511E = func_80014ED4(0); - D_8011511C = func_80015018(0); - fp = D_8018AD68[D_80115112]; - fp(); - func_80141C04(); - D_80115116 += 1; -} - - - - - - - - - -extern u16 D_80115110; -extern u16 D_80115112; -extern unsigned short D_80115118; -extern volatile u16 D_8011511A; -extern s16 D_80115128; -extern s32 D_80115130; -extern s16 D_8018ACE0; -extern s16 D_8018ACE2; - -extern void func_800D24A0(s32 a0); -extern s32 func_80029178(s32 a0); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_80141C0C(s32 a0); - -void func_801418F8(void) -{ - - extern s16 D_8011512E; - extern u8 D_80115158[]; - extern s16 D_8011515A; - extern u8 D_8011515C; - extern s16 D_8011515E; - extern s16 D_80115162; - extern s16 D_80115166; - extern u8 D_8018A980; - extern u8 D_8018A998; - extern u8 D_8018AA0C; - extern u8 D_8018AA14; - extern void *D_801D3030; - extern void *D_801D3034; - u16 t; - - func_800D24A0(1); - D_8011511A = 2; - t = D_8011511A; - (*(s16 *)&D_80115118) = 0; - D_80115130 = 0; - if (t >= 4) { - D_8011511A = t - 3; - } - (*(s16 *)D_80115158) = 0x106; - if ((func_80029178(0x1C) & 0xFF) == 0) { - D_801D3030 = &D_8018A980; - D_801D3034 = &D_8018AA0C; - } else { - D_801D3030 = &D_8018A998; - D_801D3034 = &D_8018AA14; - } - D_8011515A = 0x104; - (*(s16 *)&D_8011515C) = 0x104; - D_8011515E = 0x129; - D_80115162 = 0x103; - D_80115166 = 0x105; - D_80115128 = 0; - D_8011512E = 0; - if (D_80115110 == 3) { - func_8002D4C8(0x46E, 0); - } else { - func_80141C0C(0); - } - D_80115128 = 1; - D_8018ACE0 = 0xE; - D_8018ACE2 = 3; - D_80115112 = D_80115112 + 1; -} - - -/* func_80141A60 @ 0x80141A60 (0x130, 76 ins) -- ov_SC01_000 shared engine fn. - * - * ((s32 *)D_801151C8)[]: word (s32) table indexed by (u16)(*(u16 *)&D_800B9A02) -> D_801151D0. - * D_8011511A: u16, unsigned compare vs 4 (sltiu). - * (*(u8 *)&D_8011514C)/4D/5C: u8 fields; a1 = (s16)((*(u8 *)&D_8011514C) + D_8011514D*D_8011515C). - * D_80115130: cached s32 handle. D_8018ACE4: address-taken arg to func_801376E8. - * D_80115116: s16 <- 0xfff8 (ori, positive const). D_80115112: u16 counter. - */ - -extern s16 D_800B9A02; -extern u8 D_801151C8[]; -extern s32 D_801151D0; -/* D_8011511A: this TU declares it volatile at file scope -> a direct read reloads on every - * use; the cast-at-use *(u16 *)&D_8011511A strips volatile so gcc CSEs the three reads into - * one load (matches the single-load target). */ -extern s16 D_8011514C; -extern s32 D_80115130; -extern u8 D_8018ACE4; -extern u16 D_80115112; - -extern s32 func_8013F350(void); -extern void func_8013FAF8(s16 a0, s16 a1); -extern s32 func_8014032C(s32 a0, s32 a1); -extern void func_80139954(void); -extern void func_801376E8(int a0, int a1); -extern void func_80137B80(void); -extern s32 func_800D0EC4(void); - -void func_80141A60(void) -{ - - extern u8 D_8011514D; - extern u8 D_8011515C; - extern u16 D_80115116; - s32 iVar1; - s32 pad[2]; - (void)&pad; /* §36#3 frame-pad induction: force frame 0x20 (vs 0x18) */ - - D_801151D0 = ((s32 *)D_801151C8)[(*(u16 *)&D_800B9A02)]; - func_8013F350(); - if ((*(u16 *)&D_8011511A) >= 4) { - func_8013FAF8((*(u16 *)&D_8011511A), (*(u16 *)&D_8011511A) + 1); - } - func_8013FAF8(2, 3); - iVar1 = func_8014032C(2, (s16)((*(u8 *)&D_8011514C) + D_8011514D * D_8011515C)); - if (iVar1 != 0 && iVar1 != D_80115130) { - D_80115130 = iVar1; - func_80139954(); - func_801376E8(iVar1, (int)&D_8018ACE4); - } - func_80137B80(); - iVar1 = func_800D0EC4(); - if (iVar1 != 0) { - D_80115116 = 0xfff8; - D_80115112 = D_80115112 + 1; - } -} - - - - - - - - - - - - - - - - - - -DEFINE_func_80141B90() /* dedup: shared engine-core @0x80141B90 (src/shared) */ - -DEFINE_func_80141C04() /* dedup: shared engine-core @0x80141C04 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (indexed u16 global: (s16)param_1*2 + D_80115110, *2 array stride) - -extern u16 D_80115110; -extern u8 D_8018ACBC; -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80141C0C(s32 param_1) -{ - func_8002D4C8(*(u16 *)(&D_8018ACBC + (((param_1 << 16) >> 15) + (u32)D_80115110) * 2), 0); -} - - -DEFINE_func_80141C50() /* dedup: shared engine-core @0x80141C50 (src/shared) */ - -DEFINE_func_80141CA4() /* dedup: shared engine-core @0x80141CA4 (src/shared) */ - -DEFINE_func_80142414() /* dedup: shared engine-core @0x80142414 (src/shared) */ - -DEFINE_func_80142454() /* dedup: shared engine-core @0x80142454 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (58 ins). STRUCT branch reconstruction + 3 levers: (1) §3-T4 branch-polarity -// invert in the ==0 arm so the func_8012C218 cold path sinks to the tail; (2) *(volatile int*) on -// the two extra param_1[0x32] reloads to defeat gcc CSE (gcc reloads via register reuse, not a store); -// (3) param_1[0x7e] pinned to $v1 (register __asm__("$3")) + an input-only scheduling barrier -// __asm__ __volatile__("" : : "r"(a)) on the 0xA read so the pinned load is anchored AFTER it in the -// ==0 arm (matches the load2-reused-as-$v1 ordering). - -extern void func_8012C218(void *a0); - -void func_801424E4(short *param_1) { - - extern void (*D_8018AD8C[])(void); - short sVar1; - int iVar2; - register unsigned short t __asm__("$3"); - - (*D_8018AD8C[(unsigned short)param_1[1]])(); - if (*(unsigned short *)param_1 != 0) { - if (param_1[0x38] != 0) { - iVar2 = *(int *)(param_1 + 0x32); - if (iVar2 == 0) { - return; - } - *(int *)(param_1 + 2) = *(int *)(iVar2 + 4); - t = (unsigned short)param_1[0x7e]; - sVar1 = *(unsigned short *)(iVar2 + 10) + t; - param_1[5] = sVar1; - *(int *)(param_1 + 6) = *(int *)(iVar2 + 0xc); - } else { - unsigned short a; - iVar2 = *(int *)(param_1 + 0x32); - if ((iVar2 != 0) && (*(short *)(iVar2 + 0x36) == param_1[0x7f])) { - *(int *)(param_1 + 2) = *(int *)(iVar2 + 4); - a = *(unsigned short *)(*(volatile int *)(param_1 + 0x32) + 10); - __asm__ __volatile__("" : : "r"(a)); - t = (unsigned short)param_1[0x7e]; - sVar1 = a + t; - iVar2 = *(volatile int *)(param_1 + 0x32); - param_1[5] = sVar1; - *(int *)(param_1 + 6) = *(int *)(iVar2 + 0xc); - return; - } - ((void (*)(short *))func_8012C218)(param_1); - } - } - return; -} - - - -extern void (*D_8018AD9C[])(void); - -void func_801425CC(void *a0) { - D_8018AD9C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: schedule -// @stuck: none — MATCH expected; CAE4 block fallthrough, AD50 block goto-tail - -extern void func_8012C1B8(void); -extern s32 func_8012C1DC(s32 a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012CAE4(void *a0); -extern s32 func_8012AD50(void *a0); -extern s32 D_8018AD80; - -void func_80142608(s32 param_1) -{ - register s32 iVar1 __asm__("$16"); - - if (*(short *)(param_1 + 0x70) != 0) { - iVar1 = ((s32 (*)(void))func_8012C1B8)(); - } else { - iVar1 = func_8012C1DC(*(s32 *)(param_1 + 100)); - } - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 != 0) { - func_8001CA1C(iVar1, (s32)&D_8018AD80); - *(short *)(iVar1 + 0x1a) = 0x200; - *(short *)(iVar1 + 0x18) = 0x200; - *(short *)(param_1 + 0xfc) = 0x40; - if (*(short *)(param_1 + 0x70) != 0) { - goto ad50; - } - if (*(s32 *)(param_1 + 100) != 0) { - *(short *)(param_1 + 0xfe) = *(short *)(*(s32 *)(param_1 + 100) + 0x36); - goto ad50; - } - } - ((void (*)(s32))func_8012CAE4)(param_1); - return; -ad50: - *(short *)(param_1 + 0x98) = 0; - *(s32 *)(param_1 + 0x90) = 0; - ((void (*)(s32))func_8012AD50)(param_1); -} - - -DEFINE_func_801426D4() /* dedup: shared engine-core @0x801426D4 (src/shared) */ - -DEFINE_func_80142740() /* dedup: shared engine-core @0x80142740 (src/shared) */ - -DEFINE_func_80142778() /* dedup: shared engine-core @0x80142778 (src/shared) */ - -DEFINE_func_801427DC() /* dedup: shared engine-core @0x801427DC (src/shared) */ - -DEFINE_func_801427E4() /* dedup: shared engine-core @0x801427E4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018ADB0[])(); - -void func_801427EC(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018ADB0[*(u16 *)(param_1 + 2)](); - } -} - - -DEFINE_func_80142838() /* dedup: shared engine-core @0x80142838 (src/shared) */ - -DEFINE_func_801428CC() /* dedup: shared engine-core @0x801428CC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018ADCC[])(); - -void func_8014292C(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018ADCC[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018AF9C[])(); - -void func_80142978(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018AF9C[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018B054[])(); - -void func_801429C4(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018B054[*(u16 *)(param_1 + 2)](); - } -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) -// @reconcile: func_80142A80 is DEFINED later in this TU as `void func_80142A80(void)`. -// The uc2 draft declared it `extern void func_80142A80(int)` -> conflicting types. -// Escape §17a-1/§20: conform the declaration to the TU's, cast at the use site -// (codegen-neutral: the argument still lands in $a0). - -extern void func_80142A80(void); - -void func_80142A10(int param_1) -{ - - extern void (*D_8018B064[])(); - if (*(s16 *)&D_801270C0 != 3) { - D_8018B064[*(u16 *)(param_1 + 2)](); - if (*(s16 *)(param_1 + 0xFC) != 0) { - ((void (*)(int))func_80142A80)(param_1); - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (packed-word struct -> lwl/lwr unaligned copy; union byte[] -> $sp-direct lbu; branch-polarity invert -> beqz) - -extern u16 D_800B99D8; -extern struct packed_word D_801D2654; -extern u8 D_801D3038; -extern u8 D_801D3039; -extern u8 D_801D303A; - -void func_80142A80(void) -{ - u16 flags; - union word_bytes local; - s32 mul; - - flags = D_800B99D8; - local.pw = D_801D2654; - - if (flags & 0x10) { - mul = (s8)((flags & 0xf) >> 1) + 9; - } else { - mul = 0x10 - (s8)((flags & 0xf) >> 1); - } - - D_801D3038 = mul * (local.b[0] >> 4); - D_801D3039 = mul * (local.b[1] >> 4); - D_801D303A = mul * (local.b[2] >> 4); -} - - -DEFINE_func_80142B2C() /* dedup: shared engine-core @0x80142B2C (src/shared) */ - - -DEFINE_func_80142BB4() /* dedup: shared engine-core @0x80142BB4 (src/shared) */ - -DEFINE_func_80142C7C() /* dedup: shared engine-core @0x80142C7C (src/shared) */ - -DEFINE_func_80142C84() /* dedup: shared engine-core @0x80142C84 (src/shared) */ - -DEFINE_func_80142C9C() /* dedup: shared engine-core @0x80142C9C (src/shared) */ - -DEFINE_func_80142D38() /* dedup: shared engine-core @0x80142D38 (src/shared) */ - -DEFINE_func_80142DB8() /* dedup: shared engine-core @0x80142DB8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (combined store-assign `*(p)=v0=call()` keeps test/store on $v0, copy to $s0 for the else) - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_80142B2C(void *arg0); - -extern int D_8018ADA4; - -void func_80142DC4(int param_1) -{ - int v0; - - *(int *)(param_1 + 0x20) = v0 = ((int (*)(void))func_8012C1B8)(); - if (v0 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - ((void (*)(s32, s32))func_8001CA1C)(v0, (s32)&D_8018ADA4); - *(short *)(v0 + 0x1a) = 0x1800; - *(short *)(v0 + 0x18) = 0x1800; - *(short *)(param_1 + 0xfc) = 0; - ((void (*)(int))func_80142B2C)(param_1); - } -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_80142B2C(void *arg0); - -extern unsigned char D_8018ADC0[]; - -void func_80142E38(int param_1) -{ - short sVar1; - int iVar2; - - *(int *)(param_1 + 0x20) = iVar2 = ((int (*)(void))func_8012C1B8)(); - if (iVar2 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - ((void (*)(int, void *))func_8001CA1C)(iVar2, &D_8018ADC0); - sVar1 = (*(unsigned short *)(param_1 + 0x70) & 0xf) * 0x600 + 0x1200; - *(short *)(iVar2 + 0x1a) = sVar1; - *(short *)(iVar2 + 0x18) = sVar1; - *(short *)(param_1 + 0xfc) = 0; - ((void (*)(int))func_80142B2C)(param_1); - } -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142B2C(void *arg0); - - -void func_80142EC0(s32 param_1) { - - extern s32 D_8018AF8C[]; - register s32 d __asm__("$16") = param_1; /* $s0 */ - register s32 obj __asm__("$17"); /* $s1 */ - s32 ret; - s16 sVar2; - - ret = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(d + 0x20) = ret; - obj = ret; - if (ret == 0) { - ((void (*)(s32))func_8012CAE4)(d); - } else { - func_8001CA1C(obj, 0); - sVar2 = (s16)((*(u16 *)(d + 0x70) & 0xf) * 0x600 + 0xc00); - *(s16 *)(obj + 0x1a) = sVar2; - *(s16 *)(obj + 0x18) = sVar2; - *(s16 *)(d + 0xfc) = 0; - ((void (*)(s32, s32))func_8012A828)(d, D_8018AF8C[*(u16 *)(d + 0x70) & 0xf]); - ((void (*)(s32))func_80142B2C)(d); - } -} - - -DEFINE_func_80142F68() /* dedup: shared engine-core @0x80142F68 (src/shared) */ - -DEFINE_func_80142FFC() /* dedup: shared engine-core @0x80142FFC (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (38 ins). $16=param pin; explicit $17 copy of the call result -// survives across func_8001CA1C while $v0 serves the pre-call store/test; -// store BEFORE the s1 copy so the store keeps $v0 (not the saved copy). - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern void func_80142B2C(void *arg0); - -extern unsigned char D_8018AFAC[]; -extern unsigned char D_8018B00C[]; - -void func_8014305C(int param_1) -{ - register int s0_param __asm__("$16") = param_1; - register int s1_copy __asm__("$17"); - int iVar2; - short sVar1; - - iVar2 = ((int (*)(void))func_8012C1B8)(); - *(int *)(s0_param + 0x20) = iVar2; - s1_copy = iVar2; - if (iVar2 == 0) { - ((void (*)(int))func_8012CAE4)(s0_param); - } else { - ((void (*)(int, void *))func_8001CA1C)(s1_copy, D_8018AFAC); - sVar1 = (*(unsigned short *)(s0_param + 0x70) & 0xf) * 0x600 + 0xc00; - *(short *)(s1_copy + 0x1a) = sVar1; - *(short *)(s1_copy + 0x18) = sVar1; - *(short *)(s0_param + 0xfc) = 0; - func_8012A828(s0_param, D_8018B00C); - ((void (*)(int))func_80142B2C)(s0_param); - } -} - - -DEFINE_func_801430F4() /* dedup: shared engine-core @0x801430F4 (src/shared) */ - -DEFINE_func_80143188() /* dedup: shared engine-core @0x80143188 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (memcpy unaligned copy; $s0 survivor pinned, store-before-copy keeps $v0 for early store/branch) - - -extern void *memcpy(void *, const void *, u32); - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern int func_8001CA88(int, void *); -extern s32 func_8012E504(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80142B2C(void *arg0); - -extern u8 D_801D2650; -extern u8 D_801D3038; -extern u8 D_801D303C; - -void func_801431E8(s32 param_1) { - u8 buf[8]; - s32 iVar5; - u16 uVar2; - s16 sVar4; - - register s32 d __asm__("$16"); - memcpy(buf, &D_801D2650, 4); - iVar5 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)(param_1 + 0x20) = iVar5; - d = iVar5; - if (iVar5 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - } else { - ((void (*)(s32, void *))func_8001CA88)(d, &D_801D3038); - uVar2 = *(u16 *)(param_1 + 0x70); - *(s16 *)(d + 0x76) = -0x10; - sVar4 = (uVar2 & 0xf) * 0x600 + 0xc00; - *(s16 *)(d + 0x1a) = sVar4; - *(s16 *)(d + 0x18) = sVar4; - *(u32 *)(d + 4) = *(u32 *)(d + 4) | 0x50000000; - if (func_8012E504(param_1, 0x33) == 0) { - *(s16 *)(param_1 + 0xfc) = 1; - func_800233CC(&D_801D3038, 0x10); - memcpy(&D_801D303C, buf, 4); - } else { - *(s16 *)(param_1 + 0xfc) = 0; - } - ((void (*)(s32))func_80142B2C)(param_1); - } -} - - -DEFINE_func_801432FC() /* dedup: shared engine-core @0x801432FC (src/shared) */ - -DEFINE_func_80143390() /* dedup: shared engine-core @0x80143390 (src/shared) */ - -DEFINE_func_801433F0() /* dedup: shared engine-core @0x801433F0 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) - -extern u8 D_800D387C[]; -extern u32 D_8018B164[]; - -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -void func_80143458(s32 param_1) -{ - s32 p; - u16 v; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_800D387C; - - p = *(s32 *)(param_1 + 0x20); - if (*(s32 *)(p + 4) == 0) { - *(s32 *)(p + 4) = 0x50000000; - } - - *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x9c; - - v = *(u16 *)(param_1 + 0x34) & 0x7fff; - if (v != 0) { - p = *(s32 *)(param_1 + 0x20); - *(u16 *)(p + 0x1a) = v; - *(u16 *)(p + 0x18) = v; - } - - func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, - D_8018B164[*(u16 *)(param_1 + 0x34) & 3]); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_8014350C() /* dedup: shared engine-core @0x8014350C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (pending gate) - - -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -void func_8014358C(s32 param_1) -{ - - extern u8 D_8018B174[]; - extern u32 D_8018B270[]; - s32 p; - u16 v; - - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x20) = (u32)&D_8018B174; - - p = *(s32 *)(param_1 + 0x20); - if (*(s32 *)(p + 4) == 0) { - *(s32 *)(p + 4) = 0x50000000; - } - - *(u8 *)(*(s32 *)(param_1 + 0x20) + 0x27) = 0x90; - - v = *(u16 *)(param_1 + 0x34) & 0x7fff; - if (v != 0) { - p = *(s32 *)(param_1 + 0x20); - *(u16 *)(p + 0x1a) = v; - *(u16 *)(p + 0x18) = v; - } - - func_80128EA8(*(u32 *)(param_1 + 0x20), param_1 + 0x24, - D_8018B270[*(u16 *)(param_1 + 0x34) & 3]); - - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_80143640() /* dedup: shared engine-core @0x80143640 (src/shared) */ - -DEFINE_func_801437D8() /* dedup: shared engine-core @0x801437D8 (src/shared) */ - -DEFINE_func_80143970() /* dedup: shared engine-core @0x80143970 (src/shared) */ - -DEFINE_func_80143994() /* dedup: shared engine-core @0x80143994 (src/shared) */ - -DEFINE_func_801439C0() /* dedup: shared engine-core @0x801439C0 (src/shared) */ - -DEFINE_func_801439FC() /* dedup: shared engine-core @0x801439FC (src/shared) */ - - -extern void (*D_8018B28C[])(void); - -void func_80143B30(void *a0) { - D_8018B28C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143B6C() /* dedup: shared engine-core @0x80143B6C (src/shared) */ - -DEFINE_func_80143BDC() /* dedup: shared engine-core @0x80143BDC (src/shared) */ - - -extern void (*D_8018B298[])(void); - -void func_80143C38(void *a0) { - D_8018B298[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143C74() /* dedup: shared engine-core @0x80143C74 (src/shared) */ - - -extern void (*D_8018B2A0[])(void); - -void func_80143C98(void *a0) { - D_8018B2A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143CD4() /* dedup: shared engine-core @0x80143CD4 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (80 ins, relocation-masked). iVar2/iVar3 pinned $s1/$s2; sVar4 is an -// int set BEFORE the call so it naturally takes callee-saved $s3; chained assignment -// a=b=c=sVar4 materializes the value once (the addu $v0,$s3,$zero move) + delay-slot store. - - /* size 0x0c */ - -extern void ApplyMatrixSV(void*, Svec_801372B0*, Svec_801372B0*); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -void func_80143D28(s32 param_1) { - - extern MatEntry D_8018B2C4[]; - register s32 iVar3 __asm__("$18") = *(s32 *)(param_1 + 0x20); /* $s2 */ - register s32 iVar2 __asm__("$17") = *(s32 *)(param_1 + 0x64); /* $s1 */ - MatEntry *p = &D_8018B2C4[*(s16 *)(param_1 + 0x70)]; - s32 sVar4; - s32 iVar1; - - *(s16 *)(iVar3 + 0x14) = p->f8; - *(u16 *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) + p->fa; - sVar4 = 0x1000; - ((void (*)(void *, void *, void *))ApplyMatrixSV)((void *)(*(s32 *)(param_1 + 0x20) + 0x34), p, (void *)(param_1 + 0x50)); - - if (*(s16 *)(param_1 + 0xfe) == 0 && - (iVar2 == 0 || *(s16 *)(iVar2 + 0x36) != *(s16 *)(param_1 + 0xfc) || - *(u8 *)(iVar2 + 0xc1) != 6)) { - if (0x10 < *(s32 *)(param_1 + 0x1c)) { - *(s32 *)(param_1 + 0x1c) = 0x10; - } - *(s16 *)(param_1 + 0xfe) = 1; - } - - iVar1 = *(s32 *)(param_1 + 0x1c); - if (iVar1 < 0x11) { - sVar4 = iVar1 << 8; - } - if (0x73 < iVar1) { - sVar4 = (0x78 - iVar1) << 10; - } - *(s16 *)(iVar3 + 0x18) = *(s16 *)(iVar3 + 0x1a) = *(s16 *)(iVar3 + 0x1c) = sVar4; - - if (func_8012BEE8(param_1)) { - func_8012C218((void *)param_1); - } -} - - - -extern void (*D_8018B2E8[])(void); - -void func_80143E68(void *a0) { - D_8018B2E8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80143EA4() /* dedup: shared engine-core @0x80143EA4 (src/shared) */ - -DEFINE_func_80143EAC() /* dedup: shared engine-core @0x80143EAC (src/shared) */ - -DEFINE_func_80143EB4() /* dedup: shared engine-core @0x80143EB4 (src/shared) */ - -DEFINE_func_80143EBC() /* dedup: shared engine-core @0x80143EBC (src/shared) */ - - -extern void (*D_8018B2FC[])(void); - -void func_80144054(void *a0) { - D_8018B2FC[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: regalloc-order -// @stuck: 154/154 ins structural match (callees/consts/ctrl-flow/stack/GPU-packet all byte-correct); residual 25 = caller-saved temp-reg coalescing in the final ring-vertex block (target reuses dead $s0=iVar3 for iVar3-(iVar4>>6) subu where gcc reuses iVar4>>6's reg; iVar4 mflo -> $a3 vs target $v0) + 2-ins schedule swap of giv-increment vs iVar2*4 -> permuter grinder territory (§27 step-5) - - /* 0x14 stride */ - -DEFINE_func_80144090() /* dedup: shared engine-core @0x80144090 (src/shared) */ - - -extern void func_8012C218(void *a0); - -// @class: struct -// @stuck: none — MATCH (relocation-masked match_one); fn-ptr dispatch table + 0x1c counter, sibling idiom (func_801427EC/func_80143B30) - -extern void (*D_8018B304[])(); - -void func_801442F8(int param_1) -{ - int iVar1; - - D_8018B304[*(u16 *)(param_1 + 2)](); - iVar1 = *(int *)(param_1 + 0x1c) + 1; - *(int *)(param_1 + 0x1c) = iVar1; - if (0x1d < iVar1) { - func_8012C218(param_1); - } -} - - - -extern void func_8012C194(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018B280; - -void func_80144364(int param_1) { - int iVar3; - u16 uVar2; - s16 sVar1; - - iVar3 = ((s32 (*)(void))func_8012C194)(); - if (iVar3 == 0) { - ((void (*)(int))func_8012CAE4)(param_1); - } else { - uVar2 = *(u16 *)(*(int *)(param_1 + 0x64) + 0x36); - *(int *)(param_1 + 0xCC) = iVar3; - *(u16 *)(param_1 + 0xFC) = uVar2; - func_8001CB6C((u8 *)iVar3, (s32)&D_8018B280, 0x250, 0x1A0); - *(s32 *)(iVar3 + 4) = 0x60000000; - *(u8 *)(iVar3 + 0x27) = 0x14; - *(u16 *)(iVar3 + 0x10) = 0x400; - *(u16 *)(iVar3 + 8) = *(u16 *)(*(int *)(param_1 + 0x64) + 6); - *(u16 *)(iVar3 + 0xA) = *(u16 *)(*(int *)(param_1 + 0x64) + 0xA); - *(u16 *)(iVar3 + 0xC) = *(u16 *)(*(int *)(param_1 + 0x64) + 0xE); - sVar1 = *(s16 *)(param_1 + 0x70); - if (sVar1 != 0) { - *(s16 *)(iVar3 + 0x1A) = sVar1; - *(s16 *)(iVar3 + 0x18) = sVar1; - } else { - *(u16 *)(iVar3 + 0x1A) = 0x2000; - *(u16 *)(iVar3 + 0x18) = 0x2000; - } - *(u16 *)(param_1 + 2) = 1; - } -} - - - - -extern void func_80016714(void *a0, s32 a1); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); -extern s32 D_8018B294; - -void func_80144458(void *arg0) { - s32 temp_s0; - void *temp_s2; - void *temp_v0; - - temp_s2 = M2C_FIELD(arg0, void **, 0xCC); - if (M2C_FIELD(arg0, s16 *, 0x70) == 0) { - temp_v0 = M2C_FIELD(M2C_FIELD(arg0, void **, 0x64), void **, 0x20); - if (temp_v0 != NULL) { - temp_s0 = (M2C_FIELD(temp_v0, s16 *, 0x12) - 0x400) & 0xFFF; - M2C_FIELD(arg0, s32 *, 0x10) = (s32) (func_80047948(temp_s0) * D_8018B294 * 0x10); - M2C_FIELD(arg0, s32 *, 0x18) = (s32) (func_8004787C(temp_s0) * -D_8018B294 * 0x10); - func_8012AD80(arg0); - } - } - M2C_FIELD(temp_s2, u16 *, 8) = (u16) M2C_FIELD(arg0, u16 *, 6); - M2C_FIELD(temp_s2, u16 *, 0xA) = (u16) M2C_FIELD(arg0, u16 *, 0xA); - M2C_FIELD(temp_s2, u16 *, 0xC) = (u16) M2C_FIELD(arg0, u16 *, 0xE); - if (func_80128ED8(temp_s2, arg0 + 0xD0) != 0) { - func_80016714(temp_s2, 0x38); - func_8012C218(arg0); - } -} - - -DEFINE_func_80144558() /* dedup: shared engine-core @0x80144558 (src/shared) */ - -DEFINE_func_8014462C() /* dedup: shared engine-core @0x8014462C (src/shared) */ - -DEFINE_func_801446A4() /* dedup: shared engine-core @0x801446A4 (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH (65 ins, match_one). Levers: uVar2/$2 + addr/$3 pins; split (uVar2&0xFFFFFFF) into addr then (addr|0x80000000)+8 deref; %hi/%lo of 0x80000008 via plain 0x80000000+8 (match_one masks the target's D_80000008 reloc, real bytes identical); v1/3 magic-divide; gv+fv reassoc (field-0x30 in own temp) loads field first -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern u8 D_8018B2A8; -extern u8 D_8018B2B4; - -void func_8014477C(void *param_1) { - s32 v0; - s32 v1; - register s32 uVar2 __asm__("$2"); - register s32 addr __asm__("$3"); - s32 gv; - s32 fv; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)param_1 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(param_1); - return; - } - ((void (*)(s32, void *))func_8001CA1C)(v0, &D_8018B2A8); - if (*(u16 *)(*(s32 *)((s32)param_1 + 0x64)) != 0) { - *(s16 *)((s32)param_1 + 0xFC) = *(u16 *)(*(s32 *)((s32)param_1 + 0x64) + 0x36); - uVar2 = *(s32 *)(*(s32 *)((s32)param_1 + 0x64) + 0x58); - if (uVar2 != 0) { - addr = uVar2 & 0xFFFFFFF; - gv = *(u16 *)((addr | 0x80000000) + 8); - fv = *(u16 *)((s32)param_1 + 0xA) - 0x30; - *(u16 *)((s32)param_1 + 0xA) = gv + fv; - } else { - *(u16 *)((s32)param_1 + 0xA) = *(u16 *)((s32)param_1 + 0xA) - 0x60; - } - } - ((void (*)(void *, void *))func_8012A828)(param_1, &D_8018B2B4); - v1 = (s32)*(s16 *)((s32)param_1 + 0x70) << 0xC; - *(s16 *)((s32)param_1 + 0x2) = 1; - *(s16 *)(*(s32 *)((s32)param_1 + 0x20) + 0x12) = v1 / 3; - *(s32 *)((s32)param_1 + 0x1C) = 0x78; -} - - - -extern void func_8012C194(void); -extern void func_8012CAE4(void *a0); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); - -extern u8 D_8018B280; -extern u8 D_8018B2F0; - -void func_80144880(s32 param_1) -{ - register s32 obj __asm__("$16"); /* $s0 */ - register s32 self __asm__("$17") = param_1; /* $s1 */ - register s32 b __asm__("$2"); /* $v0 */ - s32 e; - - obj = ((s32 (*)(void))func_8012C194)(); - if (obj == 0) { - ((void (*)(s32))func_8012CAE4)(self); - } else { - *(u16 *)(self + 0xFC) = *(u16 *)(*(s32 *)(self + 0x64) + 0x36); - *(s32 *)(self + 0xCC) = obj; - if (*(s16 *)(self + 0x70) == 1) { - func_8001CB6C((u8 *)obj, (s32)&D_8018B280, 0x250, 0x1A0); - b = 0x14; - } else { - func_8001CB6C((u8 *)obj, (s32)&D_8018B2F0, 0x300, 0x1D0); - b = 0x6A; - } - *(u8 *)(obj + 0x27) = (u8)b; - *(s32 *)(obj + 4) = 0x60000000; - *(u16 *)(obj + 0x10) = 0x400; - *(u16 *)(obj + 8) = *(u16 *)(*(s32 *)(self + 0x64) + 6); - *(u16 *)(obj + 0xA) = *(u16 *)(*(s32 *)(self + 0x64) + 0xA); - e = *(u16 *)(*(s32 *)(self + 0x64) + 0xE); - *(u16 *)(obj + 0x1A) = 0x4000; - *(u16 *)(obj + 0x18) = 0x4000; - *(u16 *)(obj + 0xC) = (u16)e; - *(s16 *)(self + 2) = *(s16 *)(self + 2) + 1; - } -} - - -DEFINE_func_80144988() /* dedup: shared engine-core @0x80144988 (src/shared) */ - - -extern void (*D_8018B30C[])(void); - -void func_801449C8(void *a0) { - D_8018B30C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80144A04() /* dedup: shared engine-core @0x80144A04 (src/shared) */ - - -extern void (*D_8018B314[])(void); - -void func_80144A2C(void *a0) { - D_8018B314[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80144A68() /* dedup: shared engine-core @0x80144A68 (src/shared) */ - -DEFINE_func_80144A90() /* dedup: shared engine-core @0x80144A90 (src/shared) */ - -DEFINE_func_80144A98() /* dedup: shared engine-core @0x80144A98 (src/shared) */ - -DEFINE_func_80144AEC() /* dedup: shared engine-core @0x80144AEC (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH - -DEFINE_func_80144B14() /* dedup: shared engine-core @0x80144B14 (src/shared) */ - - - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8015444C.c b/src/ov_SC03_119/ov_SC03_119_jr_8015444C.c deleted file mode 100644 index d153d8b93..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8015444C.c +++ /dev/null @@ -1,1263 +0,0 @@ -#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. */ -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 struct Packed8 D_80126C98; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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); -/* ==== end §8b carried decl layer ==== */ - -/* func_8015444C — ov_SC01_077 exemplar of a ~134-member per-location family. - * 363-ins jump-table bytecode interpreter over arg0->unkB4 (s32 command words indexed - * by the u8 program counter at 0xBC), self-recursing to chain commands. 27-case switch - * (cases 4/11/12 share the +2 tail) + cross-jump-merged tail epilogues. - * - * Key structural facts (vs the m2c seed): - * - Every case spells its FULL tail inline (unkB8=1; pc adjust; recurse) — gcc jump2 - * cross-jumping re-merges the identical suffixes, reproducing the target's shared - * blocks WITH per-case arg copies. m2c's goto-sharing under-counts by ~22 ins. - * - p = arg0->unk20 held in a variable (lives in $a0): cases 23/24/default store - * p->unk20 (target `sw $v0,0x20($a0)`), NOT arg0->unk20 (m2c misread). - * - entry timer test is a byte read (lbu 0xB8) via *(u8*)&unkB8. - * - TU-ambient decls: canonical sig void(void*,s32*,s32*,s32*); no `struct Actor` - * tag (ambient one exists); callees 549F8/54A74/553C0/55440 come from ambient - * decls (1-arg call to 3-arg-canon func_801549F8 via fn-ptr cast). - * - cases 23/24/default merged tail (.L80154998): direct in-place statements, - * B8=BA store FIRST, then unkBC++/unkBD++/unkDC++. No shared nc/nd/ne temps — - * shared temps span 3 blocks -> global-alloc pseudos -> no local-alloc tie -> - * `addiu aN,vN,1` into separate regs. Block-local chains tie in place - * (`addiu vN,vN,1`) and the B8-first statement order reproduces the scheduler - * tie-break (loads BC,BD,DC,BA / adds x3 / stores B8,BC,BD,DC). - * - * rtu_match: MATCH (363 ins). PIN-FREE (no register-asm pins, no dead-reads). - * - * match_one: MATCH (363 ins), self-contained. The four callee externs below - * (549F8/54A74/553C0/55440) were previously supplied by the TU-ambient decls and are - * now spelled explicitly, verbatim from the canonical set in src/ov_SC03_099/... — - * the file compiles standalone AND still reconciles for the x134 family sweep. - * - * JTBL VERIFIED (§8a): target jtbl_801D8934, bounds `sltiu $v1,0x1B` = 27 entries. - * Our .rodata emits exactly 27 R_MIPS_32 .text relocs; every entry's (vram - 0x8015444C) - * offset equals ours, incl. the 4/11/12 three-way share at +0x454 and default at +0x4E8. - */ - - -extern void StoreImage(s32, void *); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_80155440(s32 *a0); -extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; - -void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x) { - Actor4C *arg0 = a0v; - s32 *arg1 = arg1x; - s32 *arg2 = arg2x; - s32 *arg3 = arg3x; - Actor4C *p = arg0->unk20; - u8 t; - s32 t2; - u32 op; - s32 temp; - s32 nb4; - s32 nbc; - s32 w; - u8 *img; - - if (p != NULL) { - t = *(u8 *)&arg0->unkB8; - if (t != 0) { - if (*arg1 == 0) { - arg0->unkB8 = t; - *arg1 += 1; - } - t2 = (u16)arg0->unkB8 - 1; - arg0->unkB8 = t2; - if (!(t2 & 0xFF)) { - op = arg0->unkB4[arg0->unkBC]; - switch (op) { - case 0: - arg0->unkB8 = 0; - *arg2 |= 0x8000; - arg0->unkBA = 0; - arg0->unkBC = 0; - arg0->unkBD = 0; - break; - case 1: - arg0->unkB8 = 1; - *arg2 |= 0x8000; - arg0->unkBC = 0; - arg0->unkBD = 0; - arg0->unkDC = 0; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 2: - arg0->unkB8 = 0; - arg0->unkBC = arg0->unkBC + 1; - *arg2 |= 0x8000; - break; - case 3: - temp = arg0->unkB4[arg0->unkBC + 1]; - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - arg0->unkBA = temp; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 5: - nb4 = arg0->unkB4[arg0->unkBC + 1]; - nbc = arg0->unkB4[arg0->unkBC + 2]; - arg0->unkB8 = 1; - arg0->unkDC = 0; - arg0->unkBC = nbc; - arg0->unkB4 = (s32 *)nb4; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 6: - arg0->unkBC = arg0->unkB4[arg0->unkBC + 1]; - arg0->unkB8 = 1; - arg0->unkDC = ((s32 (*)(s32))func_801549F8)((s32)arg0); - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 7: - arg0->unkB8 = 1; - *arg2 |= 0x4000; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 8: - arg0->unkB8 = 1; - *arg2 |= 0x2000; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 9: - arg0->unkB8 = 1; - *arg2 |= 0x1000; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 10: - arg0->unkB8 = 1; - *arg2 |= 0x800; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 13: - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 14: - if (*arg3 == 0) { - func_80154B4C((u8 *)arg0, arg0->unkB4[arg0->unkBC + 1]); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 15: - if (*arg3 == 0) { - func_80154A74((s32)arg0, arg0->unkB4[arg0->unkBC + 1]); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 16: - if (*arg3 == 0) { - func_801553C0((s32)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 17: - if (*arg3 == 0) { - func_80155440((s32 *)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 18: - if (*arg3 == 0) { - func_80155394((s32 *)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 19: - if (*arg3 == 0) { - func_801553A8((s32 *)arg0); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 20: - if (*arg3 == 0) { - arg0->unk1A8 ^= 1; - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 21: - if (*arg3 == 0) { - w = arg0->unkB4[arg0->unkBC + 1]; - img = &D_80126738; - StoreImage(w, img); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 22: - if (*arg3 == 0) { - w = arg0->unkB4[arg0->unkBC + 1]; - img = &D_80126838; - StoreImage(w, img); - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 4: - case 11: - case 12: - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 2; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 23: - if (*arg3 == 0) { - p->unk20 = (Actor4C *)&D_80126748; - } - arg0->unkB8 = (u16)arg0->unkBA; - arg0->unkBC++; - arg0->unkBD++; - arg0->unkDC++; - break; - case 24: - if (*arg3 == 0) { - p->unk20 = (Actor4C *)&D_80126848; - } - arg0->unkB8 = (u16)arg0->unkBA; - arg0->unkBC++; - arg0->unkBD++; - arg0->unkDC++; - break; - case 25: - if (*arg3 == 0) { - arg0->unk44 = arg0->unk44 & 0xFFFDFFFF; - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - case 26: - if (*arg3 == 0) { - arg0->unk44 = arg0->unk44 | 0x20000; - } - arg0->unkB8 = 1; - arg0->unkBC = arg0->unkBC + 1; - arg0->unkBD = arg0->unkBD + 1; - func_8015444C(arg0, arg1, arg2, arg3); - break; - default: - p->unk20 = (Actor4C *)(op + 0x10); - arg0->unkB8 = (u16)arg0->unkBA; - arg0->unkBC++; - arg0->unkBD++; - arg0->unkDC++; - break; - } - } - arg0->unkB8 = (u16)arg0->unkB8 | *arg2; - } - } -} - - - - -/* - * func_801549F8 — scan param->b4[] (s32[], length = the u8 at param->bc), - * stepping the index by 1 or 2 per entry via the 27-entry jump table - * jtbl_801D89A4; count the default/out-of-range entries. Returns (u8) count. - * - * REDRAFT NOTE (the decay fix, 2 levers — both required, both source-level): - * - * 1. `u8 n` (NOT `s32 n`) — THE fix for the stored draft's 3-off residual. - * The stored draft's whole residual was the position of the loop-bound - * keep-alive copy `addu $a3,$v0,$zero` among the three preheader insns: - * draft emitted [lw base][copy][lui/addiu jtbl], target wants - * [lw base][lui/addiu jtbl][copy]. The loop-invariant jtbl address is - * moved by loop.c and lands AFTER every preheader source statement, so as - * long as the copy is an ordinary preheader statement it can never follow - * the hoist. Making `n` a u8 changes the RTL for `n = *(u8*)(p+0xBC)`: - * cse1 no longer converts it into a plain reg-reg copy in place, and the - * copy that ultimately feeds the exit test is emitted at loop_start AFTER - * move_movables (post-loop pass), i.e. after the hoisted lui/addiu — the - * target order. Nothing else in the function changes. - * - * 2. The `j = i` / `i = j + k` index form BLOCKS strength reduction, which - * is what the stored draft's `register s32 i __asm__("$3")` pin was for. - * Unblocked, -O2 turns base[i] into a walking pointer (2nd biv, 33 ins); - * the target keeps the INDEX form (sll $v0,$v1,2; addu $v0,$v0,$a0; lw). - * `j` is a mult=1/add=0 giv of the biv `i`, so SR declines and i/j get - * coalesced into $v1 — no extra insn. This replaces the hard-register - * pin, so the match is pin-free and safe to travel to sibling overlays. - * (The pinned form — keep `register s32 i __asm__("$3")` + `i += 1/2` and - * just change `n` to u8 — also MATCHes, 31 ins, if a pin is ever wanted.) - * - * OPT LEVEL: plain -O2. The unfilled load-delay nops are this psx gcc's - * default, not an -O1 tell. - * - * VERIFIED: python3 tools/match_one.py func_801549F8 --c .run/uc/func_801549F8.c - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_8015444C - * -> MATCH (31 ins) - */ -s32 func_801549F8(s32 param_1, s32 _arg1, s32 _arg2) -{ - s32 i, j; - u8 n; - u8 count; - s32 *base; - - count = 0; - i = 0; - if (*(u8 *)(param_1 + 0xBC) != 0) { - base = *(s32 **)(param_1 + 0xB4); - n = *(u8 *)(param_1 + 0xBC); - do { - j = i; - switch (base[j]) { - case 0: case 2: case 7: case 8: case 9: case 10: - case 0xd: case 0x10: case 0x11: case 0x12: case 0x13: - case 0x14: case 0x19: case 0x1a: - i = j + 1; - break; - case 3: case 4: case 5: case 6: case 0xb: case 0xc: - case 0xe: case 0xf: case 0x15: case 0x16: - i = j + 2; - break; - default: - i = j + 1; - count += 1; - break; - } - } while (i != n); - } - return count; -} - -DEFINE_func_80154A74() /* dedup: shared engine-core @0x80154A74 (src/shared) */ - -DEFINE_func_80154AB4() /* dedup: shared engine-core @0x80154AB4 (src/shared) */ - -DEFINE_func_80154AE0() /* dedup: shared engine-core @0x80154AE0 (src/shared) */ - -DEFINE_func_80154B20() /* dedup: shared engine-core @0x80154B20 (src/shared) */ - -DEFINE_func_80154B4C() /* dedup: shared engine-core @0x80154B4C (src/shared) */ - -DEFINE_func_80154B7C() /* dedup: shared engine-core @0x80154B7C (src/shared) */ - -DEFINE_func_80154B98() /* dedup: shared engine-core @0x80154B98 (src/shared) */ - -DEFINE_func_80154BC8() /* dedup: shared engine-core @0x80154BC8 (src/shared) */ - -DEFINE_func_80154BE4() /* dedup: shared engine-core @0x80154BE4 (src/shared) */ diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80154C24.c b/src/ov_SC03_119/ov_SC03_119_jr_80154C24.c deleted file mode 100644 index 71c460ba1..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_80154C24.c +++ /dev/null @@ -1,1799 +0,0 @@ -#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. */ -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 struct Packed8 D_80126C98; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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 StoreImage(s32, void *); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; -extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); -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_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -/* ==== end §8b carried decl layer ==== */ - -extern void func_80154ED8(s32 a0, s32 a1); - -void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3) { - u16 uVar2; - s32 iVar3; - s32 uVar5; - s32 uVar6; - - if (*(u8 *)(param_1 + 0xd4) == 0) { - return; - } - if (*param_2 == 0) { - *(u16 *)(param_1 + 0xd4) = (u16)*(u8 *)(param_1 + 0xd4); - *param_2 = *param_2 + 1; - } - uVar2 = *(u16 *)(param_1 + 0xd4) - 1; - *(u16 *)(param_1 + 0xd4) = uVar2; - if ((uVar2 & 0xff) != 0) { - goto LAB_80154e6c; - } - switch (*(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0))) { - case 0: - *(u16 *)(param_1 + 0xd4) = 0; - *param_3 = *param_3 | 0x8000; - *(u16 *)(param_1 + 0xd6) = 0; - *(u8 *)(param_1 + 0xd8) = 0; - *(u8 *)(param_1 + 0xd9) = 0; - break; - case 1: - *(u16 *)(param_1 + 0xd4) = 1; - *param_3 = *param_3 | 0x8000; - *(u8 *)(param_1 + 0xd8) = 0; - *(u8 *)(param_1 + 0xd9) = 0; - func_80154C24(param_1, param_2, param_3); - break; - case 2: - *(u16 *)(param_1 + 0xd4) = 0; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - goto LAB_80154e9c; - case 3: - uVar5 = *(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0) + 4); - *(u16 *)(param_1 + 0xd4) = 1; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 2; - *(s16 *)(param_1 + 0xd6) = (s16)uVar5; - func_80154C24(param_1, param_2, param_3); - break; - case 5: - iVar3 = (u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0); - uVar5 = *(s32 *)(iVar3 + 4); - uVar6 = *(s32 *)(iVar3 + 8); - *(u16 *)(param_1 + 0xd4) = 1; - *(s8 *)(param_1 + 0xd8) = (s8)uVar6; - *(s32 *)(param_1 + 0xd0) = uVar5; - func_80154C24(param_1, param_2, param_3); - break; - case 6: - uVar6 = *(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0) + 4); - *(u16 *)(param_1 + 0xd4) = 1; - *(s8 *)(param_1 + 0xd8) = (s8)uVar6; - func_80154C24(param_1, param_2, param_3); - break; - case 7: - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd6); - *param_3 = *param_3 | 0x4000; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - *(s8 *)(param_1 + 0xd9) = *(s8 *)(param_1 + 0xd9) + 1; - func_80154C24(param_1, param_2, param_3); - break; - case 8: - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd6); - *param_3 = *param_3 | 0x2000; - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - *(s8 *)(param_1 + 0xd9) = *(s8 *)(param_1 + 0xd9) + 1; - func_80154C24(param_1, param_2, param_3); - break; - default: - func_80154ED8(param_1, *(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0))); - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd6); - *(s8 *)(param_1 + 0xd8) = *(s8 *)(param_1 + 0xd8) + 1; - break; - } - goto LAB_80154eac; - -LAB_80154e6c: - if (uVar2 != 1) { - goto LAB_80154eac; - } - if (*(s32 *)((u32)*(u8 *)(param_1 + 0xd8) * 4 + *(s32 *)(param_1 + 0xd0)) != 0) { - goto LAB_80154eac; - } -LAB_80154e9c: - *param_3 = *param_3 | 0x8000; -LAB_80154eac: - *(u16 *)(param_1 + 0xd4) = *(u16 *)(param_1 + 0xd4) | *param_3; - return; -} - - -DEFINE_func_80154ED8() /* dedup: shared engine-core @0x80154ED8 (src/shared) */ - -DEFINE_func_80154F9C() /* dedup: shared engine-core @0x80154F9C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (array-of-struct stride-8 base materialize + addu, %lo folded into addiu) - -extern void MoveImage(void *a0, s32 a1, s32 a2); -extern void func_800183E0(s32 a0); - -extern ImgRect8 D_8018B794[]; - -void func_801550FC(s32 arg0) -{ - if (arg0 & 0x40000000) { - MoveImage(&D_8018B794[arg0 & 0xFF], 0x200, 0x100); - } else { - ((void (*)(void))func_800183E0)(); - } -} - - -DEFINE_func_80155150() /* dedup: shared engine-core @0x80155150 (src/shared) */ - -DEFINE_func_801552F4() /* dedup: shared engine-core @0x801552F4 (src/shared) */ - -DEFINE_func_80155344() /* dedup: shared engine-core @0x80155344 (src/shared) */ - -DEFINE_func_80155394() /* dedup: shared engine-core @0x80155394 (src/shared) */ - -DEFINE_func_801553A8() /* dedup: shared engine-core @0x801553A8 (src/shared) */ - -DEFINE_func_801553C0() /* dedup: shared engine-core @0x801553C0 (src/shared) */ - -DEFINE_func_80155440() /* dedup: shared engine-core @0x80155440 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; decrement persists as separate addiu in delay slot - -extern int (*D_8018B7D4[])(void); - -s32 func_80155458(s32 param_1) -{ - int idx; - - idx = *(unsigned char *)(param_1 + 0x4e); - if (idx != 0) { - idx = idx - 1; - if ((*D_8018B7D4[idx])() == 0) { - *(unsigned char *)(param_1 + 0x4e) = 0; - } - } - return *(unsigned char *)(param_1 + 0x4e); -} - - -DEFINE_func_801554B8() /* dedup: shared engine-core @0x801554B8 (src/shared) */ - -DEFINE_func_80155518() /* dedup: shared engine-core @0x80155518 (src/shared) */ - -DEFINE_func_8015554C() /* dedup: shared engine-core @0x8015554C (src/shared) */ - - -extern void (*D_8018B7D8[])(void); - -void func_80155580(void *a0) { - D_8018B7D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801555BC() /* dedup: shared engine-core @0x801555BC (src/shared) */ - - - -void func_801555F4(void *param_1) -{ - extern void func_80156648(int *a0); - extern int D_800D4C94; - extern int D_800D4CE4; - extern int D_800D4D38; - extern int D_800D4D88; - extern int D_800D4E10; - extern int D_800D4E6C; - - - int uVar1; - unsigned char bVar3; - int s1; - unsigned short uVar4; - - ((void(*)(int, int))func_80154A74)(((int)param_1), 0x15); - if ((*(unsigned int *)(((int)param_1) + 0x44) & 0x200) == 0) { - if (*(int *)(((int)param_1) + 0x2c) == -0xb0000) { - uVar1 = ((int(*)(int))func_80029178)(0x82); - if ((uVar1 & 0xff) != 0) { - uVar1 = 7; - goto L_648; - } - } - } else { - uVar1 = 5; -L_648: - *(unsigned char *)(((int)param_1) + 0x1aa) = uVar1; - } - switch (*(unsigned char *)(((int)param_1) + 0x1aa)) { - case 0: - case 1: - bVar3 = *(unsigned char *)(((int)param_1) + 0x1ab) ^ 1; - *(unsigned char *)(((int)param_1) + 0x1ab) = bVar3; - if (bVar3 != 0) - *(unsigned char *)(((int)param_1) + 0x1aa) = 0; - else - *(unsigned char *)(((int)param_1) + 0x1aa) = 1; - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4C94); - ((void(*)(int))func_80147324)(0x400); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 0; - D_8011F730 |= 3; - func_80146CA0((void *)((int)param_1)); - goto L_7b8; - case 2: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4CE4); - ((void(*)(int))func_80147324)(0x446); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 1; - goto L_575c; - case 3: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4D38); - ((void(*)(int))func_80147324)(0x400); - ((void(*)(unsigned short))func_80147300)(0x5f3); - s1 = 2; - goto L_575c; - case 4: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4D88); - ((void(*)(unsigned short))func_80147300)(0x5f6); - s1 = 3; - func_80146CA0((void *)((int)param_1)); -L_575c: - func_80146CA0((void *)((int)param_1)); - goto L_7b8; - case 5: - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4E10); - s1 = 4; - uVar4 = 7; - goto L_7b0; - case 7: - ((void(*)(int))func_80147324)(0x7f); - ((void(*)(unsigned short))func_80147300)(0x5f4); - ((void(*)(int *, int))func_80154274)((int *)((int)param_1), (int)&D_800D4E6C); - s1 = 6; - uVar4 = 8; -L_7b0: - *(unsigned short *)(((int)param_1) + 2) = uVar4; - goto L_7b8; - default: - ; - } -L_7b8: - ((void(*)(int *, int))func_80146E90)((int *)((int)param_1), 0); - func_80156648((int *)((int)param_1)); - if (s1 >= 0) { - ((int(*)(int, int, int, int))func_80146994)(4, ((int)param_1), s1, 0); - } - ((void(*)(int *))func_801553A8)((int *)((int)param_1)); -} - - -DEFINE_func_80155800() /* dedup: shared engine-core @0x80155800 (src/shared) */ - - -DEFINE_func_80155A44() /* dedup: shared engine-core @0x80155A44 (src/shared) */ - -DEFINE_func_80155B20() /* dedup: shared engine-core @0x80155B20 (src/shared) */ - -DEFINE_func_80155B9C() /* dedup: shared engine-core @0x80155B9C (src/shared) */ - -DEFINE_func_80155C0C() /* dedup: shared engine-core @0x80155C0C (src/shared) */ - -DEFINE_func_80155C64() /* dedup: shared engine-core @0x80155C64 (src/shared) */ - -DEFINE_func_80155D70() /* dedup: shared engine-core @0x80155D70 (src/shared) */ - -DEFINE_func_80155E30() /* dedup: shared engine-core @0x80155E30 (src/shared) */ - -DEFINE_func_80155EA4() /* dedup: shared engine-core @0x80155EA4 (src/shared) */ - -DEFINE_func_80155F58() /* dedup: shared engine-core @0x80155F58 (src/shared) */ - -DEFINE_func_80155F60() /* dedup: shared engine-core @0x80155F60 (src/shared) */ - -DEFINE_func_80155F80() /* dedup: shared engine-core @0x80155F80 (src/shared) */ - -DEFINE_func_80155FB0() /* dedup: shared engine-core @0x80155FB0 (src/shared) */ - -DEFINE_func_80155FD4() /* dedup: shared engine-core @0x80155FD4 (src/shared) */ - -DEFINE_func_80155FF8() /* dedup: shared engine-core @0x80155FF8 (src/shared) */ - - -void func_80156044(int param_1, int param_2) { - extern u32 func_8015616C(s32 a0, u16 a1); - extern void func_80156670(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); - extern void func_801567BC(s32 a0); - extern void func_80156848(s32 a0, s32 a1, s32 a2); - extern void func_80156A88(s32 a0, s32 a1); - extern s32 func_801565C0(s32 a0); - extern u8 D_8018B990; - extern u8 D_8018B9A4; - extern u8 D_8018B828; - - register s32 puVar2 __asm__("$2"); - register s32 iVar3 __asm__("$3"); - u8 *puVar4; - s32 uVar1; - - if (((u32)param_2) & 0x10000) { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018B990; - } else if (((u32)param_2) & 0x20000) { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018B9A4; - } else { - iVar3 = (((u32)param_2) & 0xffff) * 0x14; - puVar2 = (s32)&D_8018B828; - } - puVar4 = (u8 *)(iVar3 + puVar2); - uVar1 = func_8015616C(((s32)param_1), *(u16 *)puVar4) & 0xffff; - if (*(u8 *)(((s32)param_1) + 0x1a8) != 0) { - func_80156670(((s32)param_1), *(s32 *)puVar4, uVar1, *(s32 *)(puVar4 + 4), - *(u8 *)(puVar4 + 0xA), *(u16 *)(puVar4 + 0x12)); - if (*(u8 *)(puVar4 + 0x10) != 0) { - func_801567BC(((s32)param_1)); - } - func_80156848(((s32)param_1), (s32)puVar4, uVar1); - func_80156A88(((s32)param_1), (s32)puVar4); - if (func_801565C0(((s32)param_1)) != 0) { - *(u8 *)(((s32)param_1) + 0x1c0) = 1; - } - } -} - - -DEFINE_func_8015616C() /* dedup: shared engine-core @0x8015616C (src/shared) */ - -DEFINE_func_80156370() /* dedup: shared engine-core @0x80156370 (src/shared) */ - - - -extern S801563EC D_8018B9CC[]; - -S801563EC *func_801563EC(u16 idx) { - return &D_8018B9CC[idx]; -} - - -DEFINE_func_8015640C() /* dedup: shared engine-core @0x8015640C (src/shared) */ - -DEFINE_func_801564B0() /* dedup: shared engine-core @0x801564B0 (src/shared) */ - -DEFINE_func_801565C0() /* dedup: shared engine-core @0x801565C0 (src/shared) */ - - -// @class: MATCH (18 ins) — match_one, asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_80154C24 -// -// RECONCILE (uc2 -> uc3). The body is UNCHANGED and still MATCHes; only the declaration -// environment moved. -// -// Gate error: `conflicting types for func_80156600 || previous declaration`. The conflicting -// symbol is func_80156600 ITSELF. ov_SC01_077_jr_80154C24.c:1747 instantiates -// DEFINE_func_80157EA4(), whose macro body (src/shared/engine_core.h:11395) carries -// extern s32 func_80156600(void *a0); -// and calls it at engine_core.h:11409 as `v1 = (s32 *)func_80156600(a0);`. -// The byte-true body is NULLARY — the target zeroes $a0 at entry and uses it as the loop -// counter — so `s32 (void)` vs the header's `s32 (void *)` is a PARAM/ARITY disagreement on -// our own definition. Neither declaration can be changed: the header decl is fleet-shared -// (137 siblings instantiate the same macro), and adding a phantom `void *` parameter to the -// definition perturbs the $a0 allocation. -// -// Escape: §37/§124 ASM-LABEL ALIAS. The definition is given the private C name aF80156600 -// and the assembler label "func_80156600", so it never collides with the canonical -// declaration while still emitting the required symbol for the macro's call site. Zero -// header edits, zero codegen change (verified: cc1 on the real spliced TU is diagnostic-free, -// and match_one still prints MATCH). This declaration MUST travel with the body. -// -// Everything else is as in uc2: externs at BLOCK scope (rule D — keeps the bank travellable to -// the 137 siblings; the sibling func_80156670 declares the same two symbols at function scope -// in the same TU at :1427/:1432), and D_80126AF0 typed as plain u8[] because the body only -// ever does pointer arithmetic on it (+8/entry) — the file-scope `extern S8 D_80126AF0[];` -// form needs engine_types.h, which common.h does not pull in. -// -// Codegen shape: a counter in $a0, a byte cursor $a1 walking D_80126AF0 by 8, a word cursor -// $v1 walking D_801151E0 by 4; the `addu $v0,$a1,$zero` return value sits in the bnez delay -// slot, and the loop fallthrough re-zeroes $v0 for the not-found return. -s32 aF80156600(void) __asm__("func_80156600"); - -DEFINE_func_80156600() /* dedup: shared engine-core @0x80156600 (src/shared) */ - - -DEFINE_func_80156648() /* dedup: shared engine-core @0x80156648 (src/shared) */ - -DEFINE_func_80156670() /* dedup: shared engine-core @0x80156670 (src/shared) */ - - -DEFINE_func_801567BC() /* dedup: shared engine-core @0x801567BC (src/shared) */ - -DEFINE_func_80156848() /* dedup: shared engine-core @0x80156848 (src/shared) */ - -DEFINE_func_80156A14() /* dedup: shared engine-core @0x80156A14 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; D_8011520C indexed by param_2 (byte) folds %lo; D_8018BC3C indexed halfword folds %lo -extern unsigned char D_8011520C[]; -extern unsigned short D_8018BC3C[]; -extern void func_80147324(s32 arg0); - -void func_80156A1C(s32 param_1, s32 param_2) -{ - if (*(unsigned char *)(param_1 + 0xDA) == 0) { - func_80147324(D_8018BC3C[D_8011520C[param_2]]); - *(unsigned char *)(param_1 + 0xDA) = *(unsigned char *)(param_1 + 0xDA) + 1; - } -} - - -DEFINE_func_80156A88() /* dedup: shared engine-core @0x80156A88 (src/shared) */ - -DEFINE_func_80156B74() /* dedup: shared engine-core @0x80156B74 (src/shared) */ - -DEFINE_func_80156ECC() /* dedup: shared engine-core @0x80156ECC (src/shared) */ - -DEFINE_func_80156FA8() /* dedup: shared engine-core @0x80156FA8 (src/shared) */ - - -DEFINE_func_80157158() /* dedup: shared engine-core @0x80157158 (src/shared) */ - - -DEFINE_func_801571C4() /* dedup: shared engine-core @0x801571C4 (src/shared) */ - -DEFINE_func_801574DC() /* dedup: shared engine-core @0x801574DC (src/shared) */ - -DEFINE_func_80157510() /* dedup: shared engine-core @0x80157510 (src/shared) */ - - -extern void (*D_8018BC4C[])(void); - -void func_80157544(void *a0) { - D_8018BC4C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80157580() /* dedup: shared engine-core @0x80157580 (src/shared) */ - -DEFINE_func_801575E4() /* dedup: shared engine-core @0x801575E4 (src/shared) */ - -DEFINE_func_801576A8() /* dedup: shared engine-core @0x801576A8 (src/shared) */ - -DEFINE_func_8015771C() /* dedup: shared engine-core @0x8015771C (src/shared) */ - -DEFINE_func_8015773C() /* dedup: shared engine-core @0x8015773C (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected (scalar global store + two sequential calls, param_1 saved across) - -extern int D_801D30B8; -extern void func_80147078(s32 *a0, s16 a1); -extern void func_801578C0(s32 a0); - -void func_80157788(int param_1) -{ - D_801D30B8 = 300; - ((void (*)(int, int))func_80147078)(param_1, 7); - func_801578C0(param_1); -} - - - - - -void func_801577C8(s32 arg0) { - D_801D30B8 = 0x12C; - func_80147078(arg0, 7); - func_80157808(arg0); -} - - - -// @class: struct -// @stuck: none — MATCH expected (fnptr-table %lo-fold via extern array + global counter decrement + two saved-param calls) - -extern void (*D_8018BC74[])(void); -extern int D_801D30B8; -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); - -void func_80157808(void *param_1) -{ - D_8018BC74[*(unsigned short *)((char *)param_1 + 2)](); - D_801D30B8 = D_801D30B8 - 1; - if (D_801D30B8 == -1) { - func_801599A4(param_1); - func_80159B3C(param_1); - } -} - - -DEFINE_func_80157880() /* dedup: shared engine-core @0x80157880 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (expected); STUB: param_1 held in $s0 across calls, u8 store of 9 before func_80154274 - -extern void func_80156648(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147324(s32 arg0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146CA0(void *a0); -extern s32 func_801725A4(u8 *a0); -extern u8 D_800D5128; -extern u8 D_8018BC54; - -void func_801578C0(s32 param_1) -{ - ((void (*)(void))func_80156648)(); - *(u8 *)(param_1 + 0x1AA) = 9; - func_80154274((s32 *)param_1, (s32)&D_800D5128); - ((void (*)(s32 *, s32))func_80154A74)((s32 *)param_1, 0x15); - func_80147324(0xC20); - ((void (*)(s32 *, s32))func_80146DB8)((s32 *)param_1, (s32)&D_8018BC54); - ((void (*)(s32, s32 *, s32, s32))func_80146994)(4, (s32 *)param_1, 7, 0); - ((void (*)(s32, s32 *, s32, s32))func_80146994)(5, (s32 *)param_1, 9, 0); - ((void (*)(s32 *))func_80146CA0)((s32 *)param_1); - ((void (*)(s32 *))func_801725A4)((s32 *)param_1); -} - - - - -// @class: other -// @stuck: none — MATCH (76 ins). Body is byte-identical with a plain transcription; the only -// delta was frame size: target frame is 0x30 (saves at 0x20/0x24/0x28), not 0x20. Target reserves -// a 16-byte UNREFERENCED stack local (no sp refs anywhere in the body) — gcc-2.7.2 does NOT -// dead-strip an aggregate local even at -O2, so a dead `int frame_pad[4]` reproduces vars=16 -// (.frame $sp,48: vars=16, regs=3, args=16) with zero body footprint. match_one => MATCH. - -extern void func_80147A10(int a0, int a1); -extern void func_80147A84(int); -extern void func_801473EC(s32 *a0); -extern void func_80148038(int, int); -extern void func_80147460(int); -extern void func_8014ED28(s32 _arg0); -extern void func_80146D90(int); -extern void func_80161450(void *a0); -extern void func_80157A8C(int); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern int func_80155FF8(int arg, int a1); -extern void func_80154A74(int, int); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern s32 func_801725A4(u8 *a0); - -extern unsigned char D_800D5178; -extern unsigned char D_8018BC64; - -void func_8015795C(int param_1) -{ - int frame_pad[4]; /* dead 16-byte local: forces target's 0x30 frame (vars=16); never referenced */ - int iVar1; - unsigned int uVar2; - - *(unsigned int *)(param_1 + 0x44) = *(unsigned int *)(param_1 + 0x44) | 2; - ((int (*)(int, int))func_80147A10)(param_1, 0x400); - if (*(int *)(param_1 + 0x2c) >= 0) { - *(int *)(param_1 + 0x2c) = 0; - } - func_80147A84(param_1); - ((void (*)(int))func_801473EC)(param_1); - func_80148038(param_1, 0x1a000); - func_80147460(param_1); - iVar1 = ((int (*)(int))func_8014ED28)(param_1); - if (iVar1 != 0) { - func_80146D90(param_1); - } - uVar2 = ((int (*)(int))func_80161450)(param_1); - if ((uVar2 & 5) != 0) { - func_80157A8C(param_1); - ((void (*)(int, int))func_80146E90)(param_1, 8); - ((void (*)(int))func_80146CA0)(param_1); - } - if (uVar2 == 0) { - ((void (*)(int, int))func_80155FF8)(param_1, *(unsigned char *)(param_1 + 0x1aa)); - if (*(unsigned char *)(param_1 + 0x1c0) != 0) { - func_80154A74(param_1, 0x17); - ((void (*)(int, void *))func_80154274)(param_1, &D_800D5178); - ((void (*)(int, void *))func_80146DB8)(param_1, &D_8018BC64); - ((void (*)(int, int))func_801477E8)(param_1, 0xfff40000); - *(short *)(param_1 + 2) = 4; - } - ((void (*)(int))func_801725A4)(param_1); - } - return; -} - - -DEFINE_func_80157A8C() /* dedup: shared engine-core @0x80157A8C (src/shared) */ - -DEFINE_func_80157AC8() /* dedup: shared engine-core @0x80157AC8 (src/shared) */ - -DEFINE_func_80157B74() /* dedup: shared engine-core @0x80157B74 (src/shared) */ - -DEFINE_func_80157BC8() /* dedup: shared engine-core @0x80157BC8 (src/shared) */ - -DEFINE_func_80157CCC() /* dedup: shared engine-core @0x80157CCC (src/shared) */ - - -/* func_80157D20 — 21-ins plumbing shim (×138 overlays). - * - * §71 sibling-first: the immediate neighbour func_801578C0 in this very TU - * (src/ov_SC01_077/ov_SC01_077_jr_80154C24.c L1592) already matches with - * `((void (*)(void))func_80156648)();` — the zero-argument call form. The - * target likewise sets up NO argument registers before `jal func_80156648` - * ($a0/$a1 still carry this function's own incoming args), so the call is - * argument-less here too. - * - * The `lhu %lo(D_8018BCA4)($at)` with `sll $s0,$s0,1` => a plain u16 array - * indexed by the second parameter, NOT hoisted into a pointer (§20: a pointer - * var would keep one address register live across the call; the target rebuilds - * the %hi/%lo pair inline after the call returns). - * - * §73 PARAMS axis / §42 lever 6 — the fleet canon for this symbol is - * `extern void func_80157D20(void);` (this TU's carried decl layer, L399, and - * every sibling overlay's). A 2-param definition hard-errors with - * `conflicting types` in the real TU (rtu_match, byte-verified), and the canon - * cannot be widened from a draft (that is an R22 fleet edit). So keep the - * `(void)` signature and capture $a0/$a1 with register pins copied into NORMAL - * pseudos — the copies are live across `jal func_80156648`, so they get the - * callee-saved homes the target uses ($s1 = a0, $s0 = a1). A direct - * `register` use would leave the values in call-clobbered $a0/$a1. - */ - -extern void func_80156648(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80157D74(u16 *a0); - -void func_80157D20(void) -{ - - extern u16 D_8018BCA4[]; - register void *a0v __asm__("$4"); - register s32 a1v __asm__("$5"); - void *param_1 = a0v; - s32 param_2 = a1v; - - ((void (*)(void))func_80156648)(); - ((void (*)(void *, s32))func_80147078)(param_1, D_8018BCA4[param_2]); - ((void (*)(void *))func_80157D74)(param_1); -} - - -DEFINE_func_80157D74() /* dedup: shared engine-core @0x80157D74 (src/shared) */ - - -extern void (*D_8018BCB4[])(void); - -void func_80157DC4(void *a0) { - D_8018BCB4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80157E00() /* dedup: shared engine-core @0x80157E00 (src/shared) */ - -DEFINE_func_80157E38() /* dedup: shared engine-core @0x80157E38 (src/shared) */ - -DEFINE_func_80157EA4() /* dedup: shared engine-core @0x80157EA4 (src/shared) */ - -DEFINE_func_80157F64() /* dedup: shared engine-core @0x80157F64 (src/shared) */ - - -extern void (*D_8018BCBC[])(void); - -void func_80157FC4(void *a0) { - D_8018BCBC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80158000() /* dedup: shared engine-core @0x80158000 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (expected); straight-line call sequence with two stores scheduled into jal delay slots - -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147324(s32 arg0); -extern void func_80146CA0(void *a0); - -extern s32 D_800D51E0; -extern s32 D_8018BC88; - -void func_80158038(void * param) -{ - *(u8 *)(param + 0x1aa) = 0xe; - func_80154274((s32 *)param, (s32)&D_800D51E0); - func_80154A74(param, 0x15); - func_80146DB8((s32 *)param, &D_8018BC88); - *(s32 *)(param + 0x234) = 0; - func_80146994(5, param, 0xc, 0); - func_80147324(0x455); - func_80146CA0((void *)param); -} - - -DEFINE_func_801580B4() /* dedup: shared engine-core @0x801580B4 (src/shared) */ - -DEFINE_func_801581AC() /* dedup: shared engine-core @0x801581AC (src/shared) */ - - -extern void (*D_8018BCC8[])(void); - -void func_8015824C(void *a0) { - D_8018BCC8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80158288() /* dedup: shared engine-core @0x80158288 (src/shared) */ - -DEFINE_func_801582C0() /* dedup: shared engine-core @0x801582C0 (src/shared) */ - -DEFINE_func_80158344() /* dedup: shared engine-core @0x80158344 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (branch-polarity invert on both dispatch ifs + goto block-order to put the v1!=0/L508 paths as fallthrough; phantom 0x10 frame via address-taken frame_pad[4] + (void)& — zero code) - -extern void func_8014CBF8(void *a0); -extern void func_801474EC(s32 *a0); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern s32 func_801615C4(void *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern int func_80155FF8(int arg, int a1); - -extern u8 D_8018BC98; -extern u8 D_800D533C; - -void func_80158434(s32 param_1) -{ - u32 uVar1; - u32 uVar2; - s32 frame_pad[4]; - (void)&frame_pad; - - *(u32 *)(param_1 + 0x44) = *(u32 *)(param_1 + 0x44) | 2; - if ((*(u16 *)(param_1 + 0xB8) & 0x4000) != 0) { - *(s32 *)(param_1 + 0x234) = *(s32 *)(param_1 + 0x234) + 1; - ((s32 (*)(void))func_8014CBF8)(); - ((void (*)(s32))func_801474EC)(param_1); - ((void (*)(s32, s32))func_801477E8)(param_1, 0xFFFA0000); - ((void (*)(s32, s32))func_80146DB8)(param_1, (s32)&D_8018BC98); - } - if (*(s32 *)(param_1 + 0x234) != 0) { - func_80148038(param_1, 0x10000); - func_80147460(param_1); - func_80147AD4(param_1, 0, 0, 0); - ((void (*)(s32))func_801473EC)(param_1); - } - uVar1 = ((s32 (*)(s32, s32))func_801615C4)(param_1, 0); - if (uVar1 != 0) { - if (uVar1 == 1) goto LAB_80158508; - uVar2 = uVar1 & 0x2000; - } else { - uVar2 = func_80146E98(param_1); - } - if (uVar2 == 0) goto LAB_80158528; -LAB_80158508: - ((void (*)(s32, s32))func_80154274)(param_1, (s32)&D_800D533C); - ((void (*)(s32))func_80146CA0)(param_1); - return; -LAB_80158528: - ((void (*)(s32, s32))func_80155FF8)(param_1, *(u8 *)(param_1 + 0x1AA)); -} - - -DEFINE_func_80158548() /* dedup: shared engine-core @0x80158548 (src/shared) */ - -DEFINE_func_801585A4() /* dedup: shared engine-core @0x801585A4 (src/shared) */ - -DEFINE_func_801585AC() /* dedup: shared engine-core @0x801585AC (src/shared) */ - -DEFINE_func_801585EC() /* dedup: shared engine-core @0x801585EC (src/shared) */ - - -// @class: loose-typing -// @stuck: none — MATCH (87 ins, match_one) + symcheck SYMS-OK (17 symbols agree); same file also -// MATCHes verbatim against ov_SC03_099 and ov_SC06_008 (sibling asm bodies are identical) - -/* func_80158638 @ 0x80158638 — ov_SC01_077 / ov_SC01_077_jr_80154C24 (87 ins). - * - * TWO decl-ROBUSTNESS choices in the BODY, deliberate — these are the only two things the gate's - * decl ladder (cast_call_sites/reconcile_tu/sig_unify) CANNOT repair, because they change codegen, - * not plumbing. Both are load-bearing for templating this exemplar onto its 138 h_seq siblings, - * where each overlay TU carries its own spelling of these decls: - * - * 1) `*(u16 *)&D_80078EB4` — the target loads it with `lhu`. The ov_SC01_077 TU already carries - * `extern s16 D_80078EB4;` (line 504), and a plain `D_80078EB4 != 0` read through an s16 decl - * compiles to `lh` => WIDTH/lh!=lhu, closeness 1. A `(u16)` cast does NOT fix it (gcc-2.7.2 - * folds the zero_extend away for a !=0 test and keeps `lh`); the pointer pun does, and it is - * correct under EITHER declared signedness. - * 2) `(s16)func_80159464(...)` with the fleet-canonical `extern s32 func_80159464();` decl. - * The target truncates the return to 16 bits at BOTH call sites (`sll 16` + `blez`, then - * `sll 16`/`sra 16`/`slti 6`). Declaring the callee `s16` also matches, but the fleet's carried - * decl layer spells it `extern s32 func_80159464(void);` in 1600 places — if reconcile_tu wins - * that conflict the truncation vanishes and the match dies. The explicit cast makes the body - * independent of which decl survives. - * - * Symbols verified present in build/ov_SC01_077/undefined_syms_auto.txt: - * D_80078EB4=0x80078EB4 D_800B9A17=0x800B9A17 D_800B9A64=0x800B9A64 D_80110EC0=0x80110EC0 - */ - -DEFINE_func_80158638() /* dedup: shared engine-core @0x80158638 (src/shared) */ - - -DEFINE_func_80158794() /* dedup: shared engine-core @0x80158794 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH expected (3 scalar global stores + byte store + 6 calls, source order) -extern s32 D_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; - -extern void func_80147084(s32 *a0); -extern void func_80147098(s32 *a0); -extern void func_801470AC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80158880(s32 *param); - -void func_8015879C(s32 param_1) { - D_801D30C0 = 0; - D_801D30CC = 1; - D_801D30D0 = 0; - *(u8 *)(param_1 + 0xa8) = 0; - ((void (*)(void))func_80147084)(); - ((void (*)(s32))func_80147098)(param_1); - ((void (*)(s32))func_801470AC)(param_1); - ((void (*)(s32, s32))func_80147078)(param_1, 0x1a); - ((void (*)(s32, s32))func_80146C98)(param_1, 1); - ((void (*)(s32))func_80158880)(param_1); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (STUB: 3 global stores + byte store + 5 calls in source order) -extern s32 D_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; - -extern void func_80147084(s32 *a0); -extern void func_80147098(s32 *a0); -extern void func_801470AC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80158880(s32 *param); - -void func_80158814(void *arg0) { - D_801D30C0 = 0; - D_801D30CC = 1; - D_801D30D0 = 0; - *(s8 *)((s32)arg0 + 0xA8) = 0; - ((void (*)(void))func_80147084)(); - ((void (*)(void *))func_80147098)(arg0); - ((void (*)(void *))func_801470AC)(arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0x1A); - ((void (*)(void *))func_80158880)(arg0); -} - - - -extern void func_80149020(s32 *a0); -extern void (*D_8018BD04[])(s32 *); - -void func_80158880(s32 *param) { - func_80149020(param); - D_8018BD04[*(u8 *)((s32)param + 0x4F)](param); -} diff --git a/src/ov_SC03_119/ov_SC03_119_jr_801588CC.c b/src/ov_SC03_119/ov_SC03_119_jr_801588CC.c deleted file mode 100644 index fa0d8a93d..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_801588CC.c +++ /dev/null @@ -1,1635 +0,0 @@ -#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. */ -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 struct Packed8 D_80126C98; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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 StoreImage(s32, void *); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; -extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); -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_80154BC8(void *a0, s32 a1, s32 a2); -extern void func_80154B98(void *a0, s32 a1, s32 a2); -extern void func_80154ED8(s32 a0, s32 a1); -extern void func_80154C24(s32 param_1, s32 *param_2, s32 *param_3); -extern u8 D_800D8D10[]; -extern s16 D_80078E9E; -extern void func_801550FC(s32 a0); -extern void func_80154F9C(s32 a0); -extern void func_800183E0(s32 a0); -extern ImgRect8 D_8018B794[]; -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_80029178(s32); -extern int (*D_8018B7D4[])(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_8018B7D8[])(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 S801563EC *func_801563EC(u16 idx); -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 S801563EC D_8018B9CC[]; -extern S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(s32 *); -/* ==== end §8b carried decl layer ==== */ - - -extern int D_801D30C0; -extern int D_801D30CC; -extern int D_801D30D0; - -extern int func_800D0CA0(int); -extern int func_8001AAA0(int); -extern int SsGetMute(void); -extern s32 func_80159464(void); - -void func_801588CC(int param_1) { - - extern void (*D_8018BD08[])(void); - extern int D_801D30C4; - extern int D_801D30C8; - short sVar1; - - D_8018BD08[*(unsigned short *)(param_1 + 2)](); - switch (D_801D30C0) { - case 0: - break; - case 1: - func_800D0CA0(2); - D_801D30C8 = 0; - D_801D30C4 = 0x46; - D_801D30C0 += 1; - break; - case 2: - if (D_801D30C4 == 0) { - if (SsGetMute() == 0) { - D_801D30C0 += 1; - } - } else { - D_801D30C4 -= 1; - } - break; - case 3: - if (func_8001AAA0(0x83) != 0) { - D_801D30C0 += 1; - } - break; - case 4: - D_801D30CC = 0; - sVar1 = ((int (*)(int))func_80159464)(param_1); - if (sVar1 != 0) { - D_801D30C4 = 0xd2; - } else { - D_801D30C4 = 1; - } - break; - case 5: - D_801D30C4 -= 1; - if (D_801D30C4 == -1 || D_801D30D0 != 0) { - D_801D30C4 = 0; - D_801D30C0 += 1; - } - break; - case 6: - func_800D0CA0(1); - D_801D30C4 = 0x28; - D_801D30C0 += 1; - break; - case 7: - if (D_801D30C4 == 0) { - if (SsGetMute() == 0) { - D_801D30C0 += 1; - } - } else { - D_801D30C4 -= 1; - } - break; - case 8: - D_801D30C8 = 1; - break; - } -} - - -DEFINE_func_80158AB4() /* dedup: shared engine-core @0x80158AB4 (src/shared) */ - -DEFINE_func_80158AE4() /* dedup: shared engine-core @0x80158AE4 (src/shared) */ - - - -extern void func_80146CA0(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void func_80147324(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern M2C_UNK D_800D58D8; -extern s32 D_801D30C0; - -void func_80158BB0(void *arg0) { - if (D_801D30C0 == 0) { - D_801D30C0 = 1; - } - func_80147324(0x456); - func_80154274(arg0, &D_800D58D8); - func_80154A74(arg0, 0x16); - M2C_FIELD(arg0, s32 *, 0x234) = 0xE30000; - M2C_FIELD(M2C_FIELD(arg0, void **, 0x20), s16 *, 0x10) = 0; - func_801474EC(arg0); - func_801474D8(arg0); - func_801472C8(arg0); - func_80146CA0(arg0); -} - - -DEFINE_func_80158C40() /* dedup: shared engine-core @0x80158C40 (src/shared) */ - -DEFINE_func_80158CD8() /* dedup: shared engine-core @0x80158CD8 (src/shared) */ - -DEFINE_func_80158D60() /* dedup: shared engine-core @0x80158D60 (src/shared) */ - -DEFINE_func_80158E24() /* dedup: shared engine-core @0x80158E24 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (signed %11 magic + word-array %lo fold; ((void (*)(int))func_80146CA0)(param_1) reuses $a0 for the 0x198 store in its jal delay slot) - -extern s32 D_801D30CC; -extern s32 D_8018BCD8[]; - -extern int rand(void); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158F00(int param_1) { - int *self = (int *)param_1; - struct Actor *act = (struct Actor *)self[0x20 / 4]; - int gate = D_801D30CC; - - act->timer = (u16)((act->timer + 0x16) & 0xfff); - - if (gate == 0) { - s32 r = rand(); - *(s32 *)(param_1 + 0x198) = func_8013767C(D_8018BCD8[r % 0xb]); - ((void (*)(int))func_80146CA0)(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH (51 ins). Key: func_801594E8 takes a 2nd arg = sVar1 (the (short)func_80159464 -// return). $a1 is set by sra BEFORE the beqz and stays live into the jal, so the value is used -// twice (branch test + arg2) — that 2nd use is what keeps the sll;sra (gcc folds sll;sra;beqz -// -> sll;beqz otherwise). Also: branch-polarity invert (!=0 -> 594E8 fall-through, else 767C); -// func_8013767C arg is &(*(u8 *)&D_80110C3C) (lui%hi+addiu%lo, not a literal). Ghidra missed the 2nd arg. - -extern s32 D_801D30D0; -extern u8 D_80110C3C[]; - -extern u16 func_80148800(s32 *a0); -extern s32 func_801399F0(s32); -extern void func_80139914(s32); -extern s32 func_80159464(void); -extern void func_801594E8(s32, s32); -extern void func_80146C98(s32 *a0, s16 a1); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_80158FA4(s32 param_1) -{ - s32 v0; - s16 sVar1; - - v0 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v0 + 0x12) = (*(u16 *)(v0 + 0x12) + 0x16) & 0xfff; - if (((s32 (*)(void))func_80148800)() & 0xf0) { - D_801D30D0 = 1; - } - if (func_801399F0(*(s32 *)(param_1 + 0x198)) != 0) { - func_80139914(*(s32 *)(param_1 + 0x198)); - *(s32 *)(param_1 + 0x198) = 0; - sVar1 = ((s32 (*)(s32))func_80159464)(param_1); - if (sVar1 != 0) { - func_801594E8(param_1, sVar1); - ((void (*)(s32, s32))func_80146C98)(param_1, 0xc); - } else { - *(s32 *)(param_1 + 0x198) = ((s32 (*)(u8 *))func_8013767C)(&(*(u8 *)&D_80110C3C)); - ((void (*)(s32))func_80146CA0)(param_1); - } - } -} - - -DEFINE_func_80159070() /* dedup: shared engine-core @0x80159070 (src/shared) */ - -DEFINE_func_80159120() /* dedup: shared engine-core @0x80159120 (src/shared) */ - -DEFINE_func_801592CC() /* dedup: shared engine-core @0x801592CC (src/shared) */ - - -extern void func_80145BF8(void); -extern void func_80146CA0(void *a0); -extern u8 D_800AE6BD; -extern s32 D_801D30C0; -extern s32 D_801D30C8; - -void func_8015934C(void *arg0) { - void *temp_v1; - - if (D_801D30C0 == 4) { - D_801D30C0 = 5; - } - if (D_801D30C8 != 0) { - func_80145BF8(); - func_80146CA0(arg0); - D_800AE6BD += 1; - } - temp_v1 = M2C_FIELD(arg0, void **, 0x20); - M2C_FIELD(temp_v1, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_v1, u16 *, 0x12) + 0x16) & 0xFFF); -} - - -DEFINE_func_801593E4() /* dedup: shared engine-core @0x801593E4 (src/shared) */ - -DEFINE_func_80159404() /* dedup: shared engine-core @0x80159404 (src/shared) */ - -DEFINE_func_80159434() /* dedup: shared engine-core @0x80159434 (src/shared) */ - - -extern s16 currentLocationId; -extern s32 func_80029A94(s32); - -extern Entry D_8018BD40[]; - -s32 func_80159464(void) { - Entry *e; - - e = D_8018BD40; - while (e->id != 0) { - if (currentLocationId == e->id) { - return e->val; - } - e++; - } - if (func_80029A94(1) != 0) { - goto ret0; - } - if (func_80029A94(0) != 0) { - goto ret0; - } - return -1; -ret0: - return 0; -} - - -extern u8 D_80078E78[]; - - -extern void func_80175454(void); -extern s32 func_80029178(s32); -extern s32 func_800291B4(s32); -extern void func_80029274(void); -extern void func_80029044(void); -extern void func_8002906C(void); -extern void func_80029094(void); -extern void func_8002941C(void); -extern void func_80029124(s32, s32); -extern void func_800291A0(s32, s32); -extern void func_8014BEC0(void); -extern void func_8002AB64(void); -extern void func_80029514(s32); -extern void func_800D185C(u8 *); -extern void func_800CF804(void); -extern void func_800D1F90(void); - -void func_801594E8(s32 param_1, s32 param_2) -{ - - extern s32 D_80128150; - extern u8 D_800D3A44[]; - extern u8 D_800D39FC[]; - extern u8 D_800D3A20[]; - u8 *p = D_80078E78; - - func_80175454(); - switch (param_2) { - case -1: { - struct { u8 a, b, c; u8 pad[5]; u8 d, e; } t; - s32 saved; - t.a = func_80029178(0xB); - t.b = func_80029178(0xC); - t.c = func_80029178(0xD); - t.d = func_800291B4(0x2C); - t.e = func_800291B4(0x2D); - saved = *(s32 *)(p + 0x4); - func_80029274(); - func_80029044(); - func_8002906C(); - func_80029094(); - func_8002941C(); - func_80029124(0xB, t.a); - func_80029124(0xC, t.b); - func_80029124(0xD, t.c); - func_800291A0(0x2C, t.d); - func_800291A0(0x2D, t.e); - *(s32 *)(p + 0x4) = saved; - ((void (*)(s32))func_8014BEC0)(param_1); - func_8002AB64(); - func_80029514(2); - func_800D185C(D_800D3A44); - func_800CF804(); - break; - } - case 1: - *(s16 *)(p + 0x3C) = 0x96; - *(s16 *)(p + 0x40) = 0x96; - *(s32 *)(p + 0x14) = D_80128150; - break; - case 2: - case 3: - case 4: - func_800D1F90(); - break; - case 5: - func_800D1F90(); - func_800D185C(D_800D39FC); - func_80029514(0x636); - break; - case 6: - func_800D1F90(); - func_800D185C(D_800D3A20); - func_80029514(0x636); - break; - } -} - - - -extern void (*D_8018BF54[])(void); - -void func_80159698(void *a0) { - D_8018BF54[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_801596D4() /* dedup: shared engine-core @0x801596D4 (src/shared) */ - - -// @class: iv-combine -// @stuck: none — MATCH (97 ins). Recipe: $s0=base=&(*(u8 *)&D_800AF630) hoisted at top; loop1 = for(p=base+0x65A8; -// p gcc emits the -// -4 loop-inversion guard + reuses END for END+4). BOTHER: loop2 needs ab=&D_800AFAE8 POST-guard as a -// shared base for A=ab+1,B=ab+0x22 -> a for-loop hoists it PRE-guard (fold or perm); the fix is a manual -// guarded do-while `if(base+0x2A8= ab + 0x22) { - *q |= orc; - } - q += 0x21; - } while (q < (u32 *)(base + 0x65AC)); - } - - (*(s16 *)&D_801270C0) = 3; - ((void (*)(s32))func_80129248)(0); - func_8013C938(); - func_8013CB20(); - func_8013C98C(); - func_8002850C(0x800, 0x800, 0x800); - func_80028620(0, &(*(u8 *)&D_8018BD74)); - func_80028620(1, &(*(u8 *)&D_8018BD74) + 0x10); - func_80028620(2, &(*(u8 *)&D_8018BD74) + 0x20); - *(s32 *)(param_1 + 0x28) = 0xff; - *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; - } - return 0; -} - - -DEFINE_func_80159874() /* dedup: shared engine-core @0x80159874 (src/shared) */ - -DEFINE_func_8015987C() /* dedup: shared engine-core @0x8015987C (src/shared) */ - -DEFINE_func_801598BC() /* dedup: shared engine-core @0x801598BC (src/shared) */ - -DEFINE_func_801598E0() /* dedup: shared engine-core @0x801598E0 (src/shared) */ - - -extern void (*D_8018BFF8[])(void); - -void func_80159968(void *a0) { - D_8018BFF8[*(u8 *)((s32)a0 + 0x4D)](); -} - - - - -void func_801599A4(void *a0) { - - extern void (*D_8018C004[])(void); - D_8018C004[*(u16 *)((s32)a0 + 0x0)](); -} - - -DEFINE_func_801599E0() /* dedup: shared engine-core @0x801599E0 (src/shared) */ - -DEFINE_func_80159A18() /* dedup: shared engine-core @0x80159A18 (src/shared) */ - - -// @class: struct -// Redraft of the DECAYED backlog draft. The stored seed took `void *param_1` and then -// dereferenced it (`param_1[0xdd]`) — gcc-2.7.2 rejects that ("void value not ignored -// as it ought to be"), so the seed no longer compiles at all. Fix: retype the parameter -// as `unsigned char *`, which keeps every pointer offset byte-scaled (as void* arith did) -// while making the byte load legal. -// Structure preserved from the seed: the two return-tests are kept STRUCTURALLY -// DIFFERENT (positive `if(==) goto mask;` per branch, not `if(!=) return;`) so gcc's -// cross-jump pass cannot tail-merge them; and the outer test is inverted (`if(d != 1)`) -// so the ==4/return path is the inline fall-through and the d==1 / p[2] path becomes the -// forward beq-target block — matching the target block order. -// Typedefs are BLOCK-SCOPE so the match travels to the sibling overlays. - -extern void (*D_8018C0A8[])(unsigned char *); - -extern void func_80150B28(int param_1); -extern void func_80158638(unsigned char *); -extern void func_8015126C(unsigned short *); -extern void func_8014900C(int *a0); - -void func_80159A20(unsigned char *param_1) -{ - typedef unsigned short u16; - typedef unsigned int u32; - typedef int s32; - typedef unsigned char u8; - - ((s32 (*)(void))func_80150B28)(); - func_80158638(param_1); - ((void (*)(u8 *))func_8015126C)(param_1); - ((void (*)(u8 *))func_8014900C)(param_1); - D_8018C0A8[*(u16 *)param_1 & 0x7fff](param_1); - *(u32 *)(param_1 + 0x44) |= 0x8000000; - switch (*(u16 *)param_1) { - case 2: - case 3: - case 0xb: - case 0xc: - goto mask; - default: - return; - case 0x19: - if (param_1[0xdd] != 1) { - if (param_1[0xdd] == 4) { - goto mask; - } - return; - } - if (*(u16 *)(param_1 + 2) == 3) { - goto mask; - } - return; - } -mask: - *(u32 *)(param_1 + 0x44) &= 0xf7ffffff; -} - -DEFINE_func_80159B08() /* dedup: shared engine-core @0x80159B08 (src/shared) */ - -DEFINE_func_80159B3C() /* dedup: shared engine-core @0x80159B3C (src/shared) */ - - -extern void (*D_8018C14C[])(void); - -void func_80159B70(void *a0) { - D_8018C14C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80159BAC() /* dedup: shared engine-core @0x80159BAC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (40 ins). Duplicate func_80154A74(arg0,K) into BOTH branch arms (not a -// single shared-join call): forces gcc to cross-jump the jal while keeping per-arm -// `addu $a0,$s0` setup + a `nop` join delay slot, matching the 40-ins layout. Branch -// polarity: write `if (flag & 0x200 != 0){5,0x1C} else {4,0x11}` to get the `beqz`. - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801553C0(s32 a0); -extern void func_801553A8(s32 *a0); -extern s32 func_80172590(u8 *a0); -extern void func_80146CA0(void *a0); - -extern unsigned char D_8018BF68; - -void func_80159BE4(s32 arg0) -{ - int v; - - ((void (*)(int, void *))func_80146DB8)(arg0, &D_8018BF68); - if ((*(unsigned int *)(arg0 + 0x44) & 0x200) != 0) { - func_80154150(arg0, 5); - func_80154A74(arg0, 0x1C); - } else { - func_80154150(arg0, 4); - func_80154A74(arg0, 0x11); - } - *(int *)(arg0 + 0x234) = 0; - *(int *)(arg0 + 0x238) = 0; - func_801553C0(arg0); - ((void (*)(int))func_801553A8)(arg0); - ((void (*)(int))func_80172590)(arg0); - ((void (*)(int))func_80146CA0)(arg0); -} - - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80159C84.c b/src/ov_SC03_119/ov_SC03_119_jr_80159C84.c deleted file mode 100644 index 59ef6f793..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_80159C84.c +++ /dev/null @@ -1,1440 +0,0 @@ -#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. */ -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 struct Packed8 D_80126C98; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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 StoreImage(s32, void *); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_80155394(s32 *a0); -extern void func_801553A8(s32 *a0); -extern u8 D_80126738; -extern u8 D_80126748; -extern u8 D_80126838; -extern u8 D_80126848; -extern void func_8015444C(void *a0v, s32 *arg1x, s32 *arg2x, s32 *arg3x); -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_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 ImgRect8 D_8018B794[]; -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_80029178(s32); -extern int (*D_8018B7D4[])(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_8018B7D8[])(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 S801563EC *func_801563EC(u16 idx); -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 S801563EC D_8018B9CC[]; -extern S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern Entry D_8018BD40[]; -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -extern void func_80159BE4(s32 arg0); -/* ==== end §8b carried decl layer ==== */ - - -// @class: other -// @stuck: none — MATCH - -/* scalar typedefs stripped for in-TU splice (§8e) */ -extern unsigned char D_8018BF68; /* canonical; address-only use */ - -extern u16 D_800B99DA; - -extern s32 rand(void); - -/* canonical sigs (engine_core.h); arity-mismatched call sites use a fn-ptr cast (§17a-1) */ -extern s32 func_80149D9C(s32 a0); -extern void func_80149FA8(void); -extern s32 func_80149FB0(s32 a0); /* canonical */ -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern int func_80161BE0(void *a0); -extern s32 func_801496D4(void *a0); -extern void func_80149704(void); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149AA8(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern s32 func_8014A738(u8 *a0); -extern void func_8014A830(void); -extern void func_80149BAC(s32 *a0); -extern s32 func_801498E0(s32 *a0); -extern s32 func_80149954(s32 a0); -extern s32 func_80149A64(s32 *a0); -extern void func_800CCCC0(u8 *a0); -extern s32 func_80149CD4(s32 a0); -extern void func_8015E880(s32 *a0); -extern s32 func_801488A8(u8 *a0); -extern void func_8015A230(s32 *a0); -extern void func_80154B4C(u8 *a0, s32 a1); -extern s32 func_8016F1AC(void); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154190(u8 *a0, s32 a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80147324(s32 a0); -extern void func_80155440(s32 *a0); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_80161208(); -extern void func_801483E8(void); -extern s32 func_80172590(u8 *a0); - -void func_80159C84(u8 *p) { - - extern void (*D_8018C004[])(void *); /* canonical */ - extern s32 D_800D5F04; - extern s32 D_800D5F14; - extern s32 D_800D5F34; - extern s32 D_800D5F44; - extern s32 D_800D49F4; - s32 t; - - if (((s32 (*)(void))func_80149D9C)() != 0) { - D_8018C004[*(u16 *)p](p); - ((void (*)(u8 *))func_80149FA8)(p); - return; - } - - func_80149FB0((s32)p); - if (func_80161B18(p) != 0) { - return; - } - if (func_80161B84(p) != 0) { - return; - } - if (func_80161BE0(p) != 0) { - return; - } - if (func_801496D4(p) != 0) { - D_8018C004[*(u16 *)p](p); - ((void (*)(u8 *))func_80149704)(p); - return; - } - - switch (func_801619A4((s32 *)p)) { - case 0: - case 1: - case 2: - case 6: - if (func_80149AA8((s32 *)p) != 0) { - D_8018C004[*(u16 *)p](p); - func_80149AD4((s32 *)p); - return; - } - if (func_80149B54((s32 *)p) != 0) { - D_8018C004[*(u16 *)p](p); - if (func_8014A738(p) != 0) { - ((void (*)(u8 *))func_8014A830)(p); - return; - } - func_80149BAC((s32 *)p); - return; - } - break; - case 3: - func_801498E0((s32 *)p); - break; - case 4: - func_80149954((s32)p); - break; - case 5: - if (func_80149A64((s32 *)p) != 0) { - D_8018C004[*(u16 *)p](p); - func_800CCCC0(p); - return; - } - break; - } - - if (func_80149CD4((s32)p) != 0) { - D_8018C004[*(u16 *)p](p); - func_8015E880((s32 *)p); - return; - } - if (func_801488A8(p) != 0) { - D_8018C004[*(u16 *)p](p); - func_8015A230((s32 *)p); - return; - } - - if ((*(u32 *)(p + 0x44) & 0x200) == 0 && *(u16 *)(p + 0xD4) == 0x8000) { - if (*(s32 *)(p + 0x234) >= 3) { - t = (s32)&D_800D5F44; - if (*(s32 *)(p + 0xD0) == t) { - func_80154B4C(p, (s32)&D_800D5F34); - goto after_b4c; - } - } else { - t = (s32)&D_800D5F14; - if (*(s32 *)(p + 0xD0) == t) { - func_80154B4C(p, (s32)&D_800D5F04); - goto after_b4c; - } - } - if ((rand() & 0xF) == 0) { - func_80154B4C(p, t); - } - } -after_b4c: - - if (*(u16 *)(p + 0xB8) & 0x8000) { - if ((*(u32 *)(p + 0x44) & 0x200) == 0) { - if (func_8016F1AC() != 0) { - *(s32 *)(p + 0x234) = 0; - *(s32 *)(p + 0x238) = 0; - } - switch (*(s32 *)(p + 0x234)) { - case 0: - if ((*(s32 *)(p + 0x238))++ >= 4) { - *(s32 *)(p + 0x238) = 0; - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80154150((s32)p, 1); - break; - } - func_80146DB8((s32 *)p, (s32 *)&D_8018BF68); - func_80154190(p, 0); - break; - case 1: - *(s32 *)(p + 0x238) = 0; - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80154150((s32)p, 0); - break; - case 2: - if ((*(s32 *)(p + 0x238))++ >= 2) { - if ((*(u32 *)(p + 0x44) & 4) != 0) { - *(s32 *)(p + 0x234) = 0; - *(s32 *)(p + 0x238) = 0; - func_80154150((s32)p, 0); - break; - } - *(s32 *)(p + 0x238) = 0; - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80154150((s32)p, 2); - break; - } - func_80154190(p, 0); - break; - case 3: - func_80147324(0x445); - *(s32 *)(p + 0x234) = *(s32 *)(p + 0x234) + 1; - func_80155440((s32 *)p); - func_80154150((s32)p, 3); - func_80154A74((s32)p, 0x13); - break; - case 4: - break; - default: - break; - } - } else { - func_80146DB8((s32 *)p, (s32 *)&D_8018BF68); - func_80154150((s32)p, 5); - func_80154A74((s32)p, 0x1C); - } - } - - if (*(s32 *)(p + 0xB4) == (s32)&D_800D49F4) { - func_80147A84((s32)p); - func_801473EC((s32 *)p); - if ((D_800B99DA & 3) == 0) { - func_8014C010((s32)p, 1); - } - } - if (((s32 (*)(s32))func_80161208)((s32)p) == 0) { /* §17a-1 */ - ((void (*)(u8 *))func_801483E8)(p); - func_80172590(p); - } -} - - -DEFINE_func_8015A1C8() /* dedup: shared engine-core @0x8015A1C8 (src/shared) */ - -DEFINE_func_8015A1FC() /* dedup: shared engine-core @0x8015A1FC (src/shared) */ - -DEFINE_func_8015A230() /* dedup: shared engine-core @0x8015A230 (src/shared) */ - - -extern void (*D_8018C154[])(void); - -void func_8015A264(void *a0) { - D_8018C154[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015A2A0() /* dedup: shared engine-core @0x8015A2A0 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (60 ins). switch() gives signed slti pivot; per-case duplicated call gives per-case a0 setup + nop jal delay - -extern int D_8018BF78; - -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_801553A8(s32 *a0); -extern s32 func_80172608(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015A2D8(s32 param_1) -{ - unsigned char bVar1; - - ((void (*)(int, int *))func_80146DB8)(param_1, &D_8018BF78); - if ((*(unsigned int *)(param_1 + 0x44) & 0x200) != 0) { - func_80154150(param_1, 10); - func_80154A74(param_1, 0x1c); - *(int *)(param_1 + 0x2c) = 0xfffc0000; - goto LAB_8015a38c; - } - bVar1 = *(unsigned char *)(param_1 + 0xa9); - switch (bVar1) { - case 0x41: - func_80154150(param_1, 7); - break; - case 0x53: - case 0x73: - func_80154150(param_1, 6); - break; - default: - *(int *)(param_1 + 0x23c) = 0; - goto LAB_8015a390; - } - func_80154A74(param_1, 0x21); -LAB_8015a38c: - *(int *)(param_1 + 0x23c) = 0; -LAB_8015a390: - func_8014C010(param_1, 2); - ((void (*)(int))func_801553A8)(param_1); - ((void (*)(int))func_80172608)(param_1); - ((void (*)(int))func_80146CA0)(param_1); - return; -} - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8015A3C8.c b/src/ov_SC03_119/ov_SC03_119_jr_8015A3C8.c deleted file mode 100644 index 5d5c09d6e..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8015A3C8.c +++ /dev/null @@ -1,1471 +0,0 @@ -#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. */ -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 struct Packed8 D_80126C98; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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 S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -extern s32 func_80172608(u8 *a0); -extern void func_8015A2D8(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - -/* func_8015A3C8 (ov_SC01_077_after, 493 ins, jtbl_801D8B34) — Phase 26 crack - * Entity air/fall update: 7-case switch (0/1/2/6 shared, 3/4/5 own, no default block), - * then a big velocity-clamp tail with a nested char switch (0x41 / 0x53+0x73). - * PIN-FREE. Offset-pure (s32 arg0 + raw offsets) — x134 template-safe. - */ -extern u8 D_80078E78[]; -extern s16 currentLocationId; - -extern s32 func_80149D9C(s32 a0); -extern void func_80149FA8(void); -extern s32 func_80149FB0(s32 a0); -extern s32 func_80161B84(void *a0); -extern s32 func_80161B18(void *a0); -extern s32 func_8014A048(s32 a0); -extern void func_8014A218(void); -extern int func_80161BE0(void *param_1); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149AA8(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern s32 func_80149B54(s32 * arg0); -extern void func_80149BAC(s32 *a0); -extern s32 func_801498E0(s32 *a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_80149CD4(s32 a0); -extern void func_8015E880(s32 *a0); -extern s32 func_801496D4(void *a0); -extern void func_80149704(void); -extern s32 func_801488A8(u8 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); -extern void func_8015AC48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern u16 func_801487F4(s32 *a0); -extern s32 func_8016F1C4(void); -extern s32 func_8015AB7C(s32 a0); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_80148824(void *arg0); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_8015C6E0(s32 *a0); -extern void func_8014E934(s32 _arg0); -extern void func_80155440(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80161278(void *a0); -extern void func_80161C24(s32 a0, s32 a1); -extern s32 func_80172608(u8 *a0); -extern void func_801483E8(void); - -s32 func_8015A3C8(arg0) -s32 arg0; -{ - - extern void (*D_8018C004[])(void *); - extern u16 D_800B99DA; - extern s32 D_800D5428; - extern u8 D_8018BF88[]; - s32 min; - s32 grav; - s32 hi; - s32 t; - s32 lo1; - s32 lo2; - s32 sv; - u8 *p; - - p = D_80078E78; - if (currentLocationId == 0x302A) { - min = -0xC0000; - grav = -0x4000; - hi = 0; - } else { - min = -0xB0000; - grav = -0x1000; - hi = 0; - } - - if (func_80149D9C(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149FA8)(arg0); - return; - } - ((void (*)(s32))func_80149FB0)(arg0); - if (((s32 (*)(s32))func_80161B84)(arg0) != 0) { - return; - } - if (((s32 (*)(s32))func_80161B18)(arg0) != 0) { - return; - } - if (*(s32 *)(arg0 + 0xB4) == (s32)&D_800D5428) { - if (func_8014A048(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8014A218)(arg0); - return; - } - } - if (((s32 (*)(s32))func_80161BE0)(arg0) != 0) { - return; - } - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 2: - case 6: - if (((s32 (*)(s32))func_80149AA8)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(s32))func_80149B54)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149BAC)(arg0); - return; - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - break; - } - - if (func_80149CD4(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015E880)(arg0); - return; - } - if (((s32 (*)(s32))func_801496D4)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149704)(arg0); - return; - } - if (((s32 (*)(s32))func_801488A8)(arg0) == 0) { - sv = *(s32 *)(arg0 + 0x2C); - D_8018C004[*(u16 *)arg0]((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80147078)(arg0, 0); - ((void (*)(s32))func_80159B70)(arg0); - if (func_8015ABD4(arg0, sv, min) != 0) { - func_8015AC48(arg0); - } - return; - } - - ((void (*)(s32))func_80148AFC)(arg0); - if (*(u32 *)(arg0 + 0x44) & 0x200) { - if (*(s32 *)(arg0 + 0x23C) == 0) { - func_80154150(arg0, 0xA); - func_80154A74(arg0, 0x1C); - } - ((void (*)(s32, s32))func_80146DB8)(arg0, (s32)&(*(s32 *)&D_8018BF88)); - func_80147AD4(arg0, 0, 0, 0); - } else { - switch (*(u8 *)(arg0 + 0xA9)) { - case 0x41: - func_80147AD4(arg0, 0, 0, grav); - if (*(s32 *)(arg0 + 0x23C) == 0) { - if (((s32 (*)(s32))func_801487F4)(arg0) & 4) { - if (*(s32 *)(arg0 + 0x2C) < -0x40000) { - *(s32 *)(arg0 + 0x2C) = -0x40000; - } - } else if (func_8016F1C4() == 0) { - if ((*(s16 *)(p + 0x26) < 0x20) || (*(s16 *)(p + 0x2E) < 0x20)) { - if (*(s32 *)(arg0 + 0x2C) < -0x40000) { - *(s32 *)(arg0 + 0x2C) = -0x40000; - } - } else if ((*(s16 *)(p + 0x26) < 0x40) || (*(s16 *)(p + 0x2E) < 0x30)) { - if (*(s32 *)(arg0 + 0x2C) < -0x80000) { - *(s32 *)(arg0 + 0x2C) = -0x80000; - } - } - } - if (*(s32 *)(arg0 + 0x2C) < min) { - *(s32 *)(arg0 + 0x2C) = min; - } - if (*(s32 *)(arg0 + 0x2C) >= hi) { - *(s32 *)(arg0 + 0x2C) = hi; - } - lo1 = -0x94000; - t = *(s32 *)(arg0 + 0x2C); - if (t < lo1) { - func_80154150(arg0, 8); - } else if (t < -0x70000) { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 7, func_8015AB7C(arg0) & 0xFFFF); - } else { - func_80154150(arg0, 6); - } - } - break; - case 0x53: - case 0x73: - *(s32 *)(arg0 + 0x2C) = (min * (((s32 (*)(s32))func_80148824)(arg0) & 0xFF)) / 127; - if (func_8016F1C4() == 0) { - if ((*(s16 *)(p + 0x26) < 0x40) || (*(s16 *)(p + 0x2E) < 0x30)) { - if (*(s32 *)(arg0 + 0x2C) < -0x80000) { - *(s32 *)(arg0 + 0x2C) = -0x80000; - } - } - if ((*(s16 *)(p + 0x26) < 0x20) || (*(s16 *)(p + 0x2E) < 0x20)) { - if (*(s32 *)(arg0 + 0x2C) < -0x40000) { - *(s32 *)(arg0 + 0x2C) = -0x40000; - } - } - } - if (*(s32 *)(arg0 + 0x2C) < min) { - *(s32 *)(arg0 + 0x2C) = min; - } - if (*(s32 *)(arg0 + 0x2C) >= hi) { - *(s32 *)(arg0 + 0x2C) = hi; - } - func_80147A84(arg0); - if (*(s32 *)(arg0 + 0x23C) == 0) { - lo2 = -0x94000; - t = *(s32 *)(arg0 + 0x2C); - if (t < lo2) { - func_80154150(arg0, 8); - } else if (t < -0x70000) { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 7, func_8015AB7C(arg0) & 0xFFFF); - } else { - func_80154150(arg0, 6); - } - } - break; - } - } - - ((void (*)(s32))func_801473EC)(arg0); - if ((min >= *(s32 *)(arg0 + 0x2C)) && !(D_800B99DA & 7)) { - func_8014C010(arg0, 2); - } - if (((s32 (*)(s32))func_8014D738)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015C6E0)(arg0); - return; - } - if (((s32 (*)(s32))func_8014E934)(arg0) != 0) { - ((void (*)(s32))func_80155440)(arg0); - func_80154150(arg0, 0x12); - func_80154A74(arg0, 0x17); - *(s32 *)(arg0 + 0x23C) = 1; - } else { - if (*(s32 *)(arg0 + 0x23C) != 0) { - func_801553C0(arg0); - func_80154150(arg0, 6); - func_80154A74(arg0, 0x21); - } - *(s32 *)(arg0 + 0x23C) = 0; - } - if (((s32 (*)(s32))func_80161278)(arg0) == 0) { - if (*(u16 *)(arg0 + 0xB8) & 0x2000) { - func_80161C24(arg0, *(u16 *)(arg0 + 0x16E)); - } - ((void (*)(s32))func_80172608)(arg0); - ((void (*)(s32))func_801483E8)(arg0); - } -} - - -DEFINE_func_8015AB7C() /* dedup: shared engine-core @0x8015AB7C (src/shared) */ - -DEFINE_func_8015ABD4() /* dedup: shared engine-core @0x8015ABD4 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (param held in $s0 across 3 calls; lhu 0x16E; &D_8018BF98 arg) -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern s32 func_80161CD0(s32 a0, s32 a1); -extern M2C_UNK D_8018BF98; - -void func_8015AC48(s32 arg0) -{ - func_80154150(arg0, 9); - func_80146DB8((s32 *)arg0, &D_8018BF98); - func_80161CD0(arg0, M2C_FIELD(arg0, u16 *, 0x16E)); -} - - -DEFINE_func_8015AC90() /* dedup: shared engine-core @0x8015AC90 (src/shared) */ - -DEFINE_func_8015ACC4() /* dedup: shared engine-core @0x8015ACC4 (src/shared) */ - -DEFINE_func_8015AD08() /* dedup: shared engine-core @0x8015AD08 (src/shared) */ - - -extern void (*D_8018C15C[])(void); - -void func_8015AD3C(void *a0) { - D_8018C15C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015AD78() /* dedup: shared engine-core @0x8015AD78 (src/shared) */ - -DEFINE_func_8015ADB0() /* dedup: shared engine-core @0x8015ADB0 (src/shared) */ - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8015AE2C.c b/src/ov_SC03_119/ov_SC03_119_jr_8015AE2C.c deleted file mode 100644 index 2e728eb67..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8015AE2C.c +++ /dev/null @@ -1,1879 +0,0 @@ -#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. */ -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 struct Packed8 D_80126C98; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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 S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -/* ==== end §8b carried decl layer ==== */ - - -/* func_8015AE2C (ov_SC01_077_after, 562 ins, jtbl_801D8B54) — Phase 26 crack - * Entity main-update dispatcher: 7-case switch (0/1/2/6 shared, 3/4/5 own, no default - * block — out-of-range falls to the after-switch join), then movement/clamp/decay tail. - * PIN-FREE. Offset-pure (s32 arg0 + raw offsets) — ×134 template-safe. - * - * match_one: MATCH (562 ins). rtu_match (whole-TU): MATCH (562 ins) — see func_8015AE2C.md - * for the two TU-side prerequisites (engine_core.h DEFINE_func_8015BEC4 extern must drop its - * `(void)` prototype, and the def must stay K&R) plus the jtbl_carve trailing-pad-word note. - * - * Signature: `s32` return + K&R def are REQUIRED by the TU, byte-neutral vs void/ANSI here - * (both verified MATCH 562): engine_core.h's thunk DEFINE_func_8015BEC4 does - * `return func_8015AE2C();` (s32, zero-arg call) — only an unprototyped K&R def coexists - * with that call. §41d does not bite on this body (it has early `return;`s). - * - * jtbl_801D8B54 = 7 entries [0,1,2,6]->0x8015AEE4 [3]->0x8015AFE0 [4]->0x8015AFF0 - * [5]->0x8015B000, bound `sltiu 7`, default(out-of-range) -> 0x8015B044 (after-switch). - * The raw dlabel's 8th word 0x00000000 is NOT a table entry: it is the original TU's - * intra-TU `.align 3` pad between consecutive jtbls (B34/B54/B74 chain) — the compiled - * object emits exactly 28 B; the pad must stay in the raw post-carve data piece. - */ -extern s32 func_80161A60(s32 a0); -extern u16 func_801487F4(s32 *a0); -extern s32 func_80149FB0(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern void func_801577C8(); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8015B8F8(s32 *a0); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801498E0(s32 *a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern int func_80155FF8(int arg, int a1); -extern s32 func_8015B858(u8 *a0); -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147814(s32 a0, s32 a1); -extern s32 func_800CF8B4(void); -extern s32 func_801491C4(s32 a0); -extern int func_80148AFC(void *a0); -extern s32 func_80149184(s32 a0); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern s32 func_80146E98(s32 a0); -extern void func_80146D90(s32 a0); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32 *a0); -extern s32 func_80172644(u8 *a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801541D8(u8 *a0, s32 a1, s32 a2); -extern s32 func_8014C050(s32 a0, s32 a1); -extern void func_800CCB78(s32 a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154274(s32 *a0, s32 a1); -extern s32 func_80161488(void *a0); -extern void func_80146CA0(void *a0); -extern s32 func_8014A674(s32 *a0); -extern void func_8014E434(void); -extern void func_8015CC40(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern void func_8014E6A0(void); -extern void func_8015CF8C(s32 *a0); -extern s32 func_801725A4(u8 *a0); - -s32 func_8015AE2C(arg0) -s32 arg0; -{ - extern void (*D_8018C004[])(void *); - extern s16 D_801152A0; - extern u8 D_800D4BE0[]; - extern s32 D_800D4E94; - extern s32 D_800D4ED4; - extern u8 D_800D4F8C[]; - extern s32 D_800D4A9C; - extern s32 D_800D4B48; - - s32 flag; - s32 r; - s32 lim; - s32 doit; - s32 t; - - flag = 0; - if ((func_80161A60(arg0) != 0) && (((s32 (*)(s32))func_801487F4)(arg0) & 0x40) && (*(s32 *)(arg0 + 0x34) >= 0)) { - flag = 1; - if (*(s32 *)(arg0 + 0x5C) == 0) { - *(s32 *)(arg0 + 0x58) = 0; - *(s32 *)(arg0 + 0x54) = 0; - *(s32 *)(arg0 + 0x50) = 0; - } - *(s32 *)(arg0 + 0x5C) = 1; - } else { - *(s32 *)(arg0 + 0x5C) = 0; - } - ((void (*)(s32))func_80149FB0)(arg0); - if (*(s32 *)(arg0 + 0x1B0) == 0) { - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 2: - case 6: - if (*(s32 *)(arg0 + 0xB4) == (s32)&(*(s32 *)&D_800D4BE0)) { - if (func_80149C08(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_801577C8)(arg0); - return; - } - } - if ((*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4E94) && - (*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4ED4) && - (*(s32 *)(arg0 + 0xB4) != (s32)&(*(s32 *)&D_800D4F8C))) { - if (func_8015B6F4(arg0) == 0) { - ((void (*)(s32))func_8015B7B4)(arg0); - } - } else { - if (*(u16 *)(arg0 + 0xB8) == 0x8000) { - func_80154A74(arg0, 0x22); - ((void (*)(s32))func_8015B8F8)(arg0); - *(u32 *)(arg0 + 0x44) &= ~2; - if (flag != 0) { - ((void (*)(s32, s32, s32, s32))func_80146994)(0x3B, arg0, 0, 0); - } - } - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - break; - } - } - if (*(u32 *)(arg0 + 0x44) & 2) { - ((void (*)(s32, s32))func_80155FF8)(arg0, *(u8 *)(arg0 + 0x1AA)); - } else { - if ((*(s32 *)(arg0 + 0x240) == 0) && (((s32 (*)(s32))func_8015B858)(arg0) != 0)) { - *(s32 *)(arg0 + 0x240) += 1; - } - if ((*(s32 *)(arg0 + 0xB4) == (s32)&(*(s32 *)&D_800D4BE0)) && (*(u16 *)(arg0 + 0xB8) & 0x8000)) { - ((void (*)(s32))func_8015B8F8)(arg0); - } else if ((*(s32 *)(arg0 + 0xB4) == (s32)&D_800D4A9C) || - (*(s32 *)(arg0 + 0xB4) == (s32)&D_800D4B48)) { - if (*(u16 *)(arg0 + 0xB8) & 0x8000) { - if (*(s32 *)(arg0 + 0x34) >= 0) { - *(u16 *)(arg0 + 0xB8) += 1; - } - } - } - } - if (*(u8 *)(arg0 + 0x1C6) != 0) { - if (((s32 (*)(s32))func_801487F4)(arg0) & 0x40) { - func_80148038(arg0, 0xFFFE6000); - } else { - func_80148038(arg0, 0x1A000); - } - lim = 0x40000; - if ((*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4E94) && - (*(s32 *)(arg0 + 0xB4) != (s32)&D_800D4ED4) && - (*(s32 *)(arg0 + 0xB4) != (s32)&(*(s32 *)&D_800D4F8C))) { - lim = 0xC0000; - } - if (*(s32 *)(arg0 + 0x34) < -lim) { - *(s32 *)(arg0 + 0x34) = -lim; - } else if (lim < *(s32 *)(arg0 + 0x34)) { - *(s32 *)(arg0 + 0x34) = lim; - } - func_80147460(arg0); - } else { - if (*(s32 *)(arg0 + 0x34) < 0) { - if (((s32 (*)(s32))func_801487F4)(arg0) & 0x40) { - func_80147814(arg0, 0xFFFF0000); - } - func_80147814(arg0, 0x10000); - } - } - if (func_800CF8B4() != 0) { - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = ((*(u16 *)&D_801152A0) + func_801491C4(arg0)) & 0xFFF; - } - if (flag == 0) { - if ((u8)((s32 (*)(s32))func_80148AFC)(arg0)) { - (*(u16 *)&D_801152A0) = func_80149184(arg0); - ((void (*)(s32, s32))func_80146E90)(arg0, 4); - if (*(s32 *)(arg0 + 0x2C) > -0x80000) { - *(s32 *)(arg0 + 0x2C) = -0x80000; - func_80147A30(arg0, -0x10000, 0xBA000); - } else { - func_80147A30(arg0, -0x1000, 0xBA000); - } - } else { - if (func_80146E98(arg0) != 0) { - func_80146D90(arg0); - } - } - func_80147A84(arg0); - ((void (*)(s32))func_801473EC)(arg0); - if (*(u8 *)(arg0 + 0x1C6) == 0) { - func_80148038(arg0, 0x1A000); - func_80147460(arg0); - } - } else { - ((void (*)(s32))func_80172644)(arg0); - if ((u8)((s32 (*)(s32))func_80148AFC)(arg0)) { - (*(u16 *)&D_801152A0) = func_80149184(arg0); - func_80146D90(arg0); - func_80147AD4(arg0, 0, 0, 0xFFFF4000); - *(s32 *)(arg0 + 0x50) += *(s32 *)(arg0 + 0x10); - *(s32 *)(arg0 + 0x54) += *(s32 *)(arg0 + 0x14); - *(s32 *)(arg0 + 0x58) += *(s32 *)(arg0 + 0x18); - if (*(s32 *)(arg0 + 0x50) > 0xBA000) { - *(s32 *)(arg0 + 0x50) = 0xBA000; - } else if (*(s32 *)(arg0 + 0x50) < -0xBA000) { - *(s32 *)(arg0 + 0x50) = -0xBA000; - } - if (*(s32 *)(arg0 + 0x54) > 0xBA000) { - *(s32 *)(arg0 + 0x54) = 0xBA000; - } else if (*(s32 *)(arg0 + 0x54) < -0xBA000) { - *(s32 *)(arg0 + 0x54) = -0xBA000; - } - if (*(s32 *)(arg0 + 0x58) > 0xBA000) { - *(s32 *)(arg0 + 0x58) = 0xBA000; - } else if (*(s32 *)(arg0 + 0x58) < -0xBA000) { - *(s32 *)(arg0 + 0x58) = -0xBA000; - } - *(s32 *)(arg0 + 0x10) = *(s32 *)(arg0 + 0x50); - *(s32 *)(arg0 + 0x14) = *(s32 *)(arg0 + 0x54); - *(s32 *)(arg0 + 0x18) = *(s32 *)(arg0 + 0x58); - ((void (*)(s32))func_801473EC)(arg0); - } else { - doit = 0; - if (*(s32 *)(arg0 + 0x50) != 0) { - doit = 1; - if (*(s32 *)(arg0 + 0x50) >= 0) { - *(s32 *)(arg0 + 0x50) -= 0x8000; - if (*(s32 *)(arg0 + 0x50) < 0) { - *(s32 *)(arg0 + 0x50) = 0; - } - } else { - *(s32 *)(arg0 + 0x50) += 0x8000; - if (*(s32 *)(arg0 + 0x50) >= 0) { - *(s32 *)(arg0 + 0x50) = 0; - } - } - } - if (*(s32 *)(arg0 + 0x54) != 0) { - doit = 1; - if (*(s32 *)(arg0 + 0x54) >= 0) { - *(s32 *)(arg0 + 0x54) -= 0x8000; - if (*(s32 *)(arg0 + 0x54) < 0) { - *(s32 *)(arg0 + 0x54) = 0; - } - } else { - *(s32 *)(arg0 + 0x54) += 0x8000; - if (*(s32 *)(arg0 + 0x54) >= 0) { - *(s32 *)(arg0 + 0x54) = 0; - } - } - } - if (*(s32 *)(arg0 + 0x58) != 0) { - doit = 1; - if (*(s32 *)(arg0 + 0x58) >= 0) { - *(s32 *)(arg0 + 0x58) -= 0x8000; - if (*(s32 *)(arg0 + 0x58) < 0) { - *(s32 *)(arg0 + 0x58) = 0; - } - } else { - *(s32 *)(arg0 + 0x58) += 0x8000; - if (*(s32 *)(arg0 + 0x58) >= 0) { - *(s32 *)(arg0 + 0x58) = 0; - } - } - } - if (doit != 0) { - *(s32 *)(arg0 + 0x10) = *(s32 *)(arg0 + 0x50); - *(s32 *)(arg0 + 0x14) = *(s32 *)(arg0 + 0x54); - *(s32 *)(arg0 + 0x18) = *(s32 *)(arg0 + 0x58); - ((void (*)(s32))func_801473EC)(arg0); - } - if (!(*(u32 *)(arg0 + 0x44) & 2)) { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 0xF, 0x12); - } - } - t = func_8014C050(arg0, 0x3B); - if (t != 0) { - func_800CCB78(t); - } - if ((*(u16 *)(arg0 + 0x1C8) & 0x1F) == 0) { - ((void (*)(s32, s32, s32, s32))func_80146994)(0x3C, arg0, 0, 0); - } - } - if (*(s32 *)(arg0 + 0x1B0) != 0) { - if (*(s32 *)(arg0 + 0x1B0) == 1) { - func_80154A74(arg0, 0x22); - func_80154150(arg0, 0xF); - } else { - ((void (*)(s32, s32))func_80154274)(arg0, *(s32 *)(arg0 + 0x1B4)); - } - } - r = ((s32 (*)(s32))func_80161488)(arg0); - if (r & 5) { - *(u32 *)(arg0 + 0x44) &= ~2; - if (*(s32 *)(arg0 + 0xB4) == (s32)&D_800D4A9C) { - func_80154150(arg0, 0xE); - } else { - func_80154150(arg0, 0x10); - } - ((void (*)(s32))func_80146CA0)(arg0); - } - if (r == 0) { - if ((((s32 (*)(s32))func_8014A674)(arg0) != 0) && (((s32 (*)(s32))func_8014E434)(arg0) != 0)) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015CC40)(arg0); - } else if ((((s32 (*)(s32))func_8014A69C)(arg0) != 0) && (((s32 (*)(s32))func_8014E6A0)(arg0) != 0)) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015CF8C)(arg0); - } else { - ((void (*)(s32))func_801725A4)(arg0); - } - } -} - -DEFINE_func_8015B6F4() /* dedup: shared engine-core @0x8015B6F4 (src/shared) */ - -DEFINE_func_8015B7B4() /* dedup: shared engine-core @0x8015B7B4 (src/shared) */ - -DEFINE_func_8015B858() /* dedup: shared engine-core @0x8015B858 (src/shared) */ - -DEFINE_func_8015B8F8() /* dedup: shared engine-core @0x8015B8F8 (src/shared) */ - -extern s32 func_8015AE2C(); - -// @class: plumbing -// @stuck: none — MATCH (271/271, pin-free, zero asm). The ONLY residual is DEF-SIDE plumbing, and it is now named exactly: the in-TU instantiation `DEFINE_func_8015BEE4()` (engine_core.h:1851-1855) expands to `extern s32 func_8015B950(void);` INSIDE ov_SC01_077_jr_8015AE2C.c, ~14 lines BELOW this definition, so the 1-param def collides with a `(void)` prototype -> `conflicting types for func_8015B950` (.run/bank_func_8015B950.log). §73 PARAMS axis / T0. Surgical fix = §65b de-macroize that ONE instantiation (blast radius: this TU); the fleet-wide `(void)`->`()` header edit is §63 and must be R22-validated. -/* func_8015B950 (ov_SC01_077_jr_8015AE2C, 271 ins, jtbl_801D8B74) — SESSION-21 re-verified - * - * ── ROUND-2 INDEPENDENT RE-VERIFICATION (2026-07-27, fresh agent, §88e discipline) ───────────── - * match_one : MATCH (271 ins) against the CURRENT tree — §87 staleness re-checked today. - * .text size: compiled .text = 0x43C = 1084 B = 271 ins, EXACTLY the target's declared 0x43C - * ("nonmatching func_8015B950, 0x43C"). So this is NOT a §83a length drift hiding - * behind a zero count — the count is over equal-length streams. - * jtbl : RE-DECODED MECHANICALLY, not inherited. Compiled .rodata = 0x1C = 28 B = 7 words, - * 7x R_MIPS_32 -> .text with implicit addends [58,58,58,E0,F0,100,58]; +0x8015B950 - * = [8015B9A8, 8015B9A8, 8015B9A8, 8015BA30, 8015BA40, 8015BA50, 8015B9A8]. - * Diffed word-for-word against asm/ov_SC01_077/data/tail14.data.s:15-23 — 7/7 identical. - * symcheck : SYMS-DIFF target=35 draft=34, sole MISSING = jtbl_801D8B74. This is the §81 jr - * FALSE POSITIVE, re-confirmed here by reading the relocs: gcc emits its OWN table and - * references it with R_MIPS_HI16/LO16 against the SECTION `.rodata` (t.o +0x40/+0x48), - * so the splat's dlabel NAME can never appear in the draft object's relocation set. - * Nothing is dropped and nothing is invented: the draft's other 34 symbols are exactly - * the target's other 34. - * FAMILY : the x138 remap is clean and §84-safe. Every sibling is 271 ins with an IDENTICAL - * callee set; only THREE names vary per overlay — the two data labels and the jtbl: - * ov_SC01_077 D_8018BF98 / D_8018C004 / jtbl_801D8B74 - * ov_SC03_099 D_80185A50 / D_80185ABC / jtbl_801BD898 - * ov_SC06_008 D_80187E44 / D_80187EB0 / jtbl_801A8734 - * The pair is always +0x6C apart, and NO literal in this draft encodes that distance - * (both labels are referenced by name), so there is no §84 derived-offset hazard. - * D_8011F9C4 is fleet-constant (main-EXE data) and must NOT be remapped. - * - * match_one: MATCH (271 ins) against the CURRENT tree (§87 staleness re-checked, 2026-07-27). - * PIN-FREE, zero asm, offset-pure (s32 arg0 + raw offsets) — x138 template-safe. - * Provenance: this is the Phase-26 crack (.run/phase26-cracks/func_8015B950.c) re-gated verbatim, - * with ONE deliberate change: the definition's return type void -> s32. - * - `void func_8015B950(s32 arg0)` : MATCH (271 ins) [the Phase-26 form] - * - `s32 func_8015B950(s32 arg0)` : MATCH (271 ins) [shipped — §3a-1 void->s32 is byte-neutral] - * The fleet/engine_core.h canonical decl is `extern s32 func_8015B950(void);` (engine_core.h:1852), - * and the last bank attempt (.run/bank_func_8015B950.log) died on `conflicting types for - * func_8015B950`. Shipping the s32 return kills the §73 RETURN axis for free and leaves only the - * cheap T0 PARAMS axis for the ladder (fix_header_decl.py / --fix-def-sig / cast_call_sites). - * Both forms are byte-identical, so the orchestrator may swap the return type back at zero cost. - * - * SYMBOLS (§58 rules 1/2 — all splat spellings, all verified present): - * D_8018C004 asm/ov_SC01_077/data/tail.data.s:4355 (the state-handler vtable) - * D_8018BF98 asm/ov_SC01_077/data/tail.data.s:4293 - * D_8011F9C4 main-EXE data; spelled `extern s32 D_8011F9C4;` in 5+ already-banked TUs - * jtbl_801D8B74 asm/ov_SC01_077/data/tail14.data.s:15 (compiler jump table — not named in C) - * - * JTBL VERIFIED (§8a gate): compiled .rodata = exactly 0x1C B / 7 words, 7x R_MIPS_32 .text with - * addends [0x58,0x58,0x58,0xE0,0xF0,0x100,0x58] -> +0x8015B950 = [B9A8,B9A8,B9A8,BA30,BA40,BA50, - * B9A8] == the original words at 0x801D8B74..0x801D8B8C. Bound `sltiu $v0,$v1,0x7` matches. - * The raw dlabel's 8th word 0x00000000 is NOT an entry — it is the intra-TU `.align 3` pad of the - * B34/B54/B74 jtbl chain; the object can never emit it (maspsx drops .align), so it must stay in - * the post-carve RAW data piece (the §53/§62/§81 carve chain applies at bank time). - * - * Same family as the TU's own already-matched func_8015AE2C: 7-case switch on ((s32 (*)(s32))func_801619A4)() - * (0/1/2/6 shared, 3/4/5 own, no default block — out-of-range and every `break` fall to the - * after-switch join), then a chain of "state handler" tests, each dispatching - * D_8018C004[*(u16*)arg0](arg0) and returning. - * - * THREE LEVERS (draft -> MATCH in 3 compiles): - * - * 1. PROLOGUE CONSTANT = an INITIALIZED LOCAL, not a literal in the compare. - * Target opens with `lui $s2, 0xFFF5` in the *prologue*, used once ~200 ins later in - * `slt $v0,$s2,$s1`. No gcc-2.7.2 pass hoists a (set reg const_int) across basic blocks - * (loop.c needs a loop; cse/combine/sched never move insns between BBs) — so the insn must - * have been EMITTED in the first BB, i.e. the constant is a local initialized at the top of - * the function. cse then cannot fold it back into the compare: the `slt` operand predicate is - * `arith_operand`, which rejects a CONST_INT wider than 16 bits, so validate_change fails and - * the pseudo survives. Its live range spans every call -> global.c gives it a callee-saved reg. - * Writing `z > -0xB0000` inline instead emits the `lui` into the branch delay slot next to the - * compare (caller-saved $v0) and the function is 1 insn short. => `s32 lim = -0xB0000;` at top. - * - * 2. `lh` vs `lhu`: a short->short copy is a pure HImode move and gcc emits `lhu`. The target's - * `lh $v0,0x26($s0)` means the value passed through an SImode (int) temp: expand makes - * (set (reg:SI) (sign_extend (mem:HI))) + (set (mem:HI) (subreg:HI ...)), and combine cannot - * merge them (the merged form is mem<-mem, which no movhi accepts) so the sign-extending load - * survives. => route both halfword copies through the `s32 t` temp. - * - * 3. THE `goto` LAYOUT — dodging jump.c's store-flag conversion (jump.c:1005-1065). - * An if/else chain writing 0/1 into `doit` makes gcc collapse the last pair into - * `sltiu $v0,$v0,1`. jump.c fires that conversion when the insn immediately after a - * conditional jump is a lone `SET pseudo, CONST_INT` whose following simplejump targets the - * SAME label as the branch (jump.c:1038 `reallabelprev == temp || ... JUMP_LABEL(temp4) == - * JUMP_LABEL(insn)`) — exactly the shape of `if (c) x=0; else x=1;`. - * The target instead cross-jumps ALL the `doit=0` exits into ONE shared block placed after the - * `doit=1` fall-through; reorg's fill_slots_from_thread then COPIES that single set into all - * three branch delay slots and redirects each branch past it (which is why `addu $v0,$zero, - * $zero` appears 3x in delay slots and the shared block vanishes). A `goto zero;` / `goto one;` - * chain expresses that layout directly, and each conditional jump is then followed by a - * compare/call rather than a lone const set, so the store-flag conversion never triggers. - * GENERAL RULE: multiple predicates that all assign the SAME constant to one flag => write - * them as `goto` to a shared assignment, never as an if/else ladder. - */ -extern s32 D_8011F9C4; -extern s32 D_8018BF98; - -extern s32 func_80161B18(void); -extern s32 func_801619A4(s32*); -extern s32 func_80149AA8(s32*); -extern void func_80149AD4(s32*); -extern s32 func_80149B54(s32*); -extern void func_80149BAC(s32*); -extern s32 func_801498E0(s32*); -extern s32 func_80149954(s32); -extern s32 func_80149A64(s32*); -extern void func_800CCCC0(s32 a0); -extern s32 func_80149CD4(s32 a0); -extern void func_8015E880(s32*); -extern s32 func_80149744(struct S_80149744*); -extern void func_80149788(void); -extern s32 func_801496D4(void*); -extern void func_80149704(void); -extern int func_80148AFC(void*); -extern void func_80146D90(s32 a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_801541D8(u8*, s32, s32); -extern s32 func_801488A8(u8*); -extern void func_80147078(s32*, s16); -extern void func_8015A264(void*); -extern s32 func_80013294(void*, void*); -extern void func_80159B70(void*); -extern s32 func_8016F1AC(void); -extern s32 func_80029178(s32 a0); -extern void func_80146DB8(s32*, s32*); -extern s32 func_80161CD0(s32, s32); -extern s32 func_80161208(s32 a0); -extern s32 func_801725A4(u8*); - -s32 func_8015B950(s32 arg0) -{ - - extern void (*D_8018C004[])(void *); - s16 sp10[4]; - s16 sp18[4]; - s32 t; - s32 z; - s32 doit; - s32 lim = -0xB0000; - - if (func_80161B18() != 0) { - return; - } - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 2: - case 6: - if (((s32 (*)(s32))func_80149AA8)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(s32))func_80149B54)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149BAC)(arg0); - return; - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - break; - } - if (func_80149CD4(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015E880)(arg0); - return; - } - if (((s32 (*)(s32))func_80149744)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149788)(arg0); - return; - } - if (((s32 (*)(s32))func_801496D4)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149704)(arg0); - if (((u8)((s32 (*)(s32))func_80148AFC)(arg0)) == 0) { - func_80146D90(arg0); - } - if ((*(s32 *)(arg0 + 0x24) | *(s32 *)(arg0 + 0x2C)) != 0) { - func_80154150(arg0, 0xF); - } else { - ((void (*)(s32, s32, s32))func_801541D8)(arg0, 0xD, 6); - } - *(s32 *)(arg0 + 0x238) = 1; - return; - } - if (((s32 (*)(s32))func_801488A8)(arg0) != 0) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = 0; - t = *(s16 *)(arg0 + 0x26); - sp18[0] = t; - sp18[1] = 0; - t = *(s16 *)(arg0 + 0x2E); - sp18[2] = t; - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32, s32))func_80147078)(arg0, 1); - ((void (*)(s32))func_8015A264)(arg0); - t = -(((s32 (*)(s16 *, s16 *))func_80013294)(sp10, sp18) << 0x10); - if (t < *(s32 *)(arg0 + 0x2C)) { - *(s32 *)(arg0 + 0x2C) = t; - } - return; - } - if (*(u16 *)(arg0 + 0xB8) == 0x8000) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32, s32))func_80147078)(arg0, 0); - ((void (*)(s32))func_80159B70)(arg0); - return; - } - z = *(s32 *)(arg0 + 0x2C); - if (func_8016F1AC() != 0) { - goto zero; - } - if (z <= lim) { - goto one; - } - if (D_8011F9C4 == 0) { - goto zero; - } - if (((u8)func_80029178(0x21)) != 0) { - goto zero; - } -one: - doit = 1; - goto join; -zero: - doit = 0; -join: - if (doit != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32, s32))func_80147078)(arg0, 0); - ((void (*)(s32))func_80159B70)(arg0); - func_80154150(arg0, 9); - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018BF98); - ((void (*)(s32, s32))func_80161CD0)(arg0, *(u16 *)(arg0 + 0x16E)); - return; - } - if (func_80161208(arg0) == 0) { - ((void (*)(s32))func_801725A4)(arg0); - } -} - -DEFINE_func_8015BD8C() /* dedup: shared engine-core @0x8015BD8C (src/shared) */ - -DEFINE_func_8015BDD0() /* dedup: shared engine-core @0x8015BDD0 (src/shared) */ - -DEFINE_func_8015BE04() /* dedup: shared engine-core @0x8015BE04 (src/shared) */ - - - -void func_8015BE38(struct Obj *a0) { - - extern void (*D_8018C178[])(void); - D_8018C178[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015BE74() /* dedup: shared engine-core @0x8015BE74 (src/shared) */ - -DEFINE_func_8015BE94() /* dedup: shared engine-core @0x8015BE94 (src/shared) */ - -DEFINE_func_8015BEC4() /* dedup: shared engine-core @0x8015BEC4 (src/shared) */ - -DEFINE_func_8015BEE4() /* dedup: shared engine-core @0x8015BEE4 (src/shared) */ - -DEFINE_func_8015BF04() /* dedup: shared engine-core @0x8015BF04 (src/shared) */ - -DEFINE_func_8015BF48() /* dedup: shared engine-core @0x8015BF48 (src/shared) */ - -DEFINE_func_8015BF7C() /* dedup: shared engine-core @0x8015BF7C (src/shared) */ - -DEFINE_func_8015BFB0() /* dedup: shared engine-core @0x8015BFB0 (src/shared) */ - - -extern void (*D_8018C184[])(void); - -void func_8015BFF4(void *a0) { - D_8018C184[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* §71 sibling-first: this is DEFINE_func_8015C0C4 (src/shared/engine_core.h L8919) - * with the two globals replaced by the second parameter and <<6 -> <<7. - * The explicit temporary `t` keeps the first lh ahead of the 0x238 store. - * - * Signature is the fleet canon `(s32 *a0, s32 a1)` declared by - * DEFINE_func_8015BFB0 (engine_core.h L16218) — a private `(s32, s16 *)` - * definition also match_one-MATCHes but breaks the real TU with - * `conflicting types`. The s16 reads are cast at the use site. */ - -DEFINE_func_8015C030() /* dedup: shared engine-core @0x8015C030 (src/shared) */ - - -DEFINE_func_8015C08C() /* dedup: shared engine-core @0x8015C08C (src/shared) */ - -DEFINE_func_8015C0C4() /* dedup: shared engine-core @0x8015C0C4 (src/shared) */ - -#include "common.h" - - - -s32 func_8015C128(s32 param_1) { - extern void func_8015C6E0(int); - extern void (*D_8018C004[])(int); - - int sp10[3]; - int sp20[3]; - int temp_s0; - int temp_v0; - - ((void(*)())func_80149FB0)(); - if (((int(*)(int))func_80148AFC)(((int)param_1)) & 0xFF) { - sp10[0] = 0; - sp10[1] = 0; - sp10[2] = -0x4000; - ((void(*)(int, int *, int *))func_8001382C)(*(short *)(*(int *)(((int)param_1) + 0x20) + 0x12), sp10, sp20); - *(int *)(((int)param_1) + 0x234) += sp20[0]; - *(int *)(((int)param_1) + 0x238) += sp20[1]; - *(int *)(((int)param_1) + 0x23C) += sp20[2]; - } - ((void(*)(int, int *, int *))func_8001382C)((short)(-*(unsigned short *)(*(int *)(((int)param_1) + 0x20) + 0x12)), - (int *)(((int)param_1) + 0x234), sp20); - ((void(*)(int, int *))func_80146DB8)(((int)param_1), sp20); - func_80147A84(((int)param_1)); - ((void(*)(int))func_801473EC)(((int)param_1)); - if (!(D_800B99DA & 3)) { - ((void(*)(int, int))func_8014C010)(((int)param_1), 1); - ((void(*)(int))func_80147324)(0x65F); - } - if (((int(*)(int))func_8014D738)(((int)param_1)) != 0) { - D_8018C004[*(u16 *)((int)param_1)](((int)param_1)); - func_8015C6E0(((int)param_1)); - return; - } - temp_s0 = ((int(*)(int))func_8014CC28)(((int)param_1)); - temp_v0 = ((int(*)(int))func_8014F3E8)(((int)param_1)); - if (temp_v0 != 0) { - if ((temp_v0 & 0xFF00) != 0x4000) { - ((void(*)(int, int))func_80146E90)(((int)param_1), 6); - ((void(*)(int))func_80146CA0)(((int)param_1)); - return; - } - if ((temp_v0 & 0x4000) && ((int(*)(int))func_80146E98)(((int)param_1)) != 0) { - ((void(*)(int, int))func_80147078)(((int)param_1), 4); - ((void(*)(int))func_8015C0C4)(((int)param_1)); - } - } else if (temp_s0 == 0) { - D_8018C004[*(u16 *)((int)param_1)](((int)param_1)); - ((void(*)(int, int))func_80147078)(((int)param_1), 3); - ((void(*)(int))func_8015BE94)(((int)param_1)); - } -} diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8015C32C.c b/src/ov_SC03_119/ov_SC03_119_jr_8015C32C.c deleted file mode 100644 index 8b44fb548..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8015C32C.c +++ /dev/null @@ -1,6275 +0,0 @@ -#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. */ -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018B520[]; -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 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 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_8018B5A8[]; -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_8018B5B0; -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 struct Packed8 D_80126C98; -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_801D3080; -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 int func_8014F74C(s32 arg0); -extern s32 func_8014FA70(s32 a0); -extern s32 D_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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 S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -extern void func_8015795C(int param_1); -extern void func_80161D20(int param_1, u32 param_2); -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -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_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_8018C184[])(void); -extern void func_8015C0C4(s32); -extern void func_8015C08C(s32 a0); -extern s32 func_8015C128(s32 param_1); -/* ==== end §8b carried decl layer ==== */ - - - - -extern u16 D_800B99DA; - -extern s32 func_80149FB0(s32 a0); -extern s32 func_801496D4(void*); -extern void func_80149704(void); -extern s32 func_801619A4(s32*); -extern s32 func_80149AA8(s32*); -extern void func_80149AD4(s32*); -extern s32 func_80149B54(s32*); -extern void func_80149BAC(s32*); -extern s32 func_801498E0(s32*); -extern s32 func_80149954(s32); -extern s32 func_80149A64(s32*); -extern void func_800CCCC0(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32*); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80147324(s32 a0); -extern void func_8014D738(void); -extern void func_8014CC28(s32); -extern s32 func_8014F3E8(s32); -extern s32 func_80146E98(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern s32 func_8015BE94(); -extern void func_80159BE4(s32 a0); -extern void func_8015C0C4(s32 a0); -extern void func_8015C6E0(s32*); - -void func_8015C32C(s32 arg0) { - - extern void (*D_8018C004[])(void *); - s32 iVar2; - u32 uVar4; - s32 vin[4]; - s32 vout[4]; - - func_80149FB0(arg0); - if (((s32 (*)(s32))func_801496D4)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149704)(arg0); - return; - } - switch (((s32 (*)(s32))func_801619A4)(arg0)) { - case 0: - case 1: - case 6: - if (((s32 (*)(s32))func_80149AA8)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(s32))func_80149B54)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_80149BAC)(arg0); - return; - } - break; - case 3: - ((void (*)(s32))func_801498E0)(arg0); - break; - case 4: - ((void (*)(s32))func_80149954)(arg0); - break; - case 5: - if (((s32 (*)(s32))func_80149A64)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - func_800CCCC0(arg0); - return; - } - } - if ((func_80148AFC((void *)arg0) & 0xff) != 0) { - vin[0] = 0; - vin[1] = 0; - vin[2] = -0x4000; - func_8001382C((s32)*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), vin, vout); - *(s32 *)(arg0 + 0x234) += vout[0]; - *(s32 *)(arg0 + 0x238) += vout[1]; - *(s32 *)(arg0 + 0x23c) += vout[2]; - } - func_8001382C((s16)-*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12), (void *)(arg0 + 0x234), vout); - func_80146DB8((s32 *)arg0, vout); - func_80147A84(arg0); - ((void (*)(s32))func_801473EC)(arg0); - if ((D_800B99DA & 3) == 0) { - func_8014C010(arg0, 1); - func_80147324(0x65f); - } - if (((s32 (*)(s32))func_8014D738)(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - ((void (*)(s32))func_8015C6E0)(arg0); - return; - } - iVar2 = ((s32 (*)(s32))func_8014CC28)(arg0); - uVar4 = ((u32 (*)(s32))func_8014F3E8)(arg0); - if (uVar4 != 0) { - if ((uVar4 & 0x4000) == 0) { - if (func_80146E98(arg0) != 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - func_80147078((s32 *)arg0, 0); - func_80159BE4(arg0); - } - } else { - func_80147078((s32 *)arg0, 4); - func_8015C0C4(arg0); - } - } else { - if (iVar2 == 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - func_80147078((s32 *)arg0, 3); - ((void (*)(s32))func_8015BE94)(arg0); - } - } -} - - -DEFINE_func_8015C6A4() /* dedup: shared engine-core @0x8015C6A4 (src/shared) */ - -DEFINE_func_8015C6AC() /* dedup: shared engine-core @0x8015C6AC (src/shared) */ - -DEFINE_func_8015C6E0() /* dedup: shared engine-core @0x8015C6E0 (src/shared) */ - - -extern void (*D_8018C190[])(void); - -void func_8015C714(void *a0) { - D_8018C190[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015C750() /* dedup: shared engine-core @0x8015C750 (src/shared) */ - -DEFINE_func_8015C788() /* dedup: shared engine-core @0x8015C788 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (match_one 88/88); fn-ptr-array dispatch, top-level if/else needed branch-polarity invert (small block falls through, big block at L854) - -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_801496D4(void *a0); -extern u16 func_801487F4(s32 *a0); -extern s32 func_801488A8(u8 *a0); -extern void func_80161240(void *a0); -extern s32 func_80146E98(s32 a0); -extern void func_80149704(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80148AAC(u8 *a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); -extern void func_80161C24(s32, s32); -extern void func_8014C010(s32 a0, s32 a1); - - -void func_8015C7E4(u16 *param_1) -{ - - extern void (*D_8018C004[])(void*); - extern int D_8018BFA8; - s32 iVar1; - u32 uVar2; - - iVar1 = ((s32 (*)(u16 *))func_80161B18)(param_1); - if ((iVar1 == 0) && (iVar1 = ((s32 (*)(u16 *))func_80161B84)(param_1), iVar1 == 0)) { - iVar1 = ((s32 (*)(u16 *))func_801496D4)(param_1); - if (iVar1 != 0) { - ((void (**)(u16*))D_8018C004)[*param_1](param_1); - ((void (*)(u16 *))func_80149704)(param_1); - } else { - uVar2 = ((s32 (*)(u16 *))func_801487F4)(param_1); - if (((uVar2 & 0x80) == 0) && (iVar1 = ((s32 (*)(u16 *))func_801488A8)(param_1), iVar1 == 0)) { - ((void (**)(u16*))D_8018C004)[*param_1](param_1); - ((void (*)(u16 *, s32))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - } else { - iVar1 = ((s32 (*)(u16 *))func_80161240)(param_1); - if (iVar1 == 0) { - iVar1 = ((s32 (*)(u16 *))func_80146E98)(param_1); - if (iVar1 != 0) { - ((void (*)(u16 *))func_80148AAC)(param_1); - ((void (*)(u16 *, void *))func_80146DB8)(param_1, &D_8018BFA8); - ((void (*)(u16 *, s32))func_80146E90)(param_1, 0x14); - ((void (*)(u16 *))func_80146CA0)(param_1); - } - if ((param_1[0x5c] & 0x2000) != 0) { - ((void (*)(u16 *, s32))func_80161C24)(param_1, param_1[0xb7]); - ((void (*)(u16 *, s32))func_8014C010)(param_1, 2); - } - } - } - } - } - return; -} - - - - -// @class: struct -// @stuck: none — dispatch + control flow on a single callee-saved param; expect MATCH - -extern s32 func_80149FB0(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80161240(void *a0); -extern s32 func_80146E98(s32 a0); -extern void func_80146CA0(void *a0); -extern void func_80161C24(s32, s32); - - -void func_8015C944(int param_1) { - - extern void (*D_8018C004[])(); - func_80149FB0(param_1); - func_80147AD4(param_1, 0, 0, 0); - ((void (*)(int))func_801473EC)(param_1); - ((void (*)(int))func_8014D738)(param_1); - if (*(int *)(param_1 + 0x170) == 0) { - (*D_8018C004[*(unsigned short *)param_1])(param_1); - ((void (*)(int, int))func_80147078)(param_1, 0); - ((void (*)(int))func_80159B70)(param_1); - } else { - if (((int (*)(int))func_80161240)(param_1) == 0) { - if (func_80146E98(param_1) != 0) { - ((void (*)(int))func_80146CA0)(param_1); - } - if ((*(unsigned short *)(param_1 + 0xb8) & 0x2000) != 0) { - func_80161C24(param_1, *(unsigned short *)(param_1 + 0x16e)); - } - } - } -} - - - -// @class: schedule -// @stuck: none — MATCH (goto forces the func_80161240 block to the function tail; bnez-to-end layout vs early-return fall-through) - - -extern s32 func_80149FB0(s32 a0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_801496D4(void *a0); -extern u16 func_801487F4(s32 *a0); -extern s32 func_801488A8(u8 *a0); -extern void func_80148AAC(u8 *a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80161240(void *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80149704(void); - - -void func_8015CA28(u16 *param_1) { - - extern void (*D_8018C004[])(void*); - extern int D_8018BFA8; - ((void (*)(void))func_80149FB0)(); - if (((int (*)(u16 *))func_80161B18)(param_1) != 0) return; - if (((int (*)(u16 *))func_80161B84)(param_1) != 0) return; - if (((int (*)(u16 *))func_801496D4)(param_1) != 0) { - ((void (**)(u16*))D_8018C004)[*param_1](param_1); - ((void (*)(u16 *))func_80149704)(param_1); - return; - } - if ((((u32 (*)(u16 *))func_801487F4)(param_1) & 0x80) != 0 || ((int (*)(u16 *))func_801488A8)(param_1) != 0) { - if ((((int (*)(u16 *))func_80148AAC)(param_1) & 0xff) != 0) { - ((void (*)(u16 *, int, int, int))func_80147AD4)(param_1, 0, 0, 0); - ((void (*)(u16 *))func_801473EC)(param_1); - } - if (((int (*)(u16 *))func_8014D738)(param_1) != 0) { - ((void (*)(u16 *, void *))func_80146DB8)(param_1, &D_8018BFA8); - ((void (*)(u16 *, int))func_80146E90)(param_1, 0x14); - ((void (*)(u16 *, int))func_80146C98)(param_1, 2); - } - if (*(int *)(param_1 + 0xb8) != 0) - goto do161240; - } - ((void (**)(u16*))D_8018C004)[*param_1](param_1); - ((void (*)(u16 *, int))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - return; -do161240: - ((void (*)(u16 *))func_80161240)(param_1); -} - - -DEFINE_func_8015CB94() /* dedup: shared engine-core @0x8015CB94 (src/shared) */ - -DEFINE_func_8015CBCC() /* dedup: shared engine-core @0x8015CBCC (src/shared) */ - -DEFINE_func_8015CBD4() /* dedup: shared engine-core @0x8015CBD4 (src/shared) */ - -DEFINE_func_8015CBDC() /* dedup: shared engine-core @0x8015CBDC (src/shared) */ - -DEFINE_func_8015CBE4() /* dedup: shared engine-core @0x8015CBE4 (src/shared) */ - -DEFINE_func_8015CBEC() /* dedup: shared engine-core @0x8015CBEC (src/shared) */ - -DEFINE_func_8015CBF4() /* dedup: shared engine-core @0x8015CBF4 (src/shared) */ - -DEFINE_func_8015CBFC() /* dedup: shared engine-core @0x8015CBFC (src/shared) */ - -DEFINE_func_8015CC04() /* dedup: shared engine-core @0x8015CC04 (src/shared) */ - -DEFINE_func_8015CC0C() /* dedup: shared engine-core @0x8015CC0C (src/shared) */ - -DEFINE_func_8015CC40() /* dedup: shared engine-core @0x8015CC40 (src/shared) */ - - - -void func_8015CC74(s32 *a0) { - - extern void (*D_8018C1A0[])(void); - D_8018C1A0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015CCB0() /* dedup: shared engine-core @0x8015CCB0 (src/shared) */ - -DEFINE_func_8015CCD0() /* dedup: shared engine-core @0x8015CCD0 (src/shared) */ - -#define NULL 0 - - - - - -s32 func_8015CD20(s32 arg0) { - extern void (*D_8018C004[])(struct Ent_8015CD20 *); - extern u8 D_8018BFB8; - extern u8 D_8018C1A8; - extern u8 D_8018C1B8; - - s32 temp_v0; - s32 var_v0; - struct Sub_8015CD20 *sp; - - ((void(*)())func_80149FB0)(); - if (((s32(*)(struct Ent_8015CD20 *))func_801496D4)(((struct Ent_8015CD20 *)arg0)) != 0) { - D_8018C004[((struct Ent_8015CD20 *)arg0)->unk0](((struct Ent_8015CD20 *)arg0)); - ((struct Ent_8015CD20 *)arg0)->unk1BC = 0xA; - ((s32(*)(struct Ent_8015CD20 *))func_80149724)(((struct Ent_8015CD20 *)arg0)); - if (((s32(*)(struct Ent_8015CD20 *))func_80148AFC)(((struct Ent_8015CD20 *)arg0)) & 0xFF) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018BFB8); - } else { - ((void(*)(struct Ent_8015CD20 *))func_80146D90)(((struct Ent_8015CD20 *)arg0)); - } - return; - } - temp_v0 = ((struct Ent_8015CD20 *)arg0)->unk234; - if (temp_v0 == 0) { - if (((s32(*)(struct Ent_8015CD20 *))func_80148980)(((struct Ent_8015CD20 *)arg0)) != 0) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018C1A8); - ((void(*)(struct Ent_8015CD20 *))func_80147A84)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *))func_801473EC)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80154150)(((struct Ent_8015CD20 *)arg0), 0x15); - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 - 0xAA; - goto block_13; - } - if (((s32(*)(struct Ent_8015CD20 *))func_8014891C)(((struct Ent_8015CD20 *)arg0)) != 0) { - ((void(*)(struct Ent_8015CD20 *, u8 *))func_80146DB8)(((struct Ent_8015CD20 *)arg0), &D_8018C1B8); - ((void(*)(struct Ent_8015CD20 *))func_80147A84)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *))func_801473EC)(((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80154150)(((struct Ent_8015CD20 *)arg0), 0x14); - ((struct Ent_8015CD20 *)arg0)->unkB8 = 1; - } - if (((s32(*)(struct Ent_8015CD20 *))func_801489E8)(((struct Ent_8015CD20 *)arg0)) != 0) { - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 + 0x71; - goto block_13; - } - if (((s32(*)(struct Ent_8015CD20 *))func_80148A48)(((struct Ent_8015CD20 *)arg0)) != 0) { - sp = ((struct Ent_8015CD20 *)arg0)->unk20; - var_v0 = sp->unk12 - 0x71; -block_13: - sp->unk12 = var_v0 & 0xFFF; - } - } else { - ((struct Ent_8015CD20 *)arg0)->unk234 = temp_v0 - 1; - } - ((void(*)(struct Ent_8015CD20 *))func_8014FA04)(((struct Ent_8015CD20 *)arg0)); - if (((s32(*)(struct Ent_8015CD20 *))func_8014E434)(((struct Ent_8015CD20 *)arg0)) == 0) { - D_8018C004[((struct Ent_8015CD20 *)arg0)->unk0](((struct Ent_8015CD20 *)arg0)); - ((void(*)(struct Ent_8015CD20 *, s32))func_80147078)(((struct Ent_8015CD20 *)arg0), 0); - ((void(*)(struct Ent_8015CD20 *))func_80159B70)(((struct Ent_8015CD20 *)arg0)); - } else { - ((void(*)(struct Ent_8015CD20 *))func_801725E0)(((struct Ent_8015CD20 *)arg0)); - } -} - - - -DEFINE_func_8015CF24() /* dedup: shared engine-core @0x8015CF24 (src/shared) */ - -DEFINE_func_8015CF58() /* dedup: shared engine-core @0x8015CF58 (src/shared) */ - -DEFINE_func_8015CF8C() /* dedup: shared engine-core @0x8015CF8C (src/shared) */ - - - -void func_8015CFC0(s32 *a0) { - - extern void (*D_8018C1D8[])(void); - D_8018C1D8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015CFFC() /* dedup: shared engine-core @0x8015CFFC (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (uVar1 pinned $s3, uVar5 pinned $s1; param_1->s2, iVar4->s0 fall out) - - -void func_8015D01C(int param_1) { - extern s32 func_801725F4(u8 *a0); - extern int D_800D550C; - extern int D_8018C1C8; - - int iVar4; - register unsigned short uVar1 __asm__("$19"); - register unsigned short uVar5 __asm__("$17"); - short sVar2; - short sVar3; - - ((void (*)(int, void *))func_80154274)(param_1, &D_800D550C); - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0; - iVar4 = *(short *)(*(int *)(param_1 + 0x20) + 0x12); - uVar1 = *(unsigned short *)(*(int *)(*(int *)(param_1 + 0x180) + 0x20) + 0x12); - uVar5 = (uVar1 + 0x800) & 0xfff; - sVar2 = func_80012A60(iVar4, (short)uVar1); - sVar3 = func_80012A60(iVar4, uVar5); - if (sVar2 < sVar3) { - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar1; - } else { - *(unsigned short *)(*(int *)(param_1 + 0x20) + 0x12) = uVar5; - } - *(int *)(param_1 + 0x38) = (int)&D_8018C1C8 | 0x40000000; - ((void (*)(int))func_801725F4)(param_1); - ((void (*)(int))func_80146CA0)(param_1); -} - - - - - -// @class: struct -// @stuck: none — MATCH (pending gate) - -extern s32 func_80149FB0(s32 a0); -extern void func_8014FA04(s32 a0); -extern void func_8014E6A0(void); -extern void (*D_8018C004[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_801725F4(u8 *a0); -extern void func_80146CA0(void *a0); - -void func_8015D104(void *arg0) { - ((void (*)(void))func_80149FB0)(); - ((void (*)(void *))func_8014FA04)(arg0); - if (((s32 (*)(void *))func_8014E6A0)(arg0) == 0) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - ((void (*)(void *))func_801725F4)(arg0); - *(s32 *)((u8 *)arg0 + 0x234) = 0xFF1D0000; - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x10) = 0x600; - *(u16 *)((u8 *)arg0 + 0x244) = *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x10); - func_80146CA0(arg0); - } -} - - - -extern s32 func_80149FB0(s32); -extern void func_80147324(s32 a0); -extern u16 func_80148800(s32 *a0); -extern void func_80149724(void); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146DB8(s32*, s32*); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_8014FA04(s32); -extern void func_8014E6A0(void); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void*); -extern void func_8015D380(s32); -extern s32 func_801725F4(u8 *a0); - -extern void (*D_8018C004[])(void*); - -void func_8015D1B8(s32 *a0) -{ - - extern s32 D_8018C1E4; - extern s32 D_8018C1E8; - extern s32 D_8018C22C; - extern s32 D_800D4C14; - s32 sum; - s32 keep; - s32 obj; - s16 cur; - s16 prev; - s16 d; - s32 off; - s32 *p; - s32 dummy[2]; /* L1: dead, but its stack slot is what makes the frame 0x38 */ - - ((void (*)(void))func_80149FB0)(); - obj = *(s32 *)((u8 *)a0 + 0x20); - sum = *(u16 *)(obj + 0x10) + *(u16 *)((u8 *)a0 + 0x236); - *(u16 *)(obj + 0x10) = sum & 0xFFF; - keep = sum; /* L2: AFTER the store — this is what keeps the $s0 copy alive */ - - cur = *(s16 *)(*(s32 *)((u8 *)a0 + 0x20) + 0x10); - prev = *(s16 *)((u8 *)a0 + 0x244); - if (cur - prev >= 0) { - d = cur - prev; - } else { - d = prev - cur; - } - if (d > 0x800) { - func_80147324(0x5E9); - } - *(u16 *)((u8 *)a0 + 0x244) = *(u16 *)(*(s32 *)((u8 *)a0 + 0x20) + 0x10); - - if (func_80148800(a0) & 0x40) { - ((void (**)(s32*))D_8018C004)[*(u16 *)a0](a0); - ((void (*)(s32 *))func_80149724)(a0); - func_80154274(a0, (s32)&D_800D4C14); - func_80146E90(a0, 0x10); - { - u32 t = keep & 0xFFF; /* L3: unsigned value, signed guard -> bgez + srl */ - if ((s32)t < 0) { - t += 0x1FF; - } - p = &D_8018C22C; /* L4 + scheduling: the `la` must precede the srl/sll pair */ - off = (t >> 9) * 8; - } - *p = *(s32 *)((u8 *)&D_8018C1E4 + off); - ((void (*)(s32 *, s32))func_80146DB8)(a0, (s32)(p - 2)); /* 0x801893D8 == &D_8018C22C[-2] (no label there) */ - func_801477E8(a0, *(s32 *)((u8 *)&D_8018C1E8 + off)); - func_80147324(0x5EA); - } else { - ((void (*)(s32 *))func_8014FA04)(a0); - if (((s32 (*)(s32 *))func_8014E6A0)(a0) == 0) { - ((void (**)(s32*))D_8018C004)[*(u16 *)a0](a0); - func_80147078(a0, 0); - ((void (*)(s32 *))func_80159B70)(a0); - } else { - ((void (*)(s32 *))func_8015D380)(a0); - func_801725F4(a0); - } - } -} - - - -// @class: regalloc-order -// @stuck: pinning a0->$s1 and buffer-ptr->$s0; body copy already matches -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void *memcpy(void *dst, const void *src, u32 n); - -extern s32 D_8018C234; - -void func_8015D380(s32 a0) { - s16 out[4]; - s32 buf[8]; - register s32 s1 __asm__("$17") = a0; - register s32 *s0 __asm__("$16") = buf; - ((void (*)(void *))func_80013F3C)((void *)s0); - ((void (*)(void *, s32))func_80012558)((void *)s0, *(s16 *)(*(s32 *)(s1 + 0x20) + 0x12)); - ((void (*)(void *, s32))func_800126C4)((void *)s0, *(s16 *)(*(s32 *)(s1 + 0x20) + 0x10)); - ApplyMatrixSV((void *)s0, (void *)&D_8018C234, (void *)out); - memcpy((void *)(s1 + 0x138), (void *)out, 8); -} - - - - -// @class: plumbing -// @stuck: none — MATCH - -extern unsigned char D_8018B318[]; - -extern void func_801553C0(s32 a0); -extern void func_80154A74(s32 a0, s32 a1); - -void func_8015D414(int param_1) -{ - *(unsigned char *)(param_1 + 0x1bd) = 8; - *(unsigned char **)(param_1 + 0x38) = D_8018B318; - *(short *)(param_1 + 0x138) = 0; - *(short *)(param_1 + 0x13a) = 0; - *(short *)(param_1 + 0x13c) = 0; - *(short *)(param_1 + 0x13e) = 0; - *(short *)(param_1 + 0xA) = *(short *)(param_1 + 0xA) + 0x48; - *(short *)(*(int *)(param_1 + 0x20) + 0x10) = 0; - ((void (*)(void))func_801553C0)(); - func_80154A74(param_1, 0x11); -} - - -DEFINE_func_8015D480() /* dedup: shared engine-core @0x8015D480 (src/shared) */ - -DEFINE_func_8015D4B4() /* dedup: shared engine-core @0x8015D4B4 (src/shared) */ - - - -s32 func_8015D4E8(s16 *a0) { - - extern void (*D_8018C23C[])(void); - D_8018C23C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015D524() /* dedup: shared engine-core @0x8015D524 (src/shared) */ - -DEFINE_func_8015D544() /* dedup: shared engine-core @0x8015D544 (src/shared) */ - -DEFINE_func_8015D57C() /* dedup: shared engine-core @0x8015D57C (src/shared) */ - - -// @class: loose-typing -// @stuck: none — MATCH (field 0xb8 compared as u16 == 0x8000, not s16 == -0x8000) - -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern void func_80154A74(int, int); -extern s32 func_80161208(); -extern void func_80154150(int, int); -extern void func_80146CA0(void *a0); -extern void func_80149374(int, int); - -extern unsigned char D_8018C248[]; - -void func_8015D5E8(int param_1) -{ - int iVar1; - int iVar2; - - if (((int (*)(void))func_80161B18)() != 0) - return; - if (((int (*)(int))func_80161B84)(param_1) != 0) - return; - if ((*(unsigned short *)(param_1 + 0xb8) & 0x4000) != 0) - func_80154A74(param_1, 0x17); - if (((int (*)(int))func_80161208)(param_1) != 0) - return; - if (*(unsigned short *)(param_1 + 0xb8) == 0x8000) { - *(int *)(param_1 + 0x234) = *(int *)(param_1 + 0x234) + -3; - func_80154150(param_1, 0x1a); - ((void (*)(int))func_80146CA0)(param_1); - } else { - iVar1 = *(int *)(param_1 + 0x178); - if (iVar1 != 0) { - iVar2 = *(int *)(param_1 + 0x234); - *(int *)(param_1 + 0x234) = iVar2 + 1; - *(short *)(iVar1 + 6) = - (short)((signed char)D_8018C248[iVar2] + - *(unsigned short *)(*(int *)(iVar1 + 0x78) + 0xc)); - iVar2 = *(int *)(param_1 + 0x234); - *(int *)(param_1 + 0x234) = iVar2 + 1; - *(short *)(iVar1 + 10) = - (short)((signed char)D_8018C248[iVar2] + - *(unsigned short *)(*(int *)(iVar1 + 0x78) + 0xe)); - iVar2 = *(int *)(param_1 + 0x234); - *(int *)(param_1 + 0x234) = iVar2 + 1; - *(short *)(iVar1 + 0xe) = - (short)((signed char)D_8018C248[iVar2] + - *(unsigned short *)(*(int *)(iVar1 + 0x78) + 0x10)); - func_80149374(param_1, iVar1 + 4); - } - } -} - - - -extern int func_80148AFC(void*); -extern s32 func_80161B18(void *); -extern s32 func_80161B84(void *); -extern u16 func_80148800(s32*); -extern u8 func_8014BEF8(void); -extern s32 func_80165624(s32); -extern s32 func_801488A8(u8*); -extern void func_8014D738(void); -extern s32 func_80161208(); -extern void func_80154A74(s32, s32); -extern void func_8015DAC4(s32*); -extern void func_8015DE24(s32*); -extern void func_8015DA5C(s32); -extern void func_8015F948(s32*); -extern void func_800CAF14(void *); -extern void func_80154150(s32, s32); -extern void func_80146DB8(s32*, s32*); -extern void func_80147A84(s32); -extern void func_801473EC(s32*); -extern void func_80149374(s32, s32); -extern void func_80147078(s32*, s16); -extern void func_80159B70(void *); -extern void func_8015C714(void *); -extern void func_801483E8(void); - -extern void (*D_8018C004[])(void *); -extern u8 D_80078E78[]; -extern u8 D_8018C248[]; - -void func_8015D738(void *arg0) { - - extern u8 D_8018BFC8[]; - extern u8 D_8018BFD8[]; - u8 *p = D_80078E78; - s32 s1; - ((void (*)(void))func_80148AFC)(); - if (func_80161B18(arg0) != 0) return; - if (func_80161B84(arg0) != 0) return; - s1 = *(s32 *)((char *)arg0 + 0x178); - if (s1 != 0) { - if (*(u16 *)s1 == 0x360) goto block_808; - } - __asm__ __volatile__(""); - if (s1 != 0) { - if (*(u16 *)s1 != 0) goto block_7F4; - } - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; -block_7F4: - if (((s32 (*)(void *))func_80148800)(arg0) & 0x80) { - block_808: - ((void (*)(void *, s32))func_80154A74)(arg0, 0x11); - ((void (*)(void *))func_8015DAC4)(arg0); - return; - } - if ((((s32 (*)(void *))func_80148800)(arg0) & 0x10) && ((s32 (*)(void *))func_8014BEF8)(arg0) != 0) { - ((void (*)(void *, s32))func_80154A74)(arg0, 0x11); - ((void (*)(void *))func_8015DE24)(arg0); - return; - } - if ((((s32 (*)(void *))func_80148800)(arg0) & 0x20) && p[0x49] == 0xA) { - if (((s32 (*)(void *))func_80165624)(arg0) != 0) { - ((void (*)(void *))func_8015DA5C)(arg0); - ((void (*)(void *))func_8015F948)(arg0); - return; - } - ((void (*)(void *, s32))func_80154A74)(arg0, 0x11); - func_800CAF14(arg0); - return; - } - if (((s32 (*)(void *))func_801488A8)(arg0) != 0 && *(u16 *)(*(s32 *)((char *)arg0 + 0x178)) != 0x82) { - ((void (*)(void *, s32))func_80154150)(arg0, 0x1B); - ((void (*)(void *, void *))func_80146DB8)(arg0, &D_8018BFC8); - } else { - ((void (*)(void *, s32))func_80154150)(arg0, 0x1A); - ((void (*)(void *, void *))func_80146DB8)(arg0, &D_8018BFD8); - } - ((void (*)(void *))func_80147A84)(arg0); - ((void (*)(void *))func_801473EC)(arg0); - s1 = *(s32 *)((char *)arg0 + 0x178); - *(s16 *)(s1 + 6) = (s16)((s8)D_8018C248[*(s32 *)((char *)arg0 + 0x234)] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0xc)); - *(s16 *)(s1 + 0xa) = (s16)((s8)D_8018C248[*(s32 *)((char *)arg0 + 0x234) + 1] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0xe)); - *(s16 *)(s1 + 0xe) = (s16)((s8)D_8018C248[*(s32 *)((char *)arg0 + 0x234) + 2] + *(u16 *)(*(s32 *)(s1 + 0x78) + 0x10)); - ((void (*)(void *, void *))func_80149374)(arg0, (void *)(s1 + 4)); - *(s16 *)(*(s32 *)(s1 + 0x20) + 0x12) = (*(u16 *)(*(s32 *)((char *)arg0 + 0x20) + 0x12) + 0x800) & 0xFFF; - if (((s32 (*)(void *))func_8014D738)(arg0) != 0) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 9); - func_8015C714(arg0); - return; - } - if (func_80161208(arg0) != 0) return; - ((void (*)(void *))func_801483E8)(arg0); -} - - -DEFINE_func_8015DA5C() /* dedup: shared engine-core @0x8015DA5C (src/shared) */ - -DEFINE_func_8015DA90() /* dedup: shared engine-core @0x8015DA90 (src/shared) */ - -DEFINE_func_8015DAC4() /* dedup: shared engine-core @0x8015DAC4 (src/shared) */ - - - -void func_8015DAF8(s32 *a0) { - - extern void (*D_8018C27C[])(void); - D_8018C27C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015DB34() /* dedup: shared engine-core @0x8015DB34 (src/shared) */ - -DEFINE_func_8015DB6C() /* dedup: shared engine-core @0x8015DB6C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015F89C/func_8015F9A4 in same overlay) - -extern void (*D_8018C004[])(void *); -extern int func_8015DD74(int); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); -extern void func_8015DCB8(s32 a0); - -void func_8015DBD4(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x4000) { - ((void (*)(void))func_8015DD74)(); - } - if (*(u16 *)((u8 *)arg0 + 0xB8) == 0x8000) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x178) != 0) { - ((void (*)(void *))func_8015DCB8)(arg0); - } - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015DC84() /* dedup: shared engine-core @0x8015DC84 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (proxy gate) - -extern s8 D_8018C284[]; -extern void func_80149374(s32 a0, s32 a1); - -void func_8015DCB8(s32 param_1) { - s32 iVar1; - s32 iVar2; - - iVar2 = *(s32 *)(param_1 + 0x178); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 6) = (s16)D_8018C284[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 10) = (s16)D_8018C284[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 0xe) = (s16)D_8018C284[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); - - func_80149374(param_1, iVar2 + 4); -} - - -DEFINE_func_8015DD74() /* dedup: shared engine-core @0x8015DD74 (src/shared) */ - -DEFINE_func_8015DDF0() /* dedup: shared engine-core @0x8015DDF0 (src/shared) */ - -DEFINE_func_8015DE24() /* dedup: shared engine-core @0x8015DE24 (src/shared) */ - - - -void func_8015DE58(s32 *a0) { - - extern void (*D_8018C29C[])(void); - D_8018C29C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015DE94() /* dedup: shared engine-core @0x8015DE94 (src/shared) */ - -DEFINE_func_8015DECC() /* dedup: shared engine-core @0x8015DECC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015F89C/func_8015F9A4 in same overlay) - -extern void (*D_8018C004[])(void *); -extern int func_8015E0D4(int); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); -extern void func_8015E018(s32 a0); - -void func_8015DF34(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x4000) { - ((void (*)(void))func_8015E0D4)(); - } - if (*(u16 *)((u8 *)arg0 + 0xB8) == 0x8000) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x178) != 0) { - ((void (*)(void *))func_8015E018)(arg0); - } - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015DFE4() /* dedup: shared engine-core @0x8015DFE4 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (proxy gate) - -extern s8 D_8018C284[]; -extern void func_80149374(s32 a0, s32 a1); - -void func_8015E018(s32 param_1) { - s32 iVar1; - s32 iVar2; - - iVar2 = *(s32 *)(param_1 + 0x178); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 6) = (s16)D_8018C284[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xc); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 10) = (s16)D_8018C284[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0xe); - - iVar1 = *(s32 *)(param_1 + 0x234); - *(s32 *)(param_1 + 0x234) = iVar1 + 1; - *(s16 *)(iVar2 + 0xe) = (s16)D_8018C284[iVar1] + *(s16 *)(*(s32 *)(iVar2 + 0x78) + 0x10); - - func_80149374(param_1, iVar2 + 4); -} - - -DEFINE_func_8015E0D4() /* dedup: shared engine-core @0x8015E0D4 (src/shared) */ - -DEFINE_func_8015E150() /* dedup: shared engine-core @0x8015E150 (src/shared) */ - -DEFINE_func_8015E184() /* dedup: shared engine-core @0x8015E184 (src/shared) */ - - - -s32 func_8015E1B8(s32 a0) { - - extern void (*D_8018C2BC[])(void); - D_8018C2BC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015E1F4() /* dedup: shared engine-core @0x8015E1F4 (src/shared) */ - -DEFINE_func_8015E22C() /* dedup: shared engine-core @0x8015E22C (src/shared) */ - -DEFINE_func_8015E288() /* dedup: shared engine-core @0x8015E288 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (pending whole-binary gate); fn-ptr table folds %lo via extern array, 0x234 single word store - - -extern void func_8015E40C(s32 a0); -extern s32 func_80161B18(void *a0); -extern s32 func_80161B84(void *a0); -extern s32 func_80161208(); -extern void func_8015E5B0(u8*); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159BE4(s32 arg0); - -extern void (*D_8018C004[])(void*); - -void func_8015E344(u16 *param_1) -{ - ((s32 (*)(void))func_8015E40C)(); - if (((s32 (*)(u16 *))func_80161B18)(param_1) == 0 && - ((s32 (*)(u16 *))func_80161B84)(param_1) == 0 && - ((s32 (*)(u16 *))func_80161208)(param_1) == 0) { - if ((param_1[0x5c] & 0x4000) != 0) { - ((void (*)(u16 *))func_8015E5B0)(param_1); - *(s32 *)((char *)param_1 + 0x234) = 1; - } - if ((param_1[0x5c] & 0x8000) != 0) { - ((void (**)(u16*))D_8018C004)[param_1[0]](param_1); - ((s32 (*)(u16 *, s32))func_80147078)(param_1, 0); - ((s32 (*)(u16 *))func_80159BE4)(param_1); - } - } -} - - -DEFINE_func_8015E40C() /* dedup: shared engine-core @0x8015E40C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (pending whole-binary gate); s16 v[3] array forces all 3 locals addressable (reload-from-stack), u16* psVar1 → lhu null/flag check - - -extern u16 D_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; - -extern void func_80149350(s32 arg0); -extern void func_80013E94(void *a0, void *a1); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); - -void func_8015E4B0(s32 param_1) -{ - u16 *psVar1; - s16 v[3]; - s32 local_10; - - psVar1 = *(u16 **)(param_1 + 0x18c); - if ((psVar1 != (u16 *)0) && (*psVar1 != 0)) { - v[0] = D_8018C2CC + *(u16 *)(*(s32 *)(psVar1 + 0x3c) + 0xc); - v[1] = D_8018C2CE + *(s16 *)(*(s32 *)(psVar1 + 0x3c) + 0xe) * 2; - v[2] = D_8018C2D0 + *(u16 *)(*(s32 *)(psVar1 + 0x3c) + 0x10); - ((s32 (*)(s32, s16 *, s16 *))func_80149350)(param_1, &v[0], &v[0]); - ((s32 (*)(s32 *, s32 *))func_80013E94)(&D_8018C2D4, &local_10); - ((s32 (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x1f, param_1, v[0], v[1], v[2], local_10, 0); - } - return; -} - - - - -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; - -void func_8015E588(void) { - func_8013C9C4(&D_8018C2DC); -} - - -DEFINE_func_8015E5B0() /* dedup: shared engine-core @0x8015E5B0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (clean -O2 reconstruction; table-of-fnptr indexed by param_1[0]) - - -extern s32 func_80161208(); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159BE4(s32 arg0); - -/* function-pointer dispatch table */ -extern void (*D_8018C004[])(void*); - -void func_8015E698(u16 *param_1) -{ - if (func_80161208() == 0 && (param_1[0x5c] & 0x8000) != 0) { - ((void (**)(u16*))D_8018C004)[param_1[0]](param_1); - ((void (*)(u16 *, s32))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159BE4)(param_1); - } -} - - -DEFINE_func_8015E714() /* dedup: shared engine-core @0x8015E714 (src/shared) */ - -DEFINE_func_8015E84C() /* dedup: shared engine-core @0x8015E84C (src/shared) */ - -DEFINE_func_8015E880() /* dedup: shared engine-core @0x8015E880 (src/shared) */ - -DEFINE_func_8015E8B4() /* dedup: shared engine-core @0x8015E8B4 (src/shared) */ - - - -void func_8015E8E8(s32 *a0) { - - extern void (*D_8018C2F0[])(void); - D_8018C2F0[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015E924() /* dedup: shared engine-core @0x8015E924 (src/shared) */ - -DEFINE_func_8015E95C() /* dedup: shared engine-core @0x8015E95C (src/shared) */ - -DEFINE_func_8015E9B8() /* dedup: shared engine-core @0x8015E9B8 (src/shared) */ - - -extern u16 func_801487F4(s32*); -extern void func_80147078(s32*, s16); -extern void func_80159B70(void *a0); -extern s32 func_80149D10(s32); -extern void func_80175150(void *a0); -extern void func_8016EE40(s32 a0, s32 a1); -extern s32 func_80149744(struct S_80149744*); -extern void func_80149788(void); -extern s32 func_80161B84(void *a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8014A4FC(void); -extern s32 func_80149AA8(s32*); -extern void func_80149AD4(s32*); -extern s32 func_80149B54(s32*); -extern void func_80149BAC(s32*); -extern s32 func_800CF8B4(void); -extern s32 func_801491C4(s32); -extern s32 func_80148E54(void *a0); -extern void func_8001382C(s32 a0, void *a1, void *a2); -extern void func_80146DB8(s32*, s32*); -extern void func_80147A84(s32); -extern void func_801473EC(s32*); -extern void func_80154150(s32, s32); -extern void func_8014D738(void); -extern void func_8015C714(void *a0); -extern s32 func_80161208(); /* canonical no-proto (§17a-1) */ -extern void func_801483E8(void); - -extern void (*D_8018C004[])(void *); - -void func_8015EA3C(void *arg0) { - - extern s16 D_801152A0; - s32 invec[4]; - s32 outbuf[4]; - s32 temp; - s32 r; - - if (!(((s32 (*)(void))func_801487F4)() & 8)) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; - } - r = ((s32 (*)(void *))func_80149D10)(arg0); - if (r == 1) goto Lcase1; - if (r < 2) goto Ldefault; - if (r == 2) goto Lcase2; - goto Ldefault; -Lcase1: - D_8018C004[*(u16 *)arg0](arg0); - func_80175150(arg0); - return; -Lcase2: - func_8016EE40(*(s32 *)((u8 *)arg0 + 0x21C), 0x01000000); - return; -Ldefault: - if (((s32 (*)(void *))func_80149744)(arg0) != 0) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *))func_80149788)(arg0); - return; - } - if (func_80161B84(arg0) != 0) { - return; - } - if (func_8014A4B4(arg0) != 0) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *))func_8014A4FC)(arg0); - return; - } - if (((s32 (*)(void *))func_80149AA8)(arg0) != 0) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *))func_80149AD4)(arg0); - return; - } - if (((s32 (*)(void *))func_80149B54)(arg0) != 0) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *))func_80149BAC)(arg0); - return; - } - if (func_800CF8B4() != 0) { - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12) = - ((*(u16 *)&D_801152A0) + ((s32 (*)(void *))func_801491C4)(arg0)) & 0xFFF; - } - temp = func_80148E54(arg0); - if ((s16)temp >= 0) { - s32 d = temp - *(u16 *)(*(s32 *)((u8 *)arg0 + 0x20) + 0x12); - invec[0] = 0; - invec[1] = 0; - invec[2] = 0xFFFC0000; - func_8001382C((s16)d, invec, outbuf); - ((void (*)(void *, void *))func_80146DB8)(arg0, outbuf); - ((void (*)(void *))func_80147A84)(arg0); - ((void (*)(void *))func_801473EC)(arg0); - ((void (*)(void *, s32))func_80154150)(arg0, 0x1E); - } else { - ((void (*)(void *, s32))func_80154150)(arg0, 0x1D); - } - if (((s32 (*)(void *))func_8014D738)(arg0) != 0) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 9); - func_8015C714(arg0); - return; - } - if (((s32 (*)(s32))func_80161208)(arg0) == 0) { /* §17a-1 */ - ((void (*)(void *))func_801483E8)(arg0); - } -} - - -DEFINE_func_8015ED6C() /* dedup: shared engine-core @0x8015ED6C (src/shared) */ - -DEFINE_func_8015EDA0() /* dedup: shared engine-core @0x8015EDA0 (src/shared) */ - -DEFINE_func_8015EDD4() /* dedup: shared engine-core @0x8015EDD4 (src/shared) */ - - - -s32 func_8015EE08(s32 a0) { - - extern void (*D_8018C2F8[])(void); - D_8018C2F8[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015EE44() /* dedup: shared engine-core @0x8015EE44 (src/shared) */ - - -// @class: plumbing -// @stuck: none — MATCH (straight STUB call sequence; param saved to $s0 across calls) - -extern void func_8014CBF8(void *a0); -extern void func_801474EC(s32 *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); - -extern int D_800D4C48; -extern int D_8018BFE8; - -void func_8015EE7C(s32 param_1) -{ - ((int (*)(void))func_8014CBF8)(); - ((int (*)(int))func_801474EC)(param_1); - ((int (*)(int, void *))func_80154274)(param_1, &D_800D4C48); - ((int (*)(int, void *))func_80146DB8)(param_1, &D_8018BFE8); - ((int (*)(int, int))func_801477E8)(param_1, 0xFFF40000); - ((int (*)(int))func_80146CA0)(param_1); -} - - - -extern void (*D_8018C004[])(void *); - -extern void func_80148038(s32 a0, s32 a1); -extern void func_80147460(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80161418(void *a0); -extern s32 func_801725A4(u8 *a0); - -void func_8015EEE0(void *arg0) -{ - ((void (*)(void *, s32))func_80148038)(arg0, 0x10000); - ((void (*)(void *))func_80147460)(arg0); - ((void (*)(void *, s32, s32, s32))func_80147AD4)(arg0, 0, 0, 0x1000); - ((void (*)(void *))func_801473EC)(arg0); - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x8000) { - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s32))func_80147078)(arg0, 0); - func_80159B70(arg0); - } else { - if (((s32 (*)(void *))func_80161418)(arg0) == 0) { - ((void (*)(void *))func_801725A4)(arg0); - } - } -} - - -DEFINE_func_8015EF9C() /* dedup: shared engine-core @0x8015EF9C (src/shared) */ - -DEFINE_func_8015EFA4() /* dedup: shared engine-core @0x8015EFA4 (src/shared) */ - -DEFINE_func_8015EFD8() /* dedup: shared engine-core @0x8015EFD8 (src/shared) */ - - - -void func_8015F00C(s32 *a0) { - - extern void (*D_8018C300[])(void); - D_8018C300[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015F048() /* dedup: shared engine-core @0x8015F048 (src/shared) */ - -DEFINE_func_8015F080() /* dedup: shared engine-core @0x8015F080 (src/shared) */ - -extern s32 D_80062BE8; -extern void (*D_8018C004[])(void *); -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_8014AB5C(void); -extern void func_80159B70(void *a0); -extern void func_80019064(void *a0); -extern void func_80147324(s32 a0); -extern s32 func_80161208(void); -extern int func_80155FF8(int arg, int a1); - -void func_8015F118(void *a0) { - u16 flag; - - *(s32 *)((u8 *)a0 + 0x44) = *(s32 *)((u8 *)a0 + 0x44) | 2; - flag = *(u16 *)((u8 *)a0 + 0xB8); - if (flag == 0x8000) { - (*D_8018C004[*(u16 *)a0])(a0); - ((void (*)(void *, s32))func_80147078)(a0, 0); - func_80159B70(a0); - } else { - if (flag & 0x4000) { - ((void (*)(s32))func_8014AB5C)(0x19); - ((void (*)(s32))func_8014AB5C)(0x1D); - func_801466F0(0x19, (s32)a0, 0, 0, 0, 0, 0, 1); - func_801466F0(0x19, (s32)a0, 0, 0, 0, 1, 0, 1); - func_801466F0(0x1D, (s32)a0, 0, 0, 0, 0, 0, 1); - func_80019064(&D_80062BE8); - func_80147324(0x9DA); - } - if (((s32 (*)(s32 *))func_80161208)(a0) == 0) { - func_80155FF8((int)a0, *(u8 *)((u8 *)a0 + 0x1AA)); - } - } -} - - -DEFINE_func_8015F260() /* dedup: shared engine-core @0x8015F260 (src/shared) */ - -DEFINE_func_8015F2BC() /* dedup: shared engine-core @0x8015F2BC (src/shared) */ - -DEFINE_func_8015F2F0() /* dedup: shared engine-core @0x8015F2F0 (src/shared) */ - - - -void func_8015F324(s32 *a0) { - - extern void (*D_8018C308[])(void); - D_8018C308[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015F360() /* dedup: shared engine-core @0x8015F360 (src/shared) */ - -DEFINE_func_8015F380() /* dedup: shared engine-core @0x8015F380 (src/shared) */ - - -extern void (*D_8018C004[])(void *); - -extern s32 func_80149884(void); -extern s32 func_801496D4(void*); -extern void func_80149724(void); -extern void func_801477E8(s32*, s32); -extern u16 func_80148800(s32*); -extern s32 func_80148980(u8*); -extern void func_8014F1F4(void); -extern void func_8014FCFC(void); -extern s32 func_80146A6C(s32, void*, s32, s32, s32, s32, s32); -extern void func_80147A84(s32 a0); -extern void func_801473EC(s32*); -extern void func_80146DB8(s32*, s32*); -extern void func_80146E90(s32*, s32); -extern void func_8014ED28(s32 a0); -extern void func_8014FA04(s32 a0); -extern s32 func_801725B8(u8*); -extern void func_80147324(s32 a0); -extern void func_80019064(void*); -extern void func_801484B0(s32, s32); -extern void func_80148534(s32, s32); - -void func_8015F448(s32 arg0) { - - extern u8 D_80062BD0; - extern s32 D_8018C310; - extern s32 D_8018C320; - extern s32 D_8018C330; - s32 sp20[2]; - s32 sp28[2]; - - if (((*(u32 *)(arg0 + 0x44) & 0x100) && (func_80149884() != 0)) || - (((s32 (*)(s32))func_801496D4)(arg0) != 0)) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - *(u8 *)(arg0 + 0x1BE) = 0xA; - ((void (*)(s32))func_80149724)(arg0); - ((void (*)(s32, s32))func_801477E8)(arg0, 0); - return; - } - - if (*(u8 *)(arg0 + 0x245) == 0) { - if (*(u8 *)(arg0 + 0x244) == 0) { - if (((s32 (*)(s32))func_80148800)(arg0) & 0x10) { - *(u8 *)(arg0 + 0x244) = 1; - *(u8 *)(arg0 + 0x245) = 1; - } - } else if (((s32 (*)(s32))func_80148800)(arg0) & 0x80) { - *(u8 *)(arg0 + 0x244) = 0; - *(u8 *)(arg0 + 0x245) = 1; - } - } - - if (*(u16 *)(arg0 + 0xB8) & 0x3000) { - if (*(u16 *)(arg0 + 0xB8) & 0x2000) { - ((void (*)(void *, void *))func_801484B0)(sp20, sp28); - func_80147324(0x56D); - } else { - ((void (*)(void *, void *))func_80148534)(sp20, sp28); - func_80147324(0x56E); - } - ((void (*)(s32 *))func_80019064)(&(*(s32 *)&D_80062BD0)); - ((void (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x25, arg0, *(s16 *)(arg0 + 6), - (s16)(*(u16 *)(arg0 + 0xA) - 0x14), - *(s16 *)(arg0 + 0xE), 0, 0); - ((void (*)(s32, s32, s32, s32, s32, s32, s32))func_80146A6C)(0x25, arg0, *(s16 *)(arg0 + 6), - (s16)(*(u16 *)(arg0 + 0xA) - 0x14), - *(s16 *)(arg0 + 0xE), 1, 0); - } - - if (*(u16 *)(arg0 + 0xB8) & 0x8000) { - if (*(u8 *)(arg0 + 0x245) != 0) { - *(u8 *)(arg0 + 0x245) = 0; - *(u16 *)(arg0 + 0xB8) = *(u16 *)(arg0 + 0xBA); - if (((s32 (*)(s32))func_80148980)(arg0) != 0) { - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018C310); - } else { - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018C320); - } - } - } else { - *(u16 *)(arg0 + 0x246) = *(u16 *)(arg0 + 6); - *(u16 *)(arg0 + 0x248) = *(u16 *)(arg0 + 0xA); - *(u16 *)(arg0 + 0x24A) = *(u16 *)(arg0 + 0xE); - func_80147A84(arg0); - ((void (*)(s32))func_801473EC)(arg0); - if (((s32 (*)(s32))func_8014F1F4)(arg0) != 0) { - *(u16 *)(arg0 + 6) = *(u16 *)(arg0 + 0x246); - *(u16 *)(arg0 + 0xA) = *(u16 *)(arg0 + 0x248); - *(u16 *)(arg0 + 0xE) = *(u16 *)(arg0 + 0x24A); - } - } - - if (((s32 (*)(s32))func_8014FCFC)(arg0) == 0) { - D_8018C004[*(u16 *)arg0]((void *)arg0); - *(u8 *)(arg0 + 0x1BE) = 0xA; - ((void (*)(s32))func_80149724)(arg0); - ((void (*)(s32, s32))func_801477E8)(arg0, 0xFFE80000); - ((void (*)(s32, s32 *))func_80146DB8)(arg0, &D_8018C330); - ((void (*)(s32, s32))func_80146E90)(arg0, 0x10); - return; - } - - func_8014ED28(arg0); - func_8014FA04(arg0); - ((void (*)(s32))func_801725B8)(arg0); -} - - -DEFINE_func_8015F738() /* dedup: shared engine-core @0x8015F738 (src/shared) */ - -DEFINE_func_8015F76C() /* dedup: shared engine-core @0x8015F76C (src/shared) */ - -DEFINE_func_8015F7A0() /* dedup: shared engine-core @0x8015F7A0 (src/shared) */ - - - -s32 func_8015F7D4(s32 a0) { - - extern void (*D_8018C340[])(void); - D_8018C340[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8015F810() /* dedup: shared engine-core @0x8015F810 (src/shared) */ - -DEFINE_func_8015F848() /* dedup: shared engine-core @0x8015F848 (src/shared) */ - - -extern void (*D_8018C004[])(void *); -extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); -extern void func_80147078(s32 *, s16); -extern void func_80159B70(void *); -extern s32 func_80161208(void); - -void func_8015F89C(void *arg0) { - u16 flags = *(u16 *)((u8 *)arg0 + 0xB8); - if (!(flags & 0x4000)) { - if (flags & 0x8000) { - D_8018C004[*(u16 *)arg0](arg0); - func_80147078(arg0, 0); - func_80159B70(arg0); - return; - } - } else { - func_801466F0(1, arg0, 0, -0x1E, 0, 0, 0, 0); - } - ((s32 (*)(void *))func_80161208)(arg0); -} - - -DEFINE_func_8015F948() /* dedup: shared engine-core @0x8015F948 (src/shared) */ - - -extern void (*D_8018C004[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(void); - -void func_8015F9A4(void *arg0) { - if (*(u16 *)((u8 *)arg0 + 0xB8) & 0x8000) { - D_8018C004[*(u16 *)arg0](arg0); - func_80147078(arg0, 0); - func_80159B70(arg0); - } else { - ((s32 (*)(void *))func_80161208)(arg0); - } -} - - -DEFINE_func_8015FA24() /* dedup: shared engine-core @0x8015FA24 (src/shared) */ - -DEFINE_func_8015FA44() /* dedup: shared engine-core @0x8015FA44 (src/shared) */ - -DEFINE_func_8015FA78() /* dedup: shared engine-core @0x8015FA78 (src/shared) */ - - - -void func_8015FAAC(s32 *a0) { - - extern void (*D_8018C34C[])(void); - D_8018C34C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016007C(s32 a0); -extern void (*D_8018C004[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern s32 func_8015BE94(); -extern void func_8015C0C4(s32 a0); -extern void func_8015FBE0(s32 *a0); - -void func_8015FAE8(void *arg0) { - s32 v; - - v = func_801612B8(arg0, 0); - if (v == 0 || v == 0x8000) { - ((void (*)(void *))func_8016007C)(arg0); - *(u32 *)((u8 *)arg0 + 0x184) |= 0x80000000; - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 3); - ((void (*)(void *))func_8015BE94)(arg0); - } else if ((v & 0x4000) != 0) { - ((void (*)(void *))func_8016007C)(arg0); - *(u32 *)((u8 *)arg0 + 0x184) |= 0x80000000; - D_8018C004[*(u16 *)arg0](arg0); - ((void (*)(void *, s16))func_80147078)(arg0, 4); - ((void (*)(void *))func_8015C0C4)(arg0); - } else { - ((void (*)(void *))func_8015FBE0)(arg0); - } -} - - - -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern s32 func_80146A6C(s32, void*, s32, s32, s32, s32, s32); -extern void func_80147324(s32 a0); -extern void func_801553A8(s32 *a0); -extern void func_801553C0(s32 a0); -extern void func_80146CA0(void *a0); - - -void func_8015FBE0(s32 *param_1) -{ - - extern u8 D_800B9A17; - if (param_1[0x61] < 0) { - ((void (**)())D_8018C004)[*(u16 *)param_1](); - ((void (*)(s32 *, s16))func_80147078)(param_1, 0); - ((void (*)(s32 *))func_80159B70)(param_1); - } else { - __asm__ __volatile__(""); - D_80078EC1 = 0; - ((void (*)(s32 *, s32))func_80154150)(param_1, 0x20); - ((void (*)(s32 *, s32))func_80154A74)(param_1, 0x18); - ((void (*)(s32, s32 *, s32, s32, s32, s32, s32))func_80146A6C)(0x16, param_1, 0, 0, 0, 0, 0); - func_80147324(0x44F); - ((void (*)(s32 *))func_801553A8)(param_1); - ((void (*)(s32 *))func_801553C0)(param_1); - D_801270C0 = 2; - D_800B9A17 = 0; - ((void (*)(s32 *))func_80146CA0)(param_1); - } -} - - -extern void func_801599A4(void *a0); - -// @class: struct -// @stuck: none — MATCH (indexed fn-ptr table call + byte-offset struct stores; mirrors sibling func_801599A4 idiom) - -extern s32 D_800AE6B0; -extern void (*D_8018C004[])(void *); - -extern void func_8016007C(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_8015FCC8(void *param_1) { - if ((D_800AE6B0 & 0x80FFFFFF) != 0) { - ((void (*)(void))func_8016007C)(); - D_8018C004[*(u16 *)param_1](param_1); - ((void (*)(void *, s32))func_80147078)(param_1, 0); - func_80159B70(param_1); - } else { - *(u8 *)((s32)param_1 + 0x197) = 0; - *(u8 *)((s32)param_1 + 0xBE) = 0; - *(u8 *)((s32)param_1 + 0xBF) = 0; - *(u8 *)((s32)param_1 + 0x1A0) = (u8)*(s32 *)((s32)param_1 + 0x184); - ((s32 (*)(void *, s32))func_8014BFF4)(param_1, 1); - func_80146CA0(param_1); - } -} - - - -// @class: plumbing -// @stuck: none — MATCH expected; simple 3-call sequence with global table index - -extern unsigned int D_8018C360[]; - -extern void func_80147324(s32 arg0); -extern s32 func_8013767C(s32 a0); -extern void func_80146CA0(void *a0); - -void func_8015FD74(int param_1) -{ - ((int (*)(int))func_80147324)(0x18); - *(int *)(param_1 + 0x198) = func_8013767C(D_8018C360[*(unsigned char *)(param_1 + 0x1a0)]); - ((int (*)(int))func_80146CA0)(param_1); -} - - -DEFINE_func_8015FDCC() /* dedup: shared engine-core @0x8015FDCC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (fn-ptr-table dispatch + ushort struct fields) - - -extern void (*D_8018C004[])(void*); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern void func_80154A74(s32 a0, s32 a1); -extern s32 func_80161208(); - -void func_8015FE70(u16 *param_1) -{ - if ((param_1[0x5c] & 0x8000) != 0) { - if (param_1[0x5d] == 0) { - ((void (**)())D_8018C004)[param_1[0]](); - ((void (*)(u16 *, s16))func_80147078)(param_1, 0); - ((void (*)(u16 *))func_80159B70)(param_1); - return; - } - param_1[0x5c] = param_1[0x5d]; - } - if ((param_1[0x5c] & 0x4000) != 0) { - ((void (*)(u16 *, s16))func_80154A74)(param_1, 0x11); - } - ((void (*)(u16 *))func_80161208)(param_1); -} - - - -extern s32 D_800AE6B0; -extern void (*D_8018C004[])(void *); -extern u8 D_80078EC1; -extern u8 D_80078EC2; -extern u16 D_801270C0; - -extern void func_8016007C(s32 a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern u8 func_801656E8(s32 a0, s32 a1); -extern void func_80150820(s32 a0, s32 a1); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_80165670(s32 a0, s32 a1); -extern void func_80165840(void); -extern void func_801658DC(void); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_8016004C(s32 a0); - -void func_8015FF20(void *param_1) { - s32 v2; - u8 cur; - - if ((D_800AE6B0 & 0x80FFFFFF) != 0) { - ((void (*)(void))func_8016007C)(); - D_8018C004[*(u16 *)param_1](param_1); - ((void (*)(void *, s16))func_80147078)(param_1, 0); - func_80159B70(param_1); - return; - } - - v2 = *(s32 *)((s32)param_1 + 0x184); - if (v2 < 0) { - func_80150820((s32)param_1, func_801656E8((s32)param_1, v2 & 0xFF) & 0xFF); - } else { - if (*(u8 *)((s32)param_1 + 0x1A0) != *(u8 *)((s32)param_1 + 0x196)) { - *(u8 *)((s32)param_1 + 0x1A0) = (u8)v2; - *(u8 *)((s32)param_1 + 0x197) = 0; - *(u8 *)((s32)param_1 + 0xBE) = 0; - *(u8 *)((s32)param_1 + 0xBF) = 0; - func_8014BFF4((s32)param_1, 1); - } - - cur = *(u8 *)((s32)param_1 + 0x1A0); - D_80078EC1 = cur; - D_80078EC2 = cur; - func_80165670((s32)param_1, cur); - ((void (*)(void *))func_80165840)(param_1); - ((void (*)(void *))func_801658DC)(param_1); - func_80154A74((s32)param_1, 0x11); - D_801270C0 = 1; - } - - ((void (*)(void *))func_8016004C)(param_1); -} - - -DEFINE_func_8016004C() /* dedup: shared engine-core @0x8016004C (src/shared) */ - -DEFINE_func_8016007C() /* dedup: shared engine-core @0x8016007C (src/shared) */ - -DEFINE_func_801600D0() /* dedup: shared engine-core @0x801600D0 (src/shared) */ - -DEFINE_func_80160104() /* dedup: shared engine-core @0x80160104 (src/shared) */ - - - -void func_80160138(s32 *a0) { - - extern void (*D_8018C3DC[])(void); - D_8018C3DC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160174() /* dedup: shared engine-core @0x80160174 (src/shared) */ - -DEFINE_func_801601AC() /* dedup: shared engine-core @0x801601AC (src/shared) */ - -DEFINE_func_801601E4() /* dedup: shared engine-core @0x801601E4 (src/shared) */ - -DEFINE_func_80160244() /* dedup: shared engine-core @0x80160244 (src/shared) */ - - -extern void (*D_8018C004[])(void*); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); - -void func_801602A4(s32 *a0) { - if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { - ((void (**)())D_8018C004)[*(u16 *)a0](); - func_80154A74((s32)a0, 0x11); - ((void (*)(s32, s32))func_80147078)((s32)a0, 0); - func_80159B70(a0); - } else { - ((s32 (*)(s32 *))func_80161208)(a0); - } -} - - -DEFINE_func_8016032C() /* dedup: shared engine-core @0x8016032C (src/shared) */ - -DEFINE_func_80160334() /* dedup: shared engine-core @0x80160334 (src/shared) */ - -DEFINE_func_80160368() /* dedup: shared engine-core @0x80160368 (src/shared) */ - - - -void func_8016039C(s32 *a0) { - - extern void (*D_8018C3EC[])(void); - D_8018C3EC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_801603D8() /* dedup: shared engine-core @0x801603D8 (src/shared) */ - -DEFINE_func_80160410() /* dedup: shared engine-core @0x80160410 (src/shared) */ - - - - - - - -/* data */ -extern u8 D_80078EC0; -extern u8 D_80078EBF; -extern void (*D_8018C004[])(void *); - -/* callees (engine_core.h canonical sigs) */ -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80149AA8(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern s32 func_80146E98(s32 a0); -extern u16 func_801487F4(s32 *a0); -extern void func_8015E9B8(s32 *a0); -extern void func_80159B70(void *a0); -extern s32 func_800CF8B4(); -extern s32 func_801491C4(s32 a0); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_801473EC(s32 *a0); -extern void func_8014D738(void); -extern void func_8015C714(void *a0); -extern s32 func_80161208(); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_8015F00C(s32 *a0); - -void func_80160534(u8 *p) { - - extern s16 D_801152A0; - func_80149020((s32 *)p); - func_80149034((s32 *)p); - if ((D_80078EC0 & 0x7F) != 0 && (func_80148800((s32 *)p) & 0x90) != 0) { - if (D_80078EBF == 0x80) { - D_8018C004[*(u16 *)p](p); - func_80147078((s32 *)p, 0x13); - func_8015F00C((s32 *)p); - return; - } - if (func_80149B54((s32 *)p) != 0) { - D_8018C004[*(u16 *)p](p); - func_80149BAC((s32 *)p); - return; - } - } - if (func_80149AA8((s32 *)p) != 0) { - D_8018C004[*(u16 *)p](p); - func_80149AD4((s32 *)p); - return; - } - if (func_80146E98((s32)p) != 0) { - if ((func_801487F4((s32 *)p) & 8) != 0) { - D_8018C004[*(u16 *)p](p); - func_80147078((s32 *)p, 0x11); - func_8015E9B8((s32 *)p); - } else { - D_8018C004[*(u16 *)p](p); - func_80147078((s32 *)p, 0); - func_80159B70(p); - } - return; - } - if (func_800CF8B4() != 0) { - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) = - ((*(u16 *)&D_801152A0) + func_801491C4((s32)p)) & 0xFFF; - } - func_80147AD4((s32)p, *(s32 *)(p + 0x234), *(s32 *)(p + 0x238), - *(s32 *)(p + 0x23C)); - func_801473EC((s32 *)p); - if (((s32 (*)(s32 *))func_8014D738)((s32 *)p) != 0) { - D_8018C004[*(u16 *)p](p); - func_80147078((s32 *)p, 9); - func_8015C714(p); - } else { - ((s32 (*)(void *))func_80161208)(p); - } -} - - -DEFINE_func_801607B8() /* dedup: shared engine-core @0x801607B8 (src/shared) */ - -DEFINE_func_801607E4() /* dedup: shared engine-core @0x801607E4 (src/shared) */ - -DEFINE_func_80160818() /* dedup: shared engine-core @0x80160818 (src/shared) */ - - - -void func_8016084C(s32 *a0) { - - extern void (*D_8018C3F4[])(void); - D_8018C3F4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160888() /* dedup: shared engine-core @0x80160888 (src/shared) */ - -DEFINE_func_801608C0() /* dedup: shared engine-core @0x801608C0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (function-pointer table folds %lo via extern array indexed by halfword) - - -extern void (*D_8018C004[])(void*); - -extern u16 func_801487F4(s32 *a0); -extern s32 func_80161208(); -extern void func_80160A74(s32 *a0); -extern void func_80154150(s32 a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_80160920(unsigned short *param_1) -{ - if ((((int (*)(void))func_801487F4)() & 8) == 0) { - ((code *)D_8018C004)[*param_1](param_1); - ((void (*)(unsigned short *))func_80160A74)(param_1); - } else { - if (((int (*)(unsigned short *))func_80161208)(param_1) == 0 && param_1[0x5c] == 0x8000) { - ((void (*)(unsigned short *, int))func_80154150)(param_1, 0x25); - ((void (*)(unsigned short *))func_80146CA0)(param_1); - } - } - return; -} - - - - -// @class: struct -// @stuck: none — MATCH (pending byte-gate); function-pointer table %lo-fold via extern array - - -extern u16 func_801487F4(s32 *a0); -extern void func_80160A74(s32 *a0); -extern s32 func_80161208(); - -/* function-pointer dispatch table; indexed by *param_1 (×4 = ptr size) */ -extern void (*D_8018C004[])(void*); - -void func_801609B8(u16 *param_1) { - if ((((u32 (*)(void))func_801487F4)() & 8) == 0) { - ((void (**)(u16*))D_8018C004)[*param_1](param_1); - ((void (*)(u16 *))func_80160A74)(param_1); - } else { - ((void (*)(u16 *))func_80161208)(param_1); - } -} - - -DEFINE_func_80160A28() /* dedup: shared engine-core @0x80160A28 (src/shared) */ - -DEFINE_func_80160A74() /* dedup: shared engine-core @0x80160A74 (src/shared) */ - -DEFINE_func_80160ACC() /* dedup: shared engine-core @0x80160ACC (src/shared) */ - -DEFINE_func_80160B00() /* dedup: shared engine-core @0x80160B00 (src/shared) */ - - - -s32 func_80160B34(s32 a0) { - - extern void (*D_8018C400[])(void); - D_8018C400[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160B70() /* dedup: shared engine-core @0x80160B70 (src/shared) */ - -DEFINE_func_80160BB4() /* dedup: shared engine-core @0x80160BB4 (src/shared) */ - -DEFINE_func_80160C28() /* dedup: shared engine-core @0x80160C28 (src/shared) */ - -DEFINE_func_80160CB4() /* dedup: shared engine-core @0x80160CB4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (mirrors byte-matched func_8015DBD4 in same overlay; dispatch via D_8018C004 + func_80147078/func_80159B70 tail, func_80161208 else) - -extern void (*D_8018C004[])(void *); -extern u16 func_80148800(s32 *a0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); -extern s32 func_80161208(); - -void func_80160D10(void *arg0) { - if (*(u32 *)((u8 *)arg0 + 0x44) & 0x10) { - D_8018C004[*(u16 *)arg0](arg0); - } else { - if (*(s32 *)((u8 *)arg0 + 0x1AC) == 0) { - if ((((s32 (*)(void *))func_80148800)(arg0) & 0xF0) == 0) { - goto dd0; - } - } else { - s32 t = *(s32 *)((u8 *)arg0 + 0x1AC) - 0xAAA8; - *(s32 *)((u8 *)arg0 + 0x1AC) = t; - if (t >= 0) { - goto dd0; - } - } - D_8018C004[*(u16 *)arg0](arg0); - } - ((void (*)(void *, s16))func_80147078)(arg0, 0); - func_80159B70(arg0); - return; -dd0: - ((s32 (*)(void *))func_80161208)(arg0); -} - - -DEFINE_func_80160DEC() /* dedup: shared engine-core @0x80160DEC (src/shared) */ - -DEFINE_func_80160E3C() /* dedup: shared engine-core @0x80160E3C (src/shared) */ - -DEFINE_func_80160E70() /* dedup: shared engine-core @0x80160E70 (src/shared) */ - - -extern void (*D_8018C410[])(void); - -void func_80160EA4(void *a0) { - D_8018C410[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80160EE0() /* dedup: shared engine-core @0x80160EE0 (src/shared) */ - -DEFINE_func_80160F00() /* dedup: shared engine-core @0x80160F00 (src/shared) */ - -DEFINE_func_80160F70() /* dedup: shared engine-core @0x80160F70 (src/shared) */ - -DEFINE_func_80160FE0() /* dedup: shared engine-core @0x80160FE0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH - -extern void func_80149020(s32 *a0); -extern void (*D_8018C004[])(void *); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80159B70(void *a0); - -void func_80161034(void *a0) -{ - func_80149020(a0); - D_8018C004[*(u16 *)a0](a0); - func_80147078(a0, 0); - func_80159B70(a0); -} - - -DEFINE_func_80161094() /* dedup: shared engine-core @0x80161094 (src/shared) */ - -DEFINE_func_801610FC() /* dedup: shared engine-core @0x801610FC (src/shared) */ - -DEFINE_func_80161104() /* dedup: shared engine-core @0x80161104 (src/shared) */ - -DEFINE_func_80161124() /* dedup: shared engine-core @0x80161124 (src/shared) */ - -extern s32 func_801612B8(void *a0, s32 a1); -extern void func_8016130C(void*, s32); -void aF80161208(void *a0) __asm__("func_80161208"); -void aF80161208(void *a0) -{ - ((s32 (*)(s32, u32))func_8016130C)(a0, func_801612B8(a0, 0)); -} - - -DEFINE_func_80161240() /* dedup: shared engine-core @0x80161240 (src/shared) */ - -DEFINE_func_80161278() /* dedup: shared engine-core @0x80161278 (src/shared) */ - -DEFINE_func_801612B8() /* dedup: shared engine-core @0x801612B8 (src/shared) */ - -extern void func_80161240(void *a0); -extern s32 func_801612B8(void * a0, s32 a1); -#define SHB(x) __asm__ __volatile__("" : "=r"(x) : "0"(x)) -#define SHB(x) __asm__("" : "=r"(x) : "0"(x)) - -extern void func_801599A4(void*); -extern void func_8015BDD0(s32*); -extern void func_8015BF48(s32*); - -/* REDRAFT (decay axis: RETURN TYPE). The stored draft had been flipped to - * `void` to fit the fleet header decl in src/shared/engine_core.h, while the - * body still `return 1; / return 0;`. gcc-2.7.2 silently drops the $v0 sets in - * that situation, costing the three `addiu $v0, $zero, 1` / `addu $v0,$zero,$zero` - * instructions the ASM plainly has. Restored to s32 (§109/§85 — the single call - * site `func_8016130C(a0, func_801612B8(a0, 1));` discards the result, so the - * void->s32 widen is caller-neutral and must be fixed on the HEADER side). */ - -/* RECONCILE (§37/§124 asm-label alias — zero header touch). - * Gate error: jr_8015C32C.c:3501 conflicting types for `func_8016130C' - * :3479 previous declaration. - * TU line 3479 is `DEFINE_func_80161240()`, whose expansion (engine_core.h:3781) - * declares `extern void func_8016130C(void *a0, s32 a1);` — a RETURN-TYPE - * disagreement with this draft's required `s32`. The third line the gate quoted - * (:5228 "location of previous definition") is unrelated noise: it is the - * pre-existing `#define SHB(x)` redefinition *warning* between TU lines 5227 and - * 5538, present with or without this draft. - * Fix: the C identifier becomes aF8016130C, so it never collides with the - * canonical `void func_8016130C` declaration, while the GNU asm label makes the - * EMITTED symbol `func_8016130C`. The macro's caller func_80161240 keeps calling - * the `extern void` spelling and is byte-unaffected (it discards the return). - * Codegen for this function is untouched — match_one still MATCH. - * (Alternative, house style, NOT taken here per the no-header-edit rule: widen - * src/shared/engine_core.h:3781 to `extern s32 func_8016130C(void *a0, s32 a1);` - * and rename back to the plain name — byte-identical either way.) */ - -s32 aF8016130C(void *a0, s32 a1) __asm__("func_8016130C"); - -s32 aF8016130C(void *a0, s32 a1) -{ - if ((a1 == 0) || (a1 == 0x8000)) { - func_801599A4(a0); - ((void (*)(void *))func_8015BDD0)(a0); - return 1; - } - if ((a1 & 0x4000) != 0) { - func_801599A4(a0); - ((void (*)(void *))func_8015BF48)(a0); - return 1; - } - return 0; -} - - - -// @class: schedule -// @stuck: none — MATCH - - -DEFINE_func_80161374() /* dedup: shared engine-core @0x80161374 (src/shared) */ - - -DEFINE_func_80161418() /* dedup: shared engine-core @0x80161418 (src/shared) */ - -DEFINE_func_80161450() /* dedup: shared engine-core @0x80161450 (src/shared) */ - -DEFINE_func_80161488() /* dedup: shared engine-core @0x80161488 (src/shared) */ - -DEFINE_func_801614E4() /* dedup: shared engine-core @0x801614E4 (src/shared) */ - -DEFINE_func_8016151C() /* dedup: shared engine-core @0x8016151C (src/shared) */ - -DEFINE_func_80161554() /* dedup: shared engine-core @0x80161554 (src/shared) */ - -DEFINE_func_8016158C() /* dedup: shared engine-core @0x8016158C (src/shared) */ - -DEFINE_func_801615C4() /* dedup: shared engine-core @0x801615C4 (src/shared) */ - - - -// @class: other -// @stuck: first draft — plain if-chain over the flag bits -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern void func_8015BF48(s32 *a0); -extern void func_8015F2F0(s32 *a0); -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80161D20(int param_1, u32 param_2); -extern s32 func_8014A6C4(s32 a0); -extern s32 ratan2(s32 a0, s32 a1); - -s32 func_8016163C(s32 arg0, u32 arg1) { - - extern s16 D_801152B0; - extern s16 D_801152B4; - if (arg1 & 1) { - func_801599A4((void *)arg0); - func_80159B3C((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 1; - } - if (arg1 & 0x4000) { - func_801599A4((void *)arg0); - func_8015BF48((s32 *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 2; - } - if (arg1 & 0x2000) { - func_801599A4((void *)arg0); - func_80159B3C((void *)arg0); - func_8014C010(arg0, 1); - ((void (*)(s32, s32))func_80161D20)(arg0, *(u16 *)(arg0 + 0x16E)); - return 4; - } - if (arg1 & 0x8000) { - if (*(u16 *)(arg0 + 0x16C) != 0x15) { - return 0; - } - if (func_8014A6C4(arg0) != 0) { - func_801599A4((void *)arg0); - func_8015F2F0((s32 *)arg0); - *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = ratan2(D_801152B0, D_801152B4); - return 8; - } - } - return 0; -} - - - -extern void func_8014C010(s32 a0, s32 a1); -extern void func_80161D20(int param_1, u32 param_2); -extern void func_801599A4(void *a0); -extern void func_8015BF48(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015F2F0(s32*); -extern s32 ratan2(s32 x, s32 y); - -s32 func_80161774(int param_1, u32 param_2) { - - extern s16 D_801152B0; - extern s16 D_801152B4; - - if ((param_2 & 1) != 0) { - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 1; - } - if ((param_2 & 0x4000) != 0) { - ((void (*)(int))func_801599A4)(param_1); - ((void (*)(int))func_8015BF48)(param_1); - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 2; - } - if ((param_2 & 0x2000) != 0) { - func_8014C010(param_1, 1); - ((void (*)(s32, s32))func_80161D20)(param_1, *(unsigned short *)(param_1 + 0x16e)); - return 4; - } - if ((param_2 & 0x8000) != 0) { - if (*(unsigned short *)(param_1 + 0x16c) != 0x15) { - return 0; - } - if (func_8014A6C4(param_1) != 0) { - ((void (*)(int))func_801599A4)(param_1); - ((void (*)(int))func_8015F2F0)(param_1); - *(short *)(*(int *)(param_1 + 0x20) + 0x12) = ratan2(D_801152B0, D_801152B4); - return 8; - } - } - return 0; -} - - - -// @class: schedule -// @stuck: none — MATCH - -DEFINE_func_80161888() /* dedup: shared engine-core @0x80161888 (src/shared) */ - - -DEFINE_func_8016191C() /* dedup: shared engine-core @0x8016191C (src/shared) */ - - -DEFINE_func_8016197C() /* dedup: shared engine-core @0x8016197C (src/shared) */ - -DEFINE_func_801619A4() /* dedup: shared engine-core @0x801619A4 (src/shared) */ - -DEFINE_func_801619D0() /* dedup: shared engine-core @0x801619D0 (src/shared) */ - -DEFINE_func_80161A00() /* dedup: shared engine-core @0x80161A00 (src/shared) */ - -DEFINE_func_80161A30() /* dedup: shared engine-core @0x80161A30 (src/shared) */ - -DEFINE_func_80161A60() /* dedup: shared engine-core @0x80161A60 (src/shared) */ - - -DEFINE_func_80161A90() /* dedup: shared engine-core @0x80161A90 (src/shared) */ - - -DEFINE_func_80161B18() /* dedup: shared engine-core @0x80161B18 (src/shared) */ - -DEFINE_func_80161B84() /* dedup: shared engine-core @0x80161B84 (src/shared) */ - -DEFINE_func_80161BE0() /* dedup: shared engine-core @0x80161BE0 (src/shared) */ - - -extern void func_80147324(); - -/* RECONCILE (§17a-1/§20): the TU already declares - * extern void func_80161C24(s32, s32); (jr_8015C32C.c:1474 / :1417) - * so the definition must use (int, int); the unsigned semantics of param_2 - * are restored by a cast at each use (codegen-neutral: sltiu + index math). */ -void func_80161C24(int param_1, int param_2) -{ - - extern unsigned short D_8018C420[]; - extern unsigned short D_8018C422[]; - - if ((unsigned int)param_2 < 8) { - if (*(u8 *)(param_1 + 0xDA) != 0) { - func_80147324(D_8018C420[(unsigned int)param_2 * 2]); - *(u8 *)(param_1 + 0xDA) = 0; - } else { - func_80147324(D_8018C422[(unsigned int)param_2 * 2]); - *(u8 *)(param_1 + 0xDA) = 1; - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (indexed-global %lo-fold via extern u16 array, §18) - -extern u16 D_8018C440[]; -extern void func_80147324(s32 arg0); - -void func_80161C98(int param_1, u32 param_2) -{ - if (param_2 < 8) { - func_80147324(D_8018C440[param_2]); - } - return; -} - - - -// @class: plumbing -// @stuck: none — MATCH (20 ins) -// DECAY AXIS: return type. The stored draft declared `s32 func_80161CD0(...)` with no -// return statement. That kept $v0 live-out at the epilogue, so gcc-2.7.2's delayed-branch -// pass refused to speculatively fill the second `beqz $v0` delay slot from the fall-through -// with `sll $v0, $s0, 1` — costing one extra nop (21 vs 20 ins) and shifting both branch -// displacements. Declaring the function `void` makes $v0 dead at the return and the fill -// happens. Same return-type axis as the wave, opposite direction (s32 -> void). -// param_2 must be UNSIGNED: the guard assembles as `sltiu $v0, $s0, 0x8`. -// -// RECONCILE (§37/§124 asm-label alias) — the ONLY change vs the uc2 draft; the body is -// byte-identical and untouched. -// The real TU src/ov_SC01_077/ov_SC01_077_jr_8015C32C.c already carries the m2c canonical -// declaration -// :23 extern s32 func_80161CD0(s32 a0, s32 a1); /* match-first, arity 2 */ -// :1207 extern s32 func_80161CD0(s32 a0, s32 a1); -// so a plain `void func_80161CD0(int, unsigned int)` definition dies with -// conflicting types for `func_80161CD0' / previous declaration ... (rtu_match CC1 FAIL). -// This is the RETURN axis (s32 vs void) plus the param-2 signedness axis, and BOTH spellings -// are load-bearing for the 20-instruction codegen — conforming the definition to the -// declaration (escape #1) would perturb bytes, so it is not available here. -// The alias fixes it at T0: the C identifier is aF80161CD0 (no declaration to collide with) -// while the EMITTED SYMBOL is func_80161CD0. In-TU callers keep using the `extern s32` -// spelling and are byte-unaffected (they discard the return). Zero tracked files touched; -// no header edit is even possible/needed — grep shows func_80161CD0 has NO declaration in -// include/ or src/shared/, the conflict is purely TU-local m2c boilerplate. -// Exactly the pattern already banked at src/ov_SC03_099/ov_SC03_099_jr_8015C32C.c:3503 -// for the sibling func_8016191C. -// -// NOTE on the third gate diagnostic (`:5223 note: location of previous definition`): that is -// a RED HERRING, unrelated to this function. It is the pre-existing CPP note paired with -// `:5533 warning: "SHB" redefined` — the TU defines the SHB scheduling-barrier macro twice -// (post-splice :5222 with __volatile__, :5533 without). It is a warning, present with or -// without this draft, and it does not fail cc1. - -extern int func_800CF8B4(); -extern void func_80147324(int arg0); - -void aF80161CD0(int param_1, unsigned int param_2) __asm__("func_80161CD0"); - -void aF80161CD0(int param_1, unsigned int param_2) -{ - - extern unsigned short D_8018C450; - if (param_2 < 8) { - if (func_800CF8B4() != 0) { - func_80147324((&D_8018C450)[param_2]); - } - } -} - - - -// @class: struct -// @stuck: none — MATCH (indexed-global %lo-fold via extern u16 array, §18) - -extern void func_80147324(s32 arg0); - -void func_80161D20(int param_1, u32 param_2) -{ - - extern u16 D_8018C460[]; - if (param_2 < 8) { - func_80147324(D_8018C460[param_2]); - } - return; -} - - -DEFINE_func_80161D58() /* dedup: shared engine-core @0x80161D58 (src/shared) */ - - -// @class: other -// @stuck: none — MATCH (short-circuit && chain; reused 0x80FFFFFF mask const, andi-0xFF on callee ret) - -extern s32 D_800AE6B0; -extern s32 D_800AE6A8; -extern s32 func_80029178(s32 arg); -extern void func_80029124(s32, s32); -extern void func_800D1734(void *); -extern s32 D_8018C4A4; - -void func_80161D88(void) { - if ((D_800AE6B0 & 0x80FFFFFF) == 0 && (D_800AE6A8 & 0x80FFFFFF) == 0 && - (func_80029178(0x141) & 0xFF) != 0) { - func_80029124(0x141, 0); - func_80029124(0x95, 1); - func_800D1734(&D_8018C4A4); - } -} - - -// @class: regalloc-order -// @stuck: none — MATCH (175 ins, relocation-masked). Giant, 3 similar guarded blocks. base=&D_800AF630 -// hoisted to $s2 (referenced only to build the 3 stored pointers base+0x65A8/0x65E0/0x6618 -> $s1); -// guard reads (D_800B5BD8/C10/C48) + the "=1" + coord stores use direct symbols. Coord idiom: -// -(s32)(u16)D_800AF7BC/2 + K (negu;srl31;addu;sra1). a2=func_800291DC(8) survives in $s3 for the -// final (a2&0x7FFF)==(s16)D_80078EB0 test. KEY RESIDUAL (cracked): target computes each pointer into -// scratch $v0 then `addu $s1,$v0` (dead-intermediate copy) and stores $s1 — natural C ALWAYS coalesces -// that copy into a direct `addiu $s1,$s2,off` (172 ins, 3 short). Forcing the un-coalesced copy needs -// an explicit `move` inline-asm (an empty "=r"/"0" re-tie is only a barrier, won't emit the copy). -#include "common.h" - - - - - - - -void func_80161E08(s32 param_1) { - extern void func_80024054(void *a0, void *a1); - extern void func_8001CE28(void *a0, void *a1); - extern void func_800242D0(s32 a0, void *a1, s32 a2); - extern void func_8001CE68(void *a0, void *a1); - extern int func_801620C4(void); - extern void func_801622C4(void); - extern u16 D_800AF7BC; - extern u16 D_800AF7BE; - extern s16 D_80078EB0; - extern u16 D_800B5BD8; - extern s16 D_800B5C04; - extern u8 D_800B5BFF; - extern s16 D_800B5BE0; - extern s16 D_800B5BE2; - extern u16 D_800B5C10; - extern s16 D_800B5C3C; - extern u8 D_800B5C37; - extern s16 D_800B5C18; - extern s16 D_800B5C1A; - extern u16 D_800B5C48; - extern s16 D_800B5C74; - extern s16 D_800B5C50; - extern s16 D_800B5C52; - extern u8 * D_801D30D8[]; - extern u8 D_8018C470[]; - extern u8 D_8018C490[]; - extern u8 D_801D30E4[]; - extern u8 D_801D310C[]; - extern u8 D_801D3124[]; - - u8 *base = &(*(u8 *)&D_800AF630); - u8 *p; - s32 a2; - - if (*((u16 *)param_1) != 0x1A && - currentLocationId != 0x3012 && - currentLocationId != 0x3054 && - currentLocationId != 0x3079 && - currentLocationId != 0x3096 && - ((a2 = func_800291DC(8)) & 0x8000) != 0) { - - if (D_800B5BD8 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x65A8)); - D_801D30D8[0] = p; - func_80024054(&D_8018C470, &D_801D30E4); - func_8001CE28(p, &D_801D30E4); - D_800B5C04 = 1; - D_800B5BFF = 1; - D_800B5BE0 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5BE2 = -(s32)(u16)D_800AF7BE / 2 + 0x28; - } - - if (D_800B5C10 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x65E0)); - D_801D30D8[1] = p; - func_80024054(&D_8018C490, &D_801D310C); - func_8001CE28(p, &D_801D310C); - D_800B5C3C = 1; - D_800B5C37 = 1; - D_800B5C18 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5C1A = -(s32)(u16)D_800AF7BE / 2 + 0x30; - } - - if (D_800B5C48 == 0) { - __asm__("move %0,%1" : "=r"(p) : "r"(base + 0x6618)); - D_801D30D8[2] = p; - func_800242D0((s16)func_801620C4(), &D_801D3124, 0x84); - func_8001CE68(p, &D_801D3124); - D_800B5C74 = 1; - D_800B5C50 = -(s32)(u16)D_800AF7BC / 2 + 0xD0; - D_800B5C52 = -(s32)(u16)D_800AF7BE / 2 + 0x10; - } - - func_800242D0((s16)func_801620C4(), &D_801D3124, 0x84); - if ((a2 & 0x7FFF) == (s32)D_80078EB0) { - func_801622C4(); - } - } -} - - - -DEFINE_func_801620C4() /* dedup: shared engine-core @0x801620C4 (src/shared) */ - -DEFINE_func_80162120() /* dedup: shared engine-core @0x80162120 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (do-while scan over 3-entry global; increments placed AFTER the call so p++ schedules between load and jal, i++ into the delay slot) - -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); - -extern int D_801D30D8[]; - -void func_8016216C(void) -{ - int *p; - int i; - - func_800291C8(8, 0); - i = 0; - p = D_801D30D8; - do { - int v = *p; - ((void (*)(int, int))func_80016714)(v, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - - -extern s32 func_800291DC(s32); -extern u8 D_80078E78[]; -extern u8 D_80078EB0; -extern u8 D_80078EB1; -extern s32 D_8018C4A4; - -s32 func_801621CC(s32 arg0) { - register s32 s0 __asm__("$16") = arg0; /* $s0: arg0, crosses the call */ - register u8 *s1 __asm__("$17") = D_80078E78; /* $s1: base, hoisted for the loop */ - register s32 i __asm__("$5"); /* $a1: counter (pin fixes the i/d swap) */ - u32 a2; - s32 d; /* $a0: natural alloc; load via $v0 temp */ - s32 v, last, hi, lo; - char pad[8]; /* phantom 8B local -> frame 0x28 (vars=8) */ - - a2 = func_800291DC(8); - if ((a2 & 0x8000) == 0) { - return 0; - } - a2 &= 0x7FFF; - if (((a2 >> 8) == D_80078EB1) && ((a2 & 0xFF) <= (u32)D_80078EB0)) { - return (s32)&D_8018C4A4; - } - d = s1[0x39] - 1; - i = 0; - if (s0 <= 0) { - return 0; - } - hi = (a2 >> 8) & 0xFF; - last = s0 - 1; - lo = a2 & 0xFF; - do { - if ((s8)d < 0) { - d = 0x17; - } - v = (s8)d; - if (hi == v) { - if (i != last) { - return (s32)&D_8018C4A4; - } - i++; - if ((u32)s1[0x38] < (u32)lo) { - return (s32)&D_8018C4A4; - } - goto bot; - } - i++; - bot: - d--; - } while (i < s0); - return 0; -} - - - - -// @class: schedule -// @stuck: none — MATCH -extern void func_80029124(s32, s32); -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); -extern int D_801D30D8[]; - -void func_801622C4(void) -{ - int *p; - int i; - - ((int (*)(int, int))func_80029124)(0x141, 1); - ((int (*)(int, int))func_800291C8)(8, 0); - i = 0; - p = &D_801D30D8; - do { - ((int (*)(int, int))func_80016714)(*p, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - - -extern void (*D_8018C4C8[])(void); - -void func_80162330(void *a0) { - D_8018C4C8[*(u8 *)((s32)a0 + 0x15)](); -} - - -DEFINE_func_8016236C() /* dedup: shared engine-core @0x8016236C (src/shared) */ - -DEFINE_func_801623B8() /* dedup: shared engine-core @0x801623B8 (src/shared) */ - -DEFINE_func_80162414() /* dedup: shared engine-core @0x80162414 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (160 ins, relocation-masked). Keys: (1) base=&D_800AF630 hoisted, pinned $s2; -// uVar2 UNPINNED (a $s3 pin forced the final `uVar2 & 0x7FFF` in-place+early, breaking the lh delay -// slot). (2) item pinned $s1, dest INLINED (D_801D96Dx in both call args) so it lands $s0 AFTER a0. -// (3) base assigned BEFORE the func_800291DC call so the return-copy `addu $s3,$v0` schedules after -// the base lui/addiu. (4) THE MOVE: each block's `addu $s1,$v0,$zero` = compute `base+off` into a -// $v0-PINNED temp `t`, then `item = t`. Two distinct hard regs ($v0 vs $s1) can't coalesce, forcing -// the exact `addiu $v0,$s2,off ; addu $s1,$v0` pair the target emits (plain `item=base+off` coalesces -// into one `addiu $s1` — 3 ins short). (5) store D_801D3130[i] via `extern int D_801D3130[]` (folds -// %lo, consistent with func_80162760). Coord = (s16)(-D_800AF7Bx / 2 + K) (negu; srl 31; addu; sra 1). - -#include "common.h" - - - - - - - - -s32 func_80162438(s32 _unused0) { - extern void func_80024054(void *, void *); - extern void func_8001CE28(void *, void *); - extern void func_8001CE68(void *, void *); - extern void func_800242D0(s32, void *, s32); - extern s32 func_801626B8(void); - extern void func_80162760(void); - extern u8 D_8018C4D4[]; - extern s32 D_8018C4EC; - extern u8 D_801D313C[]; - extern u8 D_801D3164[]; - extern u8 D_801D3180[]; - extern int D_801D3130[]; - extern u16 D_800B5BD8; - extern u16 D_800B5C10; - extern u16 D_800B5C48; - extern u16 D_800AF7BC; - extern u16 D_800AF7BE; - extern s16 D_800B5BE0; - extern s16 D_800B5BE2; - extern s16 D_800B5C04; - extern u8 D_800B5BFF; - extern s16 D_800B5C18; - extern s16 D_800B5C1A; - extern s16 D_800B5C3C; - extern u8 D_800B5C37; - extern s16 D_800B5C50; - extern s16 D_800B5C52; - extern s16 D_800B5C74; - - u32 uVar2; - register u8 *base __asm__("$18"); - register u8 *item __asm__("$17"); - - base = &(*(u8 *)&D_800AF630); - uVar2 = func_800291DC(0x12); - if ((uVar2 & 0x8000) != 0) { - if (D_800B5BD8 == 0) { - register u8 *t __asm__("$2") = base + 0x65A8; - item = t; - D_801D3130[0] = (s32)item; - func_80024054(D_8018C4D4, D_801D313C); - func_8001CE28(item, D_801D313C); - D_800B5C04 = 1; - D_800B5BFF = 1; - D_800B5BE0 = -D_800AF7BC / 2 + 0xD0; - D_800B5BE2 = -D_800AF7BE / 2 + 0x28; - } - if (D_800B5C10 == 0) { - register u8 *t __asm__("$2") = base + 0x65E0; - item = t; - D_801D3130[1] = (s32)item; - func_80024054(((u8 *)&D_8018C4EC), D_801D3164); - func_8001CE28(item, D_801D3164); - D_800B5C3C = 1; - D_800B5C37 = 1; - D_800B5C18 = -D_800AF7BC / 2 + 0xD0; - D_800B5C1A = -D_800AF7BE / 2 + 0x30; - } - if (D_800B5C48 == 0) { - register u8 *t __asm__("$2") = base + 0x6618; - item = t; - D_801D3130[2] = (s32)item; - func_800242D0((s16)func_801626B8(), D_801D3180, 0x84); - func_8001CE68(item, D_801D3180); - D_800B5C74 = 1; - D_800B5C50 = -D_800AF7BC / 2 + 0xD0; - D_800B5C52 = -D_800AF7BE / 2 + 0x10; - } - func_800242D0((s16)func_801626B8(), D_801D3180, 0x84); - if ((uVar2 & 0x7FFF) == (s32)(*(s16 *)&D_80078EB0)) { - func_80162760(); - } - } -} - - - -DEFINE_func_801626B8() /* dedup: shared engine-core @0x801626B8 (src/shared) */ - -DEFINE_func_80162714() /* dedup: shared engine-core @0x80162714 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (24 ins). do-while; load+call first, then p++ and i++ AFTER the call so gcc schedules p++/arg ahead of jal and i++ into the delay slot. - -extern void func_800291C8(s32, s32); -extern void func_80016714(void *a0, s32 a1); - -extern int D_801D3130[]; - -void func_80162760(void) -{ - int *p; - int i; - - func_800291C8(0x12, 0); - i = 0; - p = D_801D3130; - do { - int v = *p; - ((void (*)(int, int))func_80016714)(v, 0x38); - p = p + 1; - i = i + 1; - } while (i < 3); -} - - -DEFINE_func_801627C0() /* dedup: shared engine-core @0x801627C0 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (19 ins, relocation-masked) -// -// Tiny dispatcher: byte count at D_8011F750 (offset 0 of a 0x58-byte ctl struct; -// cf. func_801627C0 which calls func_80016714(&D_8011F750, 0x58)). If nonzero, -// call D_8018C50C[count - 1]() through a word-stride fn-pointer table. -// -// Two idioms combined to match gcc-2.7.2 -O2: -// 1. The target MATERIALIZES &D_8011F750 (lui;addiu %lo) into $a0 before the lbu -// instead of folding %lo into the load. A direct global byte read always -// %lo-folds (lui;lbu %lo), so force the full-address materialization with the -// §21 re-tie barrier __asm__ __volatile__("":"=r"(p):"0"(p)) and pin the -// pointer to $a0 with register __asm__("$4") to get the exact register. -// 2. Writing `idx = idx - 1;` as its OWN statement (not inline D_8018C50C[count-1]) -// keeps the array index/decrement separate so %lo(D_8018C50C) folds into the -// dispatch load (lw %lo(...)($at)) — the inline form instead constant-folds the -// -1*4 into a -4 load offset and drops the %lo fold (1 ins short, schedule off). - - -void func_801627E8(void) -{ - - extern s32 D_8011F750; /* canonical: engine_core.h `extern s32 D_8011F750;` (read here as a byte) */ - extern void (*D_8018C50C[])(void); /* word-stride table of dispatch fn pointers */ - register u8 *p __asm__("$4") = (u8 *)&D_8011F750; - s32 idx; - - __asm__ __volatile__("" : "=r"(p) : "0"(p)); /* materialize &D_8011F750 into $a0 (defeat %lo-fold of the lbu) */ - idx = *p; - if (idx != 0) { - idx = idx - 1; - D_8018C50C[idx](); - } -} - - - -extern void (*D_8018C510[])(void); - -void func_80162834(void *a0) { - D_8018C510[*(u8 *)((s32)a0 + 0x1)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (stub: alloc + global init + two calls; $s0 holds param_1 across calls) - -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_8018C500; -extern s32 D_800B5CBC; -extern u8 D_800B5CDF; -extern s32 D_800B5CEC; - -void func_80162870(s32 param_1) { - *(s32 *)(param_1 + 8) = (s32)&D_800B5CB8; - func_8001CB6C(&D_800B5CB8, (s32)&D_8018C500, 0x250, 0x1A0); - D_800B5CEC = param_1 + 0xC; - D_800B5CDF = 0x14; - D_800B5CBC |= 0x60000000; - func_80162968(param_1); - func_80162ACC((u8 *)param_1); -} - - -DEFINE_func_801628F4() /* dedup: shared engine-core @0x801628F4 (src/shared) */ - -DEFINE_func_80162968() /* dedup: shared engine-core @0x80162968 (src/shared) */ - -DEFINE_func_80162AC0() /* dedup: shared engine-core @0x80162AC0 (src/shared) */ - -DEFINE_func_80162ACC() /* dedup: shared engine-core @0x80162ACC (src/shared) */ - -DEFINE_func_80162AE0() /* dedup: shared engine-core @0x80162AE0 (src/shared) */ - -DEFINE_func_80162AF4() /* dedup: shared engine-core @0x80162AF4 (src/shared) */ - -DEFINE_func_80162B1C() /* dedup: shared engine-core @0x80162B1C (src/shared) */ - -DEFINE_func_80162CC4() /* dedup: shared engine-core @0x80162CC4 (src/shared) */ - -extern void func_80016714(void *a0, s32 a1); -void aF80162CCC(u8 *a0) __asm__("func_80162CCC"); -DEFINE_func_80162CCC() /* dedup: shared engine-core @0x80162CCC (src/shared) */ - - -DEFINE_func_80162D28() /* dedup: shared engine-core @0x80162D28 (src/shared) */ - -DEFINE_func_80162D88() /* dedup: shared engine-core @0x80162D88 (src/shared) */ - -DEFINE_func_80162DE8() /* dedup: shared engine-core @0x80162DE8 (src/shared) */ - -DEFINE_func_80162E48() /* dedup: shared engine-core @0x80162E48 (src/shared) */ - -DEFINE_func_80162EA8() /* dedup: shared engine-core @0x80162EA8 (src/shared) */ - -DEFINE_func_80162F08() /* dedup: shared engine-core @0x80162F08 (src/shared) */ - -DEFINE_func_80162F60() /* dedup: shared engine-core @0x80162F60 (src/shared) */ - -DEFINE_func_80162F80() /* dedup: shared engine-core @0x80162F80 (src/shared) */ - -DEFINE_func_80162FA0() /* dedup: shared engine-core @0x80162FA0 (src/shared) */ - -DEFINE_func_80162FC0() /* dedup: shared engine-core @0x80162FC0 (src/shared) */ - -DEFINE_func_80162FF4() /* dedup: shared engine-core @0x80162FF4 (src/shared) */ - -DEFINE_func_801630C4() /* dedup: shared engine-core @0x801630C4 (src/shared) */ - -DEFINE_func_80163194() /* dedup: shared engine-core @0x80163194 (src/shared) */ - -DEFINE_func_80163234() /* dedup: shared engine-core @0x80163234 (src/shared) */ - -DEFINE_func_8016325C() /* dedup: shared engine-core @0x8016325C (src/shared) */ - -DEFINE_func_801632E0() /* dedup: shared engine-core @0x801632E0 (src/shared) */ - -DEFINE_func_801632F0() /* dedup: shared engine-core @0x801632F0 (src/shared) */ - -DEFINE_func_80163328() /* dedup: shared engine-core @0x80163328 (src/shared) */ - -DEFINE_func_801633A8() /* dedup: shared engine-core @0x801633A8 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (21 ins, relocation-masked) - - -s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4) { - extern int func_8016345C(int, unsigned short, int, unsigned short, void *); - extern unsigned char D_801D28E4[8]; - - unsigned char sp18[8]; - memcpy(sp18, D_801D28E4, 8); - return func_8016345C(((int)param_1), ((int)param_2), ((int)param_3), ((int)param_4), sp18); -} - - - -DEFINE_func_8016345C() /* dedup: shared engine-core @0x8016345C (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (unaligned 8-byte memcpy from global into stack buffer, then forward to callee) - -extern char D_801D28E4[8]; - -extern void *memcpy(void *dst, const void *src, unsigned int n); -extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); - -void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5) -{ - char buf[8]; - - memcpy(buf, D_801D28E4, 8); - ((void (*)(s32, u16, u16, s32, u16, s32))func_80163534)(param_1, param_2, param_3, param_4, param_5, (s32)buf); -} - - -DEFINE_func_80163534() /* dedup: shared engine-core @0x80163534 (src/shared) */ - - -DEFINE_func_80163664() /* dedup: shared engine-core @0x80163664 (src/shared) */ - -DEFINE_func_801636D0() /* dedup: shared engine-core @0x801636D0 (src/shared) */ - - -DEFINE_func_80163764() /* dedup: shared engine-core @0x80163764 (src/shared) */ - - -DEFINE_func_8016380C() /* dedup: shared engine-core @0x8016380C (src/shared) */ - -DEFINE_func_801638A0() /* dedup: shared engine-core @0x801638A0 (src/shared) */ - -DEFINE_func_80163950() /* dedup: shared engine-core @0x80163950 (src/shared) */ - - -extern void (*D_8018C518[])(void); - -void func_80163A58(void *a0) { - D_8018C518[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80163A94() /* dedup: shared engine-core @0x80163A94 (src/shared) */ - -DEFINE_func_80163C2C() /* dedup: shared engine-core @0x80163C2C (src/shared) */ - - -void func_80163EC8(s32 param_1) { - extern Blk8 D_801D28EC; - extern u16 D_800B99DA; - extern u8 func_801656D0(s32 a0, s32 a1); - extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); - extern void func_80015978(s32 a0, s32 *a1); - extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); - - Blk8 in; - u16 out[4]; - s16 buf[4]; - s32 psVar6; - s32 iVar8; - s32 iVar7; - register s32 uVar5 __asm__("$2"); /* PIN (flagged): uVar5 -> $v0 */ - u16 uVar4; - u8 uVar3; - - in = D_801D28EC; - psVar6 = *(s32 *)(param_1 + 0x4c); - iVar8 = *(s32 *)(param_1 + 0x20); - func_80162D88((s32 *)param_1); - - if (*(s32 *)(psVar6 + 0x184) == 0) { - uVar5 = *(s32 *)(psVar6 + 0x44); - *(s16 *)(psVar6 + 0x18a) = 0; - *(s16 *)(psVar6 + 0x188) = 0; - *(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20; - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - return; - } - if (*(s16 *)(*(s32 *)(psVar6 + 0x184) + 0x36) == *(u16 *)(psVar6 + 0x194)) { - goto LAB_matched; - } - *(s32 *)(psVar6 + 0x184) = 0; - uVar5 = *(s32 *)(psVar6 + 0x44); - *(s16 *)(psVar6 + 0x18a) = 0; - *(s16 *)(psVar6 + 0x188) = 0; - *(s32 *)(psVar6 + 0x44) = uVar5 & ~0x20; - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - return; - -LAB_matched: - *(s16 *)(psVar6 + 0x18a) = *(u16 *)(psVar6 + 0x18a) + 1; - if ((D_800B99DA & 3) == 0) { - if (*(s16 *)(psVar6 + 0x188) >= *(u8 *)(param_1 + 0x67)) { - *(s16 *)(psVar6 + 0x188) = *(s16 *)(psVar6 + 0x188) - *(u8 *)(param_1 + 0x67); - } else { - *(s16 *)(psVar6 + 0x188) = 0; - } - if (*(s16 *)(psVar6 + 0x188) < 0) { - *(s16 *)(psVar6 + 0x188) = 0; - } - } - - *(s16 *)(param_1 + 0x66) = *(u16 *)(param_1 + 0x66) + 0x40; - uVar5 = func_80148800((s32 *)psVar6); - if ((uVar5 & 0x80) != 0) { - *(s16 *)(param_1 + 0x66) = 0; - uVar3 = func_801656D0(psVar6, func_8014CA00(*(s32 *)(psVar6 + 0x184)) & 0xff); - *(s16 *)(psVar6 + 0x188) = *(u16 *)(psVar6 + 0x188) + uVar3; - *(s16 *)(iVar8 + 0x1a) = 0x4000; - *(s16 *)(iVar8 + 0x18) = 0x4000; - *(s32 *)(iVar8 + 0x48) = *(s16 *)(param_1 + 0x58); - *(s32 *)(iVar8 + 0x4c) = *(s16 *)(param_1 + 0x5a); - *(s32 *)(iVar8 + 0x50) = *(s16 *)(param_1 + 0x5c); - ((void (*)(s32, s32, s32))func_80149350)(param_1, (s32)&in, (s32)out); - *(s16 *)(param_1 + 0x6) = out[0]; - *(s16 *)(param_1 + 0xa) = out[1]; - *(s16 *)(param_1 + 0xe) = out[2]; - } - - if (0x80 < *(s16 *)(psVar6 + 0x188)) { - *(s16 *)(psVar6 + 0x188) = 0x80; - } - if (*(s16 *)(psVar6 + 0x188) >= 0x80) { - iVar7 = *(s32 *)(psVar6 + 0x184); - if (iVar7 != 0) { - func_80015978(iVar7 + 4, (s32 *)buf); - buf[3] = 0; - uVar4 = func_80156370(0xe); - func_8014C4AC(iVar7, 0xe, uVar4, buf, *(s16 *)(iVar8 + 0x12)); - func_80146994(0x33, param_1, 0, iVar7); - } - } else { - if (*(s16 *)(psVar6 + 0x18a) < 0x80 && *(u16 *)psVar6 != 0x19) { - goto LAB_end; - } - iVar7 = *(s32 *)(psVar6 + 0x184); - if (iVar7 != 0) { - func_80015978(iVar7 + 4, (s32 *)buf); - buf[3] = 0; - uVar4 = func_80156370(0x21); - func_8014C4AC(iVar7, 0x21, uVar4, buf, *(s16 *)(iVar8 + 0x12)); - if ((*(s32 *)(iVar7 + 0xb4) & 0x40000) != 0) { - func_8014AD30(param_1, (u16 *)buf, 0, *(s16 *)(iVar7 + 0x60)); - } - } - } - - uVar5 = func_8014CA00(iVar7); - *(s32 *)(psVar6 + 0x184) = uVar5; - if (0x1e < (u32)uVar5) { - *(s32 *)(psVar6 + 0x184) = 0; - } - func_80146E90((s32 *)param_1, 0x20); - *(s32 *)(psVar6 + 0x44) = *(s32 *)(psVar6 + 0x44) & ~0x20; - func_80147324(0x449); - func_80146CA0((void *)param_1); - func_80146CA0((void *)param_1); - -LAB_end: - uVar4 = func_80012F74(*(s16 *)(iVar8 + 0x1a), 0x1800, 3, 1); - *(s16 *)(iVar8 + 0x1a) = uVar4; - *(s16 *)(iVar8 + 0x18) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0x6), *(s16 *)(param_1 + 0x58), 8, 1); - *(s16 *)(param_1 + 0x6) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0xa), *(s16 *)(param_1 + 0x5a), 8, 1); - *(s16 *)(param_1 + 0xa) = uVar4; - uVar4 = func_80012F74(*(s16 *)(param_1 + 0xe), *(s16 *)(param_1 + 0x5c), 8, 1); - *(s16 *)(param_1 + 0xe) = uVar4; -} - - -DEFINE_func_80164270() /* dedup: shared engine-core @0x80164270 (src/shared) */ - -DEFINE_func_801642AC() /* dedup: shared engine-core @0x801642AC (src/shared) */ - -DEFINE_func_8016432C() /* dedup: shared engine-core @0x8016432C (src/shared) */ - -DEFINE_func_80164410() /* dedup: shared engine-core @0x80164410 (src/shared) */ - -DEFINE_func_80164418() /* dedup: shared engine-core @0x80164418 (src/shared) */ - -DEFINE_func_80164530() /* dedup: shared engine-core @0x80164530 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected (fn-ptr table dispatch via u16 idx, $s0 holds *(s32*)(p+0x20) across the call) - -extern void (*D_8018C56C[])(void); -extern void func_80162D28(s32 *a0); - -void func_80164744(s32 param_1) -{ - s32 iVar1; - - iVar1 = *(s32 *)(param_1 + 0x20); - D_8018C56C[*(u16 *)(param_1 + 2)](); - if (iVar1 != 0) { - ((void (*)(s32))func_80162D28)(param_1); - } -} - - - - -// @class: other -// @stuck: none — MATCH (relocation-masked); key was `if (iVar1 != 0) { big } else { func_80164930 }` (non-zero case first → beqz, not bnez) - - -extern void func_8014659C(void); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80164A74(s32 *a0); -extern void func_80146CA0(void *a0); -extern void func_80164930(s32 a); - -extern u16 D_800DF2E0; -extern s32 D_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; - -void func_801647A4(int param_1) { - s32 iVar1; - - iVar1 = ((s32 (*)(void))func_8014659C)(); - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 != 0) { - ((void (*)(s32, void *))func_8001C810)(iVar1, &D_800DF2E0); - *(s32 **)(iVar1 + 0x80) = &D_8018C534; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - *(u16 *)(iVar1 + 0x2c) = *(u16 *)(iVar1 + 0x2c) | 0xb0; - D_8018C568 = 0x80; - D_8018C566 = 0x80; - D_8018C564 = 0x80; - *(u16 *)(iVar1 + 0x1a) = 0; - *(u16 *)(param_1 + 0x60) = 0; - *(u16 *)(param_1 + 0x62) = 0x200; - ((s32 (*)(s32))func_80164A74)(param_1); - ((void (*)(s32))func_80146CA0)(param_1); - } else { - func_80164930(param_1); - } -} - - -DEFINE_func_80164864() /* dedup: shared engine-core @0x80164864 (src/shared) */ - -// @class: regalloc-order — wave-3 real-TU crack (§42a); cracked at Max. -// Fix: D_8018C568 read needs direct-addressed `lhu` (u16). Cannot use `*(u16*)&D_8018C568` -// (forces &sym into a held reg -> drift) NOR a block-scoped `extern u16` (conflicting-types -// ERROR vs the ambient s16, cc1 exit 33). Solution: flip the file-scope decl (5802) to u16 — -// byte-neutral to the only other user (func_801647A4 store-only) — and reference directly. - - -void func_80164930(s32 param_1) { - int iVar3 = *(int *)(((int)param_1) + 0x20); - if (*(int *)(((int)param_1) + 0x50) == 0) { - short sVar1 = *(u16 *)(iVar3 + 0x1c) + 0x100; - short nv; - *(short *)(iVar3 + 0x1c) = sVar1; - *(short *)(iVar3 + 0x18) = sVar1; - *(short *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) + 0x71; - nv = D_8018C568 - 8; - D_8018C568 = nv; - D_8018C566 = nv; - D_8018C564 = nv; - if (nv < -0x80) { - int i, lim; - Ent_80164930_80164930 *p; - for (i = 0, lim = 0x19, p = ((Ent_80164930_80164930 *)&D_8011F9D0); i < 0x14; i++) { - if (p->f0 == lim && p->f50 != 0) { - ((void(*)(Ent_80164930_80164930 *))func_80162CCC)(p); - } - p++; - } - ((void(*)(Ent_80164930_80164930 *))func_80162CCC)((Ent_80164930_80164930 *)((int)param_1)); - } else { - ((void(*)(int))func_80164ACC)(((int)param_1)); - } - } else { - short sVar1 = *(u16 *)(iVar3 + 0x1c) + 0x40; - u16 uVar2; - *(short *)(iVar3 + 0x1c) = sVar1; - *(short *)(iVar3 + 0x18) = sVar1; - uVar2 = *(u16 *)(iVar3 + 0x1a) - 0x200; - *(u16 *)(iVar3 + 0x1a) = uVar2; - if ((int)((unsigned)uVar2 << 0x10) < 0) { - *(short *)(iVar3 + 0x1a) = 0; - } - *(short *)(iVar3 + 0x12) = *(u16 *)(iVar3 + 0x12) - 0x71; - } -} - - - -DEFINE_func_80164A74() /* dedup: shared engine-core @0x80164A74 (src/shared) */ - -DEFINE_func_80164ACC() /* dedup: shared engine-core @0x80164ACC (src/shared) */ - - -extern void (*D_8018C578[])(void); - -void func_80164BA0(void *a0) { - D_8018C578[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_80146578(void); -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_80164DD0(s32 a0); -extern void func_80146CA0(void *a0); -extern void func_80164DB0(void); - -extern u8 D_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; - -void func_80164BDC(s32 param_1) -{ - register s32 p1 __asm__("$17"); /* $s1 */ - register s32 iVar1 __asm__("$16"); /* $s0 */ - register s32 base __asm__("$18"); /* $s2 */ - - p1 = param_1; - iVar1 = ((s32 (*)(void))func_80146578)(); - base = (s32)&D_801D3190; - *(s32 *)(p1 + 0x20) = iVar1; - if (iVar1 != 0) { - func_8001CD50(iVar1, base); - ((void (*)(s32, s32))func_800233CC)(base, 0x60); - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - D_801D3191 = 0xf0; - *(u8 *)base = 0xf0; - D_801D3192 = 0xc0; - D_801D3196 = 0; - D_801D3195 = 0; - D_801D3194 = 0; - D_801D3197 = 0; - D_801D3193 = 0; - *(s16 *)(iVar1 + 0x1e) = 0xccc; - *(s16 *)(iVar1 + 0x10) = 0x400; - *(s16 *)(p1 + 0x60) = 0x700; - *(s16 *)(p1 + 0x62) = -0x60; - func_80164DD0(p1); - ((void (*)(s32))func_80146CA0)(p1); - } else { - ((void (*)(s32))func_80164DB0)(p1); - } -} - - -DEFINE_func_80164CD4() /* dedup: shared engine-core @0x80164CD4 (src/shared) */ - -DEFINE_func_80164D4C() /* dedup: shared engine-core @0x80164D4C (src/shared) */ - -DEFINE_func_80164DB0() /* dedup: shared engine-core @0x80164DB0 (src/shared) */ - -DEFINE_func_80164DD0() /* dedup: shared engine-core @0x80164DD0 (src/shared) */ - - - - - -extern u8 D_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; - -s32 func_80164E40(void) { - u8 *p = &D_801D3190; - if (*p != 0) { - *p -= 0x10; - } - if (D_801D3191 != 0) { - D_801D3191 -= 0x10; - } - if (D_801D3192 != 0) { - D_801D3192 -= 0x10; - } - return *(s32 *)p == 0; -} - - - -extern void (*D_8018C588[])(void); - -void func_80164EA4(void *a0) { - D_8018C588[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: struct -// @stuck: none — MATCH - - /* stride 0x10 */ -extern DStruct D_801D31DC[]; - -extern void func_80165124(void *a0); -extern void func_80146CA0(void *a0); - -void func_80164EE0(int param_1) -{ - int i; - - for (i = 7; i >= 0; i--) { - D_801D31DC[i].f0 = 0; - } - *(short *)(param_1 + 0x2e) = 0x4000; - *(short *)(param_1 + 0x2c) = 0x4000; - *(short *)(param_1 + 0x60) = 0; - *(short *)(param_1 + 0x62) = 0; - ((void (*)(int))func_80165124)(param_1); - *(short *)(param_1 + 0x66) = 0; - ((void (*)(int))func_80146CA0)(param_1); -} - - -DEFINE_func_80164F44() /* dedup: shared engine-core @0x80164F44 (src/shared) */ - -DEFINE_func_80165024() /* dedup: shared engine-core @0x80165024 (src/shared) */ - -DEFINE_func_80165064() /* dedup: shared engine-core @0x80165064 (src/shared) */ - -DEFINE_func_801650C4() /* dedup: shared engine-core @0x801650C4 (src/shared) */ - -DEFINE_func_80165124() /* dedup: shared engine-core @0x80165124 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (30 ins) -// -// Unaligned slot-fill: loop over 8 slots (0x10 stride) of a global table, -// fill the first free one (field @0xC == 0). Two unaligned block copies from -// param_1 (packed struct assigns -> lwl/lwr/swl/swr). Key: recompute -// p = &D_801D31D0[i] each iteration (NOT p++) so gcc reduces base+i*0x10 into -// a SINGLE pointer IV with immediate offsets 0/8/0xC. Hand-incrementing p makes -// combine_givs split the field offsets into a second pointer IV (+2 ins). - - - - -s32 func_80165140(s32 param_1) { - extern Slot_80165140 D_801D31D0[8]; - - int i; - Slot_80165140 *p; - for (i = 0; i < 8; i++) { - p = &D_801D31D0[i]; - if (p->used == 0) { - p->used = 8; - p->a = *(B8_80165140 *)(((u8 *)param_1) + 0x2c); - p->b = *(B4_80165140 *)(((u8 *)param_1) + 0x50); - return; - } - } -} - - - - -// @class: schedule -// @stuck: none — MATCH (pins $s2/$s1/$s0 + zero-code barrier hoists $a0 copy into beqz delay slot) - -extern void func_80165240(void *param_1, void *param_2, void *param_3); -extern s32 D_801D31D0; - -void func_801651B8(void * param_1) -{ - register s32 *puVar1 __asm__("$16"); /* $s0 */ - register s32 iVar2 __asm__("$17"); /* $s1 */ - register s32 p __asm__("$18"); /* $s2 */ - - p = param_1; - ((s32 (*)(s32, s32, s32))func_80165240)(p, p + 0x2c, p + 0x50); - iVar2 = 0; - puVar1 = &D_801D31D0; - do { - if (puVar1[3] != 0) { - s32 a0v = p; - __asm__ __volatile__("" : "=r"(a0v) : "0"(a0v)); - ((s32 (*)(s32, s32, s32))func_80165240)(a0v, (s32)puVar1, (s32)(puVar1 + 2)); - puVar1[3] = puVar1[3] + -1; - } - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 4; - } while (iVar2 < 8); -} - - -extern void func_80016ED4(void *a0); -extern s32 func_80017DC4(void *a0, void *a1); - -void func_80165240(void *param_1, void *param_2, void *param_3) -{ - - extern u8 D_8018C59C[]; - extern u32 D_8018C5BC, D_8018C5C0, D_8018C5C4, D_8018C5C8; - extern u32 D_8018C5BC, D_8018C5C0, D_8018C5C4, D_8018C5C8; - extern u32 D_8018C5BC, D_8018C5C0, D_8018C5C4, D_8018C5C8; - extern u32 D_8018C5BC, D_8018C5C0, D_8018C5C4, D_8018C5C8; - u8 prim[0x40]; /* $sp+0x10 .. 0x50 */ - u8 mat[0x20]; /* $sp+0x50 .. 0x70 */ - u8 *p = prim; - - func_80017DC4(param_2, mat); - ApplyMatrixSV(mat, &D_8018C59C[0x00], p); - ApplyMatrixSV(mat, &D_8018C59C[0x08], prim + 0x08); - ApplyMatrixSV(mat, &D_8018C59C[0x10], prim + 0x10); - ApplyMatrixSV(mat, &D_8018C59C[0x18], prim + 0x18); - - *(s16 *)(prim + 0x04) = 3; - prim[0x38] = 0x2c; - *(u32 *)(prim + 0x20) = D_8018C5C4; - *(u32 *)(prim + 0x24) = D_8018C5BC; - *(u32 *)(prim + 0x28) = D_8018C5C8; - *(u32 *)(prim + 0x2c) = D_8018C5C0; - *(struct W4 *)(prim + 0x30) = *(struct W4 *)param_3; - *(u32 *)(prim + 0x34) = 0x50000000; - - func_80016ED4(p); -} - - -DEFINE_func_8016533C() /* dedup: shared engine-core @0x8016533C (src/shared) */ - -DEFINE_func_80165374() /* dedup: shared engine-core @0x80165374 (src/shared) */ - -DEFINE_func_801653B8() /* dedup: shared engine-core @0x801653B8 (src/shared) */ - -DEFINE_func_801653F4() /* dedup: shared engine-core @0x801653F4 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (54 ins) - -extern u8 D_80078E78[]; -extern u8 D_80078EC1; -extern void (*D_8018C5CC[])(void); -extern u8 func_80165658(s32 a0, s32 a1); -extern void func_800CAE0C(s32 a0); - -void func_801654A8(s32 arg0) -{ - u8 *s1 = D_80078E78; - - if (*(u16 *)arg0 == 0x16) { - return; - } - if (*(u16 *)arg0 != 0x1A) { - if ((*(s32 *)(arg0 + 0x1F8) & 0x80FFFFFF) == 0) { - if (func_80165658(arg0, D_80078EC1) & 0x80) { - ((void (*)(s32))D_8018C5CC[D_80078EC1 & 0x7F])(arg0); - } - } - } - if (*(u16 *)arg0 == 0x16) { - return; - } - if (*(u16 *)arg0 == 0x1A) { - return; - } - if (s1[0x49] == 0x19) { - func_800CAE0C(arg0); - } -} - - - -// @class: struct -// @stuck: none — MATCH (function-pointer-array dispatch; & 0x80 branch + & 0x7f index fold) - -extern u8 D_80078EC5; -extern u8 D_80078EC1; -extern void (*D_8018C5CC[])(void); -extern void func_80165B28(void *a0); - -void func_80165580(s32 _arg0) -{ - if (D_80078EC5 & 0x80) { - ((void (*)(void))func_80165B28)(); - } else { - D_8018C5CC[D_80078EC1 & 0x7F](); - } -} - - -DEFINE_func_801655E4() /* dedup: shared engine-core @0x801655E4 (src/shared) */ - -DEFINE_func_80165624() /* dedup: shared engine-core @0x80165624 (src/shared) */ - - -extern u8 D_8018C648[]; - -u8 func_80165658(s32 a0, s32 a1) { - return D_8018C648[a1 & 0x7F]; -} - - - -extern s32 D_8018C668[]; -extern s32 D_80078EC8; - -void func_80165670(s32 a0, s32 a1) { - D_80078EC8 = D_8018C668[a1 & 0x7F]; -} - - -DEFINE_func_80165694() /* dedup: shared engine-core @0x80165694 (src/shared) */ - - -extern u8 D_8018C6E4[]; - -u8 func_801656D0(s32 a0, s32 a1) { - return D_8018C6E4[a1 & 0x7F]; -} - - - -extern u8 D_8018C704[]; - -u8 func_801656E8(s32 a0, s32 a1) { - return D_8018C704[a1 & 0x7F]; -} - - - -extern u8 D_8018C724[]; - -u8 func_80165700(s32 a0, s32 a1) { - return D_8018C724[a1 & 0x7F]; -} - - -DEFINE_func_80165718() /* dedup: shared engine-core @0x80165718 (src/shared) */ - -DEFINE_func_80165770() /* dedup: shared engine-core @0x80165770 (src/shared) */ - -DEFINE_func_801657A0() /* dedup: shared engine-core @0x801657A0 (src/shared) */ - -DEFINE_func_801657D8() /* dedup: shared engine-core @0x801657D8 (src/shared) */ - -DEFINE_func_80165840() /* dedup: shared engine-core @0x80165840 (src/shared) */ - -DEFINE_func_80165874() /* dedup: shared engine-core @0x80165874 (src/shared) */ - -DEFINE_func_801658DC() /* dedup: shared engine-core @0x801658DC (src/shared) */ - -DEFINE_func_801658EC() /* dedup: shared engine-core @0x801658EC (src/shared) */ - -DEFINE_func_80165900() /* dedup: shared engine-core @0x80165900 (src/shared) */ - -DEFINE_func_80165910() /* dedup: shared engine-core @0x80165910 (src/shared) */ - -DEFINE_func_80165938() /* dedup: shared engine-core @0x80165938 (src/shared) */ - -DEFINE_func_80165958() /* dedup: shared engine-core @0x80165958 (src/shared) */ - -DEFINE_func_80165978() /* dedup: shared engine-core @0x80165978 (src/shared) */ - -DEFINE_func_80165988() /* dedup: shared engine-core @0x80165988 (src/shared) */ - -DEFINE_func_801659A8() /* dedup: shared engine-core @0x801659A8 (src/shared) */ - -DEFINE_func_801659B8() /* dedup: shared engine-core @0x801659B8 (src/shared) */ - -DEFINE_func_801659CC() /* dedup: shared engine-core @0x801659CC (src/shared) */ - - - -s32 func_801659DC(u8 *a0) { - - extern void (*D_8018C744[])(void); - D_8018C744[*(u8 *)((s32)a0 + 0x1A0)](); -} - - -DEFINE_func_80165A18() /* dedup: shared engine-core @0x80165A18 (src/shared) */ - -DEFINE_func_80165A20() /* dedup: shared engine-core @0x80165A20 (src/shared) */ - -DEFINE_func_80165A50() /* dedup: shared engine-core @0x80165A50 (src/shared) */ - -DEFINE_func_80165A78() /* dedup: shared engine-core @0x80165A78 (src/shared) */ - - -extern u8 D_80078EC1; -extern void (*D_8018C7C0[])(void); - -void func_80165AC8(void) { - D_8018C7C0[D_80078EC1 & 0x7F](); -} - - -DEFINE_func_80165B08() /* dedup: shared engine-core @0x80165B08 (src/shared) */ - -DEFINE_func_80165B10() /* dedup: shared engine-core @0x80165B10 (src/shared) */ - -DEFINE_func_80165B18() /* dedup: shared engine-core @0x80165B18 (src/shared) */ - -DEFINE_func_80165B20() /* dedup: shared engine-core @0x80165B20 (src/shared) */ - - -extern void (*D_8018C83C[])(void); - -void func_80165B28(void *a0) { - *(u32 *)((s32)a0 + 0x44) |= 8; - D_8018C83C[*(u8 *)((s32)a0 + 0x197)](); -} - - -DEFINE_func_80165B6C() /* dedup: shared engine-core @0x80165B6C (src/shared) */ - -DEFINE_func_80165BB4() /* dedup: shared engine-core @0x80165BB4 (src/shared) */ - -DEFINE_func_80165BFC() /* dedup: shared engine-core @0x80165BFC (src/shared) */ - -DEFINE_func_80165C58() /* dedup: shared engine-core @0x80165C58 (src/shared) */ - -DEFINE_func_80165C78() /* dedup: shared engine-core @0x80165C78 (src/shared) */ - -DEFINE_func_80165CA0() /* dedup: shared engine-core @0x80165ca0 (src/shared) */ - - -extern M2C_UNK D_801D28F4; - -void func_80165E2C(u16 *arg0) { - func_8001534C(0, &D_801D28F4, 0x80, 0x80, 0, 0); - func_800153CC(1, *arg0, 0xA8, 0x80, 0x40, 0); -} - - -DEFINE_func_80165E90() /* dedup: shared engine-core @0x80165E90 (src/shared) */ - -DEFINE_func_80165FA4() /* dedup: shared engine-core @0x80165FA4 (src/shared) */ - - -extern void (*D_8018C848[])(void); - -void func_80166018(void *a0) { - D_8018C848[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80166054() /* dedup: shared engine-core @0x80166054 (src/shared) */ - -DEFINE_func_801661CC() /* dedup: shared engine-core @0x801661CC (src/shared) */ - -DEFINE_func_80166244() /* dedup: shared engine-core @0x80166244 (src/shared) */ - -DEFINE_func_8016629C() /* dedup: shared engine-core @0x8016629C (src/shared) */ - -DEFINE_func_801662F4() /* dedup: shared engine-core @0x801662F4 (src/shared) */ - -DEFINE_func_8016634C() /* dedup: shared engine-core @0x8016634C (src/shared) */ - -DEFINE_func_801663A4() /* dedup: shared engine-core @0x801663A4 (src/shared) */ - - -extern void (*D_8018C850[])(void); - -void func_801663FC(void *a0) { - D_8018C850[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80166438() /* dedup: shared engine-core @0x80166438 (src/shared) */ - -DEFINE_func_801665B4() /* dedup: shared engine-core @0x801665B4 (src/shared) */ - - -extern void (*D_8018C918[])(void); - -void func_80166618(void *a0) { - D_8018C918[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void (*D_8018C928[])(void); - -void func_80166654(void *a0) { - D_8018C928[*(u16 *)((s32)a0 + 0x2)](); -} - - -#include "common.h" - - /* 12-byte sub-table record (stride 0xC) */ - - - -s32 func_80166690(s32 param_1, s32 param_2) -{ - extern s32 func_80017758(void *a0, void *a1); - extern Blk20 D_800AE620; - extern u8 D_801D3250[]; - - Frame_80166690_80166690 c; - Blk20 blk; - Rec_80166690_80166690 *sub; - Rec_80166690_80166690 *pv; - u8 *rec; - int i6; - int lt2; - int p2; - unsigned int uVar7, uVar8, uVar9; - int iVar3; - unsigned int w9, w7, w, t, w3b; - int w3; - short sVar10; - register unsigned int zr __asm__("$0"); - - blk = D_800AE620; - i6 = (short)param_1; - c.tag = 0x50000000; - rec = &D_801D3250[i6 * 0xC4]; - sVar10 = 0; - if (rec[0] == 0) { - return 0; - } - sub = (Rec_80166690_80166690 *)(rec + 4); - uVar9 = rec[1]; - uVar8 = rec[3]; - uVar7 = uVar8 >> 1; - iVar3 = rec[2]; - w3 = iVar3 - 1; - iVar3 = w3 + zr; - if (w3 != -1) { - lt2 = i6 < 2; - p2 = (short)param_2; - do { - pv = &sub[(short)uVar9]; - c.v0 = pv->h[0]; - c.v1 = pv->h[1]; - c.v2 = pv->h[2]; - c.w0 = pv->h[3]; - c.w1 = pv->h[4]; - c.w2 = pv->h[5]; - sVar10 = sVar10 + 1; - - if (lt2) { - if (p2 == 0) { - t = uVar8 + zr; - c.c12 = t; c.c02 = t; - t = uVar7 + zr; - } else { - w = ((int)(uVar8 << 16) >> 17) + ((int)(uVar8 << 16) >> 19); - uVar7 = w + zr; - c.c12 = w; c.c02 = w; - t = uVar8 + zr; - } - c.c11 = t; c.c01 = t; c.c10 = t; c.c00 = t; - } else { - t = uVar8 + zr; - c.c10 = t; c.c00 = t; - t = uVar7 + zr; - c.c12 = t; c.c02 = t; c.c11 = t; c.c01 = t; - } - - w9 = uVar9 - 1; - uVar9 = w9 + zr; - if ((int)(w9 << 16) < 0) { - uVar9 = 0xF; - } - pv = &sub[(short)uVar9]; - c.v3 = pv->h[0]; - c.v4 = pv->h[1]; - c.v5 = pv->h[2]; - c.w3 = pv->h[3]; - c.w4 = pv->h[4]; - uVar8 = uVar8 - 0x10; - w7 = uVar7 - 0x10; - uVar7 = w7 + zr; - c.w5 = pv->h[5]; - if ((int)(w7 << 16) < 0) { - uVar7 = 0; - } - - if (lt2) { - if (p2 == 0) { - t = uVar8 + zr; - c.c32 = t; c.c22 = t; - t = uVar7 + zr; - } else { - t = uVar7 + zr; - c.c32 = t; c.c22 = t; - t = uVar8 + zr; - } - c.c31 = t; c.c21 = t; c.c30 = t; c.c20 = t; - } else { - t = uVar8 + zr; - c.c30 = t; c.c20 = t; - t = uVar7 + zr; - c.c32 = t; c.c22 = t; c.c31 = t; c.c21 = t; - } - - __asm__ __volatile__("" :: "r"(iVar3)); - func_80017758(&c, &blk); - w3b = iVar3 - 1; - iVar3 = w3b + zr; - } while ((short)w3b != -1); - } - return (short)sVar10; -} - - - - -/* func_80166994 — trail/afterimage ring recorder (0xC4-stride Trail records at D_801D3250). - * param_2: 0=init, 1=advance(record), 2=fadeout; param_3: trail index (s16); param_4: divisor (s16). - * - * K&R definition: true s16 params => callee-side lazy per-use narrow/extend with raw pseudos - * (s3/t0/s4 hold raw a1/a2/a3; first-use extension allocates IN PLACE into the arg reg), while - * the promoted K&R type (int x4) stays compatible with the canon-sig s32 prototype in the TU. - * Returns s32 (v0=1 when the fadeout completes, else 0) => the //@EDIT above flips the split's - * canon-sig prototype return type, AND engine_core.h needs the once-global ec_edit (all 5 sites, - * byte-neutral: every caller discards the result): - * ec_edit old: "extern void func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \" - * ec_edit new: "extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \" - * Without the ec_edit, cc1 hard-errors (conflicting types vs the void decls in DEFINE_ macros). - * - * Fully block-scoped (typedefs + externs inside the body) so the crack propagates ×134 via - * family_remap with zero file-scope footprint. No register pins. - */ -s32 func_80166994(param_1, param_2, param_3, param_4) - s32 param_1; - s16 param_2; - s16 param_3; - s16 param_4; -{ - extern u8 D_801D3250[]; - extern void RotTransSV(void *a0, void *a1, void *a2); - extern s32 VectorNormalSS(void *a0, void *a1); - - Trail *p = &((Trail *)D_801D3250)[param_3]; - s32 uVar6 = *(s32 *)(param_1 + 0x34); - s16 v10[4]; - s16 v18[4]; - s16 v20[4]; - s16 v28[4]; - s16 out[4]; - s32 c; - - switch (param_2) { - case 0: - p->flag = 1; - p->count = 0; - p->idx = 0; - p->timer = 0xf4; - break; - case 1: - v20[0] = p->e[p->idx].f0; - v20[1] = p->e[p->idx].f1; - v20[2] = p->e[p->idx].f2; - v28[0] = p->e[p->idx].f3; - v28[1] = p->e[p->idx].f4; - v28[2] = p->e[p->idx].f5; - c = p->idx; - p->idx = c + 1; - if ((u8)(c + 1) > 0xf) { - p->idx = 0; - } - if (p->count < 0xf) { - p->count = p->count + 1; - } - break; - case 2: { - u8 bVar3 = p->timer - 0x10; - p->timer = bVar3; - if (bVar3 < 0x10) { - p->flag = 0; - return 1; - } - { - u8 bVar1 = p->count; - if (bVar1 >= 2 && (bVar3 >> 4) < bVar1) { - p->count = bVar1 - 1; - } - } - return 0; - } - } - - if (param_3 < 2) { - func_801484B0((s32)v10, (s32)v18); - } else { - func_80148534((s32)v10, (s32)v18); - } - func_80165FA4(uVar6, (s32)v10, (s32)v18); - ((void (*)(s32, s32, s32))func_80149350)(uVar6, (s32)v10, (s32)v10); - RotTransSV(v18, v18, out); - - if (param_2 != 0) { - v20[0] = (v10[0] + v20[0]) >> 1; - v20[1] = (v10[1] + v20[1]) >> 1; - v20[2] = (v10[2] + v20[2]) >> 1; - v28[0] = (v18[0] + v28[0]) >> 1; - v28[1] = (v18[1] + v28[1]) >> 1; - v28[2] = (v18[2] + v28[2]) >> 1; - v20[0] = v20[0] - v28[0]; - v20[1] = v20[1] - v28[1]; - v20[2] = v20[2] - v28[2]; - VectorNormalSS(v20, v20); - v20[0] = v28[0] + v20[0] / param_4; - v20[1] = v28[1] + v20[1] / param_4; - v20[2] = v28[2] + v20[2] / param_4; - p->e[p->idx].f0 = v20[0]; - p->e[p->idx].f1 = v20[1]; - p->e[p->idx].f2 = v20[2]; - p->e[p->idx].f3 = v28[0]; - p->e[p->idx].f4 = v28[1]; - p->e[p->idx].f5 = v28[2]; - c = p->idx; - p->idx = c + 1; - if ((u8)(c + 1) > 0xf) { - p->idx = 0; - } - if (p->count < 0xf) { - p->count = p->count + 1; - } - } - - p->e[p->idx].f0 = v10[0]; - p->e[p->idx].f1 = v10[1]; - p->e[p->idx].f2 = v10[2]; - p->e[p->idx].f3 = v18[0]; - p->e[p->idx].f4 = v18[1]; - p->e[p->idx].f5 = v18[2]; - return 0; -} - - -// @class: regalloc-order -// @stuck: none — MATCH (69 ins). Pins $s4/$s1 for param_2/param_3 + a1/a2-pinned temps -// with non-volatile SHB barriers force the sign-ext move-form; short iVar2 (unpinned) -// gives the temp-form counter increment that fills the skip-branch delay slots; -// loop-invariant eq=(p2==p3) hoisted; SHB(p2) after the move serializes param_2 before -// param_3's sign-ext (last ordering swap); param_1/param_4 left natural (arg-order saves). - - -#define SHB(x) __asm__("" : "=r"(x) : "0"(x)) - -s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4) -{ - /* [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_8011D030; - extern unsigned char D_801D3250[]; - - register int p2 __asm__("$20"); /* $s4 */ - register int p3 __asm__("$17"); /* $s1 */ - register int t2 __asm__("$5"); /* a1 */ - register int t3 __asm__("$6"); /* a2 */ - unsigned short *puVar1; - short iVar2; - int eq; - - iVar2 = 0; - puVar1 = ((unsigned short *)&D_8011D030); - t2 = ((short)param_2); SHB(t2); p2 = t2; SHB(p2); - t3 = ((short)param_3); SHB(t3); p3 = t3; - eq = (p2 == p3); - do { - if ((puVar1 != ((unsigned short *)param_1)) && - ((unsigned int)*puVar1 == p2 || (unsigned int)*puVar1 == p3) && - (!eq || - *(int *)(puVar1 + 0x16) == *(int *)(((unsigned short *)param_1) + 0x16))) { - ((void(*)(unsigned short *))func_80146C3C)(puVar1); - } - iVar2 = iVar2 + 1; - puVar1 = puVar1 + 0x2c; - } while (iVar2 < 0x1e); - ((void(*)(void *, int))func_80016714)(&D_801D3250[((short)param_4) * 0xc4], 0xc4); -} - - - - - -DEFINE_func_8016706C() /* dedup: shared engine-core @0x8016706C (src/shared) */ - - - -// @class: schedule -// @stuck: 16/279 masked. 3 runs, ONE residual class: gcc's list-scheduler puts `la $s2` (p=DATA) + `addu $s4,$zero,$zero` (i=0) BEFORE the callee-arg address setup (addiu $a1,$sp,0x10 / addu $a2,$a1,$zero); the target emits them AFTER. Inert to ~40 statement-order permutations + pin/barrier combos (sched priority dominates the LUID tie-break, sched.c rank_for_schedule). Runs: 19-24 (blk1), 111-114 (region-B cx-load rotation), 177-182 (blk3). Permuter fuel. - - - - -extern void func_80149350(s32); -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 RotMatrixYXZ(void *a0, void *a1); -extern s32 func_80017758(void *a0, void *a1); -extern s32 func_80017DC4(void *a0, void *a1); -extern void func_80048EAC(void *a0, void *a1); - - -s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - - extern u8 D_8018C86C[]; - extern u8 D_8018C858[]; - extern u8 D_8018C880[]; - extern s32 D_801269A4; - extern s32 D_801269A8; - extern s32 D_801269AC; - extern u16 D_80126CE0; - Fr_801670E4 f; - register u8 *p __asm__("$18"); /* $s2 */ - register s32 ent __asm__("$19"); /* $s3 */ - s16 i; - s32 d; - s32 node; - u16 c; - u8 cv; - u8 cv2; - register s32 gA __asm__("$2"); - register s32 cxv __asm__("$4"); - register s32 czv __asm__("$5"); - u8 *vc; - u8 *ap; - u8 *mp; - u8 *va; - u8 *vb; - - ent = arg0; - node = *(s32 *)(ent + 0x34); - f.v[1].z = 0; - f.v[1].y = 0; - f.v[1].x = 0; - f.v[3].z = 0; - f.v[2].z = 0; - f.v[0].z = 0; - f.col[1].b = 0x70; - cv = *(u8 *)(ent + 0x12); - f.cx = arg1; - __asm__ __volatile__(""); - va = (u8 *)&f.cx; - __asm__ __volatile__("" : "=r"(va) : "0"(va)); - f.cy = arg2; - vb = va; - __asm__ __volatile__("" : "=r"(vb) : "0"(vb)); - p = D_8018C86C; - i = 0; - f.col[0].b = 0; - f.col[0].g = 0; - f.col[0].r = 0; - f.col[2].b = 0; - f.col[2].g = 0; - f.col[2].r = 0; - f.col[3].b = 0; - f.col[3].g = 0; - f.col[3].r = 0; - f.code = 0x50000000; - f.cz = arg3; - f.col[1].r = cv; - f.col[1].g = cv; - ((void (*)(s32, void *, void *))func_80149350)(node, va, vb); - - c = f.cx; - *(s16 *)(ent + 0x06) = c; - *(s32 *)(ent + 0x4C) = (s16)c; - c = f.cy; - *(s16 *)(ent + 0x0A) = c; - *(s32 *)(ent + 0x50) = (s16)c; - c = f.cz; - *(s16 *)(ent + 0x0E) = c; - *(s32 *)(ent + 0x54) = (s16)c; - func_800D20C0(&f.cx, f.a8, 7); - func_80017E68(&f.cx, f.m1); - func_800D23D0(f.a8); - RotMatrixYXZ(f.a8, f.m1); - - do { - f.v[0].x = (s8)*p++; - f.v[0].y = (s8)*p++; - f.v[2].x = (s8)*p++; - f.v[2].y = (s8)*p++; - f.v[3].x = (s8)*p++; - f.v[3].y = (s8)*p--; - func_80017758(f.v, f.m1); - } while ((i = i + 1) < 4); - - p = D_8018C858; - gA = 0xA0; - cxv = (s16)f.cx; - f.col[1].g = gA; - gA = D_801269A4; - czv = (s16)f.cz; - f.col[1].b = 0x10; - f.col[1].r = 0x10; - f.pos[0] = gA - cxv; - i = 0; - f.v[3].y = 0; - f.v[2].y = 0; - f.v[0].y = 0; - f.pos[1] = D_801269A8 - (s16)f.cy; - f.pos[2] = D_801269AC - czv; - - do { - f.v[0].x = (s8)*p++; - f.v[0].z = (s8)*p++; - f.v[2].x = (s8)*p++; - f.v[2].z = (s8)*p++; - f.v[3].x = (s8)*p++; - f.v[3].z = (s8)*p--; - func_80017758(f.v, (void *)(ent + 0x38)); - } while ((i = i + 1) < 4); - - if (*(s32 *)(ent + 0x30) > 0) { - vc = (u8 *)&f.cx; - __asm__ __volatile__("" : "=r"(vc) : "0"(vc)); - mp = f.m1; - ap = mp; - __asm__ __volatile__("" : "=r"(ap) : "0"(ap)); - p = D_8018C880; - i = 0; - d = (s16)f.a8[0] >> 6; - f.cx += d; - f.cy += d; - f.cz += d; - func_80017E68(vc, ap); - f.cx = f.cy = f.cz = ((u32)*(s32 *)(ent + 0x30) >> 1) + D_80126CE0 * 0x20; - func_80017DC4(&f.cx, f.m2); - func_80048EAC(f.m2, mp); - f.v[3].z = 0; - f.v[2].z = 0; - f.v[0].z = 0; - cv2 = *(u8 *)(ent + 0x12); - f.col[1].b = 0x20; - f.col[1].r = 0x20; - f.col[3].b = 0; - f.col[3].r = 0; - f.col[2].b = 0; - f.col[2].r = 0; - f.col[0].b = 0; - f.col[0].r = 0; - f.col[3].g = 0; - f.col[2].g = 0; - f.col[0].g = 0; - f.col[1].g = cv2 + 0x60; - do { - f.v[0].x = (s8)*p++; - f.v[0].y = (s8)*p++; - f.v[2].x = (s8)*p++; - f.v[2].y = (s8)*p++; - f.v[3].x = (s8)*p++; - f.v[3].y = (s8)*p--; - func_80017758(f.v, f.m1); - } while ((i = i + 1) < 8); - } -} - - - - /* 0x20 bytes */ - - - - - - -s32 func_80167540(s32 arg0) { - - struct Node_80167540 *node; - struct Entity_80167540 *ent; - s32 v; - - node = ((struct Entity_80167540 *)arg0)->unk34; - if (node->unk0 == 1) { - if (((struct Entity_80167540 *)arg0)->unk12 > ((struct Entity_80167540 *)arg0)->unk10) { - if (((struct Entity_80167540 *)arg0)->unk1C > 0) { - ((struct Entity_80167540 *)arg0)->unk10 = (s16) (rand() & 0x30); - v = -0x30; - goto shared; - } - } else if (((struct Entity_80167540 *)arg0)->unk1C < 0) { - ((struct Entity_80167540 *)arg0)->unk10 = (s16) ((rand() & 0x30) + 0x40); - v = 0x30; -shared: - ((struct Entity_80167540 *)arg0)->unk1C = v; - } - ((struct Entity_80167540 *)arg0)->unk12 = (s16) (((struct Entity_80167540 *)arg0)->unk12 + ((struct Entity_80167540 *)arg0)->unk1C); - ((struct Entity_80167540 *)arg0)->mat = node->unk20->mat; - ((void (*)(struct Entity_80167540 *, s32, s32, s32))func_801670E4)(((struct Entity_80167540 *)arg0), 0, 0, 0); - ent = ((struct Entity_80167540 *(*)(s32, struct Entity_80167540 *, s16, s16, s32, s32, s32))func_80146A6C)(0xE, ((struct Entity_80167540 *)arg0), node->unk6, node->unkA, node->unkE, 0, 0); - if (ent != 0) { - ent->mat = node->unk20->mat; - } - if (((struct Entity_80167540 *)arg0)->unk34->unk4C->unk44 & 0x20) { - ((struct Entity_80167540 *)arg0)->unk30 = 0x600; - ((struct Entity_80167540 *)arg0)->unk2 = (u16) (((struct Entity_80167540 *)arg0)->unk2 + 1); - } - } else { - ((void(*)(struct Entity_80167540 *))func_80146C3C)(((struct Entity_80167540 *)arg0)); - } -} - - - -DEFINE_func_80167714() /* dedup: shared engine-core @0x80167714 (src/shared) */ - - -extern void (*D_8018C938[])(void); - -void func_801678B4(void *a0) { - D_8018C938[*(u16 *)((s32)a0 + 0x2)](); -} - - - -DEFINE_func_801678F0() /* dedup: shared engine-core @0x801678F0 (src/shared) */ - - - -extern void (*D_8018C944[])(void); - -void func_80167A9C(void *a0) { - D_8018C944[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80167AD8() /* dedup: shared engine-core @0x80167AD8 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH expected; mirrors already-matched sibling func_8016A290 (same 3-loop tail), swapping the inline matrix-setup for a func_80168070 call + constant color block. - -#include "common.h" - - - - - -s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3) { - extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); - extern s32 func_80017758(void *a0, void *a1); - extern u8 D_8018CA50; - extern u8 D_8018CA64[]; - - struct Fr_80167AE0 fr; - u8 *p; - s32 i; - register s32 t __asm__("$2"); - register s32 zr __asm__("$0"); - s32 flags; - - func_80168070(param_1, ((s16 *)param_2), ((s16 *)param_3), fr.matrix); - - fr.v[3].z = 0; - fr.v[2].z = 0; - fr.v[0].z = 0; - fr.v[1].z = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - flags = D_800B99DA; - if (flags & 1) { - fr.col[1].r = 0xa0; - } else if (flags & 2) { - fr.col[1].r = 0xc0; - } else { - fr.col[1].r = 0x80; - } - - p = ((u8 *)&D_8018CA50); - fr.col[0].b = 0; - fr.col[0].g = 0; - fr.col[0].r = 0; - fr.col[2].b = 0; - fr.col[2].g = 0; - fr.col[2].r = 0; - fr.col[3].b = 0; - fr.col[3].g = 0; - fr.col[3].r = 0; - fr.code = 0x50000000; - fr.col[1].b = fr.col[1].r >> 2; - fr.col[1].g = fr.col[1].r >> 2; - i = 0; -L1: - fr.v[0].x = (s8)*p++; - fr.v[0].y = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].y = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].y = (s8)*p--; - func_80017758(fr.v, fr.matrix); - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L1; - - fr.v[3].y = 0; - fr.v[2].y = 0; - fr.v[0].y = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - fr.v[1].z = -0x20; - p = D_8018CA64; - i = 0; -L2: - fr.v[0].x = (s8)*p++; - fr.v[0].z = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p--; - func_80017758(fr.v, fr.matrix); - if ((s16)i == 1) { - fr.v[1].z = 0x20; - p += 2; - } - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L2; - - p += 2; - fr.v[0].x = 0; - fr.v[0].z = -0x20; - fr.col[0].r = fr.col[1].r; - fr.col[0].b = fr.col[1].g; - fr.col[0].g = fr.col[1].g; - i = 0; -L3: - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p++; - func_80017758(fr.v, fr.matrix); - t = i + 1; - i = t + zr; - if ((s16)t < 2) goto L3; -} - - - - -// @class: schedule -// @stuck: none — MATCH. The between-loops f1/f2 store-swap (0x55/0x56) is fixed by writing f2's assign first, then the chained `buf[0x44] = buf[0x45] = buf[0x45] << 1;` — the chain keeps f1's read first (read order fixed by -0x12 in $v0) while emitting f2's store (0x56) ahead of the f1/f0 pair (0x55,0x54). 173/173. - -extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); -extern u16 D_800B99DA; -extern u8 D_8018C8A4[]; -extern u8 D_8018C8B8[]; - -s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2) { - u8 buf[0x54]; - u8 *p; - s16 i; - - func_80168070(arg0, ((s16 *)arg1), ((s16 *)arg2), buf); - - *(s16 *)(buf + 0x3C) = 0; - *(s16 *)(buf + 0x34) = 0; - *(s16 *)(buf + 0x24) = 0; - *(s16 *)(buf + 0x2C) = 0; - *(s16 *)(buf + 0x2A) = 0; - *(s16 *)(buf + 0x28) = 0; - if (D_800B99DA & 1) { - buf[0x46] = 0x58; - } else { - buf[0x46] = 0x48; - } - buf[0x45] = buf[0x46] >> 2; - buf[0x44] = buf[0x45]; - if (((u8 (*)(s32))func_80029178)(0x81) != 0) { - buf[0x45] = buf[0x45] << 2; - buf[0x46] = buf[0x46] >> 1; - } - - p = D_8018C8A4; - buf[0x42] = 0; - buf[0x41] = 0; - buf[0x40] = 0; - buf[0x4A] = 0; - buf[0x49] = 0; - buf[0x48] = 0; - buf[0x4E] = 0; - buf[0x4D] = 0; - buf[0x4C] = 0; - *(s32 *)(buf + 0x50) = 0x50000000; - - for (i = 0; i < 4; i++) { - *(s16 *)(buf + 0x20) = (s8)*p++; - *(s16 *)(buf + 0x22) = (s8)*p++; - *(s16 *)(buf + 0x30) = (s8)*p++; - *(s16 *)(buf + 0x32) = (s8)*p++; - *(s16 *)(buf + 0x38) = (s8)*p++; - *(s16 *)(buf + 0x3A) = (s8)*p--; - func_80017758(buf + 0x20, buf); - } - - p = D_8018C8B8; - *(s16 *)(buf + 0x2C) = -0x12; - *(s16 *)(buf + 0x3A) = 0; - *(s16 *)(buf + 0x32) = 0; - *(s16 *)(buf + 0x22) = 0; - *(s16 *)(buf + 0x2A) = 0; - *(s16 *)(buf + 0x28) = 0; - buf[0x46] = buf[0x46] << 1; - buf[0x44] = buf[0x45] = buf[0x45] << 1; - - for (i = 0; i < 4; i++) { - *(s16 *)(buf + 0x20) = (s8)*p++; - *(s16 *)(buf + 0x24) = (s8)*p++; - *(s16 *)(buf + 0x30) = (s8)*p++; - *(s16 *)(buf + 0x34) = (s8)*p++; - *(s16 *)(buf + 0x38) = (s8)*p++; - *(s16 *)(buf + 0x3C) = (s8)*p--; - if (i == 2) { - buf[0x4E] = buf[0x46]; - buf[0x4D] = buf[0x44]; - buf[0x4C] = buf[0x4D]; - } else if (i == 3) { - buf[0x4E] = 0; - buf[0x4D] = 0; - buf[0x4C] = buf[0x4D]; - buf[0x42] = buf[0x46]; - buf[0x41] = buf[0x44]; - buf[0x40] = buf[0x44]; - } - func_80017758(buf + 0x20, buf); - } -} - - -DEFINE_func_80168070() /* dedup: shared engine-core @0x80168070 (src/shared) */ - - -extern s32 func_80029178(s32 arg); -extern s32 func_80166F58(s32, s32, s32, s32); - -void func_801681FC(s32 param_1) { - - extern u8 D_8018C8FC[]; - extern u8 D_8018C8CC[]; - extern u8 D_8018C8CD[]; - s32 iVar3; - s32 a3; - - *(s16 *)(param_1 + 0x28) = func_80029178(0x81) & 0xFF; - *(s32 *)(param_1 + 0x30) = D_8018C8FC[*(s32 *)(param_1 + 0x2C)]; - iVar3 = (*(s32 *)(param_1 + 0x2C) << 0x11) >> 0x10; - *(s16 *)(param_1 + 0x2A) = D_8018C8CC[iVar3]; - *(s32 *)(param_1 + 0x1C) = D_8018C8CD[iVar3]; - a3 = *(s32 *)(param_1 + 0x2C) & 1; - *(s32 *)(param_1 + 0x2C) = a3; - ((void (*)(s32, s32, s32, s32))func_80166F58)(param_1, 4, 4, a3); - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_8016829C() /* dedup: shared engine-core @0x8016829C (src/shared) */ - -DEFINE_func_80168328() /* dedup: shared engine-core @0x80168328 (src/shared) */ - -DEFINE_func_801683D8() /* dedup: shared engine-core @0x801683D8 (src/shared) */ - - -extern s32 func_80166F58(s32, s32, s32, s32); - -void func_80168430(s32 param_1) { - - extern u8 D_8018C908[]; - extern u8 D_8018C8E0[]; - extern u8 D_8018C8E1[]; - s32 iVar1; - - *(s32 *)(param_1 + 0x30) = D_8018C908[*(s32 *)(param_1 + 0x2C)]; - iVar1 = (*(s32 *)(param_1 + 0x2C) << 0x11) >> 0x10; - *(s16 *)(param_1 + 0x2A) = D_8018C8E0[iVar1]; - *(s32 *)(param_1 + 0x1C) = D_8018C8E1[iVar1]; - ((void (*)(s32, s32, s32, s32))func_80166F58)(param_1, 5, 0x3B, 2); - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; -} - - -DEFINE_func_801684B4() /* dedup: shared engine-core @0x801684B4 (src/shared) */ - -DEFINE_func_80168540() /* dedup: shared engine-core @0x80168540 (src/shared) */ - -DEFINE_func_801685EC() /* dedup: shared engine-core @0x801685EC (src/shared) */ - -DEFINE_func_80168640() /* dedup: shared engine-core @0x80168640 (src/shared) */ - -DEFINE_func_80168664() /* dedup: shared engine-core @0x80168664 (src/shared) */ - - -extern void (*D_8018C95C[])(void); - -void func_80168744(void *a0) { - D_8018C95C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168780() /* dedup: shared engine-core @0x80168780 (src/shared) */ - -DEFINE_func_801687CC() /* dedup: shared engine-core @0x801687CC (src/shared) */ - -// @class: decl-conflict (reconcile) — MATCH (108 ins), real-TU verified via rtu_match -// @crack: The wave-2 "8-residual SCHEDULE" note was a STALE-OBJECT / isolation phantom (§42b): -// in the real TU the draft NOCOMPILEs — DEFINE_func_801687CC() (split line ~6757) expands -// `extern void func_80168828(void);` right before the def, so `void func_80168828(s32 param_1)` -// is a HARD `conflicting types` error (cc1 exit 33). RECONCILE-FIRST fix (sweep-safe, lives -// entirely in the def — no //@EDIT, no macro edit): declare the fn `(void)` and capture a0 via -// register s32 a0v __asm__("$4"); s32 param_1 = a0v; -// The register-var binds incoming $a0; copying it into a NORMAL pseudo (live across the calls) -// makes gcc allocate param_1 to a callee-saved reg, emitting the target's `addu $s1,$a0,$zero` -// at idx2. NOTE: a DIRECT `register s32 param_1 __asm__("$4")` FAILS (param_1 stays in the -// call-clobbered $a0 → 100-off). With this reconcile, gcc's natural schedule places the CSE'd -// `li $v1,0x40` at idx15 with ZERO extra levers — the §42a lever-4 consumer-block reorder was -// never needed. The $v1 pin (register c40 __asm__("$3")) is still load-bearing (else 0x40 folds -// to a $v0 immediate). 134-overlay family exemplar: only D_8018C94C differs -> banks x134. -#include "common.h" - - - -void func_80168828() -{ - extern s32 func_80017DC4(void *a0, void *a1); - extern void func_80049CAC(s32 a0, s32 a1); - extern void func_800173BC(void *a0, void *a1); - extern u16 D_8018C94C[]; - - - register s32 a0v __asm__("$4"); - s32 param_1 = a0v; - Thing_80168828_80168828 thing; - s16 matA[16]; - s16 matB[16]; - s16 svec[4]; - u16 *p; - short i; - register s32 c40 __asm__("$3"); /* $v1: hold the CSE'd 0x40 (else gcc folds to $v0 immediate) */ - - c40 = 0x40; - thing.f04 = 2; - thing.f0c = 0x24; - thing.f14 = 0x28; - thing.f08 = -3; - thing.f10 = 3; - thing.f02 = 0; - thing.f00 = 0; - thing.f12 = 0; - thing.f0a = 0; - thing.f18 = c40; - thing.f19 = c40; - thing.f22 = c40; - thing.f1e = c40; - thing.f1a = 0x10; - thing.f20 = 0xff; - thing.f1c = 0xff; - thing.f21 = 0xc0; - thing.f1d = 0xc0; - thing.f24 = 0x50000000; - - svec[0] = *(u16 *)(param_1 + 6); - svec[1] = *(u16 *)(param_1 + 0xA); - svec[2] = *(u16 *)(param_1 + 0xE); - func_80017E68(svec, matA); - - svec[0] = svec[1] = svec[2] = (*(s32 *)(param_1 + 0x1C) << 11) + 0x1000; - ((void (*)(void *, void *))func_80017DC4)(svec, matA); - - svec[0] = *(u16 *)(param_1 + 0x12); - svec[1] = *(u16 *)(param_1 + 0x16); - svec[2] = *(u16 *)(param_1 + 0x1A); - RotMatrixYXZ(svec, matB); - - func_80048EAC(matA, matB); - - svec[1] = 0; - p = D_8018C94C; - for (i = 0; i < 4; i++) { - svec[0] = *p++; - svec[2] = *p++; - ((void (*)(void *, void *))func_80049CAC)(svec, matA); - func_80048EAC(matB, matA); - func_800173BC(&thing, matA); - } -} - - - - -extern void (*D_8018C964[])(void); - -void func_801689D8(void *a0) { - D_8018C964[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168A14() /* dedup: shared engine-core @0x80168A14 (src/shared) */ - -DEFINE_func_80168A88() /* dedup: shared engine-core @0x80168A88 (src/shared) */ - - -extern void (*D_8018C96C[])(void); - -void func_80168AA8(void *a0) { - D_8018C96C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168AE4() /* dedup: shared engine-core @0x80168AE4 (src/shared) */ - - -extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); -/* Conform to the TU's canonical decl (jr_8015C32C.c:5546 `extern void func_80146C3C(void);`) - * and cast at the use site — same escape the TU already uses at :6388. Codegen-neutral. */ -extern void func_80146C3C(void); - -void func_80168B70(s32 a0) { - s32 *p = (s32 *)a0; - if (--p[0x1C / 4] != -1) { - func_80168BDC(a0, 9, 3, 1); - } else { - func_80168BDC(a0, 9, 2, 1); - ((void (*)(s32))func_80146C3C)(a0); - } -} - - -DEFINE_func_80168BDC() /* dedup: shared engine-core @0x80168BDC (src/shared) */ - - -extern void (*D_8018C974[])(void); - -void func_80168D58(void *a0) { - D_8018C974[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80168D94() /* dedup: shared engine-core @0x80168D94 (src/shared) */ - -DEFINE_func_80168EC4() /* dedup: shared engine-core @0x80168EC4 (src/shared) */ - -DEFINE_func_80168F40() /* dedup: shared engine-core @0x80168F40 (src/shared) */ - - -extern void (*D_8018C97C[])(void); - -void func_8016901C(void *a0) { - D_8018C97C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80169058() /* dedup: shared engine-core @0x80169058 (src/shared) */ - -DEFINE_func_801691B8() /* dedup: shared engine-core @0x801691B8 (src/shared) */ - -DEFINE_func_80169228() /* dedup: shared engine-core @0x80169228 (src/shared) */ - - -extern void (*D_8018C984[])(void); - -void func_801693CC(void *a0) { - D_8018C984[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80169408() /* dedup: shared engine-core @0x80169408 (src/shared) */ - -DEFINE_func_8016951C() /* dedup: shared engine-core @0x8016951C (src/shared) */ - -DEFINE_func_80169584() /* dedup: shared engine-core @0x80169584 (src/shared) */ - -DEFINE_func_801696D8() /* dedup: shared engine-core @0x801696D8 (src/shared) */ - - -extern void (*D_8018C98C[])(void); - -void func_80169830(void *a0) { - D_8018C98C[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016986C() /* dedup: shared engine-core @0x8016986C (src/shared) */ - -DEFINE_func_801699D0() /* dedup: shared engine-core @0x801699D0 (src/shared) */ - -DEFINE_func_80169A4C() /* dedup: shared engine-core @0x80169A4C (src/shared) */ - - -extern void (*D_8018CA40[])(void); - -void func_80169B80(void *a0) { - D_8018CA40[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern void func_800D2318(void); -extern void RotMatrixYXZ(void *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_800D222C(void *a0, void *a1, s32 a2); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_80048D9C(void *a0, void *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_80146C3C(void); - -void func_80169BBC(s32 arg0) { - - extern s32 D_801269A4; - extern s32 D_801269A8; - extern s32 D_801269AC; - extern u16 D_8018C994[]; - extern u8 D_8018CA04[]; - extern u8 D_8018CA34[]; - extern u8 D_801D4708[]; - u16 rot[4]; - s16 vec[4]; - s32 pos[4]; - s16 mtx[16]; - s32 p1; - s32 s2; - - func_800D2318(); - rot[0] = *(u16 *)(arg0 + 0x12); - rot[1] = *(u16 *)(arg0 + 0x16); - rot[2] = 0; - RotMatrixYXZ(rot, mtx); - vec[0] = 0; - vec[1] = -2; - vec[2] = -0x14; - ApplyMatrixSV(mtx, vec, vec); - *(u16 *)(arg0 + 6) = *(u16 *)(arg0 + 6) + (u16)vec[0]; - *(u16 *)(arg0 + 0xA) = *(u16 *)(arg0 + 0xA) + (u16)vec[1]; - *(u16 *)(arg0 + 0xE) = *(u16 *)(arg0 + 0xE) + (u16)vec[2]; - p1 = func_80146A6C(9, (void *)arg0, *(s16 *)(arg0 + 6), *(s16 *)(arg0 + 0xA), - *(s16 *)(arg0 + 0xE), 0, 0); - if (p1 != 0) { - *(u16 *)(p1 + 0x12) = rot[0]; - *(u16 *)(p1 + 0x16) = rot[1]; - *(u16 *)(p1 + 0x1A) = rot[2]; - } - func_80146A6C(0xC, (void *)arg0, *(s16 *)(arg0 + 6), *(s16 *)(arg0 + 0xA), - *(s16 *)(arg0 + 0xE), 0, 0); - s2 = func_800D222C((void *)arg0, D_8018CA34, 0x17); - if (s2 != 0) { - *(s32 *)(arg0 + 0x20) = s2; - rot[0] = rot[0] + D_8018C994[*(s32 *)(arg0 + 0x30)]; - rot[1] = rot[1] - 0x400; - RotMatrixYXZ(rot, mtx); - pos[0] = D_801269A4 - *(s16 *)(arg0 + 6); - pos[1] = D_801269A8 - *(s16 *)(arg0 + 0xA); - pos[2] = D_801269AC - *(s16 *)(arg0 + 0xE); - ApplyTransposeMatrixLV(mtx, pos, pos); - rot[2] = -ratan2(pos[0], pos[1]); - vec[0] = 0x400; - vec[1] = -0x400; - vec[2] = 0; - RotMatrixYXZ(vec, mtx); - *(s32 *)(s2 + 0x34) = (s32)D_801D4708; - RotMatrixYXZ(rot, D_801D4708); - func_80048D9C(D_801D4708, mtx); - *(u16 *)(s2 + 0x18) = 0x5000; - *(u16 *)(s2 + 0x1A) = 0x2000; - *(s32 *)(s2 + 4) = *(s32 *)(s2 + 4) | 0xC000140; - func_80128EA8(s2, arg0 + 0x24, (s32)D_8018CA04); - *(u16 *)(arg0 + 2) = *(u16 *)(arg0 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(arg0); - } -} - - -DEFINE_func_80169E44() /* dedup: shared engine-core @0x80169E44 (src/shared) */ - - -extern void (*D_8018CA48[])(void); - -void func_80169F00(void *a0) { - D_8018CA48[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (expected; simple straight-line + single branch, one call-crossing local in $s0) - -extern void func_800D1FC8(s32 a0, s32 a1); -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern void func_80146C3C(void); - -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; - -void func_80169F3C(int param_1) -{ - int iVar1; - - ((int (*)(int, int))func_800D1FC8)(param_1, 6); - iVar1 = func_800D21C4(param_1, D_8018C9F8, 0x16); - if (iVar1 != 0) { - *(int *)(param_1 + 0x20) = iVar1; - *(short *)(iVar1 + 0x1a) = 0x2000; - *(short *)(iVar1 + 0x18) = 0x2000; - *(char *)(iVar1 + 0x26) = 0x60; - *(char *)(iVar1 + 0x25) = 0x60; - *(char *)(iVar1 + 0x24) = 0x60; - *(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50000000; - ((void (*)(int, int, void *))func_80128EA8)(iVar1, param_1 + 0x24, D_8018C9B8); - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - } else { - ((void (*)(int))func_80146C3C)(param_1); - } -} - - -DEFINE_func_80169FE0() /* dedup: shared engine-core @0x80169FE0 (src/shared) */ - - -extern void (*D_8018CA80[])(void); - -void func_8016A020(void *a0) { - D_8018CA80[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016A05C() /* dedup: shared engine-core @0x8016A05C (src/shared) */ - -DEFINE_func_8016A08C() /* dedup: shared engine-core @0x8016A08C (src/shared) */ - -DEFINE_func_8016A1CC() /* dedup: shared engine-core @0x8016A1CC (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (284 ins). Loop-counter biv update: pinned $v0 temp + $0-add opaque copy (i = t + zr) forces the target's 2-insn `addiu v0,s1,1; addu s1,v0,zero` and keeps CSE from rewriting the (s16)t test to read s1. - -#include "common.h" - - - - - -void func_8016A290(s32 param_1, void *param_2, void *param_3) { - extern u8 D_8018CA50; - extern u8 D_8018CA64[]; - - struct Fr_8016A290 fr; - u8 *p; - s32 i; - register s32 t __asm__("$2"); - register s32 zr __asm__("$0"); - s32 flags; - s32 iVar3; - - iVar3 = *(s32 *)(param_1 + 0x34); - - fr.center.x = (*((s16 *)param_2) + *((s16 *)param_3)) >> 1; - fr.center.y = (((s16 *)param_2)[1] + ((s16 *)param_3)[1]) >> 1; - fr.center.z = (((s16 *)param_2)[2] + ((s16 *)param_3)[2]) >> 1; - ((void(*)(s32, void *, void *))func_80149350)(iVar3, &fr.center, &fr.center); - - *(u16 *)(param_1 + 0x6) = *(u16 *)&fr.center.x; - *(u16 *)(param_1 + 0xA) = *(u16 *)&fr.center.y; - *(u16 *)(param_1 + 0xE) = *(u16 *)&fr.center.z; - func_800D20C0(&fr.center, &fr.diff, 8); - func_80017E68(&fr.center, fr.mtx); - - fr.diff.x = *(u16 *)((s16 *)param_3) - *(u16 *)((s16 *)param_2); - fr.diff.y = *(u16 *)(((s16 *)param_3) + 1) - *(u16 *)(((s16 *)param_2) + 1); - fr.diff.z = *(u16 *)(((s16 *)param_3) + 2) - *(u16 *)(((s16 *)param_2) + 2); - ((void(*)(s32, void *, void *))ApplyMatrixSV)(*(s32 *)(iVar3 + 0x20) + 0x34, &fr.diff, &fr.diff); - func_800D23D0(&fr.diff); - RotMatrixYXZ(&fr.diff, fr.mtx); - - fr.pos[0] = D_801269A4 - fr.center.x; - fr.pos[1] = D_801269A8 - fr.center.y; - fr.pos[2] = D_801269AC - fr.center.z; - ApplyTransposeMatrixLV(fr.mtx, fr.pos, fr.pos); - fr.diff.z = -ratan2(fr.pos[0], fr.pos[1]); - RotMatrixYXZ(&fr.diff, fr.mtx); - - fr.v[3].z = 0; - fr.v[2].z = 0; - fr.v[0].z = 0; - fr.v[1].z = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - flags = D_800B99DA; - if (flags & 1) { - fr.col[1].r = *(s32 *)(param_1 + 0x30) + 0x20; - } else if (flags & 2) { - fr.col[1].r = *(s32 *)(param_1 + 0x30) + 0x40; - } else { - fr.col[1].r = *(s32 *)(param_1 + 0x30); - } - - p = ((u8 *)&D_8018CA50); - fr.col[0].b = 0; - fr.col[0].g = 0; - fr.col[0].r = 0; - fr.col[2].b = 0; - fr.col[2].g = 0; - fr.col[2].r = 0; - fr.col[3].b = 0; - fr.col[3].g = 0; - fr.col[3].r = 0; - fr.code = 0x50000000; - fr.col[1].b = fr.col[1].r >> 3; - fr.col[1].g = fr.col[1].r >> 3; - i = 0; -L1: - fr.v[0].x = (s8)*p++; - fr.v[0].y = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].y = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].y = (s8)*p--; - func_80017758(fr.v, fr.mtx); - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L1; - - fr.v[3].y = 0; - fr.v[2].y = 0; - fr.v[0].y = 0; - fr.v[1].y = 0; - fr.v[1].x = 0; - fr.v[1].z = -0x20; - p = D_8018CA64; - i = 0; -L2: - fr.v[0].x = (s8)*p++; - fr.v[0].z = (s8)*p++; - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p--; - func_80017758(fr.v, fr.mtx); - if ((s16)i == 1) { - fr.v[1].z = 0x20; - p += 2; - } - t = i + 1; - i = t + zr; - if ((s16)t < 4) goto L2; - - p += 2; - fr.v[0].x = 0; - fr.v[0].z = -0x20; - fr.col[0].r = fr.col[1].r; - fr.col[0].b = fr.col[1].g; - fr.col[0].g = fr.col[1].g; - i = 0; -L3: - fr.v[2].x = (s8)*p++; - fr.v[2].z = (s8)*p++; - fr.v[3].x = (s8)*p++; - fr.v[3].z = (s8)*p++; - func_80017758(fr.v, fr.mtx); - t = i + 1; - i = t + zr; - if ((s16)t < 2) goto L3; -} - - - - -extern void (*D_8018CA8C[])(void); - -void func_8016A700(void *a0) { - D_8018CA8C[*(u16 *)((s32)a0 + 0x2)](); -} - - -// Seed for func_8016A73C (ov_SC01_077 exemplar). Overlay-local struct guessed. - - - - - -s32 func_8016A73C(s32 arg0) { - int sp10[8]; - short v[3]; /* sp30, sp32, sp34 */ - int r; - short tmp; - - r = ((int(*)())rand)(); - v[1] = ((r & 0x7F) << 4) + 0x400; - v[0] = ((unsigned)(r & 0x7F00) >> 5) - 0x300; - v[2] = 0; - ((void(*)(short *, void *))RotMatrixYXZ)(v, sp10); - ((void(*)(int, void *))func_80048EAC)(((Obj_8016A73C *)arg0)->unk34->unk34->unk20 + 0x34, sp10); - v[0] = 0; - v[1] = 0; - v[2] = -0x50; - ((int(*)(void *, short *, short *))ApplyMatrixSV)(sp10, v, v); - - ((Obj_8016A73C *)arg0)->mat = (*(Mat_8016A73C*)&D_800AE620); - - tmp = ((Obj_8016A73C *)arg0)->unk6 + v[0]; - ((Obj_8016A73C *)arg0)->unk6 = tmp; - ((Obj_8016A73C *)arg0)->mat.w[5] = tmp; - tmp = ((Obj_8016A73C *)arg0)->unkA + v[1]; - ((Obj_8016A73C *)arg0)->unkA = tmp; - ((Obj_8016A73C *)arg0)->mat.w[6] = tmp; - tmp = ((Obj_8016A73C *)arg0)->unkE + v[2]; - ((Obj_8016A73C *)arg0)->unkE = tmp; - ((Obj_8016A73C *)arg0)->unk2 = ((Obj_8016A73C *)arg0)->unk2 + 1; - ((Obj_8016A73C *)arg0)->mat.w[7] = tmp; -} - - - -DEFINE_func_8016A890() /* dedup: shared engine-core @0x8016A890 (src/shared) */ - - -// @class: struct -// @stuck: none — expect MATCH (single-call leaf, stack-struct prim build + averaging writeback) - -DEFINE_func_8016A8FC() /* dedup: shared engine-core @0x8016A8FC (src/shared) */ - - -DEFINE_func_8016AA50() /* dedup: shared engine-core @0x8016AA50 (src/shared) */ - - -extern void (*D_8018CAD4[])(void); - -void func_8016AB30(void *a0) { - D_8018CAD4[*(u16 *)((s32)a0 + 0x2)](); -} - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8016AB6C.c b/src/ov_SC03_119/ov_SC03_119_jr_8016AB6C.c deleted file mode 100644 index 2c39dd674..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8016AB6C.c +++ /dev/null @@ -1,4449 +0,0 @@ -#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 */ -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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 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 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_8018B5A8[]; -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_8018B5B0; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -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_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_8018C184[])(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_8018C190[])(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 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_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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 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 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_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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 s32 func_80016A5C(); -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_8018CAD4[])(void); -extern void func_8016AB30(void *a0); -/* ==== end §8b carried decl layer ==== */ - - -/* func_8016AB6C (ov_SC01_077 jr family, 188 ins, jtbl_801D8BC8) — Phase 26 crack - * PIN-FREE. Status: **MATCH (188 ins)**, jtbl VERIFIED exact. - * - * jtbl_801D8BC8 = 8 entries, bound `sltiu $v0,$v1,8`, default -> after-switch join. - * case 0->+0x88 1->+0xA8 2->+0x110 3->+0x130 4->+0x110 5->+0xA8 6->+0x178 7->+0x178 - * My .rodata relocs (8x R_MIPS_32 vs .text) are byte-identical to that: - * 88 a8 110 130 110 a8 178 178 (objdump -r/-s -j .rodata .run/match/func_8016AB6C/t.o) - * - * ============================================================================ - * LEVER 9 — THE CALL-SINK (the last 2 ins; NEW, generalizable). See cookbook §48-B. - * ============================================================================ - * FINAL RESIDUAL was 2 ins (idx 141/143): both present and byte-correct, only transposed - * around `jal func_8001CE28`: - * mine : addu $a1,$s0,$zero ; jal ; [delay] addu $a0,$s2,$zero - * target: addu $a0,$s2,$zero ; jal ; [delay] addu $a1,$s0,$zero - * - * It was NOT a scheduling residual (sched1 already emitted a0-then-a1, per calls.c:1878 - * which loads arg regs in ASCENDING arg order). It was a REGALLOC residual: - * - * The old shape `f(A,LIT); p = LIT;` created TWO pseudos: a block-local arg pseudo - * (reg145/150, holding the symbol) and a GLOBAL allocno `p` (reg79) fed by a copy at the - * end of each arm. greg dump said: `;; 79 preferences: 5 16`. - * - $5 copy-pref <- the join's arg move (set (reg:SI 5 a1) (reg 79)) - * - $16 copy-pref <- the arms' copies (set (reg 79) (reg145)) ... because - * set_preference (global.c:1535) applies reg_renumber[], so a LOCALLY-allocated - * pseudo counts as its hard reg. - * find_reg's copy-preference override (global.c:~1000) scans hard regs `for (i = 0; i < - * FIRST_PSEUDO_REGISTER; i++)` — plain ASCENDING regno, NOT reg_alloc_order. So $5 beats - * $16, deterministically. The ONLY way $16 wins is if $5 is already in `used` when that - * scan runs, and the only reachable way to do that is - * allocno_calls_crossed[p] > 0 -> find_reg sets used1 = call_used_reg_set (global.c:906) - * -> AND_COMPL(hard_reg_copy_preferences, used) strips $5 -> $16 is all that's left. - * reg79 crossed NO call (def after func_80024054, last use before func_8001CE28), so $5 won. - * p in $a1 => the arms' copies became `move $5,$16`, cross_jump merged them to the top of - * the join (ahead of the a0 move), and reorg then slotted the a0 move. - * - * THE FIX — SINK THE CALL INTO THE ARMS (byte-proven, close=2 -> MATCH): - * BEFORE AFTER - * if (c) { s3 = f(A1,P1)+3; p = P1; } if (c) { s3 = f(A1,P1)+3; g(obj,P1); } - - * else { s3 = f(A2,P2)+9; p = P2; } else { s3 = f(A2,P2)+9; g(obj,P2); } - * g(obj, p); // no join copy, no `p` at all - * Duplicating the call kills the cross-block pseudo `p` entirely. The pointer is now a - * BLOCK-LOCAL pseudo per arm (lreg: "Register 144 used 3 times across 12 insns in block 13; - * crosses 1 call; pointer") -> LOCAL-alloc, crosses a call -> $s0, exactly as before, so the - * load-bearing "$16 occupant" that pushes arg0 off $s0 onto $s1 (lever 3) is PRESERVED. - * greg goes from "9 regs to allocate: ... 79 ..." to "8 regs to allocate:" (79 gone), and - * dispositions are unchanged: arg0=$s1, obj=$s2, var_s3=$s3, var_s0=$s0. - * The duplicated `[addu $a0,$s2][addu $a1,$s0][jal g]` tail is IDENTICAL in both arms after - * reload (same hard regs!), so jump2's cross_jump re-merges it into a single join block — - * ZERO extra bytes — and dbr then fills the jal slot with the nearest insn above it, which - * is now the a1 move. Target shape, exactly. - * - * GENERAL RULE: when a value is defined in both arms of an if/else and consumed only by a - * call in the join, gcc's join-copy makes it a global allocno whose ascending-scan copy-pref - * hands it the ARG register. If the target instead keeps it in a callee-saved reg, DUPLICATE - * THE CALL INTO BOTH ARMS — cross_jump gives the bytes back for free, and the value demotes to - * a call-crossing block-local, which local-alloc parks in $s0. (Inverse of §48-A1: A1 sinks an - * INIT to shorten a live range; this sinks the CONSUMER to delete the allocno outright.) - * - * LEVERS PROVEN HERE (see the report / cookbook): - * 1. LOOP ROTATION (§46 L1, exact trigger): stmt.c:2255 expand_end_loop scans forward from the - * loop start label and stops at the FIRST CODE_LABEL, but sets last_test_insn on any - * unconditional `jump end_label` — which is exactly what `break` emits. So `break` out of - * the first test rotates the loop (peels the test into a preheader). `goto lout;` jumps to a - * USER label, not end_label, so last_test_insn stays 0 and the loop is NOT rotated. - * (`do{}while()` alone does NOT help: expand_exit_loop_if_false ends with a CODE_LABEL, so - * expand_end_loop's "already ends in a bare condjump" guard never fires.) - * Bonus: the unrotated loop is what keeps the s16 re-sign-extension INSIDE the loop - * (sll16/sra16 for the AND, and `sra 20` reusing that same `sll 16` for the >>4). - * 2. `var_v1 = -0x1000;` AFTER the call, not before -> it no longer crosses the call -> $v1 - * instead of a callee-saved reg. - * 3. THE $s0/$s1 DIAL (new): `f(A,B); p = B;` (literal args, then assign p from the SAME - * literal AFTER the call) makes cse rewrite `p = B` as a COPY of the call's arg pseudo. - * That arg pseudo is then live across the call yet stays BLOCK-LOCAL -> local_alloc gives it - * $s0 -> every global allocno live there now conflicts with hard reg $16 -> the big pointer - * (arg0) is pushed off $s0 onto $s1 and the whole allocation flips. Writing `p = B; f(A,p);` - * instead merges them into ONE global allocno, no local, and arg0 takes $s0. (99 -> 54.) - * 4. §46 L2 refinement: a SAME-mode copy always dies (cse canon_reg/qty_first_reg). A - * DIFFERENT-mode copy `(set (reg:QI x) (subreg:QI (reg:SI y)))` is not a plain reg-reg copy, - * so cse cannot merge the qtys and the copy insn SURVIVES. That is how `var_c2 = var_s0;` - * materialises the target's `addu $v0,$s0,$zero`. (187 -> 188 ins.) - * 5. ANTI-DEP PINS A COPY EARLY: sched deterministically SINKS a copy to just before its - * consumers. Reusing the SAME local (var_s0) as the if/else scratch, copying it out, then - * redefining var_s0 creates a WAR dep that pins the copy ahead of the redefinition — which - * also removes the live-range overlap so both share $s0. (54 -> 22.) - * 6. `t = x+1; x = t+1;` is folded by cse to `x = x+2`. `t = x+1; x = t; x++;` keeps - * `addiu t,x,1 ; addiu x,t,1`. (22 -> 21.) - * 7. STORE-SINK: to get "compute chain A first, store A last", put A's store FIRST in the - * source — the backward list scheduler sinks a store (no dependents) but keeps the compute - * order. (21 -> 8.) - * 8. DELAY SLOT = source order: reorg takes the closest eligible insn before the jal, and the - * backward scheduler puts the HIGHEST-LUID (latest in source) of the tied independents - * nearest the call. `var_s0 = 3;` written AFTER the call statement (sched still hoists it - * above the call — pseudos may cross calls at sched1) puts `addiu $s0,$zero,3` in the delay - * slot instead of the a1=0 arg move. (8 -> 2.) - */ - - - - - -s32 func_8016AB6C(s32 arg0) { - extern s32 func_801783D0(s32 a0, s32 a1); - extern s32 func_80024054(u8 *a0, u8 *a1); - extern void func_8001CE28(Obj_8016AB6C *a0, u8 *a1); - extern u8 D_8018CA94[]; - extern u8 D_8018CAA4[]; - extern u8 D_801D34A0[]; - extern u8 D_801D34C8[]; - - SVec_8016AB6C sp10; - SVec_8016AB6C sp18; - s16 var_s0; - s16 var_v1; - s16 var_s3; - s16 tmp; - s32 temp_v0; - u32 r; - u8 var_c2; - Obj_8016AB6C *obj; - - temp_v0 = func_801783D0(((Ent_8016AB6C *)arg0)->unk30, 0); - var_s0 = 3; - var_v1 = -0x1000; - ((Ent_8016AB6C *)arg0)->unk30 = temp_v0; - do { - if (temp_v0 & var_v1) { - goto lout; - } - var_s0--; - var_v1 >>= 4; - } while (var_s0 >= 0); -lout: - switch (((Ent_8016AB6C *)arg0)->unk2C) { - case 0: - ((Ent_8016AB6C *)arg0)->unk26 = 1; - ((Ent_8016AB6C *)arg0)->unk24 = 0x60; - ((Ent_8016AB6C *)arg0)->unkA -= 0x20; - break; - case 1: - case 5: - ((Ent_8016AB6C *)arg0)->unk14 = 0xFFF60000; - r = ((u32(*)())rand)(); - tmp = var_s0 + 1; - var_s0 = tmp; - ((Ent_8016AB6C *)arg0)->unk10 = (r & 0xF) - 8 << 0xF; - ((Ent_8016AB6C *)arg0)->unk18 = ((r >> 4) & 0xF) - 8 << 0xF; - ((Ent_8016AB6C *)arg0)->unk26 = 4; - ((Ent_8016AB6C *)arg0)->unk24 = 0x80; - ((Ent_8016AB6C *)arg0)->unk30 |= 0xA << (tmp * 4); - break; - case 2: - case 4: - ((Ent_8016AB6C *)arg0)->unk26 = 4; - ((Ent_8016AB6C *)arg0)->unk24 = 0x80; - ((Ent_8016AB6C *)arg0)->unkA -= 0x18; - break; - case 3: - tmp = var_s0 + 1; - var_s0 = tmp; - var_s0++; - ((Ent_8016AB6C *)arg0)->unk26 = 4; - ((Ent_8016AB6C *)arg0)->unk24 = 0x80; - ((Ent_8016AB6C *)arg0)->unkA -= 0x18; - ((Ent_8016AB6C *)arg0)->unk30 = (((Ent_8016AB6C *)arg0)->unk30 | (0xF << (tmp * 4))) * 0x10; - break; - case 6: - case 7: - obj = ((Obj_8016AB6C *(*)(s32))func_801465C0)(temp_v0); - if (obj == 0) { - ((void(*)(Ent_8016AB6C *))func_80146C3C)(((Ent_8016AB6C *)arg0)); - return; - } - sp10.vx = ((Ent_8016AB6C *)arg0)->unk6; - sp10.vy = ((Ent_8016AB6C *)arg0)->unkA - 0x18; - sp10.vz = ((Ent_8016AB6C *)arg0)->unkE; - ((void(*)(SVec_8016AB6C *, SVec_8016AB6C *, s32))func_800D20C0)(&sp10, &sp18, 6); - ((Ent_8016AB6C *)arg0)->unk6 = sp10.vx; - ((Ent_8016AB6C *)arg0)->unkA = sp10.vy; - ((Ent_8016AB6C *)arg0)->unkE = sp10.vz; - if (((Ent_8016AB6C *)arg0)->unk2C == 6) { - var_s3 = func_80024054(D_8018CA94, D_801D34A0) + 3; - func_8001CE28(obj, D_801D34A0); - } else { - var_s3 = func_80024054(D_8018CAA4, D_801D34C8) + 9; - func_8001CE28(obj, D_801D34C8); - } - obj->unkE = var_s3; - obj->unk4 |= 0x04000000; - if (((Ent_8016AB6C *)arg0)->unk2C == 6) { - obj->unk27 = 0xB5; - var_s0 = 0x70; - } else { - obj->unk27 = 0xAE; - var_s0 = 0xB0; - } - var_c2 = var_s0; - var_s0 = var_s3 >> 2; - obj->unk2E = -8; - obj->unk30 = 0; - obj->unk26 = var_c2; - obj->unk25 = var_c2; - obj->unk24 = var_c2; - ((Ent_8016AB6C *)arg0)->unk20 = obj; - break; - } - ((Ent_8016AB6C *)arg0)->unk2A = 4 - (var_s0 * 4); - ((Ent_8016AB6C *)arg0)->unk28 = var_s0; - ((Ent_8016AB6C *)arg0)->unk1C = 0xB; - ((Ent_8016AB6C *)arg0)->unk2++; -} - - - -extern void func_8016B234(); -extern void func_800D22E4(s32 a0); - -void func_8016AE5C(s32 param_1) { - s32 sp; - - sp = *(s32 *)(param_1 + 0x20); - if (*(u32 *)(param_1 + 0x2C) < 6) { - func_8016B234(); - } - switch (*(u32 *)(param_1 + 0x2C)) { - case 0: - *(s16 *)(param_1 + 0xA) -= *(s32 *)(param_1 + 0x1C); - *(s32 *)(param_1 + 0x1C) = *(s32 *)(param_1 + 0x1C) - 1; - if (*(s32 *)(param_1 + 0x1C) != 0) { - if ((*(s32 *)(param_1 + 0x1C) & 3) == 1) { - *(s16 *)(param_1 + 0x26) += 1; - } - return; - } - *(s16 *)(param_1 + 0x24) = 0xFF; - *(s32 *)(param_1 + 0x1C) = 8; - *(s16 *)(param_1 + 2) += 1; - return; - case 1: - case 5: - func_800D22E4(param_1); - *(s32 *)(param_1 + 0x14) += 0x18000; - case 2: - case 3: - case 4: - case 6: - case 7: - *(s16 *)(param_1 + 0xA) -= *(s32 *)(param_1 + 0x1C); - *(s32 *)(param_1 + 0x1C) = *(s32 *)(param_1 + 0x1C) - 1; - if (*(s32 *)(param_1 + 0x1C) == 0) { - if (*(u32 *)(param_1 + 0x2C) < 6) { - *(s16 *)(param_1 + 0x24) = 0xC0; - *(s32 *)(param_1 + 0x1C) = 8; - } else { - *(u8 *)(sp + 0x26) = 0xC0; - *(u8 *)(sp + 0x25) = 0xC0; - *(u8 *)(sp + 0x24) = 0xC0; - *(s32 *)(param_1 + 0x1C) = 0xC; - } - *(s16 *)(param_1 + 2) += 1; - } - break; - } -} - -DEFINE_func_8016AFB0() /* dedup: shared engine-core @0x8016AFB0 (src/shared) */ - -DEFINE_func_8016B114() /* dedup: shared engine-core @0x8016B114 (src/shared) */ - - - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_80016ED4(void *a0); - - -void func_8016B234(s32 param_1) { - - extern u8 D_800AF648; - extern u8 D_8018CACC; - short input[3]; - Prim_B234 prim; - struct { s16 xy[2]; s32 sp1c; s32 flag; } out; - void *dp; - u32 uVar1; - s16 iVar2; - s32 X, Y0, Y1, base, ni; - register s32 sy __asm__("$16"); - register s16 xtmp __asm__("$4"); - register s32 sxy __asm__("$3"); - - dp = &D_800AF648; - func_8004914C(dp); - func_800491AC(dp); - input[0] = *(u16 *)(param_1 + 6); - input[1] = *(u16 *)(param_1 + 0xA); - input[2] = *(u16 *)(param_1 + 0xE); - RotTransPers((s32)input, (s32)out.xy, &out.sp1c, &out.flag); - if ((out.flag & 0xffffefff) == 0) { - sxy = *(s32 *)out.xy; - prim.a04 = 0x10; - X = *(u16 *)(param_1 + 0x2a) + sxy; - sy = (u16)out.xy[1]; - prim.ax = prim.cx = X; - prim.bx = prim.dx = X + 8; - Y0 = sy - *(u16 *)(param_1 + 0x26); - prim.ay = prim.by = Y0; - sxy = *(u16 *)(param_1 + 0x26); - prim.v0 = prim.v1 = 0x1d0; - prim.v2 = prim.v3 = 0x1d8; - sxy = sy + sxy; - prim.cy = prim.dy = sxy; - __asm__ __volatile__("" : : "r"(sy)); - prim.r = prim.g = prim.b = *(u8 *)(param_1 + 0x24); - prim.code = (&D_8018CACC)[*(s32 *)(param_1 + 0x2c)]; - if (*(s16 *)(param_1 + 0x26) < 5) { - prim.tag = 0; - } else { - prim.tag = 0x50000000; - } - uVar1 = *(u16 *)(param_1 + 0x30); - iVar2 = 0; - if (0 < *(s16 *)(param_1 + 0x28) + 1) { - do { - base = ((uVar1 + 1) & 0xf) << 3; - prim.u0 = prim.u2 = base + 0x620; - prim.u1 = prim.u3 = base + 0x628; - func_80016ED4(&prim); - uVar1 = (s32)(uVar1 << 0x10) >> 0x14; - iVar2 = iVar2 + 1; - __asm__ __volatile__(""); - xtmp = prim.ax; - prim.cx = prim.ax = xtmp - 8; - prim.bx = prim.dx = xtmp; - } while ((s16)iVar2 < *(s16 *)(param_1 + 0x28) + 1); - } - } -} - - -DEFINE_func_8016B3F4() /* dedup: shared engine-core @0x8016B3F4 (src/shared) */ - -DEFINE_func_8016B428() /* dedup: shared engine-core @0x8016B428 (src/shared) */ - -DEFINE_func_8016B448() /* dedup: shared engine-core @0x8016B448 (src/shared) */ - - -extern void (*D_8018CB50[])(void); - -void func_8016B4BC(void *a0) { - D_8018CB50[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: struct -// @stuck: none — MATCH - -extern void func_80015978(s32 a0, s32 *a1); -extern int func_8016B9F8(int); -extern int func_8016B834(int, int); -extern void func_8016B984(void *a0); -extern void func_8016B91C(int); -extern int D_801D34F0; - -void func_8016B4F8(int param_1) -{ - int iVar1; - int uVar2; - volatile int buf[2]; - - ((void (*)(int, void *))func_80015978)(param_1 + 4, &D_801D34F0); - if (func_8016B9F8(param_1) == 0) { - *(int *)(param_1 + 0x18) = 0; - *(int *)(param_1 + 0x14) = 0; - *(int *)(param_1 + 0x10) = 0; - iVar1 = func_8016B834(param_1, 0); - *(int *)(param_1 + 0x10) = iVar1; - if (iVar1 != 0) { - iVar1 = func_8016B834(param_1, 1); - *(int *)(param_1 + 0x14) = iVar1; - if (iVar1 != 0) { - iVar1 = func_8016B834(param_1, 2); - *(int *)(param_1 + 0x18) = iVar1; - if (iVar1 != 0) goto success; - } - } - } - ((void (*)(int))func_8016B984)(param_1); - return; -success: - func_8016B91C(param_1); - uVar2 = *(int *)(param_1 + 0x2c); - if (uVar2 == 0) { - uVar2 = 0xf0; - } else { - uVar2 = 0x2d0; - } - *(int *)(param_1 + 0x1c) = uVar2; - uVar2 = *(unsigned short *)(param_1 + 2); - uVar2 = uVar2 + 1; - *(unsigned short *)(param_1 + 2) = uVar2; -} - - - -// @class: schedule -// @stuck: none — MATCH - - -extern s32 func_8016B9F8(s32 param_1); -extern void func_8016B984(void *a0); -extern void func_8016B6BC(s32, s32, s32, s32); -extern void func_8016B91C(s32); - -extern s16 D_8018CB44[]; - -void func_8016B5C0(s32 param_1) { - s32 iVar4; - s32 iVar2; - s32 iVar5; - s16 sVar1; - s16 *psVar5; - s32 i; - - iVar4 = *(s32 *)(param_1 + 0x18); - if (((s32 (*)(void))func_8016B9F8)() != 0) { - goto L984; - } - sVar1 = *(s16 *)(iVar4 + 0x1a) + 0x200; - *(s16 *)(iVar4 + 0x1a) = sVar1; - *(s16 *)(iVar4 + 0x18) = sVar1; - if (*(s32 *)(param_1 + 0x2c) == 0) { - iVar2 = *(s32 *)(param_1 + 0x1c); - } else { - iVar2 = *(s32 *)(param_1 + 0x1c) / 3; - } - iVar5 = *(s32 *)(param_1 + 0x1c) + -0x20; - *(s32 *)(param_1 + 0x1c) = iVar5; - if (iVar5 >= 0) { - goto LOOP; - } -L984: - ((void (*)(s32))func_8016B984)(param_1); - return; -LOOP: - i = 0; - psVar5 = D_8018CB44; - do { - func_8016B6BC(param_1, iVar2, (s32)*psVar5, (s32)(s16)i); - psVar5 = psVar5 + 1; - i = i + 1; - } while (i < 6); - func_8016B91C(param_1); - return; -} - - - -// @class: schedule -// @stuck: none — MATCH (94/94 ins, match_one relocation-masked) -// -// Exemplar of the 138-member h_seq family. The whole crack was ONE statement-order -// lever in the tail: the target's post-func_80015978 fix-up runs -// v[2].x += off.x; v[2].y += off.y; v[0].c = 3; -// (the `c = 3` store LAST). Writing `c = 3` between the two v[2] RMWs — the order the -// Ghidra-C literally prints, and what every prior draft copied — costs 12 mismatches: -// gcc hoists the `li 3` into the load-delay window, which pushes v[2].x into $v1 and -// the off.x temp into $a0, and then the `addu $a0,$s1,$zero` arg copy can no longer be -// scheduled early enough to become the base register of the v[2]/v[0].c stores. -// With `c = 3` last, the arg copy births at the v[2].x/v[2].y boundary (idx 76) exactly -// as the target does, and the mixed $s1-load / $a0-store addressing falls out for free. -// (§67-adjacent: the copy PLACEMENT was the root cause — but here plain statement order -// reaches it, no `__asm__` launder and no register pin needed. Prior notes calling this a -// regalloc tie-break and pinning $a0 were chasing the consequence, not the cause.) -// -// Everything else follows the Ghidra-C: `Prim *p = &prim` (one alias only — a second -// pointer name splits the pseudo and breaks the $s1 base), the `q++` post-increment -// running pointer over the 8-byte table rows, and the ((param_4 << 16) >> 14) byte-offset -// index into D_8018CB2C (sll 16 / sra 14). - - - /* 0x28 */ - - - /* the 8-byte D_8018CB2C[] row */ - -extern void func_80013CFC(s32 a0, s32 a1, void *a2); -extern void func_80015978(s32 a0, s32 *a1); -extern void func_8001739C(void *a0); - -/* Def sig is deliberately (s32,s32,s32,s32) — byte-identical to the (int,unsigned,short,int) - * spelling, and IDENTICAL to this TU's own caller decl `extern void func_8016B6BC(s32,s32,s32,s32);` - * (ov_SC01_077_jr_8016AB6C.c), so there is no §73/§57 def-side self-decl conflict to reconcile. */ -void func_8016B6BC(s32 param_1, s32 param_2, s32 param_3, s32 param_4) { - - extern int D_8018CB2C; - int iVar1; - M8_8016B6BC *q; - Prim_8016B6BC prim; - Prim_8016B6BC *p = &prim; - DVec_8016B6BC off; - unsigned int v; - unsigned int c; - - q = (M8_8016B6BC *)*(int *)((int)&D_8018CB2C + ((param_4 << 0x10) >> 0xe)); - p->color = 0x50000000; - c = (unsigned int)param_2; - v = 0x20; - if (c < 0x20) { - v = c; - } - if (*(int *)(param_1 + 0x2c) == 0) { - c = c | (v << 0x10 | v << 8); - } else { - c = c << 8 | v << 0x10 | v; - } - p->combined = c; - iVar1 = (int)(short)param_3; - p->z1c = 0; - p->z20 = 0; - func_80013CFC(iVar1, (int)q++, &p->v[0]); - func_80013CFC(iVar1, (int)q++, &p->v[1]); - func_80013CFC(iVar1, (int)q, &p->v[2]); - func_80015978(param_1 + 4, (s32 *)&off); - p->v[0].x += off.x; - p->v[0].y += off.y; - p->v[1].x += off.x; - p->v[1].y += off.y; - p->v[2].x += off.x; - p->v[2].y += off.y; - p->v[0].c = 3; - func_8001739C(p); -} - - - -// @class: schedule -// @stuck: none — MATCH (statement order: compute puVar2 base before puVar3 table lookup so param*0x40+base schedule into prologue, leaving the 0x2c load-delay nop) -extern void func_801465C0(void); -extern void func_8001CD9C(int, void *); -extern void func_800233CC(void *, unsigned short); - -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; - -int func_8016B834(int param_1, int param_2) { - int *puVar3; - int *puVar2; - int iVar1; - - puVar2 = (int *)(D_801D34F8 + param_2 * 0x40); - puVar3 = D_8018CB88[*(int *)(param_1 + 0x2c)]; - iVar1 = ((int (*)(void))func_801465C0)(); - if (iVar1 != 0) { - func_8001CD9C(iVar1, puVar2); - func_800233CC(puVar2, D_8018CB90[param_2]); - puVar2[0] = *(int *)((int)puVar3 + param_2 * 8); - puVar2[1] = *(int *)((int)puVar3 + param_2 * 8 + 4); - *(unsigned int *)(iVar1 + 4) = *(unsigned int *)(iVar1 + 4) | 0x50040000; - *(short *)(iVar1 + 0x1e) = D_8018CB98[param_2]; - } - return iVar1; -} - - -DEFINE_func_8016B91C() /* dedup: shared engine-core @0x8016B91C (src/shared) */ - -DEFINE_func_8016B964() /* dedup: shared engine-core @0x8016B964 (src/shared) */ - -DEFINE_func_8016B984() /* dedup: shared engine-core @0x8016B984 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (result is func_8012EFB8's return saved in $s0 across the func_80015954 call; the save-move fills the 2nd call's delay slot. func_80015954's return is discarded.) - - -extern s32 D_801D34F0; -extern void func_8012EFB8(s32 a0); -extern void func_80015954(s32 a0, s32 a1); - -s32 func_8016B9F8(s32 param_1) -{ - s32 buf[2]; - u32 v; - - v = ((u32 (*)(s32 *, s32 *))func_8012EFB8)(&D_801D34F0, buf); - ((void (*)(s32 *, s32 *))func_80015954)(buf, (s32 *)(param_1 + 4)); - return (v & 0xffffefff) != 0; -} - - -DEFINE_func_8016BA48() /* dedup: shared engine-core @0x8016BA48 (src/shared) */ - -DEFINE_func_8016BA68() /* dedup: shared engine-core @0x8016ba68 (src/shared) */ - - -DEFINE_func_8016BADC() /* dedup: shared engine-core @0x8016BADC (src/shared) */ - - -extern void (*D_8018CBA0[])(void); - -void func_8016BBA4(void *a0) { - D_8018CBA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -// @class: plumbing -// @stuck: none — MATCH (56 ins, match_one relocation-masked) - - - - -s32 func_8016BBE0(s32 param_1) { - extern void func_8016BF34(void *a0); - extern void func_8016BF50(s32); - extern void func_8001CF00(s32); - extern M2C_UNK D_801D362C; - extern u8 D_801D362D; - extern u8 D_801D362E; - extern M2C_UNK D_801D3630; - extern u8 D_801D3631; - extern u8 D_801D3632; - - int iVar1; - int temp; - - iVar1 = ((s32 (*)(void))func_801465C0)(); - *(int *)(((int)param_1) + 0x20) = iVar1; - if (iVar1 != 0) { - ((void (*)(s32))func_8016BF34)(((int)param_1)); - func_8016BF50(((int)param_1)); - func_8001CF00(iVar1); - *(s16 *)(iVar1 + 0x10) = 0; - temp = *(int *)(((int)param_1) + 0x2c); - *(s16 *)(iVar1 + 0x14) = 0; - *(s16 *)(iVar1 + 0x1a) = 0; - *(s16 *)(iVar1 + 0x18) = 0; - *(s16 *)(iVar1 + 0x12) = temp * 0x555; - *(s16 *)(((int)param_1) + 0x10) = 0; - *(s16 *)(((int)param_1) + 0x14) = 0; - (*(u8 *)&D_801D362C) = 0x20; - D_801D362D = 0x20; - D_801D362E = 0; - (*(u8 *)&D_801D3630) = 0xc0; - D_801D3631 = 0xc0; - D_801D3632 = 0; - *(u16 *)(((int)param_1) + 2) += 1; - } else { - ((void (*)(s32))func_80146C3C)(((int)param_1)); - } -} - - - -extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); -extern M2C_UNK D_801D362C; -extern M2C_UNK D_801D3630; - -void func_8016BCC0(void *arg0) { - u16 temp_a2; - u16 temp_v0; - void *temp_s0; - - temp_s0 = M2C_FIELD(arg0, void **, 0x20); - func_8016BF50(); - temp_a2 = M2C_FIELD(arg0, u16 *, 0x10) + 0x60; - M2C_FIELD(arg0, u16 *, 0x10) = temp_a2; - temp_v0 = M2C_FIELD(temp_s0, u16 *, 0x1A) + temp_a2; - M2C_FIELD(temp_s0, u16 *, 0x1A) = temp_v0; - M2C_FIELD(temp_s0, u16 *, 0x18) = temp_v0; - M2C_FIELD(temp_s0, u16 *, 0x12) = (u16) ((M2C_FIELD(temp_s0, u16 *, 0x12) + 0x71) & 0xFFF); - func_8016BFA8(arg0, &D_801D362C, &D_801D3630, temp_s0 + 0x18); - if ((s16) M2C_FIELD(temp_s0, u16 *, 0x1A) >= 0x1001) { - M2C_FIELD(temp_s0, u16 *, 0x18) = 0x1000U; - M2C_FIELD(temp_s0, u16 *, 0x1A) = 0x1000U; - func_80146E90(arg0, M2C_FIELD(arg0, s32 *, 0x30)); - M2C_FIELD(arg0, u16 *, 2) = (u16) (M2C_FIELD(arg0, u16 *, 2) + 1); - } -} - - -// @class: struct -// @stuck: none — MATCH (74 ins, relocation-masked) - - - - -s32 func_8016BD78(s32 param_1) -{ - extern void func_8016BF50(void); - extern u8 D_801D362D; - extern u8 D_801D362E; - extern u8 D_801D3631; - extern u8 D_801D3632; - - s32 iVar2; - u16 uVar1; - u8 *p1; - u8 *p2; - - iVar2 = *(s32 *)(param_1 + 0x20); - func_8016BF50(); - - p1 = &(*(u8 *)&D_801D362C); - if (*p1 != 0) *p1 -= 4; - if (D_801D362D != 0) D_801D362D -= 4; - if (D_801D362E != 0) D_801D362E -= 4; - p2 = &(*(u8 *)&D_801D3630); - if (*p2 != 0) *p2 -= 4; - if (D_801D3631 != 0) D_801D3631 -= 4; - if (D_801D3632 != 0) D_801D3632 -= 4; - - uVar1 = *(u16 *)(iVar2 + 0x18) - 0x80; - *(u16 *)(iVar2 + 0x18) = uVar1; - if ((s32)((unsigned int)uVar1 << 0x10) < 0) { - *(u16 *)(iVar2 + 0x18) = 0; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } - *(u16 *)(iVar2 + 0x12) = (*(u16 *)(iVar2 + 0x12) + 0x22) & 0xfff; - - ((void (*)(s32, u8 *, u8 *, s32))func_8016BFA8)(param_1, p1, p2, iVar2 + 0x18); -} - - - -// @class: plumbing -// @stuck: none — MATCH - -s32 func_8016BEA0(s32 param_1) -{ - extern void func_8016BF50(void); - - int iVar2; - unsigned short uVar1; - - iVar2 = *(int *)(((int)param_1) + 0x20); - func_8016BF50(); - uVar1 = *(unsigned short *)(((int)param_1) + 0x10) - 0x18; - *(unsigned short *)(((int)param_1) + 0x10) = uVar1; - *(unsigned short *)(iVar2 + 0x1a) = *(unsigned short *)(iVar2 + 0x1a) + uVar1; - *(unsigned short *)(iVar2 + 0x12) = (*(unsigned short *)(iVar2 + 0x12) + 0x22) & 0xfff; - ((void (*)(int, void *, void *, int))func_8016BFA8)(((int)param_1), &(*(int *)&D_801D362C), &(*(int *)&D_801D3630), iVar2 + 0x18); - if (*(short *)(iVar2 + 0x1a) < 0) { - ((void (*)(int))func_80146C3C)(((int)param_1)); - } -} - - - -DEFINE_func_8016BF34() /* dedup: shared engine-core @0x8016BF34 (src/shared) */ - - -/* §71 sibling-first: this is the head of the already-matched func_8016C2C4 - * (src/ov_SC03_099/ov_SC03_099_jr_8016AB6C.c L2707) lifted into its own leaf. */ - -DEFINE_func_8016BF50() /* dedup: shared engine-core @0x8016BF50 (src/shared) */ - - - -extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern s32 D_801D35B8; - -void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3) { - func_8016BFD0(a0, a1, a2, a3, &D_801D35B8); -} - - -// @class: struct -// @stuck: none — MATCH (95 ins). Keys: (1) 4-byte unaligned copies via `struct{char b[4];}` -// assignment -> lwl/lwr/swl/swr with reload; (2) 0x40-byte stack buffer `buf` (Mtx_8016BFD0 padded to -// 0x40, not 0x20) sets the frame to 0x70 and lands v1/v2 at sp+0x50/0x58; (3) func_80017714(a4) -// takes param_5 as an arg -> gcc materializes `addu $a0,$s0,$zero` and stores the 4 zeros via $a0. - - - - -void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4) { - extern void func_80017714(); - extern s32 D_8018CBB0; - extern s32 D_8018CBB8; - extern s32 D_8018CBC0; - extern s32 D_8018CBC8; - - Mtx_8016BFD0 buf; - Vec3_8016BFD0 v1; - Vec3_8016BFD0 v2; - s32 iVar5 = *(s32 *)(a0 + 0x20); - - *(u32 *)((s32)a4 + 0x30) = 0x50000000; - *(W_8016BFD0 *)((s32)a4 + 0x20) = *(W_8016BFD0 *)a1; - *(W_8016BFD0 *)((s32)a4 + 0x24) = *(W_8016BFD0 *)a1; - *(W_8016BFD0 *)((s32)a4 + 0x28) = *(W_8016BFD0 *)a2; - *(W_8016BFD0 *)((s32)a4 + 0x2c) = *(W_8016BFD0 *)a2; - - v1.x = *(u16 *)(a0 + 6); - v1.y = *(u16 *)(a0 + 0xa); - v1.z = *(u16 *)(a0 + 0xe); - ((void(*)())func_8012EFB8)(&v1, &v1); - ((void(*)())func_80013F3C)(&buf); - ((void(*)())func_800123F0)(&buf, (s32)*(s16 *)(iVar5 + 0x12)); - - v2.x = *(u16 *)(a3 + 0); - v2.y = *(u16 *)(a3 + 2); - v2.z = *(u16 *)(a3 + 4); - ((void(*)())func_80020F34)(&buf, &v2); - - buf.t[0] = v1.x; - buf.t[1] = v1.y; - buf.t[2] = v1.z; - ((void(*)())func_8012F14C)(&buf, &D_8018CBB0, (s32)a4); - ((void(*)())func_8012F14C)(&buf, &D_8018CBB8, (s32)a4 + 8); - ((void(*)())func_8012F14C)(&buf, &D_8018CBC0, (s32)a4 + 0x10); - ((void(*)())func_8012F14C)(&buf, &D_8018CBC8, (s32)a4 + 0x18); - - *(s16 *)((s32)a4 + 4) = 0; - *(s16 *)((s32)a4 + 0xc) = 0; - *(s16 *)((s32)a4 + 0x14) = 0; - *(s16 *)((s32)a4 + 0x1c) = 0; - func_80017714(a4); -} - - - - -extern void (*D_8018CBD0[])(void); - -void func_8016C14C(void *a0) { - D_8018CBD0[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_801465C0(void); -extern void func_80149350(s32 arg0); - -void func_8016C188(s32 param) -{ - register s32 s1 __asm__("$17"); - register s32 s2 __asm__("$18"); - register u8 *s0 __asm__("$16"); - u16 buf[3]; - s16 *pBCC; - s16 *pBD4; - s32 t34; - - extern void func_80015954(s32, s32); - extern s32 func_8016C374(s32, s32, s32, s32); - extern void func_80146C3C(void); - extern void func_8001CD9C(s32, void *); - extern void func_800233CC(void *, unsigned short); - extern u8 D_801D35EC[]; - extern s16 D_801D3634; - extern s16 D_801D3636; - extern s16 D_801D3638; - extern s16 D_801D363C; - extern s16 D_801D363E; - extern s16 D_801D3640; - - s1 = param; - s2 = ((s32 (*)(void))func_801465C0)(); - *(s32 *)(s1 + 0x20) = s2; - if (s2 != 0) { - *(u16 *)(s1 + 0x12) = *(u16 *)(s1 + 0x6); - *(u16 *)(s1 + 0x16) = *(u16 *)(s1 + 0xA); - *(u16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0xE); - t34 = *(s32 *)(s1 + 0x34); - buf[0] = *(u16 *)(s1 + 0x12); - buf[1] = *(u16 *)(s1 + 0x16); - buf[2] = *(u16 *)(s1 + 0x1A); - ((void (*)(s32, void *, void *))func_80149350)(t34, buf, buf); - ((void (*)(void *, s32))func_80015954)(buf, s1 + 4); - s0 = D_801D35EC; - ((void (*)(s32, void *))func_8001CD9C)(s2, s0); - *(s16 *)(s2 + 0x1E) = 0xCCC; - *(s32 *)(s2 + 4) = *(s32 *)(s2 + 4) | 0x50000000; - ((void (*)(void *, s32))func_800233CC)(s0, 0x80); - *(s16 *)(s2 + 0x1A) = 0; - *(s16 *)(s2 + 0x18) = 0; - *(s16 *)(s1 + 0x10) = 0; - pBCC = &D_801D3634; - pBD4 = &D_801D363C; - *pBCC = 0x20; - D_801D3636 = 0x20; - D_801D3638 = 0; - *pBD4 = 0xC0; - D_801D363E = 0xC0; - D_801D3640 = 0; - ((s32 (*)(s32, void *, void *, void *))func_8016C374)(s1, pBCC, pBD4, s0); - *(u16 *)(s1 + 2) = *(u16 *)(s1 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(s1); - } -} - - - -// @class: schedule -// @stuck: none — MATCH (44 ins; pins $s0/$s1 + hoist call-arg into a temp so its load fills the buf-store delay slot) - - -extern void func_80149350(s32 arg0); -extern void func_80015954(s32 a0, s32 a1); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); - -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; - -void func_8016C2C4(s32 param) -{ - register s32 s1 __asm__("$17"); - register s32 s0 __asm__("$16"); - u16 buf[3]; - s16 v; - s32 r; - s32 arg; - - s1 = param; - s0 = *(s32 *)(s1 + 0x20); - arg = *(s32 *)(s1 + 0x34); - buf[0] = *(u16 *)(s1 + 0x12); - buf[1] = *(u16 *)(s1 + 0x16); - buf[2] = *(u16 *)(s1 + 0x1a); - ((void (*)(s32, void *, void *))func_80149350)(arg, buf, buf); - ((void (*)(void *, s32))func_80015954)(buf, s1 + 4); - v = *(s16 *)(s1 + 0x10) + 0x10; - *(s16 *)(s1 + 0x10) = v; - v = *(s16 *)(s0 + 0x1a) + v; - *(s16 *)(s0 + 0x1a) = v; - *(s16 *)(s0 + 0x18) = v; - r = ((s32 (*)(s32, void *, void *, void *))func_8016C374)(s1, D_801D3634, D_801D363C, D_801D35EC); - if (r == 0) { - ((void (*)(s32))func_80146C3C)(s1); - } -} - - -DEFINE_func_8016C374() /* dedup: shared engine-core @0x8016C374 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (172/172, relocation-masked) - - - -s32 func_8016C49C(s32 param_1_arg) { - extern s32 VectorNormalSS(void *, void *); - extern void func_8001CD9C(s32, void *); - extern void func_8016CF04(s32, s32); - extern u8 D_801D3648[]; - extern u8 D_801D3708; - - register u16 *param_1 __asm__("$17") = ((u16 *)param_1_arg); - int iVar5; - int iVar6; - u16 sv[4]; - s32 mat[8]; - short sVar1; - - iVar5 = *(int *)(param_1 + 0x18); - iVar6 = *(int *)(param_1 + 0x1a); - param_1[0x14] = *(u16 *)(iVar5 + 0x36); - if ((*(u32 *)(param_1 + 0x16) & 0x8000) == 0) { - short iVar4 = 0; - u16 *psVar3 = (u16 *)&D_8011D030; - do { - if (psVar3 != param_1 && *psVar3 == 0x30) { - ((void(*)(void *))func_80146C3C)(psVar3); - } - iVar4 = iVar4 + 1; - psVar3 = psVar3 + 0x2c; - } while (iVar4 < 0x1e); - D_801D3648[1] = 0xff; - D_801D3648[2] = 0x10; - D_801D3648[0] = 0x10; - D_801D3648[6] = 0; - D_801D3648[5] = 0; - D_801D3648[4] = 0; - ((void(*)(void *, s32))func_800233CC)(D_801D3648, 10); - sv[0] = *(u16 *)(iVar5 + 6) - *(u16 *)(iVar6 + 6); - { - int t = *(u16 *)(iVar6 + 0xa) + 0x28; - sv[1] = *(u16 *)(iVar5 + 0xa) - t; - } - sv[2] = *(u16 *)(iVar5 + 0xe) - *(u16 *)(iVar6 + 0xe); - VectorNormalSS(sv, sv); - param_1[3] = *(u16 *)(iVar5 + 6) + ((s16)sv[0] >> 9); - param_1[5] = *(u16 *)(iVar5 + 0xa) + (((s16)sv[1] >> 9) - 0x28); - param_1[7] = *(u16 *)(iVar5 + 0xe) + ((s16)sv[2] >> 9); - ((void(*)(void *))func_800D23D0)(sv); - sv[0] = 0; - ((void(*)(void *, void *))RotMatrixYXZ)(sv, param_1 + 0x1c); - ((void(*)(void *, s32))func_80016714)(&D_801D3708, 0x620); - ((s32(*)(s32, void *, s32, s32, s32, s32, s32))func_80146A6C)(0x32, param_1, 0, 0, 0, 0, *(int *)(param_1 + 0x18)); - sVar1 = 5; - } else { - int iVar5b = ((s32(*)())func_801465C0)(); - u32 uVar2; - if (iVar5b == 0) { - return; - } - func_8001CD9C(iVar5b, D_801D3648); - *(u32 *)(iVar5b + 4) |= 0x50000000; - uVar2 = ((int(*)())rand)(); - sv[0] = (uVar2 & 0x7f) * 8 - 0x80; - sv[1] = ((uVar2 & 0x7f00) >> 4) - 0x400; - sv[2] = 0; - ((void(*)(void *, void *))RotMatrixYXZ)(sv, mat); - ((void(*)(void *, void *))func_80048EAC)(param_1 + 0x1c, mat); - sv[1] = 0; - sv[0] = 0; - sv[2] = 0xb; - ((void(*)(void *, void *, void *))ApplyMatrixSV)(mat, sv, sv); - param_1[9] = sv[0]; - param_1[0xb] = sv[1]; - param_1[0xd] = sv[2]; - *(int *)(param_1 + 0x10) = iVar5b; - *(int *)(param_1 + 0xe) = 8; - func_8016CF04((s32)param_1, 0); - *(int *)(param_1 + 0x16) = 0; - sVar1 = param_1[1] + 1; - } - param_1[1] = sVar1; -} - - - -DEFINE_func_8016C74C() /* dedup: shared engine-core @0x8016C74C (src/shared) */ - -DEFINE_func_8016C83C() /* dedup: shared engine-core @0x8016C83C (src/shared) */ - - -extern short func_8016CBC0(void); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 D_80126B9C; - - -void func_8016C998(s32 param_1) -{ - - extern s16 D_80126CE0; - u16 *psVar7; - s32 r; - short i; - extern Slot_998 D_801D3708[]; - - psVar7 = *(u16 **)(param_1 + 0x34); - if (*psVar7 != 1) { - *(s16 *)(param_1 + 2) = 6; - } - func_8016CBC0(); - if (*(s16 *)(param_1 + 0x28) != *(s16 *)(*(s32 *)(param_1 + 0x30) + 0x36)) { - return; - } - if ((D_80126B9C & 0x20) == 0) { - return; - } - if ((*(s32 *)(param_1 + 0x1c) == 0) || - (*(s16 *)(param_1 + 0x12) < D_80126CE0)) { - *(s16 *)(param_1 + 0x12) = D_80126CE0; - i = 0; - do { - if (D_801D3708[i].f0 == 0) { - goto found; - } - i++; - } while (i < 8); - found: - if (i >= 8) { - return; - } - r = func_80146A6C(0x30, psVar7, 0, 0, 0, 0x8000, *(s32 *)(param_1 + 0x30)); - if (r == 0) { - return; - } - D_801D3708[i].f0 = 1; - *(Blk32_998 *)(r + 0x38) = *(Blk32_998 *)(param_1 + 0x38); - *(s16 *)(r + 0x2a) = i; - *(s16 *)(r + 6) = *(s16 *)(param_1 + 6); - *(s16 *)(r + 0xa) = *(s16 *)(param_1 + 0xa); - *(s16 *)(r + 0xe) = *(s16 *)(param_1 + 0xe); - *(s32 *)(param_1 + 0x1c) = 0x10; - } else { - *(s32 *)(param_1 + 0x1c) = *(s32 *)(param_1 + 0x1c) - 1; - } -} - - - -extern void (*D_8018CBD8[])(void); - -void func_8016CB84(void *a0) { - D_8018CBD8[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern s32 func_80017758(void *a0, void *a1); -extern Blk20 D_800AE620; -short func_8016CBC0(void) -{ - - extern Blk_8016CBC0 D_801D3708[]; - Poly_8016CBC0 p0; - Poly_8016CBC0 p1; - Mtx8_8016CBC0 mtx; - Blk_8016CBC0 *blk; - Rec_8016CBC0 *sub; - Rec_8016CBC0 *pv; - unsigned int uVar9; - unsigned int w9; - unsigned int uc; - unsigned int a2; - int col; - int iVar3; - int w3; - unsigned int w3b; - short count; - short i; -register unsigned int zr __asm__("$0"); - mtx = (*(Mtx8_8016CBC0 *)&D_800AE620); - count = 0; - p1.tag = 0x50000000; - p0.tag = 0x50000000; - p1.col[3].b = 0; - p1.col[3].g = 0; - p1.col[3].r = 0; - p1.col[1].b = 0; - p1.col[1].g = 0; - p1.col[1].r = 0; - p0.col[2].b = 0; - p0.col[2].g = 0; - p0.col[2].r = 0; - p0.col[0].b = 0; - p0.col[0].g = 0; - p0.col[0].r = 0; - for (i = 0; i < 8; i++) - { - blk = &D_801D3708[i]; - if (blk->f0 != 0) - { - sub = blk->ent; - uVar9 = blk->f1; - iVar3 = blk->f2; - col = blk->f3; - count = count + 1; - w3 = iVar3 - 1; - iVar3 = w3 + zr; - if (w3 != (-1)) - { - do - { - pv = &sub[(short) uVar9]; - { - unsigned int a = pv->h[0]; - unsigned int b; - p0.v[0].x = a; - b = pv->h[3]; - p1.v[1].x = b; - p0.v[1].x = (p1.v[0].x = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - { - unsigned int a = pv->h[1]; - unsigned int b; - p0.v[0].y = a; - b = pv->h[4]; - uc = ((unsigned) (col & 0xFF)) >> 3; - p1.v[1].y = b; - p0.v[1].y = (p1.v[0].y = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - w9 = uVar9 - 1; - uVar9 = w9 + zr; - } - { - unsigned int a = pv->h[2]; - unsigned int b; - p0.v[0].z = a; - b = pv->h[5]; - p1.col[0].g = col; - p0.col[1].g = col; - p1.col[0].b = uc; - p0.col[1].b = uc; - p1.col[0].r = uc; - p0.col[1].r = uc; - p1.v[1].z = b; - p0.v[1].z = (p1.v[0].z = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - if (((int) (w9 << 16)) < 0) - { - uVar9 = 0xF; - } - pv = &sub[(short) uVar9]; - col = col - 0xF; - a2 = (unsigned) (col & 0xFF); - a2 = a2 >> 3; - { - unsigned int a = pv->h[0]; - unsigned int b; - p0.v[2].x = a; - b = pv->h[3]; - p1.v[3].x = b; - p0.v[3].x = (p1.v[2].x = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - { - unsigned int a = pv->h[1]; - unsigned int b; - p0.v[2].y = a; - b = pv->h[4]; - p1.v[3].y = b; - p0.v[3].y = (p1.v[2].y = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - { - unsigned int a = pv->h[2]; - unsigned int b; - p0.v[2].z = a; - b = pv->h[5]; - p1.col[2].g = col; - p0.col[3].g = col; - p1.col[2].b = a2; - p0.col[3].b = a2; - p1.col[2].r = a2; - p0.col[3].r = a2; - p1.v[3].z = b; - p0.v[3].z = (p1.v[2].z = ((unsigned) (((s16) a) + ((s16) b))) >> 1); - } - func_80017758(&p0, &mtx); - func_80017758(&p1, &mtx); - uc = iVar3 - 1; - w3b = uc; - iVar3 = w3b + zr; - } - while (((short) w3b) != (-1)); - } - } - } - - return count; -} - - -/* func_8016CF04 returns short (case 2: 1 if the decremented f2 hit 0, else 0; all other - * paths return 0 via the addu $v0,$zero,$zero at 0x8016D154). The TU/engine_core.h declare - * it `void` in 4 DEFINE_ macros + one block-scope decl in func_8016C49C; the real apply is the - * byte-neutral engine_core.h void->short flip (every caller discards or ptr-casts the return, - * cf. func_8016D5EC's `(s16)(...)` cast). The //@EDIT lines above are the rtu_match proxy for - * that flip. Body verified 166/166 in isolation AND in a whole-TU compile w/ the reconciled hdr. */ - /* 4 + 16*12 = 0xC4 stride */ - -short func_8016CF04(s32 param_1, s32 param_2) { - extern Blk_8016CF04_8016CF04 D_801D3708[]; - - - Blk_8016CF04_8016CF04 *p = &D_801D3708[*(short *)(((int)param_1) + 0x2a)]; - u16 rot[4]; - u16 out[4]; - s32 mtx[8]; - - switch (((short)param_2)) { - case 0: - p->f2 = 0; - p->f1 = 0; - p->f3 = 0xf0; - break; - case 1: - p->f1 = p->f1 + 1; - if ((u8)p->f1 >= 0x10) - p->f1 = 0; - if ((u8)p->f2 < 0xf) - p->f2 = p->f2 + 1; - break; - case 2: { - u8 c = p->f2 - 1; - p->f2 = c; - if (c == 0) { - p->f0 = 0; - return 1; - } - p->f3 = p->f3 - 0xf; - return 0; - } - } - - rot[0] = *(s32 *)(((int)param_1) + 0x10) >> 12; - rot[1] = *(s32 *)(((int)param_1) + 0x14) >> 12; - rot[2] = *(s32 *)(((int)param_1) + 0x18) >> 12; - func_800D23D0(rot); - RotMatrixYXZ(rot, mtx); - rot[0] = 9; - rot[1] = 0; - rot[2] = 0; - ApplyMatrixSV(mtx, rot, out); - p->ent[(u8)p->f1].a = *(u16 *)(((int)param_1) + 6) + out[0]; - p->ent[(u8)p->f1].b = *(u16 *)(((int)param_1) + 0xa) + out[1]; - p->ent[(u8)p->f1].c = *(u16 *)(((int)param_1) + 0xe) + out[2]; - rot[0] = -rot[0]; - rot[1] = -rot[1]; - ApplyMatrixSV(mtx, rot, out); - p->ent[(u8)p->f1].d = *(u16 *)(((int)param_1) + 6) + out[0]; - p->ent[(u8)p->f1].e = *(u16 *)(((int)param_1) + 0xa) + out[1]; - p->ent[(u8)p->f1].g = *(u16 *)(((int)param_1) + 0xe) + out[2]; - return 0; -} - - - - -extern void (*D_8018CBF4[])(void); - -void func_8016D19C(void *a0) { - D_8018CBF4[*(u16 *)((s32)a0 + 0x2)](); -} - - - - - - - - /* 8 bytes */ - /* 32 bytes */ - - -extern void func_801465C0(void); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void*); -extern void func_80147324(int a); -extern int rand(void); -extern void RotMatrixYXZ(void *a, void *b); -extern void ApplyMatrixSV(void *a, void *b, void *c); - -void func_8016D1D8(int param_1) { - - extern u8 D_801D3688[]; - extern u8 D_801D36C8[]; - int iVar5; - int iVar2; - u16 uVar1; - unsigned int uVar3; - short sVar4; - SVEC_L1 sv; - MTX_L1 mtx; - - iVar5 = *(int *)(param_1 + 0x34); - if (*(int *)(param_1 + 0x2c) == 0) { - D_801D3688[1] = 0xE0; - D_801D3688[2] = 0xE0; - D_801D3688[0] = 0xE0; - D_801D3688[6] = 0; - D_801D3688[5] = 0; - D_801D3688[4] = 0; - iVar5 = ((int (*)(void))func_801465C0)(); - if (iVar5 != 0) { - int pp; - *(int *)(param_1 + 0x20) = iVar5; - ((void (*)(void *, int))func_800233CC)(D_801D3688, 0x28); - ((void (*)(void *, void *))func_8001CD9C)((void *)iVar5, D_801D3688); - *(short *)(iVar5 + 0x1a) = 0x1400; - *(u32 *)(iVar5 + 4) |= 0x50000000; - pp = *(int *)(param_1 + 0x30); - *(u16 *)(param_1 + 0x28) = *(u16 *)(pp + 0x36); - *(u16 *)(param_1 + 0x12) = *(u16 *)(pp + 6); - *(short *)(param_1 + 0x16) = *(u16 *)(pp + 0xa) - 0x28; - uVar1 = *(u16 *)(pp + 0xe); - *(u16 *)(param_1 + 2) = *(u16 *)(param_1 + 2) + 1; - *(u16 *)(param_1 + 0x1a) = uVar1; - } - *(int *)(param_1 + 0x1c) = 8; - func_80147324(0x647); - } else { - D_801D36C8[1] = 0xE0; - D_801D36C8[2] = 0x20; - D_801D36C8[0] = 0x20; - D_801D36C8[5] = 0; - D_801D36C8[6] = 0; - D_801D36C8[4] = 0; - iVar2 = ((int (*)(void))func_801465C0)(); - if (iVar2 != 0) { - *(int *)(param_1 + 0x20) = iVar2; - ((void (*)(void *, int))func_800233CC)(D_801D36C8, 0x18); - ((void (*)(void *, void *))func_8001CD9C)((void *)iVar2, D_801D36C8); - *(u32 *)(iVar2 + 4) |= 0x50000000; - *(u16 *)(param_1 + 6) = *(u16 *)(iVar5 + 6); - *(u16 *)(param_1 + 0xa) = *(u16 *)(iVar5 + 0xa); - *(u16 *)(param_1 + 0xe) = *(u16 *)(iVar5 + 0xe); - uVar3 = rand(); - sv.vx = ((uVar3 & 0x7F) * 8) - 0x80; - sv.vy = (uVar3 & 0x7F00) >> 3; - sv.vz = 0; - RotMatrixYXZ(&sv, &mtx); - sv.vy = 0; - sv.vx = 0; - sv.vz = 0x240; - ApplyMatrixSV(&mtx, &sv, &sv); - *(int *)(param_1 + 0x10) = (int)sv.vx << 0xc; - *(int *)(param_1 + 0x14) = (int)sv.vy << 0xc; - sVar4 = (uVar3 & 0x3F0) + 0x200; - *(int *)(param_1 + 0x18) = (int)sv.vz << 0xc; - *(short *)(iVar2 + 0x1a) = sVar4; - *(short *)(iVar2 + 0x18) = sVar4; - *(int *)(param_1 + 0x1c) = 0x10; - *(short *)(param_1 + 2) = 2; - } - } -} - - - -extern void (*D_8018CBFC[])(void); - -void func_8016D428(void *a0) { - D_8018CBFC[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016D464() /* dedup: shared engine-core @0x8016D464 (src/shared) */ - -DEFINE_func_8016D4DC() /* dedup: shared engine-core @0x8016D4DC (src/shared) */ - -DEFINE_func_8016D5EC() /* dedup: shared engine-core @0x8016D5EC (src/shared) */ - -DEFINE_func_8016D64C() /* dedup: shared engine-core @0x8016D64C (src/shared) */ - - -extern void func_801465C0(void); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void *); - -void func_8016D688(int param_1) -{ - - extern unsigned char D_801D3688[]; - int iVar2; - int iVar3; - - D_801D3688[1] = 0xe0; - D_801D3688[2] = 0xe0; - D_801D3688[0] = 0xe0; - D_801D3688[6] = 0; - D_801D3688[5] = 0; - D_801D3688[4] = 0; - iVar2 = ((int (*)(void))func_801465C0)(); - if (iVar2 != 0) { - *(int *)(param_1 + 0x20) = iVar2; - ((void (*)(void *, int))func_800233CC)(D_801D3688, 0x28); - func_8001CD9C(iVar2, D_801D3688); - *(unsigned short *)(iVar2 + 0x1a) = 0x1400; - *(unsigned int *)(iVar2 + 4) = *(unsigned int *)(iVar2 + 4) | 0x50000000; - iVar3 = *(int *)(param_1 + 0x30); - *(unsigned short *)(param_1 + 0x28) = *(unsigned short *)(iVar3 + 0x36); - *(unsigned short *)(param_1 + 0x12) = *(unsigned short *)(iVar3 + 6); - *(short *)(param_1 + 0x16) = *(unsigned short *)(iVar3 + 0xa) - 0x28; - *(unsigned short *)(param_1 + 0x1a) = *(unsigned short *)(iVar3 + 0xe); - *(short *)(param_1 + 2) = *(short *)(param_1 + 2) + 1; - } - return; -} - - -DEFINE_func_8016D778() /* dedup: shared engine-core @0x8016D778 (src/shared) */ - -DEFINE_func_8016D848() /* dedup: shared engine-core @0x8016D848 (src/shared) */ - -DEFINE_func_8016D984() /* dedup: shared engine-core @0x8016D984 (src/shared) */ - -DEFINE_func_8016DA04() /* dedup: shared engine-core @0x8016DA04 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_8016DBD8(u8 *a0); -extern void (*D_8018CC64[])(int); - -void func_8016DA30(int param_1) -{ - ((void (*)(void))func_8016DBD8)(); - D_8018CC64[*(unsigned short *)(param_1 + 2)](param_1); -} - - - - -// @class: plumbing -// @stuck: none — MATCH (clean if/else, one call-crossing local; bnez polarity = if(iVar1==0) fall-through) - -extern void func_801465C0(void); -extern void func_80146C3C(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); - -extern u8 D_8018CC08; -extern u8 D_8018CC14; - -void func_8016DA7C(s32 param_1) -{ - s32 iVar1; - - iVar1 = ((s32 (*)(void))func_801465C0)(); - if (iVar1 == 0) { - ((void (*)(s32))func_80146C3C)(param_1); - } else { - *(s32 *)(param_1 + 0x20) = iVar1; - ((void (*)(s32, s32, s32, s32))func_8001CC3C)(iVar1, (s32)&D_8018CC08, 0x250, 0x100); - *(u8 *)(iVar1 + 0x27) = 0x90; - *(u16 *)(iVar1 + 0x18) = 0x3000; - *(u16 *)(iVar1 + 0x1a) = 0x4000; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - func_80128EA8(iVar1, param_1 + 0x24, (s32)&D_8018CC14); - *(s32 *)(param_1 + 0x10) = 0; - *(s32 *)(param_1 + 0x14) = 0xfff40000; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } -} - - -DEFINE_func_8016DB34() /* dedup: shared engine-core @0x8016DB34 (src/shared) */ - -DEFINE_func_8016DBD8() /* dedup: shared engine-core @0x8016DBD8 (src/shared) */ - - -extern s32 D_8011D030; - -extern void func_80149374(s32 a0, s32 a1); -extern s32 func_801619D0(void *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); -extern void func_800D1FC8(s32 a0, s32 a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern s32 func_80128ED8(s32 param_1, s32 *param_2); -extern void func_80146C3C(void); - -void func_8016DC20(s16 *param_1) { - - extern s16 D_801D3D28; - extern s16 D_801D3D2C; - extern u8 D_8018CC6C[]; - extern u8 D_8018CC78[]; - u16 *psVar1; - s32 iVar2; - s32 iVar3; - s32 iVar4; - s16 i; - s16 sp[6]; - - i = 0; - psVar1 = (u16 *)&D_8011D030; - iVar4 = *(s32 *)((u8 *)param_1 + 0x34); - do { - if ((psVar1 != (u16 *)param_1) && (*psVar1 == 0x34)) goto end; - i = i + 1; - psVar1 = psVar1 + 0x2c; - } while (i < 0x1e); - func_80149374(iVar4, (s32)param_1 + 4); - iVar2 = func_801619D0((void *)iVar4); - i = 0; - if (iVar2 == 0) goto ddb0; - psVar1 = (u16 *)&D_8011D030; - do { - if (*psVar1 == 0x11) goto ddb0; - i = i + 1; - psVar1 = psVar1 + 0x2c; - } while (i < 0x1e); - func_80146A6C(0x11, param_1, *(s16 *)((u8 *)param_1 + 6), - (s16)(*(u16 *)((u8 *)param_1 + 0xa) - 8), - *(s16 *)((u8 *)param_1 + 0xe), 0, 0); - sp[0] = *(u16 *)((u8 *)param_1 + 6); - sp[1] = *(u16 *)((u8 *)param_1 + 0xa); - sp[2] = *(u16 *)((u8 *)param_1 + 0xe); - func_800D20C0(&sp[0], &sp[4], 0); - sp[5] = 0; - func_800D23D0(&sp[4]); - i = 0; - do { - iVar3 = func_80146A6C(0x12, param_1, *(s16 *)(iVar4 + 6), - *(s16 *)(iVar4 + 0xa), *(s16 *)(iVar4 + 0xe), - i, 0); - if (iVar3 != 0) { - *(u16 *)(iVar3 + 0x12) = sp[4]; - *(u16 *)(iVar3 + 0x16) = sp[5]; - *(u16 *)(iVar3 + 0x1a) = 0; - } - i = i + 2; - } while (i < 3); - goto end; -ddb0: - if (((D_801D3D28 != *(s16 *)(iVar4 + 6)) || (D_801D3D2C != *(s16 *)(iVar4 + 0xe))) && - (iVar2 = func_800D21C4((s32)param_1, D_8018CC6C, 0x18), iVar2 != 0)) { - D_801D3D28 = *(u16 *)(iVar4 + 6); - D_801D3D2C = *(u16 *)(iVar4 + 0xe); - func_800D1FC8((s32)param_1, 7); - *(s32 *)((u8 *)param_1 + 0x20) = iVar2; - *(u16 *)(iVar2 + 0x1a) = 0x3000; - *(u16 *)(iVar2 + 0x18) = 0x3000; - *(u8 *)(iVar2 + 0x26) = 0xff; - *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; - func_80128EA8(iVar2, (s32)param_1 + 0x24, (s32)D_8018CC78); - func_80128ED8((void *)iVar2, (void *)((s32)param_1 + 0x24)); - *(u16 *)((u8 *)param_1 + 2) = *(u16 *)((u8 *)param_1 + 2) + 1; - return; - } -end: - ((void (*)(s16 *))func_80146C3C)(param_1); -} - - - -extern void (*D_8018CC98[])(void); - -void func_8016DEA4(void *a0) { - D_8018CC98[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016DEE0() /* dedup: shared engine-core @0x8016DEE0 (src/shared) */ - - -extern void (*D_8018CCA0[])(void); - -void func_8016DF20(void *a0) { - D_8018CCA0[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern Blk20 D_800AE620; -extern s32 D_8011D030; -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern void func_801465C0(void); -extern void func_80146C3C(void); - - - - -void func_8016DF5C(s32 param_1) -{ - extern void func_8016E3CC(void *a0); - extern void RotMatrixY(s32 a0, void *a1); - extern u8 D_801D3D30; - extern u8 D_801D3D31; - extern u8 D_801D3D32; - extern u8 D_801D3D34; - extern u8 D_801D3D35; - extern u8 D_801D3D36; - - s32 iVar8; - short sVar1; - - iVar8 = *(s32 *)((u8 *)((void *)param_1) + 0x34); - if ((*(u32 *)((u8 *)((void *)param_1) + 0x2c) & 0x8000) == 0) { - unsigned short uVar7 = 0; - u16 *psVar6 = (u16 *)&D_8011D030; - register s32 iNew __asm__("$17"); - s32 base; - do { - if (psVar6 != (u16 *)((void *)param_1) && (*psVar6 == 0x41 || *psVar6 == 0x48)) { - ((void (*)(void *))func_80146C3C)(psVar6); - } - uVar7++; - psVar6 += 0x2c; - } while (uVar7 < 0x1e); - iNew = ((s32(*)())func_801465C0)(); - if (iNew == 0) { - return; - } - base = (s32)&D_801D3D30; - D_801D3D32 = 0xc0; - *(u8 *)base = 0xc0; - D_801D3D31 = 0; - D_801D3D36 = 0; - D_801D3D35 = 0; - D_801D3D34 = 0; - ((void(*)(void *, unsigned short))func_800233CC)((void *)base, 0x40); - func_8001CD50(iNew, base); - *(s32 *)(iNew + 0x34) = (s32)((u8 *)((void *)param_1) + 0x38); - *(s16 *)(iNew + 0x1a) = 0; - *(s16 *)(iNew + 0x18) = 0; - *(u32 *)(iNew + 4) = *(u32 *)(iNew + 4) | 0x50000000; - func_8016E3CC(((void *)param_1)); - { - register s32 t10 __asm__("$3"); - t10 = 0x10; - *(s32 *)((u8 *)((void *)param_1) + 0x20) = iNew; - *(s32 *)((u8 *)((void *)param_1) + 0x1c) = t10; - } - sVar1 = *(u16 *)((u8 *)((void *)param_1) + 2) + 1; - } else { - short asStack_60[20]; - Blk20_8016DF5C localMatrix; - s32 uVar2; - - asStack_60[0] = 0; - asStack_60[1] = 0; - asStack_60[2] = 0x20; - localMatrix = (*(Blk20_8016DF5C*)&D_800AE620); - uVar2 = ((s32(*)())rand)(); - RotMatrixY((uVar2 & 0x7f00) >> 3, &localMatrix); - ApplyMatrixSV(&localMatrix, asStack_60, asStack_60); - *(s16 *)((u8 *)((void *)param_1) + 6) = D_80126B5E + asStack_60[0]; - *(s16 *)((u8 *)((void *)param_1) + 0xa) = D_80126B62 - ((u16)uVar2 & 0x3f); - *(s16 *)((u8 *)((void *)param_1) + 0xe) = D_80126B66 + asStack_60[2]; - *(Blk20_8016DF5C *)((u8 *)((void *)param_1) + 0x38) = *(Blk20_8016DF5C *)((u8 *)iVar8 + 0x38); - *(s32 *)((u8 *)((void *)param_1) + 0x2c) = 0x1000; - *(s32 *)((u8 *)((void *)param_1) + 0x30) = 0xff; - *(s32 *)((u8 *)((void *)param_1) + 0x1c) = 0x10; - __asm__ __volatile__("" ::: "memory"); - sVar1 = 4; - } - *(s16 *)((u8 *)((void *)param_1) + 2) = sVar1; -} - - -DEFINE_func_8016E1CC() /* dedup: shared engine-core @0x8016E1CC (src/shared) */ - -DEFINE_func_8016E26C() /* dedup: shared engine-core @0x8016E26C (src/shared) */ - -DEFINE_func_8016E2E8() /* dedup: shared engine-core @0x8016E2E8 (src/shared) */ - -DEFINE_func_8016E358() /* dedup: shared engine-core @0x8016E358 (src/shared) */ - -DEFINE_func_8016E3CC() /* dedup: shared engine-core @0x8016E3CC (src/shared) */ - -DEFINE_func_8016E460() /* dedup: shared engine-core @0x8016E460 (src/shared) */ - - -extern void (*D_8018CCF4[])(void); - -void func_8016E5B8(void *a0) { - D_8018CCF4[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8016E5F4() /* dedup: shared engine-core @0x8016E5F4 (src/shared) */ - -DEFINE_func_8016E688() /* dedup: shared engine-core @0x8016E688 (src/shared) */ - -DEFINE_func_8016E6E4() /* dedup: shared engine-core @0x8016E6E4 (src/shared) */ - -DEFINE_func_8016E728() /* dedup: shared engine-core @0x8016E728 (src/shared) */ - -DEFINE_func_8016E778() /* dedup: shared engine-core @0x8016E778 (src/shared) */ - -// @class: regalloc-order -// @stuck: none — MATCH (74 ins); register pin $s2 forces &prim into a saved reg (§17) - - /* 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; - - -void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3) -{ - extern void func_8004914C(void *a0); - extern void func_800491AC(void *a0); - extern void RotTransSV(void *a0, void *a1, void *a2); - extern void func_80016ED4(void *a0); - extern SVECTOR_8016E7C8 D_8018CCB4[4]; - extern s32 D_8018CCD4; - extern s32 D_8018CCDC; - extern s32 D_8018CCE4; - extern s32 D_8018CCEC; - - Prim_8016E7C8 prim; - MATRIX_8016E7C8 m; - SVECTOR_8016E7C8 tmp; - register Prim_8016E7C8 *pp __asm__("$18"); /* $s2 — force &prim into a saved reg */ - - ((void (*)(void *, void *))func_80017DC4)(param_2, &m); - m.t[0] = *(short *)(param_1 + 6); - m.t[1] = *(short *)(param_1 + 10); - m.t[2] = *(short *)(param_1 + 14); - func_8004914C(&m); - func_800491AC(&m); - pp = &prim; - RotTransSV(&D_8018CCB4[0], pp, &tmp); - RotTransSV(&D_8018CCB4[1], &prim.v[1], &tmp); - RotTransSV(&D_8018CCB4[2], &prim.v[2], &tmp); - RotTransSV(&D_8018CCB4[3], &prim.v[3], &tmp); - prim.v[0].vz = 3; - prim.f5 = 0x50000000; - prim.f0 = D_8018CCD4; - prim.f1 = D_8018CCDC; - prim.f2 = D_8018CCE4; - prim.f3 = D_8018CCEC; - prim.f4 = *param_3; - prim.f6 = 0x27; - func_80016ED4(pp); -} - - - -DEFINE_func_8016E8F0() /* dedup: shared engine-core @0x8016E8F0 (src/shared) */ - -DEFINE_func_8016E918() /* dedup: shared engine-core @0x8016E918 (src/shared) */ - -// @class: struct -// @stuck: none — MATCH (36/36 ins, match_one relocation-masked) - - - -typedef void (*Handler)(struct Entry_8016E95C *); - - -s32 func_8016E95C() { - extern Handler D_8018CD34[]; - - struct Entry_8016E95C *p; - for (p = ((struct Entry_8016E95C *)&D_80115218); p < &((struct Entry_8016E95C *)&D_80115218)[4]; p++) { - if (p->f0 != 0) { - D_8018CD34[p->f1](p); - } - } -} - - - - -/* @class: regalloc (non-coalescing delay-slot copy) + sched (load-temp hoist) - * @stuck: none — MATCH (53/53 ins, match_one AND rtu_match in the real TU). - * - * Two levers, both from the cookbook: - * - * 1. §52a "non-coalescing delay-slot copy" + §17 zero-reg-copy (the load-bearing one). - * The target holds `p[0]-1` in TWO callee-saved regs: $s0 (the array index, later - * destroyed in place by `sll $s0,$s0,1`) and $s4 (the value stored to p[3]), created - * by `addu $s4,$s0,$zero` sitting in the DELAY SLOT of `jal func_800D2CA8`. A plain - * C `c = i;` is destroyed by cse.c canon_reg head-promotion (measured: 50 ins, -3), - * and every #APP-asm spelling of the copy is INELIGIBLE for a delay slot (measured: - * 51 ins, -2 — tried `__asm__("":"=r"(c):"0"(i))`, a real-opcode - * `__asm__("addu %0,%1,$0")`, and the §52b RC-7 post-copy second-set barrier - * `c=i; __asm__("":"=r"(c):"0"(c))`; all three collapse or lose the slot). - * Only the `$0`-add — `register u32 zr __asm__("$0"); c = i + zr;` — emits a bare - * `addu` with no asm insn, so reorg can sink it into the call's delay slot. - * NOTE for ×138 propagation: this is a ZERO-REGISTER pin, not an allocation pin — - * it constrains no real value. family_sweep's §42e "skip pinned exemplar" guard is - * documented over-conservative (§86; the SIGABRT was our own extract_unit macro-drop, - * fixed in Phase 27), so this exemplar should still sweep. - * - * 2. Free-floating load temp for a scheduler hoist (§52a-adjacent, idiom 7). - * With the p+6 store written as one statement the sched2 list scheduler hoists - * `lbu $v0,1($a0)` ahead of `sb $s4,3($a0)` and sinks the D_8018CD20 lui/addu/lhu - * chain (8 mismatched, same 53-ins multiset). Splitting the load into its own - * statement `h = D_8018CD20[i];` placed BEFORE `p[2] = 0` (exactly what the Ghidra - * seed showed) puts the lhu chain right after `sh $v0,4($a0)` → 0. - * - * Data typing: D_8018CD04 is a WORD array (`sll $v0,$s0,2`; its element is dereferenced - * as a buffer by func_80024054) => u8 *[]. D_8018CD1C is byte-indexed (`lbu`, no shift) - * => u8[]. D_8018CD20 is halfword-indexed (`sll $s0,$s0,1` + `lhu`) => u16[]. - * `*(s16 *)(p + 4) = -0xD7` emits `addiu $v0,$zero,-0xD7`; 0xFF29 as a u16 would not. - */ - - -extern s32 func_800D2CA8(s32 a0, s32 a1); -extern void func_800D2D10(s32 a0, s32 a1, void *a2, s32 a3); -extern s32 func_80024054(void *a0, void *a1); -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016E9EC(u8 *p) -{ - - extern u8 *D_8018CD04[]; - extern u8 D_8018CD1C[]; - extern u16 D_8018CD20[]; - register u32 zr __asm__("$0"); - int i; - int c; - u8 *buf; - u8 off; - u16 h; - s32 r; - - i = p[0] - 1; - off = D_8018CD1C[i]; - buf = D_8018CD04[i]; - c = i + zr; - r = func_800D2CA8(p[3], 0x1C); - func_800D2D10(r, 1, buf + off, 0); - func_80024054(buf, p + 8); - p[3] = c; - *(s16 *)(p + 4) = -0xD7; - h = D_8018CD20[i]; - p[2] = 0; - *(u16 *)(p + 6) = h; - p[1] = p[1] + 1; - ((void (*)(u8 *, s32))func_8016EC0C)(p, 0x80); -} - - - -// @class: struct -// @stuck: none — MATCH (31/31 ins, match_one verified) - -extern u16 D_8018CD28[]; -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EAC0(Wave *param_1) -{ - unsigned char bVar1; - - param_1->f4 = param_1->f4 + D_8018CD28[param_1->f2]; - ((void (*)(void *, int))func_8016EC0C)(param_1, 0x80); - bVar1 = param_1->f2 + 1; - param_1->f2 = bVar1; - if (5 < bVar1) { - param_1->f2 = 0x20; - param_1->f1 = param_1->f1 + 1; - } -} - - - -// @class: loose-typing -// @stuck: none — MATCH (u8 v + 0xFF emits addiu 0xFF; v-1 would emit -1/0xffff) - -extern u8 D_8018CD18[]; -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EB3C(s32 p) { - u8 v; - - ((void (*)(s32, s32))func_8016EC0C)(p, D_8018CD18[*(u8 *)(p + 2) & 3]); - - v = *(u8 *)(p + 2); - *(u8 *)(p + 2) = v + 0xFF; - if (v == 0) { - *(u8 *)(p + 2) = 5; - *(u8 *)(p + 1) = *(u8 *)(p + 1) + 1; - } -} - - - -// @class: struct -// @stuck: none — MATCH (25 ins). %lo-fold via extern u16 D_8018CD28[]; predecrement emitted as +0xFF (u8 promote→sb low byte), not -1. - -extern u16 D_8018CD28[]; - -extern void func_8016EC0C(s32 a0, s32 a1); - -void func_8016EBA8(u8 *param_1) -{ - u8 c; - - *(u16 *)(param_1 + 4) = - *(u16 *)(param_1 + 4) - D_8018CD28[param_1[2]]; - ((void (*)(u8 *, int))func_8016EC0C)(param_1, 0x80); - c = param_1[2]; - param_1[2] = c + 0xFF; - if (c == 0) { - param_1[0] = 0; - } -} - - - -extern void func_80017B98(void *a0); -extern u8 D_8018CD14[]; - -void func_8016EC0C(s32 a0, s32 a1) -{ - /* §100 draft-LOCAL type: a file-scope typedef is an EXEMPLAR-ONLY bank — extract_unit/ - remap_hseq carry only the BODY, so every sibling fails `T8016EC0C undeclared` - (measured on ov_SC01_000). Block scope travels with the body; byte-neutral. */ - /* 0x1C */ - T8016EC0C s; - u16 *p; - s32 x; - s32 y; - s32 v; - - s.r = s.g = s.b = a1; - s.u18 = D_8018CD14[*(u8 *)(a0 + 3)]; - s.u0C = 0x640; - s.u0E = 0x1C8; - s.u14 = 0; - s.u08 = 0x28; - s.u0A = 8; - x = *(u16 *)(a0 + 4); - s.x = x + 0x10; - y = *(u16 *)(a0 + 6); - s.u04 = 0x10; - s.y = y; - func_80017B98(&s); - s.u08 = 8; - y += 0xA; - p = (u16 *)(a0 + 8); - while (*p != 0xFFFF) { - v = *p; - switch (v) { - case 0x1850: - case 0x1858: - s.x = x + 4; - s.y = y - 7; - break; - case 0x3872: - x += 2; - p++; - continue; - default: - s.x = x; - s.y = y; - x += 8; - break; - } - s.u0C = *(u8 *)p + 0x500; - s.u0E = (*p >> 8) + 0x100; - p++; - func_80017B98(&s); - } -} - - -DEFINE_func_8016ED6C() /* dedup: shared engine-core @0x8016ED6C (src/shared) */ - -DEFINE_func_8016ED8C() /* dedup: shared engine-core @0x8016ED8C (src/shared) */ - -DEFINE_func_8016EDBC() /* dedup: shared engine-core @0x8016EDBC (src/shared) */ - -DEFINE_func_8016EDEC() /* dedup: shared engine-core @0x8016EDEC (src/shared) */ - -DEFINE_func_8016EE40() /* dedup: shared engine-core @0x8016EE40 (src/shared) */ - -DEFINE_func_8016EE94() /* dedup: shared engine-core @0x8016EE94 (src/shared) */ - -DEFINE_func_8016EF78() /* dedup: shared engine-core @0x8016EF78 (src/shared) */ - -DEFINE_func_8016EFA8() /* dedup: shared engine-core @0x8016EFA8 (src/shared) */ - -DEFINE_func_8016EFC8() /* dedup: shared engine-core @0x8016EFC8 (src/shared) */ - -DEFINE_func_8016F094() /* dedup: shared engine-core @0x8016F094 (src/shared) */ - -// @class: plumbing -// @stuck: none — MATCH - -DEFINE_func_8016F0AC() /* dedup: shared engine-core @0x8016F0AC (src/shared) */ - - - - -/* RECONCILE NOTE (uc3) — the body is byte-unchanged from uc2; only the declaration - * environment moved. The gate error was - * jr_8016AB6C.c:4183 conflicting types for func_8016F0E4 || :4089 previous declaration - * :4089 was THIS definition; :4183 is the `extern void func_8016F0E4(void);` carried inside - * DEFINE_func_8016F4C4() (src/shared/engine_core.h:22579), which the host TU instantiates at - * ov_SC01_077_jr_8016AB6C.c:4136 — i.e. AFTER the definition, so it is a hard error, not the - * mere warning produced by the earlier block-scope decl in func_8016F0AC (TU:4047). - * Byte-true signature is `void (u8 *)`; the fleet canon is `void (void)` — a PARAM/ARITY - * disagreement on func_8016F0E4 ITSELF. - * - * ESCAPE TAKEN: §37/§124 ASM-LABEL ALIAS (escape 2, T0 draft-only, zero tracked-file edits). - * The C identifier is aF8016F0E4 so this TU declares func_8016F0E4 exactly once (the macro's - * own `extern void`), while the emitted SYMBOL is func_8016F0E4. Both existing callers already - * launder through a cast or take no args, so neither is perturbed: - * - func_8016F0AC (TU:4047-4049) casts: ((void (*)(void *))func_8016F0E4)(&D_80126B58); - * - DEFINE_func_8016F4C4 calls func_8016F0E4() with 0 args against its own (void) prototype. - * cc1-proven: preprocess+compile of the real TU with this body spliced in is free of any - * func_8016F0E4 diagnostic (the pre-existing unrelated warnings in the TU are unchanged). - * - * This SUPERSEDES uc2's //@EDIT de-macroize plan (§65b) and its T2 engine_core.h alternative - * (§75c) — neither is needed; nothing outside this unit changes, so the bank travels to the - * 137 siblings as a plain unit (carry the alias DECLARATION line with it — §124 trap 2). - */ - -DEFINE_func_8016F0E4() /* dedup: shared engine-core @0x8016F0E4 (src/shared) */ - - -DEFINE_func_8016F14C() /* dedup: shared engine-core @0x8016F14C (src/shared) */ - -DEFINE_func_8016F1AC() /* dedup: shared engine-core @0x8016F1AC (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH - -extern s32 D_8018CD44; -extern s32 D_80126B58; -extern s16 currentLocationId; - -s32 func_8016F1C4(void) { - s32 *p; - s32 cur; - s32 loc; - s32 v; - s32 *base = &D_80126B58; - - p = &D_8018CD44; - cur = *p; - if (cur != 0) { - loc = currentLocationId; - p = p + 1; - for (;;) { - if (loc == cur) { - return 1; - } - cur = *p; - p = p + 1; - if (cur == 0) { - break; - } - } - } - v = base[0x7E]; - if (((v & 0x80FFFFFF) != 0) && ((v & 0x10000000) != 0)) { - return 0; - } - return base[0x7E] & 0x80FFFFFF; -} - - -DEFINE_func_8016F250() /* dedup: shared engine-core @0x8016F250 (src/shared) */ - -DEFINE_func_8016F264() /* dedup: shared engine-core @0x8016F264 (src/shared) */ - -DEFINE_func_8016F288() /* dedup: shared engine-core @0x8016F288 (src/shared) */ - -DEFINE_func_8016F2A8() /* dedup: shared engine-core @0x8016F2A8 (src/shared) */ - -DEFINE_func_8016F2C8() /* dedup: shared engine-core @0x8016F2C8 (src/shared) */ - -DEFINE_func_8016F2EC() /* dedup: shared engine-core @0x8016F2EC (src/shared) */ - -DEFINE_func_8016F30C() /* dedup: shared engine-core @0x8016F30C (src/shared) */ - -DEFINE_func_8016F330() /* dedup: shared engine-core @0x8016F330 (src/shared) */ - -DEFINE_func_8016F350() /* dedup: shared engine-core @0x8016F350 (src/shared) */ - -DEFINE_func_8016F374() /* dedup: shared engine-core @0x8016F374 (src/shared) */ - -DEFINE_func_8016F388() /* dedup: shared engine-core @0x8016F388 (src/shared) */ - -DEFINE_func_8016F398() /* dedup: shared engine-core @0x8016F398 (src/shared) */ - -DEFINE_func_8016F410() /* dedup: shared engine-core @0x8016F410 (src/shared) */ - -DEFINE_func_8016F44C() /* dedup: shared engine-core @0x8016F44C (src/shared) */ - -DEFINE_func_8016F470() /* dedup: shared engine-core @0x8016F470 (src/shared) */ - -DEFINE_func_8016F494() /* dedup: shared engine-core @0x8016F494 (src/shared) */ - -DEFINE_func_8016F4C4() /* dedup: shared engine-core @0x8016F4C4 (src/shared) */ - -DEFINE_func_8016F4F4() /* dedup: shared engine-core @0x8016F4F4 (src/shared) */ - -DEFINE_func_8016F4FC() /* dedup: shared engine-core @0x8016F4FC (src/shared) */ - -DEFINE_func_8016F540() /* dedup: shared engine-core @0x8016F540 (src/shared) */ - -DEFINE_func_8016F578() /* dedup: shared engine-core @0x8016F578 (src/shared) */ - -DEFINE_func_8016F5B0() /* dedup: shared engine-core @0x8016F5B0 (src/shared) */ - -DEFINE_func_8016F5E0() /* dedup: shared engine-core @0x8016F5E0 (src/shared) */ - -DEFINE_func_8016F610() /* dedup: shared engine-core @0x8016F610 (src/shared) */ - -DEFINE_func_8016F648() /* dedup: shared engine-core @0x8016F648 (src/shared) */ - -DEFINE_func_8016F680() /* dedup: shared engine-core @0x8016F680 (src/shared) */ - -DEFINE_func_8016F6B0() /* dedup: shared engine-core @0x8016F6B0 (src/shared) */ - - -extern void (*D_8018CDBC[])(void); - -void func_8016F6E0(void *a0) { - D_8018CDBC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F71C() /* dedup: shared engine-core @0x8016F71C (src/shared) */ - -DEFINE_func_8016F764() /* dedup: shared engine-core @0x8016F764 (src/shared) */ - - -extern void (*D_8018CDC4[])(void); - -void func_8016F798(void *a0) { - D_8018CDC4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F7D4() /* dedup: shared engine-core @0x8016F7D4 (src/shared) */ - -DEFINE_func_8016F804() /* dedup: shared engine-core @0x8016F804 (src/shared) */ - - -extern void (*D_8018CDCC[])(void); - -void func_8016F834(void *a0) { - D_8018CDCC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F870() /* dedup: shared engine-core @0x8016F870 (src/shared) */ - -DEFINE_func_8016F8AC() /* dedup: shared engine-core @0x8016F8AC (src/shared) */ - - -extern void (*D_8018CDD4[])(void); - -void func_8016F8E4(void *a0) { - D_8018CDD4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016F920() /* dedup: shared engine-core @0x8016F920 (src/shared) */ - -DEFINE_func_8016F95C() /* dedup: shared engine-core @0x8016F95C (src/shared) */ - - -extern void (*D_8018CDDC[])(void); - -void func_8016F9C4(void *a0) { - D_8018CDDC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FA00() /* dedup: shared engine-core @0x8016FA00 (src/shared) */ - -DEFINE_func_8016FA44() /* dedup: shared engine-core @0x8016FA44 (src/shared) */ - - -extern void (*D_8018CDE4[])(void); - -void func_8016FA84(void *a0) { - D_8018CDE4[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FAC0() /* dedup: shared engine-core @0x8016FAC0 (src/shared) */ - -DEFINE_func_8016FB10() /* dedup: shared engine-core @0x8016FB10 (src/shared) */ - -DEFINE_func_8016FB50() /* dedup: shared engine-core @0x8016FB50 (src/shared) */ - - -extern void (*D_8018CDF0[])(void); - -void func_8016FB7C(void *a0) { - D_8018CDF0[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FBB8() /* dedup: shared engine-core @0x8016FBB8 (src/shared) */ - -DEFINE_func_8016FC24() /* dedup: shared engine-core @0x8016FC24 (src/shared) */ - -DEFINE_func_8016FC64() /* dedup: shared engine-core @0x8016FC64 (src/shared) */ - - -extern void (*D_8018CDFC[])(void); - -void func_8016FC90(void *a0) { - D_8018CDFC[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FCCC() /* dedup: shared engine-core @0x8016FCCC (src/shared) */ - -DEFINE_func_8016FD08() /* dedup: shared engine-core @0x8016FD08 (src/shared) */ - -DEFINE_func_8016FD7C() /* dedup: shared engine-core @0x8016FD7C (src/shared) */ - - -extern void (*D_8018CE08[])(void); - -void func_8016FDB4(void *a0) { - D_8018CE08[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FDF0() /* dedup: shared engine-core @0x8016FDF0 (src/shared) */ - -DEFINE_func_8016FE2C() /* dedup: shared engine-core @0x8016FE2C (src/shared) */ - -DEFINE_func_8016FE78() /* dedup: shared engine-core @0x8016FE78 (src/shared) */ - -DEFINE_func_8016FED0() /* dedup: shared engine-core @0x8016FED0 (src/shared) */ - - -extern void (*D_8018CE18[])(void); - -void func_8016FF30(void *a0) { - D_8018CE18[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8016FF6C() /* dedup: shared engine-core @0x8016FF6C (src/shared) */ - -DEFINE_func_8016FFA8() /* dedup: shared engine-core @0x8016FFA8 (src/shared) */ - - -extern void (*D_8018CE28[])(void); - -void func_8016FFDC(void *a0) { - D_8018CE28[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170018() /* dedup: shared engine-core @0x80170018 (src/shared) */ - -DEFINE_func_80170068() /* dedup: shared engine-core @0x80170068 (src/shared) */ - -DEFINE_func_801700B8() /* dedup: shared engine-core @0x801700B8 (src/shared) */ - -DEFINE_func_80170100() /* dedup: shared engine-core @0x80170100 (src/shared) */ - - -extern void (*D_8018CE30[])(void); - -void func_80170150(void *a0) { - D_8018CE30[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017018C() /* dedup: shared engine-core @0x8017018C (src/shared) */ - -DEFINE_func_801701C8() /* dedup: shared engine-core @0x801701C8 (src/shared) */ - - -extern void (*D_8018CE38[])(void); - -void func_80170240(void *a0) { - D_8018CE38[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017027C() /* dedup: shared engine-core @0x8017027C (src/shared) */ - -DEFINE_func_801702B8() /* dedup: shared engine-core @0x801702B8 (src/shared) */ - - -extern void (*D_8018CE40[])(void); - -void func_801702FC(void *a0) { - D_8018CE40[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170338() /* dedup: shared engine-core @0x80170338 (src/shared) */ - -DEFINE_func_80170374() /* dedup: shared engine-core @0x80170374 (src/shared) */ - - -extern void (*D_8018CE48[])(void); - -void func_801703E0(void *a0) { - D_8018CE48[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017041C() /* dedup: shared engine-core @0x8017041C (src/shared) */ - -DEFINE_func_8017044C() /* dedup: shared engine-core @0x8017044C (src/shared) */ - - -extern void (*D_8018CE50[])(void); - -void func_801704B0(void *a0) { - D_8018CE50[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801704EC() /* dedup: shared engine-core @0x801704EC (src/shared) */ - -DEFINE_func_8017051C() /* dedup: shared engine-core @0x8017051C (src/shared) */ - - -extern void (*D_8018CE58[])(void); - -void func_80170548(void *a0) { - D_8018CE58[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170584() /* dedup: shared engine-core @0x80170584 (src/shared) */ - -DEFINE_func_801705C0() /* dedup: shared engine-core @0x801705C0 (src/shared) */ - - -extern void (*D_8018CE60[])(void); - -void func_801705F8(void *a0) { - D_8018CE60[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170634() /* dedup: shared engine-core @0x80170634 (src/shared) */ - -DEFINE_func_80170670() /* dedup: shared engine-core @0x80170670 (src/shared) */ - - -extern void (*D_8018CE68[])(void); - -void func_801706AC(void *a0) { - D_8018CE68[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801706E8() /* dedup: shared engine-core @0x801706E8 (src/shared) */ - -DEFINE_func_80170718() /* dedup: shared engine-core @0x80170718 (src/shared) */ - - -extern void (*D_8018CE70[])(void); - -void func_80170748(void *a0) { - D_8018CE70[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170784() /* dedup: shared engine-core @0x80170784 (src/shared) */ - -DEFINE_func_801707D4() /* dedup: shared engine-core @0x801707D4 (src/shared) */ - - -extern void (*D_8018CE78[])(void); - -void func_80170810(void *a0) { - D_8018CE78[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017084C() /* dedup: shared engine-core @0x8017084C (src/shared) */ - - -DEFINE_func_801708B0() /* dedup: shared engine-core @0x801708B0 (src/shared) */ - - -DEFINE_func_80170928() /* dedup: shared engine-core @0x80170928 (src/shared) */ - -DEFINE_func_80170970() /* dedup: shared engine-core @0x80170970 (src/shared) */ - -DEFINE_func_801709B8() /* dedup: shared engine-core @0x801709B8 (src/shared) */ - -DEFINE_func_80170A00() /* dedup: shared engine-core @0x80170A00 (src/shared) */ - -DEFINE_func_80170A48() /* dedup: shared engine-core @0x80170A48 (src/shared) */ - -DEFINE_func_80170A90() /* dedup: shared engine-core @0x80170A90 (src/shared) */ - - -extern void (*D_8018CE80[])(void); - -void func_80170AD8(void *a0) { - D_8018CE80[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170B14() /* dedup: shared engine-core @0x80170B14 (src/shared) */ - -DEFINE_func_80170B48() /* dedup: shared engine-core @0x80170B48 (src/shared) */ - -DEFINE_func_80170B90() /* dedup: shared engine-core @0x80170B90 (src/shared) */ - - -extern void (*D_8018CE88[])(void); - -void func_80170BD8(void *a0) { - D_8018CE88[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170C14() /* dedup: shared engine-core @0x80170C14 (src/shared) */ - -DEFINE_func_80170C44() /* dedup: shared engine-core @0x80170C44 (src/shared) */ - - -extern void (*D_8018CE90[])(void); - -void func_80170C74(void *a0) { - D_8018CE90[*(u8 *)((s32)a0 + 0x215)](); -} - - -DEFINE_func_80170CB0() /* dedup: shared engine-core @0x80170CB0 (src/shared) */ - - -DEFINE_func_80170CF0() /* dedup: shared engine-core @0x80170CF0 (src/shared) */ - - - -extern void (*D_8018CE98[])(void); - -void func_80170D68(void *a0) { - D_8018CE98[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170DA4() /* dedup: shared engine-core @0x80170DA4 (src/shared) */ - -DEFINE_func_80170DE0() /* dedup: shared engine-core @0x80170DE0 (src/shared) */ - - -extern void (*D_8018CEA0[])(void); - -void func_80170E34(void *a0) { - D_8018CEA0[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170E70() /* dedup: shared engine-core @0x80170E70 (src/shared) */ - -DEFINE_func_80170EAC() /* dedup: shared engine-core @0x80170EAC (src/shared) */ - - -extern void (*D_8018CEA8[])(void); - -void func_80170EFC(void *a0) { - D_8018CEA8[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170F38() /* dedup: shared engine-core @0x80170F38 (src/shared) */ - -DEFINE_func_80170F74() /* dedup: shared engine-core @0x80170F74 (src/shared) */ - - -extern void (*D_8018CEB0[])(void); - -void func_80170FB0(void *a0) { - D_8018CEB0[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80170FEC() /* dedup: shared engine-core @0x80170FEC (src/shared) */ - -DEFINE_func_80171028() /* dedup: shared engine-core @0x80171028 (src/shared) */ - - -extern void (*D_8018CEB8[])(void); - -void func_80171064(void *a0) { - D_8018CEB8[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801710A0() /* dedup: shared engine-core @0x801710A0 (src/shared) */ - -DEFINE_func_801710DC() /* dedup: shared engine-core @0x801710DC (src/shared) */ - - -extern void (*D_8018CEC0[])(void); - -void func_80171120(void *a0) { - D_8018CEC0[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017115C() /* dedup: shared engine-core @0x8017115C (src/shared) */ - -DEFINE_func_8017118C() /* dedup: shared engine-core @0x8017118C (src/shared) */ - - -extern void (*D_8018CEC8[])(void); - -void func_801711C0(void *a0) { - D_8018CEC8[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_801711FC() /* dedup: shared engine-core @0x801711FC (src/shared) */ - -DEFINE_func_80171238() /* dedup: shared engine-core @0x80171238 (src/shared) */ - - -extern void (*D_8018CED0[])(void); - -void func_80171260(void *a0) { - D_8018CED0[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_8017129C() /* dedup: shared engine-core @0x8017129C (src/shared) */ - -DEFINE_func_80171384() /* dedup: shared engine-core @0x80171384 (src/shared) */ - - -extern void (*D_8018CED8[])(void); - -void func_801714E4(void *a0) { - D_8018CED8[*(u8 *)((s32)a0 + 0x216)](); -} - - -DEFINE_func_80171520() /* dedup: shared engine-core @0x80171520 (src/shared) */ - -DEFINE_func_8017162C() /* dedup: shared engine-core @0x8017162C (src/shared) */ - -DEFINE_func_801716AC() /* dedup: shared engine-core @0x801716AC (src/shared) */ - -DEFINE_func_801717A0() /* dedup: shared engine-core @0x801717A0 (src/shared) */ - -DEFINE_func_801717F4() /* dedup: shared engine-core @0x801717F4 (src/shared) */ - -DEFINE_func_80171824() /* dedup: shared engine-core @0x80171824 (src/shared) */ - -DEFINE_func_80171854() /* dedup: shared engine-core @0x80171854 (src/shared) */ - -DEFINE_func_80171884() /* dedup: shared engine-core @0x80171884 (src/shared) */ - -DEFINE_func_801718AC() /* dedup: shared engine-core @0x801718AC (src/shared) */ - -DEFINE_func_80171904() /* dedup: shared engine-core @0x80171904 (src/shared) */ - -DEFINE_func_80171928() /* dedup: shared engine-core @0x80171928 (src/shared) */ - -DEFINE_func_8017196C() /* dedup: shared engine-core @0x8017196C (src/shared) */ - -DEFINE_func_8017197C() /* dedup: shared engine-core @0x8017197C (src/shared) */ - -DEFINE_func_80171990() /* dedup: shared engine-core @0x80171990 (src/shared) */ - -DEFINE_func_801719A4() /* dedup: shared engine-core @0x801719A4 (src/shared) */ - -DEFINE_func_80171A04() /* dedup: shared engine-core @0x80171A04 (src/shared) */ - -DEFINE_func_80171A10() /* dedup: shared engine-core @0x80171A10 (src/shared) */ - -DEFINE_func_80171A1C() /* dedup: shared engine-core @0x80171A1C (src/shared) */ - -DEFINE_func_80171A34() /* dedup: shared engine-core @0x80171A34 (src/shared) */ - -DEFINE_func_80171A44() /* dedup: shared engine-core @0x80171A44 (src/shared) */ - -DEFINE_func_80171A58() /* dedup: shared engine-core @0x80171A58 (src/shared) */ - -DEFINE_func_80171A6C() /* dedup: shared engine-core @0x80171A6C (src/shared) */ - -DEFINE_func_80171A80() /* dedup: shared engine-core @0x80171A80 (src/shared) */ - -DEFINE_func_80171A88() /* dedup: shared engine-core @0x80171A88 (src/shared) */ - -DEFINE_func_80171AB0() /* dedup: shared engine-core @0x80171AB0 (src/shared) */ - -DEFINE_func_80171B10() /* dedup: shared engine-core @0x80171B10 (src/shared) */ - -DEFINE_func_80171B44() /* dedup: shared engine-core @0x80171B44 (src/shared) */ diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80171B4C.c b/src/ov_SC03_119/ov_SC03_119_jr_80171B4C.c deleted file mode 100644 index 72d8c064f..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_80171B4C.c +++ /dev/null @@ -1,2547 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(void); -extern void func_8015ADB0(s32); -extern void func_8015AD78(s32 a0); -extern void func_8015ADB0(s32 arg0); -extern s32 func_80161A60(s32 a0); -extern s32 func_801619A4(s32 *a0); -extern s32 func_80149C08(s32 a0); -extern s32 func_8015B6F4(s32 a0); -extern s32 func_8015B7B4(s32 a0); -extern void func_8015B8F8(s32 *a0); -extern void func_800CCCC0(s32 a0); -extern s32 func_8015B858(u8 *a0); -extern s32 func_800CF8B4(void); -extern void func_80147A84(s32 a0); -extern s32 func_80172644(u8 *a0); -extern void func_800CCB78(s32 a0); -extern s32 func_80161488(void *a0); -extern void func_8015CC40(s32 *a0); -extern void func_8015CF8C(s32 *a0); -extern s32 func_8015AE2C(); -extern s32 D_800D4A9C; -extern int func_8015B6F4(int param_1); -extern u8 D_800D4F8C[]; -extern u8 D_800D4BE0[]; -extern s32 func_8014A51C(void); -extern s32 D_800D4B48; -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_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_8018C184[])(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_8018C190[])(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 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_8015CFFC(void); -extern void func_8015D01C(int param_1); -extern void (*D_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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 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 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_80161A00(s32 a0); -extern s32 func_80161A30(s32 a0); -extern int func_801497A8(void); -extern int func_80161BE0(void *param_1); -extern u16 D_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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 s32 func_80016A5C(); -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_8018CAD4[])(void); -extern void func_8016AB30(void *a0); -extern s32 func_8016AB6C(s32 arg0); -extern void func_8016B234(); -extern void func_8016AE5C(s32 param_1); -extern void func_8016AFB0(s32 a0); -extern void func_8016B114(void *arg0); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_80016ED4(void *a0); -extern void func_8016B234(s32 param_1); -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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_80013CFC(s32 a0, s32 a1, void *a2); -extern void func_8001739C(void *a0); -extern void func_8016B6BC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(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_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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(); -extern void func_8016C83C(s32 a0); -extern short func_8016CBC0(void); -extern void func_8016C998(s32 param_1); -extern void (*D_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void func_800233CC(void*, unsigned short); -extern void func_8001CD9C(int, void*); -extern void func_80147324(int a); -extern void RotMatrixYXZ(void *a, void *b); -extern void ApplyMatrixSV(void *a, void *b, void *c); -extern void func_8016D1D8(int param_1); -extern void (*D_8018CBFC[])(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 void func_8016D64C(int param_1); -extern void func_8016D688(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void func_8016DC20(s16 *param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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 s32 func_8016EFC8(s32 a0, s32 a1); -extern void func_8016F094(s32 *a0); -extern s32 func_8016F0AC(); -extern s32 D_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(void); -extern void func_80171260(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -extern void func_801719A4(int, int); -extern s32 func_80171990(u8*); -extern void func_80171384(void*); -extern void func_8017129C(int param_1); -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80171384(void *a0); -extern void (*D_8018CED8[])(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); -/* ==== end §8b carried decl layer ==== */ - - -extern void func_80146D90(s32); -extern s32 ratan2(s32, s32); -extern s32 D_801151D4; - -s32 func_80171B4C(arg0, arg1) -s32 arg0; -u8 arg1; -{ - s32 p, ang, idx; - u8 c; - p = D_801151D4; - *(u8 *)(arg0 + 0xA9) = 0x41; - ang = ratan2(*(s32 *)(p + 0x68) - *(s32 *)(p + 0x5C), - *(s32 *)(p + 0x70) - *(s32 *)(p + 0x64)); - idx = ((*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - ((ang + 0x800) & 0xFFF)) + 0x100) & 0xE00; - switch (idx / 0x200) { - case 0: *(u16 *)(arg0 + 0xAA) = 0x1000; break; - case 1: *(u16 *)(arg0 + 0xAA) = 0x3000; break; - case 2: *(u16 *)(arg0 + 0xAA) = 0x2000; break; - case 3: *(u16 *)(arg0 + 0xAA) = 0x6000; break; - case 4: *(u16 *)(arg0 + 0xAA) = 0x4000; break; - case 5: *(u16 *)(arg0 + 0xAA) = 0xC000; break; - case 6: *(u16 *)(arg0 + 0xAA) = 0x8000; break; - case 7: *(u16 *)(arg0 + 0xAA) = 0x9000; break; - } - c = *(u8 *)(arg0 + 0x20C); - *(u8 *)(arg0 + 0x20C) = c + 1; - if (c != arg1) { - return 0; - } - func_80146D90(arg0); - return 1; -} - -DEFINE_func_80171C64() /* dedup: shared engine-core @0x80171C64 (src/shared) */ - -DEFINE_func_80171CC4() /* dedup: shared engine-core @0x80171CC4 (src/shared) */ - -DEFINE_func_80171D1C() /* dedup: shared engine-core @0x80171D1C (src/shared) */ - -DEFINE_func_80171D78() /* dedup: shared engine-core @0x80171D78 (src/shared) */ - -DEFINE_func_80171E08() /* dedup: shared engine-core @0x80171E08 (src/shared) */ - -DEFINE_func_80171EC8() /* dedup: shared engine-core @0x80171EC8 (src/shared) */ - - -DEFINE_func_80171FFC() /* dedup: shared engine-core @0x80171FFC (src/shared) */ - - -DEFINE_func_8017209C() /* dedup: shared engine-core @0x8017209C (src/shared) */ - -DEFINE_func_80172170() /* dedup: shared engine-core @0x80172170 (src/shared) */ - -DEFINE_func_801722CC() /* dedup: shared engine-core @0x801722CC (src/shared) */ - -DEFINE_func_80172304() /* dedup: shared engine-core @0x80172304 (src/shared) */ - -DEFINE_func_80172310() /* dedup: shared engine-core @0x80172310 (src/shared) */ - -DEFINE_func_80172358() /* dedup: shared engine-core @0x80172358 (src/shared) */ - -DEFINE_func_801723C4() /* dedup: shared engine-core @0x801723C4 (src/shared) */ - -DEFINE_func_80172414() /* dedup: shared engine-core @0x80172414 (src/shared) */ - -DEFINE_func_8017248C() /* dedup: shared engine-core @0x8017248C (src/shared) */ - -DEFINE_func_801724EC() /* dedup: shared engine-core @0x801724EC (src/shared) */ - -DEFINE_func_8017250C() /* dedup: shared engine-core @0x8017250C (src/shared) */ - -DEFINE_func_80172560() /* dedup: shared engine-core @0x80172560 (src/shared) */ - -DEFINE_func_80172588() /* dedup: shared engine-core @0x80172588 (src/shared) */ - -DEFINE_func_80172590() /* dedup: shared engine-core @0x80172590 (src/shared) */ - -DEFINE_func_801725A4() /* dedup: shared engine-core @0x801725A4 (src/shared) */ - -DEFINE_func_801725B8() /* dedup: shared engine-core @0x801725B8 (src/shared) */ - -DEFINE_func_801725CC() /* dedup: shared engine-core @0x801725CC (src/shared) */ - -DEFINE_func_801725E0() /* dedup: shared engine-core @0x801725E0 (src/shared) */ - -DEFINE_func_801725F4() /* dedup: shared engine-core @0x801725F4 (src/shared) */ - -DEFINE_func_80172608() /* dedup: shared engine-core @0x80172608 (src/shared) */ - -DEFINE_func_8017261C() /* dedup: shared engine-core @0x8017261C (src/shared) */ - -DEFINE_func_80172630() /* dedup: shared engine-core @0x80172630 (src/shared) */ - -DEFINE_func_80172644() /* dedup: shared engine-core @0x80172644 (src/shared) */ - -DEFINE_func_80172658() /* dedup: shared engine-core @0x80172658 (src/shared) */ - -DEFINE_func_80172664() /* dedup: shared engine-core @0x80172664 (src/shared) */ - -DEFINE_func_80172670() /* dedup: shared engine-core @0x80172670 (src/shared) */ - -DEFINE_func_8017267C() /* dedup: shared engine-core @0x8017267C (src/shared) */ - -DEFINE_func_80172688() /* dedup: shared engine-core @0x80172688 (src/shared) */ - -DEFINE_func_80172694() /* dedup: shared engine-core @0x80172694 (src/shared) */ - -DEFINE_func_801726A0() /* dedup: shared engine-core @0x801726A0 (src/shared) */ - -DEFINE_func_801726AC() /* dedup: shared engine-core @0x801726AC (src/shared) */ - -DEFINE_func_801726B8() /* dedup: shared engine-core @0x801726B8 (src/shared) */ - -DEFINE_func_801726C4() /* dedup: shared engine-core @0x801726C4 (src/shared) */ - -DEFINE_func_801726D0() /* dedup: shared engine-core @0x801726D0 (src/shared) */ - -DEFINE_func_80172710() /* dedup: shared engine-core @0x80172710 (src/shared) */ - -DEFINE_func_80172738() /* dedup: shared engine-core @0x80172738 (src/shared) */ - -DEFINE_func_80172760() /* dedup: shared engine-core @0x80172760 (src/shared) */ - -DEFINE_func_80172780() /* dedup: shared engine-core @0x80172780 (src/shared) */ - - - -s32 func_801727D0(void *a0) { - - extern void (*D_8018CEE8[])(void); - D_8018CEE8[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017280C() /* dedup: shared engine-core @0x8017280C (src/shared) */ - -DEFINE_func_80172844() /* dedup: shared engine-core @0x80172844 (src/shared) */ - -DEFINE_func_8017288C() /* dedup: shared engine-core @0x8017288C (src/shared) */ - -DEFINE_func_80172894() /* dedup: shared engine-core @0x80172894 (src/shared) */ - - - -s32 func_801728E4(void *a0) { - - extern void (*D_8018CEF4[])(void); - D_8018CEF4[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172920() /* dedup: shared engine-core @0x80172920 (src/shared) */ - -DEFINE_func_80172958() /* dedup: shared engine-core @0x80172958 (src/shared) */ - -DEFINE_func_801729A8() /* dedup: shared engine-core @0x801729A8 (src/shared) */ - -DEFINE_func_801729B0() /* dedup: shared engine-core @0x801729B0 (src/shared) */ - - - -s32 func_801729F0(void *a0) { - - extern void (*D_8018CF00[])(void); - D_8018CF00[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172A2C() /* dedup: shared engine-core @0x80172A2C (src/shared) */ - -DEFINE_func_80172A8C() /* dedup: shared engine-core @0x80172A8C (src/shared) */ - -DEFINE_func_80172ACC() /* dedup: shared engine-core @0x80172ACC (src/shared) */ - -DEFINE_func_80172B0C() /* dedup: shared engine-core @0x80172B0C (src/shared) */ - -DEFINE_func_80172B14() /* dedup: shared engine-core @0x80172B14 (src/shared) */ - - - -s32 func_80172B44(void *a0) { - - extern void (*D_8018CF10[])(void); - D_8018CF10[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172B80() /* dedup: shared engine-core @0x80172B80 (src/shared) */ - -DEFINE_func_80172BC8() /* dedup: shared engine-core @0x80172BC8 (src/shared) */ - -DEFINE_func_80172C48() /* dedup: shared engine-core @0x80172C48 (src/shared) */ - -DEFINE_func_80172C50() /* dedup: shared engine-core @0x80172C50 (src/shared) */ - - - -extern void (*D_8018CF1C[])(void); - -void func_80172CA0(void *a0) { - D_8018CF1C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172CDC() /* dedup: shared engine-core @0x80172CDC (src/shared) */ - -DEFINE_func_80172D14() /* dedup: shared engine-core @0x80172D14 (src/shared) */ - -DEFINE_func_80172D60() /* dedup: shared engine-core @0x80172D60 (src/shared) */ - -DEFINE_func_80172D68() /* dedup: shared engine-core @0x80172D68 (src/shared) */ - - - -s32 func_80172DAC(void *a0) { - - extern void (*D_8018CF28[])(void); - D_8018CF28[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80172DE8() /* dedup: shared engine-core @0x80172DE8 (src/shared) */ - -DEFINE_func_80172E20() /* dedup: shared engine-core @0x80172E20 (src/shared) */ - -DEFINE_func_80172E8C() /* dedup: shared engine-core @0x80172E8C (src/shared) */ - -DEFINE_func_80172E94() /* dedup: shared engine-core @0x80172E94 (src/shared) */ - -DEFINE_func_80172ED4() /* dedup: shared engine-core @0x80172ED4 (src/shared) */ - -DEFINE_func_80172EFC() /* dedup: shared engine-core @0x80172EFC (src/shared) */ - -DEFINE_func_80172F24() /* dedup: shared engine-core @0x80172F24 (src/shared) */ - -DEFINE_func_80172F4C() /* dedup: shared engine-core @0x80172F4C (src/shared) */ - -DEFINE_func_80172F9C() /* dedup: shared engine-core @0x80172F9C (src/shared) */ - -DEFINE_func_80172FEC() /* dedup: shared engine-core @0x80172FEC (src/shared) */ - -DEFINE_func_8017303C() /* dedup: shared engine-core @0x8017303C (src/shared) */ - - - -s32 func_80173078(void *a0) { - - extern void (*D_8018CF34[])(void); - D_8018CF34[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801730B4() /* dedup: shared engine-core @0x801730B4 (src/shared) */ - -DEFINE_func_801730FC() /* dedup: shared engine-core @0x801730FC (src/shared) */ - -DEFINE_func_8017316C() /* dedup: shared engine-core @0x8017316C (src/shared) */ - -DEFINE_func_80173174() /* dedup: shared engine-core @0x80173174 (src/shared) */ - - - -s32 func_8017319C(void *a0) { - - extern void (*D_8018CF40[])(void); - D_8018CF40[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801731D8() /* dedup: shared engine-core @0x801731D8 (src/shared) */ - - -extern void func_80019064(void *a0); -extern void func_80147324(s32 a0); -extern void func_80171A1C(u8 *a0); -extern s32 func_80174650(s32); -extern M2C_UNK D_8018CEE0; - -void func_80173220(void * arg0) -{ - if (M2C_FIELD(arg0, u16 *, 0xB8) & 0x4000) { - func_80147324(0x516); - func_80019064(&D_8018CEE0); - } - if (M2C_FIELD(arg0, u16 *, 0xB8) & 0x8000) { - func_80171A1C(arg0); - func_80174650(arg0); - } -} - - -DEFINE_func_80173294() /* dedup: shared engine-core @0x80173294 (src/shared) */ - -DEFINE_func_8017329C() /* dedup: shared engine-core @0x8017329C (src/shared) */ - -DEFINE_func_801732C4() /* dedup: shared engine-core @0x801732C4 (src/shared) */ - -DEFINE_func_801732F4() /* dedup: shared engine-core @0x801732F4 (src/shared) */ - -DEFINE_func_8017331C() /* dedup: shared engine-core @0x8017331C (src/shared) */ - -DEFINE_func_8017334C() /* dedup: shared engine-core @0x8017334C (src/shared) */ - -DEFINE_func_80173374() /* dedup: shared engine-core @0x80173374 (src/shared) */ - -DEFINE_func_801733A4() /* dedup: shared engine-core @0x801733A4 (src/shared) */ - -DEFINE_func_801733CC() /* dedup: shared engine-core @0x801733CC (src/shared) */ - - -DEFINE_func_801733FC() /* dedup: shared engine-core @0x801733FC (src/shared) */ - - -DEFINE_func_80173460() /* dedup: shared engine-core @0x80173460 (src/shared) */ - - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_801734BC.c b/src/ov_SC03_119/ov_SC03_119_jr_801734BC.c deleted file mode 100644 index 242fcc0a2..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_801734BC.c +++ /dev/null @@ -1,3915 +0,0 @@ -#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 *); -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 struct Packed8 D_80126C98; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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 S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018CBFC[])(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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 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_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(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_8018CED8[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -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 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_8018CF1C[])(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 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_8018CEE0; -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); -/* ==== end §8b carried decl layer ==== */ - - -void func_801734BC(s32 arg0, s32 _unused1) { - extern void func_80173544(void); - extern s16 D_80126B40; - - - s16 temp; - switch (((u32)arg0)) { - case 0: temp = -0x4; break; - case 1: temp = -0x8; break; - case 2: temp = -0x12; break; - case 3: temp = -0x18; break; - case 4: temp = -0x1C; break; - default: goto after; - } - D_80126B32 = temp; -after: - D_80126B3E = 0; - D_80126B40 = 0; - func_80174684(&func_80173544); -} - - -extern void (*D_8018CF4C[])(void); - -void func_80173544(void *a0) { - D_8018CF4C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173580() /* dedup: shared engine-core @0x80173580 (src/shared) */ - -DEFINE_func_801735B8() /* dedup: shared engine-core @0x801735B8 (src/shared) */ - -DEFINE_func_801735EC() /* dedup: shared engine-core @0x801735EC (src/shared) */ - -DEFINE_func_80173648() /* dedup: shared engine-core @0x80173648 (src/shared) */ - -DEFINE_func_801736A8() /* dedup: shared engine-core @0x801736A8 (src/shared) */ - -DEFINE_func_801736B0() /* dedup: shared engine-core @0x801736B0 (src/shared) */ - - - -s32 func_801736FC(void *a0) { - - extern void (*D_8018CF60[])(void); - D_8018CF60[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173738() /* dedup: shared engine-core @0x80173738 (src/shared) */ - -DEFINE_func_80173770() /* dedup: shared engine-core @0x80173770 (src/shared) */ - -DEFINE_func_801737B0() /* dedup: shared engine-core @0x801737B0 (src/shared) */ - -DEFINE_func_801737B8() /* dedup: shared engine-core @0x801737B8 (src/shared) */ - - - -s32 func_801737E8(void *a0) { - - extern void (*D_8018CF6C[])(void); - D_8018CF6C[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173824() /* dedup: shared engine-core @0x80173824 (src/shared) */ - -DEFINE_func_8017385C() /* dedup: shared engine-core @0x8017385C (src/shared) */ - -DEFINE_func_801738D4() /* dedup: shared engine-core @0x801738D4 (src/shared) */ - -DEFINE_func_801738DC() /* dedup: shared engine-core @0x801738DC (src/shared) */ - - - -s32 func_8017390C(void *a0) { - - extern void (*D_8018CF78[])(void); - D_8018CF78[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173948() /* dedup: shared engine-core @0x80173948 (src/shared) */ - -DEFINE_func_80173980() /* dedup: shared engine-core @0x80173980 (src/shared) */ - -DEFINE_func_801739D8() /* dedup: shared engine-core @0x801739D8 (src/shared) */ - -DEFINE_func_80173A20() /* dedup: shared engine-core @0x80173A20 (src/shared) */ - -DEFINE_func_80173A28() /* dedup: shared engine-core @0x80173A28 (src/shared) */ - - -DEFINE_func_80173A60() /* dedup: shared engine-core @0x80173A60 (src/shared) */ - - - -extern void (*D_8018CF88[])(void); - -void func_80173B4C(void *a0) { - D_8018CF88[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80173B88() /* dedup: shared engine-core @0x80173B88 (src/shared) */ - -DEFINE_func_80173BC0() /* dedup: shared engine-core @0x80173BC0 (src/shared) */ - -DEFINE_func_80173C64() /* dedup: shared engine-core @0x80173C64 (src/shared) */ - -DEFINE_func_80173CB4() /* dedup: shared engine-core @0x80173CB4 (src/shared) */ - -DEFINE_func_80173E1C() /* dedup: shared engine-core @0x80173E1C (src/shared) */ - -DEFINE_func_80173EF8() /* dedup: shared engine-core @0x80173EF8 (src/shared) */ - -DEFINE_func_80174158() /* dedup: shared engine-core @0x80174158 (src/shared) */ - -DEFINE_func_80174188() /* dedup: shared engine-core @0x80174188 (src/shared) */ - -DEFINE_func_801741A8() /* dedup: shared engine-core @0x801741A8 (src/shared) */ - -DEFINE_func_801741EC() /* dedup: shared engine-core @0x801741EC (src/shared) */ - -DEFINE_func_80174274() /* dedup: shared engine-core @0x80174274 (src/shared) */ - -DEFINE_func_8017427C() /* dedup: shared engine-core @0x8017427C (src/shared) */ - - - -s32 func_801742A4(void *a0) { - - extern void (*D_8018CFA8[])(void); - D_8018CFA8[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801742E0() /* dedup: shared engine-core @0x801742E0 (src/shared) */ - -DEFINE_func_80174318() /* dedup: shared engine-core @0x80174318 (src/shared) */ - -DEFINE_func_80174354() /* dedup: shared engine-core @0x80174354 (src/shared) */ - -DEFINE_func_8017435C() /* dedup: shared engine-core @0x8017435C (src/shared) */ - - - -s32 func_80174384(void *a0) { - - extern void (*D_8018CFB4[])(void); - D_8018CFB4[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801743C0() /* dedup: shared engine-core @0x801743C0 (src/shared) */ - -DEFINE_func_801743F0() /* dedup: shared engine-core @0x801743F0 (src/shared) */ - -DEFINE_func_80174430() /* dedup: shared engine-core @0x80174430 (src/shared) */ - -DEFINE_func_80174438() /* dedup: shared engine-core @0x80174438 (src/shared) */ - - - -s32 func_80174474(void *a0) { - - extern void (*D_8018CFC0[])(void); - D_8018CFC0[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801744B0() /* dedup: shared engine-core @0x801744B0 (src/shared) */ - -DEFINE_func_801744E0() /* dedup: shared engine-core @0x801744E0 (src/shared) */ - -DEFINE_func_80174524() /* dedup: shared engine-core @0x80174524 (src/shared) */ - -DEFINE_func_8017452C() /* dedup: shared engine-core @0x8017452C (src/shared) */ - -DEFINE_func_80174554() /* dedup: shared engine-core @0x80174554 (src/shared) */ - -DEFINE_func_80174584() /* dedup: shared engine-core @0x80174584 (src/shared) */ - -DEFINE_func_801745AC() /* dedup: shared engine-core @0x801745AC (src/shared) */ - -DEFINE_func_801745DC() /* dedup: shared engine-core @0x801745DC (src/shared) */ - -DEFINE_func_80174604() /* dedup: shared engine-core @0x80174604 (src/shared) */ - -DEFINE_func_80174630() /* dedup: shared engine-core @0x80174630 (src/shared) */ - - -DEFINE_func_80174650() /* dedup: shared engine-core @0x80174650 (src/shared) */ - - -DEFINE_func_80174674() /* dedup: shared engine-core @0x80174674 (src/shared) */ - -DEFINE_func_80174684() /* dedup: shared engine-core @0x80174684 (src/shared) */ - -DEFINE_func_801746A4() /* dedup: shared engine-core @0x801746A4 (src/shared) */ - -DEFINE_func_801746DC() /* dedup: shared engine-core @0x801746DC (src/shared) */ - -DEFINE_func_80174714() /* dedup: shared engine-core @0x80174714 (src/shared) */ - -DEFINE_func_80174754() /* dedup: shared engine-core @0x80174754 (src/shared) */ - -DEFINE_func_80174764() /* dedup: shared engine-core @0x80174764 (src/shared) */ - -DEFINE_func_80174774() /* dedup: shared engine-core @0x80174774 (src/shared) */ - -DEFINE_func_80174784() /* dedup: shared engine-core @0x80174784 (src/shared) */ - -DEFINE_func_801747AC() /* dedup: shared engine-core @0x801747AC (src/shared) */ - - - -s32 func_801747CC(void *a0) { - - extern void (*D_8018CFCC[])(void); - D_8018CFCC[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_80174808() /* dedup: shared engine-core @0x80174808 (src/shared) */ - -DEFINE_func_8017481C() /* dedup: shared engine-core @0x8017481C (src/shared) */ - -DEFINE_func_80174824() /* dedup: shared engine-core @0x80174824 (src/shared) */ - -DEFINE_func_8017484C() /* dedup: shared engine-core @0x8017484C (src/shared) */ - - - -s32 func_80174888(void *a0) { - - extern void (*D_8018CFD4[])(void); - D_8018CFD4[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_801748C4() /* dedup: shared engine-core @0x801748C4 (src/shared) */ - -DEFINE_func_801748E4() /* dedup: shared engine-core @0x801748E4 (src/shared) */ - -DEFINE_func_801748EC() /* dedup: shared engine-core @0x801748EC (src/shared) */ - - - -s32 func_8017496C(void *a0) { - - extern void (*D_8018CFDC[])(void); - D_8018CFDC[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_801749A8() /* dedup: shared engine-core @0x801749A8 (src/shared) */ - - -// @class: schedule -// @stuck: none — MATCH (105 ins). Keys: (1) single-buffer struct for the func_80049CAC/func_8012F14C -// out-params (local_2c..local_14 are fields of ONE stack buffer, not separate scalars — else gcc -// DCEs the unread ones + overlaps the buffer -> wrong 0x40 frame); (2) $s2/$s1 pins for iVar5/iVar4 -// (call-crossing saved regs); (3) load D_80126B66 as RAW u16 (lhu) with (s16) sext at each USE — -// this defeats gcc's lhu+sext->lh combine fold so the target's lhu+sll+sra reappears; (4) inline -// `iVar5 = (s16)D_80126B5E` into the f48 expression so the f28 operand load schedules first. - -DEFINE_func_801749C8() /* dedup: shared engine-core @0x801749C8 (src/shared) */ - - -DEFINE_func_80174B6C() /* dedup: shared engine-core @0x80174B6C (src/shared) */ - -DEFINE_func_80174BBC() /* dedup: shared engine-core @0x80174BBC (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (27 ins) via func-ptr array fold extern void(*D_8018CFE0[])() - -extern void (*D_8018CFE0[])(); - -void func_80174BF4(void * arg0) -{ - M2C_FIELD(arg0, s32 *, 0xC) = 0x12C; - M2C_FIELD(arg0, s32 *, 0x14) = 0x12C; - M2C_FIELD(arg0, s16 *, 0x20) = 0x155; - M2C_FIELD(arg0, s16 *, 0x22) = 0x800; - M2C_FIELD(arg0, s16 *, 0x24) = 0; - M2C_FIELD(arg0, s16 *, 0x2E) = 0; - M2C_FIELD(arg0, s16 *, 0x30) = -0x28; - M2C_FIELD(arg0, s16 *, 0x32) = 0; - M2C_FIELD(arg0, s32 *, 0x54) = 0; - D_8018CFE0[M2C_FIELD(arg0, u8 *, 4)](); -} - - -DEFINE_func_80174C60() /* dedup: shared engine-core @0x80174C60 (src/shared) */ - -DEFINE_func_80174C80() /* dedup: shared engine-core @0x80174C80 (src/shared) */ - -DEFINE_func_80174CB0() /* dedup: shared engine-core @0x80174cb0 (src/shared) */ - - -DEFINE_func_80174E9C() /* dedup: shared engine-core @0x80174E9C (src/shared) */ - -DEFINE_func_80174ED4() /* dedup: shared engine-core @0x80174ED4 (src/shared) */ - -DEFINE_func_80174EF0() /* dedup: shared engine-core @0x80174EF0 (src/shared) */ - - - -s32 func_80174F28(void *a0) { - - extern void (*D_8018CFE8[])(void); - D_8018CFE8[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_80174F64() /* dedup: shared engine-core @0x80174F64 (src/shared) */ - -DEFINE_func_80174FBC() /* dedup: shared engine-core @0x80174FBC (src/shared) */ - -DEFINE_func_80175014() /* dedup: shared engine-core @0x80175014 (src/shared) */ - -DEFINE_func_8017509C() /* dedup: shared engine-core @0x8017509C (src/shared) */ - -DEFINE_func_80175114() /* dedup: shared engine-core @0x80175114 (src/shared) */ - -DEFINE_func_80175150() /* dedup: shared engine-core @0x80175150 (src/shared) */ - - -extern void (*D_8018CFF0[])(void*); -extern s32 func_80175268(s32); - -void func_80175184(s32* arg0) { - u16 v1 = *(u16*)((u8*)arg0 + 2); - if (v1 < 2) { - D_8018CFF0[v1](arg0); - } else { - func_80175268((s32)arg0); - } -} - - -DEFINE_func_801751D8() /* dedup: shared engine-core @0x801751D8 (src/shared) */ - - -// @class: struct -// @stuck: none — MATCH (fn-ptr table indexed by D_80078EC0-1; param preserved in $s0 across 1st call) - -extern u8 D_80078EC0; -extern void (*D_8018CFF8[])(s32); -extern void func_80146CA0(void *a0); - -s32 func_80175218(void * param_1) -{ - s32 i = D_80078EC0 - 1; - - D_8018CFF8[i](param_1); - ((void (*)(s32))func_80146CA0)(param_1); -} - - - -extern u8 D_80078EC0; - -s32 func_80175268(s32 param_1) -{ - - extern VoidFn D_8018D010[]; - *(u32 *)(param_1 + 0x44) |= 2; - (*(VoidFn *)((s32)D_8018D010 + ((D_80078EC0 - 1) << 2)))(); -} - - -DEFINE_func_801752BC() /* dedup: shared engine-core @0x801752BC (src/shared) */ - -DEFINE_func_80175308() /* dedup: shared engine-core @0x80175308 (src/shared) */ - -DEFINE_func_80175414() /* dedup: shared engine-core @0x80175414 (src/shared) */ - -DEFINE_func_80175454() /* dedup: shared engine-core @0x80175454 (src/shared) */ - -DEFINE_func_80175494() /* dedup: shared engine-core @0x80175494 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (37 ins, relocation-masked proxy) - - - -extern s32 func_80029504(void); - -void func_801754A8(void) { - - extern u8 D_8011F7A8; - extern unsigned char D_800B9A13; - extern s32 D_80126B9C; - extern DispatchFn D_8018D154[]; - u8 *p = &D_8011F7A8; - s32 r = func_80029504(); - s32 flag = 0; - - if (((D_800B9A13 == 0) && ((D_80126B9C & 0x80) == 0)) || - (0x4AF < (u32)(r - 10))) { - flag = 1; - } - p[9] = flag; - D_8018D154[p[0]]((void *)p); -} - - - -extern void (*D_8018D160[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); - -void func_8017553C(s32 *param) { - D_8018D160[*(u8 *)((s32)param + 1)](); - ((void (*)(void))func_801758FC)(); - ((void (*)(void))func_80175820)(); - ((void (*)(void))func_801759D8)(); -} - - -DEFINE_func_80175590() /* dedup: shared engine-core @0x80175590 (src/shared) */ - -DEFINE_func_80175624() /* dedup: shared engine-core @0x80175624 (src/shared) */ - -DEFINE_func_80175668() /* dedup: shared engine-core @0x80175668 (src/shared) */ - - -extern void (*D_8018D16C[])(); -extern s32 func_801758FC(void); -extern s32 func_80175820(void); -extern s32 func_801759D8(void); - -void func_80175690(s32 *param) { - D_8018D16C[*(u8 *)((s32)param + 1)](); - ((void (*)(void))func_801758FC)(); - ((void (*)(void))func_80175820)(); - ((void (*)(void))func_801759D8)(); -} - - -DEFINE_func_801756E4() /* dedup: shared engine-core @0x801756E4 (src/shared) */ - -DEFINE_func_80175798() /* dedup: shared engine-core @0x80175798 (src/shared) */ - -DEFINE_func_801757A0() /* dedup: shared engine-core @0x801757A0 (src/shared) */ - -DEFINE_func_801757E0() /* dedup: shared engine-core @0x801757E0 (src/shared) */ - - -/* func_80175820 — twin of the byte-matched func_801759D8 / func_801758FC in this same TU - * (ov_SC01_077_jr_801734BC). Same three-part body, different slot: - * part 1 tag word = ptr[2] (0x8 vs 0x4 / 0xC) - * part 2 head ptr = D_8011F7A8+0x18 (== D_8011F7C0) - * part 3 tail ptr = D_8011F7A8+0x20 (== D_8011F7C8) - * The two __asm__ memory fences are what keep the three parts from CSE-ing their - * base addresses together (parts 1/2 stay absolute lui/%lo + idx*4; part 3 keeps the - * shared `la $v1,D_8011F7A8` + 0x18/0x20 displacements). - */ - - /* size 0x14 */ - /* size 0x0C */ - -DEFINE_func_80175820() /* dedup: shared engine-core @0x80175820 (src/shared) */ - - -DEFINE_func_801758FC() /* dedup: shared engine-core @0x801758FC (src/shared) */ - - - - /* size 0x14 */ - /* size 0x0C */ - -DEFINE_func_801759D8() /* dedup: shared engine-core @0x801759D8 (src/shared) */ - - - -void func_80175AB8(param_1) - s16 param_1; -{ - /* size 0x0C */ - extern S_AF634 D_800AF634[]; - extern S_AF634 D_800AF638[]; - - extern u8 D_8011F7F0; - extern u16 D_8011F7B4; - extern u16 D_8011F7B6; - extern s16 D_8011F7BC; - extern s16 D_8011F7BE; - extern s32 D_8011F804; - extern u16 D_8011F80A; - extern u16 D_8011F824; - extern u8 D_8011F832; - extern u8 D_8011F83A; - extern u8 *D_8018D088[]; - - extern u32 *func_80176D94(void *param_1, u32 param_2, s16 param_3_); - extern u32 *func_801770E0(void *param_1, u32 param_2, s16 param_3_); - extern u32 func_801783D0(s32 a0, s32 a1); - extern u32 *func_80177EA4(u32 *param_1, s32 param_2, u32 param_3, s32 param_4); - extern u32 *func_80177B5C(u32 *a0, s32 a1, s32 a2, s32 a3, s32 a4); - extern void func_80177940(u32 *p, u32 a_, u32 b_, u32 c_); - extern u32 *func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); - extern s32 func_80024054(u8*, u8*); - extern s32 func_8005A600(s32, s32, s32, s32, s32); - - u8 local[24]; - u8 *base; - u8 *arr; - u32 *slot; - u32 *p; - register u32 *a0v __asm__("$4"); - u32 uv; - s32 k; - s16 q; - s32 r1; - s32 a2v; - register s32 sum __asm__("$5"); - s32 r2; - s32 idx; - s16 sv; - - p = (u32 *)(D_800AF638[param_1].g0 + D_800AF634[param_1].g0 * 4); - __asm__("" : "=r"(base) : "0"(&D_8011F7F0)); /* L1 */ - arr = base - 0x48; - slot = (u32 *)(param_1 * 4 + (s32)arr); - *(volatile u32 *)&slot[6] = (u32)p; /* L2 */ - p = func_80176D94(p, (s16)(D_8011F7B4 - 0x71), (s16)(D_8011F7B6 + 0x51)); - p = func_801770E0(p, (s16)(D_8011F7B4 - 0x71), (s16)(D_8011F7B6 + 0x65)); - p = func_80177EA4(p, func_801783D0(D_8011F804, 0), - (s16)((*(u16 *)&D_8011F7BC) + 0x39), (s16)((*(u16 *)&D_8011F7BE) + 0x51)); - uv = D_8011F824; - k = 0x3E7; - if (uv < 1000) { - k = uv; - } - sv = (s16)func_801783D0(k, 4); - p = func_80177B5C(p, sv, D_8011F832, - (s16)(*(u16 *)(base - 0x34) + 0x39), - (s16)(*(u16 *)(base - 0x32) + 0x65)); - q = (s16)D_8011F80A / 15; - a2v = (q & 3) * 15; - r1 = func_801783D0((s32)(q << 16) >> 18, 8); - r2 = func_801783D0(a2v, 0); - a0v = p; /* L4 */ - sum = r1 + r2; /* L3 */ - p = ((u32 * (*)(u32 *, s32, s32, s32))func_80177940)( - a0v, (s16)sum, - (s16)(*(u16 *)(base - 0x34) + 0x76), - (s16)(*(u16 *)(base - 0x32) + 0x65)); - idx = D_8011F83A & 0x7F; - D_8011F83A = idx; - __asm__ __volatile__("" ::: "memory"); - ((void (*)(s32, u8 *))func_80024054)(((s32 *)D_8018D088)[idx], local); - p = func_80178298(p, local, - (s16)(*(u16 *)(base - 0x34) + 0x39), - (s16)(*(u16 *)(base - 0x32) + 0x5B)); - func_8005A600((s32)p, 0, 0, 0x15, 0); - *p = (((u32)p - 0x14) & 0xFFFFFF) | 0x2000000; - slot[8] = (u32)p; - p += 5; - D_800AF634[param_1].g0 += ((s32)p - (s32)slot[6]) >> 2; -} - - - - /* size 0x0C */ -extern u32 *func_8017742C(u32 *a0, s32 a1, s32 a2); -extern s32 func_8005A600(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_800183E0(s32 a0); - - /* 0x14 */ - -void func_80175DA8(param_1) - u16 param_1; -{ - - extern u8 D_8011F7F0; - extern u8 D_800B9A13; - extern S_AF634 D_800AF634[]; - extern S_AF634 D_800AF638[]; - extern u16 D_8018D028[]; - extern u16 D_8018D078[]; - extern u16 D_8018D084; - extern u8 D_8018D104[]; - extern u8 D_8018D118[]; - extern s32 D_8018D130[]; - extern u8 D_800D43D4; - extern u8 D_800D4414; - extern u8 D_800D45D4; - - u8 *base = &D_8011F7F0; - u8 *s = base - 0x48; - u16 *src = D_8018D028; - Sp_80175DA8 *p; - s16 i; - s32 arg; - s32 t; - s32 fl; - u16 v; - - p = (Sp_80175DA8 *)(D_800AF638[(s16)param_1].g0 + D_800AF634[(s16)param_1].g0 * 4); - *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x28) = p; - i = 0; - do { - p->tag = ((u32)(p - 1) & 0xFFFFFF) | 0x4000000; - p->code = *(u32 *)src; - src += 2; - if (i < 2) { - p->x = *src++ + *(u16 *)(s + 0xC); - p->y = *src++ + *(u16 *)(s + 0xE); - } else if (i == 2) { - p->x = *src++ + *(u16 *)(s + 0x10); - p->y = *src++ + *(u16 *)(s + 0x12); - } else { - p->x = *src++ + *(u16 *)(s + 0x14); - p->y = *src++ + *(u16 *)(s + 0x16); - } - p->uv = *(u32 *)src; - src += 2; - p->wh = *(u32 *)src; - src += 2; - p++; - i++; - } while (i < 5); - - *(u8 *)(s + 7) = D_800B9A13; - p = (Sp_80175DA8 *)func_8017742C((u32 *)p, - (s16)(*(u16 *)(s + 0x10) - 0x98), - (s16)(*(u16 *)(s + 0x12) + 9)); - func_8005A600((s32)p, 0, 0, 0x16, 0); - p->tag = ((u32)(p - 1) & 0xFFFFFF) | 0x2000000; - *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x30) = p; - p++; - { - s32 acc = D_800AF634[(s16)param_1].g0; - D_800AF634[(s16)param_1].g0 = - acc + (((s32)p - *(s32 *)(s + (s16)param_1 * 4 + 0x28)) >> 2); - } - - p = *(Sp_80175DA8 **)(s + (s16)param_1 * 4 + 0x28); - if (base[0x48] != 0) { - *((u8 *)p + 0xD) = 0; - } else { - *((u8 *)p + 0xD) = 0xA0; - } - - { - u8 *q1 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - *(u16 *)(q1 + 0x22) = 0x6CD6; - if (base[0x48] & 0x80) { - *(u16 *)(q1 + 0x20) = D_8018D084; - arg = (s32)&D_800D45D4; - } else { - u16 *tt = D_8018D078; - s32 k = base[0x48]; - if (k != 0) { - k--; - tt += k; - } - *(u16 *)(q1 + 0x20) = *tt; - arg = D_8018D130[base[0x48]]; - } - } - func_800183E0(arg); - - { - u8 *q2 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - t = (s32)(*(u16 *)(base + 0x2E) << 16); - if (t != 0) { - q2[0x49] = D_8018D118[t >> 20]; - } else { - q2[0x49] = 0xA0; - } - } - - { - u8 *q3 = *(u8 **)(s + (s16)param_1 * 4 + 0x28); - v = *(u16 *)(base + 0x40); - if (v < 100) { - q3[0x5D] = D_8018D104[v / 5]; - } else { - q3[0x5D] = 0; - } - } - - fl = *(s16 *)(base + 0x1E) & 0x8000; - /* §5a zero-byte sched fence: without it sched1 hoists the `la D_800D43D4` - into the lh's load-delay slot, dropping the target's nop (-1 ins). */ - __asm__(""); - arg = (s32)&D_800D43D4; - if (fl != 0) { - arg = (s32)&D_800D4414; - } - func_800183E0(arg); -} - - - -/* func_80176144 — RECONCILED variant of .run/uc/func_80176144.c - * - * GATE BLOCKER (whole-binary build, NOT match_one): - * src/ov_SC01_077/ov_SC01_077_jr_801734BC.c:3476: conflicting types for `D_800AF634' - * || previous declaration at :3296 - * - * ROOT CAUSE — a HOISTED file-scope typedef, not a bad signature: - * That TU hoists, at FILE scope, for func_80175DA8: - * :3295 typedef struct { s32 g0; s32 pad[2]; } S_AF634_80176144; - * :3296 extern S_AF634_80176144 D_800AF634[]; - * :3297 extern S_AF634_80176144 D_800AF638[]; - * The stored draft re-declares the SAME struct shape as a BLOCK-scope typedef - * (rule D — it must travel to the 137 sibling overlays, which have no such - * preamble). A block-scope `typedef struct {...} S_AF634_80176144;` is a DISTINCT type - * from the file-scope one (C has no structural typing), so the block-scope - * `extern S_AF634_80176144 D_800AF634[];` re-declares the symbol incompatibly with the - * in-scope file-scope decl -> hard error. - * Note the earlier block-scope copies in the same TU (:3080 func_80175820, - * :3123 func_801759D8) do NOT error: they precede :3296, so no file-scope decl - * of D_800AF634 is in scope there. Anything AFTER :3296 collides. Our - * definition lands at :3476. That is why only this one fired. - * - * FIX — §37/§124 ASM-LABEL ALIAS applied to the DATA symbols (cookbook §2516: - * "asm-label alias for sibling-decl signedness/proto conflicts ... beats - * reconcile's *(u16*)&D_x cast whose address-of PERTURBS regalloc"): - * the two objects are reached through PRIVATE C identifiers aAF634 / aAF638 - * carrying __asm__("D_800AF634") / __asm__("D_800AF638"). The emitted - * %hi/%lo relocations are against the same symbols, so codegen is unchanged, - * while the C names can never collide with ANY sibling TU's declaration — - * whether hoisted, block-scope, or absent. No header edit; no src/ edit. - * Strictly better than deleting the local decls (which would bind this - * exemplar to the one TU that happens to hoist them). - * - * The s32 parameter + explicit (s16) narrowing is retained from the stored draft - * (canonical decl in engine_core.h:18985/:4587 is `void func_80176144(s32)`; - * the K&R short param would itself be a conflicting-types error). The (s16) - * narrowing IS the entry `sll $s0,$a0,16 / sra $s0,$s0,16` pair. - * - * Verified: python3 tools/match_one.py func_80176144 --c .run/uc2/func_80176144.c - * --asm-subdir ov_SC01_077/nonmatchings/ov_SC01_077_jr_801734BC -> MATCH (53 ins) - */ - -DEFINE_func_80176144() /* dedup: shared engine-core @0x80176144 (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH (327/327 ins, match_one MATCH; symcheck SYMS-OK 18 symbols) -// -// STRUCTURE (byte-derived, all verified against the .s): -// $s3=st=&D_8011F7A8 (int base), $s1=st+0x48 (cach), $s2=st+0xE0 (flag), $s5=&(*(u8 *)D_80078E78) (src), $s4=param. -// 6 HUD fields synced src->cach with a chg-flag at [flag]: pairs 0x3A/0x3C and 0x3E/0x40, then 0x14(s32), -// 0x34(u16)+0x42(u8), 0x1A(s16), 0x4A(u8). Each: `if (cach==src) { if(!chg) goto skip; chg=0; } else {adjust}` + draw. -// KEY FINDINGS (reusable): -// * Base MUST be `s32`, and the index expr written OFFSET-FIRST (`((p<<16)>>14) + st + 0x18`) — a `u8*` base -// yields `addu rd,st,off`; the target is `addu rd,off,st`. Matches Ghidra's `(...>>0xe) + -0x7fee0840`. -// * buf is 24 bytes, NOT Ghidra's 32: MIPS STARTING_FRAME_OFFSET = outgoing_args_size(20), so get_frame_size() -// counts the 4-byte args-alignment gap. var=MIPS_STACK_ALIGN(4+24)=32 -> 32+24+28 -> 0x58. buf[32] gives 0x60. -// * Block 1 uses RAW GLOBALS (D_8011F82C...) -> absolute lui/%lo; the ne-block uses `st+0x82`/`st+0x11C` -// ($s3-relative) — both byte-confirmed; cse blocks end at labels so each region picks its own form. -// * `ne` pinned to $v0 (+6 aligned). -// -// THE TWO LEVERS THAT CLOSED IT (SESSION-21, both byte-proven here; 18 -> 7 -> 3 -> 1 -> 0): -// (L1) BLOCK-5 STORE DUPLICATED INTO BOTH ARMS (`if (f&1) *(e+0x32A)=0x200; else *(e+0x32A)=...+0x65;`) -// instead of computing a phi `sv` and storing once after the merge. Reason: sched1 is a BACKWARD list -// scheduler and a store is a memory-unit user, so `potential_hazard` floats it to the FRONT of the -// backward ready list => it is EMITTED ~8 insns late, which stretches the `sv`/`e` live ranges over -// $v0/$v1/$a0/$a1 and pushes them out to $a2/$a3. Writing the store in both arms lets cross_jump -// merge the common tail, so the store lands first at the merge label, `sv`->$v0 and `e`->$a0, and the -// `lui $a0` anti-dependence then PINS the schedule. (18 mismatches -> 7.) -// (L2) THE COMMUTATIVE-ADD OPERAND SWAP. Target is `addu $a1,$s0,$v0` = plus(ret1, ret2) into a FRESH -// non-call-crossing quantity that inherits the $a1 arg copy-suggestion. Plain `sum = i6 + i4` lets -// local_alloc TIE the dest to the dying `i6` (which crosses call2) => the whole chain is forced -// call-saved => `addu $s0,$s0,$v0` (3 mismatched). Accumulating (`i4 = i6 + i4`) frees $a1 but -// expand_binop SWAPS a commutative op when target==op1, printing `addu $a1,$v0,$s0` (1 mismatched). -// Fix: route the second call's value through a copy temp first — -// sum = i4; i4 = i6 + sum; -// target(i4) != op1(sum) at EXPAND time so no swap; cse then folds sum back and deletes the copy. -// => `addu $a1,$s0,$v0`. MATCH. -extern u16 D_80078EB2; -extern s16 D_80078EB4; -/* cur base ($s5) */ - -extern void func_80176FF4(s32); -extern void func_80177340(s32); -extern u32 func_801783D0(s32, s32); -extern void func_80177F84(s32, s32); -extern void func_80177DA8(u8 * p, u32 v, s32 idx); -extern void func_80177AD4(int, unsigned int); -extern s32 func_80024054(u8 *, u8 *); -extern u32 *func_80178298(u32*, u8*, short, short); -extern s32 func_8005A600(s32, s32, s32, s32, s32); - -void func_80176218(s32 param_1) -{ - /* [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 u8 D_80078E78[]; - - extern u16 D_8011F82A; - extern u16 D_8011F82C; - extern u16 D_8011F8C4; - extern u8 D_8011F7A8; /* st base ($s3) */ - extern u8 D_8018D104[]; - extern u8 *D_8018D088[]; - s32 st = (s32)&D_8011F7A8; /* $s3 */ - s32 cach = st + 0x48; /* $s1 */ - s32 flag = st + 0xE0; /* $s2 */ - s32 cur = (s32)&(*(u8 *)D_80078E78); /* $s5 */ - u8 buf[24]; - s32 ne; - s32 t; - u16 sA; - - /* ---- block 1: raw-global pair 0x3A/0x3C ---- */ - sA = D_80078EB2; - t = (sA != D_8011F82A); - if (D_8011F82C == (*(u16 *)&D_80078EB4)) { - ne = t; - if (ne == 0 && D_8011F8C4 == 0) goto L340; - } else { - s32 d = (s16)(D_8011F82C - (*(u16 *)&D_80078EB4)); - u16 nv; - if (d < 0) { - if (d < -10) nv = D_8011F82C + 2; - else nv = D_8011F82C + 1; - } else { - if (d > 10) nv = D_8011F82C - 2; - else nv = D_8011F82C - 1; - } - D_8011F82C = nv; - *(u16 *)(flag + 0x3C) = 1; - *(u16 *)(cach + 0x3A) = *(u16 *)(cur + 0x3A); - goto L328; - } - if (ne) { - *(u16 *)(st + 0x82) = sA; - *(u16 *)(st + 0x11C) = 1; - } else { - *(u16 *)(st + 0x11C) = 0; - } -L328: - func_80176FF4(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18)); -L340: - - /* ---- block 2: pair 0x3E/0x40 ---- */ - sA = *(u16 *)(cur + 0x3E); - t = (sA != *(u16 *)(cach + 0x3E)); - if (*(u16 *)(cach + 0x40) == *(u16 *)(cur + 0x40)) { - ne = t; - if (ne == 0 && *(u16 *)(flag + 0x40) == 0) goto L444; - } else { - s32 d = (s16)(*(u16 *)(cach + 0x40) - *(u16 *)(cur + 0x40)); - u16 nc; - if (d < 0) { - if (d < -10) nc = *(u16 *)(cach + 0x40) + 2; - else nc = *(u16 *)(cach + 0x40) + 1; - } else { - if (d > 10) nc = *(u16 *)(cach + 0x40) - 2; - else nc = *(u16 *)(cach + 0x40) - 1; - } - *(u16 *)(cach + 0x40) = nc; - *(u16 *)(flag + 0x40) = 1; - *(u16 *)(cach + 0x3E) = *(u16 *)(cur + 0x3E); - goto L3E8; - } - if (ne) { - *(u16 *)(cach + 0x3E) = sA; - *(u16 *)(flag + 0x40) = 1; - } else { - *(u16 *)(flag + 0x40) = 0; - } -L3E8: - { - s32 s0b = ((param_1 << 16) >> 14) + st; - u16 cc; - s32 pp; - func_80177340(*(s32 *)(s0b + 0x18) + 0x104); - cc = *(u16 *)(cach + 0x40); - pp = *(s32 *)(s0b + 0x28); - if (cc < 100) - *(u8 *)(pp + 0x5D) = D_8018D104[cc / 5]; - else - *(u8 *)(pp + 0x5D) = 0; - } -L444: - - /* ---- block 3: field 0x14 (s32) ---- */ - if (*(s32 *)(cach + 0x14) == *(s32 *)(cur + 0x14)) { - if (*(s32 *)(flag + 0x14) == 0) goto L4D0; - *(s32 *)(flag + 0x14) = 0; - goto L4A8; - } else { - s32 d = *(s32 *)(cur + 0x14) - *(s32 *)(cach + 0x14); - s32 nd; - if (d > 0) { - if (d < 10) nd = *(s32 *)(cach + 0x14) + 1; - else nd = *(s32 *)(cach + 0x14) + 10; - } else { - if (d < -9) nd = *(s32 *)(cach + 0x14) - 10; - else nd = *(s32 *)(cach + 0x14) - 1; - } - *(s32 *)(cach + 0x14) = nd; - *(s32 *)(flag + 0x14) = 1; - } -L4A8: - { - u32 r = func_801783D0(*(s32 *)(cach + 0x14), 0); - func_80177F84(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 0x208, r); - } -L4D0: - - /* ---- block 4: field 0x34 (u16) + 0x42 (u8) ---- */ - if (*(u16 *)(cur + 0x34) != *(u16 *)(cach + 0x34)) { - *(u16 *)(cach + 0x34) = *(u16 *)(cur + 0x34); - *(u16 *)(flag + 0x34) = 1; - *(u8 *)(cach + 0x42) = *(u8 *)(cur + 0x42); - } else { - if (*(u16 *)(flag + 0x34) == 0) goto L558; - *(u16 *)(flag + 0x34) = 0; - } - { - u16 e = 999; - s16 r; - if (*(u16 *)(cach + 0x34) < 1000) e = *(u16 *)(cach + 0x34); - r = (s16)func_801783D0((s16)e, 4); - func_80177DA8(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 0x294, - (s32)r, *(u8 *)(cach + 0x42)); - } -L558: - - /* ---- block 5: field 0x1A (s16) ---- */ - if (*(s16 *)(cach + 0x1A) != *(s16 *)(cur + 0x1A)) { - *(s16 *)(cach + 0x1A) = *(s16 *)(cur + 0x1A); - *(s16 *)(flag + 0x1A) = 1; - } else { - if (*(s16 *)(flag + 0x1A) == 0) goto L63C; - *(s16 *)(flag + 0x1A) = 0; - } - { - u16 f = *(u16 *)(cach + 0x1A); - s32 e = *(s32 *)(((param_1 << 16) >> 14) + st + 0x18); - s32 i6, i4, sum; - /* L1: the store is written into BOTH arms so cross_jump merges the tail (see header). */ - if (f & 1) *(s16 *)(e + 0x32A) = 0x200; - else *(s16 *)(e + 0x32A) = *(u16 *)(st + 0x16) + 0x65; - { - s32 t = (((s16)f / 15) & 3) * 15; - i6 = func_801783D0(((s16)f / 15) * 0x10000 >> 0x12, 8); - i4 = func_801783D0((t * 0x10000) >> 16, 0); - } - /* L2: copy temp defeats expand_binop's commutative swap; cse folds it back (see header). */ - sum = i4; - i4 = i6 + sum; - ((void (*)(s32, s32))func_80177AD4)(*(s32 *)(((param_1 << 16) >> 14) + st + 0x18) + 800, - i4 * 0x10000 >> 0x10); - } -L63C: - - /* ---- block 6: field 0x4A (u8) ---- */ - if (*(u8 *)(cur + 0x4A) != *(u8 *)(cach + 0x4A)) { - *(u8 *)(cach + 0x4A) = *(u8 *)(cur + 0x4A) & 0x7F; - *(u8 *)(flag + 0x4A) = 1; - } else { - if (*(u8 *)(flag + 0x4A) == 0) return; - *(u8 *)(flag + 0x4A) = 0; - } - { - s32 s0b = ((param_1 << 16) >> 14) + st; - u8 *arg = D_8018D088[*(u8 *)(cach + 0x4A)]; - u32 *p = (u32 *)(*(s32 *)(s0b + 0x18) + 900); - func_80024054(arg, buf); - p = ((u32 * (*)(u32 *, u8 *, s32, s32))func_80178298)(p, buf, - (s16)(*(u16 *)(st + 0x14) + 0x39), - (s16)(*(u16 *)(st + 0x16) + 0x5B)); - func_8005A600((s32)p, 0, 0, 0x15, 0); - *p = ((u32)((u8 *)p - 0x14) & 0xffffff) | 0x2000000; - *(u32 **)(s0b + 0x20) = p; - } -} - - - -void func_80176734(s32 param_1) -{ - extern u8 D_8011F7A8; /* st base ($s3) */ - extern u8 D_80078E78[]; /* cur base ($s4) */ - extern s16 D_801152BA; - extern u8 D_8011F7B0; /* == *(u8 *)(st + 8), read absolutely (mixed addressing) */ - extern u8 D_80115214; - extern u8 D_8018D124[]; - extern u16 D_8018D076[]; - extern u16 D_8018D084; - extern u8 D_8018D118[]; - extern s32 D_8018D130[]; - extern u8 D_800D43D4; - extern u8 D_800D4414; - extern u8 D_800D45D4; - extern u8 D_800B9A13; - extern s16 D_80126CE0; - extern s16 D_80126D20; - extern s32 D_80126B58; - extern void func_800183E0(s32 a0); - extern s32 func_801619D0(void *a0); - extern s32 func_80161A00(s32 a0); - extern s32 func_80161A30(s32 a0); - extern s32 func_80161A60(s32 a0); - extern void func_801775E0(s32 param_1, s32 param_2); - - s32 st, cach, flag, cur; - register s32 chg __asm__("$21"); /* L7 */ - register s32 chg2 __asm__("$16"); /* L7 */ - s32 amp; /* $s0, disjoint from chg2 */ - register u16 tgt __asm__("$5"); /* L7 */ - s32 pv; /* L6: the param copy that owns $s6 */ - s32 ix; /* L6: block A's index, hoisted out of the block */ - u8 dum[8]; /* L5: dead frame slot (target .frame vars=8) */ - - st = (s32)&D_8011F7A8; - ix = ((param_1 << 16) >> 14) + st; - pv = param_1; - cach = st + 0x48; - flag = st + 0xE0; - cur = (s32)&(*(u8 *)D_80078E78); - - /* ---- block A: pulse byte ---- */ - { - register s32 p __asm__("$5"); /* L7 */ - u8 *q; - p = *(s32 *)(ix + 0x28); - q = (u8 *)(p + 0x3C); /* L2: must live in the entry BB */ - if (D_801152BA != 0) { - u8 b = D_8011F7B0; /* L1 */ - u8 v; - if (b < 0x80) v = b - 0x80; - else v = ~b - 0x80; - q[4] = v; - *(u8 *)(p + 4) = v; - *(u8 *)(st + 8) = *(u8 *)(st + 8) + D_80115214; - } else { - *(u8 *)(p + 0x40) = 0x80; - *(u8 *)(p + 4) = 0x80; - } - } - - /* ---- block B: 0x48 animation already running ---- */ - if (*(u8 *)(flag + 0x48) != 0) { - register s32 pp __asm__("$5"); /* L7 */ - pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - *(u8 *)(pp + 0xD) = D_8018D124[*(u8 *)(flag + 0x48)]; - if (*(u8 *)(flag + 0x48) < 4) { - *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } else { - u8 c = *(u8 *)(cach + 0x48); - s32 q = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - s32 arg; - if (c & 0x80) { - *(u16 *)(q + 0x20) = D_8018D084; - arg = (s32)&D_800D45D4; - } else if (c != 0) { - *(u16 *)(q + 0x20) = D_8018D076[c]; - arg = D_8018D130[*(u8 *)(cach + 0x48)]; - } else { - goto Lskip; - } - func_800183E0(arg); - Lskip: - if (*(u8 *)(flag + 0x48) == 5) { - if (*(u8 *)(cach + 0x48) == 0) *(u8 *)(flag + 0x48) = 0; - else *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } else if (*(u8 *)(flag + 0x48) == 10) { - *(u8 *)(flag + 0x48) = 0; - } else { - *(u8 *)(flag + 0x48) = *(u8 *)(flag + 0x48) + 1; - } - } - /* ---- block C: 0x48 changed -> start the animation ---- */ - } else if (*(u8 *)(cach + 0x48) != *(u8 *)(cur + 0x48)) { - register s32 pp __asm__("$5"); /* L7 */ - u8 k; /* L1: gives the `andi $v1,$v1,0xFF` index mask */ - if (*(u8 *)(cach + 0x48) == 0 && *(u8 *)(cur + 0x48) != 0) - *(u8 *)(flag + 0x48) = 5; - else - *(u8 *)(flag + 0x48) = 0; - *(u8 *)(cach + 0x48) = *(u8 *)(cur + 0x48); - pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - k = *(u8 *)(flag + 0x48); - *(u8 *)(flag + 0x48) = k + 1; - *(u8 *)(pp + 0xD) = D_8018D124[k]; - } - - /* ---- block D: field 0x2E (equality-first: the ne-arm must be out of line) ---- */ - if (*(s16 *)(cach + 0x2E) == *(s16 *)(cur + 0x2E)) { - if (*(s16 *)(flag + 0x2E) == 0) goto L9C0; - *(s16 *)(flag + 0x2E) = 0; - } else { - *(s16 *)(cach + 0x2E) = *(s16 *)(cur + 0x2E); - *(s16 *)(flag + 0x2E) = 1; - } - { - s32 pp = *(s32 *)(((pv << 16) >> 14) + st + 0x28); - s32 t = (s32)(*(u16 *)(cach + 0x2E) << 16); - if (t != 0) *(u8 *)(pp + 0x49) = D_8018D118[t >> 20]; - else *(u8 *)(pp + 0x49) = 0xA0; - } -L9C0: - - /* ---- block E: field 0x1E sign flip ---- */ - { - s32 fa = *(s16 *)(cach + 0x1E) & 0x8000; - s32 fb = *(s16 *)(cur + 0x1E) & 0x8000; - if (fa != fb) { - s32 arg; - if (fa != 0) { - *(s16 *)(cach + 0x1E) = 0; - arg = (s32)&D_800D43D4; - } else { - *(s16 *)(cach + 0x1E) = -0x8000; - arg = (s32)&D_800D4414; - } - func_800183E0(arg); - } - } - - /* ---- block F: mode byte -> chg ---- */ - { - u8 m = D_800B9A13; /* L1 */ - if (m != 3) { /* inverted: `chg = 0` belongs out of line */ - register s32 t __asm__("$2"); /* L3a: pin + 2 uses keeps `chg = t` alive */ - t = (*(u8 *)(st + 7) != m); - chg = t; - if (t != 0) *(u8 *)(st + 7) = m; - } else { - chg = 0; - } - } - - /* ---- block G: switch on cur[0x48] (cases 3/4/5 cross-jump onto one tail) ---- */ - amp = 0; - switch (*(u8 *)(cur + 0x48)) { - case 3: - if (func_801619D0(&D_80126B58) != 0) amp = 0xFF; - break; - case 4: - if (func_80161A00((s32)&D_80126B58) != 0) amp = 0xFF; - break; - case 5: - if (func_80161A30((s32)&D_80126B58) != 0) amp = 0xFF; - break; - case 6: - if (func_80161A60((s32)&D_80126B58) != 0) amp = 0xBA; - break; - } - - /* ---- block H: amp != 0 short-circuit ---- */ - { - s32 av; - av = amp; - __asm__("" : "=r"(av) : "0"(av)); /* L3b: keeps the `move $v0,$s0` at the merge */ - if (av != 0) { - *(u8 *)(flag + 0x47) = 1; - *(u8 *)(cach + 0x4B) = *(u8 *)(cur + 0x48) | 0xF0; - *(u8 *)(cach + 0x47) = ((s32)D_80126D20 << 7) / av; - goto Ltail; - } - } - - if (*(u8 *)(cach + 0x4B) >= 0xF0) *(u8 *)(cach + 0x4B) = 0; - - /* ---- block I: target level + change flag. The lhu is unconditional (target loads - both the signed and the unsigned view of D_80126CE0 up front). ---- */ - tgt = *(u16 *)&D_80126CE0; - if (D_80126CE0 != 0) { - u16 v; /* dies at the mask -> destructive `andi $v1,$v1` */ - register s32 t __asm__("$2"); - v = tgt; - *(u8 *)(cach + 0x4B) = v; - t = (*(u8 *)(cach + 0x47) != (v & 0xFF)); - __asm__("" : "=r"(t) : "0"(t)); /* L3b */ - chg2 = t; - } else { - u32 cv = *(u8 *)(cach + 0x47); /* L8: one load, two compares, no re-mask */ - tgt = *(u8 *)(cur + 0x47); - chg2 = 0; - if (cv != tgt || cv == 0x80) chg2 = 1; - if (*(u8 *)(cur + 0x47) != 0 && *(u8 *)(cach + 0x4B) != 0) { - *(u8 *)(cach + 0x4B) = 0; - *(u8 *)(cach + 0x47) = *(u8 *)(cur + 0x47); - } - } - - /* ---- block J: nothing-changed fast path. The target re-tests chg after the flag load; - the fence below is what stops cse from folding that second test away. ---- */ - { - register s32 c __asm__("$3"); - c = chg; - if (chg2 != 0) goto Lbig; - if (c != 0) goto Lbig; - if (*(u8 *)(flag + 0x47) == 0) goto Ltail; - __asm__("" : "=r"(c) : "0"(c)); /* L3b */ - if (c == 0) goto Lzero; - } -Lbig: - /* ---- block K: slew cach[0x47] toward tgt ---- */ - { - u32 c = *(u8 *)(cach + 0x47); - s32 sv = (s16)tgt; /* L8 */ - if ((s32)c < sv) { - *(u8 *)(cach + 0x47) = tgt; - } else { - if (sv != 0) *(u8 *)(cach + 0x47) = c - 3; /* L4: store in BOTH arms */ - else *(u8 *)(cach + 0x47) = c - 8; - c = *(u8 *)(cach + 0x47); /* stays a real lbu because of L4 */ - if (c == 0 || c > 0x80) { - *(u8 *)(cach + 0x47) = 0; - *(u8 *)(cach + 0x4B) = 0; - } else if ((s32)c < (s16)tgt) { /* fresh EBB -> the sll/sra is recomputed */ - *(u8 *)(cach + 0x47) = tgt; - } - } - *(u8 *)(flag + 0x47) = 1; - } - goto Ltail; -Lzero: - *(u8 *)(flag + 0x47) = 0; -Ltail: - - /* ---- block L: tail. m+5 / m+9 are separate temps: `lhu + (m+5)`, not `(lhu + m) + 5`. ---- */ - { - s32 b = ((pv << 16) >> 14) + st; - s32 m = (*(u8 *)(st + 7) != 0) << 8; - s32 m5 = m + 5; - s32 m9 = m + 9; - *(u16 *)(*(s32 *)(b + 0x28) + 0x32) = *(u16 *)(st + 0x12) + m5; - func_801775E0(*(s32 *)(b + 0x28) + 0x64, (s16)(*(u16 *)(st + 0x12) + m9)); - } -} - - -DEFINE_func_80176D00() /* dedup: shared engine-core @0x80176D00 (src/shared) */ - -DEFINE_func_80176D94() /* dedup: shared engine-core @0x80176D94 (src/shared) */ - -DEFINE_func_80176FF4() /* dedup: shared engine-core @0x80176FF4 (src/shared) */ - -DEFINE_func_801770E0() /* dedup: shared engine-core @0x801770E0 (src/shared) */ - -DEFINE_func_80177340() /* dedup: shared engine-core @0x80177340 (src/shared) */ - -DEFINE_func_8017742C() /* dedup: shared engine-core @0x8017742C (src/shared) */ - -DEFINE_func_801775E0() /* dedup: shared engine-core @0x801775E0 (src/shared) */ - - -DEFINE_func_801776EC() /* dedup: shared engine-core @0x801776EC (src/shared) */ - -DEFINE_func_80177784() /* dedup: shared engine-core @0x80177784 (src/shared) */ - -DEFINE_func_801777BC() /* dedup: shared engine-core @0x801777BC (src/shared) */ - - - -// @class: regalloc-order -// @stuck: none — MATCH -DEFINE_func_801778A8() /* dedup: shared engine-core @0x801778A8 (src/shared) */ - - -DEFINE_func_80177940() /* dedup: shared engine-core @0x80177940 (src/shared) */ - -DEFINE_func_80177AD4() /* dedup: shared engine-core @0x80177AD4 (src/shared) */ - - -/* func_80177B5C - MATCH (147/147 ins), wave23. - * - * Seed: .run/near6/func_80177B5C_ils.c (permuter-improved, closeness 7). - * Two residual clusters remained; both cracked, each by a sourced gcc-2.7.2 mechanism. - * - * CLUSTER C (idx 86-89) - the "cl | ((n*8+8) | 0x4000)" re-association. - * NOT a cse fold. It happens in the FRONT END: fold-const.c fold(), the `associate:` - * arm at :3685. For `A | (X | C)`, split_tree(arg1) (:3759, decomposer at :882) splits - * arg1 into var=X / con=C because TREE_CONSTANT(op1) holds, then rebuilds it as - * `(A | C) | X` at :3785. Verified in the FIRST RTL dump (t.i.rtl insn 215 already - * reads `(ior v1 16384)`), so no RTL-level lever (the cse if/else diamond, tie or - * volatile barriers, operand swap, shift-vs-multiply) can ever reach it. - * ANTIDOTE: hoist the inner IOR into its own statement. The outer arg1 is then a - * VAR_DECL, split_tree returns 0, and the associate arm is skipped. (This function - * already proved the shape at `tt = uv | 0x1000; p[3] = cl | tt;`, which matched.) - * - * That exposed a REGALLOC residual: the chain landed in $a3 (`sll a3,a3,3`) instead - * of $v0. Cause: `n` was pinned to a HARD reg, and local-alloc.c combine_regs():1798 - * unconditionally records a dying hard-reg SOURCE in qty_phys_sugg[] for the dest - * pseudo, so the shift dest inherited $a3. A *pseudo* source cannot do that - :1763 - * bails when reg_qty[ureg] < 0 (i.e. not block-local), and the target's `n` crosses - * the join, so it is exactly such a pseudo. - * ANTIDOTE: move the pin off `n` (which dies into the shift) onto `nn` (the tested - * value). `nn` pinned to $2 keeps the two distinct so the `addu $a3,$v0,$zero` copy - * survives (combine_regs :1841 refuses to tie when the DEST is non-block-local), - * while `n` stays a pseudo and the shift chain gets an ordinary local quantity -> - * $v0 - which also restores the target schedule, because the $v0 anti-dependence on - * `sw $v0,-0x4($a1)` is what stops sched2 hoisting the chain above the store. - * [7 -> 8 -> 3] - * - * CLUSTER B (idx 24-27) - `lui $t0,0x300` two slots early. - * Pure sched1 LUID tie-break, read straight off the -da trace (t.i.sched, T-36): - * ready = { 58 (7f000001), 72 (7f000001), ... } - insn 58 (lui $t0) IS birthing- - * boosted (sched.c birthing_insn_p:2469 works on hard regs too; reg_n_sets[$t0]==1), - * so 58/71/72 all tie at max_priority and rank_for_schedule:2427 falls through to - * DESCENDING LUID. Source order put `ca = 0x3000000;` before the mask, so - * LUID(58) < LUID(72) and the lui was placed first. - * (The companion mask 0xFFFFFF correctly stays at idx 6-7 because lui+ori is TWO - * sets of $t1 -> reg_n_sets==2 -> no boost -> it sinks to the block head. Same - * mechanism, opposite sign - the model predicts both.) - * ANTIDOTE: split the mask into its own statement (`gg`) and materialise the - * constant BETWEEN it and the OR, so expand emits addiu, and, lui, or in that order - * and LUID(58) > LUID(72). Sweeping the plain statement position of `ca = ...` was - * inert (all 11 slots scored 3) - only interposing the temp moves the LUID past the - * AND. [3 -> 0] - * - * Dead ends measured, not guessed: pin nv to $2 = 27; reuse tt = 24; reuse uv = 29; - * two-step |= = 15; unpin n = 84 (146 ins, the copy coalesces away); unpin ca = 139; - * ca as a bare literal = 139 (145 ins - cse merges it with the loop copy, so the hard - * pin is what keeps the pre-loop and in-loop constants separate); both literal = 143; - * `(ca = 0x3000000)` as an assignment-EXPRESSION = 114 (148 ins, extra move); reusing - * the existing `g` for the mask temp instead of a fresh one = 8 (g has a 2nd set later). - */ -u32 *func_80177B5C(p, bits, tbli, x, y) -u32 *p; -u32 bits; -s32 tbli; -s32 x; -s32 y; -{ - - extern u8 D_8018D14C[]; -register u32 bb __asm__("$14"); - u32 *q; -register u32 v __asm__("$25"); -register u32 cl __asm__("$3"); -register u32 cs __asm__("$5"); -register u32 ca __asm__("$8"); - s16 i; - u32 mk1; - u32 cc1; - u32 flag; -register u32 nn __asm__("$2"); - u32 n; -register u32 t __asm__("$13"); - u32 col; - u32 uv; - u32 tt; - u32 nv; - u32 x1; - u32 x2; - u32 w; - u32 g; - u32 gg; - u32 w3; -register u32 yr __asm__("$16"); -register u32 yt __asm__("$4"); -register u32 tr __asm__("$21"); -register u32 xr __asm__("$17"); -register u32 c3 __asm__("$18"); -register s32 ff __asm__("$19"); -register s32 two __asm__("$20"); - yt = y; - tr = tbli; -__asm__("" : "=r"(tr) : "0"(tr)); - xr = x; -__asm__("" : "=r"(xr) : "0"(xr)); - mk1 = 0xFFFFFF; - cc1 = 0x74808080; - bb = bits; - t = x + 0xE; - flag = 0x1000000; - i = 0; - two = 2; - ff = 255; - ; - v = D_8018D14C[(s16) tbli]; - gg = ((u32) (p - 5)) & mk1; - ca = 0x3000000; - p[0] = gg | ca; - x1 = (x - 3) & 0xFFFF; - x2 = (x + 5) & 0xFFFF; - p[1] = cc1; - yr = yt; -__asm__("" : "=r"(yr) : "0"(yr)); - yt = (s16) yt; - cs = (yt + 1) << 16; - w = cs | x1; -__asm__("" : "=r"(w) : "0"(w)); - cl = ((v << 6) | 0x4016) << 16; - p[2] = w; - p[3] = cl | 0x1800; - p += 5; - p[0] = (((u32) (p - 5)) & mk1) | ca; - p[1] = cc1; - p[2] = cs | x2; - p[3] = cl | 0x1808; - p += 5; - q = p; - yt = yt << 16; - { - for (; i < 3; i++) - { - nn = ((bb << 16) >> 18) >> 10; - n = nn; - if (((nn != 0) || (i == two)) || (i == ff)) - { - flag = 0; - } - q[0] = (((u32) (q - 5)) & 0xFFFFFF) | 0x3000000; - q[2] = (yt | (t & 0xFFFF)) | flag; - col = 0x74808080; - q[1] = col; - nv = ((n * 8) + 8) | 0x4000; - q[3] = cl | nv; - q += 5; - t += 8; - bb <<= 4; - } - - } - p = q; -__asm__("" : "=r"(v) : "0"(v)); - g = (((u32) (p - 5)) & 0xFFFFFF) | 0x3000000; -__asm__ __volatile__(""); - cs = yr << 16; - p[0] = g; - w3 = cs | ((xr + 0x2A) & 0xFFFF); -__asm__ __volatile__(""); - cl = ((v << 6) | 0x4016) << 16; - uv = ((s16) tr) << 4; - p[2] = w3; - tt = uv | 0x1000; - p[1] = col; - p[3] = cl | tt; - p += 5; - p[0] = (((u32) (p - 5)) & 0xFFFFFF) | 0x3000000; -__asm__ __volatile__(""); - cs = cs | ((xr + 0x32) & 0xFFFF); - uv = uv | 0x1008; - cl = cl | uv; - p[1] = col; - p[2] = cs; - p[3] = cl; - p += 5; -__asm__("" :: "r"(tr), "r"(xr)); - return p; -} - - - - -void func_80177DA8(p, v, idx) -u8 *p; -u32 v; -s16 idx; -{ - - extern u8 D_8018D14C[]; - u8 *r; - u16 c; - u16 flag; - u32 n; - u8 m; - s16 i; - u8 t; - u32 x; - u32 uv; - u32 w1; - u32 w2; - - flag = 0x100; - i = 0; - t = D_8018D14C[idx]; - c = (t << 6) | 0x4016; - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - r = p; - do { - n = (v << 16) >> 28; - m = n; - if (n != 0 || i == 2 || i == 0xFF) { - flag = 0; - } - v <<= 4; - i++; - *(s16 *)(r + 0xA) = flag | (*(s16 *)(r + 0xA) & ~0x100); - *(u8 *)(r + 0xC) = m * 8 + 8; - r += 0x14; - } while (i < 3); - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - *(u16 *)(p + 0xE) = c; - p += 0x14; - x = ((t << 6) | 0x4016) << 16; - uv = idx << 4; - w1 = uv | 0x1000; - *(u32 *)(p + 0xC) = x | w1; - w2 = uv | 0x1008; - *(u32 *)(p + 0x20) = x | w2; -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - -DEFINE_func_80177EA4() /* dedup: shared engine-core @0x80177EA4 (src/shared) */ - - -DEFINE_func_80177F84() /* dedup: shared engine-core @0x80177F84 (src/shared) */ - - - -DEFINE_func_80178004() /* dedup: shared engine-core @0x80178004 (src/shared) */ - - -DEFINE_func_80178298() /* dedup: shared engine-core @0x80178298 (src/shared) */ - -DEFINE_func_801783D0() /* dedup: shared engine-core @0x801783D0 (src/shared) */ - -extern M2C_UNK D_801D2B3C; - -void func_80178438(u16 *arg0) { - func_8001534C(2, &D_801D2B3C, 0x80, 0x88, 0, 0); - func_800153CC(3, *arg0, 0xA8, 0x88, 0x40, 0); -} - - -DEFINE_func_8017849C() /* dedup: shared engine-core @0x8017849C (src/shared) */ - -DEFINE_func_80178608() /* dedup: shared engine-core @0x80178608 (src/shared) */ - -DEFINE_func_8017869C() /* dedup: shared engine-core @0x8017869C (src/shared) */ - -DEFINE_func_80178744() /* dedup: shared engine-core @0x80178744 (src/shared) */ - -DEFINE_func_801787D4() /* dedup: shared engine-core @0x801787D4 (src/shared) */ - - -// @class: regalloc-order -// @stuck: sll $v0,$s1,2 must be recomputed AFTER the call (target nops the delay slot) - -extern void func_80019064(void *a0); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); - - -void func_80178840(int param_1) { - - extern int D_8018D1AC; - extern int D_8018D1B8[]; - register int p __asm__("$16"); - register int s1byte __asm__("$17"); - p = param_1; - if ((*(unsigned short *)(p + 0x5c) & 1) != 0) { - s1byte = *(unsigned char *)(p + 0x5e); - if (s1byte == 0xc) { - ((void (*)(int))func_80019064)((int)&D_8018D1AC); - } - ((void (*)(int, int))func_80131E00)(p, D_8018D1B8[s1byte]); - } -} - - -DEFINE_func_801788B8() /* dedup: shared engine-core @0x801788B8 (src/shared) */ - - -// @class: regalloc-order -// @stuck: none — MATCH (result pinned to $v0 forces call-result copy to $v1 + delay-slot zero) - -extern s32 func_801789AC(s32 arg0); -extern s16 D_801D47D8; - -int func_80178970(void) -{ - register int r __asm__("$2"); - int v; - - v = ((s32 (*)(void))func_801789AC)(); - r = 0; - if (v != 0) - r = D_801D47D8 == 0; - return r; -} diff --git a/src/ov_SC03_119/ov_SC03_119_jr_801789AC.c b/src/ov_SC03_119/ov_SC03_119_jr_801789AC.c deleted file mode 100644 index 5e6f7ef66..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_801789AC.c +++ /dev/null @@ -1,2774 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 struct Packed8 D_80126C98; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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 S801563EC *func_801563EC(u16 idx); -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 S801563EC * func_801563EC(u16 idx); -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 B8 D_80128120[]; -extern B8 D_80128138[]; -extern S8 D_80126AF0[]; -extern u8 D_80126730[]; -extern void func_80156848(s32 param_1, s32 param_2); -extern unsigned char D_8011520C[]; -extern unsigned short D_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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 Blk20 D_800AE620; -extern s32 RotMatrixX(s32 a0, void *a1); -extern void func_80168664(void *arg0); -extern void (*D_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018CBFC[])(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(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_8018CED8[])(void); -extern void func_801714E4(void *a0); -extern struct B16 D_800A5E88; -extern struct B16 D_800A5E98; -extern struct B16 D_800A5EA8; -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_8018CF1C[])(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_8018CEE0; -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 struct S80126B38 D_80126B38; -extern s16 D_80126B3E; -extern void func_80173460(s32 a0, s32 a1); -extern void func_801734BC(s32 arg0, s32 _unused1); -extern void (*D_8018CF4C[])(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_8018CF88[])(void); -extern void func_80173B4C(void *a0); -extern void func_80173BC0(u8 *a0); -extern void func_80173B88(u8 *a0); -extern s16 D_80126B3A; -extern s16 D_8011F9C8; -extern s32 func_800D0EC4(void); -extern void func_8013E588(void*); -extern void func_80173BC0(u8* a0); -extern void func_80173C64(u8 *a0); -extern u8 D_800D5DB8; -extern void func_80173CB4(s32 a0); -extern void func_80173E1C(s32 a0); -extern s16 D_80126938; -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 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 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_80174684(void* a0); -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 s32 func_80012ABC(s32, s32, s32); -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_8018CFE0[])(); -extern void func_80174BF4(void * arg0); -extern s32 func_80174CB0(); -extern s32 func_80174C60(s32 a0); -extern void func_80174C80(s32 a0); -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern s32 func_80174CB0(s32 param_1, s32 param_2); -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_8018CFF0[])(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_8018CFF8[])(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_8011F7AE; -extern u16 D_8011F7B4; -extern u16 D_8011F7B6; -extern s16 D_8011F7B8; -extern s16 D_8011F7BA; -extern s16 D_8011F7BC; -extern s16 D_8011F7BE; -extern s16 D_800B9A02; -extern void func_80016714(void *, s32); -extern void func_801757A0(s32); -extern void func_800596F4(s32); -extern void func_80175308(void); -extern u8 D_8011F7AD; -extern void func_80175414(s32 _arg0); -extern void func_80175494(void); -extern void (*D_8018D160[])(); -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 void func_80175624(void *a0); -extern void func_801757E0(int); -extern void func_80175668(void); -extern void (*D_8018D16C[])(); -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 u8 D_80078E78[]; /* cur base ($s5) */ -extern void func_80176FF4(s32); -extern void func_80177340(s32); -extern u32 func_801783D0(s32, s32); -extern void func_80177F84(s32, s32); -extern void func_80177DA8(u8 * p, u32 v, s32 idx); -extern void func_80177AD4(int, unsigned int); -extern s32 func_80024054(u8 *, u8 *); -extern u32 *func_80178298(u32*, u8*, short, short); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_80176218(s32 param_1); -extern s32 func_80178004(s32 a0, s32 a1, s32 a2); -extern u8 D_8011F7B1; -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(); -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 u8 D_8011F83B; -extern void func_801776EC(u8 *a0); -extern void func_801775E0(s32 param_1, s32 param_2); -extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); -extern void * func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80177940(u32 *p, u32 a_, u32 b_, u32 c_); -extern void func_80177AD4(int param_1, unsigned int param_2); -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_801D2B3C; -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 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_801D47D8; -extern int func_80178970(void); -/* ==== end §8b carried decl layer ==== */ - - - -extern void func_8017BC38(int a0); -extern void func_8017A4AC(void); -extern void func_8017AE2C(s32 a0); -extern s32 func_801399F0(s32 a0); -extern void func_80178CBC(s32 a0, s32 a1); - -extern short D_801D484C; -extern s32 D_801D4188; -extern s32 D_801D46F4; -extern s32 D_801D3D74; -extern s32 D_801D41B4; -extern s32 D_801D3D70; - -s32 func_801789AC(s32 arg0) -{ - s32 ret; - - func_8017BC38(arg0); - func_8017A4AC(); - func_8017AE2C(arg0); - - switch ((s16)(D_801D484C - 1)) { - case 0: - ret = func_801399F0(D_801D4188); - D_801D46F4 = ret; - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801D3D70); - break; - case 1: - ret = func_801399F0(D_801D4188); - D_801D46F4 = ret; - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801D3D70); - break; - case 2: - func_80178CBC(arg0, D_801D3D70); - break; - case 3: - if (--D_801D3D74 > 0) { - break; - } - func_80178CBC(arg0, D_801D3D70); - break; - case 4: - ret = ((s32 (*)(s32))D_801D41B4)(arg0); - if (ret == 0) { - break; - } - func_80178CBC(arg0, D_801D3D70); - break; - case 5: - switch (D_801D46F4) { - case -1: - case 1: - return 1; - case 2: - return 2; - case 3: - return 3; - } - break; - } - return 0; -} - -// @class: struct -// @stuck: none — MATCH (pointer var forces &(*(int *)&D_8018D2A4) into $s0, reused for store + arg-0xC) - - - -s32 func_80178B18(s32 param_1, s32 param_2) -{ - extern void func_80178BF8(void); - extern void func_80178CBC(s32 arg0, s32 arg1); - extern u16 D_8018D2A4; - - int *p = &(*(int *)&D_8018D2A4); - *p = ((int)param_2); - func_80178BF8(); - func_801746A4(); - func_8017435C(); - ((void (*)(int, void *))func_80178CBC)(((int)param_1), (char *)p - 0xC); -} - - - -// @class: regalloc-order -// @stuck: none — MATCH (pending verify) - -s32 func_80178B70(s32 param_1, s32 param_2) -{ - extern void func_80178BF8(); - extern void func_80178CBC(); - extern int D_8018D2A4; - - int *p = &D_8018D2A4; - *p = ((int)param_2); - func_80178BF8(); - func_80178CBC(((int)param_1), p - 3); -} - - - -DEFINE_func_80178BB8() /* dedup: shared engine-core @0x80178BB8 (src/shared) */ - -// @class: other -// @stuck: none — MATCH (49 ins). Key: init loop pointers via &D_SYMBOL (not (T*)0x801da788 raw int, which emits lui+ori instead of lui%hi+addiu%lo). - - - -s32 func_80178BF8() -{ - extern void func_8017B1D8(void); - extern short D_801D484C; - extern int D_801D4188; - extern short D_801D4198; - extern short D_801D4194; - extern short D_801D4190; - extern short D_801D418C; - extern int D_801D46F4; - extern int D_801D41A0; - extern s16 D_801D4180; - extern short D_801D4178; - extern short D_801D417C; - extern int D_801D47A8; - extern unsigned int D_801D41F0; - extern unsigned short D_801D4176; - - unsigned short *puVar1; - int iVar2; - unsigned int *puVar3; - - iVar2 = 9; - puVar3 = &D_801D41F0; - D_801D484C = 0; - D_801D4188 = 0; - D_801D4198 = 0; - D_801D4194 = 0; - D_801D4190 = 0; - D_801D418C = 0; - D_801D46F4 = 1; - D_801D41A0 = 0; - (*(short *)&D_801D4180) = 0; - do { - *puVar3 = 0; - iVar2 = iVar2 + -1; - puVar3 = puVar3 + -1; - } while (-1 < iVar2); - iVar2 = 0x1ff; - puVar1 = &D_801D4176; - do { - *puVar1 = 0; - iVar2 = iVar2 + -1; - puVar1 = puVar1 + -1; - } while (-1 < iVar2); - D_801D4178 = 0; - D_801D417C = 0; - ((void (*)(int *, int))func_80016714)(&D_801D47A8, 0x14); - func_8017B1D8(); -} - - - -extern s32 D_801D3D70; -extern short D_801D484C; - -void func_80178CBC(s32 arg0, s32 arg1) { - D_801D3D70 = arg1; - do { - func_80178D40(arg0, D_801D3D70); - } while (D_801D484C == 3); -} - - - -extern short D_801D484C; -extern void func_80174714(void); - -void func_80178D18(void) { - D_801D484C = 0; - func_80174714(); -} - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80178D40.c b/src/ov_SC03_119/ov_SC03_119_jr_80178D40.c deleted file mode 100644 index 09b589da7..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_80178D40.c +++ /dev/null @@ -1,3524 +0,0 @@ -#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 *); -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018CBFC[])(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(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_8018CED8[])(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_8018CF1C[])(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_8018CEE0; -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_8018CF4C[])(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_8018CF88[])(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_8018CFE0[])(); -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_8018CFF0[])(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_8018CFF8[])(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_8018D160[])(); -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_8018D16C[])(); -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_801D2B3C; -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_801D47D8; -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_801D3D70; -extern short D_801D484C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -/* ==== end §8b carried decl layer ==== */ - - -/* func_80178D40 - 890 ins, 94-case jr switch (jtbl_801D8E24). - * STATUS: **MATCH** -- 890/890 ins, byte-exact (masked). PIN-FREE (this body is - * templated across 134 overlays; a pinned body would crash the sibling TUs). - * python3 tools/match_one.py func_80178D40 --c .run/phase26-cracks/func_80178D40.c \ - * --asm-subdir asm/ov_SC01_077/nonmatchings/ov_SC01_077_jr_801734BC - * => MATCH (890 ins) - * Jump table VERIFIED: 94 entries (= the sltiu 0x5E bound, no trailing zero pad), - * 93 unique blocks, cases 0xF/0x3F share one block; my case->block sequence is - * identical to jtbl_801D8E24's. - * - * Byte-derived structure (the levers that cracked it): - * 1. NO status variable. Every case stores `(*(s16*)&D_801D484C) = K` DIRECTLY. The shared - * `sh $v0, (*(s16*)&D_801D484C)` at .L80179AEC is a jump2 CROSS-JUMP merge of those stores: - * find_cross_jump's FIRST call (minimum=1, vs the code before the target label) - * matches that 1 insn, and because it succeeds the jump_chain loop (minimum=2) is - * SKIPPED -- which is what BLOCKS the deeper, wrong 3-insn merges of the identical - * func_80137614 tails (cases 0/0x45/0x32). reorg then steals the `li K` back into - * each `j` delay slot, so it looks un-merged. A `status` pseudo instead of direct - * stores loses that block and costs 6 insns. - * 2. after-switch = `D_801D3D70 += 8;` (.L80179AF4) -> the out-of-range default lands - * there with NO explicit `default:` label. - * 3. arg0/arg1/pv are STRUCT pointers. gcc-2.7.2 sched alias (sched.c true_dependence) - * only lets a MEM_IN_STRUCT varying-address load hoist above a non-MEM_IN_STRUCT - * fixed-address store (the (*(s16*)&D_801D484C) store). Raw `*(T *)(int + off)` casts get - * MEM_IN_STRUCT_P = 0 and block that hoist -> stray nops. - * 4. g = &D_801D47A8 stays a plain `s16 *` (NOT a struct ptr) so its varying, - * non-in-struct stores keep their order w.r.t. the loads. - * 5. Statement order inside the D_801D47A8 cases is load-bearing (sched LUID/priority): - * g[0],g[2],g[1] in 0x25/0x48/0x26; g[7],g[8],g[1],g[3] in 0x4F/0x28. - * 6. Cases 0x5B/0x5C: the loops "found" bodies are emitted BEFORE the case label -> - * source-level labels placed between cases + `goto`. - * 7. Per-case temporaries are BLOCK-LOCAL (local-alloc), not function-scope. - * 8. stack locals declared in slot order (0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48, - * 0x50,0x58,0x60) -> frame 0x78. - * - * Case 0x5C -- the last 39 residuals. Four levers, all generalizable: - * - * 9. NO-PEEL: a `break` out of a do-while whose target COINCIDES with the loop's own - * natural fall-through exit makes NOTE_INSN_LOOP_BEG be followed by an - * unconditional jump -> jump.c `duplicate_loop_exit_test` (jump.c:599/2131) rotates - * the loop and peels iteration 1 (here `i` was provably 0, so the peeled `i++` - * const-folded to `li $a2,1` and dragged an extra lui/addiu/lw address block with - * it). Writing `goto L5D;` instead of `break;` -- SAME destination, different - * construct -- keeps the loop a plain do-while and the peel disappears. - * RULE: never let a loop's `break` land on the loop's own fall-through label. - * - * 10. SURVIVING REG-REG COPY (residual #1, `addu $v1,$v0,$zero`). A source-level - * `fp = q;` copy ALWAYS dies: cse.c `canon_reg` rewrites every later use of `fp` - * to `q` (qty_first_reg keeps the older reg) and flow deletes the now-dead set. - * To make a copy SURVIVE, its def and its uses must sit in different extended basic - * blocks -- cse resets its hash table at a label with >1 predecessor (a loop top). - * So: TEST THE MEM DIRECTLY, then assign the variable inside the branch body: - * if (arg1->a.w != 0) { fp5c = arg1->a.w; ... do { ... fp5c ... } while (); } - * cse folds the redundant 2nd load into `fp5c = ` (a copy) in the guard - * block, but CANNOT propagate it into the loop body -> the copy is emitted. - * (Assigning `fp5c` BEFORE the test gives one pseudo and no copy -- what we had.) - * - * 11. CROSS-JUMP-MERGED `(*(s16*)&D_801D484C) = 3` (residual #2). `if (i != 10) { (*(s16*)&D_801D484C) = 3; - * break; }` lets jump2 tail-merge the `lui/sh` into the shared .L80179AEC tail and - * reorg steal the `li 3` into the `bne` delay slot. Storing it unconditionally - * BEFORE the `if` blocks the merge and costs 3 inline insns. - * - * 12. THE UN-COALESCED LOOP COPY (residual #3, `addu $v1,$a0,$zero` + `addiu $a0,$v1,4`). - * This is loop.c's NON-REPLACEABLE DEST_REG GIV, not a source-level copy (see #10: - * those always die). Recipe -- BOTH halves are needed: - * a) make the pointer an INDEX GIV: `p5c = &D_801D41CC[i5c];` (a DEST_REG giv) - * b) make it NON-replaceable so loop.c emits `emit_insn_after(move dest,new_reg)` - * (loop.c:3945): record_giv (loop.c:4437) needs the giv used OUTSIDE the loop - * -- so the "found" body goes AFTER the loop and stores through `p5c`. - * c) put the BIV increment (`i5c++`) LAST in the body. loop.c inserts the reduced - * giv's `addiu` immediately BEFORE the biv's increment insn, so `i5c++` at the - * bottom puts `addiu $a0,$v1,4` in the loop-back delay slot. With `i5c++` at - * the TOP the giv-add lands at the top, nothing is left to fill the delay slot, - * and reorg STEALS the loop-top `move` into it (duplicating it: +1 insn). - * - * 13. Loop3 needs its OWN pointer pseudo (`r5c`, not `q5c`). `q5c` is loop1's pointer, - * and in loop1 $v1 is held by `fp5c` -> q5c is forced to $a0, and loop3 inherits it. - * Both "found" bodies then read $a0, become identical, and jump2 CROSS-JUMPS them - * into one block (-2 insns). A distinct pseudo frees loop3 into $v1, so found3 - * (`sw $zero,0($v1)`) differs from found2 (`sw $zero,0($a0)`) and they stay separate. - * RULE: two structurally identical loops must differ in REGISTER, or cross_jump - * merges their tails. - */ - - - - - - -s32 func_80178D40(s32 arg0, s32 arg1) -{ - extern void func_80179B28(s32); - extern s32 func_80137614(s32, s32, s32); - extern void func_8012F214(void *, void *, void *); - extern void func_8012F40C(void *, void *); - extern void func_80179D30(void *); - extern void func_80179D78(void *); - extern void func_80179EA0(void *); - extern void func_80179DCC(s32); - extern void func_80179DF8(void); - extern void func_80179E1C(s32); - extern void func_80179E48(s32); - extern void func_80179E74(s32); - extern void func_80179EE8(s32); - extern void func_80179F14(s32, s32); - extern void func_80179F44(void); - extern void func_80179F6C(s32); - extern void func_80179F98(s32); - extern void func_80179FEC(s32); - extern void func_8017A040(s32); - extern void func_8017A094(s32); - extern void func_8017A0C4(s32); - extern void func_8017A0F4(void); - extern void func_8017A11C(void); - extern void func_8017A144(s32); - 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 void func_8017A3B0(void); - extern void func_8017A3D8(void); - extern void func_8017AD0C(s32); - extern void func_8017B238(void *, s32); - extern void func_8017B614(void *, s32); - extern void func_8017B7A8(void *); - extern void func_8017B824(void); - extern void func_8017B880(void); - extern void func_8017B940(void *); - extern void func_8017BA3C(void *, s32); - extern void func_8017BB34(void *, s32); - extern void func_8012A828(void *, s32); - extern s32 func_8012B8A4(void *); - extern void func_8012E88C(void *); - extern void func_8012E8A8(void *); - extern void func_8001AAD0(s32, s32); - extern s32 D_801D3D74; - extern s32 D_801D4188; - extern s16 D_801D418C; - extern s16 D_801D4190; - extern s16 D_801D4194; - extern s16 D_801D4198; - extern s32 D_801D41A0; - extern s32 D_801D41A4; - extern s32 D_801D41B4; - extern s16 D_801D41B8; - extern s16 D_801D41BC; - extern s32 D_801D41C0; - extern s32 D_801D41C8; - extern s32 D_801D41CC[10]; - extern s32 D_801D46F0; - extern s16 D_801D47A8; - extern s32 D_801D47D4; - - - SV3_80178D40 v10, v18, v20, v28, v30, v38, v40, v48; - s32 out50[2]; - SV3_80178D40 v58, v60; - Actor_80178D40 *pv = &(*(Actor_80178D40*)&D_80126B58); - s32 i5b, i5c, fp5b, fp5c; - s32 *q5b, *q5c, *p5c, *r5c; - s16 *g = &D_801D47A8; - - switch (((Cmd_80178D40 *)arg1)->op) { - case 1: - func_80179B28(D_801D4188); - D_801D4188 = func_80137614(((Cmd_80178D40 *)arg1)->a.w, D_801D4194, D_801D4198 ? 0x48 : 0x40); - (*(s16*)&D_801D484C) = 2; - break; - case 0: - func_80179B28(D_801D4188); - D_801D4188 = func_80137614(((Cmd_80178D40 *)arg1)->a.w, D_801D418C, D_801D4190 ? 0x48 : 0x40); - (*(s16*)&D_801D484C) = 1; - break; - case 0x45: - ((void (*)(s32))((Cmd_80178D40 *)arg1)->a.w)(((Actor_80178D40 *)arg0)); - if (D_801D46F0 != 0) { - func_80179B28(D_801D4188); - D_801D4188 = func_80137614(((Actor_80178D40 *)arg0)->unkDC[1], D_801D418C, D_801D4190 ? 0x48 : 0x40); - (*(s16*)&D_801D484C) = 1; - } else { - (*(s16*)&D_801D484C) = 3; - } - break; - case 0x32: - func_80179B28(D_801D4188); - D_801D4188 = func_80137614(((Actor_80178D40 *)arg0)->unkDC[((Cmd_80178D40 *)arg1)->a.w], D_801D418C, - D_801D4190 ? 0x48 : 0x40); - (*(s16*)&D_801D484C) = 1; - break; - case 2: - func_80179B28(D_801D4188); - if (D_801D41A0 != 0) { - D_801D3D70 = D_801D41A0; - D_801D41A0 = 0; - (*(s16*)&D_801D484C) = 3; - return; - } - (*(s16*)&D_801D484C) = 6; - break; - case 6: - func_80179DF8(); - (*(s16*)&D_801D484C) = 3; - break; - case 3: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_80179D30(&v10); - (*(s16*)&D_801D484C) = 3; - break; - case 4: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v10, &v18); - func_80179D30(&v18); - (*(s16*)&D_801D484C) = 3; - break; - case 0x4C: - func_80179D78((void *)((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x4D: - v10.vx = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f0; - v10.vy = 0; - v10.vz = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f4; - func_8012F214(((Actor_80178D40 *)arg0), &v10, &v18); - v18.pad = ((Blk_80178D40 *)((Cmd_80178D40 *)arg1)->a.p)->f6; - func_80179D78(&v18); - (*(s16*)&D_801D484C) = 3; - break; - case 0x15: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0)->unkD4, &v10, &v18); - func_80179D30(&v18); - (*(s16*)&D_801D484C) = 3; - break; - case 5: - func_80179DCC(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801D484C) = 3; - break; - case 7: - func_80179E1C(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801D484C) = 3; - break; - case 8: - func_80179E74(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801D484C) = 3; - break; - case 9: - v10.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v10.vy = 0; - v10.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_80179EA0(&v10); - (*(s16*)&D_801D484C) = 3; - break; - case 0xA: - v10.vx = ((Actor_80178D40 *)arg0)->unk6; - v10.vy = ((Actor_80178D40 *)arg0)->unkA; - v10.vz = ((Actor_80178D40 *)arg0)->unkE; - func_80179EA0(&v10); - (*(s16*)&D_801D484C) = 3; - break; - case 0x16: { - Actor_80178D40 *p = ((Actor_80178D40 *)arg0)->unkD4; - v10.vx = p->unk6; - v10.vy = p->unkA; - v10.vz = p->unkE; - func_80179EA0(&v10); - (*(s16*)&D_801D484C) = 3; - break; - } - case 0xB: - func_8017A0F4(); - (*(s16*)&D_801D484C) = 3; - break; - case 0xC: - func_8017A11C(); - (*(s16*)&D_801D484C) = 3; - break; - case 0xD: - func_8017A180(); - (*(s16*)&D_801D484C) = 3; - break; - case 0xE: - func_8017A1A8(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x10: - func_8017A1D0(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x46: - func_8017A1F8(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x59: - func_8017A220(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x5A: - func_8017A248(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x49: - func_8017A144(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x47: - func_8017A270(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x17: - func_80179EE8(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801D484C) = 3; - break; - case 0x18: - func_80179F14(((Cmd_80178D40 *)arg1)->a.h[0], ((Cmd_80178D40 *)arg1)->a.h[1]); - (*(s16*)&D_801D484C) = 3; - break; - case 0x19: - func_80179F6C(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801D484C) = 3; - break; - case 0x1A: - func_80179F98(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x51: - func_8017A040(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x1B: - D_801D41C0 = ((Cmd_80178D40 *)arg1)->a.w; - func_80179F44(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x1C: - func_8017A338(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x52: - func_8017A360(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x1D: - func_8017A388(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x3B: - func_8017A094(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x3C: - func_8017A0C4(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0xF: - case 0x3F: - (*(s16*)&D_801D484C) = 4; - D_801D3D74 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x3E: - (*(s16*)&D_801D484C) = 5; - D_801D41B4 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x40: - D_801D41B4 = (s32)func_8017A3B0; - (*(s16*)&D_801D484C) = 5; - break; - case 0x23: - func_8012A828(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x31: - func_8012A828(((Actor_80178D40 *)arg0), ((Actor_80178D40 *)arg0)->unkDC[((Cmd_80178D40 *)arg1)->a.w]); - (*(s16*)&D_801D484C) = 3; - break; - case 0x24: - (*(s16*)&D_801D484C) = 3; - ((Actor_80178D40 *)arg0)->unk20->unk12 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x25: - g[0] = 1; - g[2] = ((Actor_80178D40 *)arg0)->unk20->unk12 + ((Cmd_80178D40 *)arg1)->a.uh[0]; - g[1] = 0x1E; - (*(s16*)&D_801D484C) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x48: - g[0] = 1; - g[2] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - g[1] = 0x1E; - (*(s16*)&D_801D484C) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x26: - g[0] = 1; - g[2] = func_8012B8A4(((Actor_80178D40 *)arg0)); - g[1] = 0x1E; - (*(s16*)&D_801D484C) = 3; - g[3] = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x3D: - ((void(*)(void *, s32))func_8012E8E0)(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x27: - g[0] = 2; - g[4] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801D484C) = 3; - g[1] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x4F: - g[5] = 1; - g[0] = 3; - g[6] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801D484C) = 3; - g[7] = ((Actor_80178D40 *)arg0)->unkA; - g[8] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - g[1] = 0x10; - g[3] = 4; - /* fallthrough */ - case 0x28: - g[5] = 0; - g[0] = 3; - g[6] = ((Cmd_80178D40 *)arg1)->a.uh[0]; - (*(s16*)&D_801D484C) = 3; - g[7] = ((Actor_80178D40 *)arg0)->unkA; - g[8] = ((Cmd_80178D40 *)arg1)->a.uh[1]; - g[1] = 0x10; - g[3] = 4; - break; - case 0x29: - v20.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v20.vy = ((Actor_80178D40 *)arg0)->unkA; - v20.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v20, &v28); - g[5] = 0; - g[0] = 3; - *(SV3_80178D40 *)(g + 6) = v28; - g[1] = 0x10; - g[3] = 4; - (*(s16*)&D_801D484C) = 3; - break; - case 0x50: - v30.vx = ((Cmd_80178D40 *)arg1)->a.uh[0]; - v30.vy = ((Actor_80178D40 *)arg0)->unkA; - v30.vz = ((Cmd_80178D40 *)arg1)->a.uh[1]; - func_8012F214(((Actor_80178D40 *)arg0), &v30, &v38); - g[5] = 1; - g[0] = 3; - *(SV3_80178D40 *)(g + 6) = v38; - g[1] = 0x10; - g[3] = 4; - (*(s16*)&D_801D484C) = 3; - break; - case 0x2A: - g[0] = 4; - (*(s16*)&D_801D484C) = 3; - g[1] = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x1E: - func_8017B238(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x21: - func_8017BA3C(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B238(((Actor_80178D40 *)arg0), (s32)&D_801D41A4); - (*(s16*)&D_801D484C) = 3; - break; - case 0x54: - func_8017BB34(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B238(((Actor_80178D40 *)arg0), (s32)&D_801D41A4); - (*(s16*)&D_801D484C) = 3; - break; - case 0x1F: - func_8017B614(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x22: - func_8017BA3C(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B614(((Actor_80178D40 *)arg0), (s32)&D_801D41A4); - (*(s16*)&D_801D484C) = 3; - break; - case 0x55: - func_8017BB34(((Actor_80178D40 *)arg0), ((Cmd_80178D40 *)arg1)->a.w); - func_8017B614(((Actor_80178D40 *)arg0), (s32)&D_801D41A4); - (*(s16*)&D_801D484C) = 3; - break; - case 0x20: - func_8017B7A8(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801D484C) = 3; - break; - case 0x4E: - D_801D41C8 = ((Cmd_80178D40 *)arg1)->a.w; - func_8017B940(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801D484C) = 3; - break; - case 0x57: - func_8017B824(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x58: - func_8017B880(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x2B: - (*(s16*)&D_801D484C) = 3; - ((Actor_80178D40 *)arg0)->unk2 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2C: - (*(s16*)&D_801D484C) = 3; - ((Actor_80178D40 *)arg0)->unk34 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2D: - (*(s16*)&D_801D484C) = 3; - ((Actor_80178D40 *)arg0)->unkD8 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2F: - (*(s16*)&D_801D484C) = 3; - ((Actor_80178D40 *)arg0)->unk10A = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x2E: - (*(s16*)&D_801D484C) = 3; - ((Actor_80178D40 *)arg0)->unkF8 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x11: - func_8017A298(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x12: - func_8017A2C0(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x13: - func_8017A2E8(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x14: - func_8017A310(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x33: { - void (*f)(Actor_80178D40 *) = (void (*)(Actor_80178D40 *))((Cmd_80178D40 *)arg1)->a.w; - D_801D47D4 = (s32)&((Cmd_80178D40 *)arg1)[1]; - f(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801D484C) = 3; - break; - } - case 0x30: - if (((Cmd_80178D40 *)arg1)->a.w == 0) { - func_8012E8A8(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801D484C) = 3; - } else { - func_8012E88C(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801D484C) = 3; - } - break; - case 0x4A: - ((void(*)())func_80175414)(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x4B: - func_80175454(); - (*(s16*)&D_801D484C) = 3; - break; - case 0x34: - (*(s16*)&D_801D484C) = 3; - D_801D3D70 = ((Cmd_80178D40 *)arg1)->a.w; - return; - case 0x35: - D_801D41A0 = (s32)&((Cmd_80178D40 *)arg1)[1]; - (*(s16*)&D_801D484C) = 3; - D_801D3D70 = ((Cmd_80178D40 *)arg1)->a.w; - return; - case 0x36: - (*(s16*)&D_801D484C) = 3; - D_801D3D70 += 8; - if (((s32 (*)(s32))((Cmd_80178D40 *)arg1)->a.w)(((Actor_80178D40 *)arg0)) == 0) { - break; - } - D_801D3D70 = *(s32 *)(D_801D3D70 + 4); - return; - case 0x37: - (*(s16*)&D_801D484C) = 3; - D_801D418C = ((Cmd_80178D40 *)arg1)->a.uh[0]; - D_801D4190 = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x38: - (*(s16*)&D_801D484C) = 3; - D_801D4194 = ((Cmd_80178D40 *)arg1)->a.uh[0]; - D_801D4198 = ((Cmd_80178D40 *)arg1)->a.uh[1]; - break; - case 0x39: { - s32 w1, w2; - v40.vx = ((Actor_80178D40 *)arg0)->unk6; - v40.vy = ((Actor_80178D40 *)arg0)->unkA; - v40.vz = ((Actor_80178D40 *)arg0)->unkE; - v48.vx = pv->unk6; - v48.vy = pv->unkA; - v48.vz = pv->unkE; - func_8012F40C(out50, &v40); - w1 = out50[0]; - func_8012F40C(out50, &v48); - w2 = out50[0]; - (*(s16*)&D_801D484C) = 3; - D_801D418C = w1; - D_801D4190 = (s16)w1 >= (s16)w2; - break; - } - case 0x3A: { - s32 w1, w2; - v58.vx = ((Actor_80178D40 *)arg0)->unk6; - v58.vy = ((Actor_80178D40 *)arg0)->unkA; - v58.vz = ((Actor_80178D40 *)arg0)->unkE; - v60.vx = pv->unk6; - v60.vy = pv->unkA; - v60.vz = pv->unkE; - func_8012F40C(out50, &v58); - w1 = out50[0]; - func_8012F40C(out50, &v60); - w2 = out50[0]; - (*(s16*)&D_801D484C) = 3; - D_801D4194 = w2; - D_801D4198 = (s16)w1 < (s16)w2; - break; - } - case 0x41: - ((void(*)(s32, s32))func_8002D4C8)(((Cmd_80178D40 *)arg1)->a.uh[0], ((Cmd_80178D40 *)arg1)->a.uh[1]); - (*(s16*)&D_801D484C) = 3; - break; - case 0x42: - func_8017AD0C(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - case 0x43: - D_801D41B4 = (s32)func_8017A3D8; - D_801D41BC = 0; - (*(s16*)&D_801D484C) = 5; - D_801D41B8 = ((Cmd_80178D40 *)arg1)->a.w; - break; - case 0x44: - func_8001AAD0(((Cmd_80178D40 *)arg1)->a.h[0], ((Cmd_80178D40 *)arg1)->a.h[1]); - (*(s16*)&D_801D484C) = 3; - break; - case 0x53: - func_80179E48(((Cmd_80178D40 *)arg1)->a.h[0]); - (*(s16*)&D_801D484C) = 3; - break; - case 0x56: - func_80179FEC(((Cmd_80178D40 *)arg1)->a.w); - (*(s16*)&D_801D484C) = 3; - break; - L5B_found: - fp5b = ((Cmd_80178D40 *)arg1)->a.w; - *q5b = fp5b; - ((void (*)(Actor_80178D40 *))fp5b)(((Actor_80178D40 *)arg0)); - (*(s16*)&D_801D484C) = 3; - break; - case 0x5B: - i5b = 0; - q5b = D_801D41CC; - do { - i5b++; - if (*q5b == 0) { - goto L5B_found; - } - q5b++; - } while (i5b < 10); - (*(s16*)&D_801D484C) = 3; - break; - L5C_found1: - *q5c = 0; - goto L5C_join; - case 0x5C: - i5c = 0; - if (((Cmd_80178D40 *)arg1)->a.w != 0) { - fp5c = ((Cmd_80178D40 *)arg1)->a.w; - q5c = D_801D41CC; - do { - if (*q5c == fp5c) { - goto L5C_found1; - } - i5c++; - q5c++; - } while (i5c < 10); - L5C_join: - if (i5c != 10) { - (*(s16*)&D_801D484C) = 3; - break; - } - i5c = 0; - do { - p5c = &D_801D41CC[i5c]; - if (*p5c != 0) { - goto L5C_found2; - } - i5c++; - } while (i5c < 10); - (*(s16*)&D_801D484C) = 3; - break; - L5C_found2: - *p5c = 0; - goto L5D; - } - r5c = D_801D41CC; - do { - i5c++; - if (*r5c != 0) { - *r5c = 0; - goto L5D; - } - r5c++; - } while (i5c < 10); - /* fallthrough */ - case 0x5D: - L5D: - (*(s16*)&D_801D484C) = 3; - break; - default: - break; - } -Lend: - D_801D3D70 += 8; -} - - -DEFINE_func_80179B28() /* dedup: shared engine-core @0x80179B28 (src/shared) */ - -extern short D_801DA710; -extern void func_8017A4AC(void); - -// @class: schedule -// @stuck: none — MATCH (111 ins). symcheck: data syms CLEAN (D_801D3D78/D_801D417C, 0 INVENTED); its lone MISSING is jtbl_801D8F9C, the COMPILER-emitted table ($L17 -> .rdata) — banking needs the §8a/§8e rodata-island flip (35 entries, .align 3), not a source-side ref. -/* func_80179B74 (ov_SC01_077) — command-queue WRITER: copies the opcode + its - * operand halfwords from *p into the 0x200-entry ring D_801D3D78 at write index - * D_801D417C. Mirror of the reader func_8017A4AC (same ring, read index D_801DA710). - * - * Three levers were needed on top of the obvious shape (each byte-proven here): - * 1. jtbl SPAN — the target's table is 35 entries (0..0x22) with NO `addiu a0,a0,-1` - * bias and `sltiu v0,a0,0x23`, so the source must contain an empty `case 0:` and - * an empty `case 0x22:`; without them gcc biases by -1 and emits sltiu 0x20. - * 2. SCHEDULE — the operand push must route through a NAMED block-scoped temp - * (`{ s16 t = *p++; ring[idx] = t; ... }`). Written as the anonymous - * `ring[idx] = *p++;` the sched1 pass puts the `lh D_801D417C` ahead of the - * `lhu 0(a1)` in exactly the two blocks that also carry a live `addiu a1,a1,2` - * (cases {1,5} and {0x17,0x1c,0x1d,0x20}) — 6 of the 8 residual mismatches. - * The temp gives the loaded value its own pseudo and flips those two blocks. - * 3. FRAME — the target reserves 0x80 with NO saves and NO spills; gcc's own - * (unused) area for this body is 0x58, so +0x28 of address-taken local is - * required: `s32 pad[10]; (void)&pad;` (cookbook §17 phantom-frame INDUCE - * lever). 10 words exactly; 8 -> 0x78 and 12 -> 0x88 both miss. - * - * Case-block ORDER in the source is the emitted block order: {1,5} then {0x13} - * then {2,3,4,6,0x12,0x14,0x1f} then {0x17,0x1c,0x1d,0x20}. The 3-/2-/1-push - * tails are then cross-jump merged (no calls, so §88 does not block it) into the - * shared .L80179CE4 / .L80179D08 tail that sits after the last case block. - * - * Symbols are the splat spellings and match the sibling TU ov_SC01_077_jr_8017A4AC.c - * (`extern u16 D_801D3D78[0x200];` / `extern s16 D_801D417C;`) so the whole-binary - * link and any one-big-TU build see one consistent type. - */ - -extern u16 D_801D3D78[0x200]; -extern s16 D_801D417C; - -void func_80179B74(u16 *p) { - s32 pad[10]; - s16 c; - - (void)&pad; - c = *p++; - D_801D3D78[D_801D417C] = c; - D_801D417C = (D_801D417C + 1) & 0x1FF; - switch (c) { - case 0: - break; - case 1: - case 5: - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - break; - case 0x13: - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - break; - case 2: - case 3: - case 4: - case 6: - case 0x12: - case 0x14: - case 0x1F: - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - break; - case 0x17: - case 0x1C: - case 0x1D: - case 0x20: - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - { s16 t = *p++; D_801D3D78[D_801D417C] = t; D_801D417C = (D_801D417C + 1) & 0x1FF; } - break; - case 0x22: - break; - } -} - -DEFINE_func_80179D30() /* dedup: shared engine-core @0x80179D30 (src/shared) */ - -DEFINE_func_80179D78() /* dedup: shared engine-core @0x80179D78 (src/shared) */ - -DEFINE_func_80179DCC() /* dedup: shared engine-core @0x80179DCC (src/shared) */ - -DEFINE_func_80179DF8() /* dedup: shared engine-core @0x80179DF8 (src/shared) */ - -DEFINE_func_80179E1C() /* dedup: shared engine-core @0x80179E1C (src/shared) */ - -DEFINE_func_80179E48() /* dedup: shared engine-core @0x80179E48 (src/shared) */ - -DEFINE_func_80179E74() /* dedup: shared engine-core @0x80179E74 (src/shared) */ - -DEFINE_func_80179EA0() /* dedup: shared engine-core @0x80179EA0 (src/shared) */ - -DEFINE_func_80179EE8() /* dedup: shared engine-core @0x80179EE8 (src/shared) */ - -DEFINE_func_80179F14() /* dedup: shared engine-core @0x80179F14 (src/shared) */ - -DEFINE_func_80179F44() /* dedup: shared engine-core @0x80179F44 (src/shared) */ - -DEFINE_func_80179F6C() /* dedup: shared engine-core @0x80179F6C (src/shared) */ - -DEFINE_func_80179F98() /* dedup: shared engine-core @0x80179F98 (src/shared) */ - -DEFINE_func_80179FEC() /* dedup: shared engine-core @0x80179FEC (src/shared) */ - -DEFINE_func_8017A040() /* dedup: shared engine-core @0x8017A040 (src/shared) */ - - -extern void func_80179B74(u16 *p); -extern s32 D_801D419C; - -void func_8017A094(s32 arg0) { - s16 sp10; - - D_801D419C = arg0; - sp10 = 0x15; - func_80179B74(&sp10); -} - - - -extern void func_80179B74(u16 *p); -extern s32 D_801D419C; - -void func_8017A0C4(s32 arg0) { - s16 sp10; - - D_801D419C = arg0; - sp10 = 0x16; - func_80179B74(&sp10); -} - - -DEFINE_func_8017A0F4() /* dedup: shared engine-core @0x8017A0F4 (src/shared) */ - -DEFINE_func_8017A11C() /* dedup: shared engine-core @0x8017A11C (src/shared) */ - - -extern s32 D_801D41C4; -extern void func_80179B74(u16 *p); - -void func_8017A144(s32 a0) { - s16 sp10; - sp10 = 0x1B; - func_80179B74(&sp10); - D_801D41C4 = a0; -} - - -DEFINE_func_8017A180() /* dedup: shared engine-core @0x8017A180 (src/shared) */ - -DEFINE_func_8017A1A8() /* dedup: shared engine-core @0x8017A1A8 (src/shared) */ - -DEFINE_func_8017A1D0() /* dedup: shared engine-core @0x8017A1D0 (src/shared) */ - -DEFINE_func_8017A1F8() /* dedup: shared engine-core @0x8017A1F8 (src/shared) */ - -DEFINE_func_8017A220() /* dedup: shared engine-core @0x8017A220 (src/shared) */ - -DEFINE_func_8017A248() /* dedup: shared engine-core @0x8017A248 (src/shared) */ - -DEFINE_func_8017A270() /* dedup: shared engine-core @0x8017A270 (src/shared) */ - -DEFINE_func_8017A298() /* dedup: shared engine-core @0x8017A298 (src/shared) */ - -DEFINE_func_8017A2C0() /* dedup: shared engine-core @0x8017A2C0 (src/shared) */ - -DEFINE_func_8017A2E8() /* dedup: shared engine-core @0x8017A2E8 (src/shared) */ - -DEFINE_func_8017A310() /* dedup: shared engine-core @0x8017A310 (src/shared) */ - -DEFINE_func_8017A338() /* dedup: shared engine-core @0x8017A338 (src/shared) */ - -DEFINE_func_8017A360() /* dedup: shared engine-core @0x8017A360 (src/shared) */ - -DEFINE_func_8017A388() /* dedup: shared engine-core @0x8017A388 (src/shared) */ - - -extern s16 D_801D4180; - -s32 func_8017A3B0(void) { - switch (D_801D4180) { - case 0: - return 1; - case 1: - return 0; - default: - return 1; - } -} - - - -// @class: regalloc-order -// @stuck: none — MATCH - - -extern int func_800D0CA0(int); -extern int func_8001AAA0(void); -extern int func_800D0CE0(void); - -int func_8017A3D8(void) -{ - - extern short D_801D41BC; - extern short D_801D41B8; - switch (D_801D41BC) { - case 0: - func_800D0CA0(1); - D_801D41BC = D_801D41BC + 1; - return 0; - case 100: - { - register int a __asm__("$4"); - a = D_801D41B8; - if (a != -1) { - return func_8001AAA0() != 0; - } - return func_800D0CE0() == 1; - } - default: - D_801D41BC = D_801D41BC + 1; - if (D_801D41BC < 0x1E) { - return 0; - } - D_801D41BC = 100; - return 0; - } -} - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8017A4AC.c b/src/ov_SC03_119/ov_SC03_119_jr_8017A4AC.c deleted file mode 100644 index 00f9a92b6..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8017A4AC.c +++ /dev/null @@ -1,2773 +0,0 @@ -#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 *); -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018CBFC[])(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(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_8018CED8[])(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_8018CF1C[])(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_8018CEE0; -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_8018CF4C[])(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_8018CF88[])(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_8018CFE0[])(); -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_8018CFF0[])(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_8018CFF8[])(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_8018D160[])(); -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_8018D16C[])(); -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_801D2B3C; -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_801D47D8; -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_801D3D70; -extern short D_801D484C; -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_801D419C; -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_801D41C4; -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_801D4180; -extern s32 func_8017A3B0(void); -/* ==== end §8b carried decl layer ==== */ - -// func_8017A4AC (ov_SC01_077) — 536-ins command/bytecode interpreter, 35-case jtbl switch. - - - extern u16 D_801D3D78[0x200]; - extern s16 D_801D4178; - extern s16 D_801D417C; - extern s32 D_801D41C0; - -extern s32 D_80126B58; -extern s16 D_801D4180; -extern s32 D_801D419C; -extern s32 D_801D41C4; - -extern void func_80172310(u8*); -extern void func_80172738(void); -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_80172E94(void); -extern void func_80172ED4(void); -extern void func_80172EFC(void); -extern void func_80172F24(void); -extern void func_80172F4C(void); -extern void func_80172F9C(void); -extern void func_80172FEC(void); -extern void func_80173174(void); -extern void func_8017329C(void); -extern void func_8017334C(void); -extern void func_801733A4(void); -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_8017427C(void); -extern void func_80174438(s32); -extern void func_8017452C(void); -extern void func_80174584(void); -extern void func_801745DC(void); -extern s32 func_80174754(void); - -void func_8017A4AC(void) { - u16 sp18[4]; - u16 sp20[4]; - u16 sp28[4]; - u16 sp30[4]; - struct S126B58 *w = &(*(struct S126B58 *)&D_80126B58); - s16 cmd; - - if (D_801D4178 == D_801D417C) { - if (func_80174754() != 0) { - D_801D4180 = 0; - } else { - D_801D4180 = 1; - } - return; - } - D_801D4180 = 1; - if (func_80174754() == 0) { - return; - } - cmd = D_801D3D78[D_801D4178]; - D_801D4178 = (D_801D4178 + 1) & 0x1FF; - switch (cmd) { - case 0: - func_80172738(); - return; - case 1: - sp18[0] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp18[1] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp18[2] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172780)(sp18); - return; - case 28: - sp18[0] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp18[1] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp18[2] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp18[3] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172894)(sp18); - return; - case 2: - { s16 arg = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - ((void (*)(s16))func_801729B0)(arg); - return; } - case 3: - { s16 arg = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - func_80172B14(arg); - return; } - case 4: - { s16 arg = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - { s32 t = w->unk20->unk12 + arg; - func_80172B14(t & 0xFFF); } - return; } - case 5: - sp18[0] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp18[1] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp18[2] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - func_80172C50(sp18); - return; - case 6: - { s16 arg = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - ((void (*)(s16))func_80172D68)(arg); - return; } - case 7: func_80172E94(); return; - case 8: func_80172ED4(); return; - case 27: ((void (*)())D_801D41C4)(); return; - case 9: func_80172EFC(); return; - case 10: func_80172F24(); return; - case 11: func_80173174(); return; - case 12: func_80172F4C(); return; - case 33: func_80172F9C(); return; - case 34: func_80172FEC(); return; - case 13: func_801745DC(); return; - case 14: - case 15: func_8017329C(); return; - case 16: func_8017334C(); return; - case 17: func_801733A4(); return; - case 18: - { s16 arg = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - func_801738DC(arg); - return; } - case 19: { - s16 a, b; - s32 ea, eb; - a = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; ea = a; - b = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; eb = b; - func_801736B0(ea, eb); - return; - } - case 20: - { s16 arg = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - ((void (*)(s16))func_801734BC)(arg); - return; } - case 23: - sp20[0] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp20[1] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp20[2] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - { s16 arg = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - ((void (*)(s16, u16 *))func_80173460)(arg, sp20); - return; } - case 29: - sp28[0] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp28[1] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp28[2] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - { s16 arg = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - func_801733FC(arg, sp28); - return; } - case 32: - sp30[0] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp30[1] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp30[2] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - sp30[3] = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - ((void (*)(u16 *))func_80172310)(sp30); - return; - case 25: func_8017452C(); return; - case 30: func_80174584(); return; - case 26: func_8017427C(); return; - case 24: func_80174438(D_801D41C0); return; - case 21: - ((void (*)(s32, s32, s32, s32, void *, s32))func_80173A28)((*(struct S734 * *)&D_801D419C)->unk0, (*(struct S734 * *)&D_801D419C)->unk4, (*(struct S734 * *)&D_801D419C)->unk8, - (*(struct S734 * *)&D_801D419C)->unkC, (*(struct S734 * *)&D_801D419C)->unk10, (*(struct S734 * *)&D_801D419C)->unk18); - return; - case 22: - (*(struct S734 * *)&D_801D419C)->unk1C((*(struct S734 * *)&D_801D419C)->unk4, (*(struct S734 * *)&D_801D419C)->unk10, (*(struct S734 * *)&D_801D419C)->unk18); - return; - case 31: - { s16 arg = D_801D3D78[D_801D4178]; D_801D4178 = (D_801D4178 + 1) & 0x1FF; - func_801737B8(arg); - return; } - } -} - - -DEFINE_func_8017AD0C() /* dedup: shared engine-core @0x8017AD0C (src/shared) */ - -DEFINE_func_8017ADE8() /* dedup: shared engine-core @0x8017ADE8 (src/shared) */ - -DEFINE_func_8017AE08() /* dedup: shared engine-core @0x8017AE08 (src/shared) */ diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c b/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c deleted file mode 100644 index c04904bc8..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8017AE2C.c +++ /dev/null @@ -1,5935 +0,0 @@ -#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 *); -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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_8018B458[])(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 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 void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern u8 D_801202A0[]; -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018B520[]; -extern s32 func_80149FB0(s32 a0); -extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); -extern void func_8014A1B0(s32 a0, s32 a1); -extern s32 func_8014A048(s32 param_1); -extern u16 func_80156370(u16 a0); -extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); -extern void func_8015D4B4(); -extern void func_8014A218(void); -extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); -extern s32 func_8014C2B0(void *a0, void *a1, s32 a2); -extern s32 func_8014A238(s32 arg0); -extern s32 func_8014A2E4(s32 a0); -extern void func_8014A380(s32 a0, s32 a1); -extern s32 func_8014A3E0(struct S_8014A3E0 *a0); -extern s32 func_8014A454(s32 a0); -extern s32 func_8014A4B4(void *a0); -extern void func_8015EDD4(); -extern void func_8014A4FC(void); -extern s32 func_8014A674(s32 *a0); -extern s32 func_8014A69C(s32 *a0); -extern s32 func_8014A6C4(s32 a0); -extern void func_8015E184(); -extern void func_8014A830(void); -extern s32 func_80029AF4(void); -extern s32 func_8014A850(s32 param_1); -extern void func_8014AA04(s32 a0); -extern void func_801599A4(void *a0); -extern void func_80159B3C(void *a0); -extern s32 func_80165A20(s32 a0); -extern void func_8014AB7C(); -extern void func_8014AC10(); -extern void func_8014AA28(void); -extern void func_8014AB5C(void); -extern void func_80162CCC(void); -extern void func_8014AB7C(s32 arg0); -extern void func_8014ABF0(void); -extern void func_80016714(void *a0, s32 a1); -extern void func_8014AC10(s32 arg0); -extern void func_8014ACC0(s32 a0, s32 a1); -extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); -extern void func_8014ACE8(void *a0, s32 a1, s32 a2); -extern void func_80146AFC(void *a0); -extern void func_8014ADA8(s32 a0, s32 a1); -extern void func_8014AD7C(s32 a0); -extern s32 D_80078E8C; -extern void func_8014B034(s32 arg0); -extern void func_8014B00C(s32 arg0); -extern void func_8014B084(void); -extern s16 D_80078E90; -extern void func_8014B034(s32 a0); -extern u16 D_80078EAC; -extern u8 D_80078EBA; -extern void func_800D10EC(void); -extern void func_8002AC98(void); -extern s32 func_8014B154(s32 *a0); -extern void func_8014B12C(void); -extern void func_8014B2F8(void); -extern void func_8014B4C4(void); -extern void func_8014B160(s32 a0); -extern s32 func_8016F1C4(void); -extern s16 D_80078E96; -extern s16 D_80078EB8; -extern u16 D_80078EA6; -extern void func_8014B2A8(void); -extern void func_8014B310(void); -extern void func_8014B2D0(void); -extern s32 D_80078E94; -extern s32 D_80078ECC; -extern void func_8014B33C(void); -extern u8 D_80062BF4[]; -extern void func_8014BC80(s32 a0, s32 a1); -extern void func_80019064(void *a0); -extern s32 D_80078E98; -extern void func_80166244(); -extern void func_8014B4D4(void *a0); -extern s16 D_80078E9A; -extern u8 D_80126D1C; -extern s32 D_80126D74; -extern void func_8014B598(s32 a0, s32 a1); -extern void func_8014B5B0(s32 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); -extern void func_8014B5D8(s32 s1); -extern s32 D_80078E9C; -extern s32 D_80078ED0; -extern void func_8014B6F0(s32 a0, s32 a1); -extern void func_8014B768(s32 a0, s32 a1); -extern void func_8014B944(s32 a0, s32 a1, s32 a2); -extern s32 D_80078EA4; -extern u16 D_80078EB2; -extern s16 D_80078EB4; -extern void func_8014BB0C(void); -extern void func_8014BB24(s32 a0, s32 a1, s32 a2); -extern void func_8014BC0C(s32 a0, s32 a1); -extern void func_8014BC44(s32 a0, s32 a1); -extern u8 D_800B9A17; -extern void func_8014BCC0(s32 a0, s32 a1); -extern u16 D_80078EB6; -extern s32 func_8014BCEC(s32 a0, s32 a1); -extern void func_8014BD24(s32 a0, s32 a1); -extern void func_8014BD60(s32 param_1, s32 param_2); -extern void func_8014BD98(s32 a0, u16 a1); -extern void func_8014BDC8(void); -extern void func_8014BDE0(void); -extern s32 func_8017267C(s32 *a0); -extern s32 func_80013294(void *a0, void *a1); -extern void func_80029ED4(s32 a0); -extern void func_8014BDE8(s32 a0); -extern void func_8014BE78(void); -extern void func_8014BE9C(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8014BEC0(void); -extern void func_8014BF18(s32 a0); -extern void func_8014BF48(void); -extern u8 func_8014BF6C(void); -extern void func_8014BF8C(u8 arg0); -extern void func_8014BFB0(void); -extern u8 func_8014BFD4(void); -extern void func_8014BFF4(s32 a0, s32 a1); -extern void func_8014C010(s32 a0, s32 a1); -extern s32 func_8014C050(s32 a0, s32 a1); -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2); -extern s32 func_8014C118(void * a0, s32 a1, s32 a2); -extern s32 func_8014C168(s32 * param_1, s32 param_2); -extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); -extern u8 D_8018B5A8[]; -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_8018B5B0; -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_801D3080; -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_801D3084; -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_8018B5E0; -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_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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 s32 D_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018CBFC[])(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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 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_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(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_8018CED8[])(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 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_8018CF1C[])(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_8018CEE0; -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_8018CF4C[])(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_8018CF88[])(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_8018CFE0[])(); -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_8018CFF0[])(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_8018CFF8[])(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_8018D160[])(); -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_8018D16C[])(); -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_801D2B3C; -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_801D47D8; -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_801D3D70; -extern short D_801D484C; -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_801D419C; -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_801D41C4; -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_801D4180; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -/* ==== end §8b carried decl layer ==== */ - - -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 s32 func_80012A60(s32 a0, s32 a1); - -extern s16 D_801D47A8; -extern s16 D_801D47AA; -extern s16 D_801D47B4; - -void func_8017AE2C(s32 param_1) { - register s32 pv __asm__("$16") = param_1; - register s16 *g __asm__("$17") = &D_801D47A8; - - switch (g[0]) { - case 0: - default: - return; - case 1: - g[1] = (u16)g[1] - 1; - if (g[1] <= 0) { - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = (u16)g[2]; - goto reset_both; - } - { - s32 r = func_8012B608(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), g[2], 6); - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) + r; - } - return; - case 2: - func_8012B178(pv, (s32)g[4] << 8); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - break; - case 3: - if (g[1] != 0) { - if (g[5] != 0) { - void *p = (void *)(pv + 4); - if ((s16)func_80012A60(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), - (s16)func_8012B744(p, &g[6])) < 0x100) { - g[1] = 0; - } - *(s16 *)(*(s32 *)(pv + 0x20) + 0x12) = - func_8012B744(p, &D_801D47B4); - func_8012B178(pv, 0xFFFA0000); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - /* &D_801D47A8+0xC == &D_801D47B4; distinct rtx defeats gcc's address-CSE - so BE98's arg rematerializes instead of sharing the store's reg (byte-gate). */ - if (func_8012BE98(pv, (u16 *)((s32)&D_801D47A8 + 0xC)) < 0x101) { - D_801D47A8 = 0; - D_801D47AA = 0; - } - } - { - s32 t = func_8012B744((void *)(pv + 4), &g[6]); - s32 r = func_8012B608(*(s16 *)(*(s32 *)(pv + 0x20) + 0x12), t, g[3]); - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(pv + 0x20) + 0x12) + r; - } - g[1] = (u16)g[1] - 1; - if (g[1] > 0) { - return; - } - g[1] = 0; - return; - } - *(s16 *)(*(s32 *)(pv + 0x20) + 0x12) = - func_8012B744((void *)(pv + 4), &D_801D47B4); - func_8012B178(pv, 0xFFFA0000); - func_8012AD80(pv); - *(u16 *)(pv + 0xA) -= 8; - func_8012B030((u8 *)pv); - /* see note above: distinct rtx for the same address defeats address-CSE. */ - if (func_8012BE98(pv, (u16 *)((s32)&D_801D47A8 + 0xC)) < 0x101) { - D_801D47A8 = 0; - D_801D47AA = 0; - } - return; - case 4: - func_8012AD80(pv); - } - g[1] = (u16)g[1] - 1; - if (g[1] > 0) { - return; - } -reset_both: - g[0] = 0; - g[1] = 0; - return; -} - -// @class: plumbing -// @stuck: none — MATCH - - -void func_8017B0E4(int param_1, int param_2) -{ - extern s16 D_801D41FC; - extern s16 D_801D41FE; - extern s16 D_801D4200; - extern s16 D_801D41F4; - extern s16 D_801D41F6; - extern s16 D_801D41F8; - - *(s32 *)(((s32)param_1) + 0x48) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x48), (s32)D_801D41FC, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x4C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x4C), (s32)D_801D41FE, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x50) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x50), (s32)D_801D4200, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x3C) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x3C), (s32)D_801D41F4, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x40) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x40), (s32)D_801D41F6, (s32)((s16)param_2)); - *(s32 *)(((s32)param_1) + 0x44) = (s16)func_80012C6C((s32)*(s16 *)(((s32)param_1) + 0x44), (s32)D_801D41F8, (s32)((s16)param_2)); -} - - - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_801D4184; -extern u16 D_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; -extern s16 D_801D47D8; - -void func_8017B1D8(void) { - func_8012A418(); - D_801D47D8 = 0; - D_801D4184 = 0; - D_801D4204 = D_80126B5E; - D_801D4206 = D_80126B62; - D_801D4208 = D_80126B66; -} - - -// @class: regalloc-order — simplified sibling of matched func_8017B614. -// @stuck: none. Block-moves are align-1 struct-assigns (u8[8]) -> emit_block_move -// (unaligned lwl/lwr/swl/swr), ZERO memcpy-symbol reference, so the TU's `extern memcpy` -// (which turned the old draft's memcpy into a CALL -> DIFF 64) can't drift this. -// $16 pin + in-place re-tie keeps param_2 in $a1 until the >=0xB branch, then $s0 for loads. - - -s32 func_8017B238(s32 param_1, s32 param_2) -{ - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern s32 func_8017BE60(void *a0); - extern u8 D_8018D2A8[]; - extern s16 D_801D41FC; - extern s16 D_801D41F4; - extern u8 D_8012694C; - - - u8 buf[16]; - - if (((u32)param_2) >= 0xB) { - register u8 *src __asm__("$16"); - __asm__ __volatile__("" : "=r"(src) : "0"((u8 *)((u32)param_2))); - *(Blk8_8017B238_8017B238 *)&buf[0] = *(Blk8_8017B238_8017B238 *)src; - *(Blk8_8017B238_8017B238 *)&buf[8] = *(Blk8_8017B238_8017B238 *)(src + 8); - } else { - s32 a1addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D41FC; - s16 *p78C = &D_801D41F4; - *(Blk8_8017B238_8017B238 *)p794 = *(Blk8_8017B238_8017B238 *)&buf[0]; - *(Blk8_8017B238_8017B238 *)p78C = *(Blk8_8017B238_8017B238 *)&buf[8]; - func_8012A018((s32)func_8017BE60, 0); - D_8012694C = 0; - D_801D47D8 = 1; - D_801D4184 = 0; - } -} - - - -// @class: struct -// @stuck: none — MATCH (74 ins) - - /* 8 bytes, align 2 -> lwl/lwr/swl/swr copy */ - /* 16-byte stride array element */ - - - -s32 func_8017B368(s32 param) -{ - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801D41A4; - extern SV4_8017B368 D_801D41AC; - extern s16 D_801D41FC; - extern s16 D_801D41F4; - extern u16 D_8018D2A8; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D41A4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D41AC; - } else { - s32 ax = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].x; - s32 ay = (s32)&((Pair16_8017B368 *)&D_8018D2A8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D41FC) = loc0; - (*(SV4_8017B368 *)&D_801D41F4) = loc1; - D_801D47D8 = 1; - D_801D4184 = 0; -} - - - - - -s32 func_8017B490(s32 param) -{ - extern void func_8017BA3C(s32 param_1, s32 param_2); - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern SV4_8017B368 D_801D41A4; - extern SV4_8017B368 D_801D41AC; - extern s16 D_801D41FC; - extern s16 D_801D41F4; - extern u16 D_8018D2A8; - extern s16 D_801D4184; - extern s16 D_801D47D8; - extern s32 D_80126984; - extern s32 D_80126988; - extern s32 D_8012698C; - extern s32 D_80126990; - extern s32 D_80126994; - extern s32 D_80126998; - - SV4_8017B368 loc0; - SV4_8017B368 loc1; - u32 n = (u32)&D_801D41A4; - - ((void (*)(void))func_8017BA3C)(); - - if (n >= 0xB) { - loc0 = *(SV4_8017B368 *)n; - loc1 = D_801D41AC; - } else { - s32 ax = (s32)&((Pair16 *)&D_8018D2A8)[n].x; - s32 ay = (s32)&((Pair16 *)&D_8018D2A8)[n].y; - func_8012F214(param, ax, (s32)&loc0); - func_8012F214(param, ay, (s32)&loc1); - } - - (*(SV4_8017B368 *)&D_801D41FC) = loc0; - (*(SV4_8017B368 *)&D_801D41F4) = loc1; - D_801D47D8 = 1; - D_801D4184 = 0x1E; - D_80126990 = (*(SV4_8017B368 *)&D_801D41FC).a; - D_80126994 = (*(SV4_8017B368 *)&D_801D41FC).b; - D_80126998 = (*(SV4_8017B368 *)&D_801D41FC).c; - D_80126984 = (*(SV4_8017B368 *)&D_801D41F4).a; - D_80126988 = (*(SV4_8017B368 *)&D_801D41F4).b; - D_8012698C = (*(SV4_8017B368 *)&D_801D41F4).c; -} - - -// @class: regalloc-order + T1 memcpy-builtin→call re-crack -// @stuck: 0 (iso). Register lever = $16 pin + in-place re-tie on the memcpy-branch src (keeps -// param_2 in $a1 until the branch, then $s0 for the loads). Block-moves are align-1 struct-assigns -// (u8[8]) so they lower via emit_block_move (movstrsi/move_by_pieces) with ZERO memcpy-symbol -// reference — TU-independent, so the sibling TU's `extern memcpy` (which disables the builtin and -// turned the old inlined block-move into a CALL) can no longer drift this. - - - - -s32 func_8017B614(s32 param_1, s32 param_2) -{ - extern void func_8012F214(s32 a0, s32 a1, s32 a2); - extern void func_80129CF8(void); - extern s32 func_8017BE60(void *a0); - extern u8 D_8018D2A8[]; - extern s16 D_801D41FC; - extern s16 D_801D41FE; - extern s16 D_801D4200; - extern s16 D_801D41F4; - extern s16 D_801D41F6; - extern s16 D_801D41F8; - extern u8 D_8012694C; - extern s32 D_80126998; - extern s32 D_80126984; - extern s32 D_80126988; - extern s32 D_8012698C; - - u8 buf[16]; - - if (((u32)param_2) >= 0xB) { - register u8 *src __asm__("$16"); - __asm__ __volatile__("" : "=r"(src) : "0"((u8 *)((u32)param_2))); - *(Blk8_8017B614 *)&buf[0] = *(Blk8_8017B614 *)src; - *(Blk8_8017B614 *)&buf[8] = *(Blk8_8017B614 *)(src + 8); - } else { - s32 a1addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10]; - s32 a2addr = (s32)&D_8018D2A8[((u32)param_2) * 0x10 + 8]; - func_8012F214(param_1, a1addr, (s32)&buf[0]); - func_8012F214(param_1, a2addr, (s32)&buf[8]); - } - { - s16 *p794 = &D_801D41FC; - s16 *p78C = &D_801D41F4; - *(Blk8_8017B614 *)p794 = *(Blk8_8017B614 *)&buf[0]; - *(Blk8_8017B614 *)p78C = *(Blk8_8017B614 *)&buf[8]; - ((void(*)(s32, s32))func_8012A018)((s32)func_8017BE60, 0); - { - s32 v794, v796, v798, v78C, v78E, v790; - D_8012694C = 0; - v794 = *p794; - v796 = D_801D41FE; - v798 = D_801D4200; - v78C = *p78C; - v78E = D_801D41F6; - v790 = D_801D41F8; - __asm__ __volatile__(""); - D_801D47D8 = 1; - D_801D4184 = 0x1E; - D_80126990 = v794; - D_80126994 = v796; - D_80126998 = v798; - D_80126984 = v78C; - D_80126988 = v78E; - D_8012698C = v790; - } - func_80129CF8(); - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH - -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_801D4184; -extern s16 D_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; - -void func_8017B7A8(void) -{ - D_8012694C = 1; - D_801D4184 = 0; - D_801D41FC = (s16) D_80114F30; - D_801D41FE = (s16) D_80114F34; - D_801D4200 = (s16) D_80114F38; - D_801D41F4 = (s16) D_80114F24; - D_801D41F6 = (s16) D_80114F28; - D_801D41F8 = (s16) D_80114F2C; -} - - - - -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; - -void func_8017B824(void) { - /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every - LATER function in this TU, which blocks a byte-true decl of a different type. - Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ - extern s32 D_801151D4; - D_801D4214 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x48); - D_801D4216 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x4C); - D_801D4218 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x50); - D_801D421C = (s16) M2C_FIELD(D_801151D4, s32 *, 0x3C); - D_801D421E = (s16) M2C_FIELD(D_801151D4, s32 *, 0x40); - D_801D4220 = (s16) M2C_FIELD(D_801151D4, s32 *, 0x44); -} - - - -// @class: schedule -// @stuck: none — MATCH - -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; - -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; - -void func_8017B880(void) -{ - D_80114F30 = D_801D4214; - D_80114F34 = D_801D4216; - D_80114F38 = D_801D4218; - D_80114F24 = D_801D421C; - D_80114F28 = D_801D421E; - D_80114F2C = D_801D4220; -} - - -// @class: struct -// @stuck: none — MATCH - -/* 16-byte unaligned block copy from param to two adjacent align-1 globals. - src[0..7] -> (*(S8_8017B8E8 *)&D_801D41FC), src[8..15] -> (*(S8_8017B8E8 *)&D_801D41F4) (source order). - An 8-byte struct of u8 has alignment 1, so gcc copies it via lwl/lwr+swl/swr. */ - - - -s32 func_8017B8E8(s32 src) { - (*(S8_8017B8E8 *)&D_801D41FC) = ((S8_8017B8E8 *)src)[0]; - (*(S8_8017B8E8 *)&D_801D41F4) = ((S8_8017B8E8 *)src)[1]; -} - - - - -// @class: struct -// @stuck: none — MATCH (63 ins) - -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern u16 D_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; - -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_801D4184; -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -extern s16 D_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; - -void func_8017B940(void) -{ - s32 buf[3]; - - D_8012694C = 2; - buf[0] = (*(s16 *)&D_80126B5E) - (*(s16 *)&D_801D4204); - buf[1] = (*(s16 *)&D_80126B62) - (*(s16 *)&D_801D4206); - buf[2] = (*(s16 *)&D_80126B66) - (*(s16 *)&D_801D4208); - (*(s16 *)&D_801D420C) = buf[0]; - (*(s16 *)&D_801D420E) = buf[1]; - (*(s16 *)&D_801D4210) = buf[2]; - D_801D41FC = D_80114F30 + buf[0]; - D_801D4184 = 0; - D_801D41FE = D_80114F34 + buf[1]; - D_801D4200 = D_80114F38 + buf[2]; - D_801D41F4 = D_80114F24 + buf[0]; - D_801D41F6 = D_80114F28 + buf[1]; - D_801D41F8 = D_80114F2C + buf[2]; -} - - - -// @class: struct -// @stuck: none — MATCH (62 ins) - -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); - -/* short-only (align 2) struct -> the 8-byte struct copy emits lwl/lwr/swl/swr */ - -/* PSX MATRIX_L48: 3x3 short rotation + pad + 3 long translation (offset 0x14) */ - -extern SV4 D_801D41A4; -extern SV4 D_801D41AC; - -void func_8017BA3C(s32 param_1, s32 param_2) -{ - SV4 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX mtx; /* sp+0x18 : MATRIX_L48, t[] at sp+0x2c */ - SV4 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4 svec; /* sp+0x40 : func_8012F214 out */ - SV4 buf1; /* sp+0x48 : RotTransSV arg1 (-> D_801D41AC) */ - SV4 buf2; /* sp+0x50 : RotTransSV arg2 */ - - func_8012F214(param_1, param_2, (s32)&svec); - D_801D41A4 = svec; - - v0.a = -*(s16 *)(param_2 + 0xc); - v0.b = *(u16 *)(param_2 + 8); - v0.c = 0; - v1.a = 0; - v1.b = 0; - v1.c = -*(s16 *)(param_2 + 0xa); - ((void (*)(void *, void *))func_80049CAC)(&v0, &mtx); - - mtx.t[0] = (s32)svec.a; - mtx.t[1] = (s32)svec.b; - mtx.t[2] = (s32)svec.c; - func_8004914C(&mtx); - func_800491AC(&mtx); - - RotTransSV(&v1, &buf1, &buf2); - D_801D41AC = buf1; -} - - -// @class: struct -// @stuck: none — MATCH (65 ins) -#include "common.h" - - - - -s32 func_8017BB34(s32 param_1, s32 param_2) -{ - SV4_8017BB34 v0; /* sp+0x10 : func_80049CAC arg0 */ - MTX_8017BB34 mtx; /* sp+0x18 : MATRIX_L48, t[] at sp+0x2c */ - SV4_8017BB34 v1; /* sp+0x38 : RotTransSV arg0 */ - SV4_8017BB34 svec; /* sp+0x40 */ - SV4_8017BB34 buf1; /* sp+0x48 : RotTransSV arg1 (-> (*(SV4_8017BB34*)&D_801D41AC)) */ - SV4_8017BB34 buf2; /* sp+0x50 : RotTransSV arg2 */ - - svec = *(SV4_8017BB34 *)param_2; - (*(SV4_8017BB34*)&D_801D41A4) = svec; - - v0.a = -*(s16 *)(param_2 + 0xc); - v0.b = *(u16 *)(param_2 + 8); - v0.c = 0; - v1.a = 0; - v1.b = 0; - v1.c = -*(s16 *)(param_2 + 0xa); - ((void (*)(void *, void *))func_80049CAC)(&v0, &mtx); - - mtx.t[0] = (s32)svec.a; - mtx.t[1] = (s32)svec.b; - mtx.t[2] = (s32)svec.c; - func_8004914C(&mtx); - func_800491AC(&mtx); - - RotTransSV(&v1, &buf1, &buf2); - (*(SV4_8017BB34*)&D_801D41AC) = buf1; -} - - - - -// @class: regalloc-order -// @stuck: pending self-check — register order param=$s2 counter=$s1 ptr=$s0 - -extern void (*D_801D41CC[10])(int); - -void func_8017BC38(int param_1) -{ - register int i __asm__("$17"); - register void (**p)(int) __asm__("$16"); - - i = 0; - p = D_801D41CC; - do { - if (*p != (void (*)(int))0) { - (*p)(param_1); - } - i = i + 1; - p = p + 1; - } while (i < 10); - return; -} - - - - -// @class: plumbing -// @stuck: none — MATCH (expected); short-typed global increment + signed compare, store-2 on overflow - -extern void func_8017B0E4(int, int); -extern s16 D_801D4184; -extern s16 D_801D47D8; - -void func_8017BCA0(int param_1) { - func_8017B0E4(param_1, 0xC); - D_801D4184 = D_801D4184 + 1; - if (D_801D4184 >= 0x1F) { - D_801D47D8 = 2; - } -} - - - - -// @class: plumbing -// @stuck: none — MATCH expected (simple short-increment + guarded call) - -extern s16 D_801D4184; -extern s16 D_801D47D8; - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -void func_8017BCF4(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D4184 = D_801D4184 + 1; - if (0x18 < D_801D4184) { - func_8012A4BC(); - D_801D47D8 = 0; - } - return; -} - - - - -// @class: regalloc-order -// @stuck: none — MATCH (branch-polarity invert: fn-ptr non-zero call is the fall-through arm) - -extern void func_8017B0E4(int, int); -extern void func_8012A4BC(void); - -extern s16 D_801D4184; -extern void (*D_801D41C8)(void); -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -extern s16 D_801D47D8; - -extern s32 D_80114F24; -extern s32 D_80114F28; -extern s32 D_80114F2C; -extern s32 D_80114F30; -extern s32 D_80114F34; -extern s32 D_80114F38; - -void func_8017BD50(int param_1) -{ - func_8017B0E4(param_1, 6); - D_801D4184 = D_801D4184 + 1; - if (D_801D4184 >= 0x19) { - if (D_801D41C8 != 0) { - (*D_801D41C8)(); - } else { - D_80114F30 = D_80114F30 + D_801D420C; - D_80114F34 = D_80114F34 + D_801D420E; - D_80114F38 = D_80114F38 + D_801D4210; - D_80114F24 = D_80114F24 + D_801D420C; - D_80114F28 = D_80114F28 + D_801D420E; - D_80114F2C = D_80114F2C + D_801D4210; - func_8012A4BC(); - } - D_801D47D8 = 0; - } -} - - - -extern void (*D_8018D348[])(void); - -void func_8017BE60(void *a0) { - D_8018D348[*(u8 *)((s32)a0 + 0x4)](); -} - - -DEFINE_func_8017BE9C() /* dedup: shared engine-core @0x8017BE9C (src/shared) */ - -DEFINE_func_8017BEA4() /* dedup: shared engine-core @0x8017BEA4 (src/shared) */ - -DEFINE_func_8017BEAC() /* dedup: shared engine-core @0x8017BEAC (src/shared) */ - -DEFINE_func_8017BEB4() /* dedup: shared engine-core @0x8017BEB4 (src/shared) */ - - -extern void func_80174684(void *); -extern void func_8017BEE4(void *); - -void func_8017BEBC(void) { - func_80174684((void *)func_8017BEE4); -} - - - -extern void (*D_8018D354[])(void); - -void func_8017BEE4(void *a0) { - D_8018D354[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017BF20() /* dedup: shared engine-core @0x8017BF20 (src/shared) */ - - -extern void func_80183228(void *a0); -extern void func_80171A1C(u8 *a0); -extern s32 func_80174650(s32 a0); - -void func_8017BF58(void *a0) { - if (((s32 (*)(void *))func_80183228)(a0) == 0) { - return; - } - func_80171A1C(a0); - func_80174650((s32)a0); -} - - -DEFINE_func_8017BF98() /* dedup: shared engine-core @0x8017BF98 (src/shared) */ - - -DEFINE_func_8017BFA0() /* dedup: shared engine-core @0x8017BFA0 (src/shared) */ - - - -extern void (*D_8018D360[])(void); - -void func_8017BFC8(void *a0) { - D_8018D360[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017C004() /* dedup: shared engine-core @0x8017C004 (src/shared) */ - - -extern s32 func_801831D0(void *a0); -extern void func_80171A1C(u8 *a0); -extern s32 func_80174650(s32 a0); - -void func_8017C03C(void *a0) { - s32 s0 = (s32)a0; - if (func_801831D0(a0) == 0) { - return; - } - func_80171A1C((u8 *)s0); - func_80174650(s0); -} - - -DEFINE_func_8017C07C() /* dedup: shared engine-core @0x8017C07C (src/shared) */ - -DEFINE_func_8017C084() /* dedup: shared engine-core @0x8017C084 (src/shared) */ - - - -extern void (*D_8018D420[])(void); - -void func_8017C0C8(void *a0) { - D_8018D420[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -DEFINE_func_8017C104() /* dedup: shared engine-core @0x8017C104 (src/shared) */ - - -DEFINE_func_8017C12C() /* dedup: shared engine-core @0x8017C12C (src/shared) */ - - -DEFINE_func_8017C14C() /* dedup: shared engine-core @0x8017C14C (src/shared) */ - - extern SVECTOR_8017C290 D_8018D434[4]; - void func_8017C154(void *a0) - { - s16 buf20[4]; - SVECTOR_8017C290 c; - SVECTOR_8017C290 d; - SVECTOR_8017C290 e; - SVECTOR_8017C290 f; - s32 i, j; - *(s16 *)((u8 *)a0 + 0x10) = *(s32 *)((u8 *)a0 + 0x30); - func_80015978((s32)a0 + 4, (s32 *)buf20); - for (j = 0; j < 4; j++) { - c.vx = 0; - c.vy = 0; - c.vz = 0; - d = c; - e = c; - for (i = 0; i < 4; i++) { - f = D_8018D434[i]; - *(s16 *)((u8 *)a0 + 0x12) = i + j; - func_8017C290((int)a0, buf20, &c, &d, &e, &f, (s16 *)((u8 *)a0 + 0x10)); - } - } - } - - -extern void func_80013F3C(s32 a0); -extern void func_80017714(void *); -extern void func_8004914C(); -extern void func_800491AC(); -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") -#define gte_rt() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") -#define gte_stsv(r0) __asm__ __volatile__( \ - "mfc2 $12, $9\n" \ - "mfc2 $13, $10\n" \ - "mfc2 $14, $11\n" \ - "sh $12, 0(%0)\n" \ - "sh $13, 2(%0)\n" \ - "sh $14, 4(%0)\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") - -void func_8017C290(int a, s16 *b, SVECTOR_8017E72C *c, SVECTOR_8017E72C *d, - SVECTOR_8017E72C *e, SVECTOR_8017E72C *f, s16 *g) -{ - - extern struct PW8017E72C D_8018D36C[]; - /* [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 SVECTOR_8017E72C D_801D42A8[4]; - extern struct PW8017E72C D_801D42C8; - extern struct PW8017E72C D_801D42CC; - extern u8 D_801D42D0, D_801D42D1, D_801D42D2, D_801D42D4, D_801D42D5, D_801D42D6; - extern int D_801D42D8; - MATRIX_8017E72C m; - SVECTOR_8017E72C *r0_00; - SVECTOR_8017E72C *pSVar6; - SVECTOR_8017E72C *r0; - int r; - int mask; - - func_80013F3C((s32)&m); - RotMatrixZ(g[0], &m); - m.t[0] = b[0]; - m.t[1] = b[1]; - m.t[2] = 0; - func_8004914C(&m); - func_800491AC(&m); - - r0_00 = &D_801D42A8[0]; - if (*(s16 *)(a + 0x12) == 0) { - D_801D42D8 = 0x50000000; - D_801D42C8 = D_8018D36C[*(s32 *)(a + 0x2C)]; - D_801D42CC = D_8018D36C[*(s32 *)(a + 0x2C)]; - D_801D42D0 = 0; - D_801D42D1 = 0; - D_801D42D2 = 0; - D_801D42D4 = 0; - D_801D42D5 = 0; - D_801D42D6 = 0; - } - - f->vx = f->vx + c->vx; - f->vy = f->vy + c->vy; - r = rand(); - mask = f->pad & r; - if (*(u16 *)(a + 0x12) & 1) - f->vx = f->vx + mask; - else - f->vx = f->vx - mask; - r = rand(); - { int t = f->vy - 0x10; f->vy = t + (r & 0x1f); } - - gte_ldv0(c); - gte_rt(); - gte_stsv(r0_00); - - gte_ldv0(f); - gte_rt(); - gte_stsv(r0_00 + 1); - - gte_ldv0(d); - gte_rt(); - r0 = r0_00 + 2; - gte_stsv(r0); - - *d = *f; - r = rand(); - d->vx = d->vx - (f->pad & r); - - gte_ldv0(d); - gte_rt(); - pSVar6 = r0_00 + 3; - gte_stsv(pSVar6); - - r0_00->vz = ((u16 *)b)[2]; - func_80017714(r0_00); - - gte_ldv0(e); - gte_rt(); - gte_stsv(r0); - - *e = *f; - r = rand(); - e->vx = e->vx + (f->pad & r); - - gte_ldv0(e); - gte_rt(); - gte_stsv(pSVar6); - - r0_00->vz = ((u16 *)b)[2]; - func_80017714(r0_00); - - *c = *f; -} - - -DEFINE_func_8017C624() /* dedup: shared engine-core @0x8017C624 (src/shared) */ - - - -extern void (*D_8018D460[])(void); - -void func_8017C664(void *a0) { - D_8018D460[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_80146F58(s32 a0, s32 a1); - -/* MATCH (match_one, 93/93). ov_SC03_014_jr_8017AE2C, family reach x7 (zero-crack exemplar; see - * asm/ov_SC03_0{14,15,24,118,119}/... and ov_SC06_000, all still INCLUDE_ASM as of this crack). - * - * sibling-search (cookbook §160g) hits, all from src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.c - * (the destination TU itself) plus one cross-overlay MATCHed twin: - * - func_8017CE10(void *a0, s32 a1, s32 a2) -- defined verbatim in THIS TU (line 3679) - * - func_80147324(D_8018D3BC[idx][0]) -- exact idiom of func_8017C8FC's - * func_80147324(D_8018EFD4[idx][0]) (same TU) - * - func_8001CB00(s32,void*,s32,s32) -- signature + literal 0x280/0x100 pair pinned - * by src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c:5317 func_80186BE8 (labeled MATCH), whose tail - * `*(short*)(param_1+2) += 1;` is the exact idiom of this function's own final statement. - * - func_8012A68C()/func_8012A758()/func_8004978C()/ApplyMatrixSV() call trio -- exact shape of - * shared-engine func_80146F58 (src/ov_SC07_007/ov_SC07_007_jr_801457A4.c:1459): two s16 calls - * stored, func_8004978C(anglesPtr, matOut), ApplyMatrixSV(mat, in, out). - * - func_801465C0 loose void(void) file-scope decl (TU:130) fought via a cast-at-callsite, - * per §161c -- mirrors src/ov_SC06_008/ov_SC06_008_jr_8016AB6C.c's - * `((s32 (*)(void))func_801465C0)()` pattern. No explicit a0 setup precedes the target's jal - * (a0 still holds the entry parameter unclobbered) so a ZERO-ARG cast is the byte-safe choice - * -- it can never force a spurious argument-setup instruction. - * - * PROCESS NOTE (worth banking in the cookbook): a 2-instruction "REGALLOC-LOCAL" residual on - * func_80015954's args looked exactly like local-alloc's optimize_reg_copy_1 collapsing two - * identical-valued arg copies (byte-verified via `cc1 -da`: `.sched` had insn112/114 both reading - * pseudo 80 cleanly, `.lreg` had insn114 rewritten to read insn112's DEST instead of pseudo80's - * hard reg -- textbook §162j1). The `register s32 zr __asm__("$0"); x + zr` opaque-copy lever - * (§136d-1/RC-12) did NOT defeat it when applied to the SECOND of the pair (validate_replace_rtx - * substitutes inside a PLUS operand just as readily as inside a plain SET) -- applying it to the - * FIRST copy instead (so insn117 is no longer a `single_set(REG)` and never qualifies as "a copy" - * for the pass to scan forward from) did defeat it, dropping to a genuine 1-instruction - * REGALLOC-PERM ($s3-vs-$s0). That flushed out the REAL bug: `func_80015954`'s first argument is - * `vecOut` (the ApplyMatrixSV output), not `s3` -- I had the wrong VALUE, not a regalloc quirk. - * Fixing the argument made the "residual" vanish with NO register-pin needed at all. Lesson: a - * clean REGALLOC-LOCAL/-PERM diff on an ARGUMENT SETUP is worth re-deriving the argument's - * identity from the target's OWN register (here $s0, not the more "obvious" $s3) before reaching - * for §162j1/RC-12 levers -- they can mask a semantic error long enough to look load-bearing. - */ - -extern void func_801465C0(void); -extern void func_80149374(s32 a0, s32 a1); -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 void func_80015978(s32 a0, s32 *a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80015954(s32 a0, s32 a1); -extern void func_8001CB00(s32 a0, void *a1, s32 a2, s32 a3); -extern void func_8017CE10(void *a0, s32 a1, s32 a2); -extern void func_80147324(s32 a0); -extern void func_80146C3C(void); - -/* new-to-this-TU data symbols (own address only in this function; payload owned by - * asm/ov_SC03_014/data/tail.data.s, a data-only splat unit -- extern is correct, not a definition, - * per §160c's "same .s as the function" test). D_8018D478 bytes: 0000 0000 ECFF 0000 = {0,0,-20,0}. - * D_8018D454: 12 opaque bytes (a GPU-primitive template), address-only use -> §160f array style. */ - -void func_8017C6A0(void *a0) { - - extern s16 D_8018D478[4]; - extern u8 D_8018D454[12]; - extern u16 D_8018D3BC[][2]; - void *s3; - s32 s0; - s32 s1; - u8 mat[0x20]; - u16 vecOut[4]; - - s0 = *(s32 *)(a0 + 0x34); - s3 = ((void *(*)(void))func_801465C0)(); - *(void **)(a0 + 0x20) = s3; - - if (s3 != NULL) { - s1 = (s32)a0 + 4; - func_80149374(s0, s1); - - *(s16 *)(s3 + 0x10) = func_8012A68C(); - *(s16 *)(s3 + 0x12) = func_8012A758(); - func_8004978C((s16 *)(s3 + 0x10), mat); - - ApplyMatrixSV(mat, D_8018D478, vecOut); - - *(u16 *)(a0 + 0x6) = *(u16 *)(a0 + 0x6) + vecOut[0]; - *(u16 *)(a0 + 0xA) = *(u16 *)(a0 + 0xA) + vecOut[1]; - *(u16 *)(a0 + 0xE) = *(u16 *)(a0 + 0xE) + vecOut[2]; - - func_80015978(s1, (s32 *)vecOut); - func_8012EF70((s32)vecOut, (s32)vecOut); - func_80015954((s32)vecOut, s1); - - func_8001CB00((s32)s3, D_8018D454, 0x280, 0x100); - - *(u8 *)(s3 + 0x27) = 0x80; - - *(s16 *)(s3 + 0x2C) = *(u16 *)(a0 + 0xE); - *(s16 *)(s3 + 0x1A) = 0; - *(s16 *)(s3 + 0x18) = 0; - - *(s32 *)(a0 + 0x10) = 0; - func_8017CE10(a0, *(s32 *)(a0 + 0x2C), 0x8F); - - func_80147324(D_8018D3BC[*(s32 *)(a0 + 0x2C)][0]); - - *(u16 *)(a0 + 2) = *(u16 *)(a0 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)((s32)a0); - } -} - - - - -DEFINE_func_8017C814() /* dedup: shared engine-core @0x8017C814 (src/shared) */ - - - -extern void func_8017CE10(void *a0, s32 a1, s32 a2); -extern void func_8017D098(void *a0, s32 a1, s32 a2); -extern void func_80146C3C(void); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80147324(s32 arg0); - -void func_8017C8FC(void *a0) { - - extern s32 D_8011D030; - extern u16 D_8018D3D0[][2]; - s32 *s2; - - s2 = *(s32 **)((s32)a0 + 0x20); - - if (*(s32 *)((s32)a0 + 0x1C) < 0x100) { - if ((*(s32 *)((s32)a0 + 0x1C) & 0xF) == 0) { - func_8017CE10(a0, *(s32 *)((s32)a0 + 0x2C), 0xF); - if ((*(s32 *)((s32)a0 + 0x1C) & 0xF) == 0) { - s32 flags = *(s32 *)((s32)a0 + 0x1C) << 15; - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 1); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 2); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 3); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 4); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 5); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 6); - func_8017D098(a0, *(s32 *)((s32)a0 + 0x2C), flags | 7); - } - } - if (*(s32 *)((s32)a0 + 0x1C) & 1) { - s2[1] |= 0x80000000; - } else { - s2[1] &= 0x7FFFFFFF; - } - *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; - } else { - u8 *p = (u8 *)&D_8011D030; - s32 idx; - - if ((u32)p < (u32)((u8 *)&D_8011D030 + 0xA50)) { - do { - if (*(u16 *)p == 0x2E) { - ((void (*)(s32))func_80146C3C)((s32)p); - } - p += 0x58; - } while ((u32)p < (u32)((u8 *)&D_8011D030 + 0xA50)); - } - - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x1C7); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x38E); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x555); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x71C); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0x8E3); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0xAAA); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0xC71); - } - { - s32 t3 = *(s32 *)((s32)a0 + 0x2C); - s16 t0 = *(s16 *)((s32)a0 + 0x6); - s16 t1 = *(s16 *)((s32)a0 + 0xA); - s16 t2 = *(s16 *)((s32)a0 + 0xE); - func_80146A6C(0x2B, a0, t0, t1, t2, t3, 0xE38); - } - - func_80146E90((s32 *)a0, 0x20); - - idx = *(s32 *)((s32)a0 + 0x2C); - func_80147324(D_8018D3D0[idx][0]); - - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - } -} - - -DEFINE_func_8017CC44() /* dedup: shared engine-core @0x8017CC44 (src/shared) */ - - -DEFINE_func_8017CCC4() /* dedup: shared engine-core @0x8017CCC4 (src/shared) */ - - - -extern void func_8017CE10(void *a0, s32 a1, s32 a2); -extern void func_80147324(s32 a0); -extern void func_80146C3C(void); - -void func_8017CD10(void *a0) { - - extern u16 D_8018D3E4[][2]; - s32 *s2; - s16 v0; - - s2 = *(s32 **)((s32)a0 + 0x20); - - if (*(s32 *)((s32)a0 + 0x1C) & 1) { - s2[1] |= 0x80000000; - } else { - s2[1] &= 0x7FFFFFFF; - } - - v0 = (*(u16 *)((s32)s2 + 0x12) + 0x80) & 0xFFF; - *(u16 *)((s32)s2 + 0x12) = v0; - - if (v0 == 0 || v0 == 0x800) { - if (*(s16 *)((s32)a0 + 0x24) != 0) { - *(s16 *)((s32)a0 + 0x24) = *(s16 *)((s32)a0 + 0x24) - 1; - } - } - - v0 = *(u16 *)((s32)s2 + 0x1A) - 0x40; - *(u16 *)((s32)s2 + 0x1A) = v0; - *(u16 *)((s32)s2 + 0x18) = v0; - - if (v0 < 0) { - func_8017CE10(a0, *(s32 *)((s32)a0 + 0x2C), 0x8F); - func_80147324(D_8018D3E4[*(s32 *)((s32)a0 + 0x2C)][0]); - ((void (*)(s32))func_80146C3C)((s32)a0); - } - - *(s32 *)((s32)a0 + 0x1C) = *(s32 *)((s32)a0 + 0x1C) + 1; -} - - -DEFINE_func_8017CE10() /* dedup: shared engine-core @0x8017CE10 (src/shared) */ - - - -extern void (*D_8018D480[])(void); - -void func_8017CE54(void *a0) { - D_8018D480[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* callee-set / sibling search (cookbook §160g): all callees resolved from the DESTINATION TU - * itself, src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.c, whose immediately-preceding matched sibling - * func_8017C6A0 (same TU, same family) uses the identical: - * - func_801465C0 loose void(void) file-scope decl, fought via a zero-arg cast-at-callsite - * (§161c) -- `((void *(*)(void))func_801465C0)()`. - * - func_80146C3C(void) called on the failure path with the object pointer cast in. - * - the returned object (named s3 there, s1 here) has s16 fields at +0x18/+0x1A/+0x2C, matching - * this function's `*(s16*)(s1+0x18)`, `+0x1A`, `+0x2C` stores exactly. - * func_8001CD04(void*,void*) is defined in src/800.c (INCLUDE_ASM, shared engine) -- - * asm/nonmatchings/800/func_8001CD04.s shows it stores its 2nd arg into (a0+0x20), confirming a0 - * here is the newly-allocated object and a1 is an address it retains -- i.e. func_8001CD04(s1, s2) - * installs s2 (&D_801D4228) onto the object. - * The `lwl/lwr`+`swl/swr` pair at D_8018D380[idx] / D_801D4228 is the §160a align-1 struct-copy - * idiom; D_8018D380 is already `extern M2C_UNK D_8018D380;` (address-only) in many ov_SC05_017 - * TUs, and the shared align-1 4-byte struct type `B4` (src/shared/engine_types.h:713) is already - * used repo-wide for this exact shape. The SAME address (&D_801D4228) also takes a plain ALIGNED - * `sw` of 0xFFFFFF on the other branch -- an explicit `(u32*)` cast forces that, while the direct - * `B4` struct assignment on the table-lookup branch keeps the align-1 `swl/swr` -- §160a's "read - * the move width off the target, not off the data's apparent type", both branches hitting the same - * lvalue. - * D_801D4228/844/845/846 are owned by asm/ov_SC03_014/data/tail19.data.s (a data-only splat unit, - * §160c) -- not bundled with this function's .s, so plain `extern` declarations are correct, not a - * definition. D_801D4228 is one `.word` (4 bytes); D_801D422C and D_801D422D are each one `.byte`; - * D_801D422E opens a much larger multi-byte block in that data file, but this function only stores - * a zero to its FIRST byte, so a scalar `extern u8 D_801D422E;` is sufficient here. - * - * TYPE: match_one's standalone `common.h` does NOT reach src/shared/engine_types.h (only the real - * TU's `#include "../shared/engine_core.h"` does), so `B4` isn't visible here. Per the - * ov_SC06_032_jr_8018FCE8.c precedent ("cc1 errors on the redefinition" of an identical-name - * typedef), a fresh, function-scoped name is used instead -- collides with nothing; the integrator - * may DROP this local typedef and reuse the TU's own `B4` when banking into the host TU. - */ - -typedef struct { u8 d[4]; } Blk4_8017CE90_8017CE90; - -extern void func_801465C0(void); -extern void func_8001CD04(void *a0, void *a1); -extern void func_800233CC(void *a0, u16 a1); -extern void func_80146C3C(void); - - -void func_8017CE90(void *a0) -{ - - extern Blk4_8017CE90_8017CE90 D_8018D380[]; - extern Blk4_8017CE90_8017CE90 D_801D4228; - extern u8 D_801D422C; - extern u8 D_801D422D; - extern u8 D_801D422E; - void *s1; - Blk4_8017CE90_8017CE90 *s2; - s32 pad[10]; - - s1 = ((void *(*)(void))func_801465C0)(); - *(void **)((u8 *)a0 + 0x20) = s1; - - if (s1 != NULL) { - s2 = &D_801D4228; - func_8001CD04(s1, s2); - - *(s32 *)((u8 *)s1 + 4) |= 0x50000000; - func_800233CC(s2, 0x50); - - *(s32 *)((u8 *)a0 + 0x10) = 0; - if (*(s32 *)((u8 *)a0 + 0x30) & 0x80) { - *(u32 *)s2 = 0xFFFFFF; - *(s16 *)((u8 *)s1 + 0x1A) = 0x80; - *(s16 *)((u8 *)s1 + 0x18) = 0x80; - *(s32 *)((u8 *)a0 + 0x14) = 0x80; - } else { - *s2 = D_8018D380[*(s32 *)((u8 *)a0 + 0x2C)]; - *(s32 *)((u8 *)a0 + 0x14) = 0x20; - } - - D_801D422C = 0; - D_801D422D = 0; - D_801D422E = 0; - - *(s32 *)((u8 *)a0 + 0x30) = *(s32 *)((u8 *)a0 + 0x30) & 0x7F; - *(s16 *)((u8 *)s1 + 0x2C) = *(u16 *)((u8 *)a0 + 0xE) + 0x10; - *(u16 *)((u8 *)a0 + 0x2) = *(u16 *)((u8 *)a0 + 0x2) + 1; - } else { - ((void (*)(void *))func_80146C3C)(a0); - } -} - - - - -void func_8017CFBC(void *a0) -{ - typedef struct { u8 d[4]; } Blk4_8017CE90_8017CE90; - extern Blk4_8017CE90_8017CE90 D_801D4228; - extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); - extern void func_80146C3C(void); - void *s2; - void *s1; - s32 v0; - s32 v1; - - s2 = a0; - s1 = *(void **)((u8 *)s2 + 0x20); - D_801D4228.d[0] = func_80012F74(D_801D4228.d[0], 0, 10, 1); - D_801D4228.d[1] = func_80012F74(D_801D4228.d[1], 0, 10, 1); - D_801D4228.d[2] = func_80012F74(D_801D4228.d[2], 0, 10, 1); - - v1 = *(s32 *)((u8 *)s2 + 0x10) + *(s32 *)((u8 *)s2 + 0x14); - *(s32 *)((u8 *)s2 + 0x10) = v1; - - v0 = *(u16 *)((u8 *)s1 + 0x1A) + v1; - *(u16 *)((u8 *)s1 + 0x1A) = v0; - *(s16 *)((u8 *)s1 + 0x18) = v0; - - v1 = *(s32 *)((u8 *)s2 + 0x30); - *(s32 *)((u8 *)s2 + 0x30) = v1 - 1; - if (v1 == 0) { - ((void (*)(void *))func_80146C3C)(s2); - } -} - - -DEFINE_func_8017D098() /* dedup: shared engine-core @0x8017D098 (src/shared) */ - - - -extern void (*D_8018D490[])(void); - -void func_8017D0DC(void *a0) { - D_8018D490[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_8017D118() /* dedup: shared engine-core @0x8017D118 (src/shared) */ - - -DEFINE_func_8017D194() /* dedup: shared engine-core @0x8017D194 (src/shared) */ - - - typedef struct { s16 vx; u16 vy; s16 vz, pad; } SVec_8017D1E0; -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_8017D1E0; - - - -extern s32 func_80146E98(s32 a0); -extern void func_80147324(s32 arg0); -extern void func_80146C3C(void); -extern void func_8017D318(int a0, SVECTOR_8017C290 *a1, SVECTOR_8017C290 *a2, s32 a3); - -void func_8017D1E0(void *a0) -{ - - extern u16 D_8018D3F8[][2]; - s16 n; - register s32 tmp __asm__("$4"); - register s32 t __asm__("$17"); - s16 v; - SVECTOR_8017C290 vec1; - SVECTOR_8017C290 vec2; - - n = *(s16 *)((s32)a0 + 0x28); - if (n != 0) { - n = n - 1; - *(s16 *)((s32)a0 + 0x28) = n; - if (n == 0) { - func_80147324(D_8018D3F8[*(s32 *)((s32)a0 + 0x2C)][0]); - } - } - - tmp = *(s32 *)((s32)a0 + 0x30) + 0x6000; - *(s32 *)((s32)a0 + 0x14) += tmp; - t = tmp; - - v = *(u16 *)((s32)a0 + 0x10) - *(u16 *)((s32)a0 + 0x16); - *(s16 *)((s32)a0 + 0x10) = v; - if (v < 0) { - *(s16 *)((s32)a0 + 0x10) = 0; - } - - if (func_80146E98((s32)a0)) { - *(s32 *)((s32)a0 + 0x18) += t; - - v = *(u16 *)((s32)a0 + 0x12) - *(u16 *)((s32)a0 + 0x1A); - *(s16 *)((s32)a0 + 0x12) = v; - if (v < 0) { - *(s16 *)((s32)a0 + 0x12) = 0; - } - } - - vec1.vx = 0; - vec1.vy = *(u16 *)((s32)a0 + 0x10); - vec1.vz = 1; - vec2.vx = 0; - vec2.vy = *(u16 *)((s32)a0 + 0x12); - vec2.vz = 1; - func_8017D318((int)a0, &vec1, &vec2, *(s16 *)((s32)a0 + 0x24)); - - if (*(s32 *)((s32)a0 + 0x10) == 0) { - ((void (*)(s32))func_80146C3C)((s32)a0); - } -} - - -extern void func_80013F3C(s32 a0); -extern void func_80017714(void *); -extern void func_8004914C(); -extern void func_800491AC(); -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") -#define gte_rt() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") -#define gte_stsv(r0) __asm__ __volatile__( \ - "mfc2 $12, $9\n" \ - "mfc2 $13, $10\n" \ - "mfc2 $14, $11\n" \ - "sh $12, 0(%0)\n" \ - "sh $13, 2(%0)\n" \ - "sh $14, 4(%0)\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") -#define gte_rt() __asm__ __volatile__( \ - "nop\n" \ - "nop\n" \ - "mvmva 1, 0, 0, 0, 0\n" \ - : : : "memory") -#define gte_stsv(r0) __asm__ __volatile__( \ - "mfc2 $12, $9\n" \ - "mfc2 $13, $10\n" \ - "mfc2 $14, $11\n" \ - "sh $12, 0(%0)\n" \ - "sh $13, 2(%0)\n" \ - "sh $14, 4(%0)\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) - -void func_8017D318(int a0, SVECTOR_8017C290 *a1, SVECTOR_8017C290 *a2, s32 a3) -{ - - extern struct PW8017C290 D_8018D394[]; - extern struct PW8017C290 D_8018D3A8[]; - extern SVECTOR_8017C290 D_801D42A8[4]; - extern struct PW8017C290 D_801D42C8; - extern struct PW8017C290 D_801D42CC; - extern u8 D_801D42D0, D_801EA8E9, D_801EA8EA, D_801D42D4, D_801EA8ED, D_801EA8EE; - extern u8 D_801D42D0, D_801EA8E9, D_801EA8EA, D_801D42D4, D_801EA8ED, D_801EA8EE; - extern int D_801D42D8; - MATRIX_8017C290 m; - SVECTOR_8017C290 *r0_00; - SVECTOR_8017C290 *r0; - SVECTOR_8017C290 *pSVar6; - - D_801D42D8 = 0x50000000; - D_801D42C8 = D_8018D394[*(s32 *)(a0 + 0x2C)]; - D_801D42CC = D_8018D3A8[*(s32 *)(a0 + 0x2C)]; - *(struct PW8017C290 *)&D_801D42D0 = D_8018D394[*(s32 *)(a0 + 0x2C)]; - *(struct PW8017C290 *)&D_801D42D4 = D_8018D3A8[*(s32 *)(a0 + 0x2C)]; - - func_80013F3C((s32)&m); - RotMatrixZ((s16)a3, &m); - m.t[0] = *(s16 *)(a0 + 0x6); - m.t[1] = *(s16 *)(a0 + 0xA); - m.t[2] = 0; - func_8004914C(&m); - func_800491AC(&m); - - r0_00 = &D_801D42A8[0]; - - gte_ldv0(a1); - gte_rt(); - gte_stsv(r0_00); - - gte_ldv0(a2); - gte_rt(); - gte_stsv(r0_00 + 1); - - a1->vx = a1->vx - 2; - gte_ldv0(a1); - gte_rt(); - r0 = r0_00 + 2; - gte_stsv(r0); - - a2->vx = a2->vx - 2; - gte_ldv0(a2); - gte_rt(); - pSVar6 = r0_00 + 3; - gte_stsv(pSVar6); - - r0_00->vz = *(u16 *)(a0 + 0xE); - func_80017714(r0_00); - - a1->vx = a1->vx + 4; - gte_ldv0(a1); - gte_rt(); - gte_stsv(r0); - - a2->vx = a2->vx + 4; - gte_ldv0(a2); - gte_rt(); - gte_stsv(pSVar6); - - r0_00->vz = *(u16 *)(a0 + 0xE); - func_80017714(r0_00); -} - - -DEFINE_func_8017D5F8() /* dedup: shared engine-core @0x8017D5F8 (src/shared) */ - - - -extern void (*D_8018D49C[])(void); - -void func_8017D63C(void *a0) { - D_8018D49C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -/* func_8017D678 -- ov_SC03_014, TU ov_SC03_014_jr_8017AE2C.c - * - * §160g sibling-first: destination TU itself has the exact template two functions earlier, - * func_8017CE90 (same TU, same family, allocate-then-attach-a-fixed-color-quad shape): - * - func_801465C0 loose `void(void)` file-scope decl (TU line 130/3614/3910), fought via a - * zero-arg cast-at-callsite `((void *(*)(void))func_801465C0)()` (§161c). - * - func_8001CD04(void*,void*) shared-engine helper (src/800.c, INCLUDE_ASM) that stores its - * 2nd arg into (a0+0x20) -- confirms s1=result-object, s0=&D_801D4268 retained address. - * - `*(s1+4) |= 0x50000000` computed and stored in the delay slot of the FOLLOWING - * func_800233CC jal (same instruction-order idiom as func_8017CE90's identical line). - * - func_80146C3C(void) called on the alloc-failure path with the object pointer cast in - * (`((void (*)(void *))func_80146C3C)(a0)`), same as func_8017CE90's else-branch. - * func_80146E90(s32*,s32) is already declared+called directly (no cast) at TU line 3801 - * (`func_80146E90((s32 *)a0, 0x20);`) -- reused verbatim here with a different 2nd arg. - * The color-quad global block D_801D4268.. is fixed by this TU's OWN later sibling - * func_8017D900 (a few lines below in the same file), whose header comment explicitly notes: - * "In-TU sibling func_8017D678 shows D_801D4269/D_801D426A are SEPARATE u8 globals (each gets - * its own lui/%lo sb)" -- i.e. func_8017D900 was written FROM this function's own asm. That - * comment also fixes D_801D426C as a plain u8 (its Quad_801EA880 4-byte-struct framing only - * matters for func_8017D900's block-copy; here each of D_801D426C/885/886 gets an independent - * byte store, so plain scalar externs are correct and sufficient). - * - * Source statement order mirrors instruction order 1:1 (straight-line alloc/init, no branches - * inside the success path); the `a0 = s2` register move for the func_80146E90 call argument is - * expected to be scheduler-hoisted early by gcc/sched2 exactly as seen in every other sibling in - * this TU -- no special C construct needed for that. - */ - -extern void func_801465C0(void); -extern void func_8001CD04(void *a0, void *a1); -extern void func_800233CC(void *a0, u16 a1); -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146C3C(void); - - -void func_8017D678(void *a0) -{ - - extern u8 D_801D4268; - extern u8 D_801D4269; - extern u8 D_801D426A; - extern u8 D_801D426C; - extern u8 D_801D426D; - extern u8 D_801D426E; - void *s1; - void *s0; - s32 pad[10]; - - s1 = ((void *(*)(void))func_801465C0)(); - *(void **)((u8 *)a0 + 0x20) = s1; - - if (s1 != NULL) { - s0 = &D_801D4268; - func_8001CD04(s1, s0); - - *(s32 *)((u8 *)s1 + 4) |= 0x50000000; - func_800233CC(s0, 0x100); - - *(s16 *)((u8 *)s1 + 0x1A) = 0; - *(s16 *)((u8 *)s1 + 0x18) = 0; - *(s32 *)((u8 *)a0 + 0x10) = 0x80; - *(s16 *)((u8 *)s1 + 0x2C) = 0x10; - - *(u8 *)s0 = 0xFF; - D_801D4269 = 0xFF; - D_801D426A = 0xFF; - D_801D426C = 0; - D_801D426D = 0; - D_801D426E = 0; - - func_80146E90((s32 *)a0, 0xC0); - *(u16 *)((u8 *)a0 + 0x2) = *(u16 *)((u8 *)a0 + 0x2) + 1; - } else { - ((void (*)(void *))func_80146C3C)(a0); - } -} - - -extern s32 func_8004787C(s32 a0); -extern s32 func_80146E98(s32 a0); -extern u16 D_8018D40C[]; -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80147324(s32 arg0); - -void func_8017D75C(s32 param) { - s32 a0; - s32 v0; - s32 v1; - s32 *s1; - - a0 = *(s32 *)(param + 0x1C) & 0x3F; - s1 = (s32 *)(*(s32 *)(param + 0x20)); - v0 = func_8004787C(a0 << 6); - - v1 = *(s32 *)(param + 0x10); - if (v0 < 0) { - v0 += 0x7F; - } - v0 = v0 >> 7; - v1 = v1 + v0; - v0 = v1; - - *(s16 *)((u8 *)s1 + 0x1A) = v0; - *(s16 *)((u8 *)s1 + 0x18) = v0; - - v0 = func_80146E98(param); - if (v0 != 0) { - ((void (*)(s32, s32))func_80146E90)(param, 0x40); - - v0 = *(s32 *)(param + 0x2C); - v0 = D_8018D40C[v0 << 1]; - func_80147324(v0); - - v0 = *(u16 *)(param + 0x2); - *(s16 *)(param + 0x2) = v0 + 1; - } -} - - -DEFINE_func_8017D804() /* dedup: shared engine-core @0x8017D804 (src/shared) */ - - -extern u8 D_801D426C; -extern u8 D_801D426D; -extern u8 D_801D426E; - -void func_8017D890(arg0, a1) -void *arg0; -void *a1; -{ - s16 var; - - a1 = *(void **)((s32)arg0 + 0x20); - var = *(u16 *)((s32)a1 + 0x1A) + 0x200; - *(u16 *)((s32)a1 + 0x1A) = var; - *(u16 *)((s32)a1 + 0x18) = var; - if (var >= 0x1001) { - D_801D426C = 0xFF; - D_801D426D = 0xFF; - D_801D426E = 0xFF; - *(u16 *)((s32)a1 + 0x1A) = 0x1000; - *(u16 *)((s32)a1 + 0x18) = 0x1000; - *(u16 *)((s32)arg0 + 2) = *(u16 *)((s32)arg0 + 2) + 1; - } -} - - - -/* func_8017D900 — fade the 4-byte colour quad at D_801D4268 one step toward 0 - * (func_80012F74 = "step a value toward a target"), splat the byte over the - * three sibling bytes, mirror the whole quad into the three following quads, - * then tear the entity down once the byte reaches 0. - * - * §71 sibling-first: DEFINE_func_801685EC() (engine_core.h L8520) is the same - * `if ( == 0) ((void (*)(s32))func_80146C3C)(arg0);` teardown tail. - * In-TU sibling func_8017D678 shows D_801D4269/D_801D426A are SEPARATE u8 - * globals (each gets its own lui/%lo sb) while D_801D4268's address lives in a - * callee-saved register. - * - * @class: schedule (LENGTH-DRIFT/-1) - * @stuck: none — MATCH 50/50 (match_one AND rtu_match), iteration 2. - * THE CRACK (one edit): the TRAILING reload `if (*p == 0)` was being hoisted by - * sched2 up past the third block move, where the swl/swr pair covered its load - * delay — costing exactly the one `nop` the target keeps (49 vs 50 ins, - * LENGTH-DRIFT/-1). A second zero-byte `__asm__("")` fence between the last - * struct assignment and the `if` pins the lbu after the copies and the load-delay - * nop reappears. Lesson: an inline block move (swl/swr) is a fat delay-slot - * SPONGE — any following narrow load will be sucked up into it unless fenced. - * The first fence (after the chained byte stores) is what keeps the block moves - * from being interleaved with them. - * Other levers already in this draft, all load-bearing: - * - `u8 *p = &D_801D4268;` (§20) — one address register ($s0, callee-saved - * across the jal) serves the lbu, the sb and all three block-move sources. - * - chained assignment `D_801D4269 = D_801D426A = *p = f(...)` gives the - * target's store order 880, 882, 881 (right-to-left after the *p store). - * - the 4×u8 struct (align 1) is what makes the assignment expand to inline - * lwl/lwr + swl/swr instead of a `jal memcpy` (cf. §38). - */ - - /* align 1 => movstrsi expands to lwl/lwr + swl/swr */ - - -extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80146C3C(void); - -void func_8017D900(s32 arg0) { - - extern u8 D_801D4268; - extern u8 D_801D4269; - extern u8 D_801D426A; - extern u8 D_801D426C; - extern u8 D_801D4270; - extern u8 D_801D4274; - u8 *p = &D_801D4268; - - D_801D4269 = D_801D426A = *p = func_80012F74(*p, 0, 10, 1); - __asm__(""); - *(Quad_801EA880_8017D900 *)&D_801D426C = *(Quad_801EA880_8017D900 *)p; - *(Quad_801EA880_8017D900 *)&D_801D4270 = *(Quad_801EA880_8017D900 *)p; - *(Quad_801EA880_8017D900 *)&D_801D4274 = *(Quad_801EA880_8017D900 *)p; - __asm__(""); - if (*p == 0) { - ((void (*)(s32))func_80146C3C)(arg0); - } -} - - -extern s32 D_8011D030; -extern u16 D_8018D3D0[][2]; -extern void func_80146C3C(); -extern void func_80147364(u16, s32); - -void func_8017D9C8(s32 a0) { - - extern s32 D_8011D030; - extern u16 D_8018D3D0[][2]; - u8 *p = (u8 *)&D_8011D030; - - if ((u32)p < (u32)((u8 *)&D_8011D030 + 0xA50)) { - do { - if (*(u16 *)p == 0x2B) { - ((void (*)(s32))func_80146C3C)((s32)p); - } - if (*(u16 *)p == 0x2C) { - *(u16 *)(p + 2) = *(u16 *)(p + 2) + 1; - } - p += 0x58; - } while ((u32)p < (u32)((u8 *)&D_8011D030 + 0xA50)); - } - - func_80147364(4, D_8018D3D0[a0][0]); -} - - -extern s16 D_80126B30; -extern s16 D_80126B3A; -extern s32 D_8012750C; -extern s16 D_8011F9C8; -extern void func_80174684(void *); -extern void func_8017DB00(void *); - -struct S8_8017DA98 { s16 m[4]; }; - -void func_8017DA98(s16 a0, void *a1, s32 a2) { - *(struct S8_8017DA98 *)&D_80126B30 = *(struct S8_8017DA98 *)a1; - D_80126B3A = a0; - D_8012750C = a2; - func_80174684((void *)func_8017DB00); - (*(s32 *)&D_8011F9C8) = 0; -} - - - -extern void (*D_8018D620[])(void); - -void func_8017DB00(void *a0) { - D_8018D620[*(u8 *)((s32)a0 + 0x214)](); -} - - -DEFINE_func_8017DB3C() /* dedup: shared engine-core @0x8017DB3C (src/shared) */ - - -DEFINE_func_8017DB74() /* dedup: shared engine-core @0x8017DB74 (src/shared) */ - - -DEFINE_func_8017DBC4() /* dedup: shared engine-core @0x8017DBC4 (src/shared) */ - - - -DEFINE_func_8017DC28() /* dedup: shared engine-core @0x8017DC28 (src/shared) */ - - -extern s32 D_8018D4B8; -extern u8 D_800B9A11; -extern void func_8012943C(void); -extern void func_8013C938(void); -extern void func_8014706C(void *arg0); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80171A1C(u8 *a0); - - void func_8017DC4C(s32 *a0) { - s32 v0 = a0[0x80]; - s32 v1; - v1 = v0 - 1; - a0[0x80] = v1; - if (v1 != -1) { - return; - } - func_8014706C(a0); - func_80154274(a0, (s32)&D_8018D4B8); - func_8013C938(); - D_800B9A11 = 0xC0; - func_8012943C(); - func_80171A1C((u8 *)a0); - } - - -extern s16 D_80126B3A; -extern s16 D_80126B3C; -extern void func_80171A1C(u8 *a0); -extern void func_8017C624(); - -void func_8017DCC0(a0) -u8 *a0; -{ - s32 v; - if (*(u16 *)(a0 + 0xB8) & 0x8000) { - switch ((s16)(*(u16 *)&D_80126B3A - 2)) { - case 0: v = 0; break; - case 1: v = 1; break; - case 2: v = 2; break; - case 3: v = 3; break; - case 4: v = 4; break; - } - D_80126B3C = v; - func_8017C624(a0, -0x60, v); - func_80171A1C(a0); - } -} - - -DEFINE_func_8017DD74() /* dedup: shared engine-core @0x8017DD74 (src/shared) */ - - -extern s32 func_8013767C(s32 a0); -extern void func_80171A1C(u8 *a0); -extern s32 D_8012750C; -extern s32 D_80126B58; -extern s32 D_80126CF0; - -void func_8017DD7C(void) { - s32 v0; - v0 = func_8013767C(D_8012750C); - D_80126CF0 = v0; - func_80171A1C((u8 *)&D_80126B58); -} - - -DEFINE_func_8017DDBC() /* dedup: shared engine-core @0x8017DDBC (src/shared) */ - - - - -extern u8 D_8018D55C; -extern u8 D_800B9A11; -extern void func_80129428(void); -extern void func_8013C964(void); -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80171A1C(u8 *a0); - -void func_8017DE24(s32 *a0) { - s32 v0 = a0[0x80]; - s32 v1; - v1 = v0 - 1; - a0[0x80] = v1; - if (v1 != -1) { - return; - } - func_80154274(a0, (s32)&D_8018D55C); - func_8013C964(); - D_800B9A11 = 0; - func_80129428(); - func_80171A1C((u8 *)a0); -} - - -extern s16 D_8011F9C8; -extern s16 D_80126B3A; -extern s32 func_80174650(s32); -extern void func_80029124(s32, s32); -extern void func_80029514(s32); -extern void func_80147060(u8 * a0); -extern void func_80147324(s32 arg0); -extern void func_80171A1C(u8 *a0); - -void func_8017DE8C(a0) -u8 *a0; -{ - u16 flags = *(u16 *)(a0 + 0xB8); - - if (flags & 0x4000) { - func_80147324(0x445); - return; - } - if (!(flags & 0x8000)) { - return; - } - func_80147060(a0); - switch ((s16)(*(u16 *)&D_80126B3A - 2)) { - case 0: - func_80029124(0x16, 1); - func_80029514(0x85); - break; - case 1: - func_80029124(0x17, 1); - break; - case 2: - func_80029124(0x18, 1); - break; - case 3: - func_80029124(0x19, 1); - break; - case 4: - func_80029124(0x1A, 1); - break; - } - (*(s32 *)&D_8011F9C8) = 1; - func_80174650((s32)a0); - func_80171A1C(a0); -} - - -DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ - -extern s32 func_80029178(s32 arg); -extern s32 func_80029504(void); -extern void func_8012A828(s32 a0, void * a1); -extern void func_8012CAE4(void *a0); -extern s32 func_8012C354(s32 a0, s32 a1); -extern s32 func_80143970(s32 a0); - -/* --- overlay-local data; none of these are declared anywhere in the TU. --- */ - -void func_8017DF84(void *a0) { - - extern u8 D_80078E78[]; - extern s16 D_801D42E0; - extern u8 D_8018D910[]; - extern u8 D_8018D7E4[]; - extern u8 D_8018D64C[]; - extern u8 D_8018D818[]; - extern s32 D_801D42E4; - extern s32 D_801D42E8; - /* §17 base-pointer cache: the D_80078E78 base is read ONCE at +0x1A but the original - still pinned it in callee-saved $s1 across the first call -- that only happens when - the base is a pointer LOCAL, not a direct D_80078E78[0x1A] (which folds %lo per use). */ - u8 *p = D_80078E78; - s32 t; - - if ((u8)func_80029178(D_8018D910[*(s16 *)((s32)a0 + 0x70)]) != 0 || - (*(s16 *)((s32)a0 + 0x70) == 4 && (u32)func_80029504() < 0xC8)) { - func_8012CAE4(a0); - return; - } - - t = *(u16 *)(p + 0x1A); - if (t < 0x12C || t > 0x527) { - if (*(s32 *)((s32)a0 + 0x20) != 0) { - return; - } - if (func_8012C354((s32)a0, (s32)D_8018D7E4) == 0) { - return; - } - *(u16 *)((s32)a0 + 0x5C) |= 0x10; - func_8012A828((s32)a0, D_8018D64C); - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x2C) |= 0x10; - *(s32 *)&D_801D42E0 = *(s16 *)((s32)a0 + 0x88) << 16; - D_801D42E4 = *(s16 *)((s32)a0 + 0x8A) << 16; - D_801D42E8 = *(s16 *)((s32)a0 + 0x8C) << 16; - *(s32 *)((s32)a0 + 0xCC) = func_80143970((s32)a0); - *(s16 *)((s32)a0 + 0xFC) = 0; - *(s32 *)((s32)a0 + 0x1C) = 0x10; - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - } else { - if (*(s32 *)((s32)a0 + 0x20) != 0) { - return; - } - if (func_8012C354((s32)a0, (s32)D_8018D818) == 0) { - return; - } - *(s16 *)((s32)a0 + 0xAE) = -4; - *(s32 *)((s32)a0 + 0xCC) = func_80143970((s32)a0); - *(u16 *)((s32)a0 + 0x2) = 7; - } -} - - -extern void func_8012A828(s32 a0, void * a1); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_8017E8D4(s32 a0, s16 a1, s16 a2); -extern void func_8017E948(s16 *a0); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); - -/* - * §136 note (the lever that closed this one): the copy-loop counter and the 8/2 - * selector passed as func_8012BB3C's 4th argument are ONE `short` local, not two. - * - As two locals, combine's set_nonzero_bits_and_sign_copies sees the selector - * pseudo set only to 8 and 2, proves num_sign_bit_copies >= 17, and DELETES the - * `sll/sra 16` argument sign-extension => LENGTH-DRIFT -2. - * - Sharing the pseudo with the loop's `i = i + 1` makes the union of sets - * unprovable, so the extension survives -- and the merged (longer) live range is - * what takes $a3 while the two loop-invariant base addresses take $a1/$a2. - */ -void func_8017E120(s32 a0) { - - extern void (*D_8018D6D4[])(void); - extern s16 D_801D42E0; - extern s32 D_801D42EC; - extern s32 D_801D42F4; - s32 v0; - s32 v1; - - v0 = *(s32 *)(a0 + 0x1C); - v1 = -1; - v0 = v0 - 1; - *(s32 *)(a0 + 0x1C) = v0; - - if (v0 == v1) { - s32 t; - s16 i; - s32 ret; - s32 ang; - - func_8012A828(a0, (void *)&D_8018D6D4); - - t = *(u16 *)(a0 + 0x10A) + 1; - *(u16 *)(a0 + 0x10A) = t; - - if ((t & 3) != 0) { - if (*(s16 *)(a0 + 0x104) == 0) { - s32 r = rand(); - s32 x; - s32 y; - - x = *(s16 *)(a0 + 0x88) - 0x200; - x += (r & 0x7F) << 3; - D_801D42EC = x << 16; - - y = *(s16 *)(a0 + 0x8C) - 0x200; - y += (u32)(r & 0x7F00) >> 5; - D_801D42F4 = y << 16; - } else { - func_8017E948((s16 *)a0); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0xC00; - } - } else { - for (i = 0; i < 2; i++) { - ((s32 *)&D_801D42EC)[i] = ((s32 *)&D_801D42E0)[i]; - } - } - - i = 8; - if (*(s16 *)(a0 + 0x108) >= 0xD) { - i = 2; - } - - ret = func_8012BB3C(a0 + 4, (s32)&D_801D42EC, - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), i); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + ret; - - ang = -3 - *(u16 *)(a0 + 0x104); - func_8017E8D4(a0, ang, 0x50); - - if (*(s16 *)(a0 + 0x104) != 0) { - func_80146A6C(2, (void *)a0, 0, 0, 0, 2, 0); - } - - *(s16 *)(a0 + 0x108) = 0; - *(u16 *)(a0 + 2) = *(u16 *)(a0 + 2) + 1; - } else { - s16 d = *(s16 *)(a0 + 0x102); - - if (d != 0) { - s32 r2 = func_8012B8E4(a0, d); - - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + r2; - } - } -} - - -extern void func_8012A828(s32 a0, void * a1); -extern void func_8012ADE4(u8 *a0); -extern void func_8012B200(u8 *a0); -extern s32 func_8012B864(s32 a0); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern void func_8012CBA4(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_8016F1AC(void); -extern s32 func_80178B70(s32 param_1, s32 param_2); -extern void func_8017EA24(s32 a0); -extern void func_8017E8D4(s32 a0, s16 a1, s16 a2); -extern void func_8017E948(s16 *a0); - -void func_8017E324(s32 a0) { - - extern u8 D_8018D64C[]; - extern s32 D_801D42EC; - extern s32 D_8018D8B4; - /* §135-6 dead locals: the target frame is 0x50 = args(0x20, func_80146A6C takes 7) - + var(0x20) + gp(0x10). Only 0x10 of that 0x20 is claimed by real spills, so the - original carried 16 bytes of locals it no longer uses. Without this the frame - lands at 0x40 and every sp-relative immediate drifts by the same constant. */ - s32 dead[4]; - s32 flags; - s32 v; - s32 s0; - s32 ret; - s16 spd; - s32 m; - s32 raw; - - s0 = a0; - ret = 0; - /* §21 zero-byte re-tie. The target reads the RAW return register for the first test - (`andi $v0,$v0,0x6000`) while the saved copy lives in $s1 -- i.e. gcc-2.7.2 kept TWO - pseudos: a local one that dies at the `andi` and a global one that survives the calls. - Every source form of `flags = call(); if (flags & ...)` collapses them (cse canon_reg - substitutes one for the other, so the surviving allocno is the GLOBAL and the `andi` - reads $s1). Re-tying the *global* after the copy makes the pair opaque to cse; `raw` - stays local and takes $v0, which also flips the $v0/$v1 pair on the following - compare constant. 8 no-barrier variants tested (temp var, `register` pin on either - side, inverted test, subtract-form compare): all land on the identical 3-insn - permutation. */ - raw = ((s32 (*)(s32))func_8012CBA4)(a0); - flags = raw; - __asm__ __volatile__("" : "=r"(flags) : "0"(flags)); - - /* `m` blocks fold_truthop from merging the two bitfield tests below into a single - `andi $v1,$s1,0xe000` -- the target keeps `& 0x8000` and `& 0x6000` separate. */ - if ((raw & 0x6000) != 0x2000) { - func_8012ADE4((u8 *)s0); - func_8017EA24(s0); - if (*(s32 *)(s0 + 0x1C) >= 9) { - *(s32 *)(s0 + 0x1C) = *(s32 *)(s0 + 0x1C) - 8; - } - } - - m = flags & 0x8000; - if (m != 0 || (flags & 0x6000) != 0x2000) { - if (*(s16 *)(s0 + 0x106) == 0) { - *(s16 *)(s0 + 0x106) = 0x111; - } - if (*(s32 *)(s0 + 0x1C) >= 5) { - *(s32 *)(s0 + 0x1C) = *(s32 *)(s0 + 0x1C) - 4; - } - *(u16 *)(s0 + 0x108) = *(u16 *)(s0 + 0x108) + 1; - } else { - *(s16 *)(s0 + 0x106) = 0; - } - - v = *(s32 *)(s0 + 0x1C) - 1; - *(s32 *)(s0 + 0x1C) = v; - if (v != 0) { - if ((v & 3) == 0) { - if (func_8012BC60((void *)(s0 + 4), (void *)&D_801D42EC) < 0x900) { - *(s32 *)(s0 + 0x1C) = 1; - } - } - /* The func_8017E8D4 call is written in BOTH arms on purpose: gcc-2.7.2's sched1 - interleaves the $a0/$a2 arg setup into each arm's load-delay slots, and only - then does cross-jumping merge the common tail (it stops at the differing `sh`). - A single call after the if/else leaves those slots as nops (+2 ins, -1 length) - and forces the arm pointer into $a0, wrecking the whole block's allocation. - `ang0`/`ang1` are per-arm locals (§136 L1): one shared local becomes a GLOBAL - allocno (2 deaths) and loses $a1. Both must be s32 -- writing the expression - inline lets convert_to_integer narrow it to UNSIGNED HImode (the u16 operand), - which emits `ori $a1,$zero,0xfffd` instead of `addiu $a1,$zero,-0x3` + sll/sra. */ - if (*(s16 *)(s0 + 0x106) == 0) { - s32 r = func_8012BB3C(s0 + 4, (s32)&D_801D42EC, - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x12), 8); - s32 p = *(s32 *)(s0 + 0x20); - s32 ang0; - *(s16 *)(p + 0x12) = *(u16 *)(p + 0x12) + r; - ang0 = -3 - *(u16 *)(s0 + 0x104); - func_8017E8D4(s0, ang0, 0); - } else { - s32 q = *(s32 *)(s0 + 0x20); - s32 ang1; - *(s16 *)(q + 0x12) = *(u16 *)(q + 0x12) + *(s16 *)(s0 + 0x106); - ang1 = -3 - *(u16 *)(s0 + 0x104); - func_8017E8D4(s0, ang1, 0); - } - if (*(s16 *)(s0 + 0x104) != 0) { - if ((u32)*(s32 *)(s0 + 0x94) < 0xB) { - *(s32 *)(s0 + 0x94) = *(s32 *)(s0 + 0x94) + 1; - } - if ((*(s32 *)(s0 + 0x1C) & 7) == 0) { - ret = 1; - } - } - } else { - s16 t; - - func_8012B200((u8 *)s0); - func_8012A828(s0, D_8018D64C); - *(s32 *)(s0 + 0x1C) = 0x14 - (*(s16 *)(s0 + 0x104) << 1); - if (((s32 (*)(s32))func_8012BD14)(s0) <= 0x23FFF) { - *(s16 *)(s0 + 0x102) = 0xA - *(u16 *)(s0 + 0x104); - } else { - *(s16 *)(s0 + 0x102) = 0; - } - t = *(s16 *)(s0 + 0x104); - if (t != 0) { - t = t - 4; - *(s16 *)(s0 + 0x104) = t; - if (t < 0) { - *(s16 *)(s0 + 0x104) = 0; - } - } - *(s16 *)(s0 + 0x2) = 1; - } - - if (*(s16 *)(s0 + 0xFC) != 0) { - if (func_8016F1AC() != 0) { - /* §17/idiom-7: 0x801891F4 is INTERIOR to D_801891D8 and has no symbol, but the - target does NOT build it with its own %hi/%lo -- it derives it from the - D_8018D8B4 base already in $a2 (`addiu $a1,$a2,-0x1C`). Caching the base in - a POINTER LOCAL reproduces that; `(s32)&D_8018D8B4 - 0x1C` folds into a - second lui/addiu pair and splits the store into lui+sw($at). */ - s32 *tbl = &D_8018D8B4; - - *(s16 *)(s0 + 0x10A) = 0; - *tbl = *(u16 *)(s0 + 0x88) | (*(s16 *)(s0 + 0x8C) << 16); - func_80178B70(s0, (s32)tbl - 0x1C); - *(s16 *)(s0 + 0x98) = 0; - *(s32 *)(s0 + 0x1C) = 0x14; - func_8012B200((u8 *)s0); - *(s16 *)(s0 + 0x2) = 3; - } - return; - } - - if (*(u16 *)(s0 + 0x5E) != 0) { - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x12) = *(u16 *)(s0 + 0x62); - func_8017E8D4(s0, -0xF, 0); - func_8017E948((s16 *)s0); - *(s16 *)(s0 + 0x5E) = 0; - *(s16 *)(s0 + 0x104) = 0xA; - ret = 1; - } else { - s32 d = ((s32 (*)(s32))func_8012BD14)(s0); - - if (d <= 0xFFFF) { - spd = 0; - if (d >= 0x4000) { - spd = (func_8012BDBC(s0, 0x500) != 0) << 2; - } else if (d >= 0x1000) { - if (func_8012BDBC(s0, 0x680) != 0) { - spd = 7; - } - } else { - spd = 9; - } - if (spd != 0) { - func_8017E948((s16 *)s0); - if (*(s16 *)(s0 + 0x104) == 0) { - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x12) = func_8012B864(s0) - 0x800; - ret = 1; - } - *(s16 *)(s0 + 0x104) = spd; - func_8017E8D4(s0, -7 - spd, 0); - } - } - } - - /* Same §21 re-tie as the prologue, mirrored: the target evaluates the flag through a - LOCAL copy (`addu $v0,$s2,$zero`, which reorg then duplicates into the two branch - delay slots) rather than testing $s2 directly. A plain `fire = ret` is copy- - propagated away; re-tying the global keeps the pair distinct. Without it the three - copies vanish and everything from .L8017CD18 on drifts by 2 instructions. */ - { - s32 fire = ret; - __asm__ __volatile__("" : "=r"(ret) : "0"(ret)); - if (fire != 0) { - func_80146A6C(2, (void *)s0, 0, 0, 0, 2, 0); - } - } -} - - -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void * a1); -extern void func_8012AD80(s32 a0); -extern s32 func_8012E778(int param_1, int param_2); -extern s32 func_801439C0(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern int func_80178970(void); -extern void func_8012CBA4(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012B200(u8 *a0); - - -void func_8017E718(s32 a0) { - - extern u8 D_8018D64C[]; - s32 v1; - s32 v0; - s32 p; - - func_80178970(); - - if (*(s16 *)(a0 + 0x108) < 0x10) { - if (*(s16 *)(a0 + 0xFE) != 0) { - v1 = ((s32 (*)(s32))func_8012CBA4)(a0); - } else { - v1 = ((s32 (*)(s32))func_8012CBF4)(a0); - } - if ((v1 & 0x8000) != 0) { - *(u16 *)(a0 + 0x108) = *(u16 *)(a0 + 0x108) + 1; - } - if ((v1 & 0x2000) != 0) { - *(s16 *)(a0 + 0xFE) = 1; - } else { - *(s16 *)(a0 + 0xFE) = 0; - } - } else { - func_8012AD80(a0); - } - - if ((*(s32 *)(a0 + 0x1C) & 7) == 0) { - func_80146A6C(2, (void *)a0, 0, 0, 0, 2, 0); - } - if ((*(s32 *)(a0 + 0x1C) & 0xF) == 0) { - func_8002D4C8(0x828, 0); - } - - v0 = *(s32 *)(a0 + 0x1C) - 1; - *(s32 *)(a0 + 0x1C) = v0; - if (v0 != -1) { - if (func_8012E778(a0, 0x8000A8) != 0) { - return; - } - } - - *(s16 *)(a0 + 0x10A) = 1; - func_8012B200((u8 *)a0); - func_8012A828(a0, D_8018D64C); - - *(s16 *)(a0 + 0x104) = 0; - *(s16 *)(a0 + 0x102) = 0xA; - p = *(s32 *)(a0 + 0x20); - *(s32 *)(p + 4) |= 0x80000000; - - func_801439C0(*(s32 *)(a0 + 0xCC)); - - *(s32 *)(a0 + 0x1C) = 0x14; - *(s16 *)(a0 + 0x2) = 6; -} - - - -extern void (*D_8018D920[])(void); - -void func_8017E898(void *a0) { - D_8018D920[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -/* func_8017E8D4 -- ov_SC03_002 / ov_SC03_002_jr_8017AE2C - * - * func_8012B0B4 (the polar->cartesian helper) is NOT declared anywhere in this TU - * (grep of the WHOLE file: 0 hits for "8012B0B4", including below the splice point), - * so the project-canonical engine-core prototype is used VERBATIM and no conflict - * is possible. It writes ONE packed u32 (lo half = x, hi half = z) through param_1. - * - * Three non-obvious shape choices, all byte-forced: - * - * 1. `u32 buf[4]` (16 bytes of locals) -- NOT the 8-byte scratch the sibling - * func_8012B0B4 callers use. frame = args(0x10) + var(0x10) + gp(0xC) = 0x2C - * -> rounded 0x30, putting $s0/$s1/$ra at 0x20/0x24/0x28 exactly as the target. - * An 8-byte buffer gives 0x28 (§135-6, the dead-locals/frame-padding lever). - * - * 2. The two reads of buf must be TWO DISTINCT memory refs (`*(s16*)buf` and - * `*(s32*)buf`) AND the store to a0+0x10 must sit BETWEEN the SImode load and - * its `>> 16` in SOURCE order. gcc-2.7.2's combine narrows `(mem:SI >> 16)` - * into a sign-extending `lh` at +2 (that is §135-11 / T5 seen from the other - * side); can_combine_p refuses to sink the load across the intervening store, - * which is what keeps the target's `lw 0x10($sp)` + `sra 16`. Every ordering - * that puts the two shifts adjacent to their loads collapses to 28 ins. - * - * 3. The `$2` pin on `hi`. Post-sched1 the block is - * lh(lo) lw(hi) sll(lo) sw(0x10) sra(hi) sll(hi) sw(0x18) - * so local-alloc's qty densities (local-alloc.c:1579 qty_compare, - * floor_log2(refs)*refs/(death-birth)) are lo = 2*4/5 = 16000 vs - * hi = 2*6/9 = 13333 -> lo allocates FIRST and takes $v0, the mirror image of - * the target. sched1 normalises every statement permutation to the same - * stream, so the §136 local-variable lever is inert here (8 no-pin variants - * tested -- decl order, scope, split temps, s16/u16 lo, `* 0x1000`, an early - * `t = a2`: all land on the identical 7-insn $v0<->$v1 permutation). Pinning - * the SImode load to $v0 short-circuits the density contest (RC-3): its init - * is `pinned = expr`, so it computes directly into the hard reg with NO extra - * move, $v0 is live across lo's whole range so lo is pushed to $v1, and the - * shift results are born after $v0 dies and reclaim it. - */ - -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); - -void func_8017E8D4(s32 a0, s16 a1, s16 a2) { - u32 buf[4]; - register s32 hi __asm__("$2"); - s32 lo; - - func_8012B0B4(buf, *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), a1 << 4); - - lo = *(s16 *)buf; - hi = *(s32 *)buf; - *(s32 *)(a0 + 0x10) = lo << 12; - *(s32 *)(a0 + 0x18) = (hi >> 16) << 12; - if (a2 != 0) { - *(s32 *)(a0 + 0x1C) = a2; - } -} - - -extern s32 func_8012B6D4(s16 *a0, s16 *a1); - -void func_8017E948(s16 *a0) { - - extern u8 D_80126B5C; - extern s16 D_801D42E0; - extern s32 D_801D42EC; - extern s32 D_801D42F4; - extern u8 D_8018D84C[]; - extern s16 D_8018D86C[]; - extern s16 D_8018D86E[]; - /* The target frame is 0x28 with only $s0/$s1/$ra saved at 0x18/0x1C/0x20, i.e. 8 bytes - of locals sit below the register save area and are never touched. The original source - declared a local it no longer uses; the same fossil is visible in the neighbours - (func_8017C594 carries 16 such bytes). gcc-2.7.2 still reserves the slot. */ - s32 sp10[2]; - s32 a, b, t, r, off, x, y; - - a = (func_8012B6D4((s16 *)&D_80126B5C, &D_801D42E0) >> 7) & 0x18; - b = func_8012B6D4(a0 + 2, &D_801D42E0); - t = a | ((b >> 9) & 7); - off = D_8018D84C[t] << 2; - r = rand(); - - /* The struct reads are plain INDIRECT_REFs, not ARRAY_REFs: an `a0[0x46]` here sets - MEM_IN_STRUCT_P, which lets gcc-2.7.2's true_dependence() drop the dependence against - the constant-address store and hoist the second `lh` above `sw D_801D42EC`. */ - x = *(s16 *)((s32)a0 + 0x88) + *(s16 *)((u8 *)D_8018D86C + off) - 0x100; - x += (r & 0x7F) << 2; - D_801D42EC = x << 16; - - y = *(s16 *)((s32)a0 + 0x8C) + *(s16 *)((u8 *)D_8018D86E + off) - 0x100; - y += (unsigned)(r & 0x7F00) >> 6; - D_801D42F4 = y << 16; -} - - - - -/* func_8017EA24 -- ov_SC02_011 / ov_SC02_011_jr_8017AE2C [target: 133 ins] - * - * Structural twin of func_8017D0BC (ov_SC03_002/ov_SC03_002_jr_8017AE2C.c), - * banked [MATCH, 133 ins] this session -- same jr_8017AE2C shared layout, - * identical struct-offset chain (a0+0x6/0xA/0xE/0x10/0x12/0x16/0x18/0x1A) and - * identical call sequence (func_80133784 -> ratan2 x2 -> angle-wrap -> - * RotMatrixY -> ApplyMatrixSV -> func_8012CEB0). Reused verbatim per §136c - * sibling-first (declaration + expression forms are already byte-proven for - * this exact body). - * - * §136 L1/RC-5 note carried from the twin: `ang` (second ratan2 result) is a - * GLOBAL allocno spanning the +/-0x480 arms, while the `ang - base` compare - * temp is a LOCAL allocno in the same block; unpinned gcc hands the local - * temp $v0 and pushes `ang` to $v1 (REGALLOC-PERM). Pinning `ang` to $v0 - * fixes the swap, and reusing the now-dead `ang` as the a0[0x6] scratch - * (instead of a fresh local) avoids stealing back the $v0 slot. - */ - - -void func_8017EA24(s32 a0) { - extern void ApplyMatrixSV(void *a0, void *a1, void *a2); - extern s32 ratan2(s32 a0, s32 a1); - extern s16 D_801152B0; - extern s16 D_801152B4; - extern s32 func_80133784(s32 a0, void *a1, s32 a2); - extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); - extern void RotMatrixY(s32 a0, void *a1); - extern Mtx8_8017DE10_8017EA24 D_800AE620; - - u8 in[8]; - u8 out[8]; - Mtx8_8017DE10_8017EA24 m; - s32 base; - register s32 ang __asm__("$2"); - s16 arg; - - *(s16 *)(in + 0) = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x12); - *(s16 *)(in + 2) = *(u16 *)(a0 + 0xA) + 8; - *(s16 *)(in + 4) = *(u16 *)(a0 + 0xE) + *(u16 *)(a0 + 0x1A); - *(s16 *)(out + 0) = *(u16 *)(a0 + 0x6); - *(s16 *)(out + 2) = *(u16 *)(a0 + 0xA) + 8; - *(s16 *)(out + 4) = *(u16 *)(a0 + 0xE); - if ((func_80133784(1, &in[0], (s32)&out[0]) & 0xC000) != 0) { - base = ratan2(D_801152B0, D_801152B4) & 0xFFF; - ang = ratan2(*(s32 *)(a0 + 0x10), *(s32 *)(a0 + 0x18)) & 0xFFF; - if ((s16)(ang - base) < 0) { - ang += 0x480; - } else { - ang -= 0x480; - } - arg = base - ang; - ang = *(u16 *)(a0 + 0x6); - *(s16 *)(in + 0) = ang; - *(s16 *)(in + 2) = *(u16 *)(a0 + 0xA); - *(s16 *)(in + 4) = *(u16 *)(a0 + 0xE); - m = D_800AE620; - RotMatrixY(arg, &m); - *(s16 *)(out + 0) = *(u16 *)(a0 + 0x12); - *(s16 *)(out + 2) = *(u16 *)(a0 + 0x16); - *(s16 *)(out + 4) = *(u16 *)(a0 + 0x1A); - ApplyMatrixSV(&m, &out[0], &out[0]); - *(s16 *)(out + 0) = *(u16 *)(a0 + 0x6) + ((s16)*(u16 *)(out + 0) >> 1); - *(s16 *)(out + 2) = *(u16 *)(a0 + 0xA) + ((s16)*(u16 *)(out + 2) >> 1); - *(s16 *)(out + 4) = *(u16 *)(a0 + 0xE) + ((s16)*(u16 *)(out + 4) >> 1); - if ((func_8012CEB0((s32)&in[0], (s32)&out[0], 0) & 0x2000) != 0) { - *(s16 *)(a0 + 0x6) = *(u16 *)(out + 0); - *(s16 *)(a0 + 0xA) = *(u16 *)(out + 2); - *(s16 *)(a0 + 0xE) = *(u16 *)(out + 4); - } - } -} - - - -extern int func_80178970(void); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void * a1); -extern void func_8012B14C(s32 a0, s32 a1); - -void func_8017EC38(s32 a0) { - - extern u8 D_8018D73C[]; - s32 p; - u16 v; - s32 sp10[3]; - - func_80178970(); - - v = *(u16 *)(a0 + 0x5E); - if ((v == 0x9) | (v == 0x11)) { - p = func_8012C658(0x30, 2, a0); - if (p == 0) { - return; - } - *(u16 *)(p + 0xA) -= 0x20; - *(u16 *)(p + 0x16) -= 0x10; - func_8002D4C8(0x829, 0); - - *(s16 *)(a0 + 0x5E) = 0; - func_8012A828(a0, D_8018D73C); - - sp10[0] = 0; - sp10[1] = 0xFFF20000; - sp10[2] = 0x70000; - func_8012B14C(a0, (s32)sp10); - - *(s32 *)(a0 + 0x48) = 0x10000; - *(s32 *)(a0 + 0x1C) = 0x40; - *(s16 *)(a0 + 0x108) = 0; - *(s16 *)(a0 + 0x2) = 4; - } -} - - - - -extern int func_80178970(void); -extern s32 func_8012CBCC(s32 a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_8012A828(s32 a0, void *a1); -extern void func_8012B2CC(s32 a0); -extern void func_8012B14C(s32 a0, s32 a1); - -void func_8017ED0C(s32 a0) { - - extern void (*D_8018D6D4[])(void); - s32 v0, v1; - s32 stack[3]; - - func_80178970(); - - v0 = *(s32*)((s32)a0 + 0x1C); - v1 = -1; - v0 = v0 - 1; - *(s32*)((s32)a0 + 0x1C) = v0; - - if (v0 != v1) { - v0 = func_8012CBCC(a0); - if ((v0 & 0x2000) == 0) { - return; - } - } - - func_80146A6C(2, (void*)a0, 0, 0, 0, 0, 0); - func_8012A828(a0, (void*)&D_8018D6D4); - - v1 = *(s32*)((s32)a0 + 0x20); - v0 = *(u16*)((s32)v1 + 0x12); - v0 = v0 + 0xB00; - *(u16*)((s32)v1 + 0x12) = v0; - - stack[0] = 0; - stack[1] = 0; - stack[2] = 0xFFF40000; - - func_8012B2CC(a0); - func_8012B14C(a0, (s32)stack); - - *(u16*)((s32)a0 + 0xFE) = 1; - *(s32*)((s32)a0 + 0x1C) = 0x40; - *(u16*)((s32)a0 + 0x2) = 5; -} - - - -extern int func_80178970(void); -extern void func_80178D18(void); -extern void func_80029124(s32 a0, s32 a1); -extern void func_8012C218(s32 a0); - -void func_8017EDDC(s32 a0) -{ - - extern u8 D_8018D910[]; - if (func_80178970() == 0) return; - - ((void (*)(s32))func_80178D18)(a0); - - func_80029124((s32)D_8018D910[*(s16 *)((s32)a0 + 0x70)], 1); - func_8012C218(a0); -} - - - -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_8012E778(s32 param_1, s32 param_2); -extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); -extern s32 func_801439C0(s32 a0); -extern void func_8012C218(s32 a0); - -void func_8017EE34(s32 a0) -{ - - extern u8 D_80078E78[]; - extern s32 D_8018D8F0; - s32 s0 = a0; - u8 *v1 = D_80078E78; - s32 v0; - - if (*(s16 *)((u8 *)s0 + 0x100) != 0) { - goto L_8017D524; - } - - if (*(u16 *)((u8 *)s0 + 0x5E) == 0) { - goto L_8017D524; - } - - func_80178B18(s0, (s32)&D_8018D8F0); - *(s16 *)((u8 *)s0 + 0x100) = 1; - *(s16 *)((u8 *)s0 + 0x2) = 8; - return; - -L_8017D524: - v0 = (s32)*(u16 *)((u8 *)v1 + 0x1A); - v0 = v0 - 0x12C; - - if (((u16)v0) < 0x3FC) { - goto L_8017D57C; - } - - if (func_8012E778(s0, 0x9000B8) != 0) { - goto L_8017D57C; - } - - if (func_8012C658(0x1F8, *(s16 *)((u8 *)s0 + 0x70), s0) == 0) { - return; - } - - func_801439C0(*(s32 *)((u8 *)s0 + 0xCC)); - func_8012C218(s0); - -L_8017D57C: - if (*(u16 *)((u8 *)s0 + 0x5E) == 0) { - return; - } - - v0 = *(s32 *)((u8 *)s0 + 0x1C); - v0 = v0 + 1; - *(s32 *)((u8 *)s0 + 0x1C) = v0; - - if (v0 < 0x10) { - return; - } - - *(u16 *)((u8 *)s0 + 0x5E) = 0; - *(s32 *)((u8 *)s0 + 0x1C) = 0; -} - - - -extern int func_80178970(void); -extern void func_80178D18(void); - -void func_8017EF2C(s32 a0) { - if (func_80178970() != 0) { - ((void (*)(s32))func_80178D18)(a0); - *(s16 *)(a0 + 2) = 7; - } -} - - - -extern void (*D_8018D95C[])(void); - -void func_8017EF6C(void *a0) { - D_8018D95C[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_800D20C0(void *a0, void *a1, s32 a2); -extern void func_800D23D0(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80146C3C(void); - - -void func_8017EFA8(s32 param_1) { - - extern u8 D_8018D944; - s32 obj = *(s32 *)(param_1 + 0x34); - Work8017 w; - short i; - s32 e; - s32 node; - - func_80146A6C(0x11, (void *)param_1, *(s16 *)(param_1 + 6), - (s16)(*(u16 *)(param_1 + 0xA) - 0x10), - *(s16 *)(param_1 + 0xE), 0, 0); - - w.x = *(u16 *)(param_1 + 6); - w.y = *(u16 *)(param_1 + 0xA); - w.z = *(u16 *)(param_1 + 0xE); - func_800D20C0(&w.x, &w.vx, 10); - *(s16 *)(param_1 + 6) = w.x; - *(s16 *)(param_1 + 0xE) = w.z; - w.vy = 0; - func_800D23D0(&w.vx); - - i = 0; - do { - e = func_80146A6C(0x12, (void *)param_1, *(s16 *)(obj + 6), - *(s16 *)(obj + 0xA), *(s16 *)(obj + 0xE), i, 0); - if (e != 0) { - *(s16 *)(e + 0x12) = w.vx; - *(s16 *)(e + 0x16) = w.vy; - *(s16 *)(e + 0x1A) = 0; - } - i = i + 1; - } while (i < 3); - - node = func_800D222C(param_1, &D_8018D944, 0xFD); - if (node != 0) { - *(s32 *)(param_1 + 0x20) = node; - *(u32 *)(node + 4) = *(u32 *)(node + 4) | 0x5D000100; - ((void (*)(void *))func_8001CF30)((void *)node); - *(s16 *)(node + 0x18) = 0x4000; - *(s16 *)(node + 0x1A) = 0x200; - *(s16 *)(param_1 + 0x16) = 0x200; - *(s16 *)(param_1 + 0x14) = 0x1000; - *(s16 *)(node + 0x28) = 0x240; - *(s16 *)(node + 0x2A) = 0x180; - *(s16 *)(node + 0x10) = w.vx; - *(s16 *)(node + 0x12) = w.vy; - *(s16 *)(param_1 + 2) = *(s16 *)(param_1 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(param_1); - } -} - - -extern void func_80146C3C(void); -void func_8017F16C(u8 *p) { - u8 *q; - s32 t; - s32 b; - q = *(u8 **)(p + 0x20); - *(u16 *)(p + 0x16) = *(u16 *)(p + 0x16) + *(u16 *)(p + 0x14); - if (*(s32 *)(p + 0x1C) < 8) { - *(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x200; - } else { - *(s16 *)(p + 0x14) = *(u16 *)(p + 0x14) - 0x51; - } - b = *(u8 *)(q + 0x26) - 2; - *(s16 *)(q + 0x1A) = *(u16 *)(p + 0x16); - *(s8 *)(q + 0x26) = b; - *(s8 *)(q + 0x25) = b; - *(s8 *)(q + 0x24) = b; - t = *(s32 *)(p + 0x1C); - *(s32 *)(p + 0x1C) = t + 1; - if (t >= 0x1E) { - ((void (*)(u8 *))func_80146C3C)(p); - } -} - - - -extern void (*D_8018D964[])(void); - -void func_8017F200(void *a0) { - D_8018D964[*(u16 *)((s32)a0 + 0x2)](); -} - - - -// @class: plumbing -// @stuck: none — MATCH (41 ins, relocation-masked); frame needed a 0x30 address-taken local - -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern void func_80146C3C(void); -extern u8 D_8018D950; - -void func_8017F23C(s32 a0) { - s32 r; - s32 buf[12]; - - (void)&buf; - r = func_800D222C(a0, &D_8018D950, 0x18); - if (r != 0) { - *(s32 *)(a0 + 0x20) = r; - *(u32 *)(r + 4) = *(u32 *)(r + 4) | 0x5C000140; - func_8001CF30((void *)r); - *(s16 *)(r + 0x10) = 0x400; - *(s16 *)(r + 0x18) = 0x3000; - *(s16 *)(r + 0x1A) = 0x3000; - *(s16 *)(r + 0x28) = 0x248; - *(s16 *)(r + 0x2A) = 0x180; - *(s16 *)(a0 + 2) = *(s16 *)(a0 + 2) + 1; - } else { - ((void (*)(s32))func_80146C3C)(a0); - } -} - - -extern void func_80146C3C(void); -void func_8017F2E0(int a0) { - int v0 = *(int *)(a0 + 0x1C); - register unsigned char *p __asm__("$5") = *(unsigned char **)(a0 + 0x20); - *(int *)(a0 + 0x1C) = v0 + 1; - if (v0 >= 0x1F) { - func_80146C3C(); - } else { - unsigned short hv = *(unsigned short *)(p + 0x1A) + 0x1E0; - signed char bv = *(unsigned char *)(p + 0x26) - 3; - *(unsigned short *)(p + 0x1A) = hv; - *(unsigned short *)(p + 0x18) = hv; - *(signed char *)(p + 0x26) = bv; - *(signed char *)(p + 0x25) = bv; - *(signed char *)(p + 0x24) = bv; - } -} - - - -extern void (*D_8018DA1C[])(void); - -void func_8017F344(void *a0) { - D_8018DA1C[*(u8 *)((s32)a0 + 0x216)](); -} - - -extern void func_8014706C(void *a0); -extern void func_80154274(s32 *a0, s32 a1); -extern s32 func_80171990(u8 *a0); -void func_8017F380(s32 a0) { - - extern u8 D_8018D96C; - func_8014706C((void *)a0); - func_80154274((s32 *)a0, (s32)&D_8018D96C); - func_80171990((u8 *)a0); -} - - -extern s32 func_80171990(u8 *a0); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern void func_80147324(s32 arg0); - -void func_8017F3C0(arg0) -void *arg0; -{ - if (*(u16 *)((s32)arg0 + 0xB8) & 0x4000) { - *(s32 *)((s32)arg0 + 0x44) |= 0x20000; - func_801466F0(0x16, (s32)arg0, 0, -0x80, -0x10, 0, 0, 0); - func_80147324(0x7BC); - func_80171990((u8 *)arg0); - } -} - - -extern s32 func_8014C088(s32 a0, s32 a1); -extern s32 func_8014CB58(void); -extern s32 func_80171990(u8 *a0); -extern void func_8014B5C4(s32 *a0, s32 a1, s32 a2); - -void func_8017F43C(s32 a0) -{ - if (func_8014C088(a0, 0x16) == 0) - { - *(s32 *)(a0 + 0x44) &= ~0x20000; - func_8014B5C4((s32 *)a0, func_8014CB58() & 0xFF, 0x80); - func_80171990((u8 *)a0); - } -} - - -DEFINE_func_8017F49C() /* dedup: shared engine-core @0x8017F49C (src/shared) */ - -DEFINE_func_8017F4A4() /* dedup: shared engine-core @0x8017F4A4 (src/shared) */ - - - - - - - - - - - - - - - - - - - -s32 func_8017F4CC(void) -{ - - extern s32 D_80126D54; - extern s32 D_8018DA14; - int new_var; - ; - new_var++; - new_var = (double) 1; - new_var--; - return ((u32) (D_80126D54 ^ ((u32) (&D_8018DA14)))) == new_var; -} - - -s16 func_8017F4E8(void) { - /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every - LATER function in this TU, which blocks a byte-true decl of a different type. - Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ - extern s16 D_80126B0C; - return D_80126B0C; -} - - -DEFINE_func_8017F4F8() /* dedup: shared engine-core @0x8017F4F8 (src/shared) */ - - - -extern void func_8014659C(void); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146CA0(void *a0); - -void func_8017F558(s32 a0) { - - extern s32 D_801D02DC; - extern s16 D_8018DA60; - extern s16 D_8018DA5E; - extern s16 D_8018DA5C; - s32 iVar1; - s32 iVar2; - - iVar1 = *(s32 *)(a0 + 0x4C); - iVar2 = ((s32 (*)(void))func_8014659C)(); - *(s32 *)(a0 + 0x20) = iVar2; - if (iVar2 != 0) { - func_8001C214(iVar2, (s32)&D_801D02DC); - *(u16 *)(iVar2 + 0x10) = 0x800; - *(u16 *)(a0 + 0x60) = 0; - func_80149374(iVar1, a0 + 4); - func_80146DE8((s32 *)a0, 0, 0xFFC00000, 0); - D_8018DA60 = 0x80; - D_8018DA5E = 0x80; - D_8018DA5C = 0x80; - func_80146CA0((void *)a0); - if (*(s32 *)(a0 + 0x50) == 0) { - *(u16 *)(iVar2 + 0x2c) = *(u16 *)(iVar2 + 0x2c) | 0x10; - } - } -} - - -extern void func_8001C810(s32 a0, s32 a1); -extern void func_8013C9C4(void * arg0); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern void func_80146CA0(void *a0); -extern void func_80147324(s32 a0); -extern void func_80162FC0(s32 *a0); -extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); - -void func_8017F624(s32 a0) { - extern u8 D_8018DA74[]; - extern s32 D_801D0934; - extern s32 D_8018DA2C; - - s32 iVar1; - s32 iVar2; - s16 sVar1; - - iVar1 = *(s32 *)(a0 + 0x4c); - iVar2 = *(s32 *)(a0 + 0x20); - func_8016325C(a0, 0, 0x20000, 0); - func_80162FC0((s32 *)a0); - if ((*(s16 *)(a0 + 0x60) == 0) && (0 < *(s32 *)(a0 + 0x28))) { - u16 uVar1; - *(u16 *)(iVar2 + 0x10) = 0; - uVar1 = *(u16 *)(a0 + 0x60); - *(u16 *)(a0 + 0x60) = uVar1 + 1; - } - sVar1 = *(s16 *)(iVar1 + 0xA); - if (sVar1 < *(s16 *)(a0 + 0xA)) { - u16 uVar1; - s32 uVar2; - *(s16 *)(a0 + 0xA) = sVar1; - func_8013C9C4(D_8018DA74); - *(u16 *)(a0 + 0x60) = *(u16 *)(iVar2 + 0x18); - func_8001C810(iVar2, (s32)&D_801D0934); - *(s32 **)(iVar2 + 0x80) = &D_8018DA2C; - *(u16 *)(iVar2 + 0x2c) = *(u16 *)(iVar2 + 0x2c) | 0xA0; - *(u32 *)(iVar2 + 4) = *(u32 *)(iVar2 + 4) | 0x50000000; - uVar1 = *(u16 *)(a0 + 0x60); - *(u16 *)(iVar2 + 0x1c) = uVar1; - *(u16 *)(iVar2 + 0x1a) = uVar1; - *(u16 *)(iVar2 + 0x18) = uVar1; - if (*(s32 *)(a0 + 0x50) == 0) { - *(u16 *)(iVar2 + 0x2c) = *(u16 *)(iVar2 + 0x2c) | 0x10; - func_801466B4(0x1B, a0, 0, 0, 1); - func_801466B4(0x1B, a0, 1, 0, 1); - func_801466B4(0x1B, a0, 2, 0, 1); - func_801466B4(0x1B, a0, 3, 0, 1); - uVar2 = 0x81D; - } else { - uVar2 = 0xC5E; - } - func_80147324(uVar2); - func_80146CA0((void *)a0); - } else if (*(s16 *)(a0 + 0x60) != 0) { - s16 sVar2; - sVar2 = *(u16 *)(iVar2 + 0x1c) + 0x100; - *(s16 *)(iVar2 + 0x1c) = sVar2; - *(s16 *)(iVar2 + 0x1a) = sVar2; - *(s16 *)(iVar2 + 0x18) = sVar2; - } -} - - - - -void func_8017F7F0(void) { - extern u16 D_8018DA60; - extern s16 D_8018DA5E; - extern s16 D_8018DA5C; - extern void func_80146CA0(void *a0); - s16 sVar1; - - sVar1 = D_8018DA60 + 8; - D_8018DA60 = sVar1; - D_8018DA5E = sVar1; - D_8018DA5C = sVar1; - if (sVar1 >= 0x101) { - ((void (*)(void))func_80146CA0)(); - } -} - - -extern s16 D_8018DA5C; -extern s16 D_8018DA5E; -extern s16 D_8018DA60; -extern void func_80162CCC(void); - -void func_8017F84C(void) { - extern s16 D_8018DA60; - extern s16 D_8018DA5E; - extern s16 D_8018DA5C; - s16 sVar1; - - sVar1 = D_8018DA60 - 8; - D_8018DA60 = sVar1; - D_8018DA5E = sVar1; - D_8018DA5C = sVar1; - if (sVar1 < -0x80) { - func_80162CCC(); - } -} - - -DEFINE_func_8017F8A8() /* dedup: shared engine-core @0x8017F8A8 (src/shared) */ - - -extern void func_8014659C(void); -extern void func_8001C810(s32 a0, s32 a1); -extern void func_80146CA0(void *a0); -extern void func_80162CCC(void); -void func_8017F90C(int param_1) { - - extern u16 D_800DF2E0; - extern s32 D_8018DA2C; - extern s32 D_8018DA88[]; - s32 iVar1; - iVar1 = ((s32 (*)(void))func_8014659C)(); - *(s32 *)(param_1 + 0x20) = iVar1; - if (iVar1 != 0) { - ((void (*)(s32, void *))func_8001C810)(iVar1, &D_800DF2E0); - *(s32 **)(iVar1 + 0x80) = &D_8018DA2C; - *(u32 *)(iVar1 + 4) = *(u32 *)(iVar1 + 4) | 0x50000000; - *(u16 *)(iVar1 + 0x2c) = *(u16 *)(iVar1 + 0x2c) | 0xb0; - *(s32 *)(param_1 + 0x58) = (s32)&D_8018DA88[*(s32 *)(param_1 + 0x50) * 2]; - *(u16 *)(iVar1 + 0x1c) = 0; - *(u16 *)(iVar1 + 0x1a) = 0; - *(u16 *)(iVar1 + 0x18) = 0; - ((void (*)(s32))func_80146CA0)(param_1); - } else { - ((void (*)(s32))func_80162CCC)(param_1); - } -} - - - -/* func_8017F9BC — per-frame spin + clamp handler (ov_SC03_014, reach x8). - * - * Byte-proven shape notes: - * - obj->0x1C/0x1A are read u16 / written s16 (this file's house idiom), so - * "+= 0x800" is lhu+addiu+sh and the compare re-derives the s16 (sll/sra). - * - each clamp needs TWO pseudos: `limN` (s32, the compare operand — it must be - * SINGLE-BLOCK so local-alloc TIES the `slt` dest into it, giving the target's - * `slt $v1,$v1,$v0`) and `lvN` (s16, the store value — it crosses the branch, - * so it is a GLOBAL allocno, global.c never coalesces, and the target's - * `addu $aN,$v1,$zero` copy survives). Sharing one variable per role across - * the two blocks makes both global, kills the tie and loses both copies - * (regalloc map K8). `lvN` must be s16: an s32 copy folds away (-2 ins). - * - `o` (9 refs / 28 insns, density 9642) out-prioritises lv1 (3 refs / 7, - * 4285) in global.c's allocno_compare and grabs $a0 first; the target has - * $a0 = lv, $a1 = o. The zero-byte read-modify-write asm below gives lv1 two - * extra refs (5 refs / 8 insns -> 12500) so it allocates first and takes $a0, - * pushing `o` to $a1. It emits nothing. (Byte-identical alternatives: - * `register s32 o __asm__("$5");`, or pinning lv1/lv2 to "$4".) - * NB gcc-2.7.2 rejects "+r" constraints — use "=r"(x) : "0"(x). - * - the 0x10 phantom frame slot is an address-taken pad (cookbook S17/S36#3). - */ - -extern void func_80146E90(s32 *a0, s32 a1); -extern void func_80146CA0(void *a0); - -void func_8017F9BC(s32 p) { - - extern s16 D_80126B0C; - s32 o; - s32 lim1, lim2; - s16 t1, t2, lv1, lv2; - s32 pad[3]; - - (void)&pad; - o = *(s32 *)(p + 0x20); - t1 = *(u16 *)(o + 0x1C) + 0x800; - *(s16 *)(o + 0x1C) = t1; - *(s16 *)(o + 0x18) = t1; - lim1 = **(s16 **)(p + 0x58); - lv1 = lim1; - __asm__("" : "=r"(lv1) : "0"(lv1)); - if (lim1 < t1) { - *(s16 *)(o + 0x1C) = lv1; - *(s16 *)(o + 0x18) = lv1; - D_80126B0C = 1; - } - t2 = *(u16 *)(o + 0x1A) + 0x800; - *(s16 *)(o + 0x1A) = t2; - lim2 = *(s16 *)(*(s32 *)(p + 0x58) + 2); - lv2 = lim2; - if (lim2 < t2) { - *(s16 *)(o + 0x1A) = lv2; - func_80146E90((s32 *)p, *(s16 *)(*(s32 *)(p + 0x58) + 4)); - func_80146CA0((void *)p); - } -} - - -extern s32 func_80146E98(s32 a0); -extern void func_80162CCC(void); - -void func_8017FA80(arg0) -s32 arg0; -{ - s32 tbl; - s32 obj; - u16 t1; - u16 t2; - - tbl = *(s32 *)(arg0 + 0x4C); - obj = *(s32 *)(arg0 + 0x20); - if (func_80146E98(arg0) != 0) { - t1 = *(u16 *)(obj + 0x1C) + 0x400; - *(s16 *)(obj + 0x1C) = t1; - *(s16 *)(obj + 0x18) = t1; - if ((s16)t1 >= 0x7001) { - *(s16 *)(obj + 0x1C) = 0x7000; - *(s16 *)(obj + 0x18) = 0x7000; - } - t2 = *(u16 *)(obj + 0x1A) + 0x100; - *(s16 *)(obj + 0x1A) = t2; - if ((s16)t2 >= 0x7001) { - *(s16 *)(obj + 0x1A) = 0x7000; - } - } - if (*(u16 *)tbl != 0x16) { - ((void (*)(s32))func_80162CCC)(arg0); - } -} - - - - -void func_8017FB40(s32 param_1) { - s32 tbl; - s32 obj; - - tbl = *(s32 *)(param_1 + 0x4C); - obj = *(s32 *)(param_1 + 0x20); - *(s32 *)(param_1 + 0x04) = *(s32 *)(tbl + 0x04); - *(s32 *)(param_1 + 0x08) = *(s32 *)(tbl + 0x08); - *(s32 *)(param_1 + 0x0C) = *(s32 *)(tbl + 0x0C); - *(u16 *)(obj + 0x12) += *(u16 *)(*(s32 *)(param_1 + 0x58) + 0x06); -} - - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_8017FB84.c b/src/ov_SC03_119/ov_SC03_119_jr_8017FB84.c deleted file mode 100644 index 69929bdbe..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_8017FB84.c +++ /dev/null @@ -1,4670 +0,0 @@ -#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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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 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_8018B458[])(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 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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 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_801D3080; -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_801D3084; -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_8018B5E0; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018CBFC[])(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(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_8018CED8[])(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_8018CF1C[])(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_8018CEE0; -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_8018CF4C[])(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_8018CF88[])(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 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_8018CFE0[])(); -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_8018CFF0[])(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_8018CFF8[])(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_8018D160[])(); -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_8018D16C[])(); -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_801D2B3C; -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_801D47D8; -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_801D3D70; -extern short D_801D484C; -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_801D419C; -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_801D41C4; -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_801D4180; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801D4184; -extern u16 D_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; -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_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; -extern void func_8017B7A8(void); -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -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_801D41A4; -extern SV4 D_801D41AC; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801D41CC[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_801D41C8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018D348[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018D354[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern void (*D_8018D360[])(void); -extern void func_8017BFC8(void *a0); -extern void func_8017C07C(void); -extern void (*D_8018D420[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018D460[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018D480[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018D490[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018D49C[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018D620[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void (*D_8018D920[])(void); -extern void func_8017E898(void *a0); -extern void (*D_8018D95C[])(void); -extern void func_8017EF6C(void *a0); -extern void func_8017F16C(u8 *p); -extern void (*D_8018D964[])(void); -extern void func_8017F200(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern u8 D_8018D950; -extern void func_8017F23C(s32 a0); -extern void (*D_8018DA1C[])(void); -extern void func_8017F344(void *a0); -extern void func_8017F49C(void); -extern void func_8017F4A4(void); -extern s16 func_8017F4E8(void); -/* ==== end §8b carried decl layer ==== */ - -/* func_8017FB84 — 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_8017FB84(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; -} - - - -#define gte_ldv0(r0) __asm__ __volatile__( \ - "lwc2 $0, 0(%0)\n" \ - "lwc2 $1, 4(%0)\n" \ - : : "r"(r0) : "memory") -#define gte_ldv0(r0) __asm__ volatile ( \ - "lwc2 $0, 0( %0 );" \ - "lwc2 $1, 4( %0 )" \ - : \ - : "r"( r0 ) ) -#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_ft3(r0) __asm__ volatile ( \ - "swc2 $12, 8( %0 );" \ - "swc2 $13, 16( %0 );" \ - "swc2 $14, 24( %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 ) ) -#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_80180A64(s32 arg0, s32 arg1, s32 arg2, s32 arg3) -{ - /* vy UNSIGNED: the `+=` reads it with lhu, not lh. */ - - 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 u16 D_8018DAB4[]; - - DVECTOR2 tmpxy[4]; /* sp+0x10 */ - SVECTOR2 box[8]; /* sp+0x20 */ - SVECTOR2 sxy[8]; /* sp+0x60 */ - SVec_80180A64 v[3]; /* sp+0xA0 */ - SVec_80180A64 vdv; /* sp+0xB8 */ - MATRIX2 mtx; /* sp+0xC0 */ - struct { long otz, flag, opz, sz0, sz1, sz2, sz3; } g; /* sp+0xE0 */ - - s32 lim; /* spill 0x100 */ - u32 ot; /* spill 0x108 */ - s32 nparts; /* spill 0x110 */ - s32 j; - u32 nprim; - u32 i; - Part *part; /* spill 0x118 */ - SVec_80180A64 *vp; - Prim_80180A64 *prim; - u8 *pkt; - u8 *vtx; - u8 *va, *vb, *vc, *vd; - u32 w; - u32 m24; - s32 code; /* SIGNED: the switch tree uses slti, not sltiu */ - u32 wx, wy, wz; - s32 rot; - s32 zoff; - s32 xa32, xb32, t32; - s32 xmn1, xmx1, xmn2, xmx2; - s32 mnc, mxc; - s16 my, mny, mx, mn; - - if (*(s32 *)arg0 == 0) { - lim = func_800491EC() + *(s32 *)(arg0 + 0x64); - func_800547D8(arg0 + 0x10, &mtx); - func_80052E38(&mtx); - pkt = D_800A5E60; - - nparts = *(s32 *)(arg1 + 8); - ot = (u32)&D_800A6610[(*(u16 *)&D_800B9A02) << 14]; - rot = arg2; - zoff = arg3; - vtx = *(u8 **)(arg1 + 0x10); - part = (Part *)(arg1 + 0x14); - - for (j = 0; j < nparts; j++, part++) { - wx = part->xx; - mn = wx; - mx = wx >> 16; - wy = part->yy; - mny = wy + zoff; - my = (wy >> 16) + zoff; - wz = part->zz; - box[0].vx = mn; box[0].vy = mny; box[0].vz = wz; - box[1].vx = mx; box[1].vy = mny; box[1].vz = wz; - box[2].vx = mn; box[2].vy = mny; box[2].vz = wz >> 16; - box[3].vx = mx; box[3].vy = mny; box[3].vz = wz >> 16; - - gte_ldv3c(&box[0]); - gte_rtpt(); - gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]); - gte_ldv0(&box[3]); - gte_rtps(); - - box[4].vx = mn; box[4].vy = my; box[4].vz = wz; - box[5].vx = mx; box[5].vy = my; box[5].vz = wz; - box[6].vx = mn; box[6].vy = my; box[6].vz = wz >> 16; - box[7].vx = mx; box[7].vy = my; box[7].vz = wz >> 16; - - gte_stsxy(&sxy[3]); - gte_ldv3c(&box[4]); - __asm__ volatile (""); /* §47 live-length slider (carried from the twin) */ - 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 >= -0x6E && (s16)mnc < 0x6F) { - prim = (Prim_80180A64 *)part->prim; - nprim = part->nprim; - for (i = 0; i < nprim; i++, prim++) { - m24 = 0xFFFFFF; - vp = &vdv; - w = prim->w1; - va = vtx + (w & 0xFFFF); - vb = vtx + (w >> 16); - w = prim->w2; - vc = vtx + (w & 0xFFFF); - v[0] = *(SVec_80180A64 *)va; - v[1] = *(SVec_80180A64 *)vb; - v[2] = *(SVec_80180A64 *)vc; - w = w >> 16; - v[0].vy += D_8018DAB4[(v[0].vz + rot) & 0xFF] + zoff; - v[1].vy += D_8018DAB4[(v[1].vz + rot) & 0xFF] + zoff; - v[2].vy += D_8018DAB4[(v[2].vz + rot) & 0xFF] + zoff; - gte_ldv3c(&v[0]); - 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 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 >= -0x6E && mny < 0x6F) { - s32 za; - 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] | 0x2000000; - ((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 & m24) | 0x7000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & m24); - pkt += 0x28; - } - } - break; - case 2: - case 3: - gte_stsxy3c(&tmpxy[0]); - vdv = *(SVec_80180A64 *)vd; - vdv.vy += D_8018DAB4[(vdv.vz + rot) & 0xFF] + zoff; - gte_ldv0(vp); - 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 >= -0x6E && mny < 0x6F) { - 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] | 0x2000000; - ((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 & m24) | 0x9000000; - *otp = (*otp & 0xFF000000) | ((u32)pkt & m24); - pkt += 0x28; - } - } - } - break; - } - } - } - } - } - } - } - } - D_800A5E60 = pkt; - } -} - - - -extern void (*D_8018DD98[])(void); - -void func_8018165C(void *a0) { - D_8018DD98[*(u8 *)((s32)a0 + 0x15)](); -} - - - - -extern void func_801819C4(void); -extern void func_800167B8(s32 a0); - -s32 func_80181698(s32 a0) { - func_801819C4(); - func_800167B8(0); - *(u8 *)(a0 + 0x15) += 1; - return 0; -} - - - -extern s32 func_800167F0(s32 a0); - -s32 func_801816DC(void) { - return (func_800167F0(0) & 0xffff) != 0; -} - - - -extern void (*D_8018DDA0[])(void); - -void func_80181700(void *a0) { - D_8018DDA0[*(u8 *)((s32)a0 + 0x15)](); -} - - - - -extern void func_801819EC(void); -extern void func_800167B8(s32 a0); - -s32 func_8018173C(s32 a0) { - func_801819EC(); - func_800167B8(0); - *(u8 *)(a0 + 0x15) += 1; - return 0; -} - - - -extern void (*D_8018DDA8[])(void); - -void func_80181780(void *a0) { - D_8018DDA8[*(u8 *)((s32)a0 + 0x15)](); -} - - - - -extern void func_80181A14(void); - -s32 func_801817BC(s32 a0) { - func_80181A14(); - *(s32 *)(a0 + 0x28) = 10; - *(u8 *)(a0 + 0x15) += 1; - return 0; -} - - -DEFINE_func_801817FC() /* dedup: shared engine-core @0x801817FC (src/shared) */ - - -extern s32 func_800D1EBC(void); -void func_8018188C(void) { - ((void (*)(void))func_800D1EBC)(); -} - - - -extern void (*D_8018DDB4[])(void); - -void func_801818AC(void *a0) { - D_8018DDB4[*(u8 *)((s32)a0 + 0x15)](); -} - - - - -extern void func_80181A3C(void); - -s32 func_801818E8(s32 a0) { - func_80181A3C(); - *(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_800D1E28(void); - -s32 func_80181928(u8 *a0) { - if (--(*(s32 *)(a0 + 0x28)) == -1) { - func_8002D4C8(0x1C, 0); - func_8001BFD0(); - func_8002D4C8(0x1D, 0); - func_800D0C48(1); - func_800D1E28(); - *(u8 *)(a0 + 0x15) += 1; - } - return 0; -} - - -extern s32 func_800D1EBC(void); - void func_801819A4(void) { - func_800D1EBC(); - } - - -DEFINE_func_801819C4() /* dedup: shared engine-core @0x801819C4 (src/shared) */ - - -DEFINE_func_801819EC() /* dedup: shared engine-core @0x801819EC (src/shared) */ - - -extern void func_8016EE40(s32 a0, s32 a1, s32 a2); - extern s32 D_8018DDD0; - void func_80181A14(void) { - ((void (*)(void *, s32))func_8016EE40)(&D_8018DDD0, 0x1000000); - } - - -DEFINE_func_80181A3C() /* dedup: shared engine-core @0x80181A3C (src/shared) */ - - - -extern void func_8012A018(s32 a, s32 b); -extern void func_8012A094(s32 a0); -extern void func_80181B08(void *a0); - -void func_80181A64(void) { - - 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 u8 D_80126948[]; - D_80126954 = 0x190; - D_80126950 = 0x190; - D_8012695C = 0x3E8; - D_80126968 = 0x1C7; - D_8012696A = 0xA00; - D_8012696C = 0; - D_80126976 = 0; - D_80126978 = -0x20; - D_8012697A = 0; - func_8012A018((s32)func_80181B08, 0); - func_8012A094((s32)D_80126948); - func_80181B08((void *)D_80126948); -} - - - -extern void (*D_8018DDF0[])(void); - -void func_80181B08(void *a0) { - D_8018DDF0[*(u8 *)((s32)a0 + 0x4)](); -} - - - -extern u16 func_80148800(s32 *a0); -extern void func_80181C78(int param_1, short *param_2, short *param_3); -extern s32 D_80126B58; -extern s16 D_8018DDF4[]; - -typedef struct { s16 v[4]; } Blk8_80126940_80181B44; - -void func_80181B44(s32 a0) { - extern Blk8_80126940_80181B44 D_80126940; - extern s16 D_80126942; - extern s16 D_80126944; - Blk8_80126940_80181B44 sp10a; - Blk8_80126940_80181B44 sp10b; - u8 t; - - if (func_80148800((s32 *)&D_80126B58) & 3) { - t = (*(u8 *)(a0 + 5) + 1) & 1; - *(u8 *)(a0 + 5) = t; - *(s32 *)(a0 + 0x14) = D_8018DDF4[t]; - } - - if (D_80126940.v[0] < -0x120) { - D_80126940.v[0] = -0x120; - } - if (D_80126942 < -0x300) { - D_80126942 = -0x300; - } - if (D_80126944 < -0x560) { - D_80126944 = -0x560; - } - - sp10a = D_80126940; - sp10b = D_80126940; - - if (sp10a.v[2] >= -0x2DF) { - sp10a.v[2] = -0x2E0; - } - - func_80181C78(a0, sp10a.v, sp10b.v); -} - - - - /* 8 bytes */ - /* 32 bytes */ - -extern int func_80012C6C(int a0, int a1, int a2); -extern int func_80012ABC(int a0, int a1, int a2); -extern void func_80049CAC(int a0, int a1); -extern void func_8012F14C(int a0, int a1, int a2); - -void func_80181C78(int param_1, short *param_2, short *param_3) { - MATRIX m1; - SVECTOR svec_in; - SVECTOR svec_out; - - *(int *)(param_1 + 0x8) = (short)func_80012C6C((int)*(short *)(param_1 + 0x8), (int)*(short *)(param_1 + 0xC), 4); - *(int *)(param_1 + 0x10) = (short)func_80012C6C((int)*(short *)(param_1 + 0x10), (int)*(short *)(param_1 + 0x14), 4); - *(short *)(param_1 + 0x18) = func_80012ABC((int)*(short *)(param_1 + 0x18), (int)*(short *)(param_1 + 0x20), 4); - *(short *)(param_1 + 0x1A) = func_80012ABC((int)*(short *)(param_1 + 0x1A), (int)*(short *)(param_1 + 0x22), 4); - *(short *)(param_1 + 0x1C) = func_80012ABC((int)*(short *)(param_1 + 0x1C), (int)*(short *)(param_1 + 0x24), 4); - *(short *)(param_1 + 0x28) = func_80012C6C((int)*(short *)(param_1 + 0x28), (int)*(short *)(param_1 + 0x2E), 0x10); - *(short *)(param_1 + 0x2A) = func_80012C6C((int)*(short *)(param_1 + 0x2A), (int)*(short *)(param_1 + 0x30), 0x10); - *(short *)(param_1 + 0x2C) = func_80012C6C((int)*(short *)(param_1 + 0x2C), (int)*(short *)(param_1 + 0x32), 0x10); - - *(int *)(param_1 + 0x48) = (int)*(short *)(param_1 + 0x28) + (int)param_3[0]; - *(int *)(param_1 + 0x4C) = (int)*(short *)(param_1 + 0x2A) + (int)param_3[1]; - *(int *)(param_1 + 0x50) = (int)*(short *)(param_1 + 0x2C) + (int)param_3[2]; - func_80049CAC(param_1 + 0x18, (int)&m1); - - m1.t[0] = *(short *)(param_1 + 0x28) + param_2[0]; - m1.t[1] = *(short *)(param_1 + 0x2A) + param_2[1]; - m1.t[2] = *(short *)(param_1 + 0x2C) + param_2[2]; - svec_in.vx = 0; - svec_in.vy = 0; - svec_in.vz = *(int *)(param_1 + 0x10); - ((void (*)(int, int, int))func_8012F14C)((int)&m1, (int)&svec_in, (int)&svec_out); - - *(int *)(param_1 + 0x3C) = (int)svec_out.vx; - *(int *)(param_1 + 0x40) = (int)svec_out.vy; - *(int *)(param_1 + 0x44) = (int)svec_out.vz; -} - - - -extern void (*D_8018DE08[])(void); - -void func_80181E1C(void *a0) { - D_8018DE08[*(u16 *)((s32)a0 + 0x2)](); -} - - -DEFINE_func_80181E58() /* dedup: shared engine-core @0x80181E58 (src/shared) */ - -extern int func_80178970(void); -extern s32 D_801D4300; -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8018219C(); -extern s32 func_80183178(void); -extern void func_8013CABC(void); -extern void func_8018226C(s32 a0); -extern void func_80182904(void *a0); - -void func_8018201C(s32 a0) { - s32 t; - u16 delta; - u16 cnt; - - t = *(s32 *)(a0 + 0x1C); - if (t == 0x30) { - func_8013CABC(); - } else if (t == 0x10) { - func_80182904(*(void **)(a0 + 0xD0)); - } - - if (*(u16 *)(a0 + 0x102) & 1) { - *(u16 *)(*(s32 *)(a0 + 0x64) + 14) -= 3; - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 12) -= 3; - delta = *(u16 *)(a0 + 14) - 3; - } else { - *(u16 *)(*(s32 *)(a0 + 0x64) + 14) += 3; - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 12) += 3; - delta = *(u16 *)(a0 + 14) + 3; - } - *(u16 *)(a0 + 14) = delta; - - { - u16 raw = *(u16 *)(a0 + 0x102); - s32 old = D_801D4300; - cnt = raw + 1; - *(u16 *)(a0 + 0x102) = cnt; - if (old == 0) { - D_801D4300 = func_80183178(); - } - } - - if (func_8012BEE8(a0) != 0 && D_801D4300 != 0) { - func_8018226C(a0); - } else { - t = *(s32 *)(a0 + 0x1C); - if (t < 0x48 && (t & 3) == 0) { - func_8018219C(a0); - } - } - ((s32 (*)(s32))func_80178970)(a0); -} - - -extern u16 D_800B99D8; -extern s32 func_80132EF4(s32 a0, s32 a1); - -s32 func_8018219C(s32 arg0) -{ - s32 owner; - s32 i; - register s32 obj __asm__("$4"); - register s32 d __asm__("$2"); - u16 a; - u16 b; - - owner = arg0; - i = 0; - do { - obj = func_80132EF4(owner, 0x22); - if (obj != 0) { - a = *(u16 *)(obj + 6) - 0x28; - *(u16 *)(obj + 6) = a; - b = *(u16 *)(obj + 0xA) - 0x20; - *(u16 *)(obj + 0xA) = b; - d = (i + (D_800B99D8 & 4) * 3) - 0x2A; - *(u16 *)(obj + 0xE) = *(u16 *)(obj + 0xE) + d; - d = (s16)d; - if (d >= 0) { - d = d << 7; - } else { - d = -(d << 7); - } - *(u16 *)(obj + 0x34) = d + 0x1000; - *(s32 *)(obj + 0x14) = 0xFFFE0000; - *(s32 *)(obj + 0x10) = 0xFFFD0000; - } - i += 0x18; - } while (i < 0x49); -} - - -extern void func_8001CA1C(s32, s32); -extern s32 func_80143970(s32 a0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern u8 D_8018DE80; -extern void func_801851C8(s32 a0); -extern void func_80182910(void *a0); -extern void func_80185C08(void); -extern void func_80185C2C(s32 a0); - -void func_8018226C(s32 a0) -{ - register s32 self __asm__("$17") = a0; - s32 s0; - s32 q; - u16 *p; - s32 t; - - s0 = *(s32 *)(self + 0x20); - ((void (*)(void *, void *))func_8001CA1C)((void *)s0, &D_8018DE80); - - *(u16 *)(self + 0x6) = *(u16 *)(self + 0x6) - 0x10; - *(u16 *)(self + 0xA) = *(u16 *)(self + 0xA) - 0xA0; - *(u16 *)(s0 + 0x18) = 0x2C00; - *(u16 *)(s0 + 0x1A) = 0x1C00; - *(u32 *)(s0 + 0x4) = *(u32 *)(s0 + 0x4) | 0x1000000; - - p = *(u16 **)(self + 0xCC); - *p = 0; - *(s32 *)(self + 0xCC) = func_80143970(self); - - *(s32 *)(self + 0x14) = -0x80000; - *(u16 *)(self + 0x5C) = 0; - *(s32 *)(self + 0x1C) = 8; - func_8012AD44((s32 *)self, 3); - - s0 = *(s32 *)(self + 0x64); - q = *(s32 *)(s0 + 0x20); - *(u32 *)(q + 0x4) = *(u32 *)(q + 0x4) | 0x80000000; - func_801851C8(s0); - *(u16 *)(s0 + 0x5C) = 0; - func_8012AD44((s32 *)s0, 2); - - t = *(s32 *)(self + 0xD0); - if (t != 0) { - *(u16 *)(t + 0x2C) = 0; - func_80182910((void *)t); - } - func_80185C08(); - func_80185C2C(self + 0x4); - func_8002D4C8(0x74C, 0); -} - - -extern u8 D_8018DF4C; -extern s32 func_8012A828(void*, void*); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8018295C(void *a0); - -void func_80182380(s32 a0) -{ - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18) = 0x2C00; - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x1A) = 0x3800; - ((void (*)(s32, void *))func_8012A828)(a0, ((void (**)(void*))&D_8018DF4C)); - *(s16 *)((s32)a0 + 0xFC) = 0; - *(s32 *)((s32)a0 + 0x1C) = 0x10; - func_8012AD44((s32 *)a0, 4); - if (*(s32 *)(a0 + 0xD0) != 0) { - func_8018295C((void *)*(s32 *)(a0 + 0xD0)); - } -} - - -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8012B200(u8*); -extern void func_80182988(s32*); - -void func_801823F8(void *arg0) -{ - void *a0; - - *(s32 *)((s32)arg0 + 0x1C) = 4; - ((void (*)(void *))func_8012B200)(arg0); - func_8012AD44((s32 *)arg0, 5); - a0 = *(void **)((s32)arg0 + 0xD0); - if (a0 != NULL) { - ((void (*)(void *))func_80182988)(a0); - } -} - - - - -void func_8018244C(s32 arg0) { - extern void func_80182704(s32 *a0); - extern void func_8012AD44(s32 *a0, s16 a1); - extern s8 D_8018DE60[]; - - *(s32 *)((s32)arg0 + 0x58) = (s32)&D_8018DE60; - func_80182704((s32 *)arg0); - func_8012AD44((s32 *)arg0, 6); -} - - -DEFINE_func_8018248C() /* dedup: shared engine-core @0x8018248C (src/shared) */ - - -extern s32 func_801439C0(s32 a0); -extern u16 D_80126B5E; -extern u16 D_80126B66; -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_801292C8(u8 *a0); -extern void func_8012AD44(s32 *a0, s16 a1); -extern void func_8012B200(u8 *a0); - -void func_801824A0(int a0) -{ - register s32 s0 __asm__("$16") = a0; - u8 *ptr; - s32 val1; - s32 val2; - s32 t2; - - func_801439C0(*(s32 *)(s0 + 0xCC)); - func_8012B200((u8 *)s0); - - *(s32 *)(s0 + 0x14) = 0x80000; - *(u16 *)(s0 + 0x6) = D_80126B5E; - *(u16 *)(s0 + 0xE) = D_80126B66; - - ptr = *(u8 **)(s0 + 0x20); - val1 = *(u16 *)(ptr + 0x18); - *(s16 *)(s0 + 0xDC) = (val1 << 16) >> 19; - - ptr = *(u8 **)(s0 + 0x20); - val2 = *(u16 *)(ptr + 0x1A); - *(s16 *)(s0 + 0xDE) = (val2 << 16) >> 19; - - func_8012AD44((s32 *)s0, 7); - - t2 = *(s32 *)(s0 + 0xD0); - if (t2 != 0) { - func_801292C8((u8 *)t2); - } - - func_8002D4C8(0x74e, 0); -} - - -extern void func_8012AD44(s32 *a0, s16 a1); - -void func_80182550(void *arg0) { - func_8012AD44((s32 *)arg0, 8); -} - - -extern s32 func_801831D0(void); - void func_80182570(void) { - func_801831D0(); - } - - -extern void func_8013CAE8(void); -void func_80182590(void) { - func_8013CAE8(); -} - - - -extern void (*D_8018E0E4[])(void); - -void func_801825B0(void *a0) { - D_8018E0E4[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 D_801D4300; -extern s32 func_80132EF4(s32 a0, s32 a1); -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern u8 D_8018E10C[]; -extern void (*D_8018E014[])(void); -extern s32 func_8001AAA0(s32); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8012AD44(s32 *a0, s16 a1); - -void func_801825EC(s32 a0) { - register s32 self __asm__("$16") = a0; - u32 idx; - s32 t0; - s32 t1; - - for (idx = 0; idx < 8; idx++) { - if (*(u16 *)(self + 0x5E) == D_8018E10C[idx]) { - { - u16 tmp; - t0 = *(s32 *)(self + 0x64); - tmp = *(u16 *)(t0 + 14); - D_801D4300 = 0; - *(u16 *)(t0 + 14) = tmp + 1; - } - *(s32 *)(self + 0x1C) = 0x50; - *(u16 *)(self + 0x102) = 0; - *(u16 *)(self + 14) = *(u16 *)(self + 14) + 1; - func_8012AD44((s32 *)self, 2); - - t1 = func_80132EF4(self, 0x42); - *(s32 *)(self + 0xD0) = t1; - if (t1 != 0) { - u16 vE; - *(u16 *)(t1 + 6) = *(u16 *)(self + 6); - *(u16 *)(t1 + 0xA) = *(u16 *)(self + 0xA); - vE = *(u16 *)(self + 0xE); - *(s16 *)(t1 + 0x2C) = -0xA0; - *(s32 *)(t1 + 0x34) = self; - *(u16 *)(t1 + 0xE) = vE; - } - - func_80178B18(self, (s32) D_8018E014); - - *(u8 *)(self + 0xC1) = 0; - *(u16 *)(self + 0x5C) = 0; - *(u16 *)(self + 0x5E) = 0; - func_8002D4C8(0x74B, 0); - ((void (*)(s32))func_8001AAA0)(0x4d); - *(u16 *)(self + 0x5E) = 0; - goto end; - } - } - *(u16 *)(self + 0x5E) = 0; -end: - func_8002D4C8(0x426, 0); -} - - -DEFINE_func_80182704() /* dedup: shared engine-core @0x80182704 (src/shared) */ - - -extern void func_8012AD80(s32 a0); - -void func_80182714(s32 a0) { - s32 v; - - func_8012AD80(a0); - v = *(s32 *)(a0 + 0x14); - if (v > 0x14000) { - *(s32 *)(a0 + 0x48) = -0x1400; - } else if (v < -0x14000) { - *(s32 *)(a0 + 0x48) = 0x1400; - } -} - - - - -void func_8018276C(s32 a0) { - s32 v1 = *(s32 *)(a0 + 0xCC); - *(s16 *)(v1 + 0x8) = *(u16 *)(a0 + 0x6) - 8; - *(s16 *)(v1 + 0xA) = *(u16 *)(a0 + 0xA) - 0xE8; - *(s16 *)(v1 + 0xC) = *(u16 *)(a0 + 0xE) + 2; -} - - - - -int func_801827A0(int a0, void* a1) -{ - s16 stack_buf[8]; - register s16 *s0 __asm__("$16") = (s16 *)a1; - s16 v0; - s32 result; - s32 ret; - - v0 = s0[2]; - stack_buf[0] = v0; - v0 = s0[3]; - stack_buf[4] = v0; - v0 = s0[5]; - stack_buf[5] = v0; - stack_buf[1] = v0; - v0 = s0[6]; - stack_buf[6] = v0; - stack_buf[2] = v0; - - result = func_8018283C((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]); - - if (result != 0) { - ret = 1; - } else { - v0 = s0[7]; - stack_buf[6] = v0; - stack_buf[2] = v0; - result = func_8018283C((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]); - ret = (result != 0); - } - return ret; -} - - -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); - -s32 func_8018283C(s32 arg0, s32 arg1, s32 arg2) -{ - extern s32 *D_80126B78; - extern s32 *D_80126B90; - struct { u16 x, y, z, w; } a; - struct { u16 x, y, z, w; } b; - - func_8012F214(arg0, arg1, &a); - func_8012F214(arg0, arg2, &b); - func_80135888((s32)D_80126B78, (s32)D_80126B90, (s32)&a, (s32)&b); -} - - -extern s32 func_8017BEBC(void); - void func_801828A4(void) { - func_8017BEBC(); - } - - -extern s32 func_8017BFA0(void); - void func_801828C4(void) { - func_8017BFA0(); - } - - -extern void func_800D0C48(int); -void func_801828E4(void) { - func_800D0C48(0x1); -} - - -DEFINE_func_80182904() /* dedup: shared engine-core @0x80182904 (src/shared) */ - - -DEFINE_func_80182910() /* dedup: shared engine-core @0x80182910 (src/shared) */ - -void func_8018291C(void) { - extern u8 D_801D4306; - u8 *p = &D_801D4306; - - asm("" : "=r"(p) : "0"(p)); - - if (*p < 0xF8) { - *p += 4; - p[-2] += 6; - p[-1] += 6; - } -} - - - -extern void func_8002D4C8(s32 arg0, s32 arg1); - void func_8018295C(void *a0) { - *(s16 *)((s32)a0 + 0x2) = 0x4; - func_8002D4C8(0x74D, 0); - } - - -DEFINE_func_80182988() /* dedup: shared engine-core @0x80182988 (src/shared) */ - - - -// @class: struct -// @stuck: none — MATCH expected; param_1 survives jal in $s0, table fp-call with %lo-fold -extern void func_801829E4(); -extern void (*D_8018E134[])(int); - -void func_80182998(int param_1) -{ - ((void (*)(void))func_801829E4)(); - D_8018E134[*(unsigned short *)(param_1 + 2)](param_1); -} - - -extern void func_80129350(s32 *a0, s32 a1); -extern void func_80133060(s32 *a0, s32 a1, s32 a2); - -void func_801829E4(s32 *a0) { - s32 *s0; - s32 a1; - - s0 = a0; - a1 = *(s32 *)((u8 *)s0 + 0x34); - func_80129350(s0, a1); - - a1 = (s32)((u8 *)s0 + 0x4); - *(s16 *)((u8 *)s0 + 0xA) = *(u16 *)((u8 *)s0 + 0xA) + *(u16 *)((u8 *)s0 + 0x2C); - func_80133060((s32 *)((u8 *)s0 + 0x4), a1, -0x180); -} - - -extern s32 func_80029178(s32 arg); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8012C588(s32 a0, s32 a1); -extern s32 func_8012AD50(void *a0); -extern s16 D_801C5E24[]; -extern s32 D_8018DDF8[]; - -void func_80182A34(void *a0) -{ - s32 v0; - - if ((*(s32 *)((s32)a0 + 0x20) = v0 = ((s32 (*)(void))func_8012C1B8)()) == 0 || - (func_80029178(0x17) & 0xFF) != 0) { - func_8012CAE4(a0); - return; - } - func_8001C214(*(s32 *)((s32)a0 + 0x20), D_801C5E24); - if (((s32 (*)(s32, s32))func_8012C588)(0x18D, a0) == 0) { - func_8012CAE4(a0); - return; - } - *(s32 *)((s32)a0 + 0x58) = (s32)D_8018DDF8 | 0x40000000; - *(s16 *)((s32)a0 + 0x5C) = 0x800; - *(u16 *)((s32)a0 + 0x72) |= 0x1000; - func_8012AD50(a0); -} - - -DEFINE_func_80182ADC() /* dedup: shared engine-core @0x80182ADC (src/shared) */ - -DEFINE_func_80182AE4() /* dedup: shared engine-core @0x80182AE4 (src/shared) */ - - -extern s32 func_80128ED8(s32 param_1, s32 *param_2); - extern s32 D_801D42F8; - void func_80182AEC(void *arg0) { - ((void (*)(s32, s32))func_80128ED8)(M2C_FIELD(arg0, s32 *, 0xCC), &D_801D42F8); - } - - -extern int func_80178970(void); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012AD80(s32 a0); -extern void func_80182380(); -extern void func_80182704(void*); -extern void func_80182714(s32 a0); -extern void func_80185FD4(void); - -void func_80182B18(s32 *a0) { - if (*(u16 *)((s32)a0 + 0x34) == 0) { - func_8012AD80((s32)a0); - if (func_8012BEE8((s32)a0) != 0) { - *(u16 *)((s32)a0 + 0x100) = 0x80; - *(s32 *)((s32)a0 + 0x1C) = 0x30; - (*(u16 *)((s32)a0 + 0x34))++; - ((void (*)(s32 *))func_80182704)(a0); - } - } else { - if (func_8012BEE8((s32)a0) != 0) { - func_80182380((s32)a0); - } else { - func_80182714((s32)a0); - } - } - ((int (*)(s32))func_80178970)((s32)a0); - func_80185FD4(); -} - - -extern int func_80178970(void); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); - -void func_80182BC4(a0) -s32 a0; -{ - if (func_8012BEE8(a0) == 0) { - if ((*(s32 *)(a0 + 0x1C) & 3) == 0) { - func_8012C658(0x18d, 1, a0); - } - } - if (*(s16 *)(a0 + 0x98) == 0) { - func_801823F8(a0); - } - ((s32 (*)(s32))func_80178970)(a0); -} - - -extern int func_80178970(void); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012AD80(s32 a0); -extern void func_8018244C(s32 a0); - - void func_80182C34(s32 arg0) { - u16 val_34; - s16 val_fe, val_a; - val_34 = *(u16 *)(arg0 + 0x34); - if (val_34 == 0) { - if (func_8012BEE8(arg0) != 0) { - *(s32 *)(arg0 + 0x14) = 0x10000; - *(u16 *)(arg0 + 0x34) = *(u16 *)(arg0 + 0x34) + 1; - } - } else { - val_fe = *(s16 *)(arg0 + 0xFE); - val_a = *(s16 *)(arg0 + 0xA); - if (val_a < (val_fe - 0xA0)) { - func_8012AD80(arg0); - } else { - func_8018244C(arg0); - } - } - ((void (*)(s32))func_80178970)(arg0); - } - - - extern int func_80178970(void); - extern void func_80182714(int a0); - extern int func_801827A0(int a0, void *a1); - extern void func_801824A0(int a0); - extern char D_8018DE60[]; - void func_80182CC4(int param_1) - { - ((void (*)(void))func_80178970)(); - func_80182714(param_1); - if (func_801827A0(param_1, (void *)&D_8018DE60) != 0) { - func_801824A0(param_1); - } - } - - -extern int func_80178970(void); -extern void func_8012AD80(s32 a0); -extern void func_80182550(void *arg0); - -void func_80182D14(s32 a0) { - s32 t0; - s16 val0; - - t0 = *(s32 *)(a0 + 0x20); - val0 = *(s16 *)(t0 + 0x18); - - if (val0 > 0) { - s32 temp; - s16 val; - u16 a, b; - u32 flags; - - func_8012AD80(a0); - - temp = *(s32 *)(a0 + 0x20); - a = *(u16 *)(a0 + 0xDC); - b = *(u16 *)(temp + 0x18); - *(s16 *)(temp + 0x18) = (s16)(b - a); - - temp = *(s32 *)(a0 + 0x20); - a = *(u16 *)(a0 + 0xDE); - b = *(u16 *)(temp + 0x1A); - *(s16 *)(temp + 0x1A) = (s16)(b - a); - - temp = *(s32 *)(a0 + 0x20); - val = *(s16 *)(temp + 0x18); - - if (val == 0) { - flags = *(u32 *)(temp + 0x04); - flags |= 0x80000000; - *(u32 *)(temp + 0x04) = flags; - } - } else { - func_80182550(a0); - } - - ((void (*)(s32))func_80178970)(a0); -} - - -extern int func_80178970(void); -extern s16 D_801D47D8; -extern void func_80029514(s32); -extern void func_80178D18(void); - -void func_80182DC4(arg0) -void *arg0; -{ - if (*(u16 *)((s32)arg0 + 0x34) != 0) { - return; - } - if (func_80178970() == 0) { - return; - } - if (D_801D47D8 != 0) { - return; - } - ((void (*)(void *))func_80178D18)(arg0); - *(u16 *)((s32)arg0 + 0x34) = *(u16 *)((s32)arg0 + 0x34) + 1; - func_80029514(0x1CC); -} - - -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); - -void func_80182E38(void *param_1) { - (*(u16 *)((char *)param_1 + 0xFC))++; - func_8012AD80(param_1); - if (*(s16 *)((char *)param_1 + 0x98) == 0) { - func_8012C218(param_1); - } -} - - -extern void func_8001CD9C(int, void *); -extern void func_800233CC(void *, unsigned short); - - -void func_80182E88(s32 a0) { - extern Block4 D_801D2E50; - extern Block4 D_801D4304; - extern Block4 D_801D4308; - register u8 *s0 __asm__("$16"); - register s32 *s1 __asm__("$17"); - s32 *v1; - s32 *a0_ptr; - s8 pad[32]; /* Force larger stack frame */ - - s1 = (s32 *)a0; - s0 = (u8 *)&D_801D4304; - - func_8001CD9C(s1[8], (s32 *)s0); - - func_800233CC(s0, 0x80); - - *(Block4 *)s0 = D_801D2E50; - - D_801D4308 = D_801D2E50; - - v1 = s1[8]; - *(s16 *)((s8 *)v1 + 0x18) = 0x800; - - v1 = s1[8]; - *(s16 *)((s8 *)v1 + 0x1A) = 0x1000; - - a0_ptr = s1[8]; - *(s32 *)((s8 *)a0_ptr + 0x4) |= 0x50000000; - - *(s16 *)((s8 *)s1 + 0x2) = 1; - - (void)pad; -} - - -void func_80182F44(void) { - extern u8 D_801D4304; - extern u8 D_801D4305; - extern u8 D_801D4306; - u8 *a0 = &D_801D4304; - - if (*a0 < 0x60) { - *a0 += 4; - } - if (D_801D4305 < 0x60) { - D_801D4305 += 4; - } - if (D_801D4306 < 0xC0) { - D_801D4306 += 4; - } -} - - -extern void func_8018291C(void); -void func_80182FAC(void) { - func_8018291C(); -} - - -extern void func_8018291C(void); - -void func_80182FCC(arg0) -s32 arg0; -{ - s32 a0 = *(s32 *)(arg0 + 0x20); - if (*(s16 *)(a0 + 0x18) < 0x5000) { - *(s16 *)(a0 + 0x18) = *(s16 *)(a0 + 0x18) + 0x800; - } - if (*(s16 *)(a0 + 0x1A) < 0x5000) { - *(s16 *)(a0 + 0x1A) = *(s16 *)(a0 + 0x1A) + 0x800; - } - func_8018291C(); -} - - -void func_8018302C(void *a0) { - extern u8 D_801D4306; - extern u8 D_801D4304; - extern u8 D_801D4305; - register s32 v __asm__("$2"); - register s32 c __asm__("$3"); - register s32 z __asm__("$0"); - register u8 *dp __asm__("$4"); - s16 *p; - s32 frame_pad[3]; - - (void)&frame_pad; - p = *(s16 **)((s32)a0 + 0x20); - v = *(s16 *)(p + 0xC); - c = v + z; - if (v >= 0x801) { - v = c - 0x200; - *(s16 *)(p + 0xC) = v; - } - v = *(s16 *)(p + 0xD); - c = v + z; - if (v >= 0x801) { - v = c - 0x200; - *(s16 *)(p + 0xD) = v; - } - - dp = &D_801D4306; - if (*dp >= 0xC1) { - *dp -= 4; - D_801D4304 -= 6; - D_801D4305 -= 6; - } -} - - -extern u8 D_801D4304; -extern u8 D_801D4305; -extern u8 D_801D4306; - -void func_801830C4(void *a0) { - s16 *p; - s32 t; - u8 v; - p = *(s16 **)((s32)a0 + 0x20); - if (*(s16 *)((s32)p + 0x18) > 0x800) { - *(s16 *)((s32)p + 0x18) = *(s16 *)((s32)p + 0x18) - 0x200; - } - if (*(s16 *)((s32)p + 0x1A) > 0x800) { - *(s16 *)((s32)p + 0x1A) = *(s16 *)((s32)p + 0x1A) - 0x200; - } - t = *(s32 *)((s32)a0 + 0x1C) + 1; - *(s32 *)((s32)a0 + 0x1C) = t; - if (t & 0x10) { - v = ((t & 0xF) >> 1) + 9; - } else { - v = 0x10 - ((t & 0xF) >> 1); - } - D_801D4304 = v * 6; - D_801D4305 = v * 6; - D_801D4306 = v * 12; -} diff --git a/src/ov_SC03_119/ov_SC03_119_jr_80183830.c b/src/ov_SC03_119/ov_SC03_119_jr_80183830.c deleted file mode 100644 index 1c4105d59..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_80183830.c +++ /dev/null @@ -1,4960 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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 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_8018B458[])(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 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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 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_801D3080; -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_801D3084; -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_8018B5E0; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018CBFC[])(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(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_8018CED8[])(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_8018CF1C[])(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_8018CEE0; -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_8018CF4C[])(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_8018CF88[])(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 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_8018CFE0[])(); -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_8018CFF0[])(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_8018CFF8[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_8018D160[])(); -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_8018D16C[])(); -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_801D2B3C; -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_801D47D8; -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_801D3D70; -extern short D_801D484C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801D419C; -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_801D41C4; -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_801D4180; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801D4184; -extern u16 D_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; -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_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; -extern void func_8017B7A8(void); -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -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_801D41A4; -extern SV4 D_801D41AC; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801D41CC[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_801D41C8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018D348[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018D354[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern void (*D_8018D360[])(void); -extern void func_8017BFC8(void *a0); -extern void func_8017C07C(void); -extern void (*D_8018D420[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018D460[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018D480[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018D490[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018D49C[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018D620[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void (*D_8018D920[])(void); -extern void func_8017E898(void *a0); -extern void (*D_8018D95C[])(void); -extern void func_8017EF6C(void *a0); -extern void func_8017F16C(u8 *p); -extern void (*D_8018D964[])(void); -extern void func_8017F200(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern u8 D_8018D950; -extern void func_8017F23C(s32 a0); -extern void (*D_8018DA1C[])(void); -extern void func_8017F344(void *a0); -extern void func_8017F49C(void); -extern void func_8017F4A4(void); -extern s16 func_8017F4E8(void); -extern void func_8017FB84(s32 arg0); -extern void func_80180A64(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void (*D_8018DD98[])(void); -extern void func_8018165C(void *a0); -extern void func_801819C4(void); -extern s32 func_80181698(s32 a0); -extern s32 func_801816DC(void); -extern void (*D_8018DDA0[])(void); -extern void func_80181700(void *a0); -extern void func_801819EC(void); -extern s32 func_8018173C(s32 a0); -extern void (*D_8018DDA8[])(void); -extern void func_80181780(void *a0); -extern void func_80181A14(void); -extern s32 func_801817BC(s32 a0); -extern s32 func_801817FC(u8 *a0); -extern s32 func_800D1EBC(void); -extern void func_8018188C(void); -extern void (*D_8018DDB4[])(void); -extern void func_801818AC(void *a0); -extern void func_80181A3C(void); -extern s32 func_801818E8(s32 a0); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); -extern s32 func_80181928(u8 *a0); -extern void func_801819A4(void); -extern M2C_UNK D_8018DDC0; -extern M2C_UNK D_8018DDCC; -extern M2C_UNK D_8018DDE4; -extern void func_8012A094(s32 a0); -extern void func_80181B08(void *a0); -extern void func_80181A64(void); -extern void (*D_8018DDF0[])(void); -extern int func_80012C6C(int a0, int a1, int a2); -extern int func_80012ABC(int a0, int a1, int a2); -extern void func_80049CAC(int a0, int a1); -extern void func_8012F14C(int a0, int a1, int a2); -extern void func_80181C78(int param_1, short *param_2, short *param_3); -extern void (*D_8018DE08[])(void); -extern void func_80181E1C(void *a0); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern s32 func_8012C194(void); -extern void func_8018276C(s32 a0); -extern s32 func_8012AD50(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern s32 func_8012A828(void *a0, void *a1); -extern void func_8012AD44(s32 *a0, s16 a1); -extern u8 D_801C6410; -extern u8 D_8018DE14; -extern s32 D_801D42F8; -extern u8 D_8018DE20; -extern u8 D_8018DE70; -extern u8 D_8018DE50; -extern u8 D_8018DF4C; -extern void func_80181E58(void *a0); -extern s32 D_801D4300; -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8018219C(); -extern s32 func_80183178(void); -extern void func_8013CABC(void); -extern void func_8018226C(s32 a0); -extern void func_80182904(void *a0); -extern void func_8018201C(s32 a0); -extern u16 D_800B99D8; -extern s32 func_80132EF4(s32 a0, s32 a1); -extern s32 func_8018219C(s32 arg0); -extern s32 func_8012A828(void*, void*); -extern void func_8018295C(void *a0); -extern void func_80182380(s32 a0); -extern void func_8012B200(u8*); -extern void func_80182988(s32*); -extern void func_801823F8(void *arg0); -extern s32 func_8018248C(s32 arg0); -extern s32 func_801439C0(s32 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012B200(u8 *a0); -extern void func_801824A0(int a0); -extern s32 func_801831D0(void); -extern void func_80182570(void); -extern void func_8013CAE8(void); -extern void func_80182590(void); -extern void (*D_8018E0E4[])(void); -extern void func_801825B0(void *a0); -extern u8 D_8018E10C[]; -extern void (*D_8018E014[])(void); -extern s32 func_8001AAA0(s32); -extern void func_801825EC(s32 a0); -extern void func_80182704(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_80182714(s32 a0); -extern int func_801827A0(int a0, void* a1); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_8018283C(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8017BEBC(void); -extern void func_801828A4(void); -extern s32 func_8017BFA0(void); -extern void func_801828C4(void); -extern void func_800D0C48(int); -extern void func_801828E4(void); -extern void func_80182910(void *a0); -extern void func_8018291C(void); -extern void func_8002D4C8(s32 arg0, s32 arg1); -extern void func_80182988(s32 *a0); -extern void func_801829E4(); -extern void (*D_8018E134[])(int); -extern void func_80182998(int param_1); -extern void func_80129350(s32 *a0, s32 a1); -extern void func_80133060(s32 *a0, s32 a1, s32 a2); -extern void func_801829E4(s32 *a0); -extern void func_8012C588(s32 a0, s32 a1); -extern s16 D_801C5E24[]; -extern s32 D_8018DDF8[]; -extern void func_80182A34(void *a0); -extern void func_80182ADC(void); -extern void func_80182AE4(void); -extern void func_80182AEC(void *arg0); -extern void func_80182380(); -extern void func_80182704(void*); -extern void func_80185FD4(void); -extern void func_80182B18(s32 *a0); -extern void func_80182BC4(); -extern void func_8018244C(s32 a0); -extern void func_80182C34(s32 arg0); -extern void func_80182CC4(int param_1); -extern void func_80182550(void *arg0); -extern void func_80182D14(s32 a0); -extern void func_80182DC4(); -extern void func_8012C218(void *a0); -extern void func_80182E38(void *param_1); -extern void func_80182E88(s32 a0); -extern void func_80182F44(void); -extern void func_80182FAC(void); -extern void func_80182FCC(); -extern void func_8018302C(void *a0); -extern u8 D_801D4304; -extern u8 D_801D4305; -extern u8 D_801D4306; -extern void func_801830C4(void *a0); -/* ==== end §8b carried decl layer ==== */ - - -DEFINE_func_801838A4() /* dedup: shared engine-core @0x801838A4 (src/shared) */ - -DEFINE_func_801838E0() /* dedup: shared engine-core @0x801838E0 (src/shared) */ - - -void func_8018391C(void *a0) -{ - extern void func_8012C1B8(void); - extern void func_8012CAE4(void *a0); - extern void func_8001CA1C(s32, s32); - extern s32 func_8012A828(void*, void*); - extern s32 rand(void); - extern u8 D_8018E160; - extern u8 D_8018E1C0; - - register s32 s0 __asm__("$16"); - s32 v0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - s0 = (s32)a0; - *(s32 *)(s0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4((void *)s0); - } else { - ((void (*)(s32, void *))func_8001CA1C)(v0, &D_8018E160); - ((s32 (*)(s32, void *))func_8012A828)(s0, &D_8018E1C0); - *(s32 *)(s0 + 0x94) = rand() & 7; - *(u16 *)(s0 + 2) = 1; - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x18) = (rand() >> 3) + 0x2000; - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x1A) = 0x2000; - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) |= 0x10; - *(u32 *)(*(s32 *)(s0 + 0x20) + 4) |= 0x8000000; - *(u16 *)(*(s32 *)(s0 + 0x20) + 0x14) = rand() & 0xFFF; - } -} - - -void func_801839F4(s32 param_1) { - if ((func_80029178(0xB8) & 0xFF) != 0) { - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x4) &= 0x7FFFFFFF; - } else { - *(u32 *)(*(s32 *)(param_1 + 0x20) + 0x4) |= 0x80000000; - } -} - - -extern s32 D_8018E210; -extern s32 D_8018E850; -extern s32 func_80029504(void); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_80143994(s32 a0, s32 a1); - -void func_80183A60(a0) -void *a0; -{ - extern s32 func_80029504(void); - extern s32 D_8018E210; - extern s32 D_8018E850; - - extern void func_8012C1B8(void); - extern void func_8012CAE4(void *a0); - extern void func_8001C214(s32 a0, s32 a1); - extern void func_80143994(s32 a0, s32 a1); - - u32 t; - - t = ((u32 (*)(void))func_80029504)(); - if (t >= 0x276 || - (*(s32 *)((s32)a0 + 0x20) = ((s32 (*)(void))func_8012C1B8)()) == 0) { - func_8012CAE4(a0); - return; - } - - func_8001C214(*(s32 *)((s32)a0 + 0x20), (s32)&D_8018E850); - *(u16 *)((s32)a0 + 0x2) = 1; - *(s16 *)((s32)a0 + 0x5C) = 0x40; - *(s32 *)((s32)a0 + 0x58) = - *(s16 *)((s32)a0 + 0x70) * 16 + (s32)&D_8018E210; - func_80143994((s32)a0, 0x1000); -} - - -DEFINE_func_80183AF8() /* dedup: shared engine-core @0x80183AF8 (src/shared) */ - -DEFINE_func_80183B00() /* dedup: shared engine-core @0x80183B00 (src/shared) */ - - - - -s32 func_80183B3C(void *a0, s32 *p) { - s32 cur = *(s32 *)((s32)a0 + 0xDC); - - if (p[0] != cur) { - p += 2; - for (;;) { - s32 t = p[0]; - if (t == 0) { - return cur; - } - p += 2; - if (t == cur) { - break; - } - } - p -= 2; - } - return p[1]; -} - - -extern s32 D_8018E860[]; -extern s32 D_8018E870[]; -extern s32 D_8018E880[]; -extern s32 D_8018E890[]; -extern s32 func_80029504(void); -extern s32 func_80183B3C(void *a0, s32 *p); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); - -void func_80183B84(void *a0) { - s32 s1; - s32 v0; - - s1 = func_80029504(); - if ((*(s32 *)((s32)a0 + 0x20) = ((s32 (*)(void))func_8012C1B8)()) == 0) { - func_8012CAE4(a0); - return; - } - - func_8001C214(*(s32 *)((s32)a0 + 0x20), 0); - *(s32 *)((s32)a0 + 0x58) = (s32)D_8018E890; - *(s16 *)((s32)a0 + 0x5C) = 0x80; - - *(u16 *)((s32)a0 + 0x2) = *(u16 *)((s32)a0 + 0x2) + 1; - - if (s1 >= 0x384) { - *(s32 *)((s32)a0 + 0xDC) = func_80183B3C(a0, D_8018E880); - } else if (s1 >= 0x258) { - *(s32 *)((s32)a0 + 0xDC) = func_80183B3C(a0, D_8018E870); - } else if (s1 >= 0xC8) { - *(s32 *)((s32)a0 + 0xDC) = func_80183B3C(a0, D_8018E860); - } -} - - -DEFINE_func_80183C50() /* dedup: shared engine-core @0x80183C50 (src/shared) */ - - -extern void (*D_8018EC08[])(void); - -void func_80183C58(void *a0) { - D_8018EC08[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80183C94(s32 param_1) -{ - extern u8 D_8018E8A8[]; - extern s32 func_80184214(s32 a0, s32 a1, s16 a2, s16 a3, s32 a4); - extern void func_80016714(void *a0, s32 a1); - extern void func_8012CAE4(void *a0); - extern s32 func_80029178(s32 a0); - s32 v0; - s32 p; - - v0 = func_80184214(param_1, (s32)D_8018E8A8, 0x300, 0x140, 0x88); - *(s32 *)((s32)param_1 + 0xCC) = v0; - if (v0 == 0) { - goto fail; - } - v0 = func_80184214(param_1, (s32)D_8018E8A8, 0x310, 0x140, 0x89); - *(s32 *)((s32)param_1 + 0xD0) = v0; - if (v0 == 0) { - func_80016714((void *)*(s32 *)((s32)param_1 + 0xCC), 0x38); - fail: - func_8012CAE4((void *)param_1); - return; - } - p = *(s32 *)((s32)param_1 + 0x68); - *(u16 *)(*(s32 *)((s32)param_1 + 0xCC) + 0x12) = *(u16 *)(p + 0xC); - p = *(s32 *)((s32)param_1 + 0x68); - *(u16 *)(*(s32 *)((s32)param_1 + 0xD0) + 0x12) = *(u16 *)(p + 0xC); - if ((func_80029178(0xB8) & 0xFF) == 0) { - *(s16 *)((s32)param_1 + 2) = 1; - } else { - *(s16 *)((s32)param_1 + 2) = 2; - } -} - - - -/* ---- integration surface: every decl below AGREES with the visible file-scope decl in - * src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c (the destination TU), lines noted. ---- */ -extern s32 func_8012BD14(void); /* not in TU */ -extern s32 func_80029178(s32 arg); /* TU:65 */ -extern void func_801746DC(void); /* TU:1253 */ -extern s32 func_80178B18(s32 param_1, s32 param_2); /* TU:2538 */ -extern s32 func_801789AC(s32 arg0); /* TU:2535 */ -extern void func_80178D18(void); /* TU:2545 -- called w/ arg via cast */ -extern s32 func_8014CB58(void); /* TU:561 */ -extern void func_8014B598(s32 a0, s32 a1); /* TU:472 */ -extern s32 func_8016F1AC(void); /* TU:351 */ -extern void func_80175454(void); /* TU:1105 */ -extern void func_800D0C48(s32 a0); /* TU:1469 */ -extern s32 func_8014CB2C(void); /* TU:560 */ -extern void func_8012A018(s32 a, s32 b); /* TU:2412 */ -extern void func_801842DC(s32 a0); /* TU:4023 INCLUDE_ASM (no decl) */ -extern s32 func_80183830(void); /* TU:3930 INCLUDE_ASM (no decl) */ -extern void func_80029124(s32, s32); /* TU:50 */ -extern s32 func_8016F0AC(); /* TU:1945 */ -extern void func_8012C588(s32 a0, s32 a1); /* not in TU */ -extern void func_8002959C(void); /* not in TU */ -extern void func_8018416C(s32 param_1); /* TU:3992 def (later) */ -extern void func_801841C0(s32 param_1); /* TU:4008 def (later) */ -extern void func_80184430(void *a0); /* TU:4030 def (later) */ - - - -void func_80183D68(s32 a0) { - - extern s32 D_801151D4; /* TU:323 */ - extern M2C_UNK D_8018DA14; /* TU:2712 */ - extern u8 D_8018EBE8[]; - extern u8 D_8018EBF8[]; - extern u8 D_8018EBD8[]; - extern u8 D_8018EBC8[]; - extern u8 D_80126948[]; /* TU:667 */ - extern s16 D_801D4348; - extern s16 D_801D434A; - extern s16 D_801D434C; - extern s16 D_801D4350; - extern s16 D_801D4352; - extern s16 D_801D4354; - extern s32 D_801D4358; - extern s32 D_801D435C; - s32 p; - u16 t34; - - if (func_8012BD14() < 0x401 || *(u16 *)(a0 + 0x34) == 1 || *(u16 *)(a0 + 0x34) == 2) { - switch (*(u16 *)(a0 + 0x34)) { - case 0: - if ((func_80029178(0x8B) & 0xFF) == 0) { - func_801746DC(); - func_80178B18(a0, (s32)D_8018EBE8); - *(u16 *)(a0 + 0x34) = 2; - } else { - func_801746DC(); - func_80178B18(a0, (s32)D_8018EBF8); - *(u16 *)(a0 + 0x34) = *(u16 *)(a0 + 0x34) + 1; - } - break; - case 1: - if (func_801789AC(a0) == 1) { - /* file-scope decl in the host TU is `void func_80178D18(void)` but the call - site passes a0 -- call through a cast so the decl stays byte-compatible. */ - ((void (*)(s32))func_80178D18)(a0); - *(u16 *)(a0 + 0x34) = 3; - } - break; - case 2: - if (func_801789AC(a0) == 1) { - ((void (*)(s32))func_80178D18)(a0); - *(u16 *)(a0 + 0x34) = 4; - } - break; - case 3: - if ((func_80029178(0xB8) & 0xFF) == 0 && func_8014CB58() == 3) { - func_8014B598(3, (s32)&D_8018DA14); - if (func_8016F1AC() != 0 && (*(u16 *)(a0 + 0x100) & 4) == 0) { - *(u16 *)(a0 + 0x100) |= 4; - *(s32 *)(a0 + 0x1C) = 0; - func_80175454(); - } - if (*(u16 *)(a0 + 0x100) & 4) { - *(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 1; - } - if ((*(u16 *)(a0 + 0x100) & 2) == 0 && *(s32 *)(a0 + 0x1C) == 0x5A) { - *(u16 *)(a0 + 0x100) |= 2; - func_800D0C48(0); - } - if ((*(u16 *)(a0 + 0x100) & 1) == 0 && - (func_8014CB2C() & 0x8000007F) == 0x80000003) { - p = D_801151D4; - t34 = *(u16 *)(a0 + 0x34) + 1; - *(u16 *)(a0 + 0x100) |= 1; - *(u16 *)(a0 + 0x34) = t34; - D_801D4348 = *(s32 *)(p + 0x48); - D_801D434A = *(s32 *)(p + 0x4C); - D_801D434C = *(s32 *)(p + 0x50); - D_801D4350 = *(s32 *)(p + 0x3C); - D_801D4352 = *(s32 *)(p + 0x40); - D_801D4358 = (s32)D_8018EBD8; - D_801D4354 = *(s32 *)(p + 0x44); - D_801D435C = (s32)&D_8018EBD8[8]; - func_8012A018((s32)func_80184430, 0); - func_801842DC(p); - *(s32 *)(a0 + 0x1C) = 0; - } - } - break; - } - if ((func_80029178(0x8B) & 0xFF) == 0) { - return; - } - /* func_801841C0(a0) is written out on all three paths: gcc cross-jumps the common - tail but leaves the three $a0 arg-setups, which then fill the three branch delay - slots (a single shared call puts the move in the jal's own slot instead). */ - if (func_8014CB58() == 3) { - func_8018416C(a0); - func_801841C0(a0); - } else { - *(u8 *)(*(s32 *)(a0 + 0xCC) + 0x27) = 0x88; - func_801841C0(a0); - } - } else { - if ((func_80029178(0x8B) & 0xFF) == 0) { - return; - } - *(u8 *)(*(s32 *)(a0 + 0xCC) + 0x27) = 0x88; - func_801841C0(a0); - } - if (*(u16 *)(a0 + 0x100) & 1) { - *(s32 *)(a0 + 0x1C) = *(s32 *)(a0 + 0x1C) + 1; - if (*(s32 *)(a0 + 0x1C) == 0x78) { - D_801D4358 = (s32)D_8018EBC8; - D_801D435C = (s32)&D_8018EBC8[8]; - func_8012A018((s32)func_80184430, 0); - func_801842DC((s32)D_80126948); - } - if (func_80183830() != 0) { - func_80029124(0xB8, 1); - *(u16 *)(a0 + 0x100) &= ~1; - func_8016F0AC(); - func_8012C588(0x249, a0); - *(u16 *)(a0 + 0x2) = 2; - *(u8 *)(*(s32 *)(a0 + 0xCC) + 0x27) = 0x88; - *(u8 *)(*(s32 *)(a0 + 0xD0) + 0x27) = 0x89; - func_8002959C(); - } - } -} - - -void func_80184164(void) { -} - - -extern void func_800183E0(s32 a0); - -void func_8018416C(s32 param_1) { - - extern u8 D_801C6DF8[]; - /* [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 u16 D_800B99DA; - extern u8 D_8018EBA8[]; - *(u8 *)(*(s32 *)(param_1 + 0xCC) + 0x27) = 0x8A; - func_800183E0((s32)&D_801C6DF8[D_8018EBA8[D_800B99DA & 0x1F] * 16]); -} - - - -extern void func_800183E0(s32 a0); - -void func_801841C0(s32 param_1) { - - extern u8 D_801C6CF8[]; - /* [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 u16 D_800B99DA; - extern u8 D_8018EBA8[]; - *(u8 *)(*(s32 *)(param_1 + 0xD0) + 0x27) = 0x8B; - func_800183E0((s32)&D_801C6CF8[D_8018EBA8[D_800B99DA & 0x1F] * 16]); -} - - - - -extern s32 func_8012C194(void); -extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); - -s32 func_80184214(s32 a0, s32 a1, s16 a2, s16 a3, s32 a4) { - s32 obj; - - obj = func_8012C194(); - if (obj == 0) { - return 0; - } - func_8001CB6C((u8 *)obj, a1, a2, a3); - *(u16 *)(obj + 0x10) = 0xC00; - *(u8 *)(obj + 0x27) = a4; - *(u16 *)(obj + 0x1A) = 0x2D00; - *(u16 *)(obj + 0x18) = 0x2D00; - *(u16 *)(obj + 8) = *(u16 *)(a0 + 6); - *(u16 *)(obj + 0xA) = *(u16 *)(a0 + 0xA); - *(u16 *)(obj + 0xC) = *(u16 *)(a0 + 0xE); - return obj; -} - - -extern s32 D_801D4358; -extern s32 D_801D435C; - -void func_801842DC(s32 arg0) { - s16 *a; - s16 *b; - s32 t; - - a = (s16 *) D_801D4358; - *(s32 *) (arg0 + 0x48) = a[0]; - *(s32 *) (arg0 + 0x4C) = a[1]; - t = a[2]; - b = (s16 *) D_801D435C; - *(s32 *) (arg0 + 0x50) = t; - *(s32 *) (arg0 + 0x3C) = b[0]; - *(s32 *) (arg0 + 0x40) = b[1]; - *(s32 *) (arg0 + 0x44) = b[2]; -} - - -extern s32 D_801D4358; -extern s32 D_801D435C; -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); - -void func_80184334(int param_1) { - struct W80184334 { - s32 pad[15]; - s32 f3C, f40, f44, f48, f4C, f50; - }; - struct W80184334 *p = (struct W80184334 *)param_1; - - p->f48 = (short)func_80012C6C((int)*(short *)&p->f48, (int)*(short *)D_801D4358, 0x20); - p->f4C = (short)func_80012C6C((int)*(short *)&p->f4C, (int)*(short *)(D_801D4358 + 2), 0x20); - p->f50 = (short)func_80012C6C((int)*(short *)&p->f50, (int)*(short *)(D_801D4358 + 4), 0x20); - p->f3C = (short)func_80012C6C((int)*(short *)&p->f3C, (int)*(short *)D_801D435C, 0x20); - p->f40 = (short)func_80012C6C((int)*(short *)&p->f40, (int)*(short *)(D_801D435C + 2), 0x20); - p->f44 = (short)func_80012C6C((int)*(short *)&p->f44, (int)*(short *)(D_801D435C + 4), 0x20); -} - - - -extern void (*D_8018EC14[])(void); - -void func_80184430(void *a0) { - D_8018EC14[*(u8 *)((s32)a0 + 0x4)](); -} - - - -extern void (*D_8018EF38[])(void); - -void func_8018446C(void *a0) { - D_8018EF38[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern s32 func_8012C51C(void *a0, s32 a1); -extern void func_8012C218(void *a0); -extern void func_8012CAE4(void *a0); -extern s32 func_80178B18(s32 a0, s32 a1); - -void func_801844A8(void *param_1) -{ - /* [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 u8 D_8018EC18[]; - extern void (*D_8018EC98[])(void); - s32 s0; - s32 v0; - - s0 = (s32)param_1; - v0 = func_8012C51C(D_8018EC18, (s32)param_1); - *(s32 *)(s0 + 0xCC) = v0; - if (v0 != 0) { - v0 = func_8012C51C(&D_8018EC18[0x14], (s32)param_1); - *(s32 *)(s0 + 0xD0) = v0; - if (v0 != 0) { - goto success; - } - func_8012C218((void *)*(s32 *)(s0 + 0xCC)); - } - func_8012CAE4(param_1); - return; -success: - func_80178B18((s32)param_1, (s32)D_8018EC98); - *(u16 *)(s0 + 2) += 1; -} - - -extern s32 func_801789AC(s32 arg0); -extern void func_80178D18(void); -extern void func_8012A568(void (*a0)(void)); -extern void func_8012C218(void *a0); -extern void func_800D0C48(s32 a0); -extern void func_8002AC00(s32 a0); -extern void func_80181A64(void); - -void func_80184540(s32 a0) { - s32 s0 = a0; - s32 v0 = func_801789AC(a0); - if (v0 == 1) { - ((void (*)(s32))func_80178D18)(s0); - func_8012A568(&func_80181A64); - func_8012C218((void *)*(s32 *)(s0 + 0xCC)); - func_8012C218((void *)*(s32 *)(s0 + 0xD0)); - func_800D0C48(1); - *(s32 *)(s0 + 0x1C) = 0x1F; - *(s16 *)(s0 + 2) = *(s16 *)(s0 + 2) + 1; - func_8002AC00(0x1B); - } -} - - -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8001AAA0(s32 a0); -extern void func_80029514(s32 a0); -extern void func_8012C218(void *a0); - -void func_801845C8(s32 a0) { - if (func_8012BEE8(a0) != 0 && func_8001AAA0(0x49) != 0) { - func_80029514(0x276); - func_8012C218((void *)a0); - } -} - - -s32 func_80184618(s32 arg0) { - if ((*(s32 *)(arg0 + 0xE0) & 3) == 3) { - *(s32 *)(arg0 + 0xE0) &= ~3; - return 1; - } - return 0; -} - - -extern s32 func_8001AAA0(s32 arg); - s32 func_80184644(void) { - return func_8001AAA0(0x5A) != 0; - } - - - - -void func_80184664(a0) -void *a0; -{ - *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xE0) |= 0x80000000; - *(s32 *)(*(s32 *)((s32)a0 + 0xD0) + 0xE0) |= 0x80000000; -} - - - - -void func_80184698(void *a0) -{ - unsigned int new_var; - s32 v1 = *((s32 *) (((s32) a0) + 0xcc)); -__asm__ __volatile__("" ::: "memory"); - *((s32 *) (v1 + 0xe0)) |= 0x80000001; -__asm__ __volatile__("" ::: "memory"); - new_var = *((s32 *) (((s32) a0) + 0xd0)); - v1 = new_var; - *((s32 *) (v1 + 0xe0)) |= 0x80000001; -} - - -void func_801846CC(s32 arg0) { - *(s32 *)((u8 *)*(s32 **)(arg0 + 0xCC) + 0xE0) |= 0x40000000; - *(s32 *)((u8 *)*(s32 **)(arg0 + 0xD0) + 0xE0) |= 0x40000000; - *(s16 *)((u8 *)*(s32 **)(arg0 + 0xCC) + 0xFE) = 0x80; - *(s16 *)((u8 *)*(s32 **)(arg0 + 0xD0) + 0xFE) = -0x40; -} - - - - -void func_80184718(arg0) -int arg0; -{ - *(u32 *)(*(int *)(arg0 + 0xCC) + 0xE0) &= 0xBFFFFFFF; - *(u32 *)(*(int *)(arg0 + 0xD0) + 0xE0) &= 0xBFFFFFFF; -} - - - -extern s32 func_8012A828(void *a0, void *a1); - extern s32 D_801BE4D0; - void func_8018474C(void *arg0) { - ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xCC), &D_801BE4D0); - } - - - -extern s32 func_8012A828(void *a0, void *a1); - extern s32 D_801C584C; - void func_80184778(void *arg0) { - ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xD0), &D_801C584C); - } - - - -extern s32 func_8012A828(void *a0, void *a1); - extern s32 D_801BE558; - void func_801847A4(void *arg0) { - ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xCC), &D_801BE558); - } - - - -extern s32 func_8012A828(void *a0, void *a1); - extern s32 D_801C55CC; - void func_801847D0(void *arg0) { - ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xD0), &D_801C55CC); - } - - - -DEFINE_func_801847FC() /* dedup: shared engine-core @0x801847FC (src/shared) */ - - - -extern s32 func_8012A828(void *a0, void *a1); - extern s32 D_801C57C4; - void func_80184828(void *arg0) { - ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xD0), &D_801C57C4); - } - - - -extern s32 func_8012A828(void *a0, void *a1); - extern s32 D_801BE5E0; - void func_80184854(void *arg0) { - ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xCC), &D_801BE5E0); - } - - - -extern s32 func_8012A828(void *a0, void *a1); - extern s32 D_801BE668; - void func_80184880(void *arg0) { - ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xCC), &D_801BE668); - } - - - -extern s32 func_8012A828(void *a0, void *a1); - extern s32 D_801BE6B0; - void func_801848AC(void *arg0) { - ((void (*)(s32, s32))func_8012A828)(M2C_FIELD(arg0, s32 *, 0xCC), &D_801BE6B0); - } - - - - - - - - - - - - - - - - - - -void func_801848D8(void *a0) -{ - unsigned int new_var; - s32 v1 = *((s32 *) (((s32) a0) + 0xcc)); -__asm__ __volatile__("" ::: "memory"); - *((s32 *) (v1 + 0xe0)) |= 0x20000000; -__asm__ __volatile__("" ::: "memory"); - new_var = *((s32 *) (((s32) a0) + 0xd0)); - v1 = new_var; - *((s32 *) (v1 + 0xe0)) |= 0x20000000; -} - -void func_8018490C(s32 arg0) { - *(s32 *)((u8 *)*(s32 **)(arg0 + 0xCC) + 0xE0) &= 0xDFFFFFFF; - *(s32 *)((u8 *)*(s32 **)(arg0 + 0xD0) + 0xE0) &= 0xDFFFFFFF; -} - - - -extern void (*D_8018EF74[])(void); - -void func_80184940(void *a0) { - D_8018EF74[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern s32 func_8012A828(void*, void*); -extern void func_80143994(s32 a0, s32 a1); - -extern void (*D_8018EF44[])(void); -extern void (*D_8018EF4C[])(void); - -void func_8018497C(void *a0) -{ - s32 v0; - - v0 = ((s32 (*)(void))func_8012C1B8)(); - *(s32 *)((s32)a0 + 0x20) = v0; - if (v0 == 0) { - func_8012CAE4(a0); - return; - } - - func_8001C214(v0, D_8018EF44[*(u16 *)((s32)a0 + 0x70) & 0xF]); - ((void (*)(void *, void *))func_8012A828)(a0, D_8018EF4C[*(u16 *)((s32)a0 + 0x70) & 0xF]); - func_80143994((s32)a0, 0x2000); - *(u16 *)((s32)a0 + 2) = 1; -} - - -extern s32 D_801C57C4; -extern s32 D_801C584C; -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_80184A1C(u8 *a0) { - if (*(s32 *)(a0 + 0xE0) < 0) { - *(u16 *)(a0 + 0x2) = 2; - *(s32 *)(a0 + 0xE0) &= 0x7FFFFFFF; - } else if (*(s32 *)(a0 + 0xE0) & 0x40000000) { - *(u16 *)(a0 + 0x2) = 4; - *(u16 *)(a0 + 0x100) = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); - } - - if (*(s32 *)(a0 + 0x90) == (s32) &D_801C584C) { - if (*(s32 *)(a0 + 0x94) == 7) { - func_8002D4C8(0x77F, 0); - } - } - - if (*(s32 *)(a0 + 0x90) == (s32) &D_801C57C4) { - if (*(s32 *)(a0 + 0x94) == 9 || *(s32 *)(a0 + 0x94) == 0xF) { - func_8002D4C8(0x7AA, 0); - } - - if (*(s32 *)(a0 + 0x94) == 3 || *(s32 *)(a0 + 0x94) == 0xA) { - func_8002D4C8(0x7AB, 0); - } - } -} - - -#include "common.h" - -extern s32 D_8018EF54; -extern void (*D_8018EF4C[])(void); -extern s32 func_8012A828(void*, void*); - -void func_80184B18(void *a0) -{ - s32 v1; - s32 v0; - - *(u16 *)((s32)a0 + 2) = 3; - v1 = (*(s32 *)((s32)a0 + 0xE0) & 0xF) << 4; - v0 = (s32)&D_8018EF54 + (((*(u16 *)((s32)a0 + 0x70) & 0xF) << 3)); - *(s32 *)((s32)a0 + 0xCC) = v1 + v0; - *(s32 *)((s32)a0 + 0xE0) &= ~0xF; - ((void (*)(void *, void *))func_8012A828)(a0, D_8018EF4C[*(u16 *)((s32)a0 + 0x70) & 0xF]); -} - - -DEFINE_func_80184B94() /* dedup: shared engine-core @0x80184B94 (src/shared) */ - -extern s32 func_8012B744(void *a0, void *a1); -extern u16 D_80126B5E; -extern u16 D_80126B66; - -void func_80184CE0(param_1) -s32 param_1; -{ - s16 sp10[3]; - s32 v; - - if ((*(s32 *)(param_1 + 0xE0) & 0x40000000) == 0) { - *(u16 *)(param_1 + 2) = 1; - sp10[1] = 0; - sp10[0] = D_80126B5E - 0x80; - sp10[2] = D_80126B66; - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = func_8012B744(param_1 + 4, sp10); - return; - } - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x12) + *(u16 *)(param_1 + 0xFE); - if (*(s16 *)(param_1 + 0xFE) > 0) { - if (*(s16 *)(param_1 + 0x100) + 0x200 < *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12)) { - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(s16 *)(param_1 + 0x100) + 0x200; - } else { - return; - } - } else { - if (*(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) < *(s16 *)(param_1 + 0x100) - 0x200) { - *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x12) = *(s16 *)(param_1 + 0x100) - 0x200; - } else { - return; - } - } - v = *(s16 *)(param_1 + 0xFE); - *(s16 *)(param_1 + 0xFE) = -v; -} - - - -// @class: struct -// @stuck: none — MATCH (array-of-fnptr %lo-fold + signed-halfword guard) - -extern u16 D_801270C0; -extern void (*D_8018EF90[])(); - -void func_80184DD8(int param_1) -{ - if (*(s16 *)&D_801270C0 != 3) { - D_8018EF90[*(u16 *)(param_1 + 2)](); - } -} - - -extern u8 D_80078EB1; - -void func_80184E24(u8 *a0) { - extern s32 func_8012AD50(void *a0); - - s32 t; - - *(u16 *)(a0 + 0x72) |= 0x1000; - t = D_80078EB1 - 7; - t = (u32)t < 12; - if (t) { - t = 0x40; - } else { - t = 0x10; - } - *(u16 *)(a0 + 0xFE) = t; - *(u16 *)(a0 + 0xFC) = 0; - func_8012AD50(a0); -} - - -extern u8 D_80078EB1; -extern s32 func_800130D0(s32 a0, s32 a1, s32 a2); -extern void func_80184F18(); - -void func_80184E78(s32 *param_1) -{ - register s16 sp18 __asm__("$5"); - register s16 col __asm__("$2"); - register s32 w __asm__("$3"); - register s32 ec __asm__("$5"); - register s32 t1 __asm__("$4"); - register s32 packed __asm__("$4"); - register s32 *p __asm__("$4"); - u16 cnt; - - sp18 = 0x10; - if (D_80078EB1 - 7U < 0xC) { - sp18 = 0x40; - } - col = func_800130D0(*(s16 *)((u8 *)param_1 + 0xFE), sp18, 1); - w = col << 16; - ec = w >> 16; - t1 = ec << 16; - packed = t1 | ec << 8; - asm volatile("" ::: "memory"); - cnt = *(u16 *)((u8 *)param_1 + 0xFC); - *(s16 *)((u8 *)param_1 + 0xFE) = col; - *(u16 *)((u8 *)param_1 + 0xFC) = cnt + 1; - ec = ec | packed; - if ((s16)(cnt + 1) >= 0x7F) { - *(u16 *)((u8 *)param_1 + 0xFC) = 0; - } - p = param_1; - func_80184F18(p, ec, - *(s16 *)((u8 *)p + 0xFC)); -} - - -#include "common.h" - -#ifndef gte_ldv3 -#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 ) ) -#endif -#ifndef gte_rtpt -#define gte_rtpt() __asm__ volatile ("nop;nop;rtpt") -#endif -#ifndef gte_stsxy3 -#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" ) -#endif - -typedef struct { s16 vx, vy, vz, pad; } SV_80184F18; -typedef struct { u16 vx, vy, vz, pad; } SXY_80184F18; -typedef struct { u16 u, v; } UV_80184F18; -typedef struct { - SV_80184F18 v[4]; /* 0x00 */ - UV_80184F18 uv[4]; /* 0x20 */ - u32 rgb[4]; /* 0x30 */ - u32 flags; /* 0x40 */ - u8 clut; /* 0x44 */ -} Desc_80184F18; /* 0x48 */ -typedef struct { s16 m[3][3]; s32 t[3]; } MTX_80184F18; /* 0x20 */ -typedef struct { u16 f0, f1, f2, f3; } Tbl_80184F18; - -extern void func_80017D98(void *a0); -extern void func_80017E8C(s32 a0); -extern void func_800178EC(s32 a0); -extern u8 D_8018EFA0[]; -extern u8 D_8018EFA8[]; -extern u8 D_8018EF98[]; -extern Tbl_80184F18 D_8018EFB0[]; - -void func_80184F18(s16 *arg0, s32 arg1, s32 arg2) -{ - SXY_80184F18 sxy[6]; - MTX_80184F18 mtx; - Desc_80184F18 desc; - Desc_80184F18 *d; - Tbl_80184F18 *p; - s32 t; - register s32 u __asm__("$18"); - s32 i; - - desc.v[0].vz = 3; - desc.rgb[0] = 0x00010101; - desc.clut = 0x31; - desc.rgb[1] = arg1; - desc.rgb[2] = 0; - desc.rgb[3] = 0x00101010; - desc.flags = 0x50000000; - - func_80017D98(&mtx); - mtx.t[0] = arg0[3]; - mtx.t[1] = arg0[5]; - mtx.t[2] = arg0[7]; - func_80017E8C((s32)&mtx); - - u = arg2; - t = arg2; - d = &desc; - gte_ldv3(D_8018EFA0, D_8018EFA8, D_8018EF98); - gte_rtpt(); - gte_stsxy3(&sxy[0], &sxy[1], &sxy[2]); - - i = 0; - u += 0xD40; - desc.v[0].vz = 3; - sxy[0].vx = sxy[1].vx = sxy[2].vx; - for (; i < 3; i++) { - p = &D_8018EFB0[i]; - d->v[0].vx = sxy[1].vx; - d->v[0].vy = sxy[1].vy + p->f2; - d->v[1].vx = sxy[0].vx; - d->v[1].vy = sxy[0].vy; - d->v[2].vx = sxy[1].vx + p->f1; - d->v[2].vy = sxy[1].vy + p->f3; - d->v[3].vx = sxy[0].vx + p->f0; - d->v[3].vy = sxy[0].vy; - d->uv[0].u = u; - d->uv[0].v = 0x1FF; - d->uv[1].u = t + 0xD20; - d->uv[1].v = 0x100; - d->uv[2].u = p->f1 + u; - d->uv[2].v = 0x1FF; - d->uv[3].u = p->f0 + u; - d->uv[3].v = 0x100; - func_800178EC((s32)d); - d->v[2].vx = sxy[1].vx - p->f1; - d->v[3].vx = sxy[0].vx - p->f0; - d->uv[2].u = u - p->f1; - d->uv[3].u = u - p->f0; - func_800178EC((s32)d); - } -} - - -s32 func_8018517C(void) { - if (func_80029178(0xB8) & 0xFF) { - return 0x49; - } - if (func_80029178(0x17) & 0xFF) { - return 0x4E; - } - return 0x4C; -} - - - - - -extern Rec8_8018A390_8018523C D_801C5894[]; -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); - -void func_801851C8(s32 a0) -{ - s32 i; - s32 off; - - i = 0; - if (*(s16 *)((s32)D_801C5894) != 0) { - off = 0; - do { - func_8012C658(0x10D, i, a0); - i++; - off += 8; - } while (*(s16 *)((s32)D_801C5894 + off) != 0); - } -} - - - -/* func_8018523C — allocates a GTE-projection slot, seeds a random spread - * vector from a per-index table, rotates it by the model's Y angle, applies - * it to the object's matrix, adds it to the object's position, and seeds - * three random spin fields. MATCH (136/136 ins), match_one standalone. - * - * Declarations: func_8012B23C / func_8012AD50 / D_801C5894 / D_801C591C are - * NOT declared anywhere else in this TU (whole-TU grep, D2) so they're fresh - * here; func_8012C1B8 / func_8012CAE4 / func_8001C214 / ApplyMatrixSV ARE - * already file-scope in the TU (L163, L3160-3162) with these EXACT - * signatures, so re-declaring them identically merges silently (D3). - * - * §48 STRUCT ASSIGN: `m = D_800AE620;` on the 32-byte, 4-aligned matrix - * routes move_by_pieces to the plain lw/lw/lw+sw/sw/sw grouping (no lwl/lwr). - * - * §48-C2: `sv = D_801C5894[idx];` on the 8-byte, 2-aligned (u16 x,y,z; s16 w) - * record struct falls through move_by_pieces' align>=4 test and emits the - * lwl/lwr+swl/swr unaligned block-move pair instead — matches the target's - * four unaligned loads/stores exactly. - * - * REGALLOC LEVER (new, byte-verified this session — candidate for the - * cookbook): a redundant `void *s1 = a0;` local (never reassigned, used only - * as an alias for the parameter) made gcc-2.7.2 split the parameter pseudo - * into TWO allocnos — one for its pre-call uses (landing in $s0) and a - * SEPARATE one (bridged by an extra `move`) for its post-call/cross-branch - * uses (landing in $s1) — even though the target uses ONE register ($s1) - * uniformly from the second prologue instruction on. Referencing the - * parameter `a0` directly everywhere (no alias local) collapses this back to - * a single allocno and fixed 6 of the 11 mismatches outright. - * - * The remaining 5 (an `addu $a0,$v0,zero` copy scheduled too EARLY, and the - * alloc-check branch/store testing `$a0` instead of `$v0` directly) were a - * v0-pseudo/call-arg-copy coalescing difference: gcc folded the store, the - * branch test, AND the func_8012C1B8 return value into one $a0-homed pseudo. - * Folding the store and the compare into ONE C expression — - * `if ((*(s32*)(a0+0x20) = v0 = func_8012C1B8()) == 0)` — instead of two - * separate statements (assign-then-test) made cc1 keep the store/test on the - * call's native $v0 and defer the $a0 copy to just before its actual - * consumer (func_8001C214), matching the target's schedule exactly. No - * register pins, no permuter, no zero-byte asm barriers needed for either - * residual — both C-lever-closeable (§136-class local-variable/expression- - * shape levers). - */ -void func_8018523C(void *a0) -{ - /* 32B, align 4 */ - /* 8B, align 2 */ - - extern Mat32_8018A390_8018523C D_800AE620; - extern Rec8_8018A390_8018523C D_801C5894[]; - extern s32 D_801C591C[]; - - extern void func_8012C1B8(void); - extern void func_8012CAE4(void *a0); - extern void func_8001C214(s32 a0, s32 a1); - extern void RotMatrixY(s32 a0, void *a1); - extern void ApplyMatrixSV(void *a0, void *a1, void *a2); - extern void func_8012B23C(s32 a0); - extern s32 func_8012AD50(void *a0); - extern s32 rand(void); - - Mat32_8018A390_8018523C m; /* sp+0x10 */ - Rec8_8018A390_8018523C sv; /* sp+0x30 */ - void *mp; - void *svp; - s32 v0; - s16 w; - - m = D_800AE620; - sv = D_801C5894[*(s16 *)((s32)a0 + 0x70)]; - - mp = &m; - svp = &sv; - - if ((*(s32 *)((s32)a0 + 0x20) = v0 = ((s32 (*)(void))func_8012C1B8)()) == 0) { - func_8012CAE4(a0); - return; - } - - w = sv.w; - func_8001C214(v0, D_801C591C[w]); - - RotMatrixY(*(s16 *)(*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0x20) + 0x12), mp); - - ApplyMatrixSV(mp, svp, svp); - - *(u16 *)((s32)a0 + 0x6) += sv.x; - *(u16 *)((s32)a0 + 0xA) += sv.y; - *(u16 *)((s32)a0 + 0xE) += sv.z; - func_8012B23C((s32)a0); - - *(s16 *)((s32)a0 + 0x12) = (s16)sv.x >> 3; - *(s16 *)((s32)a0 + 0x16) = (s16)sv.y >> 3; - *(s16 *)((s32)a0 + 0x1A) = (s16)sv.z >> 3; - - *(s16 *)((s32)a0 + 0xFC) = (s16)((rand() & 0x7FF) - 0x400) >> w; - *(s16 *)((s32)a0 + 0xFE) = (s16)((rand() & 0x7FF) - 0x400) >> w; - *(s16 *)((s32)a0 + 0x100) = (s16)((rand() & 0x7FF) - 0x400) >> w; - - func_8012AD50(a0); -} - - - -extern void (*D_801C5928[])(void); - -void func_8018545C(void *a0) { - D_801C5928[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern void func_8012AD80(s32 a0); -extern void func_8012C218(void *a0); - -void func_80185498(s32 a0) { - u8 *s0; - s16 val1; - s16 val2; - - func_8012AD80(a0); - s0 = (u8 *)a0; - - *(u16 *)(*(u32 *)(s0 + 0x20) + 0x10) += *(u16 *)(s0 + 0xFC); - *(u16 *)(*(u32 *)(s0 + 0x20) + 0x12) += *(u16 *)(s0 + 0xFE); - *(u16 *)(*(u32 *)(s0 + 0x20) + 0x14) += *(u16 *)(s0 + 0x100); - - val1 = *(s16 *)(*(s32 *)(s0 + 0x64) + 0x0A); - val2 = *(s16 *)(s0 + 0x0A); - - if (val2 > val1) { - func_8012C218((void *)a0); - } -} - - -void func_8018552C(void) { - - extern s16 D_801D4474; - s16 *p = &D_801D4474; - s32 i = 0xF; - do { - *p = 0; - p = (s16 *)((s32)p + 0xe); - i--; - } while (i >= 0); -} - - - -/* func_80185550 — cookbook §71 (sibling-first). - * func_801855F0 is ALREADY MATCHED in the same TU - * (src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.c L4221) as a 3-arg - * `void func_801855F0(s32, s32, s32)`, so the untouched $a3 at the first - * jal is just the incoming arg3 living on, not a 4th argument. - * func_8018570C (asm, same TU) reads its 2nd arg as lhu+0 / lhu+2 / lh+4 / - * lh+6 => the sp+0x10 local is a 4 x s16 record. - * - * Two levers took it 32 -> 2 -> 0 (match_one MATCH, rtu_match MATCH): - * 1. LENGTH-DRIFT (-2, cookbook §78): writing `sp10.unk2 = i * 0x100` - * leaves gcc-2.7.2 recomputing `sll v0,s1,8` instead of building the - * strength-reduced giv, so only s0..s3 get saved and the frame is two - * instructions short. An EXPLICIT accumulator (`ang += 0x100`) forces - * the second callee-saved register ($s2) and restores sw/lw $s4. - * 2. REGALLOC-PERM $s1>$s2 (cookbook §3-T2, source order drives emission): - * `ang = 0;` on its own line before the loop emits the $s2 zero-init - * FIRST. Folding it into the for-init (`for (i = 0, ang = 0; ...)`) - * puts $s1's zero-init first, which is the target order. - */ - - -extern void func_801855F0(s32 arg0, s32 arg1, s32 arg2); -extern void func_8018570C(s32 arg0, Rec_8018A6A4_80185550 *arg1, s32 arg2, s32 arg3); - -void func_80185550(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { - Rec_8018A6A4_80185550 sp10; - s32 i; - s32 ang; - - func_801855F0(arg0, 0x1000, 0); - sp10.unk0 = *(u16 *)(arg3 + 0x0); - sp10.unk4 = *(u16 *)(arg3 + 0x2); - sp10.unk6 = 1; - for (i = 0, ang = 0; i < 16; i++) { - sp10.unk2 = ang; - func_8018570C(i, &sp10, arg1, arg2); - ang += 0x100; - } -} - - -void func_801855F0(s32 arg0, s32 arg1, s32 arg2) { - /* [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 - (func_80185698 below declares D_801D4472 as s32 at block scope). - Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ - extern s16 D_801D446C; - extern s16 D_801D446E; - extern s16 D_801D4470; - extern s16 D_801D4472; - - D_801D446C = *(u16 *)((s32)arg0 + 0x0); - D_801D446E = *(u16 *)((s32)arg0 + 0x2); - D_801D4470 = arg1; - D_801D4472 = arg2; -} - - - - -extern void func_80015978(s32 a0, s32 *a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); - -void func_80185620(s32 a0) { - - extern s16 D_801D446C; - extern s16 D_801D446E; - /* [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 u8 D_800AF648; - u16 sxy[2]; - s32 pv[4]; - - func_80015978(a0, pv); - func_8004914C(&D_800AF648); - func_800491AC(&D_800AF648); - RotTransPers((s32)pv, (s32)sxy, &pv[2], &pv[3]); - - D_801D446C = sxy[0]; - D_801D446E = sxy[1]; -} - - - void func_80185698(s32 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_801D4472; - *(s16 *)((s32)&D_801D4472 + 0x0) += arg0; - } - - - - -extern s32 func_801857E0(void); -extern void func_8018570C(); - -void func_801856B4(s32 a0, s32 a1, s32 a2) { - s32 v0 = func_801857E0(); - if (v0 >= 0) { - func_8018570C(v0, (void *)a0, a1, a2); - } -} - - - -/* func_8018570C — SPLICE RECONCILE (bytes unchanged from the s6h draft). - * - * THREE in-TU collisions, all fixed without touching an emitted instruction - * (src/ov_SC03_014/ov_SC03_014_jr_801848E4.c): - * - * (1) memcpy — cookbook §2959 / the sibling note at TU L3742. The TU declares - * memcpy THREE times: L81 + L1518 with the builtin-compatible signature - * (void*, const void*, unsigned) and then L1524 as - * `extern void *memcpy(void *dst, void *src, s32 n);`. L1524 disagrees with - * gcc's built-in, so duplicate_decls "throws away the built-in" (warning only, - * because the old decl was still DECL_BUILT_IN) and installs a PLAIN function - * decl. Two consequences at the splice point (L3635): - * a. my own builtin-shaped redeclaration now conflicts with a plain decl — - * hard error ("conflicting types for `memcpy'", :3637 vs :1524); - * b. even if it compiled, the identifier `memcpy` is no longer a builtin - * here, so both copies would lower to `jal memcpy` — but the TARGET - * bytes are the INLINE block move (lwl 3 / lwr 0 / swl / swr, no jal). - * Fix = do not name memcpy at all: a 4-byte STRUCT ASSIGN through an - * ALIGN-1 struct (u8 x4). That is exactly the sibling func_8018ADA8 lever - * in this same TU (TU L3736-3744, cookbook §48-C2): align 1 routes - * mips.c expand_block_move, which copy_addr_to_reg's the source into one - * held register -> the identical lwl/lwr + swl/swr pair, zero memcpy ref. - * The typedef is BLOCK-scoped so it cannot collide with the TU's own - * block-scoped `V4` at L3758. - * - * (2) func_8018570C itself — the TU prototypes it at L3570 as - * `extern void func_8018570C(s32, Rec_8018A6A4 *, s32, s32);` (used by the - * matched caller func_8018A6A4 at L3583). Rec_8018A6A4 is a TU-local - * typedef I cannot restate (C89 forbids the redefinition), and the last two - * args are really pointers, so defining the name directly is "conflicting - * types". Fix = §37/§124 ASM-LABEL ALIAS: define aF8018A860 with an - * __asm__("func_8018570C") label. Emits the identical symbol, leaves the - * TU's declaration untouched, zero blast radius, zero byte change. - * - * (3) D_801D4474 / rand — declared VERBATIM as the TU already has them - * (D_801D4474: TU L3637 + L3671; rand: TU L951), so both are exact - * re-declarations and merge silently. - */ -extern s32 rand(void); /* TU L951, verbatim */ - -void aF8018A860(s32 a0, s16 *a1, u8 *a2, u8 *a3) __asm__("func_8018570C"); - -void aF8018A860(s32 a0, s16 *a1, u8 *a2, u8 *a3) -{ - - extern s16 D_801D4474; /* TU L3637 / L3671, verbatim */ - /* align 1 — §48-C2 */ - s16 *s1; - u16 temp_u16; - s16 temp_s16; - s32 temp_s32, v0; - - s1 = (s16 *)((a0 * 14) + (s32)&D_801D4474); - - *(u16 *)s1 = *(u16 *)a1; - - *(B4_8018570C *)((u8 *)s1 + 6) = *(B4_8018570C *)a2; - *(u8 *)((u8 *)s1 + 9) = 0; - - *(B4_8018570C *)((u8 *)s1 + 10) = *(B4_8018570C *)a3; - *(u8 *)((u8 *)s1 + 13) = 0; - - v0 = rand() & 0x3f; - temp_u16 = *(u16 *)((u8 *)a1 + 2); - *(u16 *)((u8 *)s1 + 2) = temp_u16 + v0 - 0x20; - - v0 = rand() & 0x7f0; - temp_s16 = *(s16 *)((u8 *)a1 + 4); - temp_s32 = temp_s16 * (v0 + 0xc00); - v0 = (s32)(temp_s32 >> 12); - *(s16 *)((u8 *)s1 + 4) = (s16)v0; - - v0 = *(s16 *)((u8 *)a1 + 6); - if (v0 != 0) { - u16 v1 = *(u16 *)((u8 *)s1 + 4); - *(u8 *)((u8 *)s1 + 9) = 1; - *(u16 *)((u8 *)s1 + 4) = 0; - *(u8 *)((u8 *)s1 + 13) = (u8)v1; - } -} - - - - -s32 func_801857E0(void) { - - extern s16 D_801D4474; - s32 i = 0; - s32 offset = 0; - - while (i < 0x10) { - u16 val = *(u16*)((u8*)&D_801D4474 + offset); - if (val == 0) { - return i; - } - i++; - offset += 0xE; - } - return -1; -} - - - - - -void func_8018581C(s32 a0, s32 a1) { - - extern s16 D_801D4474; - s16 *s1; - u16 val; - - if (a0 >= 0x10) return; - - s1 = (s16 *)((a0 * 14) + (s32)&D_801D4474); - val = *(u16 *)s1; - - if (val == 0) return; - - if (a1 == 0) { - *(u16 *)s1 = 0; - } else { - *(u8 *)((u8 *)s1 + 9) = 2; - } -} - - - -/* func_80185868 — 16-entry table walk, stride 0xE, over D_801D4474. - * §71 sibling: func_8018A680 (same TU, L4199) already matched the - * `extern s16 D_801D4474; s16 *p = &D_801D4474; p = (s16*)((s32)p+0xe)` - * shape over the very same array — copy that walker verbatim. - * - * Two induction registers in the target ($s1 = base+0, $s0 = base+4) are NOT - * two source pointers: $s1 is the user pointer (the biv, used for the +0 - * accesses) and $s0 is loop.c's single COMBINED address giv for the - * {+4, +9, +13} group (offsets 0/5/9 off $s0). Declaring a second pointer - * splits that group and costs a third register (iter 1: 53 mismatches). - */ - -extern void func_80185944(s32 arg0); - -void func_80185868(void) { - - extern s16 D_801D4474; - s16 *p = &D_801D4474; - s32 i = 0; - s16 t; - - do { - if (*(u16 *)p != 0) { - func_80185944(i); - switch (*(u8 *)((s32)p + 9)) { - case 1: - if (*(s16 *)((s32)p + 4) < *(u8 *)((s32)p + 13)) { - *(s16 *)((s32)p + 4) = *(s16 *)((s32)p + 4) + 8; - } else { - *(u8 *)((s32)p + 9) = 0; - } - break; - case 2: - t = *(s16 *)((s32)p + 4); - if (t != 0) { - t -= 0x10; - *(s16 *)((s32)p + 4) = t; - if (t > 0) { - break; - } - } - *p = 0; - break; - } - } - i++; - p = (s16 *)((s32)p + 0xe); - } while (i < 0x10); -} - - - -/* func_80185944 — draws one entry of the 16-slot D_801D4474 particle table: - * bump-allocates a 0x1C-byte GPU packet out of D_800A5E60, fills it from the - * table entry, runs two RotMatrixZ/ApplyMatrixSV passes to place the two - * endpoints, then link-ins the packet into the current double-buffer's OT - * (the PSY-Q `addPrim` macro pair) and calls func_80016638. - * - * STATUS: byte-MATCH, 177/177 instructions (match_one standalone AND spliced - * into the real TU — the in-TU compile adds ZERO new cc1 diagnostics over the - * unmodified TU baseline). - * - * --------------------------------------------------------------------------- - * LEVERS (each byte-checked against asm/.../func_80185944.s) - * - * §48 STRUCT ASSIGN, not a hand-rolled temp copy. `m = D_800AE620;` on a - * 32-byte aggregate routes expr.c move_by_pieces, which emits the exact - * lw/lw/lw + sw/sw/sw (x2) + lw/lw + sw/sw grouping AND picks the - * target's registers ($a2 = source address, $v0/$v1/$a1 = carriers), and - * keeps the arg0*14 allocator chain OUT of the copy. The manual - * three-temp form (DEFINE_func_8012B4B8, engine_core.h L29487) emits the - * same instruction MIX but a different allocation (+60 mismatches). - * - * §21/T6 The double-buffer index D_800B9A02 is read at ALL THREE use sites - * (three `lhu`s off ONE materialised `la`). A PLAIN read is CSEd down to - * two AND keeps -G0 symbol addressing (lui+lhu per read, +1 insn); a - * POINTER local gives the `la` but lets cse fold the third read. The - * `volatile u16 *` pointer local reproduces BOTH properties and leaves - * the TU's own `extern s16 D_800B9A02;` untouched. - * - * T6 The OT base is bound to an s32 local (`ot`) so the tag read/write keep - * the `0x40($v1)` displacement form instead of folding into the pointer. - * - * L4 `mp`, a pointer local bound to &m, is what puts the matrix address in a - * callee-saved register ($s2) and turns each argument setup into a move; - * passing the array directly re-materialises `addiu $aN,$sp,0x10` at - * every call site and drops $s6 from the frame entirely. - * - * S1 `t = *(u16 *)ent;` is hoisted ABOVE the two `sh $zero` stores — the - * sp-relative stores are not disambiguated from the $s0-based load, so - * only SOURCE ORDER moves it (4 mismatches). - * - * T-form `u16 bx/by` (not s32) is what makes `addu $v0,$s3,$v0` come out with - * the accumulator first; through s32 locals combine canonicalises the - * zero_extend into operand 0 and both adds emit reversed. - * - * §83c-inverse FRAME: 0x70 = 16 args + 56 declared vars + 32 saved regs + an - * 8-byte COMPILER TEMP that gcc allocates for the two `symbol+register` - * memory references (both D_800A651C). So the DECLARED locals must total - * 56, not 60: m(32)@0x10, sv(8)@0x30, out(8)@0x38, v(8)@0x40 — the third - * word of the vector handed to func_8004901C (sp+0x48) lands INSIDE that - * compiler temp. `s32 v[3]` gives a 0x78 frame and 19 extra mismatches. - * Do NOT invent a dead local to reach the frame size. - * - * --------------------------------------------------------------------------- - * THE TWO RESIDUAL CLUSTERS AND WHAT ACTUALLY CLOSED THEM - * (both are gcc-2.7.2-map/sched.md §1 rule 7 "BIRTHING BOOST" + rule 5(b) - * "potential hazard"; diagnosed from the cc1 `-dS` ready-list trace, which - * names the decision verbatim: `;; insn 245 has a greater potential hazard`.) - * - * (a) The three symbol loads before the first RotMatrixZ came out E4,EA,E6 - * instead of EA,E4,E6. `lh $a0,D_801D4472` is a single-set SET(REG,…) — - * the sched1 birthing boost sinks it to just before its consumer (the - * jal), i.e. one slot too late. Statement order CANNOT fix this: written - * as a plain local the load is combined into the call's arg setup, so its - * LUID is the call's either way (verified: two source orders, identical - * bytes). `register s32 ang __asm__("$4")` keeps the load a separate insn - * AT its source position — zero extra instructions, +0 bytes. - * - * (b) The tail's `lw $v1,0($s1)` (`*(u32 *)p`) belongs in the load-delay slot - * of `lhu $a0,0($a2)`; ours landed 7 insns later with `lui $a0,0xff00` - * taking the slot. sched1 trace: at T-27 the ready list is - * `247 (7f000001) 245 (7f000001)` — BOTH boosted — and the tie goes to the - * LOAD via `potential_hazard` (memory-unit users beat ALU insns), so the - * load is picked first = placed LAST. TWO edits are needed and neither - * works alone: - * 1. KILL the boost on the load's destination — `pv` gets a second SET - * from a zero-byte dead `__asm__ __volatile__("" : "=r"(pv));` at the - * end of the function (sched.md S2: a plain C reassignment does not - * work, cse/flow removes it; reusing one local across BOTH addPrim - * halves does kill the boost but makes `pv` a 2-death GLOBAL allocno - * that loses $v1, §136). With the boost dead, sched1 emits the - * target order exactly (proved with -fno-schedule-insns2). - * 2. PIN `pv` to $v1 (`register u32 pv __asm__("$3")`). Without it, - * local-alloc gives $v1 to the shorter, denser index quantity and - * `pv` lands in $a1/$t0; sched2 then re-applies rule 5(b) and undoes - * sched1's order. With `pv` in $v1 the index is pushed to $a0, the - * 0xFF000000 constant reuses $a0, and its output-dependence on the - * index's `sll/addu` FREEZES it after them — which is precisely the - * target's shape, and what makes sched2 leave sched1's order alone. - * - * Pin-trim log (all re-scored): dropping the $a2 `bidx` pin — MATCH; - * dropping the $a3 0xFFFFFF pin — MATCH; dropping `ang` — 4 mismatches - * (a dead-volatile boost-kill on `ang` does NOT substitute); dropping - * `pv` — 11; dropping the dead `pv` asm — 11. Two pins are the minimum - * found. - * - * --------------------------------------------------------------------------- - * DECLARATIONS: ApplyMatrixSV, D_800B9A02 and D_801D446C/E6/EA/EC are declared - * VERBATIM as the TU already has them at file scope (L163, L2460/2462, - * L3689/3705/3706, L3726, L3879), so they merge silently. D_800AE620, - * D_800A5E60, D_800A651C, D_800A6518, D_801D4470, RotMatrixZ, func_8004901C and - * func_80016638 have NO file-scope declaration anywhere in the TU and none in - * include/ (checked in one pass, D2), so each is block-scoped here to keep the - * blast radius on the rest of the TU at zero (§103/T51). Verified by splicing - * this body over the INCLUDE_ASM at TU L3917 and compiling the whole TU: same - * 7 stderr lines as the untouched TU, and func_80185944 is byte-identical. - */ - -void func_80185944(s32 arg0) -{ - /* 32 bytes, align 4 */ - - extern Blk32_8018AA98_80185944 D_800AE620; - extern s32 D_800A5E60; - extern s32 D_800A651C; - extern u8 D_800A6518[]; - extern s16 D_801D446C; - extern s16 D_801D446E; - extern s16 D_801D4470; - extern s16 D_801D4472; - extern s16 D_801D4474; - extern void RotMatrixZ(s32 a0, void *a1); - extern void ApplyMatrixSV(void *a0, void *a1, void *a2); - extern void func_8004901C(void *a0, void *a1); - extern void func_80016638(void *a0, s32 a1, s32 a2); - - Blk32_8018AA98_80185944 m; /* sp+0x10 */ - s16 sv[4]; /* sp+0x30 */ - s16 out[4]; /* sp+0x38 */ - s32 v[2]; /* sp+0x40 — 3rd word lives in the temp area */ - void *mp; - u8 *p; - u8 *ent; - s32 ot; - u16 bx; - u16 by; - register s32 ang __asm__("$4"); /* §17 pin — see residual (a) */ - volatile u16 *bidx; - s32 t; - register u32 pv __asm__("$3"); /* §17 pin — see residual (b) */ - - m = D_800AE620; - mp = &m; - - ent = (u8 *)((arg0 * 14) + (s32)&D_801D4474); - p = (u8 *)D_800A5E60; - D_800A5E60 = (s32)p + 0x1C; - - p[3] = 6; - p[7] = 0x32; - p[4] = ent[6]; - p[5] = ent[7]; - p[6] = ent[8]; - p[0xC] = ent[0xA]; - p[0xD] = ent[0xB]; - p[0xE] = ent[0xC]; - p[0x14] = ent[0xA]; - p[0x15] = ent[0xB]; - p[0x16] = ent[0xC]; - - ang = D_801D4472; - bx = (u16)D_801D446C; - by = (u16)D_801D446E; - RotMatrixZ(ang, mp); - - *(s32 *)((u8 *)v + 8) = D_801D4470; - v[1] = *(s32 *)((u8 *)v + 8); - v[0] = v[1]; - func_8004901C(mp, v); - - t = *(u16 *)ent; - sv[2] = 0; - sv[1] = 0; - sv[0] = t; - *(s16 *)(p + 8) = bx; - *(s16 *)(p + 0xA) = by; - - RotMatrixZ(*(s16 *)(ent + 2) - (((s32)*(u16 *)(ent + 4) << 16) >> 17), mp); - ApplyMatrixSV(mp, sv, out); - *(s16 *)(p + 0x10) = bx + (u16)out[0]; - *(s16 *)(p + 0x12) = by + (u16)out[1]; - - RotMatrixZ(*(s16 *)(ent + 4), mp); - ApplyMatrixSV(mp, sv, out); - bx += (u16)out[0]; - *(s16 *)(p + 0x18) = bx; - by += (u16)out[1]; - *(s16 *)(p + 0x1A) = by; - - /* addPrim(otp, p) == setaddr(p, getaddr(otp)), setaddr(otp, p) */ - bidx = (volatile u16 *)&D_800B9A02; - pv = *(u32 *)p; - *(u32 *)p = (pv & 0xFF000000) | - (*(u32 *)(*(s32 *)((u8 *)&D_800A651C + - (*bidx * 20)) + 0x40) & 0xFFFFFF); - ot = *(s32 *)((u8 *)&D_800A651C + (*bidx * 20)); - *(u32 *)(ot + 0x40) = (*(u32 *)(ot + 0x40) & 0xFF000000) | ((u32)p & 0xFFFFFF); - func_80016638(&D_800A6518[*bidx * 20], 0x10, 1); - __asm__ __volatile__("" : "=r"(pv)); /* zero-byte 2nd SET: kills the sched1 birthing boost */ -} - - -void func_80185C08(void) { - - extern s16 D_801D436C; - s16 *p = &D_801D436C; - s32 i = 0xF; - do { - *p = 0; - p = (s16 *)((s32)p + 0x10); - i--; - } while (i >= 0); -} - - - - -extern void func_80015978(s32 a0, s32 *a1); -extern void func_80185C54(s32 a0); - -void func_80185C2C(s32 a0) { - s32 pv[2]; - func_80015978(a0, pv); - func_80185C54((s32)pv); -} - - - -/* func_80185C54 — §71 sibling of func_8018A774 / func_8018AF0C (same TU): the - * RotTransPers wrapper family. Here the SVECTOR comes in as the parameter - * instead of being produced by func_80015978, so pv[0..1] is free and carries - * the 4-byte word copied out of D_801D2E54 instead. - * - * Frame proof (0x38 = 0x10 outgoing + 0x18 var + 0x10 saved s0/s1/ra): - * sp+0x10 u16 sxy[4] (8 bytes) -> RotTransPers a1, func_80185CDC arg0 - * sp+0x18 s32 pv[4] (16 bytes) -> pv[0] = copy dest, &pv[2]/&pv[3] = 0x20/0x24 - * - * The lwl 0x3 / lwr 0x0 / swl 0x1B / swr 0x18 block move: a 4-byte struct assign - * whose type has ALIGNMENT 1 (cookbook §48-C2). Align 1 (not 2) is load-bearing — - * it is what pushes the copy off the move_by_pieces path (which keeps the SYMBOL - * in the address and emits a fresh `lui $at,%hi` per reference) onto mips.c - * expand_block_move, which copy_addr_to_reg's the source address into ONE held - * register first -> `lui $a1,%hi; addiu $a1,$a1,%lo; lwl 3($a1); lwr 0($a1)`. - * A {u16,u16} (align 2) struct compiles to the same opcode sequence but with the - * folded-symbol addressing: 4 mismatches. Struct assign, NOT memcpy (memcpy - * byte-matches in isolation but lowers to `jal memcpy` in any TU that declares - * it — §2959). - * - * All four callee prototypes are copied VERBATIM from this TU (func_8004914C / - * func_800491AC / RotTransPers at file scope L3484-3486; func_80185CDC from its - * own definition at L3612). D_800AF648 is block-scoped `extern u8` exactly as - * the two matched siblings do it. D_801D2E54 appears nowhere else in the TU. - */ - -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_80185CDC(void *arg0, void *arg1, s32 arg2, s32 arg3); - -void func_80185C54(s32 a0) { - extern u8 D_800AF648; - extern V4_80185C54 D_801D2E54; - u16 sxy[4]; - s32 pv[4]; - - *(V4_80185C54 *)pv = D_801D2E54; - func_8004914C(&D_800AF648); - func_800491AC(&D_800AF648); - RotTransPers(a0, (s32)sxy, &pv[2], &pv[3]); - func_80185CDC(sxy, pv, 0x10, 0x18); -} - - - -extern void func_80185D48(void *a0, void *a1, s16 a2); -extern void func_80185E7C(s32 a0, s16 a1, u16 a2); - -void func_80185CDC(void *arg0, void *arg1, s32 arg2, s32 arg3) { - /* The target frame is 0x30: 0x10 outgoing-arg area + 0x10 var_size + - * 0x10 saved regs (s0/s1/s2/ra at 0x20..0x2C). gcc-2.7.2 allocates a - * declared aggregate even when it is never referenced, so this 16-byte - * local reproduces the original's var_size exactly. */ - s32 unused[4]; - s32 i; - s32 j; - - func_80185D48(arg0, arg1, arg2); - for (i = 0, j = 0; i < 0x10; i++, j += 0x100) { - func_80185E7C(i, j, arg3); - } -} - - - - - -void func_80185D48(void *a0, void *a1, s16 a2) { - - extern s16 D_801D4360; - extern s16 D_801D4362; - extern u8 D_801D4368; - extern u8 D_801D4369; - extern u8 D_801D436A; - extern u32 D_801D4364; - if (a0 != NULL) { - D_801D4360 = *(u16 *)a0; - D_801D4362 = *(u16 *)((s32)a0 + 2); - } else { - D_801D4360 = 0; - D_801D4362 = 0; - } - - D_801D4368 = *(u8 *)a1; - D_801D4369 = *(u8 *)((s32)a1 + 1); - D_801D436A = *(u8 *)((s32)a1 + 2); - D_801D4364 = (u32)a2 << 16; -} - - - - -extern void func_80015978(s32 a0, s32 *a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); - -void func_80185DB8(s32 a0) { - - extern s16 D_801D4360; - extern s16 D_801D4362; - /* [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 u8 D_800AF648; - u16 sxy[2]; - s32 pv[4]; - - func_80015978(a0, pv); - func_8004914C(&D_800AF648); - func_800491AC(&D_800AF648); - RotTransPers((s32)pv, (s32)sxy, &pv[2], &pv[3]); - - D_801D4360 = sxy[0]; - D_801D4362 = sxy[1]; -} - - - - -extern s32 func_80185F98(void); -extern void func_80185E7C(s32 a0, s16 a1, u16 a2); - -void func_80185E30(s32 a0, s32 a1) { - s32 result = func_80185F98(); - if (result >= 0) { - s16 ext_a0 = (s16)a0; - func_80185E7C(result, ext_a0, (u16)a1); - } -} - - - -/* func_80185E7C — particle/ripple spawner for slot `a0` of the 16-entry, - * 0x10-byte-stride table at D_801D436C. - * - * Declaration notes (the TU already carries all of these — nothing is invented): - * - rand / func_80047948 / func_8004787C : verbatim re-declarations of the - * TU's own file-scope prototypes (L951, L2197, L2198) -> merge silently. - * - D_801D436C : block-scope `extern s16` exactly as func_8018AD5C (L3869) - * and func_8018B0EC (L3982) declare it. - * - D_801D4366 : its own dlabel in asm/ov_SC03_014/data/tail19.data.s:5868; - * undeclared anywhere in the TU, so a block-scope extern is conflict-free. - * It is declared as an ARRAY on purpose: the ARRAY_REF sets MEM_IN_STRUCT_P, - * which restores the true_dependence() edge against the in-struct `p->f2` - * store and stops sched2 from hoisting the load above it (cookbook §135/2). - * - The TU's own prototype for this function is - * extern void func_80185E7C(s32 a0, s16 a1, u16 a2); (L3929) - * but the body byte-proves the params are plain s32 (no `sll/sra` on $a1 and - * a single `andi` at the use, not the promoted-var `move`+`andi` pair). So the - * definition uses the §37/§124 ASM-LABEL ALIAS — exactly what this same TU - * already does for `aF8018A860` — leaving the TU's declaration untouched. - */ - -extern s32 rand(void); -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); - -void aF8018AFD0(s32 a0, s32 a1, s32 a2) __asm__("func_80185E7C"); - -void aF8018AFD0(s32 a0, s32 a1, s32 a2) -{ - - extern s16 D_801D436C; - extern s16 D_801D4366[]; - - s32 unused[4]; /* dead locals — reproduces var_size 0x10 (frame 0x38) */ - P_80185E7C *p; - u16 rad; - s32 m; - s32 ang; - s32 t8; - s16 tC; - - p = (P_80185E7C *)((s32)&D_801D436C + (a0 << 4)); - - rad = a2; - rad = a2 + (rand() % (rad >> 2) - (rad >> 3)); - - ang = a1 + (rand() & 0x3f) - 0x20; - p->f6 = ang; - - m = rad; - t8 = (func_80047948(p->f6) * m) >> 12; - tC = (func_8004787C(p->f6) * m) >> 12; - p->f8 = t8 << 16; - p->fC = tC << 16; - - p->f0 = (rand() & 0xf) + 0x10; - p->f2 = m << 6; - p->f4 = (s32)D_801D4366[0] * 64; -} - - - - -s32 func_80185F98(void) { - - extern s16 D_801D436C; - s32 i = 0; - s32 offset = 0; - - while (i < 0x10) { - u16 val = *(u16*)((u8*)&D_801D436C + offset); - if (val == 0) { - return i; - } - i++; - offset += 0x10; - } - return -1; -} - - - - -/* func_80185FD4 — the 16-slot particle/effect stepper over D_801D436C[16] - * (0x10-byte records; slot 0 = the `active` u16 that func_8018AD5C clears and - * func_8018B0EC scans). Layout used here, all as byte-offsets off ONE walked - * base pointer: - * +0x0 u16 active +0x2 s16 angle +0x4 u16 dangle - * +0x6 s16 dir +0x8 s32 x +0xC s32 z - * - * IV shape (cookbook §3-Giv / gcc-map L1): the target has ONE biv (the walked - * base, kept alive by the bare +0x0 accesses, which find_mem_givs excludes from - * giv formation) plus ONE combined DEST_ADDR giv anchored at base+2 - * (`addiu $s1, $s2, 0x2`). combine_givs takes g1 from the list HEAD and - * record_giv PREPENDS, so *the last-emitted offset reference anchors*: the - * `+= dangle` statement (which ends on a +0x2 store) must therefore come LAST - * in the body. Written before the two s32 updates it anchors at base+0xC - * instead -> 14 mismatched immediates. - * - * Both rsin/rcos products are computed BEFORE any store because gcc-2.7.2's - * sched.c makes every mem ref depend on last_function_call — a store emitted - * between the two `jal`s could not have floated below the second one. - * - * `i++` precedes the pointer bump in the for-increment: that emission order is - * what puts `addiu $s4,$s4,1` ahead of the giv's `addiu $s1,$s1,0x10` (the - * biv's own bump then fills the branch delay slot). - * - * func_80047948 / func_8004787C keep this TU's file-scope prototypes verbatim - * (L2197-2198, `s32` param) — the s16 field is sign-extended at the call site - * by the `lh`, so the narrower m2c-style `s16` prototype is not needed (§17a-1). - * D_801D436C uses the TU's existing block-scope `extern s16` spelling - * (func_8018AD5C L3869, func_8018B0EC L3982). - */ - -extern s32 func_80047948(s32 a0); -extern s32 func_8004787C(s32 a0); - -void func_80185FD4(void) { - - extern s16 D_801D4366; - extern s16 D_801D436C; - extern void func_801860E8(s32); - - s16 *p; - s32 i; - s16 ang; - s32 vx; - s32 vz; - - ang = D_801D4366; - p = &D_801D436C; - - for (i = 0; i < 0x10; i++, p = (s16 *)((s32)p + 0x10)) { - if (*(u16 *)p != 0) { - if ((ang > 0 && *(s16 *)((s32)p + 2) > 0x4000) || - (ang < 0 && *(s16 *)((s32)p + 2) <= 0)) { - *p = 0; - } else { - func_801860E8(i); - vx = func_80047948(*(s16 *)((s32)p + 6)) * ang * 0x10; - vz = func_8004787C(*(s16 *)((s32)p + 6)) * ang * 0x10; - *(s32 *)((s32)p + 8) += vx; - *(s32 *)((s32)p + 12) += vz; - *(u16 *)((s32)p + 2) += *(u16 *)((s32)p + 4); - } - } - } -} - - - -/* func_801860E8 — spawns one 0x14-byte GPU packet from D_800A5E60, rotates / - * scales a matrix copy of D_800AE620 by the D_801D436C[a0] record, projects the - * four corner offsets into the packet, then links the packet into the OT. - * - * Byte-verified levers (all three were needed; each is worth 8-31 insns): - * - * A. THE OT LINK IS THE libgpu P_TAG BITFIELD, NOT HAND-MASKING. Writing - * `*(u32*)q = (*(u32*)q & 0xFF000000) | (ot & 0xFFFFFF)` is byte-correct - * arithmetic but gives the WRONG register assignment (16 mismatches: the - * 0xFFFFFF / 0xFF000000 / &D_800B9A02 pseudos land in a0/a2/a3 permuted, - * and the `lw $v1,0($s3)` gets serialised behind the index load). The - * `unsigned addr:24; unsigned len:8` bitfield insert reproduces both the - * allocation and the schedule exactly. This is just `addPrim(ot, q)`. - * - * B. THE OT TABLE MUST BE AN ARRAY_REF (`D_800A651C[i].a`), NOT - * `*(s32*)((u8*)&D_800A651C + i*20)`. With the pointer-arith spelling gcc - * allocates a phantom 8-byte stack temp that is never referenced, pushing - * the frame from 0x68 to 0x70 (cookbook D6 in reverse: the frame is too - * BIG). The temp only appears when the SAME lookup expression occurs in - * two statements; the ARRAY_REF form (engine_core.h `OtBlk`) kills it. - * - * C. THE LAST ApplyMatrixSV RECOMPUTES THE MATRIX ADDRESS. The first four - * matrix arguments come out of $s4 (`addu $aX,$s4,$zero`), but the fifth is - * `addiu $a0,$sp,0x10`. cse.c cannot be talked out of folding a fifth - * `&m` into the existing pseudo: the conditional above it is a - * "branch around a block", so cse_end_of_basic_block EXTENDS the basic - * block through the join label (status AROUND) and the equivalence class - * for (plus fp 16) is still live. Every source-level attempt to break it - * (pointer local, `mp = m` in the skipped arm, a §21 zero-byte re-tie, - * do{}while(0) loop notes) either changed nothing or cost 3 insns by - * turning the pointer into a two-def global allocno. Pinning a reader to - * $sp makes the expression `(plus (reg 29) 16)` — a different rtx from - * `(plus (reg fp) 16)`, so cse never looks it up, and the single-use pseudo - * is folded by combine into the one `addiu` the target has. - * - * The svp/outp block around the FIRST ApplyMatrixSV is load-bearing too: - * removing it costs 6 insns and two extra callee-saved registers. - */ - -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern void RotMatrixZ(s32 a0, void *a1); -extern void func_8004901C(void *a0, void *a1); -extern void func_80016638(void *a0, s32 a1, s32 a2); - - -/* 0x10-byte-stride record table at D_801D436C (same table as func_8018AD5C) */ - - /* the 0x20-byte matrix */ - /* == engine_types.h OtBlk */ - /* the D_800B9A02 buffer index */ - /* libgpu P_TAG */ - -void func_801860E8(s32 a0) { - - extern s16 D_801D4360; - extern s16 D_801D4362; - extern u8 D_801D4368; - extern u8 D_801D4369; - extern u8 D_801D436A; - - extern s16 D_801D436C; - extern u8 *D_800A5E60; - extern s32 D_800AE620; - extern u8 D_800A6518[]; - extern Ot_8018B23C_801860E8 D_800A651C[]; - - s32 m[8]; /* sp+0x10 */ - u8 sv[8]; /* sp+0x30 */ - u16 out[4]; /* sp+0x38 */ - s32 scale[4]; /* sp+0x40 */ - - u8 *q; - Rec_8018B23C_801860E8 *p; - s32 x; - s32 y; - s32 ang; - - q = D_800A5E60; - - *(Mat32_8018B23C_801860E8 *)m = *(Mat32_8018B23C_801860E8 *)&D_800AE620; - - D_800A5E60 = q + 0x14; - *(u8 *)(q + 3) = 4; - *(u8 *)(q + 7) = 0x22; - *(u8 *)(q + 4) = D_801D4368; - *(u8 *)(q + 5) = D_801D4369; - *(u8 *)(q + 6) = D_801D436A; - - p = (Rec_8018B23C_801860E8 *)((s32)&D_801D436C + (a0 << 4)); - x = p->fA + (u16)D_801D4360; - y = p->fE + (u16)D_801D4362; - RotMatrixZ(p->f6, m); - - scale[0] = *(s16 *)((s32)p + 2); - scale[1] = *(s16 *)((s32)p + 2); - scale[2] = *(s16 *)((s32)p + 2); - func_8004901C(m, scale); - - *(s16 *)(sv + 4) = 0; - *(s16 *)(sv + 2) = 0; - *(s16 *)(sv + 0) = p->f0; - { - void *svp = sv; - void *outp = out; - ApplyMatrixSV(m, svp, outp); - __asm__ __volatile__("" : "=r"(svp)); - __asm__ __volatile__("" : "=r"(outp)); - } - - *(s16 *)(q + 0x8) = x + ((s16)out[0] >> 1) * 3; - *(s16 *)(q + 0xA) = y + ((s16)out[1] >> 1) * 3; - *(s16 *)(q + 0xC) = x - ((s16)out[0] >> 1); - *(s16 *)(q + 0xE) = y - ((s16)out[1] >> 1); - x = x + out[0]; - *(s16 *)(q + 0x10) = x; - y = y + out[1]; - *(s16 *)(q + 0x12) = y; - - ang = -0x400; - if (p->f0 & 1) { - ang = 0x400; - } - RotMatrixZ(ang, m); - - *(s16 *)(sv + 0) = 2; - { - /* lever C: sp+0x10 IS &m, but spelled so cse cannot fold it to $s4 */ - register u8 *spr __asm__("$29"); - ApplyMatrixSV(spr + 0x10, sv, out); - } - - *(s16 *)(q + 0x10) = *(u16 *)(q + 0x10) + out[0]; - *(s16 *)(q + 0x12) = *(u16 *)(q + 0x12) + out[1]; - - { - Bidx_8018B23C_801860E8 *bp = (Bidx_8018B23C_801860E8 *)&D_800B9A02; - - /* addPrim(&D_800A651C[bp->f].a[0x10], q) */ - ((PTag_8018B23C_801860E8 *)q)->addr = - ((PTag_8018B23C_801860E8 *)(D_800A651C[bp->f].a + 0x40))->addr; - ((PTag_8018B23C_801860E8 *)(D_800A651C[bp->f].a + 0x40))->addr = (u32)q; - func_80016638(&D_800A6518[bp->f * 20], 0x10, 1); - } -} - diff --git a/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c b/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c deleted file mode 100644 index 3f6e4672d..000000000 --- a/src/ov_SC03_119/ov_SC03_119_jr_801863CC.c +++ /dev/null @@ -1,5044 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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 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_8018B458[])(void *); -extern u8 D_80126BA4; -extern s32 D_80127098; -extern s32 D_80127094; -extern s32 D_80127090; -extern void func_80146534(void); -extern void func_8001D074(s32 a0, s32 a1); -extern void func_80146554(void); -extern void func_80146578(void); -extern void func_8001CFDC(s32, s32); -extern void func_8014659C(void); -extern void func_8001D074(s32, s32); -extern void func_801465C0(void); -extern void func_801465E4(void); -extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); -extern s32 D_8011F9D0; -extern s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13); -extern void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 D_8011F750; -extern s32 D_8011F754; -extern u8 * func_801468C8(s32 arg0, u8 arg1); -extern s32 D_8011D030; -extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8); -extern s32 func_80146B9C(void *a0); -extern void func_80146AB4(s16 a0, s32 a1, s16 a2, s16 a3, u16 a4, s32 a5, s32 a6); -extern u16 D_8011DA28; -extern s32 func_80146B9C(void * arg0); -extern void func_80146C98(s32 *a0, s16 a1); -extern void func_80146CA0(void *a0); -extern void func_80146CB4(void *a0); -extern void func_80146CC8(s32 a0); -extern void func_80146D30(s32 a0); -extern void func_80146D80(s32 *a0); -extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); -extern void func_80146D90(s32 a0); -extern void func_80146DB8(s32 *a0, s32 *a1); -extern void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0); -extern void func_80146E90(s32 *a0, s32 a1); -extern s32 func_80146E98(s32 a0); -extern void func_80015954(s32 a0, s32 a1); -extern void func_80149374(s32 a0, s32 a1); -extern void func_80146F58(s32 a0, s32 a1); -extern void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 func_8012A68C(void); -extern s16 func_8012A758(void); -extern void func_8004978C(s16 *a0, void *a1); -extern void ApplyMatrixSV(void *a0, void *a1, void *a2); -extern u8 D_80126DB0[]; -extern u16 D_80126DB6; -extern void func_8014704C(s32 *a0); -extern s32 func_80147054(void *a0); -extern void func_80147060(u8 * a0); -extern void func_8014706C(void *arg0); -extern void func_80147078(s32 *a0, s16 a1); -extern void func_80147084(s32 *a0); -extern void func_8014708C(void *arg0); -extern s32 func_801470A0(void *a0); -extern void func_801470AC(s32 *a0); -extern void func_801470B4(s32 arg0); -extern void func_801470C0(s32 a0); -extern void func_80147118(s32 a0); -extern s16 D_80126BB8; -extern s16 D_80126BBA; -extern s16 D_80126BBC; -extern void func_80147264(s32 a0); -extern void func_80147290(void); -extern void func_801472B4(void *a0); -extern s32 func_801472C8(struct S *a0); -extern void *D_8012707C; -extern void func_801472DC(void); -extern void func_801472F0(void *a0); -extern void func_80147364(u16, s32); -extern void func_80147300(u16 arg0); -extern void func_80147324(s32 arg0); -extern void func_801473EC(s32 *a0); -extern void func_80147460(s32 a0); -extern void func_80147514(); -extern void func_80147628(s32 a0); -extern void func_80147478(s32 a0); -extern void func_801474D8(s32 *a0); -extern void func_801474EC(s32 *a0); -extern s32 func_80012C6C(s32 a0, s32 a1, s32 a2); -extern s32 func_800129CC(s32 a0, s32 a1); -extern void func_80147514(s32 arg0); -extern void func_80013F3C(s32 a0); -extern void func_80012558(s32 a0, s32 a1); -extern void func_800126C4(s32 a0, s32 a1); -extern void func_800123F0(s32 a0, s32 a1); -extern void func_80147718(s32 a0); -extern void func_80147788(void *a0, s32 a1); -extern void func_801477A8(void *a0, s32 a1); -extern void func_801477C8(void *a0, s32 a1); -extern void func_801477E8(s32 *a0, s32 a1); -extern void func_80147814(s32 a0, s32 a1); -extern void func_80147928(int a0, int a1); -extern void func_8014799C(int a0, int a1); -extern void func_80147A10(int a0, int a1); -extern void func_80147860(int a0, int a1, int a2, int a3); -extern void func_80147948(s32 a0, s32 a1, s32 a2); -extern void func_801479BC(s32 a0, s32 a1, s32 a2); -extern void func_80147A30(s32 a0, s32 a1, s32 a2); -extern void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147948(int a0, int a1, int a2); -extern void func_801479BC(int a0, int a1, int a2); -extern void func_80147A30(int a0, int a1, int a2); -extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147A84(s32 arg0); -extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147AAC(s32 arg0); -extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_80147B5C(s32 a0, void *a1); -extern void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); -extern void func_80147B18(s32 a0); -extern void func_80147B5C(s32 arg0, void *arg1); -extern void func_80147C30(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147DC0(s32 a0, s32 a1); -extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_80147E44(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_80147F50(s32 arg0); -extern void func_80148038(s32 a0, s32 a1); -extern s32 ratan2(s32 a0, s32 a1); -extern s32 csqrt(s32 a0); -extern s32 func_80012A60(s32 a0, s32 a1); -extern void func_80148094(int param_1, short *param_2, int *param_3); -extern void func_801485B8(s32 a0, s32 a1, s32 a2); -extern void func_801484B0(s32 a0, s32 a1); -extern s32 func_80154358(void *a0); -extern void func_801484E8(s32 a0, s32 a1); -extern void func_80148534(s32 a0, s32 a1); -extern void func_8014856C(s32 a0, s32 a1); -extern void func_801485B8(s32 arg0, s32 arg1, s32 arg2); -extern void func_80148634(void *a0); -extern u8 D_800B9A64; -extern s32 func_80014DC0(); -extern s32 func_80014D68(); -extern s32 func_80014D94(); -extern s32 func_80014CF8(); -extern void func_800120DC(); -extern s32 func_800CF8B4(); -extern u16 func_801487F4(s32 *a0); -extern u16 func_80148800(s32 *a0); -extern u8 func_8014880C(s32 *a0); -extern u16 func_80148818(s32 *a0); -extern s32 func_80047D3C(s32 a0); -extern s32 func_80148824(void *arg0); -extern s32 func_801488A8(u8 *a0); -extern s32 func_8014891C(s32 a0); -extern s32 func_80148980(u8 *a0); -extern s32 func_801489E8(s32 a0); -extern s32 func_80148A48(s32 a0); -extern int func_80148AFC(void *a0); -extern void func_80148AAC(u8 *a0); -extern s32 func_80148C18(void); -extern s32 func_80148C20(s32 a0, s16 a1); -extern s32 func_80148C34(s32 a0, s32 a1); -extern s32 func_80148C4C(s32 a0, s32 a1); -extern s32 func_80148C64(s32 a0, s32 a1); -extern s32 func_80148C7C(void); -extern s32 func_80148C84(s32 a0, s32 a1); -extern s32 func_80148C9C(s32 a0, s32 a1); -extern s32 func_80148CB4(s32 a0, s32 a1); -extern s32 func_80148CCC(s32 a0, s32 a1); -extern s32 func_80148CE4(void); -extern s32 func_80148CEC(void); -extern s32 func_80148CF4(s32 a0, s32 a1); -extern s32 func_80148D0C(s32 a0, s32 a1); -extern s32 func_80148D24(void *a0, int a1); -extern s32 func_80148D3C(void); -extern s32 func_80148F60(void); -extern s32 func_80148F68(s32 a0); -extern s32 func_80148F74(s32 a0); -extern s32 func_80148F80(s32 a0); -extern s32 func_80148F8C(s32 a0); -extern s32 func_80148F98(void); -extern s32 func_80148FA0(s32 a0); -extern s32 func_80148FAC(s32 a0); -extern s32 func_80148FB8(s32 a0); -extern s32 func_80148FC4(s32 a0); -extern s32 func_80148FD0(void); -extern s32 func_80148FD8(void); -extern s32 func_80148FE0(s32 a0); -extern s32 func_80148FEC(s32 a0); -extern s32 func_80148FF8(s32 a0); -extern s32 func_80149004(void); -extern void func_8014900C(s32 *a0); -extern void func_80149020(s32 *a0); -extern void func_80149034(s32 *a0); -extern void func_80149048(s32 *a0); -extern void func_8014905C(u8 *a0); -extern void func_801490E0(s32 *a0, s16 a1); -extern void func_801490E8(s32 *a0, s16 a1); -extern void func_801490F0(s32 *a0, s16 a1); -extern void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); -extern void func_801490F8(s32 a0, s32 a1); -extern s32 func_801491C4(s32 a0); -extern s32 func_80149184(s32 a0); -extern s32 D_801151D4; -extern void func_80149204(s32 *a0); -extern void func_80149210(s32 a0, s32 a1); -extern s32 func_80149284(s32 *a0, s32 a1); -extern void func_80149350(s32 arg0); -extern void func_80149290(s32 a0); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_80149374(s32 arg0, s32 arg1); -extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8014942C(s32 arg0); -extern void func_8012EF70(s32 a0, s32 a1); -extern void func_80149544(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012EFB8(s32 a0); -extern void func_80149584(s32 arg0, s32 arg1, s32 arg2); -extern void func_8014964C(s32 param_1, s32 param_2); -extern s32 func_801496D4(void *a0); -extern void func_8015AD08(); -extern void func_80149704(void); -extern void func_8015ACC4(); -extern void func_80149724(void); -extern u8 D_80078EBF; -extern s32 func_80149744(struct S_80149744 *a0); -extern void func_8015F7A0(); -extern void func_80149788(void); -extern void func_801653B8(); -extern void func_80149864(void); -extern s16 currentLocationId; -extern s32 func_8016F1AC(void); -extern s32 func_80149884(void); -extern void func_80160B00(); -extern void func_801498C0(void); -extern s32 func_80149AA8(s32 *a0); -extern s32 func_80149B54(s32 *a0); -extern void func_80146750(void *a0); -extern s32 func_801498E0(s32 *a0); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_80147364(u16 a0, s32 a1); -extern s32 func_800CCF28(s32 a0); -extern u8 D_80126B5C; -extern s32 func_80149954(s32 s0); -extern s32 func_80149A64(s32 *a0); -extern void func_8015DAC4(s32 *a0); -extern void func_8015554C(s32 *a0); -extern void func_80149AD4(s32 *a0); -extern void func_80149B14(s32 *a0); -extern u8 func_8014BEF8(void); -extern s32 func_80149B54(s32 * arg0); -extern void func_8015DE24(s32 *a0); -extern void func_80157510(s32 *a0); -extern void func_80149BAC(s32 *a0); -extern s32 func_80029178(s32 a0); -extern s32 func_80149C08(s32 arg0); -extern void func_801577C8(); -extern void func_80149C94(void); -extern void func_80157D20(void); -extern void func_80149CB4(void); -extern s32 func_80149CD4(s32 a0); -extern u8 func_8014B5B8(s32 *a0); -extern s32 func_80149D10(s32 a0); -extern s32 func_80149E94(s32 a0); -extern s32 func_80149DD8(s32 a0); -extern s32 func_80149D9C(s32 a0); -extern s32 func_80149F2C(s32 a0, s32 a1); -extern s32 func_80149E94(s32 arg0); -extern void func_80149FA8(void); -extern s32 D_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 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_801D3080; -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_801D3084; -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_8018B5E0; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018CBFC[])(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(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_8018CED8[])(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_8018CF1C[])(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_8018CEE0; -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_8018CF4C[])(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_8018CF88[])(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 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_8018CFE0[])(); -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_8018CFF0[])(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_8018CFF8[])(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_8018D160[])(); -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_8018D16C[])(); -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_801D2B3C; -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_801D47D8; -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_801D3D70; -extern short D_801D484C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801D419C; -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_801D41C4; -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_801D4180; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801D4184; -extern u16 D_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; -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_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; -extern void func_8017B7A8(void); -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -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_801D41A4; -extern SV4 D_801D41AC; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801D41CC[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_801D41C8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018D348[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018D354[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern void (*D_8018D360[])(void); -extern void func_8017BFC8(void *a0); -extern void func_8017C07C(void); -extern void (*D_8018D420[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018D460[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018D480[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018D490[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018D49C[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018D620[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void (*D_8018D920[])(void); -extern void func_8017E898(void *a0); -extern void (*D_8018D95C[])(void); -extern void func_8017EF6C(void *a0); -extern void func_8017F16C(u8 *p); -extern void (*D_8018D964[])(void); -extern void func_8017F200(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern u8 D_8018D950; -extern void func_8017F23C(s32 a0); -extern void (*D_8018DA1C[])(void); -extern void func_8017F344(void *a0); -extern void func_8017F49C(void); -extern M2C_UNK D_8018DA14; -extern void func_8017F4A4(void); -extern s16 func_8017F4E8(void); -extern void func_8017FB84(s32 arg0); -extern void func_80180A64(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void (*D_8018DD98[])(void); -extern void func_8018165C(void *a0); -extern void func_801819C4(void); -extern s32 func_80181698(s32 a0); -extern s32 func_801816DC(void); -extern void (*D_8018DDA0[])(void); -extern void func_80181700(void *a0); -extern void func_801819EC(void); -extern s32 func_8018173C(s32 a0); -extern void (*D_8018DDA8[])(void); -extern void func_80181780(void *a0); -extern void func_80181A14(void); -extern s32 func_801817BC(s32 a0); -extern void (*D_8018DDB4[])(void); -extern void func_801818AC(void *a0); -extern void func_80181A3C(void); -extern s32 func_801818E8(s32 a0); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); -extern s32 func_80181928(u8 *a0); -extern s32 func_800D1EBC(void); -extern void func_801819A4(void); -extern M2C_UNK D_8018DDC0; -extern M2C_UNK D_8018DDCC; -extern M2C_UNK D_8018DDE4; -extern void func_8012A094(s32 a0); -extern void func_80181B08(void *a0); -extern void func_80181A64(void); -extern void (*D_8018DDF0[])(void); -extern void (*D_8018DE08[])(void); -extern void func_80181E1C(void *a0); -extern s32 func_8018248C(s32 arg0); -extern s32 func_801831D0(void); -extern void func_80182570(void); -extern void func_8013CAE8(void); -extern void func_80182590(void); -extern void (*D_8018E0E4[])(void); -extern void func_801825B0(void *a0); -extern void func_80182704(void *a0); -extern s32 func_8017BEBC(void); -extern void func_801828A4(void); -extern s32 func_8017BFA0(void); -extern void func_801828C4(void); -extern void func_800D0C48(int); -extern void func_801828E4(void); -extern void func_80182904(void *a0); -extern void func_80182910(void *a0); -extern void func_8002D4C8(s32 arg0, s32 arg1); -extern void func_8018295C(void *a0); -extern void func_80182988(s32 *a0); -extern void func_801829E4(); -extern void (*D_8018E134[])(int); -extern void func_80182998(int param_1); -extern void func_80182ADC(void); -extern void func_80182AE4(void); -extern void func_80182AEC(void *arg0); -extern void func_8018291C(void); -extern void func_80182FAC(void); -extern void (*D_8018E208[])(void); -extern void func_801838A4(void *a0); -extern void (*D_8018E858[])(void); -extern void func_801838E0(void *a0); -extern void func_80183AF8(void); -extern void (*D_8018E8A0[])(void); -extern void func_80183B00(void *a0); -extern s32 func_80183B3C(void *a0, s32 *p); -extern void func_80183C50(void); -extern void (*D_8018EC08[])(void); -extern void func_80183C58(void *a0); -extern void func_80184164(void); -extern void func_8018416C(s32 param_1); -extern void func_801841C0(s32 param_1); -extern void (*D_8018EC14[])(void); -extern void func_80184430(void *a0); -extern void (*D_8018EF38[])(void); -extern void func_8018446C(void *a0); -extern s32 func_8001AAA0(s32 arg); -extern s32 func_80184644(void); -extern s32 func_8012A828(void *a0, void *a1); -extern void func_8018474C(void *arg0); -extern void func_80184778(void *arg0); -extern void func_801847A4(void *arg0); -extern void func_801847D0(void *arg0); -extern void func_801847FC(void *arg0); -extern void func_80184828(void *arg0); -extern void func_80184854(void *arg0); -extern void func_80184880(void *arg0); -extern void func_801848AC(void *arg0); -extern void func_801848D8(void *a0); -extern void (*D_8018EF74[])(void); -extern void func_80184940(void *a0); -extern void (*D_8018EF90[])(); -extern void func_80184DD8(int param_1); -extern void func_8018523C(void *a0); -extern void (*D_801C5928[])(void); -extern void func_8018545C(void *a0); -extern void func_8018552C(void); -extern void func_801855F0(s32 arg0, s32 arg1, s32 arg2); -extern void func_8018570C(s32 arg0, Rec_8018A6A4_80185550 *arg1, s32 arg2, s32 arg3); -extern void func_80185550(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_80185620(s32 a0); -extern void func_80185698(s32 arg0); -extern s32 rand(void); /* TU L951, verbatim */ -extern void aF8018A860(); -extern s32 func_801857E0(void); -extern void func_8018581C(s32 a0, s32 a1); -extern void func_80185944(s32 arg0); -extern void func_80185868(void); -extern void func_80185C08(void); -extern void func_80185C54(s32 a0); -extern void func_80185C2C(s32 a0); -extern void func_80185CDC(void *arg0, void *arg1, s32 arg2, s32 arg3); -extern void func_80185D48(void *a0, void *a1, s16 a2); -extern void func_80185E7C(s32 a0, s16 a1, u16 a2); -extern void func_80185DB8(s32 a0); -extern s32 func_80185F98(void); -extern void func_80185E30(s32 a0, s32 a1); -extern void aF8018AFD0(); -extern void func_80185FD4(void); -extern void RotMatrixZ(s32 a0, void *a1); -extern void func_8004901C(void *a0, void *a1); -extern void func_80016638(void *a0, s32 a1, s32 a2); -extern void func_801860E8(s32 a0); -/* ==== end §8b carried decl layer ==== */ - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012CAE4(void *a0); -extern s32 func_8012A828(void*, void*); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B23C(s32 a0); -extern s32 func_8012C1B8(void); -extern void func_8001CA1C(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 rand(void); - - -void func_801863CC(void *a0v) -{ - - extern u8 D_801C6F08[]; - extern u8 D_801C8338[]; - extern u8 D_801C6FDC[]; - extern u8 D_801C6FA8[]; - extern u8 D_801D4558[]; - extern u8 D_801C6F3C[]; - extern u8 D_801C6F48[]; - extern u8 D_801C6F50[]; - extern u8 D_801C6F60[]; - extern u16 D_801C6F64; - extern u8 D_801C6F68[]; - extern u8 D_801C6F74[]; - extern u8 D_801C6F7C[]; - extern u8 D_801C6FA0[]; - extern u16 D_801C6FA4; - extern u8 D_801C6F8C[]; - extern u8 D_801C6F98[]; - extern u8 D_801D4599; - extern u8 D_801D459A; - extern u8 D_801D459C; - s32 e; - s32 r; - s32 o; - s32 cc; - s32 sv; - u8 *p; - u8 *q; - - e = (s32)a0v; - - switch (*(s16 *)(e + 0x70)) { - case 0: - if (func_8012C354(e, (s32)D_801C6F08) == 0) { - return; - } - *(u8 *)(e + 0xC0) = 1; - *(s32 *)(e + 0xB4) = -1; - *(s32 *)(e + 0xBC) = (s32)D_801C6FDC; - ((void (*)(s32, void *))func_8012A828)(e, D_801C8338); - *(s16 *)(e + 0x2) = 1; - *(s16 *)(e + 0x34) = 1; - func_8012B23C(e); - func_8012B1B4(e, (s32)D_801C6FA8); - *(s32 *)(e + 0xCC) = (s32)(D_801D4558 + *(s16 *)(e + 0xFC) * 8); - o = func_8012C658(0x1EA, 1, e); - if (o != 0) { - *(u16 *)(o + 0xFE) = *(u16 *)(e + 0x36); - } - return; - - case 1: - r = func_8012C1B8(); - *(s32 *)(e + 0x20) = r; - if (r == 0) { - func_8012CAE4((void *)e); - return; - } - func_8001CA1C(r, (s32)D_801C6F3C); - ((void (*)(s32, void *))func_8012A828)(e, D_801C6F48); - *(s16 *)(e + 0x2) = 2; - *(s16 *)(e + 0x5C) = 0x810; - *(s32 *)(e + 0x58) = (s32)D_801C6F50 | 0x40000000 | 0x20000000; - *(s32 *)(e + 0xD0) = (s32)D_801C6F60; - *(u16 *)(e + 0xE) = *(u16 *)(e + 0xE) + D_801C6F64; - cc = *(s32 *)(*(s32 *)(e + 0x64) + 0xCC); - *(u16 *)(*(s32 *)(e + 0x20) + 0x2C) = *(u16 *)(*(s32 *)(e + 0x20) + 0x2C) | 0x80; - *(s32 *)(*(s32 *)(e + 0x20) + 0x80) = cc; - *(s32 *)(e + 0xCC) = cc; - o = func_8012C658(0x1EA, 2, e); - if (o != 0) { - *(u16 *)(o + 0xFE) = *(u16 *)(e + 0x36); - } - return; - - case 2: - case 3: - case 4: - case 5: - case 6: - r = func_8012C1B8(); - *(s32 *)(e + 0x20) = r; - if (r == 0) { - func_8012CAE4((void *)e); - return; - } - func_8001CA1C(r, (s32)D_801C6F68); - ((void (*)(s32, void *))func_8012A828)(e, D_801C6F74); - *(s16 *)(e + 0x2) = 0xF; - *(s16 *)(e + 0x5C) = 0x810; - *(s32 *)(e + 0x58) = (s32)D_801C6F7C | 0x40000000 | 0x20000000; - *(s32 *)(e + 0xD0) = (s32)D_801C6FA0; - *(u16 *)(e + 0xE) = *(u16 *)(e + 0xE) + D_801C6FA4; - return; - - case 7: - if (func_8012C354(e, (s32)D_801C6F08) == 0) { - return; - } - p = &D_801D4599; - q = p - 1; - D_801D459A = 0xFF; - *q = 0xFF; - *p = 0; - D_801D459A = 0; - D_801D459C = 0; - func_800233CC(q, 0x20); - *(u8 *)(e + 0xC0) = 1; - *(s32 *)(e + 0xB4) = -1; - *(s32 *)(e + 0xBC) = (s32)D_801C6FDC; - ((void (*)(s32, void *))func_8012A828)(e, D_801C8338); - *(s16 *)(e + 0x2) = 8; - *(s16 *)(e + 0x34) = 0xB; - func_8012B23C(e); - sv = *(s16 *)(e + 0xFC); - *(s16 *)(e + 0xFC) = 0; - *(s32 *)(e + 0xCC) = (s32)(D_801D4558 + sv * 8); - o = func_8012C658(0x1EA, 8, e); - if (o != 0) { - *(u16 *)(o + 0xFE) = *(u16 *)(e + 0x36); - } - return; - - case 8: - r = func_8012C1B8(); - *(s32 *)(e + 0x20) = r; - if (r == 0) { - func_8012CAE4((void *)e); - return; - } - func_8001CA1C(r, (s32)D_801C6F3C); - ((void (*)(s32, void *))func_8012A828)(e, D_801C6F48); - *(s16 *)(e + 0x2) = 2; - *(s16 *)(e + 0x5C) = 0x810; - *(s32 *)(e + 0x58) = (s32)D_801C6F50 | 0x40000000 | 0x20000000; - *(s32 *)(e + 0xD0) = (s32)D_801C6F60; - *(u16 *)(e + 0xE) = *(u16 *)(e + 0xE) + D_801C6F64; - cc = *(s32 *)(*(s32 *)(e + 0x64) + 0xCC); - *(u16 *)(*(s32 *)(e + 0x20) + 0x2C) = *(u16 *)(*(s32 *)(e + 0x20) + 0x2C) | 0x80; - *(s32 *)(*(s32 *)(e + 0x20) + 0x80) = cc; - *(s32 *)(e + 0xCC) = cc; - o = func_8012C658(0x1EA, 9, e); - if (o != 0) { - *(u16 *)(o + 0xFE) = *(u16 *)(e + 0x36); - } - *(u16 *)(e + 0x106) = (rand() & 0x1F) + 0x20; - *(u16 *)(e + 0x100) = (rand() & 0x1F) + 0x20; - *(u16 *)(e + 0x102) = rand() & 0xFFF; - *(u16 *)(e + 0x104) = rand() & 0xFFF; - return; - - case 9: - case 10: - case 11: - case 12: - case 13: - r = func_8012C1B8(); - *(s32 *)(e + 0x20) = r; - if (r == 0) { - func_8012CAE4((void *)e); - return; - } - func_8001CA1C(r, (s32)D_801C6F68); - ((void (*)(s32, void *))func_8012A828)(e, D_801C6F74); - *(s16 *)(e + 0x2) = 0xF; - *(s16 *)(e + 0x5C) = 0x810; - *(s32 *)(e + 0x58) = (s32)D_801C6F7C | 0x40000000 | 0x20000000; - *(s32 *)(e + 0xD0) = (s32)D_801C6FA0; - *(u16 *)(e + 0xE) = *(u16 *)(e + 0xE) + D_801C6FA4; - *(u16 *)(e + 0x106) = (rand() & 0x1F) + 0x20; - *(u16 *)(e + 0x100) = (rand() & 0x1F) + 0x20; - *(u16 *)(e + 0x102) = rand() & 0xFFF; - *(u16 *)(e + 0x104) = rand() & 0xFFF; - return; - - case 14: - r = func_8012C1B8(); - *(s32 *)(e + 0x20) = r; - if (r == 0) { - func_8012CAE4((void *)e); - return; - } - func_8001CA1C(r, (s32)D_801C6F8C); - ((void (*)(s32, void *))func_8012A828)(e, D_801C6F98); - *(s16 *)(e + 0x2) = 0xC; - *(u16 *)(*(s32 *)(e + 0x20) + 0x10) = - *(u16 *)(*(s32 *)(*(s32 *)(e + 0x64) + 0x20) + 0x10); - *(u16 *)(*(s32 *)(e + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(*(s32 *)(e + 0x64) + 0x20) + 0x12); - *(s32 *)(e + 0x14) = func_8004787C(*(s16 *)(*(s32 *)(e + 0x20) + 0x10)) << 9; - { - s32 t1 = func_8004787C(*(s16 *)(*(s32 *)(e + 0x20) + 0x12)); - *(s32 *)(e + 0x10) = -((t1 * func_80047948(*(s16 *)(*(s32 *)(e + 0x20) + 0x10))) >> 3); - } - { - s32 t2 = func_80047948(*(s16 *)(*(s32 *)(e + 0x20) + 0x12)); - *(s32 *)(e + 0x18) = -((t2 * func_80047948(*(s16 *)(*(s32 *)(e + 0x20) + 0x10))) >> 3); - } - *(s32 *)(e + 0x10) = (*(s32 *)(e + 0x10) * 2) / 3; - *(s32 *)(e + 0x1C) = 0x12C; - *(s32 *)(e + 0x14) = (*(s32 *)(e + 0x14) * 2) / 3; - *(s32 *)(e + 0x18) = (*(s32 *)(e + 0x18) * 2) / 3; - return; - - case 15: - if (func_8012C354(e, (s32)D_801C6F08) == 0) { - return; - } - *(u8 *)(e + 0xC0) = 1; - *(s32 *)(e + 0xB4) = -1; - *(s32 *)(e + 0xBC) = (s32)D_801C6FDC; - ((void (*)(s32, void *))func_8012A828)(e, D_801C8338); - *(s16 *)(e + 0x2) = 0xD; - *(s16 *)(e + 0x34) = 0xD; - func_8012B23C(e); - *(s32 *)(e + 0xCC) = (s32)(D_801D4558 + *(s16 *)(e + 0xFC) * 8); - o = func_8012C658(0x1EA, 0x11, e); - if (o != 0) { - *(u16 *)(o + 0xFE) = *(u16 *)(e + 0x36); - *(s32 *)(e + 0x6C) = o; - } - *(s16 *)(e + 0xFC) = 0xA; - return; - - case 16: - case 24: - *(s16 *)(e + 0x2) = 0xE; - *(s32 *)(e + 0x1C) = 6; - return; - - case 17: - r = func_8012C1B8(); - *(s32 *)(e + 0x20) = r; - if (r == 0) { - func_8012CAE4((void *)e); - return; - } - func_8001CA1C(r, (s32)D_801C6F3C); - ((void (*)(s32, void *))func_8012A828)(e, D_801C6F48); - *(s16 *)(e + 0x2) = 0x11; - *(s16 *)(e + 0x5C) = 0x810; - *(s32 *)(e + 0x58) = (s32)D_801C6F50 | 0x40000000 | 0x20000000; - *(s32 *)(e + 0xD0) = (s32)D_801C6F60; - *(u16 *)(e + 0xE) = *(u16 *)(e + 0xE) + D_801C6F64; - cc = *(s32 *)(*(s32 *)(e + 0x64) + 0xCC); - *(u16 *)(*(s32 *)(e + 0x20) + 0x2C) = *(u16 *)(*(s32 *)(e + 0x20) + 0x2C) | 0x80; - *(s32 *)(*(s32 *)(e + 0x20) + 0x80) = cc; - *(s32 *)(e + 0xCC) = cc; - o = func_8012C658(0x1EA, 0x12, e); - if (o != 0) { - *(u16 *)(o + 0xFE) = *(u16 *)(e + 0x36); - *(s32 *)(e + 0x6C) = o; - } - *(u16 *)(e + 0x106) = (rand() & 0x1F) + 0x20; - *(u16 *)(e + 0x100) = (rand() & 0x1F) + 0x20; - *(u16 *)(e + 0x102) = rand() & 0xFFF; - *(u16 *)(e + 0x104) = rand() & 0xFFF; - return; - - case 18: - case 19: - case 20: - case 21: - case 22: - r = func_8012C1B8(); - *(s32 *)(e + 0x20) = r; - if (r == 0) { - func_8012CAE4((void *)e); - return; - } - func_8001CA1C(r, (s32)D_801C6F68); - ((void (*)(s32, void *))func_8012A828)(e, D_801C6F74); - *(s16 *)(e + 0x2) = 0x10; - *(s16 *)(e + 0x5C) = 0x810; - *(s32 *)(e + 0x58) = (s32)D_801C6F7C | 0x40000000 | 0x20000000; - *(s32 *)(e + 0xD0) = (s32)D_801C6FA0; - *(u16 *)(e + 0xE) = *(u16 *)(e + 0xE) + D_801C6FA4; - *(u16 *)(e + 0x106) = (rand() & 0x1F) + 0x20; - *(u16 *)(e + 0x100) = (rand() & 0x1F) + 0x20; - *(u16 *)(e + 0x102) = rand() & 0xFFF; - *(u16 *)(e + 0x104) = rand() & 0xFFF; - return; - - case 25: - *(s16 *)(e + 0x2) = 0x13; - return; - } -} - - -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012C218(void *a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -#define SRM_80186B78(r0) __asm__ __volatile__( \ - "lw $12, 0(%0)\n" \ - "lw $13, 4(%0)\n" \ - "ctc2 $12, $0\n" \ - "ctc2 $13, $1\n" \ - "lw $12, 8(%0)\n" \ - "lw $13, 12(%0)\n" \ - "lw $14, 16(%0)\n" \ - "ctc2 $12, $2\n" \ - "ctc2 $13, $3\n" \ - "ctc2 $14, $4\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") -#define STM_80186B78(r0) __asm__ __volatile__( \ - "lw $12, 20(%0)\n" \ - "lw $13, 24(%0)\n" \ - "ctc2 $12, $5\n" \ - "lw $14, 28(%0)\n" \ - "ctc2 $13, $6\n" \ - "ctc2 $14, $7\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") - -void func_80186B78(s32 a0) -{ - u16 out[4]; /* sp+0x10 */ - s16 sv[4]; /* sp+0x18 */ - s16 pos[4]; /* sp+0x20 */ - s32 flag; /* sp+0x28 */ - s16 *p; - - if (*(s16 *)(*(s32 *)(a0 + 0x64) + 0x36) != *(s16 *)(a0 + 0xFE)) { - ((void (*)(void))func_8012C218)(); - return; - } - - if (*(s16 *)(a0 + 0x70) == 1 || *(s16 *)(a0 + 0x70) == 8) { - s32 ang; - s32 t; - ang = (*(u16 *)(a0 + 0xFC) + 0x40) & 0xFFF; - p = *(s16 **)(a0 + 0xCC); - *(s16 *)(a0 + 0xFC) = ang; - t = (func_8004787C(ang) >> 6) + 0xBF; - p[2] = t; - p[1] = t; - p[0] = t; - } - - if (*(s32 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 4) < 0) { - { register s32 *q __asm__("$3"); q = *(s32 **)(a0 + 0x20); - q[1] = q[1] | 0x80000000; } - } else { - __asm__ __volatile__(""); - *(s32 *)(*(s32 *)(a0 + 0x20) + 4) = - *(s32 *)(*(s32 *)(a0 + 0x20) + 4) & 0x7FFFFFFF; - } - - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) = - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x18); - - if (*(s16 *)(*(s32 *)(a0 + 0x64) + 0x70) < 8) { - *(s16 *)(a0 + 0x108) = (*(u16 *)(a0 + 0x108) + 0x40) & 0xFFF; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) & 0xFFF; - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x12) & 0xFFF; - - flag = *(s16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x12) - - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12); - if (flag > 0x800) { - flag = flag - 0x1000; - } - if (flag < -0x800) { - flag = flag + 0x1000; - } - if (flag > 0x200) { - s32 t = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) - 0x200; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = t + flag; - } else if (flag < -0x200) { - s32 t = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x200; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = t + flag; - } else { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + (flag / 16); - } - - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + - (func_8004787C(*(s16 *)(a0 + 0x108)) >> 6); - - func_80049CAC(*(s32 *)(a0 + 0x20) + 0x10, *(s32 *)(a0 + 0x20) + 0x34); - SRM_80186B78((s32 *)(*(s32 *)(a0 + 0x20) + 0x34)); - STM_80186B78((s32 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34)); - - p = *(s16 **)(a0 + 0xD0); - sv[0] = 0; - sv[1] = 0; - sv[2] = (p[2] * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18)) >> 12; - RotTransSV(sv, out, &flag); - - *(s16 *)(a0 + 6) = out[0]; - *(s16 *)(a0 + 0xA) = out[1]; - *(s16 *)(a0 + 0xE) = out[2]; - out[1] = out[1] - 0x40; - - pos[0] = *(u16 *)(a0 + 6); - pos[1] = *(u16 *)(a0 + 0xA) + 0x10; - pos[2] = *(u16 *)(a0 + 0xE); - flag = func_8012CEB0((s32)out, (s32)pos, 1); - if (flag & 0x1000) { - return; - } - if (flag != 0) { - s32 d; - s32 t = pos[1] - 0x10; - d = *(s16 *)(a0 + 0xA) - t; - if (d < 5) { - return; - } - if (d > 0x40) { - d = 0x40; - } - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) + (d << 4); - - func_80049CAC(*(s32 *)(a0 + 0x20) + 0x10, *(s32 *)(a0 + 0x20) + 0x34); - SRM_80186B78((s32 *)(*(s32 *)(a0 + 0x20) + 0x34)); - STM_80186B78((s32 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34)); - - p = *(s16 **)(a0 + 0xD0); - sv[0] = 0; - sv[1] = 0; - sv[2] = (p[2] * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18)) >> 12; - RotTransSV(sv, out, &flag); - - *(s16 *)(a0 + 6) = out[0]; - *(s16 *)(a0 + 0xA) = out[1]; - *(s16 *)(a0 + 0xE) = out[2]; - } else { - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) - 0x80; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) & 0xFFF; - if ((u32)(*(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) - 0x801) < 0x3FF) { - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0xC00; - } - } - } else { - s32 ang; - s32 ang2; - - ang = (*(u16 *)(a0 + 0x102) + *(u16 *)(a0 + 0x106)) & 0xFFF; - *(s16 *)(a0 + 0x102) = ang; - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = func_80047948(ang) >> 6; - - ang2 = (*(u16 *)(a0 + 0x104) + *(u16 *)(a0 + 0x100)) & 0xFFF; - *(s16 *)(a0 + 0x104) = ang2; - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x14) = func_80047948(ang2) >> 6; - - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) + 0xC00; - - func_80049CAC(*(s32 *)(a0 + 0x20) + 0x10, *(s32 *)(a0 + 0x20) + 0x34); - SRM_80186B78((s32 *)(*(s32 *)(a0 + 0x20) + 0x34)); - STM_80186B78((s32 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34)); - - p = *(s16 **)(a0 + 0xD0); - sv[0] = 0; - sv[1] = 0; - sv[2] = (p[2] * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18)) >> 12; - RotTransSV(sv, out, &flag); - - *(s16 *)(a0 + 6) = out[0]; - *(s16 *)(a0 + 0xA) = out[1]; - *(s16 *)(a0 + 0xE) = out[2]; - } - { s32 pad[2]; } /* LEVER 1: frame pad. INNER-BLOCK + LAST is load-bearing -- - a function-scope decl takes 0x28 and evicts flag to 0x30 */ -} - - - -extern s32 func_8012B8E4(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern s32 func_8012BCCC(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern void func_8012CC40(s32 arg0, s32 arg1); /* fleet-canonical: void; $v0 used -> cast at call site */ - -void func_80187180(s32 a0) -{ - extern u8 D_801C6FA8[]; - extern s32 D_801C6FC4; - - s16 pos1[4]; - s16 pos2[4]; - s32 s1; - - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) += func_8012B8E4(a0, 0x10); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) &= 0xFFF; - func_8012B1B4(a0, (s32)D_801C6FA8); - - { - s16 *p1 = pos1; - s16 *p2 = pos2; - s32 x, y, z; - - x = *(u16 *)(a0 + 0x6); - p2[0] = x; - p1[0] = x; - y = *(u16 *)(a0 + 0xA); - p2[1] = y; - p1[1] = y; - z = *(u16 *)(a0 + 0xE); - p2[1] = y + 0x40; - p2[2] = z; - p1[2] = z; - s1 = func_8012CEB0((s32)p1, (s32)p2, 1); - } - - if (s1 & 0x6000) { - if (!(s1 & 0x1000)) { - s1 = func_8012BCCC(a0); - if (s1 < 0x4001) { - if (func_8012BDBC(a0, 0x200) == 1) { - *(s16 *)(a0 + 0x2) = 4; - *(s16 *)(a0 + 0xFC) = 0; - *(s16 *)(a0 + 0x100) = *(u16 *)(a0 + 0xA); - } - } - } - } - if (s1 > 0x40000) { - *(s16 *)(a0 + 0x2) = 1; - } - - if ((((s32 (*)(s32, s32))func_8012CC40)(a0, (s32)&D_801C6FC4) & 0x1000) != 0) { - *(s16 *)(a0 + 0x2) = 0x12; - } -} - - -#include "common.h" - -void func_801872B4(s32 arg0) { - extern void func_8012C218(void *a0); - extern s32 func_8012CC64(s32 a0, void *a1); - extern s32 func_80133784(s32 a0, void *a1, s32 a2); - extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2); - extern void func_8012B23C(s32 a0); - extern void func_8012B1B4(s32 a0, s32 a1); - extern s32 rand(void); - extern s32 D_801C6FC4; - extern s32 D_801C6FA8; - - s32 e; - s32 n; - s32 dir; - - e = arg0; - if (--*(s16 *)(e + 0xFC) == 0) { - n = 0; - do { - arg0 = *(s32 *)(arg0 + 0x6C); - n++; - } while (arg0 != 0); - if (n < 7) { - if (e != 0) { - arg0 = e; - for (;;) { - e = *(s32 *)(arg0 + 0x6C); - func_8012C218((void *)arg0); - arg0 = e; - __asm__ __volatile__("" : "=r"(arg0) : "0"(arg0)); - if (arg0 == 0) { - return; - } - } - } - return; - } - } - - { - s32 f; - - *(s16 *)(*(s32 *)(e + 0x20) + 0x14) += 0x40; - *(s16 *)(*(s32 *)(e + 0x20) + 0x14) &= 0xFFF; - f = func_8012CC64(e, &D_801C6FC4); - - if (f & 0x1000) { - *(s16 *)(e + 0x2) = 0x12; - return; - } - - n = 0; - if (f & 0xC000) { - s16 p1[3]; - s16 p2[3]; - - { - s16 *q = p2; - s32 x; - s32 y; - s32 z; - - *(s16 *)(e + 0x16) = -(rand() & 3) - 8; - x = *(u16 *)(e + 6); - p1[0] = x - 0x20; - y = *(u16 *)(e + 0xA) + 0x10; - p1[1] = y; - z = *(u16 *)(e + 0xE) + 0x20; - p1[2] = z; - q[0] = x + 0x20; - q[1] = y; - q[2] = z; - - if (func_80133784(1, p1, (s32)q) != 0) { - n = 1; - *(s16 *)(e + 0x12) = -(rand() & 3) - 4; - } else { - q[0] = p1[0] + 0x40; - q[1] = p1[1]; - q[2] = p1[2]; - if (func_80133784(1, q, (s32)p1) != 0) { - n = 2; - *(s16 *)(e + 0x12) = (rand() & 3) + 4; - __asm__ __volatile__(""); /* cookbook 5a cross-jump barrier vs the n==1 arm */ - } - } - } - { - s16 *q = p2; - s32 x; - s32 y; - s32 z; - - x = *(u16 *)(e + 6); - p1[0] = x; - y = *(u16 *)(e + 0xA) + 0x10; - p1[1] = y; - z = *(u16 *)(e + 0xE); - p1[2] = z; - q[0] = x; - q[1] = y; - q[2] = z + 0x40; - - if (func_80133784(1, p1, (s32)q) != 0) { - n += 4; - *(s16 *)(e + 0x1A) = -(rand() & 3) - 4; - } else { - q[0] = p1[0]; - q[1] = p1[1]; - q[2] = p1[2] + 0x40; - if (func_80133784(1, q, (s32)p1) != 0) { - n += 8; - *(s16 *)(e + 0x1A) = (rand() & 3) + 4; - __asm__ __volatile__(""); /* cookbook 5a cross-jump barrier vs the n+=4 arm */ - } - } - } - - switch (n - 1) { - case 0: - dir = 0x800; - break; - case 1: - dir = 0; - break; - case 3: - dir = 0x400; - break; - case 4: - dir = 0x600; - break; - case 5: - dir = 0x200; - break; - case 7: - dir = 0xC00; - break; - case 8: - dir = 0xA00; - break; - case 9: - dir = 0xE00; - break; - } - *(s16 *)(*(s32 *)(e + 0x20) + 0x12) = dir; - } else if (f & 0x2000) { - func_8012E688(e, 0x833, 0); - if ((rand() & 0xF) == 0) { - s32 t1; - s32 t2; - s32 t3; - s32 p; - - *(s16 *)(*(s32 *)(e + 0x20) + 0x14) = 0; - t1 = *(u16 *)(e + 6); - t2 = *(u16 *)(e + 0xA); - t3 = *(u16 *)(e + 0xE); - *(s16 *)(e + 0x2) = 1; - *(s16 *)(e + 0x34) = 1; - *(s16 *)(e + 0x70) = 0; - *(s16 *)(e + 0x88) = t1; - *(s16 *)(e + 0x8A) = t2; - *(s16 *)(e + 0x8C) = t3; - func_8012B23C(e); - func_8012B1B4(e, (s32)&D_801C6FA8); - p = *(s32 *)(e + 0x6C); - if (p != 0) { - do { - *(s16 *)(p + 0x2) = 2; - *(s16 *)(p + 0x70) -= 0x10; - *(s16 *)(*(s32 *)(p + 0x20) + 0x14) = 0; - p = *(s32 *)(p + 0x6C); - } while (p != 0); - } - *(s16 *)(e + 0xFC) = 0; - } else { - *(s16 *)(e + 0x16) = -(rand() & 3) - 8; - } - } - } - - if (*(s16 *)(e + 0xA) >= 0x65) { - func_8012C218((void *)e); - } -} - - -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012C218(void *a0); -#define SRM_80186B78(r0) __asm__ __volatile__( \ - "lw $12, 0(%0)\n" \ - "lw $13, 4(%0)\n" \ - "ctc2 $12, $0\n" \ - "ctc2 $13, $1\n" \ - "lw $12, 8(%0)\n" \ - "lw $13, 12(%0)\n" \ - "lw $14, 16(%0)\n" \ - "ctc2 $12, $2\n" \ - "ctc2 $13, $3\n" \ - "ctc2 $14, $4\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") -#define STM_80186B78(r0) __asm__ __volatile__( \ - "lw $12, 20(%0)\n" \ - "lw $13, 24(%0)\n" \ - "ctc2 $12, $5\n" \ - "lw $14, 28(%0)\n" \ - "ctc2 $13, $6\n" \ - "ctc2 $14, $7\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") -#define SRM_80186B78(r0) __asm__ __volatile__( \ - "lw $12, 0(%0)\n" \ - "lw $13, 4(%0)\n" \ - "ctc2 $12, $0\n" \ - "ctc2 $13, $1\n" \ - "lw $12, 8(%0)\n" \ - "lw $13, 12(%0)\n" \ - "lw $14, 16(%0)\n" \ - "ctc2 $12, $2\n" \ - "ctc2 $13, $3\n" \ - "ctc2 $14, $4\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") -#define STM_80186B78(r0) __asm__ __volatile__( \ - "lw $12, 20(%0)\n" \ - "lw $13, 24(%0)\n" \ - "ctc2 $12, $5\n" \ - "lw $14, 28(%0)\n" \ - "ctc2 $13, $6\n" \ - "ctc2 $14, $7\n" \ - : : "r"(r0) : "$12", "$13", "$14", "memory") - -void func_80187674(s32 a0) -{ - u16 out[4]; /* sp+0x10 */ - s16 sv[4]; /* sp+0x18 */ - s16 pos[4]; /* sp+0x20 */ - s32 flag; /* sp+0x28 */ - s16 *p; - - if (*(s16 *)(*(s32 *)(a0 + 0x64) + 0x36) != *(s16 *)(a0 + 0xFE)) { - ((void (*)(void))func_8012C218)(); - return; - } - - if (*(s16 *)(a0 + 0x70) == 0x11) { - s32 ang; - s32 t; - ang = (*(u16 *)(a0 + 0xFC) + 0x40) & 0xFFF; - p = *(s16 **)(a0 + 0xCC); - *(s16 *)(a0 + 0xFC) = ang; - t = (func_8004787C(ang) >> 6) + 0xBF; - p[2] = t; - p[1] = t; - p[0] = t; - } - - if (*(s32 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 4) < 0) { - { register s32 *q __asm__("$3"); q = *(s32 **)(a0 + 0x20); - q[1] = q[1] | 0x80000000; } - } else { - __asm__ __volatile__(""); - *(s32 *)(*(s32 *)(a0 + 0x20) + 4) = - *(s32 *)(*(s32 *)(a0 + 0x20) + 4) & 0x7FFFFFFF; - } - - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) = - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x18); - - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x14) = - *(u16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x14); - - { - s32 ang; - s32 ang2; - - ang = (*(u16 *)(a0 + 0x102) + *(u16 *)(a0 + 0x106)) & 0xFFF; - *(s16 *)(a0 + 0x102) = ang; - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = func_80047948(ang) >> 3; - - ang2 = (*(u16 *)(a0 + 0x104) + *(u16 *)(a0 + 0x100)) & 0xFFF; - *(s16 *)(a0 + 0x104) = ang2; - *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = func_80047948(ang2) >> 3; - - func_80049CAC(*(s32 *)(a0 + 0x20) + 0x10, *(s32 *)(a0 + 0x20) + 0x34); - SRM_80186B78((s32 *)(*(s32 *)(a0 + 0x20) + 0x34)); - STM_80186B78((s32 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x34)); - - p = *(s16 **)(a0 + 0xD0); - sv[0] = 0; - sv[1] = 0; - sv[2] = (p[2] * *(s16 *)(*(s32 *)(a0 + 0x20) + 0x18)) >> 12; - RotTransSV(sv, out, &flag); - - *(s16 *)(a0 + 6) = out[0]; - *(s16 *)(a0 + 0xA) = out[1]; - *(s16 *)(a0 + 0xE) = out[2]; - } - { s32 pad[2]; } /* LEVER 1: frame pad -- matches func_80186B78's byte-verified 8-byte - trailing dead local (docs/matching-cookbook.md §136 L6). */ -} - - -DEFINE_func_801878B8() /* dedup: shared engine-core @0x801878B8 (src/shared) */ - - -extern u8 *func_8012913C(s32 a0); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern void func_801292C8(u8 *a0); - -typedef struct { - u16 x, y, z; - u8 flag; -} V8_80187968_80187968; - -void func_80187968(s32 a0) { - u32 v0; - u8 *s1; - - v0 = *(u16 *)(a0 + 0x10A) + 1; - *(u16 *)(a0 + 0x10A) = v0; - - if ((v0 & 7) == 0) { - s1 = func_8012913C(0x7B); - if (s1 != 0) { - V8_80187968_80187968 p1; - V8_80187968_80187968 q; - - v0 = *(u16 *)(a0 + 0x10A); - *(s32 *)(s1 + 0x2C) = (v0 & 0x18) >> 3; - - p1.x = *(u16 *)(a0 + 0x6); - p1.y = *(u16 *)(a0 + 0xA); - p1.z = *(u16 *)(a0 + 0xE); - q.x = p1.x; - q.y = p1.y + 0x80; - q.z = p1.z; - - func_80133784(1, &p1, (s32)&q); - - if (q.flag) { - *(u16 *)(s1 + 0x6) = *(u16 *)(a0 + 0x6); - *(u16 *)(s1 + 0xA) = q.y; - *(u16 *)(s1 + 0xE) = *(u16 *)(a0 + 0xE); - } else { - func_801292C8(s1); - } - } - } -} - - - -extern void (*D_801C705C[])(void); - -void func_80187A4C(void *a0) { - D_801C705C[*(u16 *)((s32)a0 + 0x2)](); -} - - -extern u8 *func_8012913C(s32 a0); -extern u8 D_801D4598[]; -extern void func_8001CD50(s32 a0, s32 a1); - -void func_80187A88(a0) -s32 a0; -{ - extern u8 D_801D4598[]; - u8 pad[16]; - u8 *result; - - result = func_8012913C(0x7C); - if (result != 0) { - *(u16 *)(result + 0x6) = *(u16 *)(a0 + 0x6); - *(u16 *)(result + 0xA) = *(u16 *)(a0 + 0xA); - *(u16 *)(result + 0xE) = *(u16 *)(a0 + 0xE); - func_8001CD50(*(s32 *)(result + 0x20), (s32)D_801D4598); - } -} - - - - -extern s32 D_801151D4; - -void func_80187AEC(s32 a0) -{ - extern void (*D_801C7064[])(void *); - extern s32 func_8012B77C(s32 a0, s32 a1, s32 a2); - struct { u16 k; u16 v; } trio[3]; - s32 xy; - s32 hi; - - trio[0].v = *(s32 *)(D_801151D4 + 0x5C); - trio[1].v = *(s32 *)(D_801151D4 + 0x60); - trio[2].v = *(s32 *)(D_801151D4 + 0x64); - - func_8012B77C((s32)&xy, a0 + 4, (s32)trio); - - hi = xy >> 16; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = xy; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = hi; - - D_801C7064[*(u16 *)(a0 + 2)]((void *)a0); -} - - - -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012B23C(s32 a0); -extern void func_8012B1B4(s32 a0, s32 a1); - -void func_80187B80(s32 a0) -{ - extern u8 D_801C6FA8[]; - u16 out[4]; - u16 pos[4]; - u16 t0, t1, t2; - - *(u16 *)(a0 + 0x5C) = 0xA810; - *(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x34); - - t0 = *(u16 *)(a0 + 0x6); - pos[0] = t0; - out[0] = t0; - t1 = *(u16 *)(a0 + 0xA); - pos[1] = t1; - out[1] = t1 - 0x18; - t2 = *(u16 *)(a0 + 0xE); - pos[2] = t2; - out[2] = t2; - func_8012CEB0((s32)out, (s32)pos, 1); - - *(u16 *)(a0 + 0xA) = pos[1] - 0x10; - - if (*(s16 *)(a0 + 0x70) == 0xF) { - s32 c; - - c = *(s32 *)(a0 + 0x20); - *(u16 *)(c + 0x14) = 0; - - *(u16 *)(a0 + 0x2) = 1; - *(u16 *)(a0 + 0x34) = 1; - *(u16 *)(a0 + 0x70) = 0; - *(u16 *)(a0 + 0x88) = *(u16 *)(a0 + 0x6); - *(u16 *)(a0 + 0x8A) = *(u16 *)(a0 + 0xA); - *(u16 *)(a0 + 0x8C) = *(u16 *)(a0 + 0xE); - func_8012B23C(a0); - func_8012B1B4(a0, (s32)D_801C6FA8); - - { - s32 n = *(s32 *)(a0 + 0x6C); - while (n != 0) { - *(u16 *)(n + 0x2) = 2; - *(u16 *)(n + 0x70) = *(u16 *)(n + 0x70) - 0x10; - *(u16 *)(*(s32 *)(n + 0x20) + 0x14) = 0; - n = *(s32 *)(n + 0x6C); - } - } - *(u16 *)(a0 + 0xFC) = 0; - } else { - func_8012B23C(a0); - func_8012B1B4(a0, (s32)D_801C6FA8); - } -} - - - -extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2); - void func_80187CA8(void *a0) { - if (*(s16 *)((s32)a0 + 0x76) > 0) { - func_8012E688((s32)a0, 0x8C6, 0); - } - } - - -extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2); -extern void func_8002AC00(s32 arg0); - -void func_80187CD8(void * _arg0) { - ((void (*)(void *, s32, s32))func_8012E688)(_arg0, 0x8C7, 0); - ((void (*)(s32))func_8002AC00)(0x10); -} - - -DEFINE_func_80187D04() /* dedup: shared engine-core @0x80187D04 (src/shared) */ - - -void func_80187D0C(s32 a0) -{ - extern void func_8012BE98(s32 a0, u16 *a1); - extern s32 func_8012B744(void *a0, void *a1); - extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); - extern void func_8012B1B4(s32 a0, s32 a1); - extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); - extern void func_8012CC40(s32 arg0, s32 arg1); - extern s32 func_8012C0EC(s32 a0); - extern u8 D_801C6FA8[]; - extern s32 D_801C6FC4; - - s32 anim = a0 + 0x88; - - if (((s32 (*)(s32, u16 *))func_8012BE98)(a0, (u16 *)anim) >= 0x4000) { - s32 d = func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), - func_8012B744((void *)(a0 + 4), (void *)anim), 0x10); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + d; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) & 0xFFF; - func_8012B1B4(a0, (s32)D_801C6FA8); - } else { - if (func_8012BD3C(a0, 0x200, 0x40000) == 1) { - *(s16 *)(a0 + 0x2) = 3; - } - } - - if ((((s32 (*)(s32, s32))func_8012CC40)(a0, (s32)&D_801C6FC4) & 0x1000) != 0) { - *(s16 *)(a0 + 0x2) = 0x12; - } else { - func_8012C0EC(a0); - } -} - - -extern s32 func_8004787C(s32 a0); -extern void func_8012E688(s32 arg0, s32 arg1, s32 arg2); - -void func_80187DF8(a0) -s32 a0; -{ - *(u16 *)(a0 + 0xFC) += 0x20; - *(u16 *)(a0 + 0xA) = *(u16 *)(a0 + 0x100); - *(s32 *)(a0 + 0x8) -= func_8004787C(*(s16 *)(a0 + 0xFC)) << 10; - - if (*(s16 *)(a0 + 0xFC) >= 0x400) { - *(s16 *)(a0 + 0x2) = 5; - *(s16 *)(a0 + 0xFE) = 4; - func_8012E688(a0, 0x98F, 0); - } -} - - -DEFINE_func_80187E78() /* dedup: shared engine-core @0x80187E78 (src/shared) */ - - -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 func_8012BCCC(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern void func_8012E688(s32, s32, s32); - -void func_80187F2C(s32 a0) -{ - *(s32 *)(a0 + 0x8) -= 0x80000; - *(s32 *)(a0 + 0x4) += func_8004787C(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; - *(s32 *)(a0 + 0xC) += func_80047948(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)) << 7; - - if (--*(s16 *)(a0 + 0xFE) == 0) { - if (func_8012BCCC(a0) < 0x4001) { - if (func_8012BDBC(a0, 0x200) == 1) { - *(s16 *)(a0 + 0x2) = 5; - *(s16 *)(a0 + 0xFE) = 4; - ((void (*)(s32, s32, s32))func_8012E688)(a0, 0x98F, 0); - } else { - *(s16 *)(a0 + 0x2) = 7; - } - } else { - *(s16 *)(a0 + 0x2) = 7; - } - } -} - - -extern s32 func_8004787C(s32 a0); - -void func_8018800C(s32 *a0) -{ - *(u16 *)((s32)a0 + 0xFC) += 0x20; - *(s16 *)((s32)a0 + 0xA) = *(u16 *)((s32)a0 + 0x100); - *(s32 *)((s32)a0 + 0x8) -= func_8004787C(*(s16 *)((s32)a0 + 0xFC)) << 10; - - if (*(s16 *)((s32)a0 + 0xFC) >= 0x800) { - *(s16 *)((s32)a0 + 0x2) = 3; - } -} - - -DEFINE_func_80188074() /* dedup: shared engine-core @0x80188074 (src/shared) */ - - - - -void func_801880D4(s32 a0) -{ - extern u8 D_80126B5C; - extern s32 func_8012B77C(s32 a0, s32 a1, s32 a2); - s32 xy; - - func_8012B77C((s32)&xy, a0 + 4, (s32)&D_80126B5C); - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) = xy >> 16; - *(u16 *)(*(s32 *)(a0 + 0x20) + 0x10) = xy; - - { - s32 nv = *(u16 *)(a0 + 0xA) - 8; - *(u16 *)(a0 + 0xA) = nv; - if (*(s16 *)(a0 + 0x8A) - (s16)nv >= 0x81) { - *(u16 *)(a0 + 2) = 0xA; - *(u16 *)(a0 + 0xFC) = 0xC; - } - } - - func_80187968(a0); -} - - - - - -void func_80188164(s32 a0) -{ - s16 v = *(u16 *)(a0 + 0xFC) - 1; - *(u16 *)(a0 + 0xFC) = v; - if (v == 0) { - *(u16 *)(a0 + 2) = 0xB; - } - if (*(s16 *)(a0 + 0xFC) == 6) { - func_8012C658(0x1EA, 0xE, a0); - func_8002D4C8(0xC5D, 0); - } - func_80187968(a0); -} - - - - -extern void func_80187968(s32); - -void func_801881D8(a0) -void *a0; -{ - u16 w; - - w = *(u16 *)(a0 + 0xA) + 8; - *(u16 *)(a0 + 0xA) = w; - if (*(s16 *)(a0 + 0x8A) - (s16)w <= 0) { - *(s16 *)(a0 + 2) = 8; - *(s16 *)(a0 + 0xFC) = 0x1E; - } - func_80187968((s32)a0); -} - - -extern s32 D_801C6FCC; -extern s32 D_801C6FD4; -extern s32 func_8012CBF4(void); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_8012C218(void *a0); -extern void func_80187A88(s32 a0); - -void func_80188228(s32 param_1) { - s32 v0; - - v0 = func_8012CBF4(); - if (v0 != 0) { - ((void (*)(s32))func_8012C218)(param_1); - return; - } - - v0 = func_8012D5E4(param_1, (s32)&D_801C6FCC, (s32)&D_801C6FD4, 0xF); - if (v0 == 1) { - ((void (*)(s32))func_8012C218)(param_1); - return; - } - - v0 = *(s32 *)(param_1 + 0x1c); - v0 = v0 - 1; - *(s32 *)(param_1 + 0x1c) = v0; - if (v0 == 0) { - ((void (*)(s32))func_8012C218)(param_1); - } else { - func_80187A88(param_1); - } -} - - -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012BE54(s32 a0); - -void func_801882A8(a0) -void *a0; -{ - s32 e = (s32)a0; - s32 o; - - if (((s32 (*)(s32))func_8012BE54)(e) > 0x23FFFF) { - return; - } - if (--*(s32 *)(e + 0x1C) != 0) { - return; - } - o = func_8012C658(0x1EA, 0xF, e); - *(s32 *)(e + 0x1C) = (rand() & 0x1F) + 0x2D; - if (*(s16 *)(e + 0x70) == 0x18 && o != 0) { - *(u16 *)(*(s32 *)(o + 0x20) + 0x12) = 0x400; - } -} - - - -extern int func_8012C658(int arg0, int arg1, int arg2); -extern void func_80186B78(int a0); - -void func_80188348(int a0) -{ - short cnt; - int v1; - - *(short *)(a0 + 0x2) = 2; - cnt = *(unsigned short *)(a0 + 0x70) + 1; - *(unsigned short *)(a0 + 0x70) = cnt; - - if (cnt < 7) { - v1 = func_8012C658(0x1EA, cnt, a0); - if (v1 != 0) { - *(unsigned short *)(v1 + 0xFE) = *(unsigned short *)(a0 + 0x36); - *(unsigned short *)(v1 + 0x108) = (*(unsigned short *)(a0 + 0x70) - 1) << 9; - } - } - - cnt = *(short *)(a0 + 0x70); - if (cnt >= 8) { - if (cnt < 14) { - v1 = func_8012C658(0x1EA, cnt, a0); - if (v1 != 0) { - *(unsigned short *)(v1 + 0xFE) = *(unsigned short *)(a0 + 0x36); - } - } - } - - *(unsigned short *)(a0 + 0x70) = *(unsigned short *)(a0 + 0x70) - 1; - func_80186B78(a0); -} - - -DEFINE_func_80188418() /* dedup: shared engine-core @0x80188418 (src/shared) */ - - - - - - - - - - - - - - - - - - -extern void func_8012C218(void *a0); -void func_801884AC(void *a0) -{ -register s32 v0 __asm__("$2"); -register s32 v1 __asm__("$3"); - v0 = (*((s32 *) (((s32) a0) + 0x8)) = (*((s32 *) (((s32) a0) + 0x8))) + 0x40000); - v1 = 0x400000; - if (v1 < v0) - { - v1 = v1 / 65536; - ((s32 (*)(s32)) func_8012C218)((s32) a0); - } -} - - - - -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern s32 rand(void); - -void func_801884E8(void *a0) -{ - - extern u8 D_801202A0[]; - u8 *p; - s32 cnt; - s32 i; - s16 st; - s32 q; - s16 t; - - p = D_801202A0; - cnt = 0; - for (i = 0; i < 0x60; i++) { - if (*(u16 *)p == 0x1EA) { - st = *(s16 *)(p + 0x70); - if (st == 0 || st == 7 || st == 0xF) { - cnt++; - } - } - p += 0x10C; - } - - if (cnt < 2) { - p = (u8 *)func_8012C658(0x1EA, 0, (s32)a0); - if (p != 0) { - t = rand() & 0xFFF; - q = *(s32 *)(p + 0x20); - *(u16 *)(q + 0x12) = t; - { - s32 rr = rand() & 0x7F; - s32 xx = *(u16 *)(p + 0x6) - 0x40; - *(u16 *)(p + 0x6) = xx + rr; - } - { - s32 rr = rand() & 0x7F; - s32 xx = *(u16 *)(p + 0xE) - 0x40; - *(u16 *)(p + 0xE) = xx + rr; - } - } - } -} - - - -extern void func_8001CD50(s32 a0, s32 a1); -extern void func_800233CC(void *, unsigned short); - -void func_801885D0(void *a0) -{ - - extern u8 D_801D45D8[]; - s32 s1; - u8 *p; - - s1 = *(s32 *)((s32)a0 + 0x20); - p = D_801D45D8 + *(s32 *)((s32)a0 + 0x2C) * 0x40; - func_8001CD50(s1, (s32)p); - *(s16 *)(s1 + 0x1E) = 0xCCC; - *(s16 *)(s1 + 0x10) = 0x400; - *(s16 *)(s1 + 0x1A) = 0; - *(s16 *)(s1 + 0x18) = 0; - *(s32 *)(s1 + 4) = *(s32 *)(s1 + 4) | 0x50000000; - func_800233CC(p, 0x80); - p[2] = 0xFF; - p[1] = 0xFF; - p[0] = 0xFF; - p[5] = 0x40; - p[4] = 0x40; - p[6] = 0x80; - *(s32 *)((s32)a0 + 0x1C) = 0x10; - *(u16 *)((s32)a0 + 2) = *(u16 *)((s32)a0 + 2) + 1; -} - - - - -/* Declaration reconciliation with src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c: - * - D_801D45D8: the TU already declares it at line 4526 as `extern u8 D_801D45D8[];` - * (used by the banked func_801885D0 just above the splice point). The draft had - * `extern s32 D_801D45D8[]` -> "conflicting types". Lever (A): conform the decl - * VERBATIM and keep the disagreement at the use site, which already casts the - * decayed pointer to s32. Zero bytes change. - * - func_801292C8: not declared anywhere in this TU, but src/shared/engine_core.h - * declares it as `extern void func_801292C8(u8 *a0);` inside four DEFINE_ macros - * (6304/8491/13623/13794). None of those macros is expanded in this TU today, but - * conforming to that shape now makes the splice conflict-proof if one ever is. - * $a0 already holds the incoming pointer, so passing it costs no instruction - * (jal + nop delay slot, exactly as in the target). - */ - -extern void func_801292C8(u8 *a0); - -void func_80188694(void *a0) { - - extern u8 D_801D45D8[]; - s32 v0; - s32 v1; - s32 a1; - s32 a2; - u8 *v1ptr; - - v0 = *(s32 *)((s32)a0 + 0x1C); - v1 = *(s32 *)((s32)a0 + 0x2C); - a1 = v0 - 1; - /* §21 zero-byte re-tie barrier: without it gcc's scheduler hoists the 0x2C load - * (and its sll) ahead of the 0x1C load + addiu pair -- the 4-slot SCHEDULE-REORDER - * residual. Folding the shift into the address expression fixes the order but then - * swaps $v0/$v1 across the sll/lui pair (REGALLOC-PERM). The re-tie keeps the - * in-place `v1 <<= 6` form (so the shift stays in $v1) AND anchors it after the - * two loads. Emits no code. */ - __asm__ __volatile__("" : "=r"(v1) : "0"(v1)); - v1 = v1 << 6; - a2 = (s32)D_801D45D8 + v1; - v1ptr = *(u8 **)((s32)a0 + 0x20); - - *(s32 *)((s32)a0 + 0x1C) = a1; - - if (!(a1 == -1)) { - v0 = 0x10 - a1; - *(u16 *)((s32)v1ptr + 0x1A) = v0 << 8; - *(u16 *)((s32)v1ptr + 0x18) = v0 << 8; - - v1 = *(s32 *)((s32)a0 + 0x1C); - v0 = (v1 << 8) - v1; - if (v0 < 0) { - v0 = v0 + 0xF; - } - v0 = (u32)v0 >> 4; - - *(u8 *)(a2 + 0x2) = v0; - *(u8 *)(a2 + 0x1) = v0; - *(u8 *)(a2 + 0x0) = v0; - - v0 = *(s32 *)((s32)a0 + 0x1C) << 2; - *(u8 *)(a2 + 0x5) = v0; - *(u8 *)(a2 + 0x4) = v0; - - *(u8 *)(a2 + 0x6) = *(s32 *)((s32)a0 + 0x1C) << 3; - } else { - func_801292C8((u8 *)a0); - } -} - - -DEFINE_func_80188748() /* dedup: shared engine-core @0x80188748 (src/shared) */ - -extern s32 func_8004787C(s32 a0); -extern void func_801292C8(u8 *a0); - -void func_80188788(a0) -void *a0; -{ - s32 v0; - s32 s0; - - v0 = *(s32 *)((s32)a0 + 0x2C); - s0 = *(s32 *)((s32)a0 + 0x20); - v0 = v0 - 0x80; - *(s32 *)((s32)a0 + 0x2C) = v0; - if (v0 <= 0) { - func_801292C8((u8 *)a0); - } else { - v0 = func_8004787C(v0); - *(s16 *)(s0 + 0x1A) = v0; - *(s16 *)(s0 + 0x18) = v0; - } -} - - - -extern s32 func_8004787C(s32 a0); -extern s32 func_80047948(s32 a0); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); - -s32 func_801887DC(s32 a0, s16 a1, s16 a2) { - s16 p1[3]; - s16 p2[3]; - s32 t; - s32 result; - - p1[0] = *(u16 *)(a0 + 6); - p1[1] = *(u16 *)(a0 + 0xA); - p1[2] = *(u16 *)(a0 + 0xE); - - t = func_8004787C(*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) & 0xFFF) * a1; - p2[1] = p1[1]; - p2[0] = p1[0] - (t >> 12); - - t = func_80047948(*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) & 0xFFF) * a1; - p2[2] = p1[2] - (t >> 12); - - result = func_80133784(1, p1, (s32)p2); - - if ((result & 0x8000) && a2) { - t = func_8004787C(*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) & 0xFFF) * a1; - p1[1] = p2[1]; - p1[0] = p2[0] + (t >> 12); - - t = func_80047948(*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) & 0xFFF) * a1; - p1[2] = p2[2] + (t >> 12); - - result = func_80133784(1, p2, (s32)p1); - - *(s16 *)(a0 + 6) = p1[0]; - *(s16 *)(a0 + 0xA) = p1[1]; - *(s16 *)(a0 + 0xE) = p1[2]; - - if (!(*(u16 *)(a0 + 0x84) & 2)) { - *(u16 *)(a0 + 0x84) |= 2; - } - } else { - *(u16 *)(a0 + 0x84) &= ~2; - } - - return result; -} - - -DEFINE_func_80188990() /* dedup: shared engine-core @0x80188990 (src/shared) */ - - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8012C218(void *a0); -extern s32 func_80029504(void); -extern s32 func_800291DC(s32 a0); -extern void func_800291C8(s32 a0, s32 a1); -extern void func_8012B23C(s32 a0); -extern s32 func_80143970(void *a0); -extern s32 func_8012B030(u8 *a0); -extern u8 D_800AF630[]; -extern u16 D_801D099C; -extern u16 D_801D099E; -extern u16 D_801D09A0; -extern u8 D_801D095C[]; -extern u8 D_801D09A4[]; - -void func_80188C8C(s32 arg0) -{ - register s32 s0 __asm__("$16"); - register u8 *s1 __asm__("$17"); - s32 w; - u16 t; - - s1 = D_800AF630; - if (func_8012C354(arg0, (s32)D_801D095C) == 0) { - return; - } - s0 = arg0; - - if ((u32)func_80029504() >= 0x1D7u) { - goto close; - } - - *(u16 *)(s0 + 0x10A) = 1; - w = func_800291DC(10); - if (w & 0x100) { - goto fieldset; - } - - if ((s16)w == 0x3043) { - goto close; - } - if ((s16)w != 0x1052) { - goto join; - } - -close: - func_8012C218((void *)s0); - return; - -fieldset: - *(u16 *)(s0 + 6) = 0x10BD; - *(s16 *)(s0 + 0xA) = -0x282; - *(s16 *)(s0 + 0xE) = -0x374; - *(u16 *)(s0 + 0x10A) = 0; - -join: - t = *(u16 *)(s1 + 0xA3D8); - *(u16 *)(s0 + 0xFE) = t; - func_800291C8(10, (s16)t); - *(u8 *)(s0 + 0xC0) = 1; - *(s32 *)(s0 + 0xB4) = -0x489; - *(s32 *)(s0 + 0xBC) = (s32)D_801D09A4; - *(u8 *)(s0 + 0xC1) = 0; - *(s32 *)(s0 + 0xC4) = 1; - func_8012B23C(s0); - func_80143970((void *)s0); - func_8012B030((u8 *)s0); - *(u16 *)(s0 + 2) = 1; - *(s16 *)(s0 + 0xAE) = -1; - *(u8 *)(s0 + 0x75) = 8; - D_801D099C = *(u16 *)(s0 + 6); - D_801D099E = *(u16 *)(s0 + 0xA); - D_801D09A0 = *(u16 *)(s0 + 0xE); -} - - - -void func_80188DE4(void *a0) { - extern u16 D_80126B62; - extern u8 D_801D093C[]; - extern u8 D_801D094C[]; - extern void (*D_801D0A3C[])(void *); - register s32 t __asm__("$2"); - - if (*(s16 *)((s32)a0 + 0xFC) != 0) { - *(s16 *)((s32)a0 + 0xFC) = *(s16 *)((s32)a0 + 0xFC) - 1; - *(u32 *)(*(s32 *)((s32)a0 + 0x20) + 4) ^= 0x80000000; - } - - t = *(s16 *)((s32)a0 + 0xA); - t -= 0x30; - if ((*(s16 *)&D_80126B62) < t) { - t = (s32)D_801D094C; - } else { - t = (s32)D_801D093C; - } - t |= 0x40000000; - t |= 0x20000000; - *(u32 *)((s32)a0 + 0x58) = t; - - t = *(u16 *)((s32)a0 + 2); - __asm__("" : "=r"(t) : "0"(t)); - D_801D0A3C[t](a0); -} - - - - -void func_80188E8C(a0) -s32 a0; -{ - *(u16 *)((s32)a0 + 0x5C) = 0x8E10; - if (*(s16 *)((s32)a0 + 0x76) < 0x320) { - *(s16 *)((s32)a0 + 0x76) = 0x384; - } -} - - - - -void func_80188EB0(void *arg0) { - extern void func_8012B14C(s32 a0, s32 a1); - extern s32 func_801887DC(s32 a0, s16 a1, s16 a2); - extern u8 D_801D0990[]; - - *(u8 *)((s32)arg0 + 0xC1) = 4; - *(u8 *)((s32)arg0 + 0xC2) = 0; - *(u16 *)((s32)arg0 + 0x5C) &= ~1; - func_8012B14C((s32)arg0, (s32)D_801D0990); - *(s32 *)((s32)arg0 + 0x1C) = 0; - *(u16 *)((s32)arg0 + 0x108) = 0x28; - func_801887DC((s32)arg0, -0x28, 1); -} - - -extern u16 D_801D099C; -extern u16 D_801D099E; -extern u16 D_801D09A0; -extern void func_800291C8(s32, s32); - -void func_80188F14(a0) -s32 a0; -{ - extern u16 D_801D099C; - extern u16 D_801D099E; - extern u16 D_801D09A0; - s32 ptr; - - ptr = *(s32 *)((s32)a0 + 0x20); - *(s32 *)(ptr + 4) &= 0x7FFFFFFF; - *(u16 *)((s32)a0 + 0xFC) = 0; - func_800291C8(0xA, (s16)(*(u16 *)((s32)a0 + 0xFE) | 0x100)); - D_801D099C = *(u16 *)((s32)a0 + 0x6); - D_801D099E = *(u16 *)((s32)a0 + 0xA); - D_801D09A0 = *(u16 *)((s32)a0 + 0xE); -} - - -DEFINE_func_80188F90() /* dedup: shared engine-core @0x80188F90 (src/shared) */ - -extern s32 func_80178B18(s32 param_1, s32 param_2); -extern s32 func_801789AC(s32 arg0); -extern void func_80178D18(void); -extern void func_801746DC(void); -extern void func_80029514(s32); - -void func_80188FB0(void *param_1) { - extern s32 func_8012BD14(s32 a0); - extern s32 func_8012B8A4(s16 *a0); - extern s32 D_801D09F4; - s16 state; - s32 ret; - - state = *(s16 *)((s32)param_1 + 0x10A); - - switch (state) { - case 0: - break; - case 1: - ret = func_8012BD14((s32)param_1); - if (ret < 0x1001) { - func_80178B18((s32)param_1, (s32)&D_801D09F4); - func_801746DC(); - ret = func_8012B8A4((s16 *)param_1); - *(s16 *)(*(s32 *)((s32)param_1 + 0x20) + 0x12) = (s16)ret; - *(s16 *)((s32)param_1 + 0x10A) = 2; - func_80029514(0x1D1); - } - break; - case 2: - if (func_801789AC((s32)param_1) == 1) { - ((void (*)(s32))func_80178D18)((s32)param_1); - *(s16 *)((s32)param_1 + 0x10A) = 0; - } - break; - } -} - - -extern s32 func_8012B030(u8 *a0); -extern u16 D_801D099C; -extern u16 D_801D099E; -extern u16 D_801D09A0; - -void func_80189074(a0) -void *a0; -{ - s32 v1 = *(s32 *)((s32)a0 + 0x20); - u16 v0; - - *(u16 *)(v1 + 0x10) = *(u16 *)(v1 + 0x10) - 0x30; - - v0 = *(u16 *)((s32)a0 + 0xA) + 2; - v1 = *(s32 *)((s32)a0 + 0x1C) - 1; - *(u16 *)((s32)a0 + 0xA) = v0; - *(s32 *)((s32)a0 + 0x1C) = v1; - if (v1 == 0) { - *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x10) = 0; - *(s16 *)((s32)a0 + 0x2) = 1; - *(s32 *)((s32)a0 + 0x1C) = 2; - *(u16 *)((s32)a0 + 0xFC) = 0x3C; - *(u16 *)((s32)a0 + 0x6) = D_801D099C; - *(u16 *)((s32)a0 + 0xA) = D_801D099E; - *(u16 *)((s32)a0 + 0xE) = D_801D09A0; - func_8012B030(a0); - *(u16 *)((s32)a0 + 0x5C) = 0x8E10; - if (*(s16 *)((s32)a0 + 0x76) < 0x320) { - *(u16 *)((s32)a0 + 0x76) = 0x384; - } - } -} - - - -extern void (*D_801D1070[])(void); - -void func_8018913C(void *a0) { - D_801D1070[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -/* Declarations conform VERBATIM to the ones already present in - * src/ov_SC03_014/ov_SC03_014_jr_801848E4.c (lines 58, 2524, 2527, 3139, - * 3222, 3244, 3245). Type mismatches are resolved by casting AT THE USE. */ -extern s32 func_8012C354(s32 a0, s32 a1); -extern s32 func_80029178(s32 arg); -extern s32 func_801788B8(s32 arg0, s32 arg1); -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012CAE4(void *a0); -extern s32 func_8012A828(void*, void*); -/* not declared anywhere in the TU */ -extern void func_80189824(void); - -void func_80189178(void *a0) { - - extern s32 D_801D0DC8[]; - extern u8 D_801D0D60[]; - extern u8 D_80189C94[]; - s32 res1, res2, arr_elem; - void *ptr; - u16 idx; - s16 val; - - res1 = func_8012C354((s32)a0, (s32)D_801D0D60); - if (res1 == 0) { - return; - } - - ptr = *(void **)((s32)a0 + 0xDC); - idx = *(u16 *)((s32)ptr + 0xA); - arr_elem = D_801D0DC8[idx]; - - res1 = func_80029178(arr_elem); - - if ((res1 & 0xFF) == 0) { - res2 = func_801788B8((s32)a0, (s32)func_80189824); - *(s32 *)((s32)a0 + 0xCC) = res2; - } else { - val = *(s16 *)((s32)a0 + 0x70); - val |= 0x4000; - *(s16 *)((s32)a0 + 0x70) = val; - } - - res2 = func_8012C658(0x8F, *(s16 *)((s32)a0 + 0x70), (s32)a0); - *(s32 *)((s32)a0 + 0x6C) = res2; - - if (res2 == 0) { - func_8012CAE4(a0); - } else { - ((void (*)(s32, void *))func_8012A828)((s32)a0, D_80189C94); - *(u16 *)((s32)a0 + 0x2) = 1; - } -} - - - - -s32 func_8018924C(void *a0) { - void *p1, *p2; - u16 val; - long x; - - p1 = *(void **)(a0 + 0x20); - p2 = *(void **)(a0 + 0x6C); - val = *(u16 *)(p1 + 0x12); - p2 = *(void **)(p2 + 0x20); - val += 0x800; - val &= 0xFFF; - *(u16 *)(p2 + 0x12) = val; - x = 2; - *(u16 *)(a0 + 0x2) = x; - return x; -} - - -DEFINE_func_80189274() /* dedup: shared engine-core @0x80189274 (src/shared) */ - - -/* Declarations copied VERBATIM from src/ov_SC03_014/ov_SC03_014_jr_801848E4.c - * (func_80029178 @ line 58/3176, func_80029124 @ line 43/3253, - * func_80178CBC @ line 2537). The D_801E3* globals are not declared - * anywhere in the TU. */ -extern s32 func_80029178(s32 arg); -extern void func_80029124(s32 a0, s32 a1); -extern void func_80178CBC(s32 arg0, s32 arg1); - -void func_8018927C(void *a0) { - - extern s32 D_801D0FAC; - extern s32 D_801D0F98; - extern s32 D_801D0F94; - extern s32 D_801D102C; - extern s32 D_801D0FC0; - extern s32 D_801D0E8C[]; - extern s32 D_801D0F10[]; - s32 *s0; - s32 *p; - u16 v0; - - s0 = *(s32 **)((char *)a0 + 0xDC); - v0 = *(u16 *)((char *)s0 + 0x8); - - if (!(v0 & 0x8000)) { - v0 = (func_80029178(0x1D)) & 0xFF; - - if (v0 != 0) { - u16 flags2; - D_801D0FAC = *(s32 *)((char *)s0 + 0x4); - flags2 = *(u16 *)((char *)s0 + 0x8); - - if (!(flags2 & 0x4000)) { - v0 = *(u16 *)((char *)s0 + 0xC); - D_801D0F94 = 0; - D_801D0F98 = D_801D0F10[v0]; - } else { - D_801D0F98 = 0; - v0 = *(u16 *)((char *)s0 + 0xC); - func_80029124(D_801D0F10[v0], 1); - D_801D0F94 = 2; - } - } else { - D_801D0FAC = *(s32 *)((char *)s0 + 0x0); - v0 = *(u16 *)((char *)s0 + 0xC); - D_801D0F94 = 0; - D_801D0F98 = D_801D0E8C[v0]; - } - - func_80178CBC((s32)a0, (s32)&D_801D0FC0); - } else { - p = &D_801D102C; - *p = *(s32 *)((char *)s0 + 0x0); - func_80178CBC((s32)a0, (s32)(p - 7)); - } - - *(u16 *)(a0 + 0x2) = 4; - *(u16 *)(a0 + 0x70) |= 0x8000; -} - - - - -/* Declarations copied VERBATIM from src/ov_SC03_014/ov_SC03_014_jr_801848E4.c - * (lines 43, 45, 58, 65, 2528, 2538, 2712, 3177, 3282). - * Type mismatches resolved by casting AT THE USE (func_80178D18). */ -extern s32 func_801789AC(s32 arg0); -extern void func_80178D18(void); -extern s32 func_80029178(s32 arg); -extern void func_80029514(s32); -extern void func_80029124(s32, s32); -extern void func_80145EE8(s32 param_1); -extern void func_8012C218(void *a0); -extern s32 func_801895CC(void); - -void func_801893C8(void *arg0) { - - extern s32 D_801D0DC8[]; - extern void func_8002AC00(s32 arg0); /* not declared anywhere in the TU */ - s32 ptr; - - ptr = *(s32 *)((s32)arg0 + 0xDC); - - if (func_801789AC((s32)arg0) != 0) { - ((void (*)(void *))func_80178D18)(arg0); - - if ((u8)func_80029178(D_801D0DC8[*(u16 *)(ptr + 0xA)]) != 0) { - if (D_801D0DC8[*(u16 *)(ptr + 0xA)] == 0x54) { - func_80029514(0x5A); - func_80029124(0xEA, 1); - } - - if ((*(u16 *)(ptr + 0x8) & 0x4000) != 0) { - if ((u8)func_80029178(0x1D) != 0) { - func_80145EE8(0); - } - } - - if (func_801895CC() == 1) { - func_8002AC00(0x26); - } - - *(u16 *)((s32)arg0 + 0x70) &= 0x8000; - func_8012C218(*(void **)((s32)arg0 + 0xCC)); - } - - *(u16 *)((s32)arg0 + 0x2) = 2; - } -} - - - -extern void func_8012C218(void *a0); - s32 func_801894E8(void * arg0) - { - *(short *)((char *)arg0 + 0x2) = 2; - ((void (*)(s32 *))func_8012C218)(*(s32 **)((char *)arg0 + 0xcc)); - } - - -void func_80189514(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 1; - } - - -void func_80189524(void *a0) { - *(short *)(*(int *)((char *)a0 + 0x6c) + 0xfe) = 2; - } - - - - -extern void func_80029124(s32, s32); - -void func_80189534(void *a0) { - - extern s32 D_801D0DC8[]; - u16 idx = *(u16 *)(*(s32 *)(a0 + 0xDC) + 0xA); - func_80029124(D_801D0DC8[idx], 1); -} - - - -extern s32 D_80126B58; -extern void func_8014ADA8(s32 a0, s32 a1); - -void func_80189574(void * arg0) { - s32 temp_v0; - - temp_v0 = *(s32 *)((s32)arg0 + 0xdc); - ((void (*)(s32 *, s32))func_8014ADA8)((s32 *)&D_80126B58, *(u16 *)(temp_v0 + 0xc)); -} - - -extern s16 func_80174764(void); -s32 func_801895A8(void) { - return ((s32 (*)(void))func_80174764)() == 1; -} - - - - -extern s32 func_80029178(s32 arg); - -s32 func_801895CC(void) { - - extern s32 D_801D0DC8[]; - s32 i; - - for (i = 0; i < 0x26; i++) { - if ((u8)func_80029178(D_801D0DC8[i]) == 0) { - return 0; - } - } - return 1; -} - - - -extern void (*D_801D1098[])(void); - -void func_80189630(void *a0) { - D_801D1098[*(u16 *)((s32)a0 + 0x2)](); -} - - - - -extern s32 func_8012C354(s32 a0, s32 a1); -extern s32 func_8012A828(void*, void*); - -void func_8018966C(void *a0) { - - extern u8 D_801D0D94[]; - extern u8 D_801D1758[]; - extern u8 D_801D1538[]; - s32 ptr; - unsigned short v1; - unsigned short v0; - - if (func_8012C354((s32)a0, (s32)D_801D0D94) == 0) { - return; - } - - ptr = *(s32 *)((s32)a0 + 0x64); - v1 = *(unsigned short *)(ptr + 0x36); - v0 = *(unsigned short *)((s32)a0 + 0x70); - *(unsigned short *)((s32)a0 + 0xFC) = v1; - - if (v0 & 0x4000) { - ((void (*)(s32, void *))func_8012A828)((s32)a0, D_801D1758); - *(unsigned short *)((s32)a0 + 0x5C) = 0; - } else { - ((void (*)(s32, void *))func_8012A828)((s32)a0, D_801D1538); - } - - *(unsigned short *)((s32)a0 + 0x2) = 1; -} - - - - -extern void func_8012C218(void *a0); -extern s32 func_8012A828(void*, void*); -extern void func_8002D4C8(s32 a0, s32 a1); - -void func_801896F4(void *a0) { - - extern u8 D_801D1548[]; - extern u8 D_801D1650[]; - s16 mode; - - if (*(s16 *)((s32)a0 + 0xFC) != *(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x36)) { - ((void (*)(void))func_8012C218)(); - return; - } - - mode = *(s16 *)((s32)a0 + 0xFE); - if (mode == 1) { - *(s16 *)((s32)a0 + 0x2) = 2; - *(s32 *)((s32)a0 + 0x1C) = 0x20; - ((void (*)(s32, void *))func_8012A828)((s32)a0, D_801D1548); - *(s16 *)((s32)a0 + 0x5C) = 0; - func_8002D4C8(0x5BF, 0); - } else if (mode == 2) { - *(s16 *)((s32)a0 + 0x2) = 2; - *(s32 *)((s32)a0 + 0x1C) = 0x20; - ((void (*)(s32, void *))func_8012A828)((s32)a0, D_801D1650); - *(u16 *)((s32)a0 + 0x5C) = 0x8C00; - } -} - - - -/* func_801897B4 — guarded state-kick: if the s16 at 0x98 is clear, set the - * state word at 0x02 to 1, hand the entity to func_8012A828 with one of two - * script tables selected by the s16 flag at 0xFE (== 1 -> D_801D1758, else - * D_801D1538), then clear that flag. - * - * §71 sibling-first: func_8018A06C (same TU, 0x148 bytes earlier) is the same - * two-arm `((void (*)(s32, void *))func_8012A828)(entity, D_801D1758 / D_801D1538)` selector and pins - * the widths: `lh` at 0x98/0xFE, `sh` at 0x02. - */ - -extern s32 func_8012A828(void*, void*); - -void func_801897B4(void *a0) { - - extern u8 D_801D1758[]; - extern u8 D_801D1538[]; - if (*(s16 *)((s32)a0 + 0x98) == 0) { - *(s16 *)((s32)a0 + 0x2) = 1; - if (*(s16 *)((s32)a0 + 0xFE) == 1) { - ((void (*)(s32, void *))func_8012A828)((s32)a0, D_801D1758); - } else { - ((void (*)(s32, void *))func_8012A828)((s32)a0, D_801D1538); - } - *(s16 *)((s32)a0 + 0xFE) = 0; - } -} - - -extern s32 *D_80126B78; -extern u8 D_801D1088[]; -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80172710(void); -extern s32 func_80178BF8(); -#define gte_SetRotMatrix(r0) __asm__ volatile ( \ - "lw $12, 0( %0 );" \ - "lw $13, 4( %0 );" \ - "ctc2 $12, $0;" \ - "ctc2 $13, $1;" \ - "lw $12, 8( %0 );" \ - "lw $13, 12( %0 );" \ - "lw $14, 16( %0 );" \ - "ctc2 $12, $2;" \ - "ctc2 $13, $3;" \ - "ctc2 $14, $4" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) -#define gte_SetTransMatrix(r0) __asm__ volatile ( \ - "lw $12, 20( %0 );" \ - "lw $13, 24( %0 );" \ - "ctc2 $12, $5;" \ - "lw $14, 28( %0 );" \ - "ctc2 $13, $6;" \ - "ctc2 $14, $7" \ - : \ - : "r"( r0 ) \ - : "$12", "$13", "$14" ) - -s32 aF8018A224() __asm__("func_80189824"); - -s32 aF8018A224(param_1) - void *param_1; -{ - s32 *m; - s32 obj; - s32 sv0[2]; - s32 sv1[2]; - s32 flag; - - m = (s32 *)((u8 *)D_80126B78 + 0x34); - obj = *(s32 *)((s32)param_1 + 0x64); - - gte_SetRotMatrix(m); - gte_SetTransMatrix(m); - - RotTransSV(D_801D1088, sv0, &flag); - RotTransSV(D_801D1088 + 8, sv1, &flag); - - if (func_80135888(*(s32 *)(obj + 0x20), *(s32 *)(obj + 0x58), (s32)sv0, (s32)sv1) == 0) { - return 0; - } - if (func_8012BDBC(obj, 0x300) == 0) { - return 0; - } - *(s16 *)(obj + 0x2) = 3; - func_80178BF8(); - return (s32)func_80172710; -} - - - - - - diff --git a/src/ov_SC03_119/ov_SC03_119_o0b.c b/src/ov_SC03_119/ov_SC03_119_o0b.c deleted file mode 100644 index 8cbb6962a..000000000 --- a/src/ov_SC03_119/ov_SC03_119_o0b.c +++ /dev/null @@ -1,30 +0,0 @@ -#include "common.h" -#include "../shared/func_80144B9C.h" - - -/* func_801457A4 @ 0x801457A4 — an -O0 function stranded at the whale's end boundary (it is the - * FIRST fn of the -O2 "after" segment, but its target is -O0: frame-pointer + per-case stack - * reloads). It can only bank in an -O0 object, so it lives here: _o0b is already -O0-compiled and - * its .text ends exactly at 0x801457A4 (right after func_80144B9C), placing this fn at its true - * address with no linker/Makefile change. Its stub was removed from ov_SC01_077_after.c. Def sig - * conformed byte-neutrally to func_80144B9C.h's decl `void *func_801457A4(s32)` (the whale calls it - * that way); byte-proven at -O0 (match_one --o0 79/79) and by the whole-binary gate. Phase-29 bank. */ -extern int D_8018991C; - -void *func_801457A4(s32 param_1) { - switch (param_1) { - case 0x1010: - case 0x1052: - case 0x1077: - case 0x1094: - case 0x2013: - case 0x2015 ... 0x201a: - case 0x2055 ... 0x205b: - case 0x207a ... 0x2080: - case 0x2097 ... 0x209d: - return (void *)(&D_8018991C)[param_1 & 0xffff0fff]; - default: - return (void *)D_8018991C; - break; - } -} diff --git a/src/ov_SC03_119/ov_SC03_119_o0c.c b/src/ov_SC03_119/ov_SC03_119_o0c.c deleted file mode 100644 index 07d808671..000000000 --- a/src/ov_SC03_119/ov_SC03_119_o0c.c +++ /dev/null @@ -1,1152 +0,0 @@ -#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. */ -extern void func_80128288(void); -extern void func_80128158(void); -extern void func_801285E4(void); -extern void func_80128178(void); -extern void func_80128678(void); -extern void func_80128198(void); -extern void func_80128714(void); -extern void func_801281B8(void); -extern void func_8013E67C(void); -extern void func_801281D8(void); -extern void func_8013E558(void); -extern void func_801281F8(void); -extern s32 D_801D1CC4; -extern s32 func_80128218(void); -extern void func_80128A28(void); -extern void func_80128228(void); -extern void func_80128AF4(void); -extern void func_80128248(void); -extern void func_801282EC(void); -extern void func_80128268(void); -extern u16 D_800B99F6; -extern void (*D_80189C00[])(void); -extern void func_80011B7C(int); -extern void func_801282CC(void); -extern void func_8001C0C8(void); -extern void func_80015310(void); -extern void func_80129258(void); -extern void func_801378F0(void); -extern void func_80010E14(void); -extern s16 currentLocationId; -extern s32 func_80029504(void); -extern s32 func_800CF854(s32); -extern s32 func_80128998(void); -extern s32 func_801289F0(void); -extern s32 func_801288E8(s32); -extern s32 func_80128940(s32); -extern s32 func_80029178(s32); -extern s32 func_801288B0(void); -extern void func_80011C10(void); -extern void func_8012832C(void); -extern void func_80129220(void); -extern void func_80011E24(void); -extern void func_80128C14(void); -extern void func_8002AEF8(void); -extern void func_800CFBBC(void); -extern void SsUtReverbOff(void); -extern void func_8013C98C(void); -extern void func_80129C40(s32 a0); -extern void func_800D0630(void); -extern void func_80145CEC(void); -extern void func_80144B9C(void); -extern u8 D_800B9A17; -extern u8 D_800B9A10; -extern void func_80128420(void); -extern s32 func_800D0588(void); -extern void func_801284B8(void); -extern void func_80175308(void); -extern void func_8016E8F0(void); -extern void func_80175494(void); -extern u8 D_800B9A64; -extern void func_801284F0(void); -extern void func_80146074(void); -extern void func_8012853C(void); -extern void func_80178608(void); -extern void func_8002D4C8(s32 a0, s32 a1); -extern s32 func_80011A3C(void); -extern short currentLocationId; -extern short D_800B99F2; -extern void func_80128564(void); -extern u8 D_800B9A11; -extern void func_801285D4(void); -extern s32 func_800D18DC(void); -extern void func_8014607C(void); -extern void func_801287B8(void); -extern s32 D_801D2EEC; -extern void func_80029444(void); -extern void func_800D1754(void); -extern s32 D_80126B58; -extern u16 D_800B99DA; -extern void func_80129CF8(void); -extern void func_8017849C(void); -extern void func_8014FDF4(struct S8014FDF4 *a0); -extern s32 func_801505FC(s32 a0); -extern void func_801508B4(void *a0); -extern void func_80165E90(void); -extern void func_801627E8(void); -extern void func_80162B1C(void); -extern void func_80165CA0(void); -extern void func_80129010(void); -extern void func_8013CA14(void); -extern void func_800190AC(void); -extern void func_8012956C(void); -extern void func_8016E95C(void); -extern void func_801754A8(void); -extern void func_8013BC7C(void *arg0); -extern void func_8013BCDC(void); -extern void func_801379FC(void); -extern void func_8001212C(void); -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AEFD0; -extern int D_800C7C60; -extern int *D_800C7C64; -extern int D_800A2E20; -extern int D_800AF558; -extern int D_801D1CC4; -extern int func_801288E8(int arg0); -extern u8 D_800AF560; -extern s32 func_80128940(s32 _arg0); -extern int D_800AECB0; -extern u8 D_800AECB8; -extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); -extern s16 D_800B9A00; -extern M2C_UNK (*D_8018993C)(); -extern s16 (*D_80189940)(); -extern M2C_UNK (*D_80189948)(); -extern s32 (*D_8018994C)(); -extern s32 D_801D2EE8; -extern void func_80010AE0(s32 a0); -extern void func_80018450(s32 a0, s32 a1); -extern void func_800183E0(s32 a0); -extern void func_80128D60(s32 a0, s32 *a1, s32 *a2); -extern s32 func_80128DB4(s32 a0, s32 *a1); -extern void func_80128EA8(s32 a0, s32 a1, s32 a2); -extern M2C_UNK D_801D1CC8; -extern void func_80128FAC(u16 *arg0); -extern s16 D_8011DB2C; -extern s16 D_8011DB30; -extern s32 D_80126AEC; -extern u8 *func_8012913C(s32 a0); -extern u8 * func_801290DC(s32 a0, u8 *a1); -extern void func_8001D074(s32 a, s32 b); -extern u8 *func_801291C0(void); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 * func_8012913C(s32 arg0); -extern void func_80016714(void *a0, s32 a1); -extern u8 * func_801291C0(void); -extern void func_80129248(s16 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012927C(void); -extern void func_8012931C(struct vec *a0); -extern void func_80129350(s32 a0, s32 a1); -extern void func_80129374(s32 a0, s32 a1); -extern s16 D_800B9AAC[]; -extern s16 D_800B9AAE[]; -extern s16 D_800B9AB0[]; -extern s16 D_800B9AB2[]; -extern s16 D_800B9AB4[]; -extern s16 D_800B9AB6[]; -extern s16 D_800B9AB8[]; -extern s16 D_800B9ABA[]; -extern void func_80129398(void); -extern s16 D_80114EE0; -extern void func_80129428(void); -extern void func_8012943C(void); -extern s32 D_8005128C; -extern u8 D_800B9A78; -extern void func_801298F4(void *arg0); -extern void func_801299C8(s32 a, s32 b, s32 c); -extern void func_8012944C(void); -extern unsigned short D_800B99F0; -extern void func_8012A328(void); -extern void func_80053308(s32); -extern s32 func_80012F74(s32, s32, s32, s32); /* canonical s32 (engine_core); (s16)-cast the return for the sll/sra */ -extern void GsSetRefView2L(void *); -extern s8 D_801150D6; /* canonical (engine_core macro): s8 — access via *(u8*)& for lbu */ -extern u8 D_80127504; -extern s32 D_80126E60[]; -extern s32 D_80126F04[]; -extern u8 D_80126948[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_80126FA8[]; -extern u8 D_800AF630[]; /* canonical (sibling): u8[] — cast (s32*) at use */ -extern s32 D_800AE688[]; -extern s32 D_801151D4; /* canonical (10 siblings): scalar s32 — store (s32)ptr */ -extern void func_8012A018(s32 a, s32 b); -extern void func_80129FF4(void); -extern u16 D_80126B5E; -extern u16 D_80126B62; -extern u16 D_80126B66; -extern s16 D_80126940; -extern s16 D_80126942; -extern s16 D_80126944; -extern void func_8012A048(void *a0, s32 a1, u8 a2); -extern void *memcpy(void *, const void *, unsigned int); -extern void func_8012A094(s32 a0); -extern void func_8012A100(s8 a0); -extern void func_8012A0E0(void); -extern s8 D_801150D6; -extern s32 D_80120204; -extern s32 D_80120200; -extern s32 D_8012020C; -extern s32 D_80120208; -extern s16 D_80120218; -extern s16 D_80120210; -extern s16 D_8012021A; -extern s16 D_80120212; -extern s16 D_8012021C; -extern s16 D_80120214; -extern s16 D_80120226; -extern s16 D_80120220; -extern s16 D_80120228; -extern s16 D_80120222; -extern s16 D_8012022A; -extern s16 D_80120224; -extern s32 D_80120294; -extern s16 D_80120298; -extern s16 D_8012029A; -extern void func_8012A110(void); -extern s8 D_801152C0; -extern void func_8012A2F4(void); -extern s16 D_80127080; -extern s16 D_801152C2; -extern void func_8012A304(s32 a0, s32 a1); -extern s32 D_801151D4; -extern void func_8012A4BC(void); -extern void func_8012A62C(s32); -extern void func_8012A5F8(void (*a0)(void), s32 a1); -extern void func_8012A62C(s32 a0); -extern void func_8012A7D4(void *a0, void *a1); -extern s32 func_8012A6D0(void *a0, void *a1); -extern s16 func_8012A68C(void); -extern s16 func_8012A79C(s16 *a0, s16 *a1); -extern s16 func_8012A758(void); -extern s32 ratan2(s32 a0, s32 a1); -extern void func_8012A7D4(void *arg0, void *arg1); -extern void func_8012AAAC(); -extern void func_8012A828(s32 a0, void * a1); -extern int func_8012ACE0(void *a0); -extern void func_8012A860(void *a0, int a1); -extern void func_8012A8B0(u8 *a0, s32 a1); -extern void func_8012A8E8(void); -extern u8 D_801202A0[]; -extern u16 D_801270C0; -extern void func_8012A988(u8 *a0); -extern void func_8012A908(void); -extern s32 func_8012ACE0(void *a0); -extern M2C_UNK D_80189C94; -extern void func_8012ACA0(void *arg0); -extern s32 func_8012ACE0(void *o); -extern void func_8012AD44(s32 *a0, s16 a1); -extern s32 func_8012AD50(void * arg0); -extern void func_8012AD64(s32 *a0, s16 a1); -extern void func_8012AD6C(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_8012ADE4(u8 *a0); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80013478(s32 a0, s32 a1); -extern s32 func_8012AE00(s32 a0); -extern s32 func_8012AF0C(s32 a0, s32 a1); -extern s32 func_80134510(s32 arg); -extern s32 func_8012B030(u8 *a0); -extern int func_80047948(int a0); -extern int func_8004787C(int a0); -extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); -extern void func_800484EC(s32 a0, s32 a1, s32 a2); -extern void func_8012B14C(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern void func_8012B1B4(s32 a0, s32 a1); -extern void func_8012B200(u8 *a0); -extern void func_8012B21C(void *a0); -extern void func_8012B23C(s32 a0); -extern void func_8012B260(u8 *a0); -extern void func_80049CAC(s32 a0, s32 a1); -extern void func_8012B2CC(s32 a0); -extern void RotMatrixYXZ(void *m, void *p); -extern void func_8012B370(int a0); -extern void func_8004978C(s16 *a0, void *a1); -extern void func_8012B414(int a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B70C(s16 *a0, s16 *a1); -extern s32 ratan2(s32 x, s32 y); -extern s32 func_8012B744(void *a0, void *a1); -extern s16 D_80126CB8; -extern s16 D_80126CB4; -extern s32 func_8012B864(s32 a0); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B8E4(s32 arg0, s32 arg1); -extern s32 func_8012BA10(s32 arg0, s32 arg1); -extern s32 func_8012BB3C(s32 arg0, s32 arg1, u32 arg2, s32 arg3); -extern void Square0(s32 *a0, s32 *a1); -extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); -extern s16 D_80126CBA; -extern s32 func_8012BCCC(s32 a0); -extern void func_80013350(s32 a0, void *a1); -extern u8 D_80126B5C; -extern void func_8012BD14(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BD3C(s32 a0, s32 a1, s32 a2); -extern void func_8012BE98(s32 a0, u16 *a1); -extern void func_8012BE54(s32 a0); -extern s32 func_800132BC(s32 a0, s32 a1); -extern void func_8012BE98(s32 arg0, u16 * arg1); -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8012BF10(s32 a0, s32 a1); -extern void func_8012BF4C(s32 *a0, s32 a1); -extern void func_8012BF54(void *a0); -extern void func_8012BF68(void *a0); -extern s16 D_80126CB0; -extern s32 func_8012BF7C(s16 *a0); -extern s16 D_80126CAC; -extern short D_80126CAE; -extern int func_8012BFA8(short *a0); -extern s32 D_801274D4; -extern s32 D_801274E0; -extern s32 func_8012C044(s32 a0); -extern void func_8012C194(void); -extern void func_8001CFDC(s32 a, s32 b); -extern void func_8012C1B8(void); -extern u8 D_800B3DF0[]; -extern s32 func_8012C1DC(s32 a0); -extern void func_8012C218(void *a0); -extern u8 D_80126720[]; -extern u16 * func_8012C284(u16 *a0); -extern u8 D_80120194[]; -extern s32 func_8012C2D0(void); -extern s32 func_8012C31C(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern u8 D_80078EAE; -extern s32 func_8012C354(s32 a0, s32 a1); -extern void func_8001C810(s32 a0, s32 a1); -extern s32 func_8012C438(s32 a0, s32 a1); -extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); -extern s32 func_8012C51C(void *a0, s32 a1); -extern s32 func_8012C588(s32 a0, s32 a1); -extern void func_8012C724(s32 a0, s32 a1); -extern s32 func_8012C820(u8 *a0); -extern s32 D_8018D178; -extern s16 D_801270C4; -extern u16 D_801274E4[]; -extern s32 D_8011DB08; -extern s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -extern s32 func_8012CC88(s32 a, s32 b, s32 c); -extern u8 D_800D3918[]; -extern void func_8012CBA4(s32 a0); -extern void func_8012CBCC(s32 a0); -extern void func_8012CBF4(s32 a0); -extern void func_8012CC1C(s32 arg0, s32 arg1); -extern void func_8012CC40(s32 arg0, s32 arg1); -extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); -extern void func_8012CC64(s32 a0, s32 a1); -extern s32 func_80133784(s32 a0, void *a1, s32 a2); -extern s32 func_8012CE2C(s32 a0); -extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); -extern void func_8012CFA8(s32 arg0); -extern void func_8012F214(s32 a0, s32 a1, s32 a2); -extern void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2); -extern void func_8012D098(u16 *param_1, u32 param_2); -extern void func_8012D098(); -extern void func_8012D38C(int a0); -extern void func_8012D3AC(void); -extern s32 AddPrim(s32, void *); -extern s32 RotTransPers(s32, s32, s32 *, s32 *); -extern void SetLineF2(void *); -extern void *func_80010A08(s32); -extern void func_8004914C(void *); -extern void func_800491AC(void *); -extern s32 D_800A651C; -extern u8 D_800AF648; -extern s16 D_800B9A02; -extern void func_8012D4B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void func_8012D5DC(void); -extern s16 D_80126B98; -extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern int func_8012D664(); -extern void func_8012D624(s32 a0); -extern int func_8012D664(int arg0, int arg1, int arg2); -extern s32 func_8012D714(s32 param_1, u32 param_2); -extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); -extern void func_8014C978(void); -extern M2C_UNK D_80189CAC; -extern M2C_UNK D_80189CB4; -extern s32 func_8012DB84(void); -extern s32 func_8012DE2C(s32 a0); -extern s32 func_8012DDA4(void); -extern s32 func_8012DBD0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_8012DDA4(); -extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); -extern s16 D_80126B9A; -extern u8 D_801152A8[]; -extern void func_8012DFBC(void); -extern void func_8012DFCC(void); -extern void func_8012E014(s32 arg0); -extern void func_8012E138(void); -extern void func_8012DFD4(u8 *a0); -extern s32 func_8012E27C(void); -extern void func_8012E284(void); -extern s32 GetTPage(s32, s32, s32, s32); -extern s32 func_8005A600(s32, s32, s32, s32, s32); -extern void func_8012E28C(s32 arg0, s32 arg1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); -extern void func_8012E32C(void); -extern s32 func_8012E470(s32 a0); -extern void func_8012E4C8(s32 a0); -extern s32 func_8012E504(s32 a0, s32 a1); -extern s32 func_8012E544(s32 a0); -extern s32 func_8012E57C(s32 a0, s32 a1); -extern s32 RotTransPers(s32 a0, s32 a1, s32 *a2, s32 *a3); -extern void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E688(s32 param_1, u16 param_2, u16 param_3); -extern void func_8012E88C(u8 *a0); -extern void func_8012E8A8(u8 *a0); -extern void func_8012E8C4(u8 *a0); -extern void func_8012E8E0(s32 a0, s32 a1); -extern void func_8016AA50(int, int); -extern void func_8016B428(int); -extern void func_80019064(void *); -extern int D_80189CBC; -extern void func_8012E9C0(int param_1); -extern void func_8012EC04(s32 param_1, s32 param_2, s32 *param_3); -extern s32 func_8002A4FC(s32 a0); -extern s32 func_8012EECC(s32 a0); -extern void func_8012EFB8(s32 a0); -extern void func_8012EF34(s32 a0, s32 a1); -extern void func_8012EF70(s32 a0, s32 a1); -extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); -extern void func_8012F038(int param_1, short *param_2, short *param_3); -extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); -extern void RotTransSV(s32 a0, s32 a1, void *a2); -extern void func_8012F14C(s32 a0, s32 a1, s32 a2); -extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); -extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); -extern s16 D_80126CB6; -extern void func_8012F374(s32 a0, s32 a1); -extern void *memcpy(void *, const void *, u32); -extern u8 D_80126C38; -extern u8 D_80126C40; -extern u16 D_80126B94; -extern u16 D_80126B96; -extern void func_8012F568(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, s32 param_6); -extern void func_80131B14(); -extern void func_80131E00(struct S80131E00 *a0, s32 a1); -extern s32 func_80131A34(s32, s32); -extern void func_80131CA8(int a0, int a1); -extern void func_8012F5F4(s32 arg0); -extern void func_80131C78(s32 a0); -extern void func_8012F68C(s32 arg0); -extern void func_8012F75C(s32 a0); -extern s32 func_8012BEE8(s32); -extern void func_8012F7B4(s32 a0); -extern void func_80131170(); -extern void func_80131CA8(); -extern unsigned char D_80189CD8[]; -extern void func_8012F828(int param_1); -extern void func_80131340(s32 a0); -extern void func_8012F87C(s32 a0); -extern void func_80131170(s32 a0, s32 a1, s32 a2); -extern u8 D_80189CE4[]; -extern void func_8012F8C8(u8* arg0); -extern void func_8012F91C(s32 a0); -extern s32 func_80131A34(s32 a0, s32 a1); -extern void func_80131CA8(s32 a0, s32 a1); -extern void func_8012F968(s32 param_1); -extern void func_801319E0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_8012FB54(s32 a0); -extern void func_8012FC30(s32 a0); -extern void func_8012FCA4(int a0); -extern s32 func_8012FCC4(s32 param_1); -extern void func_8012FDA8(int param_1); -extern void func_8012FE70(s32 a0); -extern void func_8012FF00(s32 a0); -extern void func_8012FF4C(s32 a0); -extern void func_80130D48(s32 a0); -extern void func_8012FF98(u8 *a0); -extern s32 func_80131AC8(void *a0); -extern void func_8013001C(void *a0); -extern void func_80130088(void *a0); -extern s32 func_8012BCCC(s32); -extern void func_801300F4(s32 a0); -extern void func_801301E8(u8 *a0); -extern void func_80130278(s32 arg0); -extern void func_80130314(s32 a0); -extern void func_80130360(s32 a0); -extern void func_8012E364(void); -extern void func_801303A0(s32 a0); -extern void func_801303EC(void *a0); -extern void func_80143CD4(s32 a0); -extern void func_800CB0E8(s32 a0); -extern void func_80130438(s32 a0); -extern void func_801319E0(int); -extern int func_80131D68(int, int); -extern int func_8012BEE8(int); -extern void func_80131CA8(int, int); -extern void func_80130514(int param_1); -extern void func_801305CC(u8 *a0); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern void func_80130740(void *a0, u16 *a1); -extern s32 func_801312D0(s32 a0, void *a1); -extern void func_801307B0(s32 a0); -extern void func_80130858(s32 a0); -extern void func_80130898(u8 *a0); -extern void func_801308DC(s32 a0); -extern void func_80166244(); -extern void func_80130974(int param_1); -extern void func_80130AC4(s32 a0); -extern int func_80131A34(int a0, int a1); -extern void func_80130AF0(int param_1); -extern void (*D_80189CF8[])(void); -extern void func_80130D0C(void *a0); -extern s32 rand(void); -extern u8 D_80078E78[]; -extern u16 D_80078EB2; -extern u16 D_80078EB4; -extern s16 D_80189D48[]; -extern s16 D_80189D78[]; -extern s16 D_80189DD8[]; -extern s16 D_80189DE0[]; -extern s16 D_80189E00[]; -extern void func_80130D48(s32 arg0); -extern void func_80131170(s32 p, s32 b, s32 c); -extern s32 func_801312D0(s32 param_1, void *param_2); -extern void func_8002A04C(s32 a0); -extern void func_801319E0(s32 arg0); -extern s32 func_80131CF4(s32 a0); -extern void (*D_80189E38[])(struct S80131E00 *a0); -extern void func_80131E38(u8 *a0); -extern void func_80131E7C(s32 a0); -extern void func_80131EE4(void); -extern void (*D_80189E90[])(void); -extern void func_80131EEC(void *a0); -extern void (*D_80189ED8[])(void); -extern void func_80131F28(void *a0); -extern void (*D_80189EE0[])(void); -extern void func_80131F64(void *a0); -extern void (*D_80189EE8[])(void); -extern void func_80131FA0(void *a0); -extern void (*D_80189EF0[])(void); -extern void func_80131FDC(void *a0); -extern void func_801320D0(void); -extern void func_8001C214(int, int); -extern int D_80189E98; -extern void func_801320D8(int param_1); -extern s32 func_80132144(s32 param_1); -extern int D_80189EB8; -extern void func_801321B0(int param_1); -extern int D_80189EC8; -extern void func_8013221C(int param_1); -extern void func_8005C324(int dst, int src, int n) __asm__("memcpy"); /* Phase-24: 0x8005C324 is named memcpy for overlays (whale needs it); keep the non-builtin C name here (else built-in codegen), emit via asm-label */ -extern void func_801325B8(int a0, int a1, int a2, int a3, int a4); -extern void func_80132288(int *param_1, int *param_2, int param_3); -extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); -extern void func_8013240C(s32 a0); -extern void func_8013277C(void); -extern void func_80020F34(s32 a0, s32 a1); -extern void func_80054514(s32 a0, s32 a1); -extern void func_80132784(s32 a0, s32 a1, u32 a2); -extern s32 VectorNormalSS(void *a0, void *a1); -extern void func_80132DC4(s32 a0, s32 a1, s32 a2); -extern s32 func_80132E6C(s16 *a0); -extern void func_80132EC4(void *a0, s16 a1); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); -extern void func_80133060(u8 *a0, s32 *a1, s32 a2); -extern void func_8013339C(short *param_1, short *param_2); -extern s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3); -extern s32 D_801D2F58; -extern s32 D_801D2F5C[]; -extern int D_801D2F60; -extern void func_80136BC4(s32 a0); -extern void func_801336E8(void *a0, int a1, int a2); -extern void func_80136BC4(s32); -extern void func_8013373C(s16 arg0); -extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); -extern s32 func_80133CD4(); -extern s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3); -extern s32 func_801343C4(s32 angle, s32 p1, s32 p2); -extern s32 func_80134510(s32 param); -extern s32 func_801345F8(s32 arg); -extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134A28(s32 a0, s32 a1, s32 a2); -extern s32 func_80134C20(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern s32 func_80134FB8(s32 a0, s32 a1, s32 a2); -extern s32 func_80135004(s32 arg0, s32 p1, s32 p2); -extern u8 D_80189EFC; -extern u8 D_80189EF8; -extern s16 *D_80189F00; -extern u8 D_80189F04; -extern int D_801D2F58; -extern u16 D_801D2F68; -extern int func_80134A74(int, s16, s16, int); -extern int func_80135168(u16 arg0, u16 *p1, u16 *p2); -extern s16 func_80135480(void *param_1, s32 param_2, s16 *param_3, s16 *param_4); -extern s32 func_80136334(void *arg0, s32 arg1, s32 arg2); -extern s32 func_80136824(s32 arg0, s32 arg1, s32 arg2); -extern s16 *D_80189F00; /* holds a pointer value (*(u16**)&D_80189F00) */ -extern s32 func_80136A94(s32 a0, s32 a1, s32 a2, s32 a3); -extern void func_80136C3C(void); -extern void func_80136C1C(void); -extern void func_80136C44(void); -extern void func_80136C4C(void); -extern void (*D_80189F14[])(void); -extern void func_80136C54(void); -extern s32 func_80136C90(); -extern void func_80136D00(void); -extern void SetLineG2(void *); -extern void func_80136D08(s32 arg0, s32 arg1); -extern void func_80136EC4(void); -extern short D_800B9A02; -extern u8 D_800A6518[]; -extern void GsSortLine(void *a0, void *a1, s32 a2); -extern void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b); -extern void func_80137030(s16 a0, s16 a1); -extern void ApplyMatrixSV(void *m, Svec_801372B0 *in, Svec_801372B0 *out); -extern void aGsSortLine(Gline_801372B0 *p, void *ot, s32 z) __asm__("GsSortLine"); -extern void aF80137030(s32 x, s32 y) __asm__("func_80137030"); -extern void func_80137178(s32 x, s32 y); -extern u8 D_800AF630[]; -extern u16 aD800B9A02 __asm__("D_800B9A02"); -extern void func_801372B0(void); -extern void func_80137614(s32 a0, s32 a1, s32 a2); -extern void func_801375EC(s32 a0, s16 a1); -extern s32 func_801399A8(void); -extern void func_801377B4(s32 a0, s32 a1, s32 a2); -extern s32 func_8013767C(s32 a0); -extern void func_801376E8(int a0, int a1); -extern void func_801376C8(int a0); -extern s32 D_80127524; -extern s32 D_80127528; -extern void func_80137840(s32 a0); -extern void func_80139634(void *); -extern void func_80139DC8(void); -extern s16 D_8012752E; -extern void func_801379D8(void); -extern void func_801379EC(void); -extern int D_80189F68; -extern int D_801269F0; -extern void func_80138BE0(int p); -extern void func_80137B80(void); -extern void func_801392FC(); -extern void func_801397B0(s32 a0); -extern void func_80137DD4(s32 a0, u8 *a1, u8 *a2); -extern void func_80139680(s32 a0, u8 *a1); -extern u16 D_800B99D8; -extern void func_80137BD8(s32 a0); -extern unsigned char D_80126A0E; -extern short D_80126A0A; -extern s16 D_801269F4; -extern int D_800A5E60; -extern int func_80137D08(int arg0, int arg1, short arg2); -extern void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_801380E0(s32 arg0); -extern void func_801387B8(s32 arg0); -extern void func_80138948(void *a0); -extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); -extern void func_80138B88(s32 a0); -extern void func_8013895C(s32 a0); -extern s16 D_80127540[4]; -extern s32 func_80139D04(s32 a0, s32 a1); -extern s32 func_80138DE0(u8 *arg0, u8 arg1, s32 arg2); -extern void func_80139B18(s32 a0); -extern void func_80138AB4(s32 a0); -extern void (*D_80189F6C[])(void); -extern void func_80138C30(void *a0); -extern s32 func_80139BE0(s32); -extern s32 func_80138C60(s32 arg0); -extern void func_8013A9F8(s32 a0, s32 a1); -extern void func_80138D58(s32 a0, u16 a1); -extern s32 func_80014E80(s32 a0, s32 a1); -extern s32 func_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); -extern s32 func_8013914C(s32 a0, s32 a1); -extern void func_800599B8(u16 *); -extern u16 D_80127C0C[]; -extern s32 D_80127548[]; -extern s32 func_80139220(s32 a0); -extern void func_801391F0(void *a0); -extern void func_801392C8(void *a0); -extern void func_801395D4(void *); -extern s32 GetTPage(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80052460(s32 a0, s32 a1, s32 a2); -extern void func_801392FC(s32 arg0, s32 arg1, u8 *arg2); -extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); -extern void func_801395D4(void * a0); -extern void func_80139634(void *a0); -extern void func_80139680(s32 arg0, u8 * arg1); -extern void func_8001931C(void); -extern s16 D_8012752C; -extern void func_80139788(void); -extern u8 D_80189FB0; -extern u8 D_80189FF4; -extern void GsSortSprite(void *a0, u8 *a1, s32 a2); -extern void func_801397B0(s32 arg0); -extern void func_8013A8B0(s32 *a0); -extern void func_80139914(s32 arg0); -extern u16 D_80126A08; -extern s32 D_801269F0; -extern s32 *D_80126A30; -extern void func_80139954(void); -extern s32 D_80126A3C; -extern s32 func_801399F0(s32 a0); -extern s32 D_80127520; -extern void func_80139A34(s32 a0); -extern s32 D_80127530[4]; -extern void func_80139A44(s32 a0, u16 a1); -extern void func_80139A68(s32 a0, u16 a1); -extern void func_80139A8C(s32 a0); -extern void func_80139C7C(u8 *a0); -extern s16 D_8012811A; -extern void func_80139DEC(void); -extern void func_80139DF4(s32 a0); -extern void func_80139E84(s32 a0); -extern void func_80139F0C(s32 a0); -extern void func_80139FBC(struct obj *a0); -extern s32 func_8001B22C(void *a0); -extern void func_80139FE8(void *a0); -extern void func_8013A0A4(struct S8013A0A4 *a0); -extern void func_8013A164(struct S8013A164 *a0); -extern void func_8013A1E8(s32 a0); -extern void func_8013A250(struct S8013A250 *a0); -extern void func_8013A2BC(s32 a0); -extern void func_8013A378(void); -extern u8 D_8011DA80[]; -extern void func_8013A530(); -extern void func_8013A448(void *a0); -extern void func_8013A4C4(struct S8013A4C4 *a0); -extern void func_8013A380(void); -extern void func_80015D4C(); -extern void func_80015F04(); -extern void func_8013AA24(s32 a0, s32 a1); -extern void func_8013A530(int param_1); -extern void func_8013A860(void); -extern s32 func_8013A8BC(void); -extern void func_8013A9B4(s32 a0, s32 a1); -extern s32 func_8013A8FC(s32 arg0); -extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); -extern void func_8013B204(s32 a0, s32 a1); -extern void func_8013AF20(); -extern void func_8013B274(s32 a0, s32 a1, void *a2); -extern s32 D_800A5E60; -extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); -extern s16 D_800D45F4[]; /* src0 (flat: [2*i]=x, [2*i+1]=y) */ -extern u8 D_8018A038[]; /* sign table, alt (when a1 < 0xC00) */ -extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); -extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); -extern s16 D_8018A0B0, D_8018A0B2, D_8018A0B4, D_8018A0B6, D_8018A0B8, D_8018A0BA; -extern u16 D_800D45F6; -/* ==== end §8b carried decl layer ==== */ - - - -void func_8013B568(s32 arg0) { - - extern s32 D_8018A0BC; - D_8018A0BC = arg0; -} - - - -/* func_8013B598 (ov_SC01_077_o0, -O0): fills entry a0 of the 0x1C-stride table at - * D_801D4728 from a 3-halfword source record. - * - * -O0 CONSTANT-OFFSET FOLD (the quirk that stalled this -O0 cluster in Phase 19): - * at -O0 gcc-2.7.2 folds a constant offset into the memory operand ONLY through a - * COMPONENT_REF / a real ARRAY_REF on an array-typed DECL: - * D_801D4728[a0].f4 = ... -> lui $at,%hi(sym); addu $at,$at,idx; sh %lo(sym+4)($at) - * A CAST base defeats it (NOP_EXPR over the ADDR_EXPR), and so does pointer indexing: - * ((S *)D_801D4728)[a0].f4 -> lui;addiu;addu;sh 4(reg) (+2 ins per store) - * a1[1] -> addiu $v1,$a0,2; lhu 0($v1) (+1 ins per load) - * So the table extern must carry the FULL struct type (not the pad-only canonical - * E_3B7AC), and the source record must be read as ->field, not as a[i]. Casting the - * incoming POINTER is harmless (a NOP on a register), only the base decl's type matters. - * - * Both types are body-scoped (cookbook §100) and the extern is declared inside the body, - * matching the established -O0 sibling pattern in src/ov_SC07_010/ov_SC07_010_o0.c - * (func_8013B7AC: `extern E_3B7AC D_801A9420[];` in-body). NOTE FOR BANKING: the canonical - * sig-layer decl `extern E_3B7AC D_801D4728[];` (f0 + pad only) CANNOT be used here — it has - * no f4/f6/f8/fC members. The in-body decl below must be the one that survives; do not also - * emit a file-scope E_3B7AC decl for D_801D4728 (conflicting types). - * - * 66/66 instructions byte-identical (match_one --o0). - */ -void func_8013B598(s32 a0, u16 *a1) { - extern Spr_8013B598_8013B598 D_801D4728[]; - - D_801D4728[a0].f0 = 1; - D_801D4728[a0].f4 = ((Src_8013B598_8013B598 *)a1)->f0; - D_801D4728[a0].f6 = ((Src_8013B598_8013B598 *)a1)->f2; - D_801D4728[a0].f8 = ((Src_8013B598_8013B598 *)a1)->f4; - D_801D4728[a0].fC = 0x100; -} - - - - -void func_8013B6A0(s32 idx, u16 *src, s32 val) -{ - extern Ent_8013B6A0_8013B6A0 D_801D4728[]; - - D_801D4728[idx].f0 = 1; - D_801D4728[idx].f4 = ((Src_8013B6A0_8013B6A0 *)src)->f0; - D_801D4728[idx].f6 = ((Src_8013B6A0_8013B6A0 *)src)->f2; - D_801D4728[idx].f8 = ((Src_8013B6A0_8013B6A0 *)src)->f4; - D_801D4728[idx].fC = val; -} - - - /* sizeof 0x1C stride */ -void func_8013B7AC(int a0) { - extern E_3B7AC_8013B7AC D_801D4728[]; - D_801D4728[a0].f0 = 0; } - - - - -void func_8013B7F4(s32 a0, s32 a1) { - - extern s32 D_801D4844; - func_8013B83C(a0, a1, D_801D4844); -} - - -extern s32 D_801D47E0; -extern s32 D_801D4844; - -void func_8013B83C(s32 a0, s32 a1, s32 a2) { - /* sizeof 0x1C */ - extern Ent_8013B83C D_801DAA08_e[] __asm__("D_801D4728"); - extern s32 D_801D47C4; - extern s32 D_801D47C8; - extern s32 D_801D47CC; - extern s32 D_801D47F0; - extern s32 D_801D4840; - extern s32 D_801D4848; - extern s16 D_800B9A0E; - extern void func_80052D90(s32 a0, void *a1); - extern void func_8013C08C(void *a0, s32 a1); - s32 i; - - D_801D47E0 = 0; - D_801D47CC = 0; - D_801D47C8 = 0; - D_801D47C4 = 0; - func_80052D90(0, &D_801D47F0); - if (a0 == 0) { - return; - } - D_801D4840 = a2 + 500; - D_801D4844 = a2; - for (i = 0; i < 4; i++) { - D_801DAA08_e[i].f0 = 0; - D_801DAA08_e[i].f4 = D_801DAA08_e[i].f6 = D_801DAA08_e[i].f8 = 0x6000; - D_801DAA08_e[i].fC = 0x100; - D_801DAA08_e[i].f18 = 0; - } - switch (*(u8 *)a0) { - case 0x42: - if (D_800B9A0E == 0) { - func_8013BD74(&D_801D47E0, a0); - } else { - func_8013BD74(&D_801D47E0, a1); - } - D_801D4848 = 0; - break; - case 0x43: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 1; - break; - case 0x44: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 2; - break; - case 0x45: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 3; - break; - case 0x46: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 4; - break; - case 0x47: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 5; - break; - case 0x48: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 6; - break; - case 0x49: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 9; - break; - case 0x4A: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 0xC; - break; - case 0x4B: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 0xD; - break; - case 0x4C: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 0xE; - break; - case 0x4D: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 0xF; - break; - case 0x4E: - func_8013C08C(&D_801D47E0, a0); - D_801D4848 = 0x10; - break; - } -} - - - - -void func_8013BC7C(void *arg0) { - - extern void (*D_80189920[])(void *); - D_80189920[((S_8013BC7C_8013BC7C *)arg0)->f68](arg0); -} - - - -/* func_8013BCDC (ov_SC01_077_o0, -O0): guarded indirect call through D_8018A0BC. - * D_8018A0BC is declared `extern s32` in the TU (canonical-sig layer) and holds a - * function pointer; read it as an s32, test non-null, cast to fn-ptr and call. - * Frame residual: target frame is 0x30 (saves $ra/$fp/$s0 at 0x28/0x24/0x20) — 16 - * bytes of var_size above the minimal 0x20. At -O0 (no DCE) an unused 16-byte local - * reserves exactly that var region (cookbook §42 lever 3, frame-pad induction) with - * zero body instructions. 22/22 byte-identical via rtu_match. */ -void func_8013BCDC(void) { - - extern s32 D_8018A0BC; - s32 pad[4]; - if (D_8018A0BC != 0) { - ((void (*)(void))D_8018A0BC)(); - } -} - - - -void func_8013BD34(s32 a0) { - - extern s32 D_801D47E0; - func_8013BD74(&D_801D47E0, a0); -} - - - -extern s16 D_801D46E8; -extern s16 D_801D46EA; -extern s16 D_801D46EC; -extern s16 D_801D46EE; - -void func_8013BD74(void *a0, s32 a1) { - /* §100 draft-LOCAL types: file-scope typedefs are NOT carried by extract_unit/remap_hseq, so a - file-scope E_13BD74 banks the exemplar and then fails every sibling with `E_13BD74' - undeclared (the §94 type-carry class, measured on ov_SC01_000). Block scope travels with the - body and is byte-neutral (a type emits no code). */ - s32 *q; - s32 *p; - s32 i; - s32 unused0; - s32 unused1; - P_13BD74 *e; - P_13BD74 *end; - s32 unused2; - s32 base; - s32 unused3; - - D_801D46E8 = -0xA0; - D_801D46EA = -0x78; - D_801D46EC = 0x140; - D_801D46EE = 0xF0; - ((E_13BD74 *)a0)->f8 = (void *)a1; - ((E_13BD74 *)a0)->fC = (void *)(a1 + 8); - base = a1 + 0x4008; - if (((u8 *)a1)[4] == 0) { - p = (s32 *)((E_13BD74 *)a0)->fC; - for (i = 0; i < 0x1000; i++) { - if (*p != 0) { - *p += (s32)((E_13BD74 *)a0)->fC; - q = (s32 *)*p; - q[0] += (s32)q; - q[5] += (s32)q; - e = (P_13BD74 *)q[5]; - q[6] = q[6] * 12 + q[5]; - end = (P_13BD74 *)q[6]; - while (e < end) { - switch (e->code) { - case 0x24: - case 0x2C: - case 0x34: - case 0x3C: - *(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base; - break; - case 0x26: - case 0x2E: - case 0x36: - case 0x3E: - *(s32 *)e = (*(s32 *)e & 0xFFFFFF) + base; - break; - } - e++; - } - } - p++; - } - ((u8 *)a1)[4] = 1; - } -} - - -DEFINE_func_8013C08C() /* dedup: shared engine-core @0x8013C08C (src/shared) */ - - - -void func_8013C0F8(int param_1) { - int iVar1; - int iVar2; - unsigned int local_18; - unsigned int local_14; - Bar *local_10; - Foo *local_c; - - iVar1 = param_1 + 0x14; - if (*(char *)(param_1 + 4) == '\0') { - iVar2 = iVar1 + *(int *)(param_1 + 0xc); - *(int *)(param_1 + 0xc) = iVar2; - *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + iVar1; - local_c = (Foo *)iVar1; - for (local_18 = 0; local_18 < *(unsigned int *)(param_1 + 8); local_18++, local_c++) { - local_c->field10 = local_c->field10 + iVar1; - local_10 = (Bar *)local_c->field10; - for (local_14 = 0; local_14 < local_c->count; local_14++, local_10++) { - switch (local_10->tag) { - case 0x24: - case 0x2c: - case 0x34: - case 0x3c: - *(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2; - break; - case 0x26: - case 0x2e: - case 0x36: - case 0x3e: - *(unsigned int *)local_10 = (*(unsigned int *)local_10 & 0xffffff) + iVar2; - break; - } - } - } - *(unsigned char *)(param_1 + 4) = 1; - } -} - -DEFINE_func_8013C360() /* dedup: shared engine-core @0x8013C360 (src/shared) */ - - -void func_8013C414(s32 param_1, s32 param_2) -{ - s32 base10; /* 0x00 */ - s32 p; /* 0x04 */ - s32 q; /* 0x08 */ - s32 base4008; /* 0x0C */ - s32 lo; /* 0x10 */ - u32 i; /* 0x14 */ - s32 unused; /* 0x18 */ - s32 base8; /* 0x1C */ - T3Reloc *r; /* 0x20 */ - T3Reloc *s; /* 0x24 */ - - if (*(s32 *)(param_2 + 4) == 0) { - base10 = param_2 + 0x10; - base4008 = param_1 + 0x4008; - lo = *(s32 *)(param_2 + 0xC) + base10; - base8 = param_1 + 8; - p = base10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - *(s32 *)p = *(s32 *)p + base8; - if (*(s32 *)(p + 4) != 0) { - *(s32 *)(p + 4) = *(s32 *)(p + 4) + base10; - q = *(s32 *)(p + 4); - *(s32 *)q = *(s32 *)q + q; - *(s32 *)(q + 0x14) = *(s32 *)(q + 0x14) + q; - r = (T3Reloc *)*(s32 *)(q + 0x14); - *(s32 *)(q + 0x18) = *(s32 *)(q + 0x18) * 0xC + *(s32 *)(q + 0x14); - s = (T3Reloc *)*(s32 *)(q + 0x18); - while (r < s) { - switch (r->type) { - case 0x24: - case 0x2C: - case 0x34: - case 0x3C: - if ((*(u32 *)r) & 0x800000) { - (*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo; - } else { - (*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008; - } - break; - case 0x26: - case 0x2E: - case 0x36: - case 0x3E: - if ((*(u32 *)r) & 0x800000) { - (*(u32 *)r) = ((*(u32 *)r) & 0x7FFFFF) + lo; - } else { - (*(u32 *)r) = ((*(u32 *)r) & 0xFFFFFF) + base4008; - } - break; - } - r++; - } - } - p = p + 0xC; - } - *(s32 *)(param_2 + 4) = 1; - p = param_2 + 0x10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - if (*(s32 *)(p + 8) == 0) { - *(s32 *)(p + 8) = *(s32 *)(*(s32 *)p); - } - p = p + 0xC; - } - } else { - p = param_2 + 0x10; - for (i = 0; i < *(u32 *)(param_2 + 8); i++) { - *(s32 *)(*(s32 *)p) = *(s32 *)(p + 8); - p = p + 0xC; - } - } -} - - - -void func_8013C938(void) { - - extern s32 D_801D47E0; - D_801D47E0 = 1; -} - - - -void func_8013C964(void) { - - extern s32 D_801D47E0; - D_801D47E0 = 0; -} - diff --git a/src/ov_SC03_119/ov_SC03_119_o0d.c b/src/ov_SC03_119/ov_SC03_119_o0d.c deleted file mode 100644 index 022de9808..000000000 --- a/src/ov_SC03_119/ov_SC03_119_o0d.c +++ /dev/null @@ -1,3066 +0,0 @@ -#include "common.h" -#include "../shared/engine_core.h" - - -/* ==== Phase-26 §8b carried decl layer (jr_isolate_all.py) =================== - * The file-scope decl environment from earlier code regions of this object — - * file-local types, col-0 decls, DEFINE_func macro externs, and each earlier - * definition's implied prototype (types first, then decls in original order). - * Decls emit no code => byte-neutral. See cookbook §8c. */ -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8; -typedef void (*Handler)(struct Entry_8016E95C *); -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_8018BEA0; -extern u8 D_8018BE10; -extern u8 D_8018BDEC; -extern u8 D_8018BDC8; -extern u8 D_8018BE7C; -extern u8 D_8018BE58; -extern u8 D_8018BE34; -extern u8 D_8018BDA4; -extern void func_80145934(void); -extern u8 D_8018BF30; -extern u8 D_8018BF0C; -extern u8 D_8018BEE8; -extern u8 D_8018BEC4; -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_8018B328[]; -extern unsigned char D_8018B358[]; -extern unsigned char D_8018B3A8[]; -extern unsigned char D_8018B3D8[]; -extern unsigned char D_8018B408[]; -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 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_8018B458[])(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 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_8018B520[]; -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_8018B5A8[]; -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_8018B5B0; -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 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_801D3080; -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_801D3084; -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_8018B5E0; -extern s32 D_80126990; -extern s32 D_80126994; -extern s32 func_80021174(s32 a0, s32 a1); -extern s32 func_8015094C(s32 param_1); -extern void func_80150B9C(void); -extern s32 func_80151184(s32 a0, s32 a1, s32 a2); -extern s32 func_80150BA4(s32 a0); -extern s32 func_801619D0(void *a0); -extern void func_80150BC8(s32 *a0); -extern s32 func_80150480(s32 a0); -extern u16 D_800AE6DC; -extern void func_80150C48(s32 a0); -extern int func_80151184(int arg, int a1, int a2); -extern int func_80150CA0(int arg); -extern void func_80150EC4(s32 a, s32 b); -extern void func_80150CC4(s32 a); -extern void func_80150CE4(s32 a); -extern void func_80150D04(s32 a); -extern void func_80150D24(s32 a); -extern void func_80150D44(s32 a); -extern void func_80150D64(s32 a); -extern void func_80150D84(s32 a); -extern void func_80150DA4(s32 a); -extern void func_80150DC4(s32 a); -extern void func_80150DE4(s32 a); -extern void func_80150E04(s32 a); -extern void func_80150E24(s32 a); -extern void func_80150E44(s32 a); -extern void func_80150EC4(s32 a0, s32 a1); -extern void func_80150E64(s32 a0); -extern void func_80150E84(s32 a0); -extern void func_80150EA4(s32 a0); -extern u8 D_800AE6C0; -extern s16 D_800AE6C8; -extern s16 D_800AE6CA; -extern s16 D_800AE6CC; -extern s32 D_800AE6C4; -extern s16 D_800AE6CE; -extern u8 D_800AE6BE; -extern u8 D_801201F8[]; -extern void func_80150F78(void); -extern void func_80150F80(s32 a0); -extern int func_80150FB4(int arg); -extern void func_80150FD8(s32 a0); -extern int func_80151014(int arg); -extern void func_80151038(s32 a0); -extern int func_80151070(int arg); -extern int func_80151094(int arg); -extern void func_801510B8(void); -extern void func_801510C0(void); -extern int func_801510C8(int arg); -extern int func_801510EC(int arg); -extern s32 func_8012DB84(void); -extern s32 func_80151110(void); -extern void func_80151130(void); -extern int func_80151138(int arg); -extern void func_8015115C(s32 *a0, s16 a1); -extern s32 func_80151164(s32 a0, s32 a1); -extern s32 func_80151184(s32 arg0, s32 arg1, s32 arg2); -extern void func_801511A8(u8 *a0); -extern void func_801511C4(u8 *a0); -extern int func_80151204(int arg, int a1); -extern int func_801511E0(int arg); -extern int func_80151204(int a0, int a1); -extern void func_80151238(void *a0); -extern void func_8015126C(u16 *p); -extern void func_80151780(s32 a0); -extern void func_801516F0(s32 *a0); -extern void func_8015173C(s32 *a0); -extern s16 D_8011DB1A; -extern s32 D_80127518; -extern s32 D_801151FC; -extern s32 func_801725CC(u8 *a0); -extern s32 func_80029D3C(void); -extern void func_80151878(void); -extern void func_80153B58(s32 *a0); -extern s32 func_80151880(s32 a0); -extern s32 func_801518D8(s32 a0); -extern s32 func_80151944(void); -extern s32 func_80151924(void); -extern void func_8014E934(s32 a0); -extern s32 func_8014F3E8(s32 a0); -extern void func_801519C8(s32 a0); -extern void func_80151980(s32 a0); -extern M2C_UNK D_800D5880; -extern s32 D_800D58AC; -extern void func_80154274(s32 *a0, s32 a1); -extern void func_80154A74(s32 a0, s32 a1); -extern void func_801519C8(s32 arg0); -extern void func_80151C54(s32 a0); -extern void func_801542DC(s32 *a0, s32 a1); -extern void func_8015BDD0(s32 *a0); -extern void func_80165718(s32 a0); -extern u8 D_800D46E4[]; -extern void func_80151AE4(s32 arg0); -extern void (*D_8018B688[])(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_8018B6AC[])(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_8018B69C; -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_8018B6C0[])(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_8018B6CC[]; -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_8018B6DC[])(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_8018B6F4[])(void); -extern void func_8015282C(void *a0); -extern void func_801528B0(s32 a0); -extern void func_80152868(s32 a0); -extern M2C_UNK D_8018B6E4; -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_8018B708[])(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_8018B724[])(void); -extern void func_80152D24(void *a0); -extern void func_80152DA8(s32 a0); -extern void func_80152D60(s32 a0); -extern M2C_UNK D_8018B714; -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_8018B738[])(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_8018B74C[])(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_8018B760; -extern void (*D_8018B788[])(void *a0); -extern void func_80153CCC(S80153CCC *a0); -extern void func_80153D7C(s32 a0); -extern void func_80153D34(s32 a0); -extern u8 D_8018B768; -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_8018B7D4[])(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_8018B7D8[])(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_8018BC3C[]; -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_8018BC4C[])(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_801D30B8; -extern void func_801578C0(s32 a0); -extern void func_80157788(int param_1); -extern void func_801577C8(s32 arg0); -extern void (*D_8018BC74[])(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_8018BC54; -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_8018BC64; -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_8018BCB4[])(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_8018BCBC[])(void); -extern void func_80158038(void *); -extern void func_80158000(void *a0); -extern s32 D_800D51E0; -extern s32 D_8018BC88; -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_8018BCC8[])(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_8018BC98; -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_801D30C0; -extern s32 D_801D30CC; -extern s32 D_801D30D0; -extern void func_80158880(s32 *param); -extern void func_8015879C(s32 param_1); -extern void func_80158814(void *arg0); -extern void (*D_8018BD04[])(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_8018BCD8[]; -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_801D30C8; -extern void func_8015934C(void *arg0); -extern void func_801593E4(A801593E4 *a0); -extern void (*D_8018BF54[])(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_8018BD74[]; -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_8018BFF8[])(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_8018C14C[])(void); -extern void func_80159BAC(s32 a0); -extern s32 func_80172590(u8 *a0); -extern unsigned char D_8018BF68; -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_8018C154[])(void); -extern void func_8015A2A0(s32 a0); -extern int D_8018BF78; -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_8018BF98; -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_8018C15C[])(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_8018C184[])(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_8018C190[])(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_8018C004[])(void *); -extern s32 func_801725F4(u8 *a0); -extern void func_8015D104(void *arg0); -extern s32 D_8018C234; -extern void func_8015D380(s32 a0); -extern unsigned char D_8018B318[]; -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_8018C248[]; -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_8018C284[]; -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_8018C2CC; -extern u16 D_8018C2CE; -extern u16 D_8018C2D0; -extern s32 D_8018C2D4; -extern void func_80013E94(void *a0, void *a1); -extern void func_8015E4B0(s32 param_1); -extern void func_8013C9C4(void *a0); -extern s32 D_8018C2DC; -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_8018BFE8; -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_8018C360[]; -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_8018C410[])(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_8018C440[]; -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_8018C4A4; -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_801D30D8[]; -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_8018C4C8[])(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_801D3130[]; -extern void func_80162760(void); -extern void func_801627C0(void); -extern void (*D_8018C510[])(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_8018C500; -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_801D28E4[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_8018C518[])(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_8018C56C[])(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_8018C534; -extern s16 D_8018C568; -extern s16 D_8018C566; -extern s16 D_8018C564; -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_8018C578[])(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_801D3190; -extern u8 D_801D3191; -extern u8 D_801D3192; -extern u8 D_801D3193; -extern u8 D_801D3194; -extern u8 D_801D3195; -extern u8 D_801D3196; -extern u8 D_801D3197; -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_8018C588[])(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_801D31D0; -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_8018C5CC[])(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_8018C648[]; -extern s32 D_8018C668[]; -extern u8 D_8018C6E4[]; -extern u8 func_801656D0(s32 a0, s32 a1); -extern u8 D_8018C704[]; -extern u8 D_8018C724[]; -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_8018C7C0[])(void); -extern void func_80165B08(void); -extern void func_80165B10(void); -extern void func_80165B18(void); -extern void func_80165B20(void); -extern void (*D_8018C83C[])(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_801D28F4; -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_8018C848[])(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_8018C850[])(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_8018C918[])(void); -extern void func_80166618(void *a0); -extern void (*D_8018C928[])(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_8018C938[])(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_8018C944[])(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_8018C8A4[]; -extern u8 D_8018C8B8[]; -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_8018C95C[])(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_8018C964[])(void); -extern void func_801689D8(void *a0); -extern void func_80168A14(s32 *a0); -extern void func_80168A88(void); -extern void (*D_8018C96C[])(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_8018C974[])(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_8018C97C[])(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_8018C984[])(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_8018C98C[])(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_8018CA40[])(void); -extern void func_80169B80(void *a0); -extern void func_80169E44(s32 a0); -extern void (*D_8018CA48[])(void); -extern void func_80169F00(void *a0); -extern char D_8018C9F8[]; -extern char D_8018C9B8[]; -extern void func_80169F3C(int param_1); -extern void func_80169FE0(s32 a0); -extern void (*D_8018CA80[])(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_8018CA8C[])(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_8018CAD4[])(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_8018CB50[])(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_801D34F0; -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_8018CB44[]; -extern void func_8016B5C0(s32 param_1); -extern void func_8001CD9C(int, void *); -extern int *D_8018CB88[]; -extern unsigned short D_8018CB90[]; -extern unsigned short D_8018CB98[]; -extern unsigned char D_801D34F8[]; -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_801D34F0; -extern s32 func_8016BA68(s32, s32); -extern void func_8016BADC(void *a0, s32 a1, s32 a2); -extern void (*D_8018CBA0[])(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_801D362C; -extern M2C_UNK D_801D3630; -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_801D35B8; -extern void (*D_8018CBD0[])(void); -extern void func_8016C14C(void *a0); -extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_801D3634[]; -extern u8 D_801D363C[]; -extern u8 D_801D35EC[]; -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_8018CBD8[])(void); -extern void func_8016CB84(void *a0); -extern short func_8016CF04(s32 param_1, s32 param_2); -extern void (*D_8018CBF4[])(void); -extern void func_8016D19C(void *a0); -extern void (*D_8018CBFC[])(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_8018CC64[])(int); -extern void func_8016DA30(int param_1); -extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); -extern u8 D_8018CC08; -extern u8 D_8018CC14; -extern void func_8016DA7C(s32 param_1); -extern void func_8016DB34(s32 param_1); -extern void (*D_8018CC98[])(void); -extern void func_8016DEA4(void *a0); -extern void func_8016DEE0(s32 a0); -extern void (*D_8018CCA0[])(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_8018CCF4[])(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_8018CD28[]; -extern s32 func_8016EC0C(s32 a0, s32 a1); -extern void func_8016EAC0(Wave *param_1); -extern u8 D_8018CD18[]; -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_8018CD44; -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_8018CDBC[])(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_8018CDC4[])(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_8018CDCC[])(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_8018CDD4[])(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_8018CDDC[])(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_8018CDE4[])(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_8018CDF0[])(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_8018CDFC[])(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_8018CE08[])(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_8018CE18[])(void); -extern void func_8016FF30(void *a0); -extern void func_8016FFA8(u8 *a0); -extern void func_8016FF6C(u8 *a0); -extern void (*D_8018CE28[])(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_8018CE30[])(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_8018CE38[])(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_8018CE40[])(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_8018CE48[])(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_8018CE50[])(void); -extern void func_801704B0(void *a0); -extern void func_8017051C(void *a0); -extern void func_801704EC(u8 *a0); -extern void (*D_8018CE58[])(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_8018CE60[])(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_8018CE68[])(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_8018CE70[])(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_8018CE78[])(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_8018CE80[])(void); -extern void func_80170B14(int a0); -extern void func_80170B90(u8 *a0); -extern void (*D_8018CE88[])(void); -extern void func_80170BD8(void *a0); -extern void func_80170C44(u8 *a0); -extern void func_80170C14(u8 *a0); -extern void (*D_8018CE90[])(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_8018CE98[])(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_8018CEA0[])(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_8018CEA8[])(void); -extern void func_80170EFC(void *a0); -extern void func_80170F74(void *a0); -extern void func_80170F38(u8 *a0); -extern void (*D_8018CEB0[])(void); -extern void func_80170FB0(void *a0); -extern void func_80171028(void *a0); -extern void func_80170FEC(u8 *a0); -extern void (*D_8018CEB8[])(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_8018CEC0[])(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_8018CEC8[])(void); -extern void func_801711C0(void *a0); -extern void func_80171238(void); -extern void func_801711FC(u8 *param_1); -extern void (*D_8018CED0[])(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_8018CED8[])(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_8018CF1C[])(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_8018CEE0; -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_8018CF4C[])(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_8018CF88[])(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 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_8018CFE0[])(); -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_8018CFF0[])(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_8018CFF8[])(s32); -extern s32 func_80175218(void * param_1); -extern void func_801752BC(s32 *a0); -extern u8 D_8011F7A8; -extern u8 D_8011F7A9; -extern u8 D_8011F7AD; -extern u8 D_8011F7AE; -extern void func_80175494(void); -extern void (*D_8018D160[])(); -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_8018D16C[])(); -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_801D2B3C; -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_801D47D8; -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_801D3D70; -extern short D_801D484C; -extern void func_80178CBC(s32 arg0, s32 arg1); -extern void func_80178D18(void); -extern s32 func_80178D40(s32 arg0, s32 arg1); -extern void func_80179B28(s32 a0); -extern void func_80179B74(u16 *p); -extern void func_80179D30(u16 *a0); -extern void func_80179D78(u16 *a0); -extern void func_80179DCC(short a0); -extern void func_80179DF8(void); -extern void func_80179E1C(short a0); -extern void func_80179E48(s16 a0); -extern void func_80179E74(s16 a0); -extern void func_80179EA0(u16 *a0); -extern void func_80179EE8(short a0); -extern void func_80179F14(s16 a0, s16 a1); -extern void func_80179F44(void); -extern void func_80179F6C(short a0); -extern void func_80179F98(u16 *a0); -extern void func_80179FEC(u16 *a0); -extern void func_8017A040(u16 *a0); -extern s32 D_801D419C; -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_801D41C4; -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_801D4180; -extern s32 func_8017A3B0(void); -extern void func_80172310(u8*); -extern void func_80172780(void*); -extern void func_80172894(void*); -extern void func_801729B0(s32); -extern void func_80172B14(s16); -extern void func_80172C50(u16 *); -extern void func_80172D68(s32); -extern void func_801733FC(s16, u16 *); -extern void func_80173460(s32, s32); -extern void func_801734BC(s32, s32); -extern void func_801736B0(s32, s32); -extern void func_801737B8(s16); -extern void func_801738DC(s16); -extern void func_80173A28(s32, s32, s32, s32, s32, s32); -extern void func_80174438(s32); -extern void func_8017A4AC(void); -extern s32 func_8017AD0C(s32 arg0); -extern s32 func_8017AD0C(s32); -extern s32 func_8017ADE8(s32 a0); -extern s32 func_8017AE08(void); -extern void func_8017B0E4(int param_1, int param_2); -extern s16 D_801D4184; -extern u16 D_801D4204; -extern u16 D_801D4206; -extern u16 D_801D4208; -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_801D41FC; -extern s16 D_801D41FE; -extern s16 D_801D4200; -extern s16 D_801D41F4; -extern s16 D_801D41F6; -extern s16 D_801D41F8; -extern void func_8017B7A8(void); -extern s16 D_801D4214; -extern s16 D_801D4216; -extern s16 D_801D4218; -extern s16 D_801D421C; -extern s16 D_801D421E; -extern s16 D_801D4220; -extern void func_8017B824(void); -extern void func_8017B880(void); -extern s32 func_8017B8E8(s32 src); -extern short D_801D420C; -extern short D_801D420E; -extern short D_801D4210; -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_801D41A4; -extern SV4 D_801D41AC; -extern void func_8017BA3C(s32 param_1, s32 param_2); -extern s32 func_8017BB34(s32 param_1, s32 param_2); -extern void (*D_801D41CC[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_801D41C8)(void); -extern void func_8017BD50(int param_1); -extern void (*D_8018D348[])(void); -extern void func_8017BE60(void *a0); -extern void func_8017BE9C(void); -extern void func_8017BEA4(void); -extern void func_8017BEAC(void); -extern void func_8017BEB4(void); -extern void (*D_8018D354[])(void); -extern void func_8017BEE4(void *a0); -extern void func_8017BF98(void); -extern void (*D_8018D360[])(void); -extern void func_8017BFC8(void *a0); -extern void func_8017C07C(void); -extern void (*D_8018D420[])(void); -extern void func_8017C0C8(void *a0); -extern void func_8017C154(); -extern void func_8017C12C(void); -extern void func_8017C14C(void); -extern void (*D_8018D460[])(void); -extern void func_8017C664(void *a0); -extern void (*D_8018D480[])(void); -extern void func_8017CE54(void *a0); -extern void (*D_8018D490[])(void); -extern void func_8017D0DC(void *a0); -extern void (*D_8018D49C[])(void); -extern void func_8017D63C(void *a0); -extern void (*D_8018D620[])(void); -extern void func_8017DB00(void *a0); -extern void func_8017DB74(u8 *a0); -extern void func_8017DD74(void); -extern void func_8017DF7C(void); -extern void (*D_8018D920[])(void); -extern void func_8017E898(void *a0); -extern void (*D_8018D95C[])(void); -extern void func_8017EF6C(void *a0); -extern void func_8017F16C(u8 *p); -extern void (*D_8018D964[])(void); -extern void func_8017F200(void *a0); -extern s32 func_800D222C(s32 a0, void *a1, s32 a2); -extern s32 func_8001CF30(void *a0); -extern u8 D_8018D950; -extern void func_8017F23C(s32 a0); -extern void (*D_8018DA1C[])(void); -extern void func_8017F344(void *a0); -extern void func_8017F49C(void); -extern void func_8017F4A4(void); -extern s16 func_8017F4E8(void); -extern void func_8017FB84(s32 arg0); -extern void func_80180A64(s32 arg0, s32 arg1, s32 arg2, s32 arg3); -extern void (*D_8018DD98[])(void); -extern void func_8018165C(void *a0); -extern void func_801819C4(void); -extern s32 func_80181698(s32 a0); -extern s32 func_801816DC(void); -extern void (*D_8018DDA0[])(void); -extern void func_80181700(void *a0); -extern void func_801819EC(void); -extern s32 func_8018173C(s32 a0); -extern void (*D_8018DDA8[])(void); -extern void func_80181780(void *a0); -extern void func_80181A14(void); -extern s32 func_801817BC(s32 a0); -extern s32 func_801817FC(u8 *a0); -extern s32 func_800D1EBC(void); -extern void func_8018188C(void); -extern void (*D_8018DDB4[])(void); -extern void func_801818AC(void *a0); -extern void func_80181A3C(void); -extern s32 func_801818E8(s32 a0); -extern void func_8001BFD0(void); -extern void func_800D1E28(void); -extern s32 func_80181928(u8 *a0); -extern void func_801819A4(void); -extern M2C_UNK D_8018DDC0; -extern M2C_UNK D_8018DDCC; -extern M2C_UNK D_8018DDE4; -extern void func_8012A094(s32 a0); -extern void func_80181B08(void *a0); -extern void func_80181A64(void); -extern void (*D_8018DDF0[])(void); -extern int func_80012C6C(int a0, int a1, int a2); -extern int func_80012ABC(int a0, int a1, int a2); -extern void func_80049CAC(int a0, int a1); -extern void func_8012F14C(int a0, int a1, int a2); -extern void func_80181C78(int param_1, short *param_2, short *param_3); -extern void (*D_8018DE08[])(void); -extern void func_80181E1C(void *a0); -extern void func_8012C1B8(void); -extern void func_8012CAE4(void *a0); -extern void func_8001C214(s32 a0, s32 a1); -extern s32 func_8012C194(void); -extern void func_8018276C(s32 a0); -extern s32 func_8012AD50(void *a0); -extern void func_8001CA1C(s32 a0, s32 a1); -extern s32 func_8012A828(void *a0, void *a1); -extern void func_8012AD44(s32 *a0, s16 a1); -extern u8 D_801C6410; -extern u8 D_8018DE14; -extern s32 D_801D42F8; -extern u8 D_8018DE20; -extern u8 D_8018DE70; -extern u8 D_8018DE50; -extern u8 D_8018DF4C; -extern void func_80181E58(void *a0); -extern s32 D_801D4300; -extern s32 func_8012BEE8(s32 a0); -extern s32 func_8018219C(); -extern s32 func_80183178(void); -extern void func_8013CABC(void); -extern void func_8018226C(s32 a0); -extern void func_80182904(void *a0); -extern void func_8018201C(s32 a0); -extern u16 D_800B99D8; -extern s32 func_80132EF4(s32 a0, s32 a1); -extern s32 func_8018219C(s32 arg0); -extern s32 func_8012A828(void*, void*); -extern void func_8018295C(void *a0); -extern void func_80182380(s32 a0); -extern void func_8012B200(u8*); -extern void func_80182988(s32*); -extern void func_801823F8(void *arg0); -extern s32 func_8018248C(s32 arg0); -extern s32 func_801439C0(s32 a0); -extern void func_801292C8(u8 *a0); -extern void func_8012B200(u8 *a0); -extern void func_801824A0(int a0); -extern s32 func_801831D0(void); -extern void func_80182570(void); -extern void func_8013CAE8(void); -extern void func_80182590(void); -extern void (*D_8018E0E4[])(void); -extern void func_801825B0(void *a0); -extern u8 D_8018E10C[]; -extern void (*D_8018E014[])(void); -extern s32 func_8001AAA0(s32); -extern void func_801825EC(s32 a0); -extern void func_80182704(void *a0); -extern void func_8012AD80(s32 a0); -extern void func_80182714(s32 a0); -extern int func_801827A0(int a0, void* a1); -extern s32 *D_80126B78; -extern s32 *D_80126B90; -extern s32 func_8018283C(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_8017BEBC(void); -extern void func_801828A4(void); -extern s32 func_8017BFA0(void); -extern void func_801828C4(void); -extern void func_800D0C48(int); -extern void func_801828E4(void); -extern void func_80182910(void *a0); -extern void func_8018291C(void); -extern void func_8002D4C8(s32 arg0, s32 arg1); -extern void func_80182988(s32 *a0); -extern void func_801829E4(); -extern void (*D_8018E134[])(int); -extern void func_80182998(int param_1); -extern void func_80129350(s32 *a0, s32 a1); -extern void func_80133060(s32 *a0, s32 a1, s32 a2); -extern void func_801829E4(s32 *a0); -extern void func_8012C588(s32 a0, s32 a1); -extern s16 D_801C5E24[]; -extern s32 D_8018DDF8[]; -extern void func_80182A34(void *a0); -extern void func_80182ADC(void); -extern void func_80182AE4(void); -extern void func_80182AEC(void *arg0); -extern void func_80182380(); -extern void func_80182704(void*); -extern void func_80185FD4(void); -extern void func_80182B18(s32 *a0); -extern void func_80182BC4(); -extern void func_8018244C(s32 a0); -extern void func_80182C34(s32 arg0); -extern void func_80182CC4(int param_1); -extern void func_80182550(void *arg0); -extern void func_80182D14(s32 a0); -extern void func_80182DC4(); -extern void func_8012C218(void *a0); -extern void func_80182E38(void *param_1); -extern void func_80182E88(s32 a0); -extern void func_80182F44(void); -extern void func_80182FAC(void); -extern void func_80182FCC(); -extern void func_8018302C(void *a0); -extern u8 D_801D4304; -extern u8 D_801D4305; -extern u8 D_801D4306; -extern void func_801830C4(void *a0); -/* ==== end §8b carried decl layer ==== */ - - - extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); - extern u8 D_800AF058; - s32 func_80183178(void) { - s32 ret; - ret = func_8001ABBC(0, 0, &D_800AF058, 0, 0); - return ret; - } - - - - -extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AF068; - -s32 func_801831D0(void) { - s32 ret; - - ret = func_8001ABBC(0, 0, &D_800AF068, 0, 0); - return ret; -} - - - -extern s32 func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 sp10); -extern u8 D_800AF060; - -s32 func_80183228(void) { - s32 ret; - - ret = func_8001ABBC(0, 0, &D_800AF060, 0, 0); - return ret; -} - - -typedef struct { u8 unk0[2]; u16 unk2; } Ent_80183280; - -extern void (*D_8018E14C[])(Ent_80183280 *); - -void func_80183280(Ent_80183280 *arg) { - D_8018E14C[arg->unk2](arg); -} - - -extern void func_8013C0F8(s32 a0); -extern s32 func_80029178(s32 arg); -extern void func_8013373C(s32 a0); - -typedef struct { - u8 pad0[2]; - u16 f2; - u8 pad1[0xD8]; - u16 fDC; - u16 mid; - union { - u32 w; - s16 h[2]; - } uE0; - u32 fE4; - u16 fE8; -} Ent_832E0; - -void func_801832E0(Ent_832E0 *param_1) -{ - - extern s32 D_801B5D38; - extern s32 D_801B86B4; - func_8013C0F8((s32)&D_801B5D38); - func_8013C0F8((s32)&D_801B86B4); - param_1->fDC = 0; - param_1->uE0.w = 0; - param_1->fE4 = 0; - param_1->fE8 = 0; - if ((func_80029178(0xB8) & 0xFF) == 0) { - param_1->f2++; - } else { - func_8013373C(0); - param_1->uE0.h[1] = -0xF7; - param_1->f2 = 4; - } -} - - -void func_801833C4(s32 arg0) -{ - extern u8 D_801D47E0[]; - extern u8 D_801B5D38[]; - extern u8 D_801B86B4[]; - extern s32 D_801270C8; - - typedef struct { - u8 pad0[2]; - union { s16 s; u16 u; } f02; - u8 pad1[0xD8]; - union { s16 s; u16 u; } fDC; - u8 pad2[4]; - s16 fE2; - u8 pad3[2]; - s16 fE6; - u8 pad4[4]; - u16 fEC; - u16 fEE; - } St; - -#define P ((St *)arg0) - - func_80180A64(D_801D47E0, D_801B5D38, P->fDC.s, P->fE2); - func_80180A64(D_801D47E0, D_801B86B4, P->fDC.s, P->fE6); - P->fDC.u = P->fDC.u + 8; - if (D_801270C8 != 0) { - func_8002D4C8(0x77B, 0); - P->fEC = 1; - P->fEE = 0x3C; - P->f02.u++; - } -} - - -#define P ((St *)arg0) - - -void func_801834DC(s32 arg0) -{ - extern u8 D_801D47E0[]; - extern u8 D_801B5D38[]; - extern u8 D_801B86B4[]; - extern s32 (*D_8018A0C4[])(void *); - extern u16 D_800B99DC; - - typedef struct { - u8 pad0[2]; - union { s16 s; u16 u; } f02; - u8 pad1[0xD8]; - union { s16 s; u16 u; } fDC; - u8 pad2[4]; - s16 fE2; - u8 pad3[2]; - s16 fE6; - u8 pad4[4]; - s16 fEC; - s16 fEE; - } St; - -#define P ((St *)arg0) - - func_80180A64(D_801D47E0, D_801B5D38, P->fDC.s, P->fE2); - func_80180A64(D_801D47E0, D_801B86B4, P->fDC.s, P->fE6); - if (--P->fEC == 0) { - func_8013C9C4(D_8018A0C4); - P->fEC = (D_800B99DC & 7) + 3; - } - if (--P->fEE == 0) { - P->f02.u++; - } -} - - -extern s32 D_801D47E0; -extern s32 D_801B5D38; -extern s32 D_801B86B4; -extern s32 D_801270C8; -extern void func_8013373C(s32 a0); - -typedef struct { - u8 pad0[2]; - u16 f002; - u8 pad1[0xD8]; - struct { - s16 f0DC; - u16 f0DE; - union { - struct { s32 f0E0; s32 f0E4; } l; - struct { u8 p[2]; s16 f0E2; u8 q[2]; s16 f0E6; } h; - } u; - u16 f0E8; - } f; -} Work_80183634; - -void func_80183634(Work_80183634 *work) -{ - func_80180A64(&D_801D47E0, &D_801B5D38, work->f.f0DC, work->f.u.h.f0E2); - func_80180A64(&D_801D47E0, &D_801B86B4, work->f.f0DC, work->f.u.h.f0E6); - work->f.u.l.f0E0 = work->f.u.l.f0E0 + -0x252E5; - work->f.u.l.f0E4 = work->f.u.l.f0E4 + 0x168D6; - work->f.f0DC = work->f.f0DC + 0xC; - if ((s16)(++work->f.f0E8) >= 0x6A) { - func_8002D4C8(4, 0x77B); - D_801270C8 = 2; - func_8013373C(0); - ++work->f002; - } -} - - -void func_801837B0(s32 arg0) -{ - typedef struct { - u8 _[0xDC]; - s16 fDC; - u8 _2[4]; - s16 fE2; - } Args_801837B0; - typedef struct { - u8 _[0xDC]; - u16 fDC; - } Rmw_801837B0; - - extern s32 D_801D47E0; - extern s32 D_801B5D38; - extern void func_80180A64(s32 arg0, s32 arg1, s32 arg2, s32 arg3); - - func_80180A64(&D_801D47E0, &D_801B5D38, - ((Args_801837B0 *)arg0)->fDC, - ((Args_801837B0 *)arg0)->fE2); - ((Rmw_801837B0 *)arg0)->fDC += 7; -} - - - -/* func_80183830 @ 0x80183830 — an -O0 function stranded at the _o0d region's END boundary: it is - * the FIRST function of the -O2 ov_SC03_119_jr_80183830 object, but its target carries the -O0 - * prologue tell, so it can only bank in an -O0 object. _o0d is -O0-compiled and its .text ends - * exactly here, so this def lands at its true address with NO splat change — the edit is ATOMIC - * ACROSS TWO FILES (append here, drop the INCLUDE_ASM there) so the object sizes cancel and no - * address moves. Mechanically remapped from the banked twin ov_SC03_014:0x801842E0 (2 per-overlay - * symbols substituted). P31 S68; same shape as func_801457A4 at the whale's end boundary (§362). */ - - -extern s32 D_801270C8; - -s32 func_80183830(void) { - if (D_801270C8 == 0) { - D_801270C8 = 1; - } else if (D_801270C8 == 2) { - return 1; - } - return 0; -}