Files
BFM-decomp/src/ov_SC06_014/ov_SC06_014_o0c.c
T

1153 lines
39 KiB
C

#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_8019EFC8;
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_801801C8[])(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_801A0144;
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_8019EFC8;
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_8017FF04)();
extern s16 (*D_8017FF08)();
extern M2C_UNK (*D_8017FF10)();
extern s32 (*D_8017FF14)();
extern s32 D_801A0140;
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_8019EFCC;
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_8018025C;
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_80183740;
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_80180274;
extern M2C_UNK D_8018027C;
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_80180284;
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_801802A0[];
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_801802AC[];
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_801802C0[])(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_80180310[];
extern s16 D_80180340[];
extern s16 D_801803A0[];
extern s16 D_801803A8[];
extern s16 D_801803C8[];
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_80180400[])(struct S80131E00 *a0);
extern void func_80131E38(u8 *a0);
extern void func_80131E7C(s32 a0);
extern void func_80131EE4(void);
extern void (*D_80180458[])(void);
extern void func_80131EEC(void *a0);
extern void (*D_801804A0[])(void);
extern void func_80131F28(void *a0);
extern void (*D_801804A8[])(void);
extern void func_80131F64(void *a0);
extern void (*D_801804B0[])(void);
extern void func_80131FA0(void *a0);
extern void (*D_801804B8[])(void);
extern void func_80131FDC(void *a0);
extern void func_801320D0(void);
extern void func_8001C214(int, int);
extern int D_80180460;
extern void func_801320D8(int param_1);
extern s32 func_80132144(s32 param_1);
extern int D_80180480;
extern void func_801321B0(int param_1);
extern int D_80180490;
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_801A01B0;
extern s32 D_801A01B4[];
extern int D_801A01B8;
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_801804C4;
extern u8 D_801804C0;
extern s16 *D_801804C8;
extern u8 D_801804CC;
extern int D_801A01B0;
extern u16 D_801A01C0;
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_801804C8; /* holds a pointer value (*(u16**)&D_801804C8) */
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_801804DC[])(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_80180530;
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_80180534[])(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_80180578;
extern u8 D_801805BC;
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_80180600[]; /* 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_80180678, D_8018067A, D_8018067C, D_8018067E, D_80180680, D_80180682;
extern u16 D_800D45F6;
/* ==== end §8b carried decl layer ==== */
void func_8013B568(s32 arg0) {
extern s32 D_80180684;
D_80180684 = arg0;
}
/* func_8013B598 (ov_SC01_077_o0, -O0): fills entry a0 of the 0x1C-stride table at
* D_801A14F8 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_801A14F8[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_801A14F8)[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_801A14F8[];` (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_801A14F8 (conflicting types).
*
* 66/66 instructions byte-identical (match_one --o0).
*/
void func_8013B598(s32 a0, u16 *a1) {
extern Spr_8013B598_8013B598 D_801A14F8[];
D_801A14F8[a0].f0 = 1;
D_801A14F8[a0].f4 = ((Src_8013B598_8013B598 *)a1)->f0;
D_801A14F8[a0].f6 = ((Src_8013B598_8013B598 *)a1)->f2;
D_801A14F8[a0].f8 = ((Src_8013B598_8013B598 *)a1)->f4;
D_801A14F8[a0].fC = 0x100;
}
void func_8013B6A0(s32 idx, u16 *src, s32 val)
{
extern Ent_8013B6A0_8013B6A0 D_801A14F8[];
D_801A14F8[idx].f0 = 1;
D_801A14F8[idx].f4 = ((Src_8013B6A0_8013B6A0 *)src)->f0;
D_801A14F8[idx].f6 = ((Src_8013B6A0_8013B6A0 *)src)->f2;
D_801A14F8[idx].f8 = ((Src_8013B6A0_8013B6A0 *)src)->f4;
D_801A14F8[idx].fC = val;
}
/* sizeof 0x1C stride */
void func_8013B7AC(int a0) {
extern E_3B7AC_8013B7AC D_801A14F8[];
D_801A14F8[a0].f0 = 0; }
void func_8013B7F4(s32 a0, s32 a1) {
extern s32 D_801A1614;
func_8013B83C(a0, a1, D_801A1614);
}
extern s32 D_801A15B0;
extern s32 D_801A1614;
void func_8013B83C(s32 a0, s32 a1, s32 a2) {
/* sizeof 0x1C */
extern Ent_8013B83C D_801DAA08_e[] __asm__("D_801A14F8");
extern s32 D_801A1594;
extern s32 D_801A1598;
extern s32 D_801A159C;
extern s32 D_801A15C0;
extern s32 D_801A1610;
extern s32 D_801A1618;
extern s16 D_800B9A0E;
extern void func_80052D90(s32 a0, void *a1);
extern void func_8013C08C(void *a0, s32 a1);
s32 i;
D_801A15B0 = 0;
D_801A159C = 0;
D_801A1598 = 0;
D_801A1594 = 0;
func_80052D90(0, &D_801A15C0);
if (a0 == 0) {
return;
}
D_801A1610 = a2 + 500;
D_801A1614 = 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_801A15B0, a0);
} else {
func_8013BD74(&D_801A15B0, a1);
}
D_801A1618 = 0;
break;
case 0x43:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 1;
break;
case 0x44:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 2;
break;
case 0x45:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 3;
break;
case 0x46:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 4;
break;
case 0x47:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 5;
break;
case 0x48:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 6;
break;
case 0x49:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 9;
break;
case 0x4A:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 0xC;
break;
case 0x4B:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 0xD;
break;
case 0x4C:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 0xE;
break;
case 0x4D:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 0xF;
break;
case 0x4E:
func_8013C08C(&D_801A15B0, a0);
D_801A1618 = 0x10;
break;
}
}
void func_8013BC7C(void *arg0) {
extern void (*D_8017FEE8[])(void *);
D_8017FEE8[((S_8013BC7C_8013BC7C *)arg0)->f68](arg0);
}
/* func_8013BCDC (ov_SC01_077_o0, -O0): guarded indirect call through D_80180684.
* D_80180684 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_80180684;
s32 pad[4];
if (D_80180684 != 0) {
((void (*)(void))D_80180684)();
}
}
void func_8013BD34(s32 a0) {
extern s32 D_801A15B0;
func_8013BD74(&D_801A15B0, a0);
}
extern s16 D_801A14B8;
extern s16 D_801A14BA;
extern s16 D_801A14BC;
extern s16 D_801A14BE;
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_801A14B8 = -0xA0;
D_801A14BA = -0x78;
D_801A14BC = 0x140;
D_801A14BE = 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_801A15B0;
D_801A15B0 = 1;
}
void func_8013C964(void) {
extern s32 D_801A15B0;
D_801A15B0 = 0;
}