Files
BFM-decomp/src/shared/engine_core.h
T
Drew T d593ee20fe feat(phase-18): Step-3b calibration — §17-toolkit wave banks 9 reach-134 matches (55.58->55.94%)
- upgraded harvest wave (.run/harvest_wave_3b.js) teaches the §17 TOOLKIT: triage the
  match_one diff -> reconstruct / array-decay / register-pins+barrier (instead of stubbing
  the regalloc tail). Calibration: 16 fresh tractable reach-134 targets.
- whole-binary close-rate 9/16 = 56% (vs Phase-17 baseline 33%): 2 via register pins
  (func_8012CB64, func_801468C8), 2 via array-decay (func_80149544, func_80149584),
  5 via clean reconstruction. Each reach-134 -> propagated x134 (config/dedup.us.yaml +9).
- FINDING (R16 flywheel): the match_one->gate gap (12->6 then ->9) is the §3a call-site
  CASTS the agents skipped + sig_unify narrowing the extern to canonical -> conflict.
  Recovered 3 by call-site arity-cast / void-return cast (codegen-neutral). Step-1 prompt
  must teach call-site casts + re-validate after sig_unify.
- make check-all 136/136 byte-identical (R22); dedup-check 1432 validated, 0 failed;
  0 NON_MATCHING in any default build (G4).
2026-06-20 13:40:11 -06:00

17397 lines
518 KiB
C

/* src/shared/engine_core.h — Phase 15 shared engine-core bodies (cross-overlay dedup, §14).
* Each DEFINE_func_XXXX() expands to the WHOLE matched body once; instantiated in place at the
* func_XXXX site in every overlay that shares it (address order preserved). Registry +
* byte-honesty: config/dedup.us.yaml + tools/dedup_integrate.py. Tool-generated; do not hand-edit. */
#ifndef SHARED_ENGINE_CORE_H
#define SHARED_ENGINE_CORE_H
#include "common.h"
#include "engine_types.h" /* shared engine struct/union types (§14c struct follow-up) */
#define DEFINE_func_80128EA8() \
void func_80128EA8(s32 a0, s32 a1, s32 a2) { \
*(s32 *)(a1 + 0x0) = a2; /* sw a2, 0x0(a1) */ \
*(s16 *)(a1 + 0x4) = 0; /* sh zero, 0x4(a1) */ \
*(s16 *)(a1 + 0x6) = (*(s32 *)(a2 + 0x4)) & 0x3F; /* lw; andi 0x3F; sh 0x6(a1) */ \
*(s16 *)(a0 + 0x28) = *(u16 *)(a2 + 0x0); /* lhu 0x0(a2); sh 0x28(a0) */ \
*(s16 *)(a0 + 0x2A) = *(u16 *)(a2 + 0x2); /* lhu 0x2(a2); sh 0x2A(a0) */ \
}
#define DEFINE_func_8012A568() \
extern void func_8012A598(void *a0); \
void func_8012A568(void (*a0)(void)) { \
func_8012A598(a0); \
a0(); \
}
#define DEFINE_func_80132EC4() \
void func_80132EC4(void *a0, s16 a1) { \
while (*(s32 *)a0 != 0) { \
*(s16 *)((s32)a0 + 4) = a1; \
a0 = (void *)((s32)a0 + 8); \
} \
}
#define DEFINE_func_80138C30() \
void func_80138C30(void *a0) { \
if (*(s16 *)((s32)a0 + 4) == 4) { \
*(s16 *)((s32)a0 + 4) = 2; \
} else { \
*(u32 *)((s32)a0 + 8) |= 0x800; \
} \
}
#define DEFINE_func_8012D3AC() \
void func_8012D3AC(void) { \
}
#define DEFINE_func_8012D5DC() \
void func_8012D5DC(void) { \
}
#define DEFINE_func_8012DFCC() \
void func_8012DFCC(void) { \
}
#define DEFINE_func_8012E284() \
void func_8012E284(void) { \
}
#define DEFINE_func_80131EE4() \
void func_80131EE4(void) { \
}
#define DEFINE_func_801320D0() \
void func_801320D0(void) { \
}
#define DEFINE_func_8013277C() \
void func_8013277C(void) { \
}
#define DEFINE_func_80136C3C() \
void func_80136C3C(void) { \
}
#define DEFINE_func_80136C44() \
void func_80136C44(void) { \
}
#define DEFINE_func_80136C4C() \
void func_80136C4C(void) { \
}
#define DEFINE_func_80136D00() \
void func_80136D00(void) { \
}
#define DEFINE_func_80136EC4() \
void func_80136EC4(void) { \
}
#define DEFINE_func_80139DEC() \
void func_80139DEC(void) { \
}
#define DEFINE_func_8013A378() \
void func_8013A378(void) { \
}
#define DEFINE_func_80141C04() \
void func_80141C04(void) { \
}
#define DEFINE_func_801427DC() \
void func_801427DC(void) { \
}
#define DEFINE_func_801427E4() \
void func_801427E4(void) { \
}
#define DEFINE_func_80142C7C() \
void func_80142C7C(void) { \
}
#define DEFINE_func_80143EA4() \
void func_80143EA4(void) { \
}
#define DEFINE_func_80143EAC() \
void func_80143EAC(void) { \
}
#define DEFINE_func_80143EB4() \
void func_80143EB4(void) { \
}
#define DEFINE_func_80144A90() \
void func_80144A90(void) { \
}
#define DEFINE_func_801458E0() \
void func_801458E0(void) { \
}
#define DEFINE_func_80146074() \
void func_80146074(void) { \
}
#define DEFINE_func_80146C98() \
void func_80146C98(s32 *a0, s16 a1) { \
*(s16*)((s32)a0 + 0x2) = a1; \
}
#define DEFINE_func_80146E90() \
void func_80146E90(s32 *a0, s32 a1) { \
*(s32*)((s32)a0 + 0x1C) = a1; \
}
#define DEFINE_func_8014704C() \
void func_8014704C(s32 *a0) { \
*(s8*)((s32)a0 + 0x4C) = 0; \
}
#define DEFINE_func_80147084() \
void func_80147084(s32 *a0) { \
*(s8*)((s32)a0 + 0x221) = 0; \
}
#define DEFINE_func_80147098() \
void func_80147098(s32 *a0) { \
*(s8*)((s32)a0 + 0x220) = 0; \
}
#define DEFINE_func_801470AC() \
void func_801470AC(s32 *a0) { \
*(s8*)((s32)a0 + 0x222) = 0; \
}
#define DEFINE_func_80148C18() \
s32 func_80148C18(void) { \
return 0; \
}
#define DEFINE_func_80148C7C() \
s32 func_80148C7C(void) { \
return 0; \
}
#define DEFINE_func_80148CE4() \
s32 func_80148CE4(void) { \
return 0; \
}
#define DEFINE_func_80148CEC() \
s32 func_80148CEC(void) { \
return 0; \
}
#define DEFINE_func_80148D3C() \
s32 func_80148D3C(void) { \
return 0; \
}
#define DEFINE_func_80148F60() \
s32 func_80148F60(void) { \
return -1; \
}
#define DEFINE_func_80148F98() \
s32 func_80148F98(void) { \
return -1; \
}
#define DEFINE_func_80148FD0() \
s32 func_80148FD0(void) { \
return -1; \
}
#define DEFINE_func_80148FD8() \
s32 func_80148FD8(void) { \
return -1; \
}
#define DEFINE_func_80149004() \
s32 func_80149004(void) { \
return -1; \
}
#define DEFINE_func_801490E0() \
void func_801490E0(s32 *a0, s16 a1) { \
*(s16*)((s32)a0 + 0x108) = a1; \
}
#define DEFINE_func_801490E8() \
void func_801490E8(s32 *a0, s16 a1) { \
*(s16*)((s32)a0 + 0x10A) = a1; \
}
#define DEFINE_func_801490F0() \
void func_801490F0(s32 *a0, s16 a1) { \
*(s16*)((s32)a0 + 0x10C) = a1; \
}
#define DEFINE_func_80149FA8() \
void func_80149FA8(void) { \
}
#define DEFINE_func_8014B5B0() \
void func_8014B5B0(s32 *a0) { \
*(s8*)((s32)a0 + 0x1C4) = 0; \
}
#define DEFINE_func_8014B5D0() \
void func_8014B5D0(s32 *a0) { \
*(s8*)((s32)a0 + 0x1C7) = 0; \
}
#define DEFINE_func_8014BDE0() \
void func_8014BDE0(void) { \
}
#define DEFINE_func_80150B9C() \
void func_80150B9C(void) { \
}
#define DEFINE_func_80150F78() \
void func_80150F78(void) { \
}
#define DEFINE_func_801510B8() \
void func_801510B8(void) { \
}
#define DEFINE_func_801510C0() \
void func_801510C0(void) { \
}
#define DEFINE_func_80151130() \
void func_80151130(void) { \
}
#define DEFINE_func_8015115C() \
void func_8015115C(s32 *a0, s16 a1) { \
*(s16*)((s32)a0 + 0x16C) = a1; \
}
#define DEFINE_func_80151878() \
void func_80151878(void) { \
}
#define DEFINE_func_80155F58() \
void func_80155F58(void) { \
}
#define DEFINE_func_80156A14() \
void func_80156A14(s32 *a0) { \
*(s8*)((s32)a0 + 0xDA) = 0; \
}
#define DEFINE_func_801585A4() \
void func_801585A4(s32 *a0) { \
*(s16*)((s32)a0 + 0x244) = 0; \
}
#define DEFINE_func_80158794() \
void func_80158794(void) { \
}
#define DEFINE_func_80159874() \
s32 func_80159874(void) { \
return 0; \
}
#define DEFINE_func_80159A18() \
void func_80159A18(void) { \
}
#define DEFINE_func_8015C6A4() \
void func_8015C6A4(void) { \
}
#define DEFINE_func_8015CBCC() \
void func_8015CBCC(void) { \
}
#define DEFINE_func_8015CBD4() \
void func_8015CBD4(void) { \
}
#define DEFINE_func_8015CBDC() \
void func_8015CBDC(void) { \
}
#define DEFINE_func_8015CBE4() \
void func_8015CBE4(void) { \
}
#define DEFINE_func_8015CBEC() \
void func_8015CBEC(void) { \
}
#define DEFINE_func_8015CBF4() \
void func_8015CBF4(void) { \
}
#define DEFINE_func_8015CBFC() \
void func_8015CBFC(void) { \
}
#define DEFINE_func_8015CC04() \
void func_8015CC04(void) { \
}
#define DEFINE_func_8015EF9C() \
void func_8015EF9C(void) { \
}
#define DEFINE_func_8016032C() \
void func_8016032C(void) { \
}
#define DEFINE_func_801610FC() \
void func_801610FC(void) { \
}
#define DEFINE_func_80162CC4() \
void func_80162CC4(void) { \
}
#define DEFINE_func_80164410() \
void func_80164410(void) { \
}
#define DEFINE_func_80165A18() \
void func_80165A18(void) { \
}
#define DEFINE_func_80165B08() \
void func_80165B08(void) { \
}
#define DEFINE_func_80165B10() \
void func_80165B10(void) { \
}
#define DEFINE_func_80165B18() \
void func_80165B18(void) { \
}
#define DEFINE_func_80165B20() \
void func_80165B20(void) { \
}
#define DEFINE_func_80167AD8() \
void func_80167AD8(void) { \
}
#define DEFINE_func_8016F4F4() \
void func_8016F4F4(void) { \
}
#define DEFINE_func_80171A80() \
void func_80171A80(s32 *a0, s32 a1) { \
*(s32*)((s32)a0 + 0x200) = a1; \
}
#define DEFINE_func_80171B44() \
void func_80171B44(s32 *a0) { \
*(s8*)((s32)a0 + 0x20C) = 0; \
}
#define DEFINE_func_80172588() \
void func_80172588(s32 *a0) { \
*(s32*)((s32)a0 + 0x1F4) = 0; \
}
#define DEFINE_func_8017288C() \
void func_8017288C(void) { \
}
#define DEFINE_func_801729A8() \
void func_801729A8(void) { \
}
#define DEFINE_func_80172B0C() \
void func_80172B0C(void) { \
}
#define DEFINE_func_80172C48() \
void func_80172C48(void) { \
}
#define DEFINE_func_80172D60() \
void func_80172D60(void) { \
}
#define DEFINE_func_80172E8C() \
void func_80172E8C(void) { \
}
#define DEFINE_func_8017316C() \
void func_8017316C(void) { \
}
#define DEFINE_func_80173294() \
void func_80173294(void) { \
}
#define DEFINE_func_801736A8() \
void func_801736A8(void) { \
}
#define DEFINE_func_801737B0() \
void func_801737B0(void) { \
}
#define DEFINE_func_801738D4() \
void func_801738D4(void) { \
}
#define DEFINE_func_80173A20() \
void func_80173A20(void) { \
}
#define DEFINE_func_80174274() \
void func_80174274(void) { \
}
#define DEFINE_func_80174354() \
void func_80174354(void) { \
}
#define DEFINE_func_80174430() \
void func_80174430(void) { \
}
#define DEFINE_func_80174524() \
void func_80174524(void) { \
}
#define DEFINE_func_8017481C() \
void func_8017481C(void) { \
}
#define DEFINE_func_801748E4() \
void func_801748E4(void) { \
}
#define DEFINE_func_80175798() \
void func_80175798(void) { \
}
#define DEFINE_func_8017BE9C() \
void func_8017BE9C(void) { \
}
#define DEFINE_func_8017BEA4() \
void func_8017BEA4(void) { \
}
#define DEFINE_func_8017BEAC() \
void func_8017BEAC(void) { \
}
#define DEFINE_func_8017BEB4() \
void func_8017BEB4(void) { \
}
#define DEFINE_func_8012AD44() \
void func_8012AD44(s32 *a0, s16 a1) { \
*(s16*)((s32)a0 + 0x2) = a1; \
*(s16*)((s32)a0 + 0x34) = 0; \
}
#define DEFINE_func_8013A8B0() \
void func_8013A8B0(s32 *a0) { \
*(s16*)((s32)a0 + 0x0) = 0; \
*(s32*)((s32)a0 + 0x4) = 0; \
}
#define DEFINE_func_80142DB8() \
s32 func_80142DB8(s32 *a0) { \
return *(u16*)((s32)a0 + 0x5C) & 0x1; \
}
#define DEFINE_func_80147078() \
void func_80147078(s32 *a0, s16 a1) { \
*(s16*)((s32)a0 + 0x0) = a1; \
*(s16*)((s32)a0 + 0x2) = 0; \
}
#define DEFINE_func_801487F4() \
u16 func_801487F4(s32 *a0) { \
return *(u16*)((s32)a0 + 0xAA); \
}
#define DEFINE_func_80148800() \
u16 func_80148800(s32 *a0) { \
return *(u16*)((s32)a0 + 0xAC); \
}
#define DEFINE_func_8014880C() \
u8 func_8014880C(s32 *a0) { \
return *(u8*)((s32)a0 + 0xAE); \
}
#define DEFINE_func_80148818() \
u16 func_80148818(s32 *a0) { \
return *(u16*)((s32)a0 + 0xAE) >> 8; \
}
#define DEFINE_func_80148F68() \
s32 func_80148F68(s32 a0) { \
return (s16)a0; \
}
#define DEFINE_func_80148F74() \
s32 func_80148F74(s32 a0) { \
return (a0 + 0x400) & 0xFFF; \
}
#define DEFINE_func_80148F80() \
s32 func_80148F80(s32 a0) { \
return (a0 + 0x200) & 0xFFF; \
}
#define DEFINE_func_80148F8C() \
s32 func_80148F8C(s32 a0) { \
return (a0 + 0x800) & 0xFFF; \
}
#define DEFINE_func_80148FA0() \
s32 func_80148FA0(s32 a0) { \
return (a0 + 0x600) & 0xFFF; \
}
#define DEFINE_func_80148FAC() \
s32 func_80148FAC(s32 a0) { \
return (a0 + 0x400) & 0xFFF; \
}
#define DEFINE_func_80148FB8() \
s32 func_80148FB8(s32 a0) { \
return (a0 - 0x400) & 0xFFF; \
}
#define DEFINE_func_80148FC4() \
s32 func_80148FC4(s32 a0) { \
return (a0 - 0x200) & 0xFFF; \
}
#define DEFINE_func_80148FE0() \
s32 func_80148FE0(s32 a0) { \
return (a0 - 0x600) & 0xFFF; \
}
#define DEFINE_func_80148FEC() \
s32 func_80148FEC(s32 a0) { \
return (a0 - 0x400) & 0xFFF; \
}
#define DEFINE_func_80148FF8() \
s32 func_80148FF8(s32 a0) { \
return (a0 - 0x800) & 0xFFF; \
}
#define DEFINE_func_80149204() \
void func_80149204(s32 *a0) { \
*(s32*)((s32)a0 + 0x1E4) = 0; \
*(s32*)((s32)a0 + 0x1DC) = 0; \
}
#define DEFINE_func_80149284() \
s32 func_80149284(s32 *a0, s32 a1) { \
return *(s32*)((s32)a0 + 0x1DC) & a1; \
}
#define DEFINE_func_8014A674() \
s32 func_8014A674(s32 *a0) { \
return *(u8*)((s32)a0 + 0x1BC) < 1; \
}
#define DEFINE_func_8014A69C() \
s32 func_8014A69C(s32 *a0) { \
return *(u8*)((s32)a0 + 0x1BD) == 0; \
}
#define DEFINE_func_8014B154() \
s32 func_8014B154(s32 *a0) { \
return *(s32*)((s32)a0 + 0x44) & 0x80; \
}
#define DEFINE_func_8014B5B8() \
u8 func_8014B5B8(s32 *a0) { \
return *(u8*)((s32)a0 + 0x1C4); \
}
#define DEFINE_func_8014B5C4() \
void func_8014B5C4(s32 *a0, s32 a1, s32 a2) { \
*(s8*)((s32)a0 + 0x1C7) = a1 | a2; \
}
#define DEFINE_func_80162AC0() \
void func_80162AC0(s32 *a0, s8 a1) { \
*(s8*)((s32)a0 + 0x0) = a1; \
*(s8*)((s32)a0 + 0x1) = 0; \
}
#define DEFINE_func_80171A04() \
void func_80171A04(s32 *a0) { \
*(s8*)((s32)a0 + 0x217) = 1; \
}
#define DEFINE_func_80171A10() \
void func_80171A10(s32 *a0) { \
*(s8*)((s32)a0 + 0x217) = 2; \
}
#define DEFINE_func_80172304() \
void func_80172304(s32 *a0) { \
*(s16*)((s32)a0 + 0xAA) = 0x40; \
}
#define DEFINE_func_80172658() \
s32 func_80172658(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x1; \
}
#define DEFINE_func_80172664() \
s32 func_80172664(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x2; \
}
#define DEFINE_func_80172670() \
s32 func_80172670(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x4; \
}
#define DEFINE_func_8017267C() \
s32 func_8017267C(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x8; \
}
#define DEFINE_func_80172688() \
s32 func_80172688(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x10; \
}
#define DEFINE_func_80172694() \
s32 func_80172694(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x20; \
}
#define DEFINE_func_801726A0() \
s32 func_801726A0(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x40; \
}
#define DEFINE_func_801726AC() \
s32 func_801726AC(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x80; \
}
#define DEFINE_func_801726B8() \
s32 func_801726B8(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x100; \
}
#define DEFINE_func_801726C4() \
s32 func_801726C4(s32 *a0) { \
return *(s32*)((s32)a0 + 0x1F4) & 0x200; \
}
#define DEFINE_func_801285D4() \
extern u8 D_800B9A11; \
void func_801285D4(void) { \
D_800B9A11 = 0; \
}
#define DEFINE_func_80129248() \
extern s16 D_8011DB2C; \
void func_80129248(s16 a0) { \
D_8011DB2C = a0; \
}
#define DEFINE_func_8012943C() \
extern s16 D_80114EE0; \
void func_8012943C(void) { \
D_80114EE0 = 0; \
}
#define DEFINE_func_8012A100() \
extern s8 D_801150D6; \
void func_8012A100(s8 a0) { \
D_801150D6 = a0; \
}
#define DEFINE_func_8012A2F4() \
extern s8 D_801152C0; \
void func_8012A2F4(void) { \
D_801152C0 = 0; \
}
#define DEFINE_func_801379EC() \
extern s16 D_8012752E; \
void func_801379EC(void) { \
D_8012752E = 0; \
}
#define DEFINE_func_80139A34() \
extern s32 D_80127520; \
void func_80139A34(s32 a0) { \
D_80127520 = a0; \
}
#define DEFINE_func_80146D80() \
void func_80146D80(s32 *a0) { \
*(s32*)((s32)a0 + 0x18) = 0; \
*(s32*)((s32)a0 + 0x14) = 0; \
*(s32*)((s32)a0 + 0x10) = 0; \
}
#define DEFINE_func_80146DE8() \
void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3) { \
*(s32*)((s32)a0 + 0x24) = a1; \
*(s32*)((s32)a0 + 0x28) = a2; \
*(s32*)((s32)a0 + 0x2C) = a3; \
}
#define DEFINE_func_801472F0() \
extern void *D_8012707C; \
void func_801472F0(void *a0) { \
D_8012707C = a0; \
}
#define DEFINE_func_801473DC() \
void func_801473DC(s32 *a0) { \
*(s32*)((s32)a0 + 0x18) = 0; \
*(s32*)((s32)a0 + 0x14) = 0; \
*(s32*)((s32)a0 + 0x10) = 0; \
}
#define DEFINE_func_8014B4C4() \
extern s32 D_80078E98; \
void func_8014B4C4(void) { \
D_80078E98 = 0; \
}
#define DEFINE_func_8014C6C0() \
extern u8 D_80126D17; \
void func_8014C6C0(void) { \
D_80126D17 = 0; \
}
#define DEFINE_func_8014C6D0() \
extern u8 D_80126D1E; \
void func_8014C6D0(void) { \
D_80126D1E = 0; \
}
#define DEFINE_func_8014C968() \
extern s32 D_80126B50; \
void func_8014C968(void) { \
D_80126B50 = 0; \
}
#define DEFINE_func_8014C98C() \
extern s32 D_80126B50; \
s32 func_8014C98C(void) { \
return D_80126B50; \
}
#define DEFINE_func_8014CAFC() \
extern s32 D_80126B9C; \
s32 func_8014CAFC(void) { \
return D_80126B9C & 0x400; \
}
#define DEFINE_func_8014CB0C() \
extern s32 D_80126B9C; \
s32 func_8014CB0C(void) { \
return D_80126B9C & 0x80; \
}
#define DEFINE_func_8014CB1C() \
extern s32 D_80078E94; \
s32 func_8014CB1C(void) { \
return D_80078E94; \
}
#define DEFINE_func_8014CB58() \
extern u8 D_80078EC0; \
s32 func_8014CB58(void) { \
return D_80078EC0 & 0x7F; \
}
#define DEFINE_func_8014CB7C() \
extern s32 D_80126B9C; \
s32 func_8014CB7C(void) { \
return D_80126B9C & 0x800; \
}
#define DEFINE_func_8014CB8C() \
extern s32 D_80126B9C; \
s32 func_8014CB8C(void) { \
return D_80126B9C & 0x1000; \
}
#define DEFINE_func_8014CBD8() \
extern s32 D_80126CDC; \
void func_8014CBD8(void) { \
D_80126CDC = 0; \
}
#define DEFINE_func_8014CBE8() \
extern s16 D_80126CC4; \
void func_8014CBE8(void) { \
D_80126CC4 = 0; \
}
#define DEFINE_func_80153C8C() \
extern s32 D_80115210; \
void func_80153C8C(void) { \
D_80115210 = 0; \
}
#define DEFINE_func_80153CBC() \
extern s32 D_80115210; \
s32 func_80153CBC(void) { \
return D_80115210; \
}
#define DEFINE_func_801632E0() \
extern s32 D_80115100; \
s32 func_801632E0(void) { \
return D_80115100; \
}
#define DEFINE_func_801658DC() \
extern s8 D_80078EC4; \
void func_801658DC(void) { \
D_80078EC4 = 0; \
}
#define DEFINE_func_80165978() \
extern s32 D_8012672C; \
s32 func_80165978(void) { \
return D_8012672C; \
}
#define DEFINE_func_801659A8() \
extern s32 D_8012811C; \
s32 func_801659A8(void) { \
return D_8012811C; \
}
#define DEFINE_func_801659CC() \
extern s32 D_80126B08; \
s32 func_801659CC(void) { \
return D_80126B08; \
}
#define DEFINE_func_8016F388() \
extern u8 D_800B9A17; \
void func_8016F388(void) { \
D_800B9A17 = 0; \
}
#define DEFINE_func_8017196C() \
void func_8017196C(s32 *a0, s8 a1) { \
*(s8*)((s32)a0 + 0x214) = a1; \
*(s8*)((s32)a0 + 0x215) = 0; \
*(s8*)((s32)a0 + 0x216) = 0; \
}
#define DEFINE_func_80171A34() \
void func_80171A34(s32 *a0, s8 a1) { \
*(s8*)((s32)a0 + 0x214) = a1; \
*(s8*)((s32)a0 + 0x215) = 0; \
*(s8*)((s32)a0 + 0x216) = 0; \
}
#define DEFINE_func_80174674() \
extern s32 D_801270BC; \
void func_80174674(void) { \
D_801270BC = 0; \
}
#define DEFINE_func_80174754() \
extern s32 D_801270BC; \
s32 func_80174754(void) { \
return D_801270BC; \
}
#define DEFINE_func_80174764() \
extern s16 D_8011F9C8; \
s16 func_80174764(void) { \
return D_8011F9C8; \
}
#define DEFINE_func_80174774() \
extern s16 D_80126938; \
s16 func_80174774(void) { \
return D_80126938; \
}
#define DEFINE_func_8012BF68() \
void func_8012BF68(void *a0) { \
*(u16 *)((s32)a0 + 0x5C) &= 0x7FFF; \
}
#define DEFINE_func_801379D8() \
extern s16 D_8012752E; \
void func_801379D8(void) { \
D_8012752E = 1; \
}
#define DEFINE_func_80138948() \
void func_80138948(void *a0) { \
*(s16 *)((s32)a0 + 0x4) = 7; \
*(s8 *)((s32)a0 + 0x1F) = 0; \
*(s8 *)((s32)a0 + 0xD) = 0; \
}
#define DEFINE_func_80146CA0() \
void func_80146CA0(void *a0) { \
*(u16 *)((s32)a0 + 0x2) += 1; \
}
#define DEFINE_func_80146CB4() \
void func_80146CB4(void *a0) { \
*(u16 *)((s32)a0 + 0x2) -= 1; \
}
#define DEFINE_func_801472B4() \
void func_801472B4(void *a0) { \
*(u16 *)((s32)a0 + 0x7E) &= 0xFFFD; \
}
#define DEFINE_func_801474D8() \
void func_801474D8(s32 *a0) { \
*(s16*)((s32)a0 + 0x136) = 0; \
*(s16*)((s32)a0 + 0x134) = 0; \
*(s16*)((s32)a0 + 0x132) = 0; \
*(s16*)((s32)a0 + 0x130) = 0; \
}
#define DEFINE_func_80148634() \
void func_80148634(void *a0) { \
*(u16 *)((s32)a0 + 0xAA) = 0; \
*(u16 *)((s32)a0 + 0xAC) = 0; \
*(u16 *)((s32)a0 + 0xAE) = 0x8080; \
}
#define DEFINE_func_80148C20() \
s32 func_80148C20(s32 a0, s16 a1) { \
s32 *p = *(s32 **)((s32)a0 + 0x20); \
*(s16*)((s32)p + 0x12) = a1; \
return 1; \
}
#define DEFINE_func_8014900C() \
void func_8014900C(s32 *a0) { \
*(u16*)((s32)a0 + 0x3C) |= 0x8000; \
}
#define DEFINE_func_80149020() \
void func_80149020(s32 *a0) { \
*(u16*)((s32)a0 + 0x3C) &= 0x7FFF; \
}
#define DEFINE_func_80149034() \
void func_80149034(s32 *a0) { \
*(u16*)((s32)a0 + 0x3C) |= 0x4000; \
}
#define DEFINE_func_80149048() \
void func_80149048(s32 *a0) { \
*(u16*)((s32)a0 + 0x3C) &= 0xBFFF; \
}
#define DEFINE_func_8014B33C() \
extern s32 D_80078E94; \
void func_8014B33C(void) { \
D_80078E94 = 0x80000000; \
}
#define DEFINE_func_8014C6AC() \
extern u8 D_80126D17; \
void func_8014C6AC(void) { \
D_80126D17 = 1; \
}
#define DEFINE_func_8014C6E0() \
extern u8 D_80126D1E; \
void func_8014C6E0(void) { \
D_80126D1E = 1; \
}
#define DEFINE_func_8014C978() \
extern s32 D_80126B50; \
void func_8014C978(void) { \
D_80126B50 = 1; \
}
#define DEFINE_func_8014CA00() \
s32 func_8014CA00(s32 a0) { \
s32 *p = *(s32 **)((s32)a0 + 0x78); \
return *(s16*)((s32)p + 0x2C); \
}
#define DEFINE_func_80171A58() \
s32 func_80171A58(u8 *a0) { \
s32 v0 = a0[0x216] + 1; \
a0[0x216] = v0; \
return v0; \
}
#define DEFINE_func_80171A6C() \
s32 func_80171A6C(u8 *a0) { \
s32 v0 = a0[0x216] - 1; \
a0[0x216] = v0; \
return v0; \
}
#define DEFINE_func_80172590() \
s32 func_80172590(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x1; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_801725A4() \
s32 func_801725A4(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x2; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_801725B8() \
s32 func_801725B8(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x4; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_801725CC() \
s32 func_801725CC(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x8; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_801725E0() \
s32 func_801725E0(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x10; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_801725F4() \
s32 func_801725F4(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x20; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_80172608() \
s32 func_80172608(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x40; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_8017261C() \
s32 func_8017261C(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x80; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_80172630() \
s32 func_80172630(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x100; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_80172644() \
s32 func_80172644(u8 *a0) { \
s32 v0 = *(u32 *)((s32)a0 + 0x1F4) | 0x200; \
*(u32 *)((s32)a0 + 0x1F4) = v0; \
return v0; \
}
#define DEFINE_func_80174808() \
s32 func_80174808(u8 *a0) { \
s32 v = (s32)a0[0x214] + 1; \
a0[0x214] = (u8)v; \
return v; \
}
#define DEFINE_func_80175494() \
extern u8 D_8011F7A8; \
void func_80175494(void) { \
D_8011F7A8 = 2; \
}
#define DEFINE_func_80142C84() \
void func_80142C84(s32 a0) { \
*(s32 *)(a0 + 0x14) = 0xFFF40000; \
*(s32 *)(a0 + 0x48) = 0x20000; \
*(s16 *)(a0 + 0x102) = 0; \
}
#define DEFINE_func_80147460() \
void func_80147460(s32 a0) { \
*(s32 *)(a0 + 0x8) += *(s32 *)(a0 + 0x34); \
}
#define DEFINE_func_80148C34() \
s32 func_80148C34(s32 a0, s32 a1) { \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = (a1 + 0x400) & 0xFFF; \
return 1; \
}
#define DEFINE_func_80148C4C() \
s32 func_80148C4C(s32 a0, s32 a1) { \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = (a1 + 0x200) & 0xFFF; \
return 1; \
}
#define DEFINE_func_80148C64() \
s32 func_80148C64(s32 a0, s32 a1) { \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = (a1 + 0x800) & 0xFFF; \
return 1; \
}
#define DEFINE_func_80148C84() \
s32 func_80148C84(s32 a0, s32 a1) { \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) = (a1 + 0x600) & 0xFFF; \
return 1; \
}
#define DEFINE_func_80148CB4() \
s32 func_80148CB4(s32 a0, s32 a1) { \
s32 v0 = *(s32 *)(a0 + 0x20); \
*(s16 *)(v0 + 0x12) = (a1 - 0x400) & 0xFFF; \
return 1; \
}
#define DEFINE_func_80148CCC() \
s32 func_80148CCC(s32 a0, s32 a1) { \
s32 v0 = *(s32 *)(a0 + 0x20); \
*(s16 *)(v0 + 0x12) = (a1 - 0x200) & 0xFFF; \
return 1; \
}
#define DEFINE_func_80148CF4() \
s32 func_80148CF4(s32 a0, s32 a1) { \
s32 v0 = *(s32 *)(a0 + 0x20); \
*(s16 *)(v0 + 0x12) = (a1 - 0x600) & 0xFFF; \
return 1; \
}
#define DEFINE_func_80148D0C() \
s32 func_80148D0C(s32 a0, s32 a1) { \
s32 v0 = *(s32 *)(a0 + 0x20); \
*(s16 *)(v0 + 0x12) = (a1 - 0x400) & 0xFFF; \
return 1; \
}
#define DEFINE_func_80149210() \
void func_80149210(s32 a0, s32 a1) { \
*(s32 *)((s32)a0 + 0x1E4) = a1 | (a1 << 16); \
*(s16 *)((s32)a0 + 0x1E4) = a1; \
*(s16 *)((s32)a0 + 0x1E6) = a1; \
}
#define DEFINE_func_8014B2F8() \
extern s32 D_80078E94; \
extern s32 D_80078ECC; \
void func_8014B2F8(void) { \
D_80078E94 = 0; \
D_80078ECC = 0; \
}
#define DEFINE_func_8014B598() \
extern u8 D_80126D1C; \
extern s32 D_80126D74; \
void func_8014B598(s32 a0, s32 a1) { \
D_80126D1C = a0; \
D_80126D74 = a1; \
}
#define DEFINE_func_8014BB0C() \
extern u16 D_80078EB2; \
extern s16 D_80078EB4; \
void func_8014BB0C(void) { \
D_80078EB4 = D_80078EB2; \
}
#define DEFINE_func_8014BDC8() \
extern u16 D_80078EB6; \
extern s16 D_80078EB8; \
void func_8014BDC8(void) { \
D_80078EB8 = D_80078EB6; \
}
#define DEFINE_func_8014CA70() \
u16 func_8014CA70(s32 a0, s32 a1) { \
s32 base = *(s32 *)((s32)a0 + 0x78); \
return *(u16 *)((a1 << 1) + base + 0x14); \
}
#define DEFINE_func_8014CAE4() \
u16 func_8014CAE4(s32 *a0, s32 a1) { \
s32 base = a0[0x78 / 4]; \
return *(u16 *)(base + a1 * 2 + 0x1C); \
}
#define DEFINE_func_80153BD8() \
extern s32 D_801151FC; \
s32 func_80153BD8(s32 a0) { \
return (a0 ^ D_801151FC) == 0; \
}
#define DEFINE_func_80153C18() \
extern s32 D_80127518; \
extern s32 D_801151FC; \
void func_80153C18(void) { \
D_80127518 = 0; \
D_801151FC = 0; \
}
#define DEFINE_func_80153C74() \
extern s16 D_8011DB0C; \
extern s16 D_8011DB1A; \
void func_80153C74(s16 a0, s16 a1) { \
D_8011DB0C = a0; \
D_8011DB1A = a1; \
}
#define DEFINE_func_801553A8() \
void func_801553A8(s32 *a0) { \
*(s32 *)((s32)a0 + 0x44) &= 0xDFFFFFFF; \
}
#define DEFINE_func_80155440() \
void func_80155440(s32 *a0) { \
*(s32 *)((s32)a0 + 0x44) &= 0xEFFFFFFF; \
}
#define DEFINE_func_8016F094() \
void func_8016F094(s32 *a0) { \
*(s32 *)((s32)a0 + 0x1F8) &= 0xFBFFFFFF; \
}
#define DEFINE_func_8016F1AC() \
extern s32 D_80126D50; \
s32 func_8016F1AC(void) { \
return D_80126D50 & 0x80FFFFFF; \
}
#define DEFINE_func_80171A1C() \
void func_80171A1C(u8 *a0) { \
a0[0x215] = 0; \
a0[0x216] = 0; \
a0[0x214] = a0[0x214] + 1; \
}
#define DEFINE_func_8012ADE4() \
void func_8012ADE4(u8 *a0) { \
*(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x38); \
*(s32 *)(a0 + 0x8) = *(s32 *)(a0 + 0x3C); \
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40); \
}
#define DEFINE_func_8012B200() \
void func_8012B200(u8 *a0) { \
*(s32 *)(a0 + 0x18) = 0; \
*(s32 *)(a0 + 0x14) = 0; \
*(s32 *)(a0 + 0x10) = 0; \
*(s32 *)(a0 + 0x4C) = 0; \
*(s32 *)(a0 + 0x48) = 0; \
*(s32 *)(a0 + 0x44) = 0; \
}
#define DEFINE_func_8012E88C() \
void func_8012E88C(u8 *a0) { \
s32 *p = *(s32 **)(a0 + 0x20); \
p[1] = p[1] & 0x7FFFFFFF; \
}
#define DEFINE_func_8012E8A8() \
void func_8012E8A8(u8 *a0) { \
s32 *p = *(s32 **)(a0 + 0x20); \
p[1] = p[1] | 0x80000000; \
}
#define DEFINE_func_8012E8C4() \
void func_8012E8C4(u8 *a0) { \
s32 *p = *(s32 **)(a0 + 0x20); \
p[1] = p[1] ^ 0x80000000; \
}
#define DEFINE_func_8014905C() \
void func_8014905C(u8 *a0) { \
*(s16 *)(a0 + 0x104) = 0; \
*(s16 *)(a0 + 0x102) = 0; \
*(s16 *)(a0 + 0x100) = 0; \
*(s16 *)(a0 + 0x10C) = 0; \
*(s16 *)(a0 + 0x10A) = 0; \
*(s16 *)(a0 + 0x108) = 0; \
}
#define DEFINE_func_80149BEC() \
void func_80149BEC(s32 a0) { \
u8 v = *(u8 *)(a0 + 0x223); \
if (v != 0) { \
*(u8 *)(a0 + 0x223) = v - 1; \
} \
}
#define DEFINE_func_8014A680() \
void func_8014A680(s32 a0) { \
u8 v = *(u8 *)(a0 + 0x1BC); \
if (v != 0) { \
*(u8 *)(a0 + 0x1BC) = v - 1; \
} \
}
#define DEFINE_func_8014A6A8() \
void func_8014A6A8(s32 a0) { \
u8 v = *(u8 *)(a0 + 0x1BD); \
if (v != 0) { \
*(u8 *)(a0 + 0x1BD) = v - 1; \
} \
}
#define DEFINE_func_8014A71C() \
void func_8014A71C(s32 a0) { \
u8 v = *(u8 *)(a0 + 0x1BE); \
if (v != 0) { \
*(u8 *)(a0 + 0x1BE) = v - 1; \
} \
}
#define DEFINE_func_8014BFF4() \
void func_8014BFF4(s32 a0, s32 a1) { \
if (*(u8 *)(a0 + 0x4E) == 0) { \
*(u8 *)(a0 + 0x4E) = a1; \
} \
}
#define DEFINE_func_801511A8() \
void func_801511A8(u8 *a0) { \
u16 v = *(u16 *)(a0 + 0x3C); \
*(s16 *)(a0 + 0x3E) = 0; \
*(s16 *)(a0 + 0x40) = 0; \
*(s16 *)(a0 + 0x42) = 0; \
*(u16 *)(a0 + 0x3C) = v & 0xFFFE; \
}
#define DEFINE_func_801511C4() \
void func_801511C4(u8 *a0) { \
*(u16 *)(a0 + 0xF0) = *(u16 *)(a0 + 0x3E); \
*(u16 *)(a0 + 0xF2) = *(u16 *)(a0 + 0x40); \
*(u16 *)(a0 + 0xF4) = *(u16 *)(a0 + 0x42); \
}
#define DEFINE_func_80154134() \
void func_80154134(u8 *a0) { \
*(s32 *)(a0 + 0xB4) = 0; \
*(s16 *)(a0 + 0xBA) = 0; \
*(s16 *)(a0 + 0xB8) = 0; \
a0[0xBD] = 0; \
a0[0xBC] = 0; \
a0[0xDC] = 0; \
}
#define DEFINE_func_80154B7C() \
void func_80154B7C(u8 *a0, s32 a1) { \
*(s32 *)(a0 + 0xD0) = a1; \
*(s16 *)(a0 + 0xD6) = 1; \
*(s16 *)(a0 + 0xD4) = 1; \
a0[0xD8] = 0; \
a0[0xD9] = 0; \
}
#define DEFINE_func_80154BC8() \
void func_80154BC8(void *a0, s32 a1, s32 a2) { \
*(s32 *)((s32)a0 + 0xD0) = a1; \
*(s16 *)((s32)a0 + 0xD6) = 1; \
*(s16 *)((s32)a0 + 0xD4) = 1; \
*(s8 *)((s32)a0 + 0xD8) = a2; \
*(s8 *)((s32)a0 + 0xD9) = a2; \
}
#define DEFINE_func_801596D4() \
s32 func_801596D4(void *a0) { \
*(s32 *)((s32)a0 + 0x28) = 0x10; \
*(u8 *)((s32)a0 + 0x15) = *(u8 *)((s32)a0 + 0x15) + 1; \
return 0; \
}
#define DEFINE_func_80165124() \
void func_80165124(void *a0) { \
*(s8 *)((s32)a0 + 0x50) = *(u16 *)((s32)a0 + 0x62); \
*(s8 *)((s32)a0 + 0x51) = *(u16 *)((s32)a0 + 0x62); \
*(s8 *)((s32)a0 + 0x52) = *(u16 *)((s32)a0 + 0x62); \
}
#define DEFINE_func_8016BF34() \
void func_8016BF34(void *a0) { \
*(s16 *)((s32)a0 + 0x12) = *(u16 *)((s32)a0 + 0x6); \
*(s16 *)((s32)a0 + 0x16) = *(u16 *)((s32)a0 + 0xA); \
*(s16 *)((s32)a0 + 0x1A) = *(u16 *)((s32)a0 + 0xE); \
}
#define DEFINE_func_80174ED4() \
extern u16 D_80126980; \
s32 func_80174ED4(void) { \
return (s16)(D_80126980 & 0x8000); \
}
#define DEFINE_func_80128158() \
extern void func_80128288(void); \
void func_80128158(void) { \
func_80128288(); \
}
#define DEFINE_func_80128178() \
extern void func_801285E4(void); \
void func_80128178(void) { \
func_801285E4(); \
}
#define DEFINE_func_80128198() \
extern void func_80128678(void); \
void func_80128198(void) { \
func_80128678(); \
}
#define DEFINE_func_801281B8() \
extern void func_80128714(void); \
void func_801281B8(void) { \
func_80128714(); \
}
#define DEFINE_func_801281D8() \
extern void func_8013E67C(void); \
void func_801281D8(void) { \
func_8013E67C(); \
}
#define DEFINE_func_801281F8() \
extern void func_8013E558(void); \
void func_801281F8(void) { \
func_8013E558(); \
}
#define DEFINE_func_80128228() \
extern void func_80128A28(void); \
void func_80128228(void) { \
func_80128A28(); \
}
#define DEFINE_func_80128248() \
extern void func_80128AF4(void); \
void func_80128248(void) { \
func_80128AF4(); \
}
#define DEFINE_func_80128268() \
extern void func_801282EC(void); \
void func_80128268(void) { \
func_801282EC(); \
}
#define DEFINE_func_801282CC() \
extern void func_80011B7C(int); \
void func_801282CC(void) { \
func_80011B7C(0x11); \
}
#define DEFINE_func_8012A8E8() \
extern void func_8012AAAC(void); \
void func_8012A8E8(void) { \
func_8012AAAC(); \
}
#define DEFINE_func_8012B21C() \
void func_8012B21C(void *a0) { \
*(s32 *)((s32)a0 + 0x18) = 0; \
*(s32 *)((s32)a0 + 0x14) = 0; \
*(s32 *)((s32)a0 + 0x10) = 0; \
*(s32 *)((s32)a0 + 0x4C) = 0; \
*(s32 *)((s32)a0 + 0x44) = 0; \
*(s32 *)((s32)a0 + 0x48) = 0xC000; \
}
#define DEFINE_func_8012D38C() \
extern void func_8012D098(int, int); \
void func_8012D38C(int a0) { \
func_8012D098(a0, 0); \
}
#define DEFINE_func_8012FCA4() \
extern void func_80131CA8(int a0, int a1); \
void func_8012FCA4(int a0) { \
func_80131CA8(a0, 0x1B); \
}
#define DEFINE_func_80136C1C() \
extern void func_80136C3C(void); \
void func_80136C1C(void) { \
func_80136C3C(); \
}
#define DEFINE_func_801376C8() \
extern void func_801376E8(int a0, int a1); \
void func_801376C8(int a0) { \
func_801376E8(a0, 0); \
}
#define DEFINE_func_80146534() \
extern s32 D_80127098; \
extern s32 D_80127094; \
extern s32 D_80127090; \
void func_80146534(void) { \
D_80127098 = 0; \
D_80127094 = 0; \
D_80127090 = 0; \
}
#define DEFINE_func_80147788() \
void func_80147788(void *a0, s32 a1) { \
void *v1 = *(void **)((s32)a0 + 0x20); \
*(s16 *)((s32)v1 + 0x10) = (*(u16 *)((s32)v1 + 0x10) + a1) & 0xFFF; \
}
#define DEFINE_func_801477A8() \
void func_801477A8(void *a0, s32 a1) { \
void *v1 = *(void **)((s32)a0 + 0x20); \
*(s16 *)((s32)v1 + 0x12) = (*(u16 *)((s32)v1 + 0x12) + a1) & 0xFFF; \
}
#define DEFINE_func_801477C8() \
void func_801477C8(void *a0, s32 a1) { \
void *v1 = *(void **)((s32)a0 + 0x20); \
*(s16 *)((s32)v1 + 0x14) = (*(u16 *)((s32)v1 + 0x14) + a1) & 0xFFF; \
}
#define DEFINE_func_80147928() \
extern void func_80147948(int a0, int a1, int a2); \
void func_80147928(int a0, int a1) { \
func_80147948(a0, a1, 0x1F0000); \
}
#define DEFINE_func_8014799C() \
extern void func_801479BC(int a0, int a1, int a2); \
void func_8014799C(int a0, int a1) { \
func_801479BC(a0, a1, 0x1F0000); \
}
#define DEFINE_func_80147A10() \
extern void func_80147A30(int a0, int a1, int a2); \
void func_80147A10(int a0, int a1) { \
func_80147A30(a0, a1, 0x1F0000); \
}
#define DEFINE_func_80149704() \
extern void func_8015AD08(void); \
void func_80149704(void) { \
func_8015AD08(); \
}
#define DEFINE_func_80149724() \
extern void func_8015ACC4(void); \
void func_80149724(void) { \
func_8015ACC4(); \
}
#define DEFINE_func_80149788() \
extern void func_8015F7A0(void); \
void func_80149788(void) { \
func_8015F7A0(); \
}
#define DEFINE_func_80149864() \
extern void func_801653B8(void); \
void func_80149864(void) { \
func_801653B8(); \
}
#define DEFINE_func_801498C0() \
extern void func_80160B00(void); \
void func_801498C0(void) { \
func_80160B00(); \
}
#define DEFINE_func_80149C94() \
extern void func_801577C8(void); \
void func_80149C94(void) { \
func_801577C8(); \
}
#define DEFINE_func_80149CB4() \
extern void func_80157D20(void); \
void func_80149CB4(void) { \
func_80157D20(); \
}
#define DEFINE_func_8014A218() \
extern void func_8015D4B4(void); \
void func_8014A218(void) { \
func_8015D4B4(); \
}
#define DEFINE_func_8014A4FC() \
extern void func_8015EDD4(void); \
void func_8014A4FC(void) { \
func_8015EDD4(); \
}
#define DEFINE_func_8014A830() \
extern void func_8015E184(void); \
void func_8014A830(void) { \
func_8015E184(); \
}
#define DEFINE_func_8014AB5C() \
extern void func_8014AB7C(void); \
void func_8014AB5C(void) { \
func_8014AB7C(); \
}
#define DEFINE_func_8014ABF0() \
extern void func_8014AC10(void); \
void func_8014ABF0(void) { \
func_8014AC10(); \
}
#define DEFINE_func_8014BEF8() \
extern s32 func_80029178(s32 arg); \
u8 func_8014BEF8(void) { \
return func_80029178(0x80); \
}
#define DEFINE_func_8014BF6C() \
extern s32 func_800291B4(s32 arg); \
u8 func_8014BF6C(void) { \
return func_800291B4(0xCF); \
}
#define DEFINE_func_8014BFD4() \
extern s32 func_800291B4(s32 arg); \
u8 func_8014BFD4(void) { \
return func_800291B4(0xD0); \
}
#define DEFINE_func_80150150() \
extern s32 func_80134510(s32 arg); \
s32 func_80150150(s32 a, s32 b) { \
return func_80134510(b) != 0; \
}
#define DEFINE_func_80150460() \
extern s32 func_80134510(s32 arg); \
s32 func_80150460(s32 a, s32 b) { \
return func_80134510(b) != 0; \
}
#define DEFINE_func_80150CC4() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150CC4(s32 a) { \
func_80150EC4(a, 0); \
}
#define DEFINE_func_80150CE4() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150CE4(s32 a) { \
func_80150EC4(a, 1); \
}
#define DEFINE_func_80150D04() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150D04(s32 a) { \
func_80150EC4(a, 2); \
}
#define DEFINE_func_80150D24() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150D24(s32 a) { \
func_80150EC4(a, 3); \
}
#define DEFINE_func_80150D44() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150D44(s32 a) { \
func_80150EC4(a, 4); \
}
#define DEFINE_func_80150D64() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150D64(s32 a) { \
func_80150EC4(a, 5); \
}
#define DEFINE_func_80150D84() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150D84(s32 a) { \
func_80150EC4(a, 6); \
}
#define DEFINE_func_80150DA4() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150DA4(s32 a) { \
func_80150EC4(a, 7); \
}
#define DEFINE_func_80150DC4() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150DC4(s32 a) { \
func_80150EC4(a, 8); \
}
#define DEFINE_func_80150DE4() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150DE4(s32 a) { \
func_80150EC4(a, 9); \
}
#define DEFINE_func_80150E04() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150E04(s32 a) { \
func_80150EC4(a, 10); \
}
#define DEFINE_func_80150E24() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150E24(s32 a) { \
func_80150EC4(a, 11); \
}
#define DEFINE_func_80150E44() \
extern void func_80150EC4(s32 a, s32 b); \
void func_80150E44(s32 a) { \
func_80150EC4(a, 12); \
}
#define DEFINE_func_80150E64() \
extern void func_80150EC4(s32 a0, s32 a1); \
void func_80150E64(s32 a0) { \
func_80150EC4(a0, 0xD); \
}
#define DEFINE_func_80151110() \
extern s32 func_8012DB84(void); \
s32 func_80151110(void) { \
return func_8012DB84(); \
}
#define DEFINE_func_80151164() \
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
s32 func_80151164(s32 a0, s32 a1) { \
return func_80151184(a0, a1, 0xA); \
}
#define DEFINE_func_80151924() \
extern s32 func_80151944(void); \
s32 func_80151924(void) { \
return func_80151944(); \
}
#define DEFINE_func_80153C9C() \
extern s32 D_80115210; \
void func_80153C9C(void) { \
D_80115210 = D_80115210 + 1; \
}
#define DEFINE_func_80155F60() \
extern s32 func_80155F80(void); \
s32 func_80155F60(void) { \
return func_80155F80(); \
}
#define DEFINE_func_8015771C() \
extern s32 func_8015773C(u8 *a0); \
s32 func_8015771C(u8 *a0) { \
a0[0x1AA] = 0; \
return func_8015773C(a0); \
}
#define DEFINE_func_8015BE74() \
extern s32 func_8015BE94(void); \
s32 func_8015BE74(void) { \
return func_8015BE94(); \
}
#define DEFINE_func_8015BEC4() \
extern s32 func_8015AE2C(void); \
s32 func_8015BEC4(void) { \
return func_8015AE2C(); \
}
#define DEFINE_func_8015BEE4() \
extern s32 func_8015B950(void); \
s32 func_8015BEE4(void) { \
return func_8015B950(); \
}
#define DEFINE_func_8015CCB0() \
extern s32 func_8015CCD0(void); \
s32 func_8015CCB0(void) { \
return func_8015CCD0(); \
}
#define DEFINE_func_8015CFFC() \
extern void func_8015D01C(void); \
void func_8015CFFC(void) { \
func_8015D01C(); \
}
#define DEFINE_func_8015D524() \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015D524(s32 arg0) { \
func_80154A74(arg0, 0x11); \
}
#define DEFINE_func_8015F360() \
extern void func_8015F380(void); \
void func_8015F360(void) { \
func_8015F380(); \
}
#define DEFINE_func_8015FA24() \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015FA24(s32 arg0) { \
func_80154A74(arg0, 0x11); \
}
#define DEFINE_func_80160EE0() \
extern void func_80160F00(void); \
void func_80160EE0(void) { \
func_80160F00(); \
}
#define DEFINE_func_80161104() \
extern s32 func_80161208(void); \
s32 func_80161104(void) { \
return func_80161208() == 0; \
}
#define DEFINE_func_80162F60() \
extern void func_80147948(s32 a0, s32 a1, s32 a2); \
void func_80162F60(s32 arg0, s32 arg1) { \
func_80147948(arg0, arg1, 0x7F0000); \
}
#define DEFINE_func_80162F80() \
extern void func_801479BC(s32 a0, s32 a1, s32 a2); \
void func_80162F80(s32 arg0, s32 arg1) { \
func_801479BC(arg0, arg1, 0x7F0000); \
}
#define DEFINE_func_80162FA0() \
extern void func_80147A30(s32 a0, s32 a1, s32 a2); \
void func_80162FA0(s32 arg0, s32 arg1) { \
func_80147A30(arg0, arg1, 0x7F0000); \
}
#define DEFINE_func_80164DB0() \
extern void func_80162CCC(void); \
void func_80164DB0(void) { \
func_80162CCC(); \
}
#define DEFINE_func_80165938() \
extern s32 D_8012672C; \
extern s32 D_8012811C; \
extern s32 D_80126B08; \
void func_80165938(void) { \
D_8012672C = 0; \
D_8012811C = 0; \
D_80126B08 = 0; \
}
#define DEFINE_func_80165958() \
extern s32 D_8012672C; \
void func_80165958(void) { \
D_8012672C = D_8012672C + 1; \
}
#define DEFINE_func_80165988() \
extern s32 D_8012811C; \
void func_80165988(void) { \
D_8012811C = D_8012811C + 1; \
}
#define DEFINE_func_80165C58() \
extern void func_80154A74(s32 a0, s32 a1); \
void func_80165C58(s32 arg0) { \
func_80154A74(arg0, 0x11); \
}
#define DEFINE_func_80168A88() \
extern void func_80146C3C(void); \
void func_80168A88(void) { \
func_80146C3C(); \
}
#define DEFINE_func_8016B428() \
extern s32 func_8016B448(s32, s32); \
s32 func_8016B428(s32 a0) { \
return func_8016B448(a0, 0); \
}
#define DEFINE_func_8016BA48() \
extern s32 func_8016BA68(s32, s32); \
s32 func_8016BA48(s32 a0) { \
return func_8016BA68(a0, 0); \
}
#define DEFINE_func_8016ED6C() \
extern void func_80146C3C(void); \
void func_8016ED6C(void) { \
func_80146C3C(); \
}
#define DEFINE_func_8016EFA8() \
extern s32 func_8016EFC8(s32); \
s32 func_8016EFA8(s32 a0) { \
return func_8016EFC8(a0); \
}
#define DEFINE_func_8016F288() \
extern s32 D_80126D50; \
void func_8016F288(void) { \
D_80126D50 = D_80126D50 | 0x1000000; \
}
#define DEFINE_func_8016F2A8() \
extern s32 D_80126D50; \
void func_8016F2A8(void) { \
D_80126D50 = D_80126D50 | 0x2000000; \
}
#define DEFINE_func_8016F2EC() \
extern s32 D_80126D50; \
void func_8016F2EC(void) { \
D_80126D50 = D_80126D50 | 0x8000000; \
}
#define DEFINE_func_8016F330() \
extern s32 D_80126D50; \
void func_8016F330(void) { \
D_80126D50 = D_80126D50 | 0x10000000; \
}
#define DEFINE_func_801724EC() \
extern s32 func_80013450(s32); \
s32 func_801724EC(s32 a0) { \
return func_80013450(a0 + 4) < 0x10; \
}
#define DEFINE_func_80172760() \
extern s32 func_80174650(s32); \
s32 func_80172760(s32 a0) { \
return func_80174650(a0); \
}
#define DEFINE_func_80174188() \
extern s32 func_8014BCEC(s32, s32); \
s32 func_80174188(s32 a0) { \
return func_8014BCEC(a0, 0x19); \
}
#define DEFINE_func_80174630() \
extern s32 D_801270BC; \
void func_80174630(void) { \
D_801270BC = D_801270BC | 0x1; \
}
#define DEFINE_func_801747AC() \
extern s32 func_8016F0AC(s32); \
s32 func_801747AC(s32 a0) { \
return func_8016F0AC(a0); \
}
#define DEFINE_func_801748C4() \
void func_801748C4(s32 a0) { \
u8 v = *(u8 *)(a0 + 0x214) + 1; \
*(s32 *)(a0 + 0x44) |= 0x4000000; \
*(u8 *)(a0 + 0x214) = v; \
}
#define DEFINE_func_801749A8() \
extern s32 func_801749C8(s32); \
s32 func_801749A8(s32 a0) { \
return func_801749C8(a0); \
}
#define DEFINE_func_80174C60() \
extern s32 func_80174CB0(s32, s32); \
s32 func_80174C60(s32 a0) { \
return func_80174CB0(a0, 0); \
}
#define DEFINE_func_8017ADE8() \
extern s32 func_8017AD0C(s32); \
s32 func_8017ADE8(s32 a0) { \
return func_8017AD0C(a0); \
}
#define DEFINE_func_80129258() \
extern s16 D_8011DB30; \
void func_80129258(void) { \
s16 *p = &D_8011DB30; \
s32 i = 0x7F; \
do { \
*p = 0; \
p = (s16 *)((s32)p + 0x38); \
i--; \
} while (i >= 0); \
}
#define DEFINE_func_80129350() \
void func_80129350(s32 a0, s32 a1) { \
*(s32 *)(a0 + 0x4) = *(s32 *)(a1 + 0x4); \
*(s32 *)(a0 + 0x8) = *(s32 *)(a1 + 0x8); \
*(s32 *)(a0 + 0xC) = *(s32 *)(a1 + 0xC); \
}
#define DEFINE_func_80129374() \
void func_80129374(s32 a0, s32 a1) { \
*(s32 *)(a0 + 0x10) = *(s32 *)(a1 + 0x10); \
*(s32 *)(a0 + 0x14) = *(s32 *)(a1 + 0x14); \
*(s32 *)(a0 + 0x18) = *(s32 *)(a1 + 0x18); \
}
#define DEFINE_func_80129FF4() \
extern void func_8012A018(s32 a, s32 b); \
void func_80129FF4(void) { \
func_8012A018(0, 0); \
}
#define DEFINE_func_8012B23C() \
void func_8012B23C(s32 a0) { \
*(s32 *)(a0 + 0x18) = 0; \
*(s32 *)(a0 + 0x14) = 0; \
*(s32 *)(a0 + 0x10) = 0; \
*(s32 *)(a0 + 0x4C) = 0; \
*(s32 *)(a0 + 0x44) = 0; \
*(s32 *)(a0 + 0x48) = 0x18000; \
}
#define DEFINE_func_8012C194() \
extern void func_8001D074(s32 a, s32 b); \
void func_8012C194(void) { \
func_8001D074(0x3E, 0x7D); \
}
#define DEFINE_func_8012C1B8() \
extern void func_8001CFDC(s32 a, s32 b); \
void func_8012C1B8(void) { \
func_8001CFDC(0x26, 0x85); \
}
#define DEFINE_func_8012CC1C() \
extern void func_8012CC88(s32 a, s32 b, s32 c); \
void func_8012CC1C(s32 arg0, s32 arg1) { \
func_8012CC88(arg0, 0, arg1); \
}
#define DEFINE_func_8012CC40() \
extern void func_8012CC88(s32 a, s32 b, s32 c); \
void func_8012CC40(s32 arg0, s32 arg1) { \
func_8012CC88(arg0, 1, arg1); \
}
#define DEFINE_func_80139A44() \
extern s32 D_80127530[4]; \
void func_80139A44(s32 a0, u16 a1) { \
if (a1 < 4) { \
D_80127530[a1] = a0; \
} \
}
#define DEFINE_func_80139A68() \
extern s16 D_80127540[4]; \
void func_80139A68(s32 a0, u16 a1) { \
if (a1 < 4) { \
D_80127540[a1] = (s16)a0; \
} \
}
#define DEFINE_func_80139DC8() \
extern s16 D_8012811A; \
void func_80139DC8(void) { \
s32 i = 0x287; \
s16 *p = &D_8012811A; \
do { \
*p = 0; \
i--; \
p = (s16 *)((s32)p - 2); \
} while (i >= 0); \
}
#define DEFINE_func_80143970() \
extern s32 func_8012C588(s32 a0, s32 a1); \
s32 func_80143970(s32 a0) { \
return func_8012C588(0x1B, a0); \
}
#define DEFINE_func_80146554() \
extern void func_8001D074(s32 a0, s32 a1); \
void func_80146554(void) { \
func_8001D074(4, 6); \
}
#define DEFINE_func_80146578() \
extern void func_8001D074(s32 a0, s32 a1); \
void func_80146578(void) { \
func_8001D074(6, 0x16); \
}
#define DEFINE_func_8014659C() \
extern void func_8001CFDC(s32, s32); \
void func_8014659C(void) { \
func_8001CFDC(6, 0x16); \
}
#define DEFINE_func_801465C0() \
extern void func_8001D074(s32, s32); \
void func_801465C0(void) { \
func_8001D074(0x16, 0x3E); \
}
#define DEFINE_func_801465E4() \
extern void func_8001CFDC(s32, s32); \
void func_801465E4(void) { \
func_8001CFDC(0x16, 0x26); \
}
#define DEFINE_func_80147290() \
extern s16 D_80126BB8; \
extern s16 D_80126BBA; \
extern s16 D_80126BBC; \
void func_80147290(void) { \
D_80126BB8 = 0x1000; \
D_80126BBA = 0x1000; \
D_80126BBC = 0x1000; \
}
#define DEFINE_func_80147300() \
extern void func_80147364(u16, s32); \
void func_80147300(u16 arg0) { \
func_80147364(arg0, 0); \
}
#define DEFINE_func_80149350() \
extern void func_8012F14C(s32); \
void func_80149350(s32 arg0) { \
func_8012F14C(*(s32 *)(arg0 + 0x20) + 0x34); \
}
#define DEFINE_func_8014942C() \
extern void func_8012F038(s32); \
void func_8014942C(s32 arg0) { \
func_8012F038(*(s32 *)(arg0 + 0x20) + 0x34); \
}
#define DEFINE_func_8014AA04() \
extern u8 D_80078EC0; \
void func_8014AA04(s32 a0) { \
D_80078EC0 = a0 | (D_80078EC0 & 0x80); \
}
#define DEFINE_func_8014BE78() \
extern void func_80029124(s32, s32); \
void func_8014BE78(void) { \
func_80029124(0x12F, 1); \
}
#define DEFINE_func_8014BE9C() \
extern void func_80029124(s32, s32); \
void func_8014BE9C(void) { \
func_80029124(0x12F, 0); \
}
#define DEFINE_func_8014BF48() \
extern void func_800291A0(s32, s32); \
void func_8014BF48(void) { \
func_800291A0(0xCF, 0); \
}
#define DEFINE_func_8014BF8C() \
extern void func_800291A0(s32, s32); \
void func_8014BF8C(u8 arg0) { \
func_800291A0(0xD0, arg0); \
}
#define DEFINE_func_8014BFB0() \
extern void func_800291A0(s32, s32); \
void func_8014BFB0(void) { \
func_800291A0(0xD0, 0); \
}
#define DEFINE_func_80150CA0() \
extern int func_80151184(int arg, int a1, int a2); \
int func_80150CA0(int arg) { \
return func_80151184(arg, 0xE001, 0x10); \
}
#define DEFINE_func_80150FB4() \
extern int func_80151184(int arg, int a1, int a2); \
int func_80150FB4(int arg) { \
return func_80151184(arg, 0x8, 0); \
}
#define DEFINE_func_80151014() \
extern int func_80151184(int arg, int a1, int a2); \
int func_80151014(int arg) { \
return func_80151184(arg, 0xC00B, 0x20); \
}
#define DEFINE_func_80151070() \
extern int func_80151184(int arg, int a1, int a2); \
int func_80151070(int arg) { \
return func_80151184(arg, 0xE003, 0x10); \
}
#define DEFINE_func_80151094() \
extern int func_80151184(int arg, int a1, int a2); \
int func_80151094(int arg) { \
return func_80151184(arg, 0xC00D, 0x18); \
}
#define DEFINE_func_801510C8() \
extern int func_80151184(int arg, int a1, int a2); \
int func_801510C8(int arg) { \
return func_80151184(arg, 0x4018, 0x20); \
}
#define DEFINE_func_801510EC() \
extern int func_80151184(int arg, int a1, int a2); \
int func_801510EC(int arg) { \
return func_80151184(arg, 0xE016, 0x10); \
}
#define DEFINE_func_80151138() \
extern int func_80151184(int arg, int a1, int a2); \
int func_80151138(int arg) { \
return func_80151184(arg, 0xC01F, 0x10); \
}
#define DEFINE_func_801511E0() \
extern int func_80151204(int arg, int a1); \
int func_801511E0(int arg) { \
return func_80151204(arg, *(short *)((int)arg + 0xF2)); \
}
#define DEFINE_func_80155FB0() \
extern int func_80155FF8(int arg, int a1); \
int func_80155FB0(int arg, int a1) { \
return func_80155FF8(arg, a1 | 0x10000); \
}
#define DEFINE_func_80155FD4() \
extern int func_80155FF8(int arg, int a1); \
int func_80155FD4(int arg, int a1) { \
return func_80155FF8(arg, a1 | 0x20000); \
}
#define DEFINE_func_801598BC() \
extern int func_800167F0(int arg); \
int func_801598BC(void) { \
return (func_800167F0(4) & 0xFFFF) != 0; \
}
#define DEFINE_func_80162414() \
extern s32 func_800167F0(s32 a0); \
s32 func_80162414(void) { \
return (func_800167F0(4) & 0xffff) != 0; \
}
#define DEFINE_func_80168640() \
void func_80168640(s32 a0) { \
*(s32 *)(a0 + 0x1C) = 0x20; \
*(u16 *)(a0 + 0x12) = 0; \
*(u16 *)(a0 + 0x10) = 0x80; \
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
}
#define DEFINE_func_8016F264() \
extern s32 D_80126D50; \
void func_8016F264(void) { \
D_80126D50 &= 0xFEFFFFFF; \
}
#define DEFINE_func_8016F2C8() \
extern s32 D_80126D50; \
void func_8016F2C8(void) { \
D_80126D50 &= 0xFDFFFFFF; \
}
#define DEFINE_func_8016F30C() \
extern s32 D_80126D50; \
void func_8016F30C(void) { \
D_80126D50 &= 0xF7FFFFFF; \
}
#define DEFINE_func_8016F350() \
extern s32 D_80126D50; \
void func_8016F350(void) { \
D_80126D50 &= 0xEFFFFFFF; \
}
#define DEFINE_func_8016F44C() \
extern s32 func_80029178(s32 a0); \
s32 func_8016F44C(s32 a0) { \
return (func_80029178(a0 + 0x125) & 0xff) != 0; \
}
#define DEFINE_func_8016F470() \
extern void func_80029124(s32 a0, s32 a1); \
void func_8016F470(s32 a0) { \
func_80029124(a0 + 0x125, 0); \
}
#define DEFINE_func_80171904() \
extern s32 D_80126D50; \
void func_80171904(s32 a0) { \
D_80126D50 = a0 | (D_80126D50 & 0x7F000000); \
}
#define DEFINE_func_80179DF8() \
extern void func_80179B74(s16 *a0); \
void func_80179DF8(void) { \
s16 local; \
local = 0; \
func_80179B74(&local); \
}
#define DEFINE_func_8012853C() \
extern void func_80146074(void); \
extern void func_80011C10(void); \
void func_8012853C(void) { \
func_80146074(); \
func_80011C10(); \
}
#define DEFINE_func_8012BD14() \
extern void func_80013350(s32 a0, void *a1); \
extern u8 D_80126B5C; \
void func_8012BD14(s32 a0) { \
func_80013350(a0 + 4, &D_80126B5C); \
}
#define DEFINE_func_801375EC() \
extern void func_80137614(s32 a0, s32 a1, s32 a2); \
void func_801375EC(s32 a0, s16 a1) { \
func_80137614(a0, a1, 0); \
}
#define DEFINE_func_80138DB8() \
extern s32 func_80014E80(s32 a0, s32 a1); \
s16 func_80138DB8(s32 a0, u8 a1, s32 a2) { \
return (s16)func_80014E80(a1, a2); \
}
#define DEFINE_func_80139788() \
extern void func_8001931C(void); \
extern s16 D_8012752C; \
void func_80139788(void) { \
func_8001931C(); \
D_8012752C = 0; \
}
#define DEFINE_func_8013E814() \
extern void func_800D24A0(s32 arg); \
extern void func_8013E6AC(void); \
void func_8013E814(void) { \
func_800D24A0(0); \
func_8013E6AC(); \
}
#define DEFINE_func_80144A04() \
extern void func_80144A04(s32 *a0); \
void func_80144A04(s32 *a0) { \
void (*fp)(void); \
fp = (void (*)(void))*(s32 *)((s32)a0 + 0xDC); \
fp(); \
}
#define DEFINE_func_80144AEC() \
extern void func_80144B14(void); \
void func_80144AEC(s32 *a0) { \
s32 old; \
old = *(s32 *)((s32)a0 + 0xDC); \
*(s32 *)((s32)a0 + 0xDC) = (s32)&func_80144B14; \
*(s16 *)((s32)a0 + 0x0) = 0x83; \
*(s16 *)((s32)a0 + 0x2) = 1; \
*(s32 *)((s32)a0 + 0xCC) = old; \
}
#define DEFINE_func_801474EC() \
void func_801474EC(s32 *a0) { \
*(s16 *)((s32)a0 + 0x11C) = 0; \
*(s16 *)((s32)a0 + 0x11A) = 0; \
*(s16 *)((s32)a0 + 0x118) = 0; \
*(s16 *)((s32)a0 + 0x124) = 0; \
*(s16 *)((s32)a0 + 0x122) = 0; \
*(s16 *)((s32)a0 + 0x120) = 0; \
*(s16 *)((s32)a0 + 0x12C) = 0; \
*(s16 *)((s32)a0 + 0x12A) = 0; \
*(s16 *)((s32)a0 + 0x128) = 0; \
}
#define DEFINE_func_80147A84() \
extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
void func_80147A84(s32 arg0) { \
func_80147AD4(arg0, 0, 0, 0); \
}
#define DEFINE_func_80147AAC() \
extern void func_80147C30(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
void func_80147AAC(s32 arg0) { \
func_80147C30(arg0, 0, 0, 0); \
}
#define DEFINE_func_80147F50() \
extern void func_80147F78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
void func_80147F50(s32 arg0) { \
func_80147F78(arg0, 0, 0, 0); \
}
#define DEFINE_func_8014ACC0() \
void func_8014ACC0(s32 a0, s32 a1) { \
s16 v0; \
v0 = *(u16 *)((s32)a0 + 0x1C8) - a1; \
*(s16 *)((s32)a0 + 0x1C8) = v0; \
if (v0 < 0) { \
*(s16 *)((s32)a0 + 0x1C8) = 0; \
} \
}
#define DEFINE_func_8014B00C() \
extern void func_8014B034(s32 arg0); \
void func_8014B00C(s32 arg0) { \
func_8014B034(arg0 * 60); \
}
#define DEFINE_func_80153BF0() \
extern s32 D_801151FC; \
extern s32 D_80127518; \
s32 func_80153BF0(s32 a0) { \
if (a0 == D_801151FC) { \
D_80127518 = 0; \
return 1; \
} \
return 0; \
}
#define DEFINE_func_8015410C() \
extern void func_80151664(void); \
extern s32 D_80127518; \
void func_8015410C(void) { \
D_80127518 = 0; \
func_80151664(); \
}
#define DEFINE_func_801627C0() \
extern void func_80016714(void *a0, s32 a1); \
extern s32 D_8011F750; \
void func_801627C0(void) { \
func_80016714(&D_8011F750, 0x58); \
}
#define DEFINE_func_80162AF4() \
extern void func_80016714(void *a0, s32 a1); \
extern s32 D_8011F9D0; \
void func_80162AF4(void) { \
func_80016714(&D_8011F9D0, 0x820); \
}
#define DEFINE_func_80163234() \
extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); \
void func_80163234(s32 a0) { \
func_8016325C(a0, 0, 0, 0); \
}
#define DEFINE_func_80165C78() \
extern void func_80016714(void *a0, s32 a1); \
extern s32 D_8011D030; \
void func_80165C78(void) { \
func_80016714(&D_8011D030, 0xA50); \
}
#define DEFINE_func_8016E8F0() \
extern void func_80016714(void *a0, s32 a1); \
extern s32 D_80115218; \
void func_8016E8F0(void) { \
func_80016714(&D_80115218, 0x80); \
}
#define DEFINE_func_80171238() \
extern void func_801718AC(void *a0); \
extern void *D_8011F738; \
void func_80171238(void) { \
func_801718AC(D_8011F738); \
}
#define DEFINE_func_80171884() \
extern void func_80171928(void *a0); \
extern s32 D_80126B58; \
void func_80171884(void) { \
func_80171928(&D_80126B58); \
}
#define DEFINE_func_80172710() \
extern void (*D_80127088)(void); \
void func_80172710(void) { \
D_80127088(); \
}
#define DEFINE_func_80172ED4() \
extern void func_8017303C(void *); \
extern u8 D_800D59EC[]; \
void func_80172ED4(void) { \
func_8017303C(D_800D59EC); \
}
#define DEFINE_func_80172EFC() \
extern void func_8017303C(void *); \
extern u8 D_800D599C[]; \
void func_80172EFC(void) { \
func_8017303C(D_800D599C); \
}
#define DEFINE_func_80172F24() \
extern void func_8017303C(void *); \
extern u8 D_800D5934[]; \
void func_80172F24(void) { \
func_8017303C(D_800D5934); \
}
#define DEFINE_func_8017329C() \
extern void func_80174684(void *); \
extern void func_801732C4(void); \
void func_8017329C(void) { \
func_80174684(func_801732C4); \
}
#define DEFINE_func_801732F4() \
extern void func_80174684(void *); \
extern void func_8017331C(void); \
void func_801732F4(void) { \
func_80174684(func_8017331C); \
}
#define DEFINE_func_8017334C() \
extern void func_80174684(void *); \
extern void func_80173374(void); \
void func_8017334C(void) { \
func_80174684(func_80173374); \
}
#define DEFINE_func_801733A4() \
extern void func_80174684(void *); \
extern void func_8017331C(void); \
void func_801733A4(void) { \
func_80174684(func_8017331C); \
}
#define DEFINE_func_8017452C() \
extern void func_80174684(void *); \
extern void func_80174554(void); \
void func_8017452C(void) { \
func_80174684(func_80174554); \
}
#define DEFINE_func_80174584() \
extern void func_80174684(void *); \
extern void func_801745AC(void); \
void func_80174584(void) { \
func_80174684(func_801745AC); \
}
#define DEFINE_func_801745DC() \
extern void func_80174604(void); \
extern void func_80174684(void *); \
void func_801745DC(void) { \
func_80174684(func_80174604); \
}
#define DEFINE_func_80175668() \
extern short D_800B9A02; \
extern void func_801757E0(int); \
void func_80175668(void) { \
func_801757E0(D_800B9A02); \
}
#define DEFINE_func_80179F44() \
extern void func_80179B74(short *); \
void func_80179F44(void) { \
short sp10; \
sp10 = 0x18; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A0F4() \
extern void func_80179B74(short *); \
void func_8017A0F4(void) { \
short sp10; \
sp10 = 0x7; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A11C() \
extern void func_80179B74(short *); \
void func_8017A11C(void) { \
short sp10; \
sp10 = 0x8; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A180() \
extern void func_80179B74(short *); \
void func_8017A180(void) { \
short sp10; \
sp10 = 0x9; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A1A8() \
extern void func_80179B74(short *); \
void func_8017A1A8(void) { \
short sp10; \
sp10 = 0xA; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A1D0() \
extern void func_80179B74(short *); \
void func_8017A1D0(void) { \
short sp10; \
sp10 = 0xB; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A1F8() \
extern void func_80179B74(short *); \
void func_8017A1F8(void) { \
short sp10; \
sp10 = 0xC; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A298() \
extern void func_80179B74(short *); \
void func_8017A298(void) { \
short sp10; \
sp10 = 0xE; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A2C0() \
extern void func_80179B74(short *); \
void func_8017A2C0(void) { \
short sp10; \
sp10 = 0xF; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A2E8() \
extern void func_80179B74(short *); \
void func_8017A2E8(void) { \
short sp10; \
sp10 = 0x10; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A310() \
extern void func_80179B74(short *); \
void func_8017A310(void) { \
short sp10; \
sp10 = 0x11; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A338() \
extern void func_80179B74(short *); \
void func_8017A338(void) { \
short sp10; \
sp10 = 0x19; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A360() \
extern void func_80179B74(short *); \
void func_8017A360(void) { \
short sp10; \
sp10 = 0x1E; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8017A388() \
extern void func_80179B74(short *); \
void func_8017A388(void) { \
short sp10; \
sp10 = 0x1A; \
func_80179B74(&sp10); \
}
#define DEFINE_func_8012B14C() \
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
void func_8012B14C(s32 a0, s32 a1) { \
func_800484EC(*(s32 *)((s32)a0 + 0x20) + 0x34, a1, (s32)a0 + 0x10); \
}
#define DEFINE_func_8012BF7C() \
extern s16 D_80126CB0; \
s32 func_8012BF7C(s16 *a0) { \
s32 diff; \
diff = a0[7] - D_80126CB0; \
if (diff < 0) { \
diff = -diff; \
} \
return diff >= 0x360; \
}
#define DEFINE_func_8012C724() \
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); \
void func_8012C724(s32 a0, s32 a1) { \
*(u16 *)((s32)a0 + 0xA) |= 0x8000; \
func_8012C890(a0, a1, 0); \
}
#define DEFINE_func_8013E298() \
extern s16 D_80126CB0; \
s32 func_8013E298(s16 *a0) { \
s32 diff; \
diff = a0[2] - D_80126CB0; \
if (diff < 0) { \
diff = -diff; \
} \
return (u32)(diff - 0x2C1) < 0x3F; \
}
#define DEFINE_func_80143994() \
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); \
void func_80143994(s32 a0, s32 a1) { \
func_8012C658(0x1B, (s16)a1, a0); \
}
#define DEFINE_func_801477E8() \
void func_801477E8(s32 *a0, s32 a1) { \
a0[0xD] = a1; \
if (a1 < -0x1F0000) { \
a0[0xD] = -0x1F0000; \
} else if (a1 > 0x1F0000) { \
a0[0xD] = 0x1F0000; \
} \
}
#define DEFINE_func_80149AA8() \
s32 func_80149AA8(s32 *a0) { \
s32 v0; \
if (a0[0x44 / 4] & 0x404) { \
v0 = 0; \
} else { \
v0 = *(u16 *)((s32)a0 + 0xAC) & 0x80; \
v0 = v0 != 0; \
} \
return v0; \
}
#define DEFINE_func_8014B310() \
extern void func_8014B33C(void); \
extern s32 D_80078ECC; \
void func_8014B310(void) { \
func_8014B33C(); \
D_80078ECC = 0x80000000; \
}
#define DEFINE_func_8014C3A4() \
extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); \
s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3) { \
return func_8014C43C(a0, a1, a2, a3, *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12)); \
}
#define DEFINE_func_8014CB2C() \
extern u8 D_80126D1F; \
s32 func_8014CB2C(void) { \
s32 v1 = D_80126D1F; \
if (v1 & 0x80) { \
v1 = (v1 & 0x7F) | 0x80000000; \
} \
return v1; \
}
#define DEFINE_func_80154AB4() \
void func_80154AB4(s32 a0, s32 a1) { \
s32 *base = *(s32 **)(a0 + 0xCC); \
s32 v1 = base[a1]; \
*(s16 *)(a0 + 0xD6) = 1; \
*(s16 *)(a0 + 0xD4) = 1; \
*(s8 *)(a0 + 0xD8) = 0; \
*(s8 *)(a0 + 0xD9) = 0; \
*(s32 *)(a0 + 0xD0) = v1; \
}
#define DEFINE_func_80154B20() \
void func_80154B20(s32 a0, s32 a1, s32 a2) { \
s32 *base = *(s32 **)(a0 + 0xCC); \
s32 v1 = base[a1]; \
*(s16 *)(a0 + 0xD6) = 1; \
*(s16 *)(a0 + 0xD4) = 1; \
*(s8 *)(a0 + 0xD8) = a2; \
*(s8 *)(a0 + 0xD9) = a2; \
*(s32 *)(a0 + 0xD0) = v1; \
}
#define DEFINE_func_801607B8() \
extern void func_80149048(s32 *a0); \
void func_801607B8(s32 *a0) { \
a0[0x11] &= ~1; \
func_80149048(a0); \
}
#define DEFINE_func_801619A4() \
extern u8 D_80078EC0; \
s32 func_801619A4(s32 *a0) { \
if (*(s16 *)((s32)a0 + 0x1C8) == 0) { \
return 0; \
} \
return D_80078EC0 & 0x7F; \
}
#define DEFINE_func_8016DA04() \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
s32 func_8016DA04(s32 a0) { \
return func_80146994(0x31, a0, 0, 0); \
}
#define DEFINE_func_8016FB50() \
extern void func_80171928(void *a0); \
void func_8016FB50(void *a0) { \
s32 v1 = *(s32 *)((s32)a0 + 0x20); \
u16 v0 = *(u16 *)((s32)a0 + 0x132); \
*(s16 *)((s32)a0 + 0x136) = 0; \
*(s16 *)(v1 + 0x12) = v0; \
func_80171928(a0); \
}
#define DEFINE_func_8016FC64() \
extern void func_80171928(void *a0); \
void func_8016FC64(void *a0) { \
s32 v1 = *(s32 *)((s32)a0 + 0x20); \
u16 v0 = *(u16 *)((s32)a0 + 0x132); \
*(s16 *)((s32)a0 + 0x136) = 0; \
*(s16 *)(v1 + 0x12) = v0; \
func_80171928(a0); \
}
#define DEFINE_func_8017051C() \
extern u16 D_800AE6DC; \
extern void func_80171928(void *a0); \
void func_8017051C(void *a0) { \
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = D_800AE6DC; \
func_80171928(a0); \
}
#define DEFINE_func_80174604() \
extern s32 D_801150F8; \
extern void func_80174630(void); \
void func_80174604(void) { \
D_801150F8 = 1; \
func_80174630(); \
}
#define DEFINE_func_80179DCC() \
extern void func_80179B74(short *); \
void func_80179DCC(short a0) { \
short sp10[2]; \
sp10[1] = a0; \
sp10[0] = 2; \
func_80179B74(sp10); \
}
#define DEFINE_func_80179E1C() \
extern void func_80179B74(short *); \
void func_80179E1C(short a0) { \
short sp10[2]; \
sp10[1] = a0; \
sp10[0] = 3; \
func_80179B74(sp10); \
}
#define DEFINE_func_80179EE8() \
extern void func_80179B74(short *p); \
void func_80179EE8(short a0) { \
short sp[2]; \
sp[1] = a0; \
sp[0] = 0x12; \
func_80179B74(sp); \
}
#define DEFINE_func_80179F6C() \
extern void func_80179B74(short *p); \
void func_80179F6C(short a0) { \
short sp[2]; \
sp[1] = a0; \
sp[0] = 0x14; \
func_80179B74(sp); \
}
#define DEFINE_func_801391F0() \
extern void func_80139634(void *); \
extern void func_80139DC8(void); \
void func_801391F0(void *a0) { \
*(s16 *)((s32)a0 + 0x12) = 0; \
*(s16 *)((s32)a0 + 0x14) = 0; \
*(s16 *)((s32)a0 + 0x16) = 0; \
func_80139634(a0); \
func_80139DC8(); \
}
#define DEFINE_func_8013E558() \
extern void func_800D24A0(s32 a0); \
extern void func_80141788(void); \
extern void *D_8011DB24; \
void func_8013E558(void) { \
func_800D24A0(2); \
D_8011DB24 = (void *)func_80141788; \
}
#define DEFINE_func_8013E67C() \
extern void func_800D24A0(s32 a0); \
extern void func_8013E5E8(void); \
extern void *D_8011DB24; \
void func_8013E67C(void) { \
func_800D24A0(0); \
D_8011DB24 = (void *)func_8013E5E8; \
}
#define DEFINE_func_801496D4() \
s32 func_801496D4(void *a0) { \
s32 v0 = 0; \
if (*(s32 *)((s32)a0 + 0x178)) { \
return v0; \
} \
v0 = *(u16 *)((s32)a0 + 0xAC) & 0x40; \
if (v0) { \
v0 = 1; \
} \
return v0; \
}
#define DEFINE_func_8014B4D4() \
extern void func_80166244(void); \
extern s32 D_80078E98; \
void func_8014B4D4(void *a0) { \
*(u16 *)((s32)a0 + 0x1C8) = 0; \
D_80078E98 = 0x80000000; \
func_80166244(); \
}
#define DEFINE_func_8014BD98() \
extern u16 D_80078EB6; \
extern s16 D_80078EB8; \
void func_8014BD98(s32 a0, u16 a1) { \
D_80078EB8 = a1; \
if (D_80078EB6 < a1) { \
D_80078EB8 = D_80078EB6; \
} \
}
#define DEFINE_func_8014BF18() \
extern void func_800291A0(s32, s32); \
void func_8014BF18(s32 a0) { \
if (a0 < 0) { \
a0 = 0; \
} \
func_800291A0(0xCF, a0 & 0xFF); \
}
#define DEFINE_func_8014CBF8() \
void func_8014CBF8(void *a0) { \
s32 v1 = *(s32 *)((s32)a0 + 0x174); \
if (v1 != 0) { \
if (*(u16 *)(v1 + 0) != 0) { \
*(s32 *)((s32)a0 + 0x174) = 0; \
*(s8 *)(v1 + 0x74) = 0; \
} \
} \
}
#define DEFINE_func_80154274() \
extern void func_801542A4(void); \
void func_80154274(s32 *a0, s32 a1) { \
if (*(s32 *)((s32)a0 + 0xB4) != a1) { \
func_801542A4(); \
} \
}
#define DEFINE_func_801542DC() \
extern void func_8015430C(void); \
void func_801542DC(s32 *a0, s32 a1) { \
if (*(s32 *)((s32)a0 + 0xB4) != a1) { \
func_8015430C(); \
} \
}
#define DEFINE_func_80159404() \
s32 func_80159404(s32 a0, s32 a1) { \
s32 a2 = *(s32 *)((s32)a0 + 0x20); \
u16 v1 = *(u16 *)((s32)a0 + 0x236); \
u16 v0 = *(u16 *)((s32)a2 + 0x12); \
*(u16 *)((s32)a2 + 0x12) = (v0 + v1) & 0xFFF; \
return (*(s32 *)((s32)a0 + 0x234) -= a1); \
}
#define DEFINE_func_80159434() \
s32 func_80159434(s32 a0, s32 a1) { \
s32 a2 = *(s32 *)((s32)a0 + 0x20); \
u16 v1 = *(u16 *)((s32)a0 + 0x23A); \
u16 v0 = *(u16 *)((s32)a2 + 0x10); \
*(u16 *)((s32)a2 + 0x10) = (v0 - v1) & 0xFFF; \
return (*(s32 *)((s32)a0 + 0x238) += a1); \
}
#define DEFINE_func_8016004C() \
extern u8 D_800B9A17; \
void func_8016004C(s32 a0) { \
*(s32 *)((s32)a0 + 0x184) = 0; \
*(s16 *)((s32)a0 + 0x18A) = 0; \
*(s16 *)((s32)a0 + 0x188) = 0; \
*(s32 *)((s32)a0 + 0x44) &= ~0x10; \
D_800B9A17 = 1; \
}
#define DEFINE_func_801619D0() \
extern u8 D_80078EC0; \
s32 func_801619D0(void *a0) { \
s32 v0; \
if (*(s16 *)((s32)a0 + 0x1C8) == 0) { \
v0 = 0; \
} else { \
v0 = ((D_80078EC0 & 0x7F) ^ 3) == 0; \
} \
return v0; \
}
#define DEFINE_func_80161D58() \
extern void func_80161E08(s32); \
extern s32 func_80162438(s32); \
s32 func_80161D58(s32 a0) { \
func_80161E08(a0); \
return func_80162438(a0); \
}
#define DEFINE_func_80165770() \
extern u8 D_80078EC1; \
extern void func_800CAF6C(void); \
void func_80165770(void) { \
if (D_80078EC1 == 0xC) { \
func_800CAF6C(); \
} \
}
#define DEFINE_func_80165A20() \
extern void func_80165A78(s32); \
extern s32 func_80165A50(s32); \
s32 func_80165A20(s32 a0) { \
func_80165A78(a0); \
return func_80165A50(a0); \
}
#define DEFINE_func_8016A05C() \
extern u8 D_80078EC0; \
void func_8016A05C(void *a0) { \
s32 v0; \
if (D_80078EC0 & 0x7F) { \
v0 = *(u16 *)((s32)a0 + 2) + 1; \
} else { \
v0 = 2; \
} \
*(s16 *)((s32)a0 + 2) = v0; \
}
#define DEFINE_func_8016ED8C() \
extern s32 D_80126D70; \
extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); \
void func_8016ED8C(s32 a0, s32 a1, s32 a2) { \
func_8016EDEC(a0, a1, a2); \
D_80126D70 = a2; \
}
#define DEFINE_func_8016EDBC() \
extern s32 D_80126D70; \
extern void func_8016EE40(s32 a0, s32 a1, s32 a2); \
void func_8016EDBC(s32 a0, s32 a1, s32 a2) { \
func_8016EE40(a0, a1, a2); \
D_80126D70 = a2; \
}
#define DEFINE_func_8016F494() \
extern void func_80175414(s32); \
extern s32 func_8016F4C4(s32); \
s32 func_8016F494(s32 a0) { \
func_80175414(a0); \
return func_8016F4C4(a0); \
}
#define DEFINE_func_8016F804() \
extern void func_80171928(void *); \
void func_8016F804(void *a0) { \
if (*(u8 *)((s32)a0 + 0x1C2) != 0) { \
*(u8 *)((s32)a0 + 0x1C2) = 0; \
func_80171928(a0); \
} \
}
#define DEFINE_func_8012A5F8() \
extern void func_8012A62C(s32); \
void func_8012A5F8(void (*a0)(void), s32 a1) { \
func_8012A62C(a1 & 0xFF); \
a0(); \
}
#define DEFINE_func_801392C8() \
extern void func_801395D4(void *); \
void func_801392C8(void *a0) { \
func_801395D4(a0); \
*(s8 *)((s32)a0 + 0x1E) = 0; \
*(s16 *)((s32)a0 + 0x4) = 5; \
}
#define DEFINE_func_801417C4() \
extern void func_8001903C(void); \
extern u16 D_80115112; \
void func_801417C4(void) { \
u16 *p = &D_80115112; \
func_8001903C(); \
*p = *p + 1; \
}
#define DEFINE_func_8014C59C() \
extern s32 ratan2(s32 dx, s32 dy); \
s32 func_8014C59C(void *a0, void *a1) { \
s32 dx = *(s16 *)((s32)a0 + 0x6) - *(s16 *)((s32)a1 + 0x6); \
s32 dy = *(s16 *)((s32)a0 + 0xE) - *(s16 *)((s32)a1 + 0xE); \
return ratan2(dx, dy) & 0xFFF; \
}
#define DEFINE_func_80151238() \
extern void func_8014ACE8(void *a0, s32 a1, s32 a2); \
void func_80151238(void *a0) { \
s16 v0 = *(s16 *)((s32)a0 + 0xF2); \
if (v0 != 0) { \
func_8014ACE8(a0, 5, (s32)v0 & 0x7FFF); \
} \
}
#define DEFINE_func_80154418() \
extern void func_8015444C(void *a0, s32 *a1, s32 *a2, s32 *a3); \
void func_80154418(void *a0) { \
s32 sp10 = 0; \
s32 sp14 = 0; \
s32 sp18 = 0; \
func_8015444C(a0, &sp10, &sp14, &sp18); \
}
#define DEFINE_func_8015DC84() \
extern void func_80154A74(int, int); \
extern int func_8015DD74(int); \
int func_8015DC84(int a0) { \
func_80154A74(a0, 0x11); \
return func_8015DD74(a0); \
}
#define DEFINE_func_8015DFE4() \
extern void func_80154A74(int, int); \
extern int func_8015E0D4(int); \
int func_8015DFE4(int a0) { \
func_80154A74(a0, 0x11); \
return func_8015E0D4(a0); \
}
#define DEFINE_func_8015ED6C() \
extern u8 D_80078EBF; \
extern void func_80149048(s32 *a0); \
void func_8015ED6C(s32 *a0) { \
D_80078EBF = 0; \
*(s32 *)((s32)a0 + 0x44) &= -2; \
func_80149048(a0); \
}
#define DEFINE_func_80162FC0() \
void func_80162FC0(s32 *a0) { \
a0[1] += a0[4]; \
a0[2] += a0[5]; \
a0[3] += a0[6]; \
}
#define DEFINE_func_80165840() \
extern u8 D_80078EC3; \
extern void func_80165874(void); \
void func_80165840(void) { \
if (D_80078EC3 != 0) { \
D_80078EC3 = 0; \
func_80165874(); \
} \
}
#define DEFINE_func_80170B14() \
extern void func_801719A4(int a0, int a1); \
extern void func_80170B48(int a0); \
void func_80170B14(int a0) { \
func_801719A4(a0, 1); \
func_80170B48(a0); \
}
#define DEFINE_func_80171B10() \
extern s32 func_8014C568(void *a0); \
void func_80171B10(void *a0) { \
s32 ret = func_8014C568(a0); \
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = ret; \
}
#define DEFINE_func_8012A79C() \
extern s32 ratan2(s32 a0, s32 a1); \
s16 func_8012A79C(s16 *a0, s16 *a1) { \
s16 x0 = a0[0]; \
s16 x1 = a1[0]; \
s16 y0 = a0[2]; \
s16 y1 = a1[2]; \
return ratan2(x0 - x1, y0 - y1); \
}
#define DEFINE_func_8012B6D4() \
extern s32 ratan2(s32 a0, s32 a1); \
s32 func_8012B6D4(s16 *a0, s16 *a1) { \
s16 ax = a0[5]; \
s16 bx = a1[5]; \
s16 by = a1[1]; \
s16 ay = a0[1]; \
return (ratan2(ax - bx, by - ay) - 0x400) & 0xFFF; \
}
#define DEFINE_func_8012B70C() \
extern s32 ratan2(s32 a0, s32 a1); \
s32 func_8012B70C(s16 *a0, s16 *a1) { \
s16 ax = a0[2]; \
s16 bx = a1[2]; \
s16 by = a1[0]; \
s16 ay = a0[0]; \
return (ratan2(ax - bx, by - ay) - 0x400) & 0xFFF; \
}
#define DEFINE_func_8012B744() \
extern s32 ratan2(s32 x, s32 y); \
s32 func_8012B744(void *a0, void *a1) { \
s32 ang; \
ang = ratan2(*(s16 *)((s32)a0 + 0xA) - *(s16 *)((s32)a1 + 0x4), \
*(s16 *)((s32)a1 + 0x0) - *(s16 *)((s32)a0 + 0x2)); \
return (ang - 0x400) & 0xFFF; \
}
#define DEFINE_func_8012E32C() \
extern u8 D_800AF648; \
extern void func_8004914C(void *a0); \
extern void func_800491AC(void *a0); \
void func_8012E32C(void) { \
func_8004914C(&D_800AF648); \
func_800491AC(&D_800AF648); \
}
#define DEFINE_func_801484B0() \
extern void func_801485B8(s32 a0, s32 a1, s32 a2); \
extern s32 *D_80126B78; \
void func_801484B0(s32 a0, s32 a1) { \
func_801485B8(*(s32 *)((s32)D_80126B78 + 0x20) - 0x10, a0, a1); \
}
#define DEFINE_func_80148534() \
extern void func_801485B8(s32 a0, s32 a1, s32 a2); \
extern s32 *D_80126B78; \
void func_80148534(s32 a0, s32 a1) { \
func_801485B8(*(s32 *)((s32)D_80126B78 + 0x20) - 0x8, a0, a1); \
}
#define DEFINE_func_8014ADA8() \
extern s32 D_80078E8C; \
void func_8014ADA8(s32 a0, s32 a1) { \
s32 v0; \
v0 = D_80078E8C + a1; \
D_80078E8C = v0; \
if (0x1869F < (u32)v0) { \
D_80078E8C = 0x1869F; \
} \
}
#define DEFINE_func_8014BEC0() \
extern void func_80029124(s32 a0, s32 a1); \
extern u8 D_80078EC0; \
void func_8014BEC0(void) { \
D_80078EC0 |= 1; \
func_80029124(0x80, 1); \
}
#define DEFINE_func_801599E0() \
extern void func_80159A20(void *a0); \
void func_801599E0(void *a0) { \
func_80159A20(a0); \
*(u8 *)((s32)a0 + 0x4D) += 1; \
}
#define DEFINE_func_80161240() \
extern s32 func_801612B8(void *a0, s32 a1); \
extern void func_8016130C(void *a0, s32 a1); \
void func_80161240(void *a0) { \
func_8016130C(a0, func_801612B8(a0, 1)); \
}
#define DEFINE_func_80161418() \
extern s32 func_801615C4(void *a0, s32 a1); \
extern void func_8016163C(void *a0, s32 a1); \
void func_80161418(void *a0) { \
func_8016163C(a0, func_801615C4(a0, 0)); \
}
#define DEFINE_func_80161450() \
extern s32 func_801615C4(void *a0, s32 a1); \
extern void func_80161774(void *a0, s32 a1); \
void func_80161450(void *a0) { \
func_80161774(a0, func_801615C4(a0, 0)); \
}
#define DEFINE_func_801614E4() \
extern s32 func_801615C4(void *a0, s32 a1); \
extern void func_80161888(void *a0, s32 a1); \
void func_801614E4(void *a0) { \
func_80161888(a0, func_801615C4(a0, 0)); \
}
#define DEFINE_func_8016151C() \
extern s32 func_801615C4(void *a0, s32 a1); \
extern void func_8016191C(void *a0, s32 a1); \
void func_8016151C(void *a0) { \
func_8016191C(a0, func_801615C4(a0, 0)); \
}
#define DEFINE_func_80161554() \
extern s32 func_801615C4(void *a0, s32 a1); \
extern void func_8016163C(void *a0, s32 a1); \
void func_80161554(void *a0) { \
func_8016163C(a0, func_801615C4(a0, 1)); \
}
#define DEFINE_func_8016158C() \
extern s32 func_801615C4(void *a0, s32 a1); \
extern void func_80161774(void *a0, s32 a1); \
void func_8016158C(void *a0) { \
func_80161774(a0, func_801615C4(a0, 1)); \
}
#define DEFINE_func_801657A0() \
extern void func_801657D8(void); \
extern u8 D_80078EC3; \
void func_801657A0(void) { \
if (D_80078EC3 == 0) { \
D_80078EC3 = 1; \
func_801657D8(); \
} \
}
#define DEFINE_func_80173A28() \
extern s32 D_8012750C; \
extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); \
void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5) { \
func_80173A60(a0, a1, a2, a3, a4); \
D_8012750C = a5; \
}
#define DEFINE_func_80174BBC() \
void func_80174BBC(void *a0) { \
*(s32 *)((s32)a0 + 0xC) = 0x12C; \
*(s32 *)((s32)a0 + 0x14) = 0x12C; \
*(s16 *)((s32)a0 + 0x20) = 0x155; \
*(s16 *)((s32)a0 + 0x22) = 0x800; \
*(s16 *)((s32)a0 + 0x24) = 0; \
*(s16 *)((s32)a0 + 0x2E) = 0; \
*(s16 *)((s32)a0 + 0x30) = -0x28; \
*(s16 *)((s32)a0 + 0x32) = 0; \
*(s32 *)((s32)a0 + 0x54) = 0; \
}
#define DEFINE_func_80177784() \
void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3) { \
*(u32 *)((s32)a0 + 0x0) = (((s32)a0 - 0x14) & 0xFFFFFF) | 0x3000000; \
*(u32 *)((s32)a0 + 0x4) = 0x74808080; \
*(s32 *)((s32)a0 + 0x8) = a1; \
*(s32 *)((s32)a0 + 0xC) = a2; \
return (void *)((s32)a0 + 0x14); \
}
#define DEFINE_func_801466B4() \
void func_801466B4(u16 a0, s32 a1, s32 a2, s32 a3, s32 arg5) { \
func_801466F0(a0, a1, 0, 0, 0, a2, a3, arg5); \
}
#define DEFINE_func_8014A638() \
void func_8014A638(s32 arg0) { \
s16 v; \
if (*(s32 *)((s32)arg0 + 0x44) & 0x10) { \
v = *(u16 *)((s32)arg0 + 0x188) - 4; \
*(s16 *)((s32)arg0 + 0x188) = v; \
if (v < 0) { \
*(s16 *)((s32)arg0 + 0x188) = 0; \
} \
} \
}
#define DEFINE_func_8014B768() \
extern s32 D_80078E9C; \
void func_8014B768(s32 a0, s32 a1) { \
D_80078E9C -= a1; \
if (*(s16 *)((s32)&D_80078E9C + 2) < 0) { \
D_80078E9C = 0; \
} \
}
#define DEFINE_func_8014BC44() \
extern u16 D_80078EB2; \
extern void func_8014BC80(s32 a0, s32 a1); \
void func_8014BC44(s32 a0, s32 a1) { \
if (*(s32 *)((s32)a0 + 0x44) & 0x2000000) { \
a1 = D_80078EB2; \
} \
func_8014BC80(a0, a1); \
}
#define DEFINE_func_8014C88C() \
extern void func_80015978(s32 a0, s32 *a1); \
extern void func_8014C8C8(s32 a0, s32 *a1); \
void func_8014C88C(s32 a0) { \
s32 sp10; \
func_80015978(a0 + 4, &sp10); \
func_8014C8C8(a0, &sp10); \
}
#define DEFINE_func_80157A8C() \
extern void func_80161D20(s32 a0, s32 a1); \
extern void func_8014C010(s32 a0, s32 a1); \
void func_80157A8C(s32 a0) { \
func_80161D20(a0, *(u16 *)(a0 + 0x16E)); \
func_8014C010(a0, 1); \
}
#define DEFINE_func_80165694() \
extern s32 D_80078EC8; \
void func_80165694(s32 arg0) { \
if (*(s32 *)((s32)arg0 + 0x1F8) & 0x80FFFFFF) { \
return; \
} \
if (D_80078EC8 != 0) { \
D_80078EC8 = D_80078EC8 - 1; \
} \
}
#define DEFINE_func_8012D624() \
extern void func_8012D664(void *a0); \
void func_8012D624(s32 a0) { \
u16 sp[3]; \
sp[0] = *(u16 *)(a0 + 0x6); \
sp[1] = *(u16 *)(a0 + 0xA); \
sp[2] = *(u16 *)(a0 + 0xE); \
func_8012D664((void *)sp); \
}
#define DEFINE_func_8015369C() \
extern void (*D_8011DB28)(s32 a0); \
void func_8015369C(s32 a0) { \
if (D_8011DB28 != 0) { \
D_8011DB28(a0 + 0xA0); \
} \
*(u8 *)(a0 + 0xDE) = 0x5A; \
}
#define DEFINE_func_80154BE4() \
void func_80154BE4(s32 a0) { \
s32 sp10; \
s32 sp14; \
sp10 = 0; \
sp14 = 0; \
func_80154C24(a0, &sp10, &sp14); \
func_80154F9C(a0); \
}
#define DEFINE_func_8015987C() \
extern void func_800167B8(s32 a0); \
s32 func_8015987C(s32 a0) { \
func_800167B8(4); \
*(u8 *)(a0 + 0x15) = *(u8 *)(a0 + 0x15) + 1; \
return 0; \
}
#define DEFINE_func_80178BB8() \
void func_80178BB8(s32 a0, s32 a1) { \
func_80178BF8(a0, a1); \
func_80178CBC(a0, a1); \
}
#define DEFINE_func_8012BE54() \
extern void func_8012BE98(s32 a0, u16 *a1); \
extern u16 D_80126B5E; \
extern u16 D_80126B62; \
extern u16 D_80126B66; \
void func_8012BE54(s32 a0) { \
u16 sp[3]; \
sp[0] = D_80126B5E; \
sp[1] = D_80126B62; \
sp[2] = D_80126B66; \
func_8012BE98(a0, sp); \
}
#define DEFINE_func_8013A9B4() \
extern void func_8013A9F8(s32 a0, s32 a1); \
void func_8013A9B4(s32 a0, s32 a1) { \
*(s16 *)(a1 + 0x2) = 0; \
*(s32 *)(a1 + 0x4) = a0; \
*(s32 *)(a0 + 0x40) = a1; \
*(s16 *)(a1 + 0x0) = 1; \
*(s16 *)(a1 + 0xC) = 0; \
*(s16 *)(a1 + 0xE) = 0; \
func_8013A9F8(a1, *(u16 *)(a0 + 0x18)); \
}
#define DEFINE_func_80175624() \
extern s16 D_800B9A02; \
extern void func_801757A0(s32); \
void func_80175624(void *a0) { \
func_801757A0(D_800B9A02); \
*((u8 *)a0 + 1) = *((u8 *)a0 + 1) + 1; \
}
#define DEFINE_func_8014168C() \
extern u8 D_80115148[]; \
extern u8 D_80115149[]; \
extern u8 D_80115158[]; \
s16 func_8014168C(s16 a0) { \
s32 i = a0 * 2; \
return D_80115148[i] + D_80115149[i] * D_80115158[i]; \
}
#define DEFINE_func_8012A048() \
extern u16 D_80126B5E; \
extern u16 D_80126B62; \
extern u16 D_80126B66; \
extern s16 D_80126940; \
extern s16 D_80126942; \
extern s16 D_80126944; \
void func_8012A048(void *a0, s32 a1, u8 a2) { \
*(s32 *)((s32)a0 + 0x0) = a1; \
*(u8 *)((s32)a0 + 0x4) = a2; \
*(s32 *)((s32)a0 + 0x9C) = 0; \
*(s16 *)((s32)a0 + 0xA0) = 0; \
*(s16 *)((s32)a0 + 0xA2) = 0; \
D_80126940 = D_80126B5E; \
D_80126942 = D_80126B62; \
D_80126944 = D_80126B66; \
}
#define DEFINE_func_80150E84() \
extern void func_80150EC4(s32 a0, s32 a1); \
void func_80150E84(s32 a0) { \
func_80150EC4(a0, 0xE); \
}
#define DEFINE_func_80150EA4() \
extern void func_80150EC4(s32 a0, s32 a1); \
void func_80150EA4(s32 a0) { \
func_80150EC4(a0, 0xF); \
}
#define DEFINE_func_8012CC64() \
extern void func_8012CC88(s32 a0, s32 a1, s32 a2); \
void func_8012CC64(s32 a0, s32 a1) { \
func_8012CC88(a0, 0x11, a1); \
}
#define DEFINE_func_80143C74() \
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); \
void func_80143C74(s32 a0, s32 a1) { \
func_8012C658(0x205, a1, a0); \
}
#define DEFINE_func_8012BEE8() \
s32 func_8012BEE8(s32 a0) { \
s32 v0; \
v0 = *(s32*)(a0 + 0x1C); \
if (!v0) goto ret1; \
*(s32*)(a0 + 0x1C) = v0 - 1; \
return (u32)(v0 - 1) < 1; \
ret1: \
return 1; \
}
#define DEFINE_func_80146E98() \
s32 func_80146E98(s32 a0) { \
s32 v0; \
v0 = *(s32*)(a0 + 0x1C); \
if (v0 != 0) { \
v0 = v0 - 1; \
*(s32*)(a0 + 0x1C) = v0; \
return (u32)v0 < 1; \
} \
return 1; \
}
#define DEFINE_func_8016197C() \
s32 func_8016197C(s32 a0, s32 a1) { \
s32 v0; \
if (a1 & 1) { \
v0 = 1; \
} else if (a1 & 0x4000) { \
v0 = 2; \
} else { \
v0 = ((u32)a1 >> 11) & 4; \
} \
return v0; \
}
#define DEFINE_func_80171A88() \
s32 func_80171A88(s32 a0) { \
s32 v0; \
v0 = *(s32*)(a0 + 0x200); \
if (!v0) goto ret1; \
*(s32*)(a0 + 0x200) = v0 - 1; \
return (u32)(v0 - 1) < 1; \
ret1: \
return 1; \
}
#define DEFINE_func_80130AC4() \
void func_80130AC4(s32 a0) { \
s16 v0; \
v0 = *(u16*)(a0 + 0xAC) - 1; \
*(u16*)(a0 + 0xAC) = v0; \
if (v0 == 0) { \
*(u8*)(a0 + 0xC1) = 0; \
*(s16*)(a0 + 0x5E) = 0; \
} \
}
#define DEFINE_func_8013A9F8() \
void func_8013A9F8(s32 a0, s32 a1) { \
s32 orig = a1; \
a1 -= 2; \
a1 &= 0xFFFF; \
if ((u32)a1 < 5) { \
s32 b = orig & 0xFFFF; \
b -= 2; \
b <<= 10; \
*(s16*)(a0 + 0xE) = b; \
} \
}
#define DEFINE_func_80131C78() \
extern void func_80131CA8(s32 a0, s32 a1); \
void func_80131C78(s32 a0) { \
s32 v0 = *(s32*)(a0 + 0x20); \
*(s8*)(a0 + 0xC1) = 0; \
*(s16*)(v0 + 0x10) = 0; \
*(s16*)(a0 + 0x5E) = 0; \
func_80131CA8(a0, 0xE); \
}
#define DEFINE_func_80161A00() \
extern u8 D_80078EC0; \
s32 func_80161A00(s32 a0) { \
if (*(s16*)(a0 + 0x1C8) != 0) { \
return ((D_80078EC0 & 0x7F) ^ 0x4) == 0; \
} \
return 0; \
}
#define DEFINE_func_80161A30() \
extern u8 D_80078EC0; \
s32 func_80161A30(s32 a0) { \
if (*(s16*)(a0 + 0x1C8) != 0) { \
return ((D_80078EC0 & 0x7F) ^ 0x5) == 0; \
} \
return 0; \
}
#define DEFINE_func_80161A60() \
extern u8 D_80078EC0; \
s32 func_80161A60(s32 a0) { \
s32 v0; \
if (*(s16*)(a0 + 0x1C8) != 0) { \
v0 = ((D_80078EC0 & 0x7F) ^ 6) == 0; \
return v0; \
} \
return 0; \
}
#define DEFINE_func_8015A1C8() \
extern void func_801553C0(s32 a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015A1C8(s32 a0) { \
func_801553C0(a0); \
func_80154A74(a0, 0x11); \
}
#define DEFINE_func_8015AC90() \
extern void func_801553C0(s32 a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015AC90(s32 a0) { \
func_801553C0(a0); \
func_80154A74(a0, 0x11); \
}
#define DEFINE_func_8015CF24() \
extern void func_801553C0(s32 a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015CF24(s32 a0) { \
func_801553C0(a0); \
func_80154A74(a0, 0x11); \
}
#define DEFINE_func_801284B8() \
extern s32 func_800D0588(void); \
extern void func_80015310(void); \
extern void func_80011C10(void); \
void func_801284B8(void) { \
if (func_800D0588()) { \
func_80015310(); \
func_80011C10(); \
} \
}
#define DEFINE_func_8012C31C() \
extern u8 D_80120194[]; \
s32 func_8012C31C(void) { \
s32 a0; \
s32 v1; \
a0 = (s32)D_80120194; \
v1 = a0 + 0x6480; \
if (v1 != a0) { \
do { \
if (*(u16 *)v1 == 0) { \
return v1; \
} \
v1 -= 0x10C; \
} while (v1 != a0); \
} \
return 0; \
}
#define DEFINE_func_8012E544() \
extern u8 D_801202A0[]; \
s32 func_8012E544(s32 a0) { \
s32 a1; \
s32 v1; \
v1 = (s32)D_801202A0; \
a1 = v1 + 0x6480; \
if (v1 != a1) { \
do { \
if (*(u16 *)v1 == a0) { \
return v1; \
} \
v1 += 0x10C; \
} while (v1 != a1); \
} \
return 0; \
}
#define DEFINE_func_8013E410() \
extern u8 D_801202A0[]; \
s32 func_8013E410(void) { \
s32 a0; \
s32 v1; \
v1 = (s32)D_801202A0; \
for (a0 = 0; a0 < 0x60; a0++, v1 += 0x10C) { \
if (*(u16 *)v1 == 0) { \
return v1; \
} \
} \
return 0; \
}
#define DEFINE_func_8014BC0C() \
extern u16 D_80078EB2; \
void func_8014BC0C(s32 a0, s32 a1) { \
D_80078EB2 += a1; \
if ((u16)D_80078EB2 >= 0x1F5) { \
D_80078EB2 = 0x1F4; \
} \
}
#define DEFINE_func_8014C278() \
extern s32 func_80013328(s32 a0, s32 a1); \
s32 func_8014C278(s32 a0, s32 a1, s32 a2) { \
return func_80013328(a0 + 4, a1 + 4) < (s32)(a2 & 0xFFFF); \
}
#define DEFINE_func_801632F0() \
extern s32 D_80115200; \
s32 func_801632F0(void) { \
s32 i = 0; \
s32 *p = &D_80115200; \
s32 v0; \
do { \
v0 = p[0]; \
if (v0 != 0) { \
return v0; \
} \
i++; \
p++; \
} while (i < 3); \
return 0; \
}
#define DEFINE_func_8012B178() \
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
void func_8012B178(s32 a0, s32 a1) { \
s32 sp10[3]; \
sp10[2] = a1; \
sp10[1] = 0; \
sp10[0] = 0; \
func_800484EC(*(s32 *)(a0 + 0x20) + 0x34, (s32)sp10, a0 + 0x10); \
}
#define DEFINE_func_8012BF10() \
s32 func_8012BF10(s32 a0, s32 a1) { \
s32 v0; \
v0 = *(s32*)(a0 + 0x1C); \
if (v0 == 0) { \
v0 = 1; \
} else { \
v0 -= 1; \
*(s32*)(a0 + 0x1C) = v0; \
v0 = (u32)v0 < 1; \
} \
if (v0 != 0) { \
*(s32*)(a0 + 0x1C) = a1; \
return 1; \
} \
return 0; \
}
#define DEFINE_func_8012C1DC() \
extern u8 D_800B3DF0[]; \
s32 func_8012C1DC(s32 a0) { \
u8 *p; \
u8 *end; \
p = (u8 *)(*(s32 *)(a0 + 0x20) + 0x84); \
end = D_800B3DF0; \
if (p != end) { \
do { \
if (*(u16 *)p == 0) { \
return (s32)p; \
} \
p += 0x84; \
} while (p != end); \
} \
return 0; \
}
#define DEFINE_func_8012E4C8() \
void func_8012E4C8(s32 a0) { \
s32 v1; \
s32 t; \
v1 = *(s32 *)(a0 + 0x20); \
*(s16 *)(v1 + 0x1C) = 0x1000; \
*(s16 *)(v1 + 0x18) = 0x1000; \
*(s16 *)(a0 + 0x60) = 0; \
*(u16 *)(a0 + 0x5C) = *(u16 *)(a0 + 0x5C) | 1; \
t = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); \
*(s16 *)(a0 + 0x5E) = 1; \
*(s16 *)(a0 + 0x62) = t + 0x800; \
}
#define DEFINE_func_8012EF34() \
extern void func_8012EFB8(s32 a0); \
void func_8012EF34(s32 a0, s32 a1) { \
s32 sp10; \
register s32 v1 __asm__("$3"); \
func_8012EFB8(a0); \
{ \
register s32 *p __asm__("$3") = &sp10; \
__asm__ __volatile__("swc2 $19, 0(%0)" : : "r"(p) : "memory"); \
} \
v1 = sp10; \
*(s16 *)(a1 + 4) = v1; \
}
#define DEFINE_func_80149884() \
extern s16 currentLocationId; \
extern s32 func_8016F1AC(void); \
s32 func_80149884(void) { \
s32 ret; \
if (currentLocationId == 0x308F) { \
ret = 0; \
} else { \
ret = func_8016F1AC() == 0; \
} \
return ret; \
}
#define DEFINE_func_80149CD4() \
s32 func_80149CD4(s32 a0) { \
s32 v0; \
if (*(s32*)(a0 + 0x44) & 0x404) { \
v0 = 0; \
} else if (*(s16*)(a0 + 0x1C8) != 0) { \
v0 = 0; \
} else { \
v0 = *(u16*)(a0 + 0xAA) & 8; \
v0 = v0 != 0; \
} \
return v0; \
}
#define DEFINE_func_80149D9C() \
extern s32 func_80149E94(s32 a0); \
extern s32 func_80149DD8(s32 a0); \
s32 func_80149D9C(s32 a0) { \
s32 v0; \
if (func_80149E94(a0) != 0) { \
v0 = 1; \
} else { \
v0 = func_80149DD8(a0) != 0; \
} \
return v0; \
}
#define DEFINE_func_8016F410() \
extern s32 func_8016F44C(s32 a0); \
extern void func_8016F470(s32 a0); \
s32 func_8016F410(s32 a0) { \
if (func_8016F44C(a0) == 0) { \
return 0; \
} \
func_8016F470(a0); \
return 1; \
}
#define DEFINE_func_801282EC() \
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); \
void func_801282EC(void) { \
func_8001C0C8(); \
func_80015310(); \
func_80129258(); \
func_801378F0(); \
func_80010E14(); \
}
#define DEFINE_func_8012B864() \
extern s16 D_80126CB8; \
extern s16 D_80126CB4; \
extern s32 ratan2(s32 a0, s32 a1); \
s32 func_8012B864(s32 a0) { \
s32 dx = *(s16*)(a0 + 0xE) - D_80126CB8; \
s32 dy = D_80126CB4 - *(s16*)(a0 + 0x6); \
return (ratan2(dx, dy) - 0x400) & 0xFFF; \
}
#define DEFINE_func_8012D5E4() \
extern s16 D_80126B98; \
extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); \
s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3) { \
if (func_8012DEB8(a0, a1, a2) != 0) { \
D_80126B98 = a3; \
return 1; \
} \
return 0; \
}
#define DEFINE_func_8012E504() \
extern u8 D_801202A0[]; \
s32 func_8012E504(s32 a0, s32 a1) { \
s32 p; \
s32 end; \
p = (s32)D_801202A0; \
end = (s32)D_801202A0 + 0x6480; \
for (; p != end; p += 0x10C) { \
if (p != a0) { \
if (*(u16*)p == a1) { \
return p; \
} \
} \
} \
return 0; \
}
#define DEFINE_func_80130360() \
extern void func_80131CA8(s32 a0, s32 a1); \
void func_80130360(s32 a0) { \
*(u8*)(a0 + 0xC1) = 2; \
if (*(s32*)(a0 + 0xB4) & 2) { \
*(s16*)(a0 + 0x5C) = 0; \
*(s16*)(a0 + 0x98) = 0; \
*(s32*)(a0 + 0x1C) = 0; \
} \
func_80131CA8(a0, 1); \
}
#define DEFINE_func_80130858() \
extern void func_8012AD80(s32 a0); \
extern s32 func_8012BEE8(s32 a0); \
extern void func_801319E0(s32 a0); \
void func_80130858(s32 a0) { \
func_8012AD80(a0); \
if (func_8012BEE8(a0)) { \
func_801319E0(a0); \
} \
}
#define DEFINE_func_8013A8BC() \
extern u8 D_8011DA80[]; \
s32 func_8013A8BC(void) { \
s32 p; \
s32 i; \
p = (s32)D_8011DA80; \
for (i = 0; i < 0x20; i += 0x10) { \
if (*(s16*)((s32)D_8011DA80 + i) == 0) { \
return p; \
} \
p += 0x10; \
} \
return 0; \
}
#define DEFINE_func_80142414() \
extern s32 func_8012C588(s32 a0, s32 a1); \
void func_80142414(s32 a0, s16 a1) { \
s32 v0; \
v0 = func_8012C588(0x13, a0); \
if (v0 != 0) { \
*(s16*)(v0 + 0x52) = a1; \
} \
}
#define DEFINE_func_80144988() \
void func_80144988(s32 a0) { \
s32 t; \
*(u16*)(a0 + 0xA) = *(u16*)(a0 + 0xA) - 0x40; \
*(s32*)(a0 + 0x10) = *(s32*)(*(s32*)(a0 + 0x64) + 0x10); \
*(s32*)(a0 + 0x14) = *(s32*)(*(s32*)(a0 + 0x64) + 0x14); \
t = *(s32*)(*(s32*)(a0 + 0x64) + 0x18); \
*(u16*)(a0 + 0x2) = *(u16*)(a0 + 0x2) + 1; \
*(s32*)(a0 + 0x18) = t; \
}
#define DEFINE_func_80149184() \
extern s32 func_801491C4(s32 a0); \
s32 func_80149184(s32 a0) { \
s32 v0; \
s32 v1; \
v0 = func_801491C4(a0); \
v1 = *(u16*)(*(s32*)(a0 + 0x20) + 0x12); \
return (v1 - v0) & 0xFFF; \
}
#define DEFINE_func_801491C4() \
extern s32 ratan2(s32 a0, s32 a1); \
extern s32 D_801151D4; \
s32 func_801491C4(s32 a0) { \
s32 p; \
s32 v0; \
p = D_801151D4; \
v0 = ratan2(*(s32*)(p + 0x3C) - *(s32*)(p + 0x48), *(s32*)(p + 0x44) - *(s32*)(p + 0x50)); \
return (s16)v0; \
}
#define DEFINE_func_801526D4() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_80152714(s32 a0); \
void func_801526D4(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_80152714(a0); \
}
#define DEFINE_func_801565C0() \
extern s32 D_801151E0[]; \
s32 func_801565C0(void) { \
s32 result; \
u32 i; \
result = 0; \
for (i = 0; i < 3; i++) { \
if (D_801151E0[i] & 1) { \
result |= 1; \
} \
} \
return result; \
}
#define DEFINE_func_80175454() \
extern u8 D_8011F7A8; \
extern u8 D_8011F7A9; \
extern u8 D_8011F7AD; \
extern u8 D_8011F7AE; \
void func_80175454(void) { \
u8 *p = &D_8011F7A8; \
if (*p == 0) { \
*p = 1; \
D_8011F7A9 = 0; \
D_8011F7AD = 0xA; \
D_8011F7AE = 0; \
} \
}
#define DEFINE_func_801757A0() \
extern void func_80175DA8(s32 a0); \
extern void func_80175AB8(s32 a0); \
extern void func_80176144(s32 a0); \
void func_801757A0(s32 a0) { \
s32 v = (s16)a0; \
func_80175DA8(v); \
func_80175AB8(v); \
func_80176144(v); \
}
#define DEFINE_func_801757E0() \
extern void func_80176734(s32 a0); \
extern void func_80176218(s32 a0); \
extern void func_80176D00(s32 a0); \
void func_801757E0(s32 a0) { \
s32 v = (s16)a0; \
func_80176734(v); \
func_80176218(v); \
func_80176D00(v); \
}
#define DEFINE_func_801399F0() \
s32 func_801399F0(s32 a0) { \
s32 v1; \
if (*(s32*)(a0 + 0x0) == 0) return -1; \
v1 = *(s16*)(a0 + 0x4); \
if (v1 == 0) return -1; \
if (v1 == 0xE) return -1; \
if (v1 == 0xD) return *(s8*)(a0 + 0x1F); \
return 0; \
}
#define DEFINE_func_80134A28() \
s32 func_80134A28(s32 a0, s32 a1, s32 a2) { \
return *(s16*)(a0 + 0x0) * *(s16*)(a1 + 0x0) \
+ *(s16*)(a0 + 0x2) * *(s16*)(a1 + 0x2) \
+ *(s16*)(a0 + 0x4) * *(s16*)(a1 + 0x4) \
+ a2; \
}
#define DEFINE_func_80134FB8() \
s32 func_80134FB8(s32 a0, s32 a1, s32 a2) { \
return *(s16*)(a0 + 0x0) * *(s16*)(a1 + 0x0) \
+ *(s16*)(a0 + 0x2) * *(s16*)(a1 + 0x2) \
+ *(s16*)(a0 + 0x4) * *(s16*)(a1 + 0x4) \
+ a2; \
}
#define DEFINE_func_80147814() \
void func_80147814(s32 a0, s32 a1) { \
s32 v0 = *(s32*)(a0 + 0x34) + a1; \
*(s32*)(a0 + 0x34) = v0; \
if (a1 < 0) { \
if (v0 < (s32)0xFFE10000) { \
*(s32*)(a0 + 0x34) = (s32)0xFFE10000; \
return; \
} \
} \
if (a1 > 0) { \
if ((s32)0x1F0000 < *(s32*)(a0 + 0x34)) { \
*(s32*)(a0 + 0x34) = 0x1F0000; \
} \
} \
}
#define DEFINE_func_801518D8() \
s32 func_801518D8(s32 a0) { \
u8 v1 = *(u8*)(a0 + 0x3E); \
if (v1 == 0x1B) return 1; \
if (v1 == 0x1C) return 1; \
if (v1 == 0xF) return 1; \
if (v1 == 0x10) return 1; \
if (v1 == 0x3) return 1; \
if (v1 != 0x13) return v1 == 0x17; \
return 1; \
}
#define DEFINE_func_80147948() \
void func_80147948(s32 a0, s32 a1, s32 a2) { \
s32 v0 = *(s32*)(a0 + 0x24) + a1; \
*(s32*)(a0 + 0x24) = v0; \
if (a1 < 0) { \
if (!(-a2 < v0)) { \
*(s32*)(a0 + 0x24) = -a2; \
return; \
} \
} \
if (a1 > 0) { \
if (!(*(s32*)(a0 + 0x24) < a2)) { \
*(s32*)(a0 + 0x24) = a2; \
} \
} \
}
#define DEFINE_func_801479BC() \
void func_801479BC(s32 a0, s32 a1, s32 a2) { \
s32 v0 = *(s32*)(a0 + 0x28) + a1; \
*(s32*)(a0 + 0x28) = v0; \
if (a1 < 0) { \
if (!(-a2 < v0)) { \
*(s32*)(a0 + 0x28) = -a2; \
return; \
} \
} \
if (a1 > 0) { \
if (!(*(s32*)(a0 + 0x28) < a2)) { \
*(s32*)(a0 + 0x28) = a2; \
} \
} \
}
#define DEFINE_func_80147A30() \
void func_80147A30(s32 a0, s32 a1, s32 a2) { \
s32 v0 = *(s32*)(a0 + 0x2C) + a1; \
*(s32*)(a0 + 0x2C) = v0; \
if (a1 < 0) { \
if (-a2 >= v0) { \
*(s32*)(a0 + 0x2C) = -a2; \
return; \
} \
} \
if (a1 > 0) { \
if (*(s32*)(a0 + 0x2C) >= a2) { \
*(s32*)(a0 + 0x2C) = a2; \
} \
} \
}
#define DEFINE_func_8012E470() \
s32 func_8012E470(s32 a0) { \
s32 a1 = *(s32*)(a0 + 0x20); \
s32 v1 = *(s16*)(a1 + 0x18); \
s32 v0 = v1 + (0x1000 - v1) / 4; \
*(s16*)(a1 + 0x18) = (*(s16*)(a1 + 0x1C) = v0); \
v0 = *(s32*)(a0 + 0x1C); \
if (v0 != 0) { \
v0 -= 1; \
*(s32*)(a0 + 0x1C) = v0; \
v1 = v0; \
return (u32)v1 < 1; \
} \
return 1; \
}
#define DEFINE_func_80136BC4() \
void func_80136BC4(s32 a0) { \
if (*(s32*)(a0 + 0x8) == 0x20) { \
*(s32*)(a0 + 0x8) = a0 + 0x20; \
*(s32*)(a0 + 0xC) += a0; \
*(s32*)(a0 + 0x10) += a0; \
*(s32*)(a0 + 0x14) += a0; \
*(s32*)(a0 + 0x18) += a0; \
*(s32*)(a0 + 0x1C) += a0; \
} \
}
#define DEFINE_func_80138B88() \
void func_80138B88(s32 a0) { \
s32 a1; \
if (*(s32*)(a0 + 0x8) & 0x2000) { \
*(s16*)(a0 + 0x4) = 0xD; \
} else { \
*(s16*)(a0 + 0x4) = 0xC; \
*(s32*)(a0 + 0x8) &= ~0x1000; \
a1 = *(s32*)(a0 + 0x40); \
if (a1 != 0) { \
if (*(u16*)(a0 + 0x18) != 0) { \
*(s16*)a1 = 3; \
} \
} \
} \
}
#define DEFINE_func_801470C0() \
void func_801470C0(s32 a0) { \
s32 a1; \
a1 = *(s32*)(a0 + 0x20); \
if (a1 != 0) { \
if ((*(u8*)(a0 + 0x221) | *(u8*)(a0 + 0x220) | *(u8*)(a0 + 0x222)) != 0) { \
*(s32*)(a1 + 0x4) |= 0x80000000; \
} else { \
*(s32*)(a1 + 0x4) &= 0x7FFFFFFF; \
} \
} \
}
#define DEFINE_func_80151880() \
s32 func_80151880(s32 a0) { \
u16 h; \
s32 v1; \
h = *(u16*)(a0 + 0x3E); \
v1 = h & 0xFF; \
if (v1 == 0x1B) return 1; \
if (v1 == 0x1C) return 1; \
if (v1 == 0xF) return 1; \
if (v1 == 0x10) return 1; \
if (v1 == 0xB) return 2; \
if (v1 != 0x1F) return (h >> 8) & 2; \
return 1; \
}
#define DEFINE_func_80148038() \
void func_80148038(s32 a0, s32 a1) { \
s32 v1 = *(s32*)(a0 + 0x34); \
if (v1 < 0) { \
if (a1 < 0) { \
if ((s32)0xFFE10000 < v1) { \
} else { \
a1 = 0; \
} \
} \
} else { \
if (a1 > 0) { \
if (0x1EFFFF < v1) { \
a1 = 0; \
} \
} \
} \
*(s32*)(a0 + 0x34) += a1; \
}
#define DEFINE_func_80149228() \
s32 func_80149228(s32 a0) { \
u32 a1; \
s32 v0; \
if (*(s16*)(a0 + 0x1E4) == 0) { \
*(s32*)(a0 + 0x1DC) = 0; \
*(s32*)(a0 + 0x1E0) = 0; \
*(s16*)(a0 + 0x1E4) = *(u16*)(a0 + 0x1E6); \
} \
a1 = *(u16*)(a0 + 0xAC); \
if (a1 != 0) { \
s32 v0t = *(s32*)(a0 + 0x1E0); \
u16 v1t = *(u16*)(a0 + 0x1E6); \
s32 r; \
*(s32*)(a0 + 0x1E0) = a1; \
r = a1 & v0t; \
*(s16*)(a0 + 0x1E4) = v1t; \
*(s32*)(a0 + 0x1DC) = r; \
} \
v0 = *(u16*)(a0 + 0x1E4); \
v0 -= 1; \
*(s16*)(a0 + 0x1E4) = v0; \
return v0; \
}
#define DEFINE_func_801489E8() \
s32 func_801489E8(s32 a0) { \
u8 v1; \
v1 = *(u8*)(a0 + 0xA9); \
switch (v1) { \
case 0x41: \
return *(u16*)(a0 + 0xAA) & 0x8000; \
case 0x53: \
case 0x73: \
return *(u8*)(a0 + 0xAE) < 0x40; \
} \
return 0; \
}
#define DEFINE_func_8012AD80() \
void func_8012AD80(s32 a0) { \
*(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); \
}
#define DEFINE_func_8014891C() \
s32 func_8014891C(s32 a0) { \
u8 v1; \
v1 = *(u8*)(a0 + 0xA9); \
switch (v1) { \
case 0x41: \
return *(u16*)(a0 + 0xAA) & 0x1000; \
case 0x53: \
case 0x73: \
return (*(u16*)(a0 + 0xAE) >> 8) < 0x40; \
} \
return 0; \
}
#define DEFINE_func_80148A48() \
s32 func_80148A48(s32 a0) { \
u8 v1; \
v1 = *(u8*)(a0 + 0xA9); \
switch (v1) { \
case 0x41: \
return *(u16*)(a0 + 0xAA) & 0x2000; \
case 0x53: \
case 0x73: \
return *(u8*)(a0 + 0xAE) >= 0xC1; \
} \
return 0; \
}
#define DEFINE_func_8013435C() \
s32 func_8013435C(s16 *a0, s16 *a1, s32 a2, s16 *a3) { \
s32 t1; \
s32 sum; \
if (a3[1] < -0xE00) { \
t1 = -0x1800; \
} else { \
t1 = -0x2F00; \
} \
sum = a0[0] * a1[0] + a0[1] * a1[1]; \
sum = sum + a0[2] * a1[2]; \
sum = sum + a2; \
return sum < t1; \
}
#define DEFINE_func_80148980() \
s32 func_80148980(u8 *a0) { \
u8 c; \
s32 v0; \
c = a0[0xA9]; \
switch (c) { \
case 0x41: \
v0 = *(u16 *)(a0 + 0xAA) & 0x4000; \
break; \
case 0x53: \
case 0x73: \
v0 = ((u32)*(u16 *)(a0 + 0xAE) >> 8) < 0xC1; \
v0 = v0 ^ 1; \
break; \
default: \
v0 = 0; \
break; \
} \
return v0; \
}
#define DEFINE_func_801783D0() \
u32 func_801783D0(s32 a0, s32 a1) { \
s32 t0; \
s32 a2; \
s32 a3; \
t0 = 0; \
a2 = a0; \
a3 = 0; \
while (a2 >= 10) { \
a0 = a0 / 10; \
t0 = t0 | ((a2 - (a0 * 2 + a0 * 8)) << a3); \
a2 = a0; \
a3 += 4; \
} \
t0 = t0 | (a2 << a3); \
return t0 << a1; \
}
#define DEFINE_func_8012B260() \
void func_8012B260(u8 *a0) { \
u8 *a1; \
s32 a, b, c; \
u16 t; \
a1 = *(u8 **)(a0 + 0x20); \
a = (u16)*(u16 *)(a0 + 6) + (u16)*(u16 *)(a0 + 0x50); \
*(u16 *)(a1 + 8) = a; \
*(s32 *)(a1 + 0x48) = (s16)a; \
b = (u16)*(u16 *)(a0 + 0xA) + (u16)*(u16 *)(a0 + 0x52); \
*(u16 *)(a1 + 0xA) = b; \
*(s32 *)(a1 + 0x4C) = (s16)b; \
c = (u16)*(u16 *)(a0 + 0xE); \
t = *(u16 *)(a1 + 0x2C) | 1; \
c = c + (u16)*(u16 *)(a0 + 0x54); \
*(u16 *)(a1 + 0xC) = c; \
*(u16 *)(a1 + 0x2C) = t; \
*(s32 *)(a1 + 0x50) = (s16)c; \
}
#define DEFINE_func_801473EC() \
void func_801473EC(s32 *a0) { \
s32 *a2; \
a2 = a0; \
a2[1] += a2[4]; \
a2[2] += a2[5]; \
a2[3] += a2[6]; \
if (a2[4] != 0 || a2[5] != 0 || a2[6] != 0) { \
a2[0x11] |= 0x80000000; \
} \
}
#define DEFINE_func_801488A8() \
s32 func_801488A8(u8 *a0) { \
u8 c; \
s32 v0; \
u32 h; \
s32 lo; \
c = a0[0xA9]; \
switch (c) { \
case 0x41: \
v0 = *(u16 *)(a0 + 0xAA) & 0xF000; \
break; \
case 0x53: \
case 0x73: \
h = *(u16 *)(a0 + 0xAE); \
lo = h & 0xFF; \
if (lo != 0x80) { \
return 1; \
} \
if ((s32)(h >> 8) != lo) { \
return 1; \
} \
v0 = 0; \
break; \
default: \
v0 = 0; \
break; \
} \
return v0; \
}
#define DEFINE_func_8017509C() \
s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3) { \
a1 = (s16)a1; \
a0 = a0 + a1 * 14; \
if (*(s16 *)(a0 + 0xC) == 0x7FFF) { \
return 1; \
} \
*(u16 *)(a2 + 0) = *(u16 *)(a0 + 0); \
*(u16 *)(a2 + 2) = *(u16 *)(a0 + 2); \
*(u16 *)(a2 + 4) = *(u16 *)(a0 + 4); \
*(u16 *)(a3 + 0) = *(u16 *)(a0 + 6); \
*(u16 *)(a3 + 2) = *(u16 *)(a0 + 8); \
*(u16 *)(a3 + 4) = *(u16 *)(a0 + 0xA); \
return 0; \
}
#define DEFINE_func_80139C7C() \
void func_80139C7C(u8 *a0) { \
s32 a1; \
if (*(u8 *)(a0 + 0x20) != 0) { \
if (*(u8 *)(a0 + 0x22) & 0x8) { \
a1 = (*(s16 *)(a0 + 0x34) + 0x28) >> 1; \
} else { \
a1 = ((*(s16 *)(a0 + 0x34) + 0x28) >> 1) - 0x28; \
} \
} else { \
a1 = (s32)(*(u16 *)(a0 + 0x34) << 16) >> 17; \
} \
*(s16 *)(a0 + 0x30) = *(u16 *)(a0 + 0x24) - a1; \
*(s16 *)(a0 + 0x32) = *(u16 *)(a0 + 0x26) - ((s32)(*(u16 *)(a0 + 0x36) << 16) >> 17); \
}
#define DEFINE_func_80175014() \
s32 func_80175014(u8 *a0, u8 *a1, s32 a2) { \
a2 = (s16)a2; \
a1 = a1 + a2 * 14; \
if (*(s16 *)(a1 + 0xC) == 0x7FFF) { \
return 1; \
} \
*(s32 *)(a0 + 0x3C) = *(s16 *)(a1 + 0); \
*(s32 *)(a0 + 0x40) = *(s16 *)(a1 + 2); \
*(s32 *)(a0 + 0x44) = *(s16 *)(a1 + 4); \
*(s32 *)(a0 + 0x48) = *(s16 *)(a1 + 6); \
*(s32 *)(a0 + 0x4C) = *(s16 *)(a1 + 8); \
*(s32 *)(a0 + 0x50) = *(s16 *)(a1 + 0xA); \
*(s32 *)(a0 + 0x54) = *(s16 *)(a1 + 0xC) << 5; \
return 0; \
}
#define DEFINE_func_80146DF8() \
void func_80146DF8(s32 *a0, s32 a1, s32 a2, s32 a3, s32 t0) { \
if (a1 < 0) { \
if (a1 < -t0) a1 = -t0; \
} else { \
if (t0 < a1) a1 = t0; \
} \
if (a2 < 0) { \
if (a2 < -t0) a2 = -t0; \
} else { \
if (t0 < a2) a2 = t0; \
} \
if (a3 < 0) { \
if (a3 < -t0) a3 = -t0; \
} else { \
if (t0 < a3) a3 = t0; \
} \
*(s32 *)((s32)a0 + 0x24) = a1; \
*(s32 *)((s32)a0 + 0x28) = a2; \
*(s32 *)((s32)a0 + 0x2C) = a3; \
}
#define DEFINE_func_8012B608() \
s32 func_8012B608(s32 a0, s32 a1, s32 a2) { \
s32 v1; \
s32 t; \
a0 &= 0xFFF; \
a1 &= 0xFFF; \
v1 = a1 - a0; \
if (a0 == a1) { \
return 0; \
} \
if (v1 >= 0x801) { \
t = a0 + 0x1000; \
v1 = a1 - t; \
} \
if (v1 < -0x800) { \
t = a0 - 0x1000; \
v1 = a1 - t; \
} \
if (v1 >= 0) { \
v1 = v1 / a2; \
if (v1 != 0) { \
return v1; \
} \
v1 = 1; \
} else { \
v1 = v1 / a2; \
if (v1 != 0) { \
return v1; \
} \
v1 = -1; \
} \
return v1; \
}
#define DEFINE_func_8013361C() \
s32 func_8013361C(s16 *a0, s16 *a1, s16 *a2, s16 *a3) { \
if ((*(s16 *)((s32)a0 + 4) + *(s16 *)((s32)a2 + 0) > *(s16 *)((s32)a1 + 6) + *(s16 *)((s32)a3 + 0)) || \
(*(s16 *)((s32)a0 + 6) + *(s16 *)((s32)a2 + 0) < *(s16 *)((s32)a1 + 4) + *(s16 *)((s32)a3 + 0)) || \
(*(s16 *)((s32)a0 + 0xC) + *(s16 *)((s32)a2 + 4) > *(s16 *)((s32)a1 + 0xE) + *(s16 *)((s32)a3 + 4)) || \
(*(s16 *)((s32)a0 + 0xE) + *(s16 *)((s32)a2 + 4) < *(s16 *)((s32)a1 + 0xC) + *(s16 *)((s32)a3 + 4)) || \
(*(s16 *)((s32)a0 + 8) + *(s16 *)((s32)a2 + 2) > *(s16 *)((s32)a1 + 0xA) + *(s16 *)((s32)a3 + 2)) || \
(*(s16 *)((s32)a0 + 0xA) + *(s16 *)((s32)a2 + 2) < *(s16 *)((s32)a1 + 8) + *(s16 *)((s32)a3 + 2))) { \
return 0; \
} \
return 1; \
}
#define DEFINE_func_80137FD8() \
void func_80137FD8(s32 a0, s32 a1, s32 a2, s32 a3) { \
s32 v; \
u16 h30; \
*(u8 *)(a2 + 0x3) = 8; \
*(u8 *)(a2 + 0x7) = 0x3A; \
*(u8 *)(a2 + 0x4) = *(u8 *)(a1 + 0x0); \
*(u8 *)(a2 + 0x5) = *(u8 *)(a1 + 0x1); \
*(u8 *)(a2 + 0x6) = *(u8 *)(a1 + 0x2); \
*(u8 *)(a2 + 0xC) = *(u8 *)(a1 + 0x0); \
*(u8 *)(a2 + 0xD) = *(u8 *)(a1 + 0x1); \
*(u8 *)(a2 + 0xE) = *(u8 *)(a1 + 0x2); \
*(u8 *)(a2 + 0x14) = 0xFF; \
*(u8 *)(a2 + 0x15) = 0xFF; \
*(u8 *)(a2 + 0x16) = 0xFF; \
*(u8 *)(a2 + 0x1C) = 0xFF; \
*(u8 *)(a2 + 0x1D) = 0xFF; \
*(u8 *)(a2 + 0x1E) = 0xFF; \
h30 = *(u16 *)(a0 + 0x30); \
*(u16 *)(a2 + 0x18) = h30; \
*(u16 *)(a2 + 0x8) = h30; \
if (*(u32 *)(a0 + 0x8) & 0x2000) { \
v = (*(u16 *)(a0 + 0x30) + *(u16 *)(a0 + 0x34)) - 0xC; \
*(u16 *)(a2 + 0x20) = v; \
*(u16 *)(a2 + 0x10) = v; \
} else { \
s32 w = *(u16 *)(a0 + 0x30) + *(u16 *)(a0 + 0x34); \
*(u16 *)(a2 + 0x20) = w; \
*(u16 *)(a2 + 0x10) = w; \
} \
if (*(u8 *)(a1 + 0x3) == 0) { \
s32 hi = a3 + 0x5; \
*(u16 *)(a2 + 0x12) = a3; \
*(u16 *)(a2 + 0xA) = a3; \
*(u16 *)(a2 + 0x22) = hi; \
*(u16 *)(a2 + 0x1A) = hi; \
return; \
} \
{ \
s32 lo = a3 + 0xC; \
register s32 hi __asm__("$3") = a3 + 0x5; \
*(u16 *)(a2 + 0x12) = lo; \
*(u16 *)(a2 + 0xA) = lo; \
*(u16 *)(a2 + 0x22) = hi; \
*(u16 *)(a2 + 0x1A) = hi; \
} \
__asm__ __volatile__("" ::: "memory"); \
}
#define DEFINE_func_8016C374() \
s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3) { \
s32 v; \
*(u16 *)(a1 + 0x0) = *(u16 *)(a1 + 0x0) - 0xA; \
if ((s16)*(u16 *)(a1 + 0x0) < 0) { \
*(u16 *)(a1 + 0x0) = 0; \
} \
*(u16 *)(a1 + 0x2) = *(u16 *)(a1 + 0x2) - 0xA; \
if ((s16)*(u16 *)(a1 + 0x2) < 0) { \
*(u16 *)(a1 + 0x2) = 0; \
} \
*(u16 *)(a1 + 0x4) = *(u16 *)(a1 + 0x4) - 0xA; \
if ((s16)*(u16 *)(a1 + 0x4) < 0) { \
*(u16 *)(a1 + 0x4) = 0; \
} \
*(u16 *)(a2 + 0x0) = *(u16 *)(a2 + 0x0) - 0xA; \
if ((s16)*(u16 *)(a2 + 0x0) < 0) { \
*(u16 *)(a2 + 0x0) = 0; \
} \
*(u16 *)(a2 + 0x2) = *(u16 *)(a2 + 0x2) - 0xA; \
if ((s16)*(u16 *)(a2 + 0x2) < 0) { \
*(u16 *)(a2 + 0x2) = 0; \
} \
*(u16 *)(a2 + 0x4) = *(u16 *)(a2 + 0x4) - 0xA; \
if ((s16)*(u16 *)(a2 + 0x4) < 0) { \
*(u16 *)(a2 + 0x4) = 0; \
} \
*(u8 *)(a3 + 0x0) = *(u16 *)(a1 + 0x0); \
*(u8 *)(a3 + 0x1) = *(u16 *)(a1 + 0x2); \
*(u8 *)(a3 + 0x2) = *(u16 *)(a1 + 0x4); \
*(u8 *)(a3 + 0x4) = *(u16 *)(a2 + 0x0); \
*(u8 *)(a3 + 0x5) = *(u16 *)(a2 + 0x2); \
*(u8 *)(a3 + 0x6) = *(u16 *)(a2 + 0x4); \
v = *(u16 *)(a2 + 0x4) | (*(u16 *)(a2 + 0x0) | *(u16 *)(a2 + 0x2)); \
return (s16)v; \
}
#define DEFINE_func_80147118() \
void func_80147118(s32 a0) { \
s32 vec[3]; \
vec[0] = ((s32)(*(s16 *)(a0 + 0x60) * *(s16 *)(a0 + 0x68)) / 4096); \
vec[0] = ((s32)(vec[0] * *(s16 *)(a0 + 0x70)) / 4096); \
vec[1] = ((s32)(*(s16 *)(a0 + 0x62) * *(s16 *)(a0 + 0x6A)) / 4096); \
vec[1] = ((s32)(vec[1] * *(s16 *)(a0 + 0x72)) / 4096); \
vec[2] = ((s32)(*(s16 *)(a0 + 0x64) * *(s16 *)(a0 + 0x6C)) / 4096); \
vec[2] = ((s32)(vec[2] * *(s16 *)(a0 + 0x74)) / 4096); \
if (0xFFFF < vec[0]) { \
vec[0] = 0xFFFF; \
} \
if (0xFFFF < vec[1]) { \
vec[1] = 0xFFFF; \
} \
if (0xFFFF < vec[2]) { \
vec[2] = 0xFFFF; \
} \
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x18) = vec[0]; \
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x1A) = vec[1]; \
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x1C) = vec[2]; \
}
#define DEFINE_func_80129220() \
extern void func_80129258(void); \
extern void func_80129248(s16 a0); \
void func_80129220(void) { \
func_80129258(); \
func_80129248(1); \
}
#define DEFINE_func_8012CBA4() \
extern void func_8012CC88(s32 a, s32 b, s32 c); \
extern u8 D_800D3918[]; \
void func_8012CBA4(s32 a0) { \
func_8012CC88(a0, 0, (s32)D_800D3918); \
}
#define DEFINE_func_8012CBCC() \
extern void func_8012CC88(s32 a, s32 b, s32 c); \
extern u8 D_800D3918[]; \
void func_8012CBCC(s32 a0) { \
func_8012CC88(a0, 1, (s32)D_800D3918); \
}
#define DEFINE_func_80179E48() \
extern void func_80179B74(s16 *a0); \
void func_80179E48(s16 a0) { \
s16 sp[2]; \
sp[0] = 0x1F; \
sp[1] = a0; \
func_80179B74(sp); \
}
#define DEFINE_func_80179E74() \
extern void func_80179B74(s16 *a0); \
void func_80179E74(s16 a0) { \
s16 sp[2]; \
sp[0] = 0x4; \
sp[1] = a0; \
func_80179B74(sp); \
}
#define DEFINE_func_80170718() \
extern void func_80129FF4(void); \
extern void func_80171928(void *a0); \
void func_80170718(void *a0) { \
func_80129FF4(); \
func_80171928(a0); \
}
#define DEFINE_func_80170C14() \
extern s32 func_80171990(u8 *a0); \
extern void func_80170C44(u8 *a0); \
void func_80170C14(u8 *a0) { \
func_80171990(a0); \
func_80170C44(a0); \
}
#define DEFINE_func_8017115C() \
extern s32 func_80171990(u8 *a0); \
extern void func_8017118C(u8 *a0); \
void func_8017115C(u8 *a0) { \
func_80171990(a0); \
func_8017118C(a0); \
}
#define DEFINE_func_801717F4() \
extern void func_8013E588(void *a0); \
extern void func_80171928(void *a0); \
void func_801717F4(void *a0) { \
func_8013E588(a0); \
func_80171928(a0); \
}
#define DEFINE_func_80171824() \
extern void func_80175414(s32); \
extern void func_80171928(void *a0); \
void func_80171824(void *a0) { \
func_80175414((s32)a0); \
func_80171928(a0); \
}
#define DEFINE_func_80171854() \
extern void func_80175454(void); \
extern void func_80171928(void *a0); \
void func_80171854(void *a0) { \
func_80175454(); \
func_80171928(a0); \
}
#define DEFINE_func_80172B14() \
extern s16 D_80126B32; \
extern s32 func_80172B44(void *a0); \
extern void func_80174684(void *); \
void func_80172B14(s16 a0) { \
D_80126B32 = a0; \
func_80174684((void *)func_80172B44); \
}
#define DEFINE_func_801733CC() \
extern void func_8016F30C(void); \
extern s32 func_80174650(s32); \
void func_801733CC(s32 a0) { \
func_8016F30C(); \
func_80174650(a0); \
}
#define DEFINE_func_801737B8() \
extern s16 D_80126B30; \
extern s32 func_801737E8(void *a0); \
extern void func_80174684(void *); \
void func_801737B8(s16 a0) { \
D_80126B30 = a0; \
func_80174684((void *)func_801737E8); \
}
#define DEFINE_func_801738DC() \
extern s16 D_80126B30; \
extern s32 func_8017390C(void *a0); \
extern void func_80174684(void *); \
void func_801738DC(s16 a0) { \
D_80126B30 = a0; \
func_80174684((void *)func_8017390C); \
}
#define DEFINE_func_80174158() \
extern s32 func_80174188(s32 a0); \
extern void func_801741A8(s32 a0); \
void func_80174158(s32 a0) { \
func_80174188(a0); \
func_801741A8(a0); \
}
#define DEFINE_func_801743C0() \
extern void func_80171A1C(u8 *a0); \
extern void func_801743F0(u8 *a0); \
void func_801743C0(u8 *a0) { \
func_80171A1C(a0); \
func_801743F0(a0); \
}
#define DEFINE_func_801744B0() \
extern void func_80171A1C(u8 *a0); \
extern void func_801744E0(u8 *a0); \
void func_801744B0(u8 *a0) { \
func_80171A1C(a0); \
func_801744E0(a0); \
}
#define DEFINE_func_80174C80() \
extern s32 func_80174CB0(s32, s32); \
void func_80174C80(s32 a0) { \
s32 v; \
v = (*(u16 *)(a0 + 0xA0) - 0x16) & 0xFFF; \
*(s16 *)(a0 + 0xA0) = v; \
func_80174CB0(a0, v); \
}
#define DEFINE_func_80179F14() \
extern void func_80179B74(s16 *a0); \
void func_80179F14(s16 a0, s16 a1) { \
s16 sp[3]; \
sp[0] = 0x13; \
sp[1] = a0; \
sp[2] = a1; \
func_80179B74(sp); \
}
#define DEFINE_func_8015F2F0() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015F324(s32 *a0); \
void func_8015F2F0(s32 *a0) { \
func_80147078(a0, 0x14); \
func_8015F324(a0); \
}
#define DEFINE_func_8015F738() \
extern void func_801553A8(s32 *a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015F738(s32 *a0) { \
func_801553A8(a0); \
func_80154A74((s32)a0, 0x11); \
}
#define DEFINE_func_8015F76C() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015F848(s32 *a0); \
void func_8015F76C(s32 *a0) { \
func_80147078(a0, 0x15); \
func_8015F848(a0); \
}
#define DEFINE_func_8015FA44() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015FBE0(s32 *a0); \
void func_8015FA44(s32 *a0) { \
func_80147078(a0, 0x16); \
func_8015FBE0(a0); \
}
#define DEFINE_func_8015FA78() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015FAAC(s32 *a0); \
void func_8015FA78(s32 *a0) { \
func_80147078(a0, 0x16); \
func_8015FAAC(a0); \
}
#define DEFINE_func_801600D0() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_801601AC(s32 *a0); \
void func_801600D0(s32 *a0) { \
func_80147078(a0, 0x18); \
func_801601AC(a0); \
}
#define DEFINE_func_80160104() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80160138(s32 *a0); \
void func_80160104(s32 *a0) { \
func_80147078(a0, 0x18); \
func_80160138(a0); \
}
#define DEFINE_func_80160334() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80160410(s32 *a0); \
void func_80160334(s32 *a0) { \
func_80147078(a0, 0x1B); \
func_80160410(a0); \
}
#define DEFINE_func_80160368() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8016039C(s32 *a0); \
void func_80160368(s32 *a0) { \
func_80147078(a0, 0x1B); \
func_8016039C(a0); \
}
#define DEFINE_func_801607E4() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_801608C0(s32 *a0); \
void func_801607E4(s32 *a0) { \
func_80147078(a0, 0x1C); \
func_801608C0(a0); \
}
#define DEFINE_func_80160818() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8016084C(s32 *a0); \
void func_80160818(s32 *a0) { \
func_80147078(a0, 0x1C); \
func_8016084C(a0); \
}
#define DEFINE_func_80160ACC() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80160BB4(s32 *a0); \
void func_80160ACC(s32 *a0) { \
func_80147078(a0, 0x1D); \
func_80160BB4(a0); \
}
#define DEFINE_func_8012F75C() \
extern void func_80131B14(void); \
extern void func_80131CA8(int a0, int a1); \
void func_8012F75C(s32 a0) { \
*(u8 *)(a0 + 0xC1) = 3; \
if (*(s32 *)(a0 + 0xB4) & 0x4) { \
func_80131B14(); \
*(s32 *)(a0 + 0x1C) = 0x10; \
*(s16 *)(a0 + 0x98) = 0; \
} \
func_80131CA8(a0, 6); \
}
#define DEFINE_func_80132E6C() \
extern void Square0(s32 *a0, s32 *a1); \
extern s16 D_80126CAC; \
extern s16 D_80126CB0; \
s32 func_80132E6C(s16 *a0) { \
s32 in[3]; \
s32 out[3]; \
in[0] = a0[3] - D_80126CAC; \
in[1] = 0; \
in[2] = a0[7] - D_80126CB0; \
Square0(in, out); \
return out[0] + out[2]; \
}
#define DEFINE_func_80147860() \
extern void func_80147928(int a0, int a1); \
extern void func_8014799C(int a0, int a1); \
extern void func_80147A10(int a0, int a1); \
void func_80147860(int a0, int a1, int a2, int a3) { \
func_80147928(a0, a1); \
func_8014799C(a0, a2); \
func_80147A10(a0, a3); \
}
#define DEFINE_func_8014C2B0() \
extern s32 func_8014C59C(void *a0, void *a1); \
extern s32 func_80012A60(s32 a0, s32 a1); \
s32 func_8014C2B0(void *a0, void *a1, s32 a2) { \
s16 r1 = (s16)func_8014C59C(a0, a1); \
s32 v1 = *(s32 *)((u8 *)a0 + 0x20); \
s16 r2 = (s16)func_80012A60(r1, *(s16 *)(v1 + 0x12)); \
return r2 < (a2 & 0xFFFF); \
}
#define DEFINE_func_80165BFC() \
extern s32 func_80161208(void); \
extern void func_80165C58(s32 arg0); \
extern void func_801599A4(void *a0); \
extern void func_80159B3C(void *a0); \
void func_80165BFC(void *a0) { \
if (func_80161208() == 0) { \
if (*(u16 *)((u8 *)a0 + 0xB8) & 0x8000) { \
func_80165C58((s32)a0); \
func_801599A4(a0); \
func_80159B3C(a0); \
} \
} \
}
#define DEFINE_func_8016E688() \
extern void func_8016E778(void); \
void func_8016E688(void *a0) { \
u16 *p = (u16 *)a0; \
s16 v; \
p[0x10/2] += 0x200; \
v = p[0x12/2] + p[0x10/2]; \
p[0x12/2] = v; \
if (v >= 0x3000) { \
*(s32 *)((u8 *)a0 + 0x1C) = 4; \
*(s16 *)((u8 *)a0 + 0x2) += 1; \
} \
func_8016E778(); \
}
#define DEFINE_func_801735EC() \
extern void func_801477E8(s32 *a0, s32 a1); \
extern void func_80171A1C(u8 *a0); \
extern s16 D_80126B40; \
extern s16 D_80126B32; \
void func_801735EC(void *a0) { \
if (D_80126B40 != 0) { \
*(s32 *)((u8 *)a0 + 0x44) |= 0x40000; \
} \
func_801477E8((s32 *)a0, D_80126B32 << 16); \
func_80171A1C((u8 *)a0); \
}
#define DEFINE_func_801290DC() \
extern u8 *func_8012913C(s32 a0); \
u8 *func_801290DC(s32 a0, u8 *a1) { \
u8 *v1 = func_8012913C(a0 & 0xFFFF); \
if (v1 != 0) { \
*(u16 *)(v1 + 0x6) = *(u16 *)(a1 + 0x0); \
*(u16 *)(v1 + 0xA) = *(u16 *)(a1 + 0x2); \
*(u16 *)(v1 + 0xE) = *(u16 *)(a1 + 0x4); \
} \
return v1; \
}
#define DEFINE_func_80142778() \
extern void func_8012C218(void *a0); \
void func_80142778(u8 *a1) { \
u8 *a0 = *(u8 **)(a1 + 0x20); \
*(u16 *)(a0 + 0x18) = *(u16 *)(a0 + 0x18) - 0x800; \
*(u16 *)(a0 + 0x1A) = *(u16 *)(a0 + 0x1A) - 0x800; \
*(u16 *)(a1 + 0xA) = *(u16 *)(a1 + 0xA) + 0x10; \
if (*(s16 *)(a0 + 0x18) <= 0) { \
func_8012C218(a1); \
} \
}
#define DEFINE_func_8014C99C() \
extern s32 func_80029178(s32 arg); \
extern s32 func_8016F1AC(void); \
extern void func_80139914(s32 a0); \
extern void func_80029124(s32, s32); \
void func_8014C99C(u8 *a0) { \
if ((func_80029178(0x119) & 0xFF) != 0) { \
if (func_8016F1AC() != 0) { \
func_80139914(*(s32 *)(a0 + 0x198)); \
*(s32 *)(a0 + 0x198) = 0; \
func_80029124(0x119, 0); \
} \
} \
}
#define DEFINE_func_8017084C() \
extern void func_801719A4(int a0, int a1); \
extern void func_8014706C(void *a0); \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_8016BADC(void *a0, s32 a1, s32 a2); \
extern s32 func_80171990(u8 *a0); \
extern void func_801708B0(void *a0); \
extern u8 D_800D5DA8; \
void func_8017084C(s32 a0) { \
func_801719A4(a0, 1); \
func_8014706C((void *)a0); \
func_80154274((s32 *)a0, (s32)&D_800D5DA8); \
func_8016BADC((void *)a0, -0x40, 0x40); \
func_80171990((u8 *)a0); \
func_801708B0((void *)a0); \
}
#define DEFINE_func_8016F95C() \
extern s32 func_80171CC4(void *a0, void *a1); \
extern s32 func_80171D1C(void *a0, void *a1, s32 a2); \
extern void func_80171928(void *a0); \
extern u16 D_8011F73E; \
void func_8016F95C(void *a0) { \
u16 *p = &D_8011F73E; \
u16 v = *p; \
s32 r; \
if (v == 0) { \
r = func_80171CC4(a0, p - 3); \
} else { \
r = func_80171D1C(a0, p - 3, v & 0xFF); \
} \
if (r != 0) { \
func_80171928(a0); \
} \
}
#define DEFINE_func_801722CC() \
extern s32 func_80172664(s32 *a0); \
void func_801722CC(s32 *a0) { \
if (func_80172664(a0) == 0) { \
*(s16 *)((u8 *)a0 + 0xAC) = 0x40; \
*(s16 *)((u8 *)a0 + 0xAA) = 0x40; \
} \
}
#define DEFINE_func_8017280C() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_80172844(u8 *a0); \
void func_8017280C(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_80172844(a0); \
}
#define DEFINE_func_80172920() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_80172958(u8 *a0); \
void func_80172920(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_80172958(a0); \
}
#define DEFINE_func_80172CDC() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_80172D14(u8 *a0); \
void func_80172CDC(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_80172D14(a0); \
}
#define DEFINE_func_80172DE8() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_80172E20(u8 *a0); \
void func_80172DE8(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_80172E20(a0); \
}
#define DEFINE_func_80173580() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_801735B8(u8 *a0); \
void func_80173580(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_801735B8(a0); \
}
#define DEFINE_func_80173738() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_80173770(u8 *a0); \
void func_80173738(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_80173770(a0); \
}
#define DEFINE_func_80173824() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_8017385C(u8 *a0); \
void func_80173824(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_8017385C(a0); \
}
#define DEFINE_func_80173948() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_80173980(u8 *a0); \
void func_80173948(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_80173980(a0); \
}
#define DEFINE_func_80173B88() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_80173BC0(u8 *a0); \
void func_80173B88(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_80173BC0(a0); \
}
#define DEFINE_func_801742E0() \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_80174318(u8 *a0); \
void func_801742E0(u8 *a0) { \
func_80147060(a0); \
func_80171A1C(a0); \
func_80174318(a0); \
}
#define DEFINE_func_8012DFD4() \
extern void func_8012E014(void); \
extern void func_8012E138(void); \
void func_8012DFD4(u8 *a0) { \
if (a0[0x74]) { \
func_8012E014(); \
} else { \
func_8012E138(); \
} \
}
#define DEFINE_func_80165374() \
extern void func_801653F4(s32 a0); \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80165580(s32 a0); \
void func_80165374(s32 a0) { \
func_801653F4(a0); \
func_80147078((s32 *)a0, 0x17); \
*(u8 *)(a0 + 0x197) = 1; \
func_80165580(a0); \
}
#define DEFINE_func_8016E6E4() \
extern void func_8016E778(void); \
void func_8016E6E4(s32 a0) { \
s32 v0 = *(s32 *)(a0 + 0x1C) - 1; \
*(s32 *)(a0 + 0x1C) = v0; \
if (v0 == -1) { \
*(u16 *)(a0 + 2) = *(u16 *)(a0 + 2) + 1; \
} \
func_8016E778(); \
}
#define DEFINE_func_8016FA00() \
extern void func_801719A4(int a0, int a1); \
extern void func_80171B44(s32 *a0); \
extern s32 func_80171990(u8 *a0); \
extern void func_8016FA44(s32 a0); \
void func_8016FA00(s32 a0) { \
func_801719A4(a0, 1); \
func_80171B44((s32 *)a0); \
func_80171990((u8 *)a0); \
func_8016FA44(a0); \
}
#define DEFINE_func_801744E0() \
extern void func_800D1724(s32 a0); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
extern s32 D_80127508; \
void func_801744E0(u8 *a0) { \
func_800D1724(D_80127508); \
func_80171A1C(a0); \
func_80174650((s32)a0); \
}
#define DEFINE_func_801284F0() \
extern void func_80175308(void); \
extern void func_8016E8F0(void); \
extern void func_80175494(void); \
extern void func_80011C10(void); \
extern u8 D_800B9A64; \
void func_801284F0(void) { \
func_80175308(); \
func_8016E8F0(); \
if (D_800B9A64 != 0) { \
func_80175494(); \
} \
func_80011C10(); \
}
#define DEFINE_func_8012B1B4() \
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
void func_8012B1B4(s32 a0, s32 a1) { \
s32 sp10[4]; \
func_800484EC(*(s32 *)(a0 + 0x20) + 0x34, a1, (s32)sp10); \
*(s32 *)(a0 + 0x10) = sp10[0]; \
*(s32 *)(a0 + 0x18) = sp10[2]; \
}
#define DEFINE_func_8012F87C() \
extern void func_80131340(s32 a0); \
extern void func_80131CA8(int a0, int a1); \
void func_8012F87C(s32 a0) { \
if (*(s32 *)(a0 + 0xB4) & 0x8) { \
func_80131340(a0); \
} \
func_80131CA8(a0, 0xA); \
}
#define DEFINE_func_8012F91C() \
extern void func_80131340(s32 a0); \
extern void func_80131CA8(int a0, int a1); \
void func_8012F91C(s32 a0) { \
if (*(s32 *)(a0 + 0xB4) & 0x80) { \
func_80131340(a0); \
} \
func_80131CA8(a0, 0x17); \
}
#define DEFINE_func_8012FF00() \
extern void func_80131340(s32 a0); \
extern void func_80131CA8(int a0, int a1); \
void func_8012FF00(s32 a0) { \
if (*(s32 *)(a0 + 0xB4) & 0x200) { \
func_80131340(a0); \
} \
func_80131CA8(a0, 0x1F); \
}
#define DEFINE_func_8012FF4C() \
extern void func_80131CA8(int a0, int a1); \
void func_8012FF4C(s32 a0) { \
*(s8 *)(a0 + 0xC1) = 5; \
if (*(s32 *)(a0 + 0xB4) & 0x20) { \
s32 v1 = *(s32 *)(a0 + 0x20); \
*(s16 *)(a0 + 0x5C) = 0; \
*(s32 *)(a0 + 0x1C) = 0x1E; \
*(s16 *)(a0 + 0x98) = 0; \
*(s16 *)(v1 + 0x10) = 0; \
} \
func_80131CA8(a0, 0xF); \
}
#define DEFINE_func_80130314() \
extern void func_80131340(s32 a0); \
extern void func_80131CA8(int a0, int a1); \
void func_80130314(s32 a0) { \
if (*(s32 *)(a0 + 0xB4) & 0x800) { \
func_80131340(a0); \
} \
func_80131CA8(a0, 0x2D); \
}
#define DEFINE_func_80160DEC() \
extern void func_801553C0(s32 a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_80160DEC(u8 *a0) { \
*(s32 *)(a0 + 0x1AC) = 0; \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0; \
func_801553C0((s32)a0); \
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) & -0x181; \
func_80154A74((s32)a0, 0x11); \
}
#define DEFINE_func_80172F4C() \
extern void func_8017303C(void *); \
extern void func_80154A74(s32 a0, s32 a1); \
extern s32 func_80174650(s32); \
extern u8 D_800D47F4[]; \
extern s32 D_80126B58; \
extern s16 D_80126B30; \
void func_80172F4C(void) { \
func_8017303C(D_800D47F4); \
func_80154A74((s32)&D_80126B58, 0x13); \
D_80126B30 = 0; \
func_80174650((s32)&D_80126B58); \
}
#define DEFINE_func_80172F9C() \
extern void func_8017303C(void *); \
extern void func_80154A74(s32 a0, s32 a1); \
extern s32 func_80174650(s32); \
extern u8 D_800D46E4[]; \
extern s32 D_80126B58; \
extern s16 D_80126B30; \
void func_80172F9C(void) { \
func_8017303C(D_800D46E4); \
func_80154A74((s32)&D_80126B58, 0x11); \
D_80126B30 = 0; \
func_80174650((s32)&D_80126B58); \
}
#define DEFINE_func_80172FEC() \
extern void func_8017303C(void *); \
extern void func_80154A74(s32 a0, s32 a1); \
extern s32 func_80174650(s32); \
extern u8 D_800D5C6C[]; \
extern s32 D_80126B58; \
extern s16 D_80126B30; \
void func_80172FEC(void) { \
func_8017303C(D_800D5C6C); \
func_80154A74((s32)&D_80126B58, 0x11); \
D_80126B30 = 0; \
func_80174650((s32)&D_80126B58); \
}
#define DEFINE_func_80174B6C() \
extern void func_80174BBC(void *a0); \
extern void func_8012A018(s32 a, s32 b); \
extern void func_8012A0E0(void); \
extern void func_80174BF4(void *a0); \
extern u8 D_80126948[]; \
void func_80174B6C(void) { \
func_80174BBC(D_80126948); \
func_8012A018((s32)func_80174BF4, 0); \
func_8012A0E0(); \
func_80174BF4(D_80126948); \
}
#define DEFINE_func_80151E78() \
extern void func_80149020(s32 *a0); \
extern void func_80146CA0(void *a0); \
extern s32 func_80172630(u8 *a0); \
void func_80151E78(s32 *a0) { \
u8 *p = (u8 *)a0 + 0xDE; \
u8 v; \
func_80149020(a0); \
v = *p; \
*p = v + 0xFF; \
if (v == 0) { \
*p = 0x10; \
func_80146CA0(a0); \
} \
func_80172630((u8 *)a0); \
}
#define DEFINE_func_80157CCC() \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_801553C0(s32 a0); \
extern void func_801553A8(s32 *a0); \
void func_80157CCC(s32 a0) { \
s32 s0 = a0; \
*(u8 *)(s0 + 0x223) = 0x10; \
*(s32 *)(s0 + 0x44) = *(s32 *)(s0 + 0x44) & ~2; \
func_80154A74(s0, 0x11); \
func_801553C0(s0); \
func_801553A8((s32 *)s0); \
}
#define DEFINE_func_8016007C() \
extern void func_80154A74(s32 a0, s32 a1); \
extern u8 D_800B9A17; \
extern u16 D_801270C0; \
void func_8016007C(s32 a0) { \
*(s32 *)(a0 + 0x184) = 0; \
*(s16 *)(a0 + 0x18A) = 0; \
*(s16 *)(a0 + 0x188) = 0; \
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) & ~0x10; \
D_800B9A17 = 1; \
func_80154A74(a0, 0x11); \
D_801270C0 = 1; \
}
#define DEFINE_func_80160FE0() \
extern void func_80149020(s32 *a0); \
extern s32 func_801399F0(s32 a0); \
extern void func_80139914(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80160FE0(s32 *a0) { \
s32 *s0 = a0; \
func_80149020(a0); \
if (func_801399F0(*(s32 *)((u8 *)s0 + 0x198)) != 0) { \
func_80139914(*(s32 *)((u8 *)s0 + 0x198)); \
*(s32 *)((u8 *)s0 + 0x198) = 0; \
func_80146CA0(s0); \
} \
}
#define DEFINE_func_80179D78() \
extern void func_80179B74(s16 *a0); \
void func_80179D78(u16 *a0) { \
s16 sp[5]; \
sp[0] = 0x1C; \
sp[1] = a0[0]; \
sp[2] = a0[1]; \
sp[3] = a0[2]; \
sp[4] = a0[3]; \
func_80179B74(sp); \
}
#define DEFINE_func_801608C0() \
extern void func_801553A8(s32 *a0); \
extern void func_80155440(s32 *a0); \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_80146CA0(void *a0); \
void func_801608C0(s32 *a0) { \
*(s32 *)((s32)a0 + 0x44) |= 0x41; \
func_801553A8(a0); \
func_80155440(a0); \
func_80154150((s32)a0, 0x24); \
func_80154A74((s32)a0, 0x1D); \
func_80146CA0(a0); \
}
#define DEFINE_func_80162D28() \
extern void func_80013F3C(s32 a0); \
extern void func_800126C4(s32 a0, s32 a1); \
extern void func_80012558(s32 a0, s32 a1); \
extern void func_800123F0(s32 a0, s32 a1); \
void func_80162D28(s32 *a0) { \
s16 *s0 = (s16 *)a0[8]; \
s32 s1 = (s32)s0 + 0x34; \
func_80013F3C(s1); \
func_800126C4(s1, s0[8]); \
func_80012558(s1, s0[9]); \
func_800123F0(s1, s0[10]); \
}
#define DEFINE_func_80162D88() \
extern void func_80013F3C(s32 a0); \
extern void func_800126C4(s32 a0, s32 a1); \
extern void func_80012558(s32 a0, s32 a1); \
extern void func_800123F0(s32 a0, s32 a1); \
void func_80162D88(s32 *a0) { \
s16 *s0 = (s16 *)a0[8]; \
s32 s1 = (s32)s0 + 0x34; \
func_80013F3C(s1); \
func_80012558(s1, s0[9]); \
func_800126C4(s1, s0[8]); \
func_800123F0(s1, s0[10]); \
}
#define DEFINE_func_80162DE8() \
extern void func_80013F3C(s32 a0); \
extern void func_800126C4(s32 a0, s32 a1); \
extern void func_80012558(s32 a0, s32 a1); \
extern void func_800123F0(s32 a0, s32 a1); \
void func_80162DE8(s32 *a0) { \
s16 *s0 = (s16 *)a0[8]; \
s32 s1 = (s32)s0 + 0x34; \
func_80013F3C(s1); \
func_800123F0(s1, s0[10]); \
func_800126C4(s1, s0[8]); \
func_80012558(s1, s0[9]); \
}
#define DEFINE_func_80162E48() \
extern void func_80013F3C(s32 a0); \
extern void func_800126C4(s32 a0, s32 a1); \
extern void func_80012558(s32 a0, s32 a1); \
extern void func_800123F0(s32 a0, s32 a1); \
void func_80162E48(s32 *a0) { \
s16 *s0 = (s16 *)a0[8]; \
s32 s1 = (s32)s0 + 0x34; \
func_80013F3C(s1); \
func_800123F0(s1, s0[10]); \
func_80012558(s1, s0[9]); \
func_800126C4(s1, s0[8]); \
}
#define DEFINE_func_80162EA8() \
extern void func_80013F3C(s32 a0); \
extern void func_800126C4(s32 a0, s32 a1); \
extern void func_80012558(s32 a0, s32 a1); \
extern void func_800123F0(s32 a0, s32 a1); \
void func_80162EA8(s32 *a0) { \
s16 *s0 = (s16 *)a0[8]; \
s32 s1 = (s32)s0 + 0x34; \
func_80013F3C(s1); \
func_80012558(s1, s0[9]); \
func_800123F0(s1, s0[10]); \
func_800126C4(s1, s0[8]); \
}
#define DEFINE_func_80165064() \
extern void func_80146CA0(void *a0); \
extern void func_80165124(void *a0); \
extern void func_801651B8(void *a0); \
void func_80165064(s32 *a0) { \
s16 v = *(u16 *)((s32)a0 + 0x62) + 0x10; \
*(u16 *)((s32)a0 + 0x62) = v; \
if (v >= 0x100) { \
*(u16 *)((s32)a0 + 0x62) = 0xFF; \
func_80146CA0(a0); \
} \
func_80165124(a0); \
func_801651B8(a0); \
}
#define DEFINE_func_801650C4() \
extern void func_80162CCC(void); \
extern void func_80165124(void *a0); \
extern void func_801651B8(void *a0); \
void func_801650C4(s32 *a0) { \
s16 v = *(u16 *)((s32)a0 + 0x62) - 0x10; \
*(u16 *)((s32)a0 + 0x62) = v; \
if (v < 0) { \
func_80162CCC(); \
} else { \
func_80165124(a0); \
func_801651B8(a0); \
} \
}
#define DEFINE_func_8014C3D0() \
extern s32 func_8014C59C(void *a0, void *a1); \
extern s32 func_8014C43C(void *a0, s32 a1, s32 a2, s32 a3, s16 a5); \
s32 func_8014C3D0(void *a0, s32 a1, s32 a2, s32 a3) { \
s16 v = (s16)func_8014C59C(a0, a1); \
return func_8014C43C(a0, a1, a2, a3, v); \
}
#define DEFINE_func_80152194() \
extern void func_80149020(s32 *a0); \
extern void func_80147A84(s32 arg0); \
extern void func_801473EC(s32 *a0); \
extern void func_80148038(s32 a0, s32 a1); \
extern void func_80147460(s32 a0); \
extern void func_801470B4(s32 a0); \
extern void func_8015369C(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80152194(s32 *a0) { \
u8 v1; \
func_80149020(a0); \
func_80147A84((s32)a0); \
func_801473EC(a0); \
func_80148038((s32)a0, 0x4000); \
func_80147460((s32)a0); \
v1 = *((u8 *)a0 + 0xDE); \
*((u8 *)a0 + 0xDE) = v1 + 0xFF; \
if (v1 == 0) { \
func_801470B4((s32)a0); \
func_8015369C((s32)a0); \
func_80146CA0(a0); \
} \
}
#define DEFINE_func_80164CD4() \
extern void func_80164E40(void); \
extern void func_80146CA0(void *a0); \
void func_80164CD4(u8 *a0) { \
u8 *s0 = *(u8 **)(a0 + 0x20); \
u16 v1; \
func_80164E40(); \
v1 = *(u16 *)(a0 + 0x60) + *(u16 *)(a0 + 0x62); \
*(u16 *)(a0 + 0x60) = v1; \
*(u16 *)(s0 + 0x1A) = *(u16 *)(s0 + 0x1A) + v1; \
*(u16 *)(s0 + 0x18) = *(u16 *)(s0 + 0x1A); \
if (*(s16 *)(a0 + 0x60) < 0) { \
func_80146CA0(a0); \
} \
}
#define DEFINE_func_8016D464() \
extern void func_800D22E4(s32 a0); \
extern void func_8016CF04(s32 a0, s32 a1); \
void func_8016D464(u8 *a0) { \
u8 *s1 = *(u8 **)(a0 + 0x34); \
s32 v0; \
func_800D22E4((s32)a0); \
func_8016CF04((s32)a0, 1); \
v0 = *(s32 *)(a0 + 0x1C) - 1; \
*(s32 *)(a0 + 0x1C) = v0; \
if (v0 == -1 || *(u16 *)s1 != 1) { \
*(u16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
} \
}
#define DEFINE_func_8012A0E0() \
extern void func_8012A100(s8 a0); \
void func_8012A0E0(void) { \
func_8012A100(0); \
}
#define DEFINE_func_80150BA4() \
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
s32 func_80150BA4(s32 a0) { \
return func_80151184(a0, 1, 0x10); \
}
#define DEFINE_func_8017A220() \
extern void func_80179B74(s16 *a0); \
void func_8017A220(void) { \
s16 v = 0x21; \
func_80179B74(&v); \
}
#define DEFINE_func_8017A248() \
extern void func_80179B74(s16 *a0); \
void func_8017A248(void) { \
s16 v = 0x22; \
func_80179B74(&v); \
}
#define DEFINE_func_8017A270() \
extern void func_80179B74(s16 *a0); \
void func_8017A270(void) { \
s16 v = 0xD; \
func_80179B74(&v); \
}
#define DEFINE_func_801303EC() \
extern void func_801319E0(s32 a0); \
extern void func_80131CA8(int a0, int a1); \
void func_801303EC(void *a0) { \
if (*(s32 *)((u8 *)a0 + 0xB4) & 0x10) { \
func_801319E0((s32)a0); \
} \
func_80131CA8((int)a0, 0xC); \
}
#define DEFINE_func_8013767C() \
extern s32 func_801399A8(void); \
extern void func_801377B4(s32 a0, s32 a1, s32 a2); \
s32 func_8013767C(s32 a0) { \
s32 s0 = func_801399A8(); \
if (s0 != 0) { \
func_801377B4(a0, 0, s0); \
} \
return s0; \
}
#define DEFINE_func_801458E8() \
extern s32 D_800AE6AC; \
extern s32 D_800AE6B0; \
extern s16 D_800B9A0A; \
extern u8 D_80078E50; \
extern void func_800D185C(u8 *a0); \
void func_801458E8(void) { \
D_800AE6B0 = D_800AE6AC | 0x1000000; \
func_800D185C(&D_80078E50); \
D_800B9A0A = 0x3000; \
}
#define DEFINE_func_801516F0() \
extern void func_8014C8F0(s32 arg0); \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80151780(s32 a0); \
void func_801516F0(s32 *a0) { \
func_8014C8F0((s32)a0); \
*((u8 *)a0 + 0xDE) = (u8)*(u16 *)a0; \
func_80147078(a0, 0x19); \
*(s16 *)((u8 *)a0 + 0x2) = 1; \
func_80151780((s32)a0); \
}
#define DEFINE_func_80128D60() \
extern void func_80018450(s32 a0, s32 a1); \
extern void func_800183E0(s32 a0); \
void func_80128D60(s32 a0, s32 *a1, s32 *a2) { \
a1[0] = (s32)a2; \
*(s16 *)((u8 *)a1 + 4) = 0; \
*(s16 *)((u8 *)a1 + 6) = a2[1] & 0x3F; \
if (a0 != 0) { \
func_80018450(a0, a2[0]); \
} else { \
func_800183E0(a2[0]); \
} \
}
#define DEFINE_func_801292C8() \
extern void func_80016714(void *a0, s32 a1); \
void func_801292C8(u8 *a0) { \
u16 *p = *(u16 **)(a0 + 0x20); \
if (p != 0) { \
func_80016714(p, (p[0] == 1) ? 0x84 : 0x38); \
} \
*(s16 *)a0 = 0; \
}
#define DEFINE_func_80139954() \
extern void func_8013A8B0(s32 *a0); \
extern u16 D_80126A08; \
extern s16 D_801269F4; \
extern s32 D_801269F0; \
extern s32 *D_80126A30; \
void func_80139954(void) { \
u16 v = D_80126A08; \
D_801269F4 = 0; \
D_801269F0 = 0; \
if (v != 0) { \
if (D_80126A30 != 0) { \
func_8013A8B0(D_80126A30); \
} \
} \
}
#define DEFINE_func_80141C50() \
extern s32 func_80015144(void); \
extern u16 D_8011511C; \
extern u16 D_8011511E; \
s32 func_80141C50(void) { \
if (D_8011511C != 0x90F) { \
return 0; \
} \
if ((D_8011511E & 0x800) == 0) { \
return 0; \
} \
return func_80015144() != 0; \
}
#define DEFINE_func_80143CD4() \
extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); \
void func_80143CD4(s32 a0) { \
func_8012C658(0x39, 0, a0); \
func_8012C658(0x39, 1, a0); \
func_8012C658(0x39, 2, a0); \
}
#define DEFINE_func_80173980() \
extern void func_80171A1C(u8 *a0); \
extern s16 D_80126B30; \
void func_80173980(u8 *a0) { \
if (D_80126B30 == 0) { \
*(u16 *)(a0 + 0xAC) |= 0x80; \
*(u16 *)(a0 + 0xAA) |= 0x80; \
} else { \
*(u16 *)(a0 + 0xAC) |= 0x10; \
} \
func_80171A1C(a0); \
}
#define DEFINE_func_80174F64() \
extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); \
void func_80174F64(u8 *a0) { \
s32 r; \
u16 *p = (u16 *)(a0 + 0x38); \
r = func_80175014(a0, *(u8 **)(a0 + 0x34), *p & 0x7FFF); \
if (r != 0) { \
*p = *p | 0x8000; \
} else { \
*p = *p + 1; \
} \
}
#define DEFINE_func_80174FBC() \
extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); \
void func_80174FBC(u8 *a0) { \
u16 *p = (u16 *)(a0 + 0x38); \
if ((*p & 0x7FFF) != 0) { \
func_80175014(a0, *(u8 **)(a0 + 0x34), *p & 0x7FFF); \
*p = *p - 1; \
} else { \
*p = *p | 0x8000; \
} \
}
#define DEFINE_func_8012F214() \
extern void func_8004914C(void *a0); \
extern void func_800491AC(void *a0); \
extern void RotTransSV(s32 a0, s32 a1, void *a2); \
void func_8012F214(s32 a0, s32 a1, s32 a2) { \
s32 *p = (s32 *)(*(s32 *)(a0 + 0x20) + 0x34); \
s32 buf[2]; \
func_8004914C(p); \
func_800491AC(p); \
RotTransSV(a1, a2, buf); \
}
#define DEFINE_func_801428CC() \
extern s32 func_80142DB8(s32 *a0); \
extern s32 func_80142D38(s32 *a0); \
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
void func_801428CC(s32 *a0) { \
if (func_80142DB8(a0) == 1) { \
func_80142BB4(a0, 1, 3); \
} else if (func_80142D38(a0) == 1) { \
func_80142BB4(a0, 0, 3); \
} \
}
#define DEFINE_func_80142FFC() \
extern s32 func_80142DB8(s32 *a0); \
extern s32 func_80142D38(s32 *a0); \
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
void func_80142FFC(s32 *a0) { \
if (func_80142DB8(a0) == 1) { \
func_80142BB4(a0, 1, 3); \
} else if (func_80142D38(a0) == 1) { \
func_80142BB4(a0, 0, 3); \
} \
}
#define DEFINE_func_80143188() \
extern s32 func_80142DB8(s32 *a0); \
extern s32 func_80142D38(s32 *a0); \
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
void func_80143188(s32 *a0) { \
if (func_80142DB8(a0) == 1) { \
func_80142BB4(a0, 1, 3); \
} else if (func_80142D38(a0) == 1) { \
func_80142BB4(a0, 0, 3); \
} \
}
#define DEFINE_func_80143390() \
extern s32 func_80142DB8(s32 *a0); \
extern s32 func_80142D38(s32 *a0); \
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
void func_80143390(s32 *a0) { \
if (func_80142DB8(a0) == 1) { \
func_80142BB4(a0, 1, 3); \
} else if (func_80142D38(a0) == 1) { \
func_80142BB4(a0, 0, 3); \
} \
}
#define DEFINE_func_80147478() \
extern void func_80147514(void); \
extern void func_80147628(s32 a0); \
void func_80147478(s32 a0) { \
if ((*(s32 *)(a0 + 0x44) & 0x40000000) == 0) { \
func_80147514(); \
func_80147628(a0); \
*(s32 *)(a0 + 0x44) |= 0x40000000; \
} \
}
#define DEFINE_func_8014A380() \
extern void func_80015978(s32 a0, s32 *a1); \
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
void func_8014A380(s32 a0, s32 a1) { \
s16 buf[4]; \
func_80015978(a0 + 4, (s32 *)buf); \
buf[3] = 0; \
func_8014C4AC(a1, 0x1F, 0, buf, *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)); \
}
#define DEFINE_func_8017C908() \
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_8017C908(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); \
}
#define DEFINE_func_80130740() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_80130740(void *a0, u16 *a1) { \
u16 *p = (u16 *)a0; \
func_80146A6C(0x10, a0, \
(s16)(p[3] + a1[0]), \
(s16)(p[5] + a1[1]), \
(s16)(p[7] + a1[2]), \
0, 0); \
}
#define DEFINE_func_80160BB4() \
extern void func_801553A8(s32 *a0); \
extern void func_80155440(s32 *a0); \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_80146CA0(void *a0); \
void func_80160BB4(s32 *a0) { \
s32 *v1; \
a0[0x44 / 4] |= 0x80; \
func_801553A8(a0); \
func_80155440(a0); \
func_80154150((s32)a0, 0x26); \
func_80154A74((s32)a0, 0x1E); \
v1 = (s32 *)a0[0x20 / 4]; \
a0[0x234 / 4] = 0; \
*(s16 *)((u8 *)v1 + 0x10) = 0xFE9; \
a0[0x238 / 4] = 0; \
func_80146CA0(a0); \
}
#define DEFINE_func_801628F4() \
extern void func_80162968(s32 a0); \
void func_801628F4(s32 *a0) { \
s16 *a2 = (s16 *)a0[0x4 / 4]; \
s32 *a1 = (s32 *)a0[0x8 / 4]; \
if (*(s16 *)((u8 *)a2 + 0x7E) != 0) { \
a1[0x4 / 4] |= 0x80000000; \
} else { \
a1[0x4 / 4] &= 0x7FFFFFFF; \
} \
a0[0x20 / 4] = *(s16 *)((u8 *)a2 + 0x78); \
a0[0x24 / 4] = *(s16 *)((u8 *)a2 + 0x7A); \
a0[0x28 / 4] = *(s16 *)((u8 *)a2 + 0x7C); \
func_80162968((s32)a0); \
}
#define DEFINE_func_8016F398() \
extern void func_80029124(s32, s32); \
void func_8016F398(void) { \
func_80029124(0x125, 0); \
func_80029124(0x126, 0); \
func_80029124(0x127, 0); \
func_80029124(0x128, 0); \
func_80029124(0x129, 0); \
func_80029124(0x12A, 0); \
func_80029124(0x12B, 0); \
func_80029124(0x12C, 0); \
}
#define DEFINE_func_80172414() \
extern void func_80161C24(s32, s32); \
extern void func_8014C010(s32 a0, s32 a1); \
extern u16 D_800B99DA; \
void func_80172414(s32 a0) { \
if (*(u16 *)(a0 + 0xB8) & 0x2000) { \
func_80161C24(a0, *(u16 *)(a0 + 0x16E)); \
} \
if (*(s32 *)(a0 + 0x2C) < (s32)0xFFF90000) { \
if ((D_800B99DA & 7) == 0) { \
func_8014C010(a0, 2); \
} \
} \
}
#define DEFINE_func_80131AC8() \
extern s32 func_80131CF4(s32 a0); \
extern void func_8002D4C8(s32 a0, s32 a1); \
s32 func_80131AC8(void *a0) { \
s32 s0 = func_80131CF4(*(s32 *)((u8 *)a0 + 0xBC)) & 0xFFFF; \
if (s0 != 0) { \
func_8002D4C8(s0, 0); \
return s0; \
} \
return 0; \
}
#define DEFINE_func_8014A454() \
extern s32 func_80012A60(s32 a0, s32 a1); \
s32 func_8014A454(s32 a0) { \
s32 v0; \
if (*(u16 *)(a0 + 0x3C) & 0x4000) { \
v0 = (s16)func_80012A60(*(s16 *)(a0 + 0x42), \
(*(u16 *)(*(s32 *)(a0 + 0x20) + 0x12) + 0x800) & 0xFFF); \
if (v0 < 0x2AA) { \
return 1; \
} \
} \
return 0; \
}
#define DEFINE_func_801426D4() \
extern s32 func_8012AD50(void *a0); \
void func_801426D4(s32 a0) { \
s32 s0 = *(s32 *)(a0 + 0x20); \
s16 fc = *(s16 *)(a0 + 0xFC); \
if (fc != 0) { \
*(s16 *)(a0 + 0xFC) = fc - 0x10; \
*(u16 *)(s0 + 0x18) += 0x800; \
*(u16 *)(s0 + 0x1A) += 0x800; \
} else { \
*(s32 *)(a0 + 0x1C) = 0xC; \
func_8012AD50((void *)a0); \
*(u16 *)(s0 + 0x1A) = 0x1800; \
*(u16 *)(s0 + 0x18) = 0x1800; \
} \
}
#define DEFINE_func_80146F58() \
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); \
void func_80146F58(s32 a0, s32 a1) { \
s16 vec[3]; \
u8 mat[0x20]; \
vec[0] = func_8012A68C(); \
vec[1] = func_8012A758(); \
vec[2] = 0; \
func_8004978C(vec, mat); \
ApplyMatrixSV(mat, (void *)a0, (void *)a1); \
}
#define DEFINE_func_80147718() \
extern void func_80013F3C(s32 a0); \
extern void func_800126C4(s32 a0, s32 a1); \
extern void func_80012558(s32 a0, s32 a1); \
extern void func_800123F0(s32 a0, s32 a1); \
void func_80147718(s32 a0) { \
s32 s1 = *(s32 *)(a0 + 0x20); \
s32 s0 = s1 + 0x34; \
func_80013F3C(s0); \
func_800126C4(s0, *(s16 *)(s1 + 0x10)); \
func_80012558(s0, *(s16 *)(s1 + 0x12)); \
func_800123F0(s0, *(s16 *)(s1 + 0x14)); \
*(u16 *)(s1 + 0x2C) |= 1; \
}
#define DEFINE_func_801478B8() \
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); \
void func_801478B8(s32 a0, s32 a1, s32 a2, s32 a3) { \
func_80147948(a0, a1, 0x7FFFFFFF); \
func_801479BC(a0, a2, 0x7FFFFFFF); \
func_80147A30(a0, a3, 0x7FFFFFFF); \
}
#define DEFINE_func_80147CC8() \
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_80147DC0(s32 a0, s32 a1); \
void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4) { \
func_80147928(a0, a1); \
func_8014799C(a0, a2); \
func_80147A10(a0, a3); \
func_80147DC0(a0, a4); \
}
#define DEFINE_func_80155B9C() \
extern void func_80148038(s32 a0, s32 a1); \
extern void func_80147460(s32 a0); \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80146CA0(void *a0); \
extern void func_80147324(s32 a0); \
extern s32 D_800D4DB4; \
void func_80155B9C(s32 a0) { \
*(s32 *)(a0 + 0x44) |= 2; \
func_80148038(a0, 0x30000); \
func_80147460(a0); \
if (*(s32 *)(a0 + 0x34) >= 0) { \
func_80154274((s32 *)a0, (s32)&D_800D4DB4); \
func_80146CA0((void *)a0); \
func_80147324(0x447); \
} \
}
#define DEFINE_func_80164DD0() \
extern void func_80148534(s32 a0, s32 a1); \
extern void func_80015954(s32 a0, s32 a1); \
extern void func_80149374(s32 a0, s32 a1); \
void func_80164DD0(s32 a0) { \
s32 sp10[2]; \
s32 sp18[2]; \
s32 s2 = *(s32 *)(a0 + 0x4C); \
func_80148534((s32)sp10, (s32)sp18); \
func_80015954((s32)sp10, a0 + 4); \
func_80149374(s2, a0 + 4); \
*(s16 *)(a0 + 0xA) = *(u16 *)(a0 + 0xA) - 0x40; \
}
#define DEFINE_func_8012F7B4() \
extern s32 func_8012BEE8(s32); \
extern s32 func_80131A34(s32, s32); \
extern void func_80131CA8(int a0, int a1); \
void func_8012F7B4(s32 a0) { \
if (*(s32 *)(a0 + 0xB4) & 4) { \
func_8012BEE8(a0); \
if (*(s32 *)(a0 + 0x1C) == 1) { \
if (func_80131A34(a0, 8) == 0) { \
func_80131A34(a0, 0x20); \
} \
} \
} \
func_80131CA8(a0, 7); \
}
#define DEFINE_func_80154218() \
extern s32 func_801549F8(s32 a0, s32 a1, s32 a2); \
extern void func_80154418(void *a0); \
void func_80154218(u8 *a0, s32 a1, s32 a2) { \
u8 *s0 = a0; \
s32 *base = *(s32 **)(s0 + 0xB0); \
s32 v1 = base[a1]; \
*(u16 *)(s0 + 0xBA) = 1; \
*(u16 *)(s0 + 0xB8) = 1; \
*(s8 *)(s0 + 0xBC) = a2; \
*(s8 *)(s0 + 0xBD) = a2; \
*(s32 *)(s0 + 0xB4) = v1; \
s0[0xDC] = func_801549F8((s32)a0, (s32)&base[a1], a2); \
func_80154418(s0); \
}
#define DEFINE_func_8012F1A4() \
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
void func_8012F1A4(s32 *a0, s32 a1, s32 *a2) { \
func_800484EC((s32)a0, a1, (s32)a2); \
a2[0] += a0[0x14 / 4] << 16; \
a2[1] += a0[0x18 / 4] << 16; \
a2[2] += a0[0x1C / 4] << 16; \
}
#define DEFINE_func_8012FC30() \
extern void func_80131B14(void); \
extern void func_8012B23C(s32 a0); \
extern s32 func_80131A34(s32, s32); \
extern void func_8002D4C8(s32 a0, s32 a1); \
extern void func_80131CA8(int a0, int a1); \
void func_8012FC30(s32 a0) { \
*(s8 *)(a0 + 0xC1) = 0xA; \
if (*(s32 *)(a0 + 0xB4) & 0x400) { \
func_80131B14(); \
*(s8 *)(a0 + 0xC2) = 0; \
*(u16 *)(a0 + 0x98) = 0; \
func_8012B23C(a0); \
func_80131A34(a0, 8); \
func_8002D4C8(0xA74, 0); \
} \
func_80131CA8(a0, 0x1A); \
}
#define DEFINE_func_801746DC() \
extern void func_8016EE94(); \
extern void func_80174684(void *); \
extern void func_80172710(void); \
extern s32 func_80172760(s32 a0); \
void func_801746DC(void) { \
func_8016EE94((s32)func_80172710, 0x1000000); \
func_80174684((void *)func_80172760); \
}
#define DEFINE_func_8012B8A4() \
extern s32 ratan2(s32 a0, s32 a1); \
extern u16 D_80126B66; \
extern u16 D_80126B5E; \
s32 func_8012B8A4(s16 *a0) { \
s16 cx = a0[7]; \
s16 dx = D_80126B66; \
s16 dy = D_80126B5E; \
s16 cy = a0[3]; \
return (ratan2(cx - dx, dy - cy) - 0x400) & 0xFFF; \
}
#define DEFINE_func_80160B70() \
extern s32 func_80161104(void); \
extern void func_80160BB4(s32 *a0); \
void func_80160B70(s32 a0) { \
if (func_80161104()) { \
func_80160BB4(a0); \
} else { \
*(s32 *)(a0 + 0x1AC) = 0; \
} \
}
#define DEFINE_func_8016F4FC() \
extern void func_801719A4(int a0, int a1); \
extern void func_800D1724(s32 a0); \
extern void func_80171928(void *a0); \
extern void *D_8011F738; \
void func_8016F4FC(void *a0) { \
func_801719A4((int)a0, 1); \
func_800D1724(D_8011F738); \
func_80171928(a0); \
}
#define DEFINE_func_801702B8() \
extern s16 func_80171AB0(s32 a0, void *a1); \
extern void func_80171928(void *a0); \
extern void *D_8011F738; \
void func_801702B8(s32 a0) { \
if (func_80171AB0(a0, &D_8011F738) == 0) { \
func_80171928((void *)a0); \
} \
}
#define DEFINE_func_80132EF4() \
extern u8 *func_8012913C(s32 a0); \
extern void func_80129350(s32 a0, s32 a1); \
s32 func_80132EF4(s32 a0, s32 a1) { \
s32 s0 = func_8012913C(a1 & 0xFFFF); \
if (s0 != 0) { \
func_80129350(s0, a0); \
} \
return s0; \
}
#define DEFINE_func_801484E8() \
extern s32 func_80154358(void *a0); \
extern void func_801485B8(s32 a0, s32 a1, s32 a2); \
extern s32 D_80126B58; \
void func_801484E8(s32 a0, s32 a1) { \
s32 v0 = func_80154358(&D_80126B58); \
func_801485B8(v0 - 0x10, a0, a1); \
}
#define DEFINE_func_8014856C() \
extern s32 func_80154358(void *a0); \
extern void func_801485B8(s32 a0, s32 a1, s32 a2); \
extern s32 D_80126B58; \
void func_8014856C(s32 a0, s32 a1) { \
s32 v0 = func_80154358(&D_80126B58); \
func_801485B8(v0 - 0x8, a0, a1); \
}
#define DEFINE_func_80150C48() \
extern s32 func_80150480(s32 a0); \
extern s32 D_800AE6B0; \
extern u16 D_800AE6DC; \
void func_80150C48(s32 a0) { \
if (func_80150480(a0) != 0) { \
s32 p = *(s32 *)(a0 + 0x1A4); \
D_800AE6B0 = *(s32 *)(p + 0xDC); \
p = *(s32 *)(a0 + 0x1A4); \
D_800AE6DC = *(u16 *)(p + 0xFC); \
} \
}
#define DEFINE_func_801291C0() \
extern void func_80016714(void *a0, s32 a1); \
extern s16 D_8011DB30; \
u8 *func_801291C0(void) { \
u8 *p = (u8 *)&D_8011DB30; \
s32 i = 0; \
loop: \
if (*(u16 *)p == 0) { \
func_80016714(p, 0x38); \
return p; \
} \
if (++i < 0x80) { \
p += 0x38; \
goto loop; \
} \
return 0; \
}
#define DEFINE_func_80173648() \
extern s32 func_80171CC4(void *a0, void *a1); \
extern s32 func_80172664(s32 *a0); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
extern s16 D_80126B3E; \
void func_80173648(u8 *a0) { \
u8 *s0 = a0; \
s16 *p = &D_80126B3E; \
if (*p != 0) { \
func_80171CC4(s0, (u8 *)p - 6); \
} \
if (func_80172664((s32 *)s0) == 0) { \
func_80171A1C(s0); \
func_80174650((s32)s0); \
} \
}
#define DEFINE_func_80160F70() \
extern s32 func_80146E98(s32 a0); \
extern void func_800D0F4C(s32 a0); \
extern void func_8014BB24(s32 a0, s32 a1, s32 a2); \
extern void func_8014BD24(s32 a0, s32 a1); \
extern s32 func_8013767C(s32 a0); \
extern void func_80146CA0(void *a0); \
extern u8 D_80110EC0; \
void func_80160F70(s32 a0) { \
if (func_80146E98(a0) != 0) { \
func_800D0F4C(0xA); \
func_8014BB24(a0, 0x96, 0); \
func_8014BD24(a0, 0x96); \
*(s32 *)(a0 + 0x198) = func_8013767C(&D_80110EC0); \
func_80146CA0((void *)a0); \
} \
}
#define DEFINE_func_80168A14() \
extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_80168A14(s32 *a0) { \
func_80168BDC((s32)a0, 8, 1, 2); \
func_80146A6C(3, (s32)a0, \
*(s16 *)((u8 *)a0 + 0x6), \
*(s16 *)((u8 *)a0 + 0xA), \
*(s16 *)((u8 *)a0 + 0xE), \
-5, 0xC0009C00); \
*(u16 *)((u8 *)a0 + 0x2) += 1; \
}
#define DEFINE_func_8014462C() \
extern void func_8012AD80(s32 a0); \
extern s32 func_80128ED8(void *a0, void *a1); \
extern void func_80016714(void *a0, s32 a1); \
extern void func_8012C218(void *a0); \
void func_8014462C(u8 *a0) { \
u8 *s1 = *(u8 **)(a0 + 0xCC); \
func_8012AD80((s32)a0); \
*(u16 *)(s1 + 8) = *(u16 *)(a0 + 6); \
*(u16 *)(s1 + 0xA) = *(u16 *)(a0 + 0xA); \
*(u16 *)(s1 + 0xC) = *(u16 *)(a0 + 0xE); \
if (func_80128ED8(s1, a0 + 0xD0)) { \
func_80016714(s1, 0x38); \
func_8012C218(a0); \
} \
}
#define DEFINE_func_80152254() \
extern void func_80149020(s32 *a0); \
extern s32 func_80153800(s32 a0); \
extern void func_80146D90(s32 a0); \
extern void func_801522CC(s32 a0); \
extern void func_80159B3C(void *a0); \
extern void func_80165718(s32 a0); \
void func_80152254(s32 *a0) { \
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
volatile s32 pad[4]; \
func_80149020(a0); \
if (func_80153800((s32)a0) == 0) { \
*(u16 *)((u8 *)a0 + 0x4) = 0; \
*(u16 *)((u8 *)a0 + 0x8) = 0; \
*(u16 *)((u8 *)a0 + 0xC) = 0; \
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
func_80146D90((s32)a0); \
func_801522CC((s32)a0); \
func_80159B3C((s32)a0); \
func_80165718((s32)a0); \
} \
}
#define DEFINE_func_80152A50() \
extern void func_80149020(s32 *a0); \
extern s32 func_80153800(s32 a0); \
extern void func_80146D90(s32 a0); \
extern void func_80152AC8(s32 a0); \
extern void func_80159B3C(void *a0); \
extern void func_80165718(s32 a0); \
void func_80152A50(s32 *a0) { \
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
volatile s32 pad[4]; \
func_80149020(a0); \
if (func_80153800((s32)a0) == 0) { \
*(u16 *)((u8 *)a0 + 0x4) = 0; \
*(u16 *)((u8 *)a0 + 0x8) = 0; \
*(u16 *)((u8 *)a0 + 0xC) = 0; \
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
func_80146D90((s32)a0); \
func_80152AC8((s32)a0); \
func_80159B3C((s32)a0); \
func_80165718((s32)a0); \
} \
}
#define DEFINE_func_80152F44() \
extern void func_80149020(s32 *a0); \
extern s32 func_80153800(s32 a0); \
extern void func_80146D90(s32 a0); \
extern void func_80152FBC(s32 a0); \
extern void func_80159B3C(void *a0); \
extern void func_80165718(s32 a0); \
void func_80152F44(s32 *a0) { \
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
volatile s32 pad[4]; \
func_80149020(a0); \
if (func_80153800((s32)a0) == 0) { \
*(u16 *)((u8 *)a0 + 0x4) = 0; \
*(u16 *)((u8 *)a0 + 0x8) = 0; \
*(u16 *)((u8 *)a0 + 0xC) = 0; \
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
func_80146D90((s32)a0); \
func_80152FBC((s32)a0); \
func_80159B3C((s32)a0); \
func_80165718((s32)a0); \
} \
}
#define DEFINE_func_80153204() \
extern void func_80149020(s32 *a0); \
extern s32 func_80153800(s32 a0); \
extern void func_80146D90(s32 a0); \
extern void func_8015327C(s32 a0); \
extern void func_80159B3C(void *a0); \
extern void func_80165718(s32 a0); \
void func_80153204(s32 *a0) { \
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
volatile s32 pad[4]; \
func_80149020(a0); \
if (func_80153800((s32)a0) == 0) { \
*(u16 *)((u8 *)a0 + 0x4) = 0; \
*(u16 *)((u8 *)a0 + 0x8) = 0; \
*(u16 *)((u8 *)a0 + 0xC) = 0; \
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
func_80146D90((s32)a0); \
func_8015327C((s32)a0); \
func_80159B3C((s32)a0); \
func_80165718((s32)a0); \
} \
}
#define DEFINE_func_801534D8() \
extern void func_80149020(s32 *a0); \
extern s32 func_80153800(s32 a0); \
extern void func_80146D90(s32 a0); \
extern void func_80153550(s32 a0); \
extern void func_80159B3C(void *a0); \
extern void func_80165718(s32 a0); \
void func_801534D8(s32 *a0) { \
/* reserved stack local sets frame 0x28 (16-byte local region) */ \
volatile s32 pad[4]; \
func_80149020(a0); \
if (func_80153800((s32)a0) == 0) { \
*(u16 *)((u8 *)a0 + 0x4) = 0; \
*(u16 *)((u8 *)a0 + 0x8) = 0; \
*(u16 *)((u8 *)a0 + 0xC) = 0; \
*(u16 *)((u8 *)a0 + 0x6) = *(u16 *)((u8 *)a0 + 0x88); \
*(u16 *)((u8 *)a0 + 0xA) = *(u16 *)((u8 *)a0 + 0x8A); \
*(u16 *)((u8 *)a0 + 0xE) = *(u16 *)((u8 *)a0 + 0x8C); \
func_80146D90((s32)a0); \
func_80153550((s32)a0); \
func_80159B3C((s32)a0); \
func_80165718((s32)a0); \
} \
}
#define DEFINE_func_8017AE08() \
extern s16 func_80174764(void); \
s32 func_8017AE08(void) { \
return ((s32 (*)(void))func_80174764)() == 1; \
}
#define DEFINE_func_8012CBF4() \
extern u8 D_800D3918[]; \
extern void func_8012CC88(s32 a, s32 b, s32 c); \
void func_8012CBF4(s32 a0) { \
func_8012CC88(a0, 0x11, (s32)D_800D3918); \
}
#define DEFINE_func_80144A68() \
extern void func_8012AD44(s32 *a0, s16 a1); \
void func_80144A68(s32 *a0) { \
*(s16 *)a0 = 0xC6; \
func_8012AD44(a0, 0); \
}
#define DEFINE_func_8014B12C() \
extern s32 D_80126B58; \
extern s32 func_8014B154(s32 *a0); \
void func_8014B12C(void) { \
func_8014B154(&D_80126B58); \
}
#define DEFINE_func_8014B2A8() \
extern s32 D_80126B58; \
extern void func_8014B2F8(void); \
void func_8014B2A8(void) { \
((void (*)(s32 *))func_8014B2F8)(&D_80126B58); \
}
#define DEFINE_func_8014B2D0() \
extern s32 D_80126B58; \
extern void func_8014B310(void); \
void func_8014B2D0(void) { \
((void (*)(s32 *))func_8014B310)(&D_80126B58); \
}
#define DEFINE_func_80156648() \
extern void func_80156A14(s32 *a0); \
void func_80156648(s32 *a0) { \
*((u8 *)a0 + 0x1A8) = 0; \
*((u8 *)a0 + 0x1A9) = 0; \
*((u8 *)a0 + 0x1C0) = 0; \
func_80156A14(a0); \
}
#define DEFINE_func_80172560() \
extern s32 func_80013450(s32); \
s32 func_80172560(u8 *a0, u8 *a1) { \
*(s16 *)(a1 + 2) = *(u16 *)(a0 + 0xA); \
return func_80013450((s32)(a0 + 4)) < 0x10; \
}
#define DEFINE_func_8014AD7C() \
extern s32 D_80126B58; \
extern void func_8014ADA8(s32 a0, s32 a1); \
void func_8014AD7C(s32 a0) { \
func_8014ADA8((s32)&D_80126B58, a0); \
}
#define DEFINE_func_80146DB8() \
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); \
void func_80146DB8(s32 *a0, s32 *a1) { \
func_80146DE8(a0, a1[0], a1[1], a1[2]); \
}
#define DEFINE_func_80154B4C() \
extern void func_80154B7C(u8 *a0, s32 a1); \
void func_80154B4C(u8 *a0, s32 a1) { \
if (*(s32 *)(a0 + 0xD0) != a1) { \
func_80154B7C(a0, a1); \
} \
}
#define DEFINE_func_80154B98() \
extern void func_80154BC8(void *a0, s32 a1, s32 a2); \
void func_80154B98(void *a0, s32 a1, s32 a2) { \
if (*(s32 *)((s32)a0 + 0xD0) != a1) { \
func_80154BC8(a0, a1, a2); \
} \
}
#define DEFINE_func_80158AB4() \
extern void func_80158AE4(void *a0); \
extern void func_80146CA0(void *a0); \
void func_80158AB4(void *a0) { \
func_80158AE4(a0); \
func_80146CA0(a0); \
}
#define DEFINE_func_8016EF78() \
extern s32 func_8016EFC8(s32); \
extern void func_801726D0(void *a0); \
extern s32 D_80126B58; \
void func_8016EF78(s32 a0) { \
func_8016EFC8(a0); \
func_801726D0(&D_80126B58); \
}
#define DEFINE_func_8016F5B0() \
extern void func_8014706C(void *a0); \
extern void func_80171928(void *a0); \
void func_8016F5B0(void *a0) { \
func_8014706C(a0); \
func_80171928(a0); \
}
#define DEFINE_func_8016F5E0() \
extern void func_80147060(u8 *a0); \
extern void func_80171928(void *a0); \
void func_8016F5E0(u8 *a0) { \
func_80147060(a0); \
func_80171928(a0); \
}
#define DEFINE_func_8016F7D4() \
extern s32 func_80171990(u8 *a0); \
extern void func_8016F804(void *a0); \
void func_8016F7D4(u8 *a0) { \
func_80171990(a0); \
func_8016F804(a0); \
}
#define DEFINE_func_8017041C() \
extern s32 func_80171990(u8 *a0); \
extern void func_8017044C(u8 *a0); \
void func_8017041C(u8 *a0) { \
func_80171990(a0); \
func_8017044C(a0); \
}
#define DEFINE_func_801704EC() \
extern s32 func_80171990(u8 *a0); \
extern void func_8017051C(void *a0); \
void func_801704EC(u8 *a0) { \
func_80171990(a0); \
func_8017051C(a0); \
}
#define DEFINE_func_801706E8() \
extern s32 func_80171990(u8 *a0); \
extern void func_80170718(void *a0); \
void func_801706E8(u8 *a0) { \
func_80171990(a0); \
func_80170718(a0); \
}
#define DEFINE_func_80170C44() \
extern void func_80147060(u8 *a0); \
extern void func_80171928(void *a0); \
void func_80170C44(u8 *a0) { \
func_80147060(a0); \
func_80171928(a0); \
}
#define DEFINE_func_80150F80() \
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
extern u8 D_80078EC1; \
void func_80150F80(s32 a0) { \
if (D_80078EC1 != 0xC) { \
func_80151184(a0, 0xC007, 0x20); \
} \
}
#define DEFINE_func_80155518() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_801555F4(void *a0); \
void func_80155518(s32 *a0) { \
func_80147078(a0, 5); \
func_801555F4(a0); \
}
#define DEFINE_func_8015554C() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80155580(void *a0); \
void func_8015554C(s32 *a0) { \
func_80147078(a0, 5); \
func_80155580(a0); \
}
#define DEFINE_func_801574DC() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_801575E4(void *a0); \
void func_801574DC(s32 *a0) { \
func_80147078(a0, 6); \
func_801575E4(a0); \
}
#define DEFINE_func_80157510() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80157544(void *a0); \
void func_80157510(s32 *a0) { \
func_80147078(a0, 6); \
func_80157544(a0); \
}
#define DEFINE_func_8015A230() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015A264(void *a0); \
void func_8015A230(s32 *a0) { \
func_80147078(a0, 0x1); \
func_8015A264(a0); \
}
#define DEFINE_func_8015BF7C() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015BFF4(void *a0); \
void func_8015BF7C(s32 *a0) { \
func_80147078(a0, 0x4); \
func_8015BFF4(a0); \
}
#define DEFINE_func_8015C6E0() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015C714(void *a0); \
void func_8015C6E0(s32 *a0) { \
func_80147078(a0, 0x9); \
func_8015C714(a0); \
}
#define DEFINE_func_8015CC40() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015CC74(s32 *a0); \
void func_8015CC40(s32 *a0) { \
func_80147078(a0, 0xB); \
func_8015CC74(a0); \
}
#define DEFINE_func_8015CF8C() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015CFC0(s32 *a0); \
void func_8015CF8C(s32 *a0) { \
func_80147078(a0, 0xC); \
func_8015CFC0(a0); \
}
#define DEFINE_func_8015DA5C() \
extern void func_80154A74(s32 a0, s32 a1); \
extern int func_8015E0D4(int); \
void func_8015DA5C(s32 a0) { \
func_80154A74(a0, 0x11); \
func_8015E0D4(a0); \
}
#define DEFINE_func_8015DAC4() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015DAF8(s32 *a0); \
void func_8015DAC4(s32 *a0) { \
func_80147078(a0, 0xE); \
func_8015DAF8(a0); \
}
#define DEFINE_func_8015DE24() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015DE58(s32 *a0); \
void func_8015DE24(s32 *a0) { \
func_80147078(a0, 0xF); \
func_8015DE58(a0); \
}
#define DEFINE_func_8015E880() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015E8E8(s32 *a0); \
void func_8015E880(s32 *a0) { \
func_80147078(a0, 0x11); \
func_8015E8E8(a0); \
}
#define DEFINE_func_8015E8B4() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015E9B8(s32 *a0); \
void func_8015E8B4(s32 *a0) { \
func_80147078(a0, 0x11); \
func_8015E9B8(a0); \
}
#define DEFINE_func_8015EFD8() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015F00C(s32 *a0); \
void func_8015EFD8(s32 *a0) { \
func_80147078(a0, 0x13); \
func_8015F00C(a0); \
}
#define DEFINE_func_8015F2BC() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015F380(); \
void func_8015F2BC(s32 *a0) { \
func_80147078(a0, 0x14); \
func_8015F380(a0); \
}
#define DEFINE_func_80160E3C() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80160F00(); \
void func_80160E3C(s32 *a0) { \
func_80147078(a0, 0x1E); \
func_80160F00(a0); \
}
#define DEFINE_func_80160E70() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80160EA4(); \
void func_80160E70(s32 *a0) { \
func_80147078(a0, 0x1E); \
func_80160EA4(a0); \
}
#define DEFINE_func_80165624() \
extern u8 func_80165658(s32 a0, s32 a1); \
extern u8 D_80078EC1; \
extern s16 D_80078EB8; \
s32 func_80165624(s32 a0) { \
return (u32)(u16)D_80078EB8 < (u32)(func_80165658(a0, D_80078EC1 & 0x7F) & 0x7F); \
}
#define DEFINE_func_8016B3F4() \
extern s32 func_8016B448(s32, s32); \
extern s32 func_8016BA48(s32 a0); \
void func_8016B3F4(s32 a0) { \
func_8016B448(a0, 1); \
func_8016BA48(a0); \
}
#define DEFINE_func_8016F764() \
extern void func_80171928(void *a0); \
void func_8016F764(void *a0) { \
s32 v0 = *(s32 *)((u8 *)a0 + 0x200) - 1; \
*(s32 *)((u8 *)a0 + 0x200) = v0; \
if (v0 == -1) { \
func_80171928(a0); \
} \
}
#define DEFINE_func_8016FFA8() \
extern s32 func_80171990(u8 *a0); \
void func_8016FFA8(u8 *a0) { \
*(u16 *)(a0 + 0xAC) |= 0x40; \
*(u16 *)(a0 + 0xAA) |= 0x40; \
func_80171990(a0); \
}
#define DEFINE_func_801735B8() \
extern void func_80171A1C(u8 *a0); \
void func_801735B8(u8 *a0) { \
*(u16 *)(a0 + 0xAC) |= 0x40; \
*(u16 *)(a0 + 0xAA) |= 0x40; \
func_80171A1C(a0); \
}
#define DEFINE_func_80175150() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80175184(); \
void func_80175150(s32 *a0) { \
func_80147078(a0, 0x8); \
func_80175184(a0); \
}
#define DEFINE_func_8012A8B0() \
extern void func_8012AAAC(void); \
void func_8012A8B0(u8 *a0, s32 a1) { \
u16 v0 = *(u16 *)(a0 + 0x72); \
*(s32 *)(a0 + 0x90) = a1; \
*(s32 *)(a0 + 0x94) = 0; \
*(s32 *)(a0 + 0x9C) = 0; \
*(s16 *)(a0 + 0x9A) = 0; \
*(u16 *)(a0 + 0x72) = v0 & 0xF9FF; \
func_8012AAAC(); \
}
#define DEFINE_func_80151038() \
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
extern s16 currentLocationId; \
void func_80151038(s32 a0) { \
s32 a2 = 0x18; \
if (currentLocationId == 0x30A0) { \
a2 = 0x30; \
} \
func_80151184(a0, 0xC00C, a2); \
}
#define DEFINE_func_801555BC() \
extern s32 func_80161104(void); \
extern void func_801555F4(void *); \
void func_801555BC(void *a0) { \
if (func_80161104()) { \
func_801555F4(a0); \
} \
}
#define DEFINE_func_80157E00() \
extern s32 func_80161104(void); \
extern void func_80157E38(void *); \
void func_80157E00(void *a0) { \
if (func_80161104()) { \
func_80157E38(a0); \
} \
}
#define DEFINE_func_80158000() \
extern s32 func_80161104(void); \
extern void func_80158038(void *); \
void func_80158000(void *a0) { \
if (func_80161104()) { \
func_80158038(a0); \
} \
}
#define DEFINE_func_80158288() \
extern s32 func_80161104(void); \
extern void func_801582C0(void *); \
void func_80158288(void *a0) { \
if (func_80161104()) { \
func_801582C0(a0); \
} \
}
#define DEFINE_func_80159BAC() \
extern s32 func_80161104(void); \
extern void func_80159BE4(s32); \
void func_80159BAC(s32 a0) { \
if (func_80161104() != 0) { \
func_80159BE4(a0); \
} \
}
#define DEFINE_func_8015A2A0() \
extern s32 func_80161104(void); \
extern void func_8015A2D8(s32); \
void func_8015A2A0(s32 a0) { \
if (func_80161104() != 0) { \
func_8015A2D8(a0); \
} \
}
#define DEFINE_func_8015AD78() \
extern s32 func_80161104(void); \
extern void func_8015ADB0(s32); \
void func_8015AD78(s32 a0) { \
if (func_80161104() != 0) { \
func_8015ADB0(a0); \
} \
}
#define DEFINE_func_8015C08C() \
extern s32 func_80161104(void); \
extern void func_8015C0C4(s32); \
void func_8015C08C(s32 a0) { \
if (func_80161104() != 0) { \
func_8015C0C4(a0); \
} \
}
#define DEFINE_func_8015C750() \
extern s32 func_80161104(void); \
extern void func_8015C788(s32); \
void func_8015C750(s32 a0) { \
if (func_80161104() != 0) { \
func_8015C788(a0); \
} \
}
#define DEFINE_func_8015CB94() \
extern void func_801553C0(s32 a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015CB94(s32 a0) { \
*(s32 *)(a0 + 0x170) = 0; \
func_801553C0(a0); \
func_80154A74(a0, 0x11); \
}
#define DEFINE_func_8015D544() \
extern s32 func_80161104(void); \
extern void func_8015D57C(s32); \
void func_8015D544(s32 a0) { \
if (func_80161104() != 0) { \
func_8015D57C(a0); \
} \
}
#define DEFINE_func_8015DB34() \
extern s32 func_80161104(void); \
extern void func_8015DB6C(s32); \
void func_8015DB34(s32 a0) { \
if (func_80161104() != 0) { \
func_8015DB6C(a0); \
} \
}
#define DEFINE_func_8015DE94() \
extern s32 func_80161104(void); \
extern void func_8015DECC(s32); \
void func_8015DE94(s32 a0) { \
if (func_80161104() != 0) { \
func_8015DECC(a0); \
} \
}
#define DEFINE_func_8015E1F4() \
extern s32 func_80161104(void); \
extern void func_8015E22C(s32); \
void func_8015E1F4(s32 a0) { \
if (func_80161104() != 0) { \
func_8015E22C(a0); \
} \
}
#define DEFINE_func_8015E924() \
extern s32 func_80161104(void); \
extern void func_8015E95C(s32); \
void func_8015E924(s32 a0) { \
if (func_80161104() != 0) { \
func_8015E95C(a0); \
} \
}
#define DEFINE_func_8015EE44() \
extern s32 func_80161104(void); \
extern void func_8015EE7C(s32); \
void func_8015EE44(s32 a0) { \
if (func_80161104() != 0) { \
func_8015EE7C(a0); \
} \
}
#define DEFINE_func_8015F048() \
extern s32 func_80161104(void); \
extern void func_8015F080(s32); \
void func_8015F048(s32 a0) { \
if (func_80161104() != 0) { \
func_8015F080(a0); \
} \
}
#define DEFINE_func_8015F810() \
extern s32 func_80161104(void); \
extern void func_8015F848(s32 *a0); \
void func_8015F810(s32 *a0) { \
if (func_80161104() != 0) { \
func_8015F848(a0); \
} \
}
#define DEFINE_func_80160174() \
extern s32 func_80161104(void); \
extern void func_801601AC(s32 *a0); \
void func_80160174(s32 *a0) { \
if (func_80161104()) { \
func_801601AC(a0); \
} \
}
#define DEFINE_func_801601AC() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80146C98(s32 *a0, s16 a1); \
void func_801601AC(s32 *a0) { \
func_80154150((s32)a0, 0x21); \
func_80146C98(a0, 1); \
}
#define DEFINE_func_801603D8() \
extern s32 func_80161104(void); \
extern void func_80160410(s32 *a0); \
void func_801603D8(s32 *a0) { \
if (func_80161104()) { \
func_80160410(a0); \
} \
}
#define DEFINE_func_80160888() \
extern s32 func_80161104(void); \
extern void func_801608C0(s32 *a0); \
void func_80160888(s32 *a0) { \
if (func_80161104()) { \
func_801608C0(a0); \
} \
}
#define DEFINE_func_8016533C() \
extern u8 D_80078EC1; \
extern s32 D_80126B58; \
extern u8 D_80126CF8; \
extern s32 func_801659DC(u8 *a0); \
void func_8016533C(void) { \
D_80126CF8 = D_80078EC1; \
func_801659DC((u8 *)&D_80126B58); \
}
#define DEFINE_func_8016F578() \
extern void func_80147084(s32 *a0); \
extern void func_801472B4(void *a0); \
extern void func_80171928(void *a0); \
void func_8016F578(s32 *a0) { \
func_80147084(a0); \
func_801472B4(a0); \
func_80171928(a0); \
}
#define DEFINE_func_8016F610() \
extern void func_8016F288(void); \
extern void func_80148634(void *a0); \
extern void func_80171928(void *a0); \
void func_8016F610(void *a0) { \
func_8016F288(); \
func_80148634(a0); \
func_80171928(a0); \
}
#define DEFINE_func_8016F648() \
extern void func_8016F264(void); \
extern void func_80148634(void *a0); \
extern void func_80171928(void *a0); \
void func_8016F648(void *a0) { \
func_8016F264(); \
func_80148634(a0); \
func_80171928(a0); \
}
#define DEFINE_func_8016F8AC() \
extern void *D_8011F738; \
extern void func_80172358(u8 *a0, u8 *a1); \
extern void func_80171928(void *a0); \
void func_8016F8AC(u8 *a0) { \
func_80172358(a0, (u8 *)&D_8011F738); \
func_80171928(a0); \
}
#define DEFINE_func_8016FD7C() \
extern s32 func_80172658(s32 *a0); \
extern void func_80171928(void *a0); \
void func_8016FD7C(s32 *a0) { \
if (func_80172658(a0)) { \
func_80171928(a0); \
} \
}
#define DEFINE_func_801439C0() \
extern void func_80016714(void *a0, s32 a1); \
extern void func_8012C218(void *a0); \
void func_801439C0(u8 *a0) { \
if (a0 != 0) { \
func_80016714(*(void **)(a0 + 0xCC), 0x38); \
func_8012C218(a0); \
} \
}
#define DEFINE_func_80150FD8() \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern u16 D_800B99DA; \
void func_80150FD8(s32 a0) { \
if (D_800B99DA & 7) { \
func_80146994(0x34, a0, 0, 0); \
} \
}
#define DEFINE_func_80164270() \
extern void func_80162D88(s32 *a0); \
extern void func_80146E90(s32 *a0, s32 a1); \
extern void func_80146CA0(void *a0); \
void func_80164270(s32 *a0) { \
s32 *s = a0; \
func_80162D88(s); \
func_80146E90(s, 0x20); \
func_80146CA0(s); \
}
#define DEFINE_func_8016F870() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_8016F8AC(u8 *a0); \
void func_8016F870(u8 *a0) { \
func_801719A4((int)a0, 2); \
func_80171990(a0); \
func_8016F8AC(a0); \
}
#define DEFINE_func_8016F920() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_8016F95C(void *a0); \
void func_8016F920(u8 *a0) { \
func_801719A4((int)a0, 2); \
func_80171990(a0); \
func_8016F95C(a0); \
}
#define DEFINE_func_8016FCCC() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_8016FD08(u8 *a0); \
void func_8016FCCC(u8 *a0) { \
func_801719A4((int)a0, 1); \
func_80171990(a0); \
func_8016FD08(a0); \
}
#define DEFINE_func_8016FDF0() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_8016FE2C(u8 *a0); \
void func_8016FDF0(u8 *a0) { \
func_801719A4((int)a0, 2); \
func_80171990(a0); \
func_8016FE2C(a0); \
}
#define DEFINE_func_8016FF6C() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_8016FFA8(u8 *a0); \
void func_8016FF6C(u8 *a0) { \
func_801719A4((int)a0, 2); \
func_80171990(a0); \
func_8016FFA8(a0); \
}
#define DEFINE_func_8017018C() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_801701C8(u8 *a0); \
void func_8017018C(u8 *a0) { \
func_801719A4((int)a0, 1); \
func_80171990(a0); \
func_801701C8(a0); \
}
#define DEFINE_func_8017027C() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_801702B8(s32 a0); \
void func_8017027C(u8 *a0) { \
func_801719A4((int)a0, 2); \
func_80171990(a0); \
func_801702B8((s32)a0); \
}
#define DEFINE_func_80170338() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_80170374(u8 *a0); \
void func_80170338(u8 *a0) { \
func_801719A4((int)a0, 1); \
func_80171990(a0); \
func_80170374(a0); \
}
#define DEFINE_func_80170584() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_801705C0(u8 *a0); \
void func_80170584(u8 *a0) { \
func_801719A4((int)a0, 1); \
func_80171990(a0); \
func_801705C0(a0); \
}
#define DEFINE_func_80170670() \
extern void *D_8011F738; \
extern void func_8012A568(void (*a0)(void)); \
extern void func_80171928(void *a0); \
void func_80170670(void *a0) { \
func_8012A568((void (*)(void))D_8011F738); \
func_80171928(a0); \
}
#define DEFINE_func_801707D4() \
extern s32 func_80174ED4(void); \
extern void func_80171928(void *a0); \
void func_801707D4(void *a0) { \
if ((s16)func_80174ED4() != 0) { \
func_80171928(a0); \
} \
}
#define DEFINE_func_80170DA4() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_80170DE0(u8 *a0); \
void func_80170DA4(u8 *a0) { \
func_801719A4((int)a0, 3); \
func_80171990(a0); \
func_80170DE0(a0); \
}
#define DEFINE_func_80170E70() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_80170EAC(u8 *a0); \
void func_80170E70(u8 *a0) { \
func_801719A4((int)a0, 3); \
func_80171990(a0); \
func_80170EAC(a0); \
}
#define DEFINE_func_80170F74() \
extern void *D_8011F738; \
extern void func_80029124(s32, s32); \
extern void func_80171928(void *a0); \
void func_80170F74(void *a0) { \
func_80029124((s32)D_8011F738, 1); \
func_80171928(a0); \
}
#define DEFINE_func_80171028() \
extern void *D_8011F738; \
extern void func_80029124(s32, s32); \
extern void func_80171928(void *a0); \
void func_80171028(void *a0) { \
func_80029124((s32)D_8011F738, 0); \
func_80171928(a0); \
}
#define DEFINE_func_801710A0() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_801710DC(u8 *a0); \
void func_801710A0(u8 *a0) { \
func_801719A4((int)a0, 1); \
func_80171990(a0); \
func_801710DC(a0); \
}
#define DEFINE_func_8017484C() \
extern s32 func_8016F0AC(s32); \
extern s32 D_80126B9C; \
void func_8017484C(s32 a0) { \
func_8016F0AC(a0); \
D_80126B9C &= 0xFBFFFFFF; \
}
#define DEFINE_func_80175114() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80175184(s32 *a0); \
void func_80175114(s32 *a0) { \
func_80147078(a0, 8); \
*(s16 *)((s32)a0 + 2) = 1; \
func_80175184(a0); \
}
#define DEFINE_func_80152C40() \
extern void func_80149020(s32 *a0); \
extern void func_80152C80(s32 *a0); \
extern void func_80159B3C(void *a0); \
extern void func_80165718(s32 a0); \
void func_80152C40(s32 *a0) { \
func_80149020(a0); \
func_80152C80(a0); \
func_80159B3C(a0); \
func_80165718((s32)a0); \
}
#define DEFINE_func_801541D8() \
extern void func_80154218(u8 *a0, s32 a1, s32 a2); \
void func_801541D8(u8 *a0, s32 a1, s32 a2) { \
if (*(s32 *)(a0 + 0xB4) != ((s32 *)*(s32 **)(a0 + 0xB0))[a1]) { \
func_80154218(a0, a1, a2); \
} \
}
#define DEFINE_func_80154A74() \
extern void func_80154AB4(s32 a0, s32 a1); \
void func_80154A74(s32 a0, s32 a1) { \
if (*(s32 *)(a0 + 0xD0) != ((s32 *)*(s32 **)(a0 + 0xCC))[a1]) { \
func_80154AB4(a0, a1); \
} \
}
#define DEFINE_func_80154AE0() \
extern void func_80154B20(s32 a0, s32 a1, s32 a2); \
void func_80154AE0(s32 a0, s32 a1, s32 a2) { \
if (*(s32 *)(a0 + 0xD0) != ((s32 *)*(s32 **)(a0 + 0xCC))[a1]) { \
func_80154B20(a0, a1, a2); \
} \
}
#define DEFINE_func_80157880() \
extern void func_8014ED28(s32 a0); \
extern void func_8014D3E0(s32 a0); \
extern void func_8014FA04(s32 a0); \
extern void func_801578C0(s32 a0); \
void func_80157880(s32 a0) { \
func_8014ED28(a0); \
func_8014D3E0(a0); \
func_8014FA04(a0); \
func_801578C0(a0); \
}
#define DEFINE_func_801585AC() \
extern u16 func_80148800(s32 *a0); \
s32 func_801585AC(s32 *a0) { \
u16 r = func_80148800(a0); \
u16 v = *(u16 *)((u8 *)a0 + 0x244) | r; \
s32 m; \
*(u16 *)((u8 *)a0 + 0x244) = v; \
m = v & 0x10; \
return m != 0; \
}
#define DEFINE_func_80161278() \
extern s32 D_801152BC; \
extern s32 func_801612B8(void *a0, s32 a1); \
extern void func_80161374(void *a0, s32 a1); \
void func_80161278(void *a0) { \
s32 r; \
D_801152BC = 0; \
r = func_801612B8(a0, 1); \
func_80161374(a0, r); \
}
#define DEFINE_func_80165024() \
extern s32 func_80146E98(s32 a0); \
extern void func_80146CA0(void *a0); \
extern void func_801651B8(void *a0); \
void func_80165024(void *a0) { \
if (func_80146E98((s32)a0)) { \
func_80146CA0(a0); \
} \
func_801651B8(a0); \
}
#define DEFINE_func_801655E4() \
extern u8 D_80078EC1; \
extern u8 func_80165658(s32 a0, s32 a1); \
extern void func_8014BD60(s32 a0, s32 a1); \
void func_801655E4(s32 a0) { \
func_8014BD60(a0, func_80165658(a0, D_80078EC1 & 0x7F) & 0x7F); \
}
#define DEFINE_func_8016FA44() \
extern void *D_8011F738; \
extern s32 func_80171C64(s32 a0, s32 a1); \
extern void func_80171928(void *a0); \
void func_8016FA44(s32 a0) { \
if (func_80171C64(a0, *(u8 *)&D_8011F738)) { \
func_80171928((void *)a0); \
} \
}
#define DEFINE_func_8016FB10() \
extern void *D_8011F738; \
extern s32 func_80171CC4(void *a0, void *a1); \
extern s32 func_80171990(u8 *a0); \
void func_8016FB10(void *a0) { \
if (func_80171CC4(a0, &D_8011F738)) { \
func_80171990((u8 *)a0); \
} \
}
#define DEFINE_func_8016FC24() \
extern void *D_8011F738; \
extern s32 func_80171B4C(s32 a0, s32 a1); \
extern s32 func_80171990(u8 *a0); \
void func_8016FC24(s32 a0) { \
if (func_80171B4C(a0, *(u8 *)&D_8011F738)) { \
func_80171990((u8 *)a0); \
} \
}
#define DEFINE_func_80170CB0() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_8017197C(u8 *a0); \
extern void func_80170CF0(void *a0); \
void func_80170CB0(u8 *a0) { \
func_801719A4((int)a0, 3); \
a0[0x217] = 0; \
func_8017197C(a0); \
func_80170CF0(a0); \
}
#define DEFINE_func_80172A8C() \
extern s16 D_80126B30; \
extern s32 func_80171CC4(void *a0, void *a1); \
extern void func_80171A1C(u8 *a0); \
void func_80172A8C(void *a0) { \
if (func_80171CC4(a0, &D_80126B30)) { \
func_80171A1C((u8 *)a0); \
} \
}
#define DEFINE_func_80172ACC() \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
void func_80172ACC(u8 *a0) { \
u8 *p = *(u8 **)(a0 + 0x20); \
u16 v = *(u16 *)(a0 + 0x132); \
*(s16 *)(a0 + 0x136) = 0; \
*(u16 *)(p + 0x12) = v; \
func_80171A1C(a0); \
func_80174650((s32)a0); \
}
#define DEFINE_func_80172E94() \
extern u8 D_800D5A34[]; \
extern s32 D_80126B58; \
extern s16 D_80126B30; \
extern void func_8017303C(void *); \
extern s32 func_80174650(s32); \
void func_80172E94(void) { \
func_8017303C((void *)D_800D5A34); \
D_80126B30 = 0; \
func_80174650((s32)&D_80126B58); \
}
#define DEFINE_func_80173770() \
extern s32 D_80127508; \
extern void func_801723C4(s32 a0, s32 a1); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
void func_80173770(u8 *a0) { \
func_801723C4((s32)a0, D_80127508); \
func_80171A1C(a0); \
func_80174650((s32)a0); \
}
#define DEFINE_func_80174714() \
extern s32 func_800CF8CC(void); \
extern void func_80147060(u8 *a0); \
extern s32 func_8016F0AC(); \
extern s32 D_80126B58; \
void func_80174714(void) { \
if (func_800CF8CC() == 0) { \
func_80147060((u8 *)&D_80126B58); \
func_8016F0AC(); \
} \
}
#define DEFINE_func_801751D8() \
extern s32 func_80161104(void); \
extern s32 func_80175218(void *a0); \
extern void func_80146CA0(void *a0); \
void func_801751D8(void *a0) { \
void *s = a0; \
if (func_80161104()) { \
func_80175218(s); \
func_80146CA0(s); \
} \
}
#define DEFINE_func_8012A68C() \
extern void func_8012A7D4(void *a0, void *a1); \
extern s32 func_8012A6D0(void *a0, void *a1); \
s16 func_8012A68C(void) { \
s16 a[4]; \
s16 b[4]; \
func_8012A7D4(a, b); \
return (s16)func_8012A6D0(a, b); \
}
#define DEFINE_func_8012A758() \
extern void func_8012A7D4(void *a0, void *a1); \
extern s16 func_8012A79C(s16 *a0, s16 *a1); \
s16 func_8012A758(void) { \
s16 a[4]; \
s16 b[4]; \
func_8012A7D4(a, b); \
return func_8012A79C(a, b); \
}
#define DEFINE_func_80130898() \
extern void func_80131CA8(int a0, int a1); \
void func_80130898(u8 *a0) { \
if (*(s32 *)(a0 + 0xB4) & 0x4000) { \
*(s16 *)(a0 + 0xAA) = 0x100; \
*(u16 *)(a0 + 0x5C) = *(u16 *)(a0 + 0x5C) & 0xFFFE; \
} \
func_80131CA8((int)a0, 0x28); \
}
#define DEFINE_func_80131E38() \
extern void func_80131CA8(int a0, int a1); \
void func_80131E38(u8 *a0) { \
*(s8 *)(a0 + 0xC1) = 0xF; \
if (*(s32 *)(a0 + 0xB4) & 0x40000) { \
*(s32 *)(a0 + 0x1C) = 6; \
*(s16 *)(a0 + 0x5C) = 0; \
} \
func_80131CA8((int)a0, 0x39); \
}
#define DEFINE_func_8012EF70() \
extern void func_8012EFB8(s32 a0); \
void func_8012EF70(s32 a0, s32 a1) { \
s32 sp10; \
register s32 v1 __asm__("$3"); \
func_8012EFB8(a0); \
{ \
register s32 *p __asm__("$3") = &sp10; \
__asm__ __volatile__( \
"mfc2 $12, $19\n" \
"nop\n" \
"sra $12, $12, 2\n" \
"sw $12, 0(%0)\n" \
: : "r"(p) : "memory", "$12"); \
} \
v1 = sp10; \
*(s16 *)(a1 + 4) = v1; \
}
#define DEFINE_func_80151980() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_801519C8(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80151980(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_801519C8(a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_80152094() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_801520DC(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80152094(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_801520DC(a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_8015220C() \
extern void func_80149020(s32 *a0); \
extern s32 func_801536DC(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_8015220C(s32 a0) { \
func_80149020((s32 *)a0); \
if (!func_801536DC(a0)) { \
*(s8 *)(a0 + 0xDE) = 1; \
*(s8 *)(a0 + 0xDF) = 0; \
func_80146CA0((void *)a0); \
} \
}
#define DEFINE_func_801523AC() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_801523F4(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_801523AC(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_801523F4(a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_80152868() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_801528B0(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80152868(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_801528B0(a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_80152A08() \
extern void func_80149020(s32 *a0); \
extern s32 func_801536DC(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80152A08(s32 a0) { \
func_80149020((s32 *)a0); \
if (!func_801536DC(a0)) { \
*(s8 *)(a0 + 0xDE) = 1; \
*(s8 *)(a0 + 0xDF) = 0; \
func_80146CA0((void *)a0); \
} \
}
#define DEFINE_func_80152BA8() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_80152BF0(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80152BA8(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_80152BF0(a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_80152D60() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_80152DA8(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80152D60(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_80152DA8(a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_80152EFC() \
extern void func_80149020(s32 *a0); \
extern s32 func_801536DC(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80152EFC(s32 a0) { \
func_80149020((s32 *)a0); \
if (!func_801536DC(a0)) { \
*(s8 *)(a0 + 0xDE) = 1; \
*(s8 *)(a0 + 0xDF) = 0; \
func_80146CA0((void *)a0); \
} \
}
#define DEFINE_func_8015309C() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_801530E4(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_8015309C(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_801530E4(a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_801531BC() \
extern void func_80149020(s32 *a0); \
extern s32 func_801536DC(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_801531BC(s32 a0) { \
func_80149020((s32 *)a0); \
if (!func_801536DC(a0)) { \
*(s8 *)(a0 + 0xDE) = 1; \
*(s8 *)(a0 + 0xDF) = 0; \
func_80146CA0((void *)a0); \
} \
}
#define DEFINE_func_8015335C() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_801533A4(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_8015335C(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_801533A4(a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_80153490() \
extern void func_80149020(s32 *a0); \
extern s32 func_801536DC(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80153490(s32 a0) { \
func_80149020((s32 *)a0); \
if (!func_801536DC(a0)) { \
*(s8 *)(a0 + 0xDE) = 1; \
*(s8 *)(a0 + 0xDF) = 0; \
func_80146CA0((void *)a0); \
} \
}
#define DEFINE_func_80153D34() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_80153D7C(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80153D34(s32 a0) { \
func_8014E934(a0); \
func_8014CC28(a0); \
func_8014F3E8(a0); \
func_80153D7C(a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_80154190() \
extern void func_80154418(void *a0); \
void func_80154190(u8 *a0, s32 a1) { \
s32 v1 = *(s32 *)((a1 << 2) + *(s32 *)(a0 + 0xB0)); \
*(s16 *)(a0 + 0xBA) = 1; \
*(s16 *)(a0 + 0xB8) = 1; \
*(s8 *)(a0 + 0xBC) = 0; \
*(s8 *)(a0 + 0xBD) = 0; \
*(s8 *)(a0 + 0xDC) = 0; \
*(s32 *)(a0 + 0xB4) = v1; \
func_80154418((void *)a0); \
}
#define DEFINE_func_80165B6C() \
extern s32 func_80161104(void); \
extern void func_80165BB4(u8 *a0); \
void func_80165B6C(u8 *a0) { \
if (func_80161104()) { \
func_80165BB4(a0); \
*(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; \
} \
}
#define DEFINE_func_80165BB4() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_80165BB4(u8 *a0) { \
func_80154150((s32)a0, 0x22); \
func_80154A74((s32)a0, 0x1A); \
*(u8 *)(a0 + 0x197) = *(u8 *)(a0 + 0x197) + 1; \
}
#define DEFINE_func_8016DBD8() \
extern void func_80149374(s32 a0, s32 a1); \
extern void func_800D1FC8(s32 a0, s32 a1); \
void func_8016DBD8(u8 *a0) { \
*(s32 *)(a0 + 0x4) = 0; \
*(s32 *)(a0 + 0x8) = 0; \
*(s32 *)(a0 + 0xC) = 0; \
func_80149374(*(s32 *)(a0 + 0x34), (s32)(a0 + 0x4)); \
func_800D1FC8((s32)a0, 5); \
}
#define DEFINE_func_801700B8() \
extern void *D_8011F738; \
extern void func_801719A4(int a0, int a1); \
extern s32 func_8013767C(s32 a0); \
extern void func_80171928(void *a0); \
void func_801700B8(u8 *a0) { \
func_801719A4((int)a0, 1); \
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_8011F738); \
func_80171928((void *)a0); \
}
#define DEFINE_func_80170B90() \
extern void func_80147060(u8 *a0); \
extern void func_80171928(void *a0); \
void func_80170B90(u8 *a0) { \
if (*(u16 *)(a0 + 0xB8) & 0x8000) { \
func_80147060(a0); \
func_80171928(a0); \
} \
}
#define DEFINE_func_80172310() \
extern s32 D_80126B58; \
extern s32 *D_80126B78; \
extern void func_80172358(u8 *a0, u8 *a1); \
void func_80172310(u8 *a0) { \
func_80172358((u8 *)&D_80126B58, a0); \
*(u16 *)((u8 *)D_80126B78 + 0x12) = *(u16 *)(a0 + 6); \
}
#define DEFINE_func_80172844() \
extern s16 D_80126B30; \
extern s32 func_80171CC4(void *a0, void *a1); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
void func_80172844(u8 *a0) { \
if (func_80171CC4(a0, &D_80126B30)) { \
func_80171A1C(a0); \
func_80174650((s32)a0); \
} \
}
#define DEFINE_func_80172B80() \
extern s32 D_801150F8; \
extern void func_80147060(u8 *a0); \
extern void func_80171A1C(u8 *a0); \
extern void func_80172BC8(void *a0); \
void func_80172B80(u8 *a0) { \
if (D_801150F8 == 0) { \
func_80147060(a0); \
} \
func_80171A1C(a0); \
func_80172BC8(a0); \
}
#define DEFINE_func_801731D8() \
extern u8 D_800D5AA0[]; \
extern void func_8014706C(void *a0); \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80171A1C(u8 *a0); \
extern void func_80173220(void *a0); \
void func_801731D8(s32 *a0) { \
func_8014706C(a0); \
func_80154274(a0, (s32)D_800D5AA0); \
func_80171A1C((u8 *)a0); \
func_80173220(a0); \
}
#define DEFINE_func_801739D8() \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
void func_801739D8(u8 *a0) { \
if ((*(s32 *)(a0 + 0x44) & 2) == 0) { \
func_80171A1C(a0); \
func_80174650((s32)a0); \
} \
}
#define DEFINE_func_80179D30() \
extern void func_80179B74(s16 *a0); \
void func_80179D30(u16 *a0) { \
s16 buf[4]; \
buf[0] = 1; \
buf[1] = a0[0]; \
buf[2] = a0[1]; \
buf[3] = a0[2]; \
func_80179B74(buf); \
}
#define DEFINE_func_80179EA0() \
extern void func_80179B74(s16 *a0); \
void func_80179EA0(u16 *a0) { \
s16 buf[4]; \
buf[0] = 5; \
buf[1] = a0[0]; \
buf[2] = a0[1]; \
buf[3] = a0[2]; \
func_80179B74(buf); \
}
#define DEFINE_func_8012927C() \
extern void func_801292C8(u8 *a0); \
extern s16 D_8011DB30; \
void func_8012927C(void) { \
s32 i; \
u8 *p = (u8 *)&D_8011DB30; \
for (i = 0; i < 0x80; i++) { \
func_801292C8(p); \
p += 0x38; \
} \
}
#define DEFINE_func_80150820() \
extern void func_8014BD24(s32 a0, s32 a1); \
extern void func_8014ACE8(void *a0, s32 a1, s32 a2); \
void func_80150820(s32 a0, s32 a1) { \
if (a1 != 0) { \
func_8014BD24(a0, a1); \
func_8014ACE8((void *)a0, 4, a1); \
} \
}
#define DEFINE_func_80155FF8() \
extern int func_80156044(int arg, int a1); \
int func_80155FF8(int arg, int a1) { \
__asm__ __volatile__( \
".set noreorder\n" \
"addiu $sp, $sp, -24\n" \
"sw $ra, 16($sp)\n" \
"lui $v0, 0x1f80\n" \
"ori $v0, $v0, 0x03fc\n" \
"addu $t0, $v0, $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_80156044\n" \
"addiu $sp, $sp, 4\n" \
"lw $sp, 0($sp)\n" \
"nop\n" \
"lw $ra, 16($sp)\n" \
"addiu $sp, $sp, 24\n" \
: : : "memory"); \
}
#define DEFINE_func_801585EC() \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_801553C0(s32 a0); \
extern void func_801553A8(s32 *a0); \
void func_801585EC(u8 *a0) { \
*(s32 *)(a0 + 0x44) &= ~2; \
func_80154A74((s32)a0, 0x11); \
func_801553C0((s32)a0); \
func_801553A8((s32 *)a0); \
}
#define DEFINE_func_80160A28() \
extern void func_801553C0(s32 a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_80160A28(s32 a0) { \
s32 v0; \
func_801553C0(a0); \
v0 = *(s32 *)(a0 + 0x44); \
v0 &= ~0x40; \
v0 &= ~1; \
*(s32 *)(a0 + 0x44) = v0; \
func_80154A74(a0, 0x11); \
}
#define DEFINE_func_8016236C() \
extern void func_8014706C(void *a0); \
extern s32 D_80126B58; \
s32 func_8016236C(u8 *a0) { \
func_8014706C(&D_80126B58); \
*(s32 *)(a0 + 0x28) = 0xA; \
*(u8 *)(a0 + 0x15) += 1; \
return 0; \
}
#define DEFINE_func_80162714() \
extern s32 func_800291DC(s32); \
extern s32 func_800D0D7C(s32, s32); \
extern void func_800291C8(s32, s32); \
void func_80162714(void) { \
s32 v0; \
if ((s16)func_800291DC(0x12) == 0) { \
v0 = func_800D0D7C(0xC, 0); \
func_800291C8(0x12, (s16)(v0 | 0x8000)); \
} \
}
#define DEFINE_func_80168780() \
extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_801687CC(s32 a0); \
void func_80168780(s32 a0) { \
func_80168BDC(a0, 8, 0, 2); \
func_801687CC(a0); \
*(u16 *)(a0 + 2) += 1; \
}
#define DEFINE_func_801752BC() \
extern void func_801553A8(s32 *a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_801752BC(s32 *a0) { \
*(s16 *)((u8 *)a0 + 0xF6) = 0x1000; \
func_801553A8(a0); \
func_80154A74((s32)a0, 0x11); \
*(s32 *)((u8 *)a0 + 0x44) &= ~2; \
}
#define DEFINE_func_80179B28() \
extern void func_80139914(s32 a0); \
void func_80179B28(s32 a0) { \
s32 v1; \
if (a0 == 0) return; \
if (*(s32 *)a0 == 0) return; \
v1 = *(s16 *)(a0 + 4); \
if (v1 == 0) return; \
if (v1 == 0xE) return; \
func_80139914(a0); \
}
#define DEFINE_func_8013A860() \
extern void func_80016714(void *a0, s32 a1); \
extern u8 D_8011DA80[]; \
void func_8013A860(void) { \
s32 i; \
u8 *p; \
i = 0; \
p = D_8011DA80; \
do { \
func_80016714(p, 0x10); \
i++; \
p += 0x10; \
} while (i < 2); \
}
#define DEFINE_func_80148AAC() \
extern int func_80148AFC(void *a0); \
void func_80148AAC(u8 *a0) { \
u8 *v1; \
if ((func_80148AFC(a0) & 0xff) != 0) { \
v1 = *(u8 **)(a0 + 0x20); \
*(u16 *)(v1 + 0x12) = (*(u16 *)(v1 + 0x12) + 0xFA) & 0xFF8; \
} \
}
#define DEFINE_func_80151D60() \
extern void func_8014E934(s32 a0); \
extern void func_8014CC28(s32 a0); \
extern void func_8014F3E8(s32 a0); \
extern void func_80151DB0(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80151D60(void *a0) { \
func_8014E934((s32)a0); \
func_8014CC28((s32)a0); \
func_8014F3E8((s32)a0); \
func_80151DB0((s32)a0); \
*(s8 *)((u8 *)a0 + 0xDE) = 0x20; \
func_80146CA0(a0); \
}
#define DEFINE_func_80157D74() \
extern void func_80157DC4(void *a0); \
extern void func_80157FC4(void *a0); \
void func_80157D74(u16 *a0) { \
switch (a0[0]) { \
case 0x24: \
func_80157DC4(a0); \
break; \
case 0x25: \
func_80157FC4(a0); \
break; \
} \
}
#define DEFINE_func_8016E728() \
extern void func_80146C3C(void); \
extern void func_8016E778(void); \
void func_8016E728(u8 *a0) { \
s32 v0; \
s32 v1; \
v0 = (u16)*(u16 *)(a0 + 0x12) + 0x400; \
v1 = (u16)*(u16 *)(a0 + 0x16) - 8; \
*(u16 *)(a0 + 0x12) = v0; \
*(u16 *)(a0 + 0x16) = v1; \
if ((s16)v1 <= 0) { \
func_80146C3C(); \
} else { \
func_8016E778(); \
} \
}
#define DEFINE_func_80170018() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_8013767C(s32 a0); \
extern s32 func_80171990(u8 *a0); \
extern void func_80170068(u8 *a0); \
extern void *D_8011F738; \
void func_80170018(u8 *a0) { \
func_801719A4((int)a0, 1); \
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_8011F738); \
func_80171990(a0); \
func_80170068(a0); \
}
#define DEFINE_func_80170068() \
extern s32 func_801399F0(s32 a0); \
extern void func_80139914(s32 a0); \
extern void func_80171928(void *a0); \
void func_80170068(u8 *a0) { \
if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { \
func_80139914(*(s32 *)(a0 + 0x198)); \
*(s32 *)(a0 + 0x198) = 0; \
func_80171928(a0); \
} \
}
#define DEFINE_func_80170100() \
extern s32 func_801399F0(s32 a0); \
extern void func_80139914(s32 a0); \
extern void func_80171928(void *a0); \
void func_80170100(u8 *a0) { \
if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { \
func_80139914(*(s32 *)(a0 + 0x198)); \
*(s32 *)(a0 + 0x198) = 0; \
func_80171928(a0); \
} \
}
#define DEFINE_func_80173C64() \
extern s32 func_80171CC4(void *a0, void *a1); \
extern void func_80171A1C(u8 *a0); \
extern s16 D_80126B36; \
void func_80173C64(u8 *a0) { \
s16 *p = &D_80126B36; \
if (*p != 0) { \
if (func_80171CC4(a0, p - 3) == 0) { \
return; \
} \
} \
func_80171A1C(a0); \
}
#define DEFINE_func_8012C044() \
extern s32 D_801274D4; \
extern s16 D_80126CAC; \
extern s32 D_801274E0; \
extern s32 func_80013478(s32 a0, s32 a1); \
s32 func_8012C044(s32 a0) { \
s32 (*fp)(void) = (s32 (*)(void))D_801274D4; \
if (fp != 0) { \
return fp(); \
} \
return func_80013478(a0 + 4, (s32)&D_80126CAC) >= D_801274E0; \
}
#define DEFINE_func_80144A98() \
extern void func_8012C1B8(void); \
extern void func_8012CAE4(void *a0); \
extern void func_8001C214(s32 a0, s32 a1); \
void func_80144A98(u8 *a0) { \
s32 v0; \
v0 = ((s32 (*)(void))func_8012C1B8)(); \
*(s32 *)(a0 + 0x20) = v0; \
if (v0 == 0) { \
func_8012CAE4(a0); \
} else { \
func_8001C214(v0, 0); \
*(s16 *)(a0 + 0x2) = 1; \
} \
}
#define DEFINE_func_8015F848() \
extern s32 D_8011F730; \
extern void func_801553A8(s32 *a0); \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80146CA0(void *a0); \
void func_8015F848(s32 *a0) { \
func_801553A8(a0); \
func_80154150((s32)a0, 0x1F); \
D_8011F730 |= 0x5; \
func_80146CA0(a0); \
}
#define DEFINE_func_801685EC() \
extern void func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern s32 func_80166690(s32 a0, s32 a1); \
extern void func_80146C3C(void); \
void func_801685EC(s32 a0) { \
func_80166994(a0, 2, 2, 0); \
if ((short)func_80166690(2, 1) == 0) { \
((void (*)(s32))func_80146C3C)(a0); \
} \
}
#define DEFINE_func_801717A0() \
extern void func_801719A4(int a0, int a1); \
extern int func_800D0F8C(int a0); \
extern int func_800D0FE0(int a0); \
extern void func_80171928(void *a0); \
extern void *D_8011F738; \
void func_801717A0(void *a0) { \
int v0; \
func_801719A4((int)a0, 1); \
v0 = func_800D0F8C(*(u8 *)&D_8011F738); \
if (v0 != 0) { \
func_800D0FE0(v0); \
} \
func_80171928(a0); \
}
#define DEFINE_func_80179F98() \
extern void func_80179B74(s16 *a0); \
void func_80179F98(u16 *a0) { \
s16 sp[5]; \
sp[0] = 0x17; \
sp[1] = a0[0]; \
sp[2] = a0[1]; \
sp[3] = a0[2]; \
sp[4] = a0[3]; \
func_80179B74(sp); \
}
#define DEFINE_func_80179FEC() \
extern void func_80179B74(s16 *a0); \
void func_80179FEC(u16 *a0) { \
s16 sp[5]; \
sp[0] = 0x20; \
sp[1] = a0[0]; \
sp[2] = a0[1]; \
sp[3] = a0[2]; \
sp[4] = a0[3]; \
func_80179B74(sp); \
}
#define DEFINE_func_8017A040() \
extern void func_80179B74(s16 *a0); \
void func_8017A040(u16 *a0) { \
s16 sp[5]; \
sp[0] = 0x1D; \
sp[1] = a0[0]; \
sp[2] = a0[1]; \
sp[3] = a0[2]; \
sp[4] = a0[3]; \
func_80179B74(sp); \
}
#define DEFINE_func_80155C0C() \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80146CA0(void *a0); \
extern u8 D_800D4DD4[]; \
void func_80155C0C(s32 *a0) { \
u8 sp10[0x40]; \
(void)sp10; \
a0[0x44 / 4] |= 2; \
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
func_80154274(a0, (s32)D_800D4DD4); \
func_80146CA0(a0); \
} \
}
#define DEFINE_func_80160A74() \
extern void func_80160B00(void); \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80159B70(void *a0); \
extern u8 D_80078EBF; \
void func_80160A74(s32 *a0) { \
if (D_80078EBF == 0x80) { \
func_80160B00(); \
} else { \
func_80147078(a0, 0); \
func_80159B70(a0); \
} \
}
#define DEFINE_func_80162F08() \
extern void func_80162F60(s32 arg0, s32 arg1); \
extern void func_80162F80(s32 arg0, s32 arg1); \
extern void func_80162FA0(s32 arg0, s32 arg1); \
void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3) { \
func_80162F60(a0, a1); \
func_80162F80(a0, a2); \
func_80162FA0(a0, a3); \
}
#define DEFINE_func_80164A74() \
extern void func_80148534(s32 a0, s32 a1); \
extern void func_80015954(s32 a0, s32 a1); \
extern void func_80149374(s32 a0, s32 a1); \
void func_80164A74(s32 *a0) { \
s32 sp10[2]; \
s32 sp18[2]; \
s32 s1 = a0[0x4C / 4]; \
func_80148534((s32)sp10, (s32)sp18); \
func_80015954((s32)sp10, (s32)a0 + 4); \
func_80149374(s1, (s32)a0 + 4); \
}
#define DEFINE_func_80165718() \
extern s32 func_80165A20(s32 a0); \
extern u8 D_80078EC1; \
void func_80165718(s32 a0) { \
switch (D_80078EC1) { \
case 3: \
case 0xC: \
case 0x18: \
func_80165A20(a0); \
break; \
} \
}
#define DEFINE_func_8016629C() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_8016629C(void *a0) { \
func_80146A6C(3, a0, *(s16 *)((s32)a0 + 6), \
(s16)(*(u16 *)((s32)a0 + 0xA) - 0x10), \
*(s16 *)((s32)a0 + 0xE), 0xF88FFF2, 0xE000C000); \
}
#define DEFINE_func_801662F4() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_801662F4(void *a0) { \
func_80146A6C(3, a0, *(s16 *)((s32)a0 + 6), \
(s16)(*(u16 *)((s32)a0 + 0xA) - 0x10), \
*(s16 *)((s32)a0 + 0xE), 0x8FEFFF4, 0xE000C000); \
}
#define DEFINE_func_8016634C() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_8016634C(void *a0) { \
func_80146A6C(3, a0, *(s16 *)((s32)a0 + 6), \
(s16)(*(u16 *)((s32)a0 + 0xA) - 0x10), \
*(s16 *)((s32)a0 + 0xE), 0xEEEFFF8, 0x6800B000); \
}
#define DEFINE_func_801663A4() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_801663A4(void *a0) { \
func_80146A6C(3, a0, *(s16 *)((s32)a0 + 6), \
(s16)(*(u16 *)((s32)a0 + 0xA) - 0x10), \
*(s16 *)((s32)a0 + 0xE), 0xCCCFFF8, 0xE000C000); \
}
#define DEFINE_func_8016FE78() \
extern void func_801477E8(s32 *a0, s32 a1); \
extern s32 func_80171990(u8 *a0); \
extern u16 D_8011F73E; \
s32 func_8016FE78(s32 *a0) { \
*(u16 *)((s32)a0 + 0xAA) |= 0x40; \
if (D_8011F73E != 0) { \
func_801477E8(a0, D_8011F73E << 16); \
} \
return func_80171990((u8 *)a0); \
}
#define DEFINE_func_80145BF8() \
extern s32 func_80028FBC(void); \
extern s32 func_80029000(void); \
extern s32 func_80028D9C(void); \
extern void func_8002D4C8(s32 a0, s32 a1); \
void func_80145BF8(void) { \
func_8002D4C8(0x21, func_80028FBC() & 0xFFFF); \
func_8002D4C8(0x22, func_80029000() & 0xFFFF); \
func_8002D4C8(func_80028D9C() == 0 ? 0xC : 0xB, 0); \
}
#define DEFINE_func_8014CA14() \
extern u16 func_8014CA70(s32 a0, s32 a1); \
extern void func_80147364(u16, s32); \
extern void *D_8012707C; \
s32 func_8014CA14(s32 a0, s32 a1) { \
u16 x = func_8014CA70(a0, a1); \
if (x == 0) { \
return 1; \
} \
if (x != (s32)D_8012707C) { \
func_80147364(x, 0); \
return 0; \
} \
D_8012707C = 0; \
return 0; \
}
#define DEFINE_func_8014CA88() \
extern u16 func_8014CAE4(s32 *a0, s32 a1); \
extern void func_80147364(u16, s32); \
extern void *D_8012707C; \
s32 func_8014CA88(s32 *a0, s32 a1) { \
u16 x = func_8014CAE4(a0, a1); \
if (x == 0) { \
return 1; \
} \
if (x != (s32)D_8012707C) { \
func_80147364(x, 0); \
return 0; \
} \
D_8012707C = 0; \
return 0; \
}
#define DEFINE_func_8015C788() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_801553A8(s32 *a0); \
extern void func_80155440(s32 *a0); \
extern void func_80146E90(s32 *a0, s32 a1); \
extern void func_80146CA0(void *a0); \
void func_8015C788(s32 a0) { \
func_80154150(a0, 0x12); \
func_80154A74(a0, 0x17); \
func_801553A8((s32 *)a0); \
func_80155440((s32 *)a0); \
func_80146E90((s32 *)a0, 0xA); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_8015E22C() \
extern void func_80154274(s32 *a0, s32 a1); \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_80146CA0(void *a0); \
extern u8 D_800D4FF4[]; \
void func_8015E22C(s32 a0) { \
func_80154274((s32 *)a0, (s32)D_800D4FF4); \
*(s32 *)(a0 + 0x234) = 0; \
func_80146994(5, a0, 0xA, 0); \
*(s32 *)(a0 + 0x44) |= 2; \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_8015F260() \
extern void func_801553A8(s32 *a0); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_80149048(s32 *a0); \
void func_8015F260(s32 *a0) { \
s32 v; \
func_801553A8(a0); \
func_80154A74((s32)a0, 0x11); \
v = a0[0x11]; \
v &= -0x3; \
v &= -0x2; \
a0[0x11] = v; \
func_80149048(a0); \
*(s16 *)((u8 *)a0 + 0xF6) = 0x1000; \
}
#define DEFINE_func_80160CB4() \
extern s32 func_80161208(void); \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_80146CA0(void *a0); \
void func_80160CB4(s32 *a0) { \
if (func_80161208() == 0) { \
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
func_80154150((s32)a0, 0x27); \
func_80154A74((s32)a0, 0x1F); \
func_80146CA0(a0); \
} \
} \
}
#define DEFINE_func_80161488() \
extern s32 func_801615C4(void *a0, s32 a1); \
extern void func_80161774(void *a0, s32 a1); \
extern s32 func_8016197C(s32 a0, s32 a1); \
s32 func_80161488(void *a0) { \
s32 v0 = func_801615C4(a0, 0); \
if (*(u8 *)((u8 *)a0 + 0x1C6) == 0) { \
func_80161774(a0, v0); \
} else { \
return func_8016197C((s32)a0, v0) & -0x8; \
} \
/* fall off end: returns clobbered v0 (matches original) */ \
}
#define DEFINE_func_801623B8() \
extern void func_800D0C48(s32 a0); \
extern void func_800167B8(s32 a0); \
s32 func_801623B8(s32 *a0) { \
if (--a0[0xA] == -1) { \
func_800D0C48(1); \
func_800167B8(4); \
*((u8 *)a0 + 0x15) += 1; \
} \
return 0; \
}
#define DEFINE_func_80157F64() \
extern s32 func_80029178(s32 a0); \
extern u16 func_80148800(s32 *a0); \
extern void func_80149CB4(void); \
s32 func_80157F64(s32 *a0) { \
if ((func_80029178(0x87) & 0xFF) != 0) { \
if ((func_80148800(a0) & 0x80) != 0) { \
((void (*)(s32 *, s32))func_80149CB4)(a0, 5); \
return 1; \
} \
} \
return 0; \
}
#define DEFINE_func_801601E4() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_80146CA0(void *a0); \
extern s32 func_80161208(void); \
void func_801601E4(s32 *a0) { \
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
func_80154150((s32)a0, 0x22); \
func_80154A74((s32)a0, 0x1A); \
func_80146CA0(a0); \
} else { \
((s32 (*)(s32 *))func_80161208)(a0); \
} \
}
#define DEFINE_func_80160244() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_80146CA0(void *a0); \
extern s32 func_80161208(void); \
void func_80160244(s32 *a0) { \
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
func_80154150((s32)a0, 0x23); \
func_80154A74((s32)a0, 0x1B); \
func_80146CA0(a0); \
} else { \
((s32 (*)(s32 *))func_80161208)(a0); \
} \
}
#define DEFINE_func_8016D5EC() \
extern void func_8016CF04(s32 a0, s32 a1); \
extern void func_80146C3C(void); \
void func_8016D5EC(s32 *a0) { \
u16 *rec = (u16 *)a0[8]; /* lw 0x20(s0) */ \
rec[0xC] -= 0x60; /* 0x18 */ \
rec[0xD] -= 0x60; /* 0x1A */ \
if ((s16)((s32 (*)(s32, s32))func_8016CF04)((s32)a0, 2) != 0) { \
((void (*)(s32 *))func_80146C3C)(a0); \
} \
}
#define DEFINE_func_8016F14C() \
extern void func_80148634(void *a0); \
void func_8016F14C(void *a0) { \
s32 v1 = *(s32 *)((u8 *)a0 + 0x1F8); \
s32 fp = v1 & 0x80FFFFFF; \
if (v1 != 0) { \
if (v1 & 0x1000000) { \
func_80148634(a0); \
} \
((void (*)(void *))fp)(a0); \
} \
}
#define DEFINE_func_8016FED0() \
extern s32 func_80172664(s32 *a0); \
extern s32 func_80171CC4(void *a0, void *a1); \
extern void func_80171928(void *a0); \
extern void *D_8011F738; \
void func_8016FED0(s32 *a0) { \
if (func_80172664(a0) != 0) { \
*(u16 *)((u8 *)a0 + 0xAA) |= 0x40; \
} \
if (func_80171CC4(a0, &D_8011F738) != 0) { \
func_80171928(a0); \
} \
}
#define DEFINE_func_8015C0C4() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_801553A8(s32 *a0); \
extern void func_80146CA0(void *a0); \
extern s16 D_801152B0; \
extern s16 D_801152B4; \
void func_8015C0C4(s32 a0) { \
s32 t = D_801152B0 << 6; \
*(s32 *)(a0 + 0x238) = 0x80000; \
*(s32 *)(a0 + 0x234) = t; \
*(s32 *)(a0 + 0x23C) = D_801152B4 << 6; \
func_80154150(a0, 0x11); \
func_801553A8((s32 *)a0); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_8012EECC() \
extern s32 func_8002A4FC(s32 a0); \
s32 func_8012EECC(s32 a0) { \
s32 n = a0 * func_8002A4FC(a0); \
return a0 - (n * 100) / 7680; \
}
#define DEFINE_func_8013A1E8() \
extern s32 D_80127524; \
extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); \
extern void func_80138B88(s32 a0); \
void func_8013A1E8(s32 a0) { \
s32 v = D_80127524; \
if (v == a0) { \
if (func_80138DB8(v, 0, 0x70) != 0 || (*(s32 *)(v + 8) & 0x800)) { \
func_80138B88(v); \
} \
} \
}
#define DEFINE_func_80149078() \
extern void func_801490E0(s32 *a0, s16 a1); \
extern void func_801490E8(s32 *a0, s16 a1); \
extern void func_801490F0(s32 *a0, s16 a1); \
void func_80149078(s32 *a0, s32 a1, s32 a2, s32 a3) { \
func_801490E0(a0, (s16)a1); \
func_801490E8(a0, (s16)a2); \
func_801490F0(a0, (s16)a3); \
}
#define DEFINE_func_8015DB6C() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_8015DCB8(s32 a0); \
extern void func_80147300(u16 arg0); \
extern void func_801553A8(s32 *a0); \
extern void func_8014BD60(s32 a0, s32 a1); \
extern void func_80146CA0(void *a0); \
void func_8015DB6C(s32 a0) { \
func_80154150(a0, 0x1C); \
func_80154A74(a0, 0x19); \
*(s32 *)(a0 + 0x234) = 0; \
func_8015DCB8(a0); \
func_80147300(0x5F5); \
func_801553A8((s32 *)a0); \
func_8014BD60(a0, 4); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_8015DECC() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_8015E018(s32 a0); \
extern void func_80147300(u16 arg0); \
extern void func_801553A8(s32 *a0); \
extern void func_8014BD60(s32 a0, s32 a1); \
extern void func_80146CA0(void *a0); \
void func_8015DECC(s32 a0) { \
func_80154150(a0, 0x1C); \
func_80154A74(a0, 0x19); \
*(s32 *)(a0 + 0x234) = 0; \
func_8015E018(a0); \
func_80147300(0x5F5); \
func_801553A8((s32 *)a0); \
func_8014BD60(a0, 4); \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_80161094() \
extern s32 func_801399F0(s32 a0); \
extern void func_80139914(s32 a0); \
extern void func_80129248(s16 a0); \
extern u16 D_801270C0; \
extern u8 D_800B9A17; \
void func_80161094(s32 a0) { \
if (func_801399F0(*(s32 *)(a0 + 0x198)) != 0) { \
func_80139914(*(s32 *)(a0 + 0x198)); \
*(s32 *)(a0 + 0x198) = 0; \
} \
D_801270C0 = 1; \
func_80129248(1); \
D_800B9A17 = 1; \
}
#define DEFINE_func_8012C218() \
extern void func_80016714(void *a0, s32 a1); \
void func_8012C218(void *a0) { \
u16 *p = ((u16 **)a0)[8]; /* 0x20/4 */ \
if (p) { \
s32 a1; \
switch (*p) { \
case 2: a1 = 0x38; break; \
case 1: a1 = 0x84; break; \
default: goto skip; \
} \
func_80016714(p, a1); \
} \
skip: \
func_80016714(a0, 0x10C); \
}
#define DEFINE_func_80161B18() \
extern s32 D_800AE6B0; \
extern void func_801599A4(void *a0); \
extern void func_8015FA78(s32 *a0); \
s32 func_80161B18(void *a0) { \
if ((D_800AE6B0 & 0x80FFFFFF) != 0) return 0; \
if (*(s32 *)((u8 *)a0 + 0x44) & 0x10) { \
func_801599A4(a0); \
func_8015FA78((s32 *)a0); \
return 1; \
} \
return 0; \
}
#define DEFINE_func_80163664() \
extern void func_80157158(); \
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) { \
func_80157158(a0, a1 & 0xFFFF, a2 & 0xFFFF, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12); \
}
#define DEFINE_func_8016FBB8() \
extern void func_801719A4(int a0, int a1); \
extern void func_80171B44(s32 *a0); \
extern s32 func_80171990(u8 *a0); \
extern void func_8016FC24(); \
void func_8016FBB8(s32 a0) { \
u8 *p; \
*(s16 *)(a0 + 0x136) = 2; \
p = *(u8 **)(a0 + 0x20); \
*(s16 *)(a0 + 0x132) = *(u16 *)(p + 0x12); \
p = *(u8 **)(a0 + 0x20); \
*(s16 *)(p + 0x12) = (*(u16 *)(p + 0x12) + 0x800) & 0xFFF; \
func_801719A4(a0, 1); \
func_80171B44((s32 *)a0); \
func_80171990((u8 *)a0); \
func_8016FC24(a0); \
}
#define DEFINE_func_801787D4() \
extern u8 D_801202A0[]; \
extern void func_80178840(); \
void func_801787D4(void) { \
u8 *p = D_801202A0; \
s32 i; \
for (i = 0; i < 0x60; i++) { \
if (*(u16 *)(p + 0) != 0 && p[0xC0] != 0) { \
func_80178840(p); \
} \
p += 0x10C; \
} \
}
#define DEFINE_func_8012C820() \
extern u8 D_80120194[]; \
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); \
s32 func_8012C820(u8 *a0) { \
u8 *base = D_80120194; \
u8 *p = base + 0x6480; \
if (p != base) { \
do { \
if (*(u16 *)p == 0) goto found; \
p -= 0x10C; \
} while (p != base); \
} \
p = 0; \
found: \
if (p != 0) { \
*(u16 *)(a0 + 0xA) = *(u16 *)(a0 + 0xA) | 0x8000; \
func_8012C890((s32)a0, (s32)p, 0); \
} else { \
return 0; \
} \
}
#define DEFINE_func_80146924() \
extern s32 D_8011D030; \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
s32 func_80146924(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg5) { \
s32 count = 0; \
u8 *v1 = (u8 *)&D_8011D030; \
u8 *end = v1 + 0xA50; \
while (v1 < end) { \
if (*(u16 *)v1 == (a0 & 0xFFFF)) count++; \
v1 += 0x58; \
} \
if ((u32)count < (u32)arg5) { \
return func_80146994(a0 & 0xFFFF, a1, a2, a3); \
} \
return 0; \
}
#define DEFINE_func_801498E0() \
extern s32 func_80149AA8(s32 *a0); \
extern s32 func_80149B54(s32 *a0); \
extern void func_80146750(void *a0); \
s32 func_801498E0(s32 *a0) { \
s16 st[4]; \
s32 stw[3]; \
if (func_80149AA8(a0) != 0 || func_80149B54(a0) != 0) { \
st[0] = 8; \
stw[0] = (s32)a0; \
st[1] = 0; \
st[2] = -0x1E; \
st[3] = 0; \
stw[1] = 0; \
stw[2] = 0; \
func_80146750(st); \
return 1; \
} \
return 0; \
}
#define DEFINE_func_8014CD0C() \
extern void func_8014CF04(s32 a0, void *a1, void *a2); \
extern void func_8014CD80(s32 a0, void *a1, void *a2); \
void func_8014CD0C(u8 *a0) { \
u16 sp10[3]; \
u16 sp18[3]; \
u16 b; \
u16 c; \
u16 d; \
b = *(u16 *)(a0 + 0x6); \
sp18[0] = b; \
sp10[0] = b; \
c = *(u16 *)(a0 + 0xA); \
sp10[1] = c - 3; \
d = *(u16 *)(a0 + 0xE); \
sp18[1] = c + 5; \
sp18[2] = d; \
sp10[2] = d; \
if (*(s32 *)(a0 + 0x174) == 0) { \
func_8014CF04((s32)a0, sp10, sp18); \
} else { \
func_8014CD80((s32)a0, sp10, sp18); \
} \
}
#define DEFINE_func_8015ABD4() \
extern s32 func_8016F1AC(void); \
extern s32 func_80029178(s32 a0); \
extern s32 D_8011F9C4; \
s32 func_8015ABD4(s32 a0, s32 a1, s32 a2) { \
if (func_8016F1AC() != 0) { \
return 0; \
} \
if (a2 < a1) { \
if (D_8011F9C4 == 0) { \
return 0; \
} \
if ((func_80029178(0x21) & 0xFF) != 0) { \
return 0; \
} \
} \
return 1; \
}
#define DEFINE_func_8016FD08() \
extern s32 func_80172658(s32 *a0); \
extern void func_80146D90(s32 a0); \
extern s32 func_80171990(u8 *a0); \
extern void *D_8011F738; \
void func_8016FD08(u8 *s0) { \
s32 *p; \
if (func_80172658((s32 *)s0)) { \
func_80146D90((s32)s0); \
*(u16 *)(s0 + 0xAC) = *(u16 *)(s0 + 0xAC) | 0x40; \
*(u16 *)(s0 + 0xAA) = *(u16 *)(s0 + 0xAA) | 0x40; \
p = (s32 *)&D_8011F738; \
if ((*p = *p - 1) == 0) { \
func_80171990(s0); \
} \
} \
}
#define DEFINE_func_8017385C() \
extern s16 D_80126B30; \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
void func_8017385C(u8 *a0) { \
switch (D_80126B30) { \
case 0: \
default: \
*(u16 *)(a0 + 0xAC) |= 0x80; \
*(u16 *)(a0 + 0xAA) |= 0x80; \
break; \
case 1: \
*(u16 *)(a0 + 0xAC) |= 0x10; \
*(u16 *)(a0 + 0xAA) |= 0x10; \
break; \
} \
func_80171A1C(a0); \
func_80174650((s32)a0); \
}
#define DEFINE_func_8012DEB8() \
extern void func_8012F214(s32 a0, s32 a1, s32 a2); \
extern s32 func_8012DF34(s32 a0, s32 a1, s32 a2); \
extern s16 D_80126B9A; \
s32 func_8012DEB8(s32 a0, s32 a1, s32 a2) { \
s32 sp10[2]; \
s32 sp18[2]; \
func_8012F214(a0, a1, (s32)sp10); \
func_8012F214(a0, a2, (s32)sp18); \
if (func_8012DF34(a0, (s32)sp10, (s32)sp18) != 0) { \
D_80126B9A = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); \
return 1; \
} \
return 0; \
}
#define DEFINE_func_8013A448() \
extern void func_8013A530(void); \
void func_8013A448(void *a0) { \
s16 *a1 = *(s16 **)((char *)a0 + 0x4); \
if (*(u16 *)((char *)a0 + 0x2) == 0) { \
*(s16 *)((char *)a1 + 0x2A) = 0x400; \
*(s16 *)((char *)a1 + 0x28) = 0x400; \
*(s16 *)((char *)a0 + 0x2) = *(u16 *)((char *)a0 + 0x2) + 1; \
} else { \
*(s16 *)((char *)a1 + 0x28) = *(u16 *)((char *)a1 + 0x28) + 0x200; \
*(s16 *)((char *)a1 + 0x2A) = *(u16 *)((char *)a1 + 0x2A) + 0x200; \
if (*(s16 *)((char *)a1 + 0x28) == 0x1000) { \
*(s16 *)((char *)a0 + 0x0) = 2; \
*(s16 *)((char *)a0 + 0x2) = 0; \
} \
} \
func_8013A530(); \
}
#define DEFINE_func_801417F8() \
extern void func_800D2624(void); \
extern u8 D_800B9A15; \
extern u8 D_800B9A16; \
extern short D_800B9A02; \
extern u16 D_80115114; \
extern u16 D_80115112; \
void func_801417F8(void) { \
if (D_800B9A15 == 0 || D_800B9A16 != 0) { \
if (D_80115114 == (u16)(D_800B9A02 ^ 1)) { \
func_800D2624(); \
} else { \
D_80115112 += 1; \
} \
} \
}
#define DEFINE_func_80151F38() \
extern void func_80149020(s32 *a0); \
extern void func_80151FB4(s32 a0); \
extern void func_80159B3C(void *a0); \
extern void func_80165718(s32 a0); \
extern s32 func_80172630(u8 *a0); \
void func_80151F38(s32 *a0) { \
func_80149020(a0); \
*(s16 *)((char *)a0 + 0x64) = *(u16 *)((char *)a0 + 0x64) - (*(u8 *)((char *)a0 + 0xDE) << 6); \
*(u8 *)((char *)a0 + 0xDE) = *(u8 *)((char *)a0 + 0xDE) + 8; \
if (*(s16 *)((char *)a0 + 0x64) < 0x1000) { \
func_80151FB4((s32)a0); \
func_80159B3C(a0); \
func_80165718((s32)a0); \
} else { \
func_80172630((u8 *)a0); \
} \
}
#define DEFINE_func_80152714() \
extern void func_80019064(void *a0); \
extern int func_80151204(int arg, int a1); \
extern void func_80152790(s32 a0); \
extern void func_80159B3C(void *a0); \
extern void func_80165718(s32 a0); \
extern u8 D_80062BF4[]; \
extern u8 D_80078EC1; \
void func_80152714(s32 a0) { \
s32 sp[8]; \
func_80019064((void *)D_80062BF4); \
func_80151204(a0, *(s16 *)(a0 + 0xF2)); \
if (D_80078EC1 != 2) { \
*(s32 *)(a0 + 0x1AC) = 0x3C0000; \
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) | 0x100; \
} \
func_80152790(a0); \
func_80159B3C((void *)a0); \
func_80165718(a0); \
(void)sp; \
}
#define DEFINE_func_80155B20() \
extern int func_80161208(void); \
extern void func_80146D80(s32 *a0); \
extern void func_801477E8(s32 *a0, s32 a1); \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80146CA0(void *a0); \
extern u8 D_800D4DA8[]; \
void func_80155B20(s32 *a0) { \
a0[0x44 / 4] |= 2; \
if (func_80161208() == 0) { \
if (*(u16 *)((char *)a0 + 0xB8) == 0x8000) { \
func_80146D80(a0); \
func_801477E8(a0, 0xFFF00000); \
func_80154274(a0, (s32)D_800D4DA8); \
func_80146CA0(a0); \
} \
} \
}
#define DEFINE_func_8016345C() \
extern u16 func_80156370(u16 a0); \
extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); \
void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4) { \
s32 r; \
r = func_80156370(a1); \
func_80163534(a0, a1, (u16)r, a2, a3, a4); \
}
#define DEFINE_func_8016E26C() \
extern void func_8016E3CC(s32 a0); \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_8016E26C(s32 *a0) { \
func_8016E3CC((s32)a0); \
if (--a0[0x1C / 4] != 0) { \
func_80146A6C(0x48, a0, 0, 0, 0, 0x8000, 0); \
} else { \
a0[0x1C / 4] = 0x10; \
*(u16 *)((char *)a0 + 2) += 1; \
} \
}
#define DEFINE_func_8012A908() \
extern u8 D_801202A0[]; \
extern u16 D_801270C0; \
extern void func_8012A988(u8 *a0); \
void func_8012A908(void) { \
u8 *p = D_801202A0; \
s32 i; \
for (i = 0; i < 0x60; i++) { \
if (((s16)D_801270C0 == 1) || (*(u16 *)(p + 0x72) & 0x1000)) { \
func_8012A988(p); \
} \
p += 0x10C; \
} \
}
#define DEFINE_func_80133060() \
extern void func_801330E0(s16 *a0, s16 *a1, s32 a2); \
void func_80133060(u8 *a0, s32 *a1, s32 a2) { \
s16 tmp[3]; \
tmp[0] = *(u16 *)(a0 + 2); \
tmp[1] = *(u16 *)(a0 + 6); \
tmp[2] = *(u16 *)(a0 + 0xA); \
func_801330E0(tmp, tmp, (s16)a2); \
a1[0] = tmp[0] << 16; \
a1[1] = tmp[1] << 16; \
a1[2] = tmp[2] << 16; \
}
#define DEFINE_func_80142D38() \
extern s32 func_8012BEE8(s32 a0); \
s32 func_80142D38(s32 *a0) { \
if (func_8012BEE8((s32)a0) == 1) { \
return 1; \
} \
if (a0[0x1C / 4] & 1) { \
((s32 *)a0[0x20 / 4])[1] |= 0x80000000; \
} else { \
((s32 *)a0[0x20 / 4])[1] &= 0x7FFFFFFF; \
} \
return 0; \
}
#define DEFINE_func_80150BC8() \
extern u16 D_800B99DA; \
extern s32 func_801619D0(void *a0); \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern u8 func_8014BF6C(void); \
extern s32 func_80151184(s32 a0, s32 a1, s32 a2); \
void func_80150BC8(s32 *a0) { \
if (func_801619D0(a0) != 0) { \
if (D_800B99DA & 0x7) { \
func_80146994(0x34, (s32)a0, 0, 0); \
} \
} else { \
if ((func_8014BF6C() & 0xFF) == 0) { \
func_80151184((s32)a0, 0xC003, 0x10); \
} \
} \
}
#define DEFINE_func_80153410() \
extern void func_80149020(s32 *a0); \
extern void func_80148038(s32 a0, s32 a1); \
extern void func_80147460(s32 a0); \
extern void func_801470B4(s32 a0); \
extern void func_8015369C(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80153410(s32 *a0) { \
func_80149020(a0); \
func_80148038((s32)a0, 0x18000); \
func_80147460((s32)a0); \
if (*(s16 *)((u8 *)a0 + 0xA) < 0x201) { \
u8 v1 = *(u8 *)((u8 *)a0 + 0xDE); \
*(u8 *)((u8 *)a0 + 0xDE) = v1 + 0xFF; \
if (v1 != 0) { \
return; \
} \
} \
func_801470B4((s32)a0); \
func_8015369C((s32)a0); \
func_80146CA0(a0); \
}
#define DEFINE_func_80153B58() \
extern u16 D_800B99DA; \
extern s32 func_8016DA04(s32 a0); \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_80153B58(s32 *a0) { \
if ((D_800B99DA & 0x3) == 0) { \
func_8016DA04((s32)a0); \
} \
if ((D_800B99DA & 0x1) == 0) { \
func_80146A6C(3, a0, \
*(s16 *)((u8 *)a0 + 6), \
*(s16 *)((u8 *)a0 + 0xA), \
*(s16 *)((u8 *)a0 + 0xE), \
0x8880000, 0x18009000); \
} \
}
#define DEFINE_func_801592CC() \
extern s32 func_801399F0(s32 a0); \
extern void func_80139914(s32 a0); \
extern s32 func_8013767C(s32 a0); \
extern void func_80146C98(s32 *a0, s16 a1); \
extern u8 D_80110C3C[]; \
void func_801592CC(s32 *a0) { \
s32 *s0 = a0; \
s32 *v1 = (s32 *)s0[0x20 / 4]; \
*(s16 *)((char *)v1 + 0x12) = (*(u16 *)((char *)v1 + 0x12) + 0x16) & 0xFFF; \
if (func_801399F0(s0[0x198 / 4]) != 0) { \
func_80139914(s0[0x198 / 4]); \
s0[0x198 / 4] = func_8013767C((s32)D_80110C3C); \
func_80146C98(s0, 9); \
} \
}
#define DEFINE_func_801642AC() \
extern void func_80164418(void); \
extern s32 func_80013328(s32 a0, s32 a1); \
extern s32 func_80146E98(s32 a0); \
extern void func_80146E90(s32 *a0, s32 a1); \
extern void func_80147324(s32 a0); \
extern void func_80146CA0(void *a0); \
extern void func_80163764(s32 a0); \
void func_801642AC(s32 a0) { \
s32 s1 = a0; \
s32 s0 = *(s32 *)(s1 + 0x4C); \
func_80164418(); \
if (func_80013328(s0 + 4, s1 + 4) < 0x28 || func_80146E98(s1) != 0) { \
func_80146E90((s32 *)s1, 8); \
func_80147324(0x44A); \
func_80146CA0((void *)s1); \
} \
func_80163764(s1); \
}
#define DEFINE_func_8016D984() \
extern void func_80146C3C(void); \
extern void func_800D22E4(s32 a0); \
void func_8016D984(s32 *a0) { \
if ((--*(s32 *)((char *)a0 + 0x1C)) == 0) { \
func_80146C3C(); \
} else { \
func_800D22E4((s32)a0); \
*(s32 *)((char *)a0 + 0x10) -= *(s32 *)((char *)a0 + 0x10) >> 4; \
*(s32 *)((char *)a0 + 0x14) -= *(s32 *)((char *)a0 + 0x14) >> 4; \
*(s32 *)((char *)a0 + 0x18) -= *(s32 *)((char *)a0 + 0x18) >> 4; \
} \
}
#define DEFINE_func_8017162C() \
extern void *D_8011F738; \
extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); \
extern void func_80171928(void *a0); \
void func_8017162C(void *a0) { \
void *s1 = a0; \
void *s0 = D_8011F738; \
s32 local; \
local = 0; \
func_801716AC(0, s0, &local); \
func_801716AC(1, s0, &local); \
func_801716AC(2, s0, &local); \
if (local == 0) { \
func_80171928(s1); \
} \
}
#define DEFINE_func_80128C14() \
extern void func_80010AE0(s32 a0); \
extern s16 currentLocationId; \
void func_80128C14(void) { \
s32 a0; \
switch (currentLocationId) { \
case 0x3023: \
a0 = 0x4E0; \
break; \
case 0x3081: \
a0 = 0x420; \
break; \
case 0x3067: \
a0 = 0x480; \
break; \
case 0x3093: \
a0 = 0xFFB; \
break; \
case 0x30A5: \
a0 = 0xFFB; \
break; \
default: \
a0 = 0x3E0; \
break; \
} \
func_80010AE0(a0); \
}
#define DEFINE_func_8012B030() \
extern s32 func_80134510(s32 arg); \
s32 func_8012B030(u8 *a0) { \
u16 local[3]; \
local[0] = *(u16 *)(a0 + 0x6); \
local[1] = *(u16 *)(a0 + 0xA); \
local[2] = *(u16 *)(a0 + 0xE); \
if (func_80134510((s32)local) == 0) { \
return 0; \
} \
*(u16 *)(a0 + 0x6) = local[0]; \
*(u16 *)(a0 + 0xA) = local[1]; \
*(u16 *)(a0 + 0xE) = local[2]; \
*(u16 *)(a0 + 0xC) = 0; \
*(u16 *)(a0 + 0x8) = 0; \
*(u16 *)(a0 + 0x4) = 0; \
return 1; \
}
#define DEFINE_func_8012FF98() \
extern s32 func_8012BEE8(s32 a0); \
extern void func_80130D48(s32 a0); \
extern void func_801319E0(s32 a0); \
extern void func_80131CA8(int a0, int a1); \
void func_8012FF98(u8 *a0) { \
if (*(s32 *)(a0 + 0xB4) & 0x20) { \
s32 p = *(s32 *)(a0 + 0x20); \
if (p != 0) { \
*(u32 *)(p + 4) ^= 0x80000000; \
} \
if (func_8012BEE8((s32)a0)) { \
func_80130D48((s32)a0); \
func_801319E0((s32)a0); \
} \
} \
func_80131CA8((int)a0, 0x10); \
}
#define DEFINE_func_801305CC() \
extern s32 func_80131A34(s32, s32); \
extern void func_80131CA8(int a0, int a1); \
void func_801305CC(u8 *a0) { \
*(u8 *)(a0 + 0xC1) = 0xC; \
if (*(s32 *)(a0 + 0xB4) & 0x1000) { \
*(s32 *)(a0 + 0x1C) = 0x3C; \
*(s32 *)(a0 + 0xC4) = *(s32 *)(a0 + 0xC4) & ~4; \
if (func_80131A34((s32)a0, 0x20)) { \
*(s32 *)(a0 + 0xC4) = *(s32 *)(a0 + 0xC4) | 4; \
} else { \
*(u16 *)(a0 + 0x98) = 0; \
} \
} \
func_80131CA8((int)a0, 0x22); \
}
#define DEFINE_func_8015E9B8() \
extern u8 D_80078EC0; \
extern s16 D_801152A0; \
extern void func_80160818(s32 *a0); \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80149034(s32 *a0); \
extern void func_801553A8(s32 *a0); \
extern s32 func_80149184(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_8015E9B8(s32 *a0) { \
if (D_80078EC0 & 0x80) { \
func_80160818(a0); \
} else { \
func_80154150((s32)a0, 0x1D); \
a0[0x44 / 4] |= 1; \
func_80149034(a0); \
func_801553A8(a0); \
D_801152A0 = func_80149184((s32)a0); \
func_80146CA0(a0); \
} \
}
#define DEFINE_func_8012DF34() \
extern s32 D_80126B58; \
extern u8 D_801152A8[]; \
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); \
s32 func_8012DF34(s32 a0, s32 a1, s32 a2) { \
s32 s0 = a2; \
s32 *p = &D_80126B58; \
if (a0 != 0) { \
if (*(s16 *)(a0 + 0xAA) != 0) { \
return 0; \
} \
} \
if (func_80135888(*(s32 *)((s32)p + 0x20), *(s32 *)((s32)p + 0x38), a1, s0) != 0) { \
func_8012F568(1, 1, 0, 0xA, s0, (s32)D_801152A8); \
return 1; \
} \
return 0; \
}
#define DEFINE_func_80139E84() \
extern void func_80139A8C(s32 a0); \
extern void func_80139B18(s32 a0); \
void func_80139E84(s32 a0) { \
s32 s0 = a0; \
if (*(u16 *)(s0 + 0xE) == 0) { \
*(s16 *)(s0 + 0x4) = 2; \
} else { \
func_80139A8C(s0); \
if ((*(s32 *)(s0 + 0x8) & 0x80020) != 0) { \
*(s16 *)(s0 + 0x4) = 2; \
*(s16 *)(s0 + 0xE) = 0; \
if ((*(s32 *)(s0 + 0x8) & 0x20000) == 0) { \
*(s32 *)(s0 + 0x8) = *(s32 *)(s0 + 0x8) & -0x21; \
} \
} \
} \
func_80139B18(s0); \
}
#define DEFINE_func_80146FC4() \
extern u8 D_80126DB0[]; \
extern u16 D_80126DB6; \
extern void func_80015954(s32 a0, s32 a1); \
extern void *memcpy(void *dst, const void *src, u32 n); \
void func_80146FC4(s32 a0) { \
s32 s1 = a0; \
s32 s0; \
if (*(s16 *)(s1 + 0xA) >= 0x401) { \
s0 = (s32)D_80126DB0; \
func_80015954(s0, s1 + 0x4); \
memcpy((void *)(s1 + 0x88), (void *)s0, 8); \
*(s16 *)(*(s32 *)(s1 + 0x20) + 0x12) = D_80126DB6; \
} \
}
#define DEFINE_func_8014D0A4() \
extern void func_8014D2A0(s32 a0, void *a1, void *a2); \
extern void func_8014D12C(s32 a0, void *a1, void *a2); \
void func_8014D0A4(s32 a0) { \
s16 buf1[4]; \
s16 buf2[4]; \
buf1[0] = *(u16 *)(a0 + 0x88); \
buf1[1] = *(u16 *)(a0 + 0x8A); \
buf1[2] = *(u16 *)(a0 + 0x8C); \
buf2[0] = *(u16 *)(a0 + 0x6); \
buf2[1] = *(u16 *)(a0 + 0xA); \
buf2[2] = *(u16 *)(a0 + 0xE); \
if (*(s32 *)(a0 + 0x174) == 0) { \
func_8014D2A0(a0, buf1, buf2); \
} else { \
func_8014D12C(a0, buf1, buf2); \
} \
}
#define DEFINE_func_8014D438() \
extern void func_8014D610(s32 a0, void *a1, void *a2); \
extern void func_8014D4C0(s32 a0, void *a1, void *a2); \
void func_8014D438(s32 a0) { \
s16 buf1[4]; \
s16 buf2[4]; \
buf1[0] = *(u16 *)(a0 + 0x88); \
buf1[1] = *(u16 *)(a0 + 0x8A); \
buf1[2] = *(u16 *)(a0 + 0x8C); \
buf2[0] = *(u16 *)(a0 + 0x6); \
buf2[1] = *(u16 *)(a0 + 0xA); \
buf2[2] = *(u16 *)(a0 + 0xE); \
if (*(s32 *)(a0 + 0x174) == 0) { \
func_8014D610(a0, buf1, buf2); \
} else { \
func_8014D4C0(a0, buf1, buf2); \
} \
}
#define DEFINE_func_80158CD8() \
extern u16 func_801487F4(s32 *a0); \
extern s32 func_80146E98(s32 a0); \
extern void func_80147324(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80158CD8(s32 *a0) { \
s32 i = 1; \
if (func_801487F4(a0) & 0xF0) { \
i = 4; \
} \
while (i > 0) { \
if (func_80146E98((s32)a0)) { \
func_80147324(0x453); \
*(s32 *)((s32)a0 + 0x238) = 0x5B0000; \
func_80146CA0((void *)a0); \
i = 0; \
} \
i--; \
} \
}
#define DEFINE_func_801598E0() \
extern void func_80159968(void *a0); \
void func_801598E0(u8 *a0) { \
switch (a0[0xA9]) { \
case 0x41: \
*(u16 *)(a0 + 0xAA) &= 0xAFFF; \
*(u16 *)(a0 + 0xAC) &= 0xAFFF; \
break; \
case 0x53: \
case 0x73: \
*(u16 *)(a0 + 0xAE) = a0[0xAE] | 0x8000; \
break; \
} \
func_80159968((void *)a0); \
}
#define DEFINE_func_801741EC() \
extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
extern s16 D_80126B3C; \
extern s16 D_8011F9C8; \
void func_801741EC(u8 *a0) { \
s32 v0; \
s32 s1; \
s32 t; \
v0 = *(s32 *)(a0 + 0x20); \
s1 = func_80012B04(*(s16 *)(v0 + 0x12), D_80126B3C, 4); \
if ((s16)s1 == 0) { \
D_8011F9C8 = 1; \
func_80171A1C(a0); \
func_80174650((s32)a0); \
} \
t = *(s32 *)(a0 + 0x20); \
*(u16 *)(t + 0x12) = (*(u16 *)(t + 0x12) + s1) & 0xFFF; \
}
#define DEFINE_func_8012F2E8() \
extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); \
void func_8012F2E8(s32 a0, s32 a1, s32 a2) { \
s32 s0 = a2; \
s32 in[3]; \
s32 out[3]; \
s32 mtx; \
mtx = *(s32 *)(a0 + 0x20); \
in[0] = *(s16 *)(a1 + 0x0) - *(s32 *)(mtx + 0x48); \
in[1] = *(s16 *)(a1 + 0x2) - *(s32 *)(mtx + 0x4C); \
in[2] = *(s16 *)(a1 + 0x4) - *(s32 *)(mtx + 0x50); \
ApplyTransposeMatrixLV((void *)(mtx + 0x34), in, out); \
*(s16 *)(s0 + 0x0) = out[0]; \
*(s16 *)(s0 + 0x2) = out[1]; \
*(s16 *)(s0 + 0x4) = out[2]; \
}
#define DEFINE_func_801377B4() \
extern s32 D_80127524; \
extern s32 D_80127528; \
extern void func_80137840(s32 a0); \
void func_801377B4(s32 a0, s32 a1, s32 a2) { \
s32 s1 = a0; \
s32 s0 = a1; \
s32 s2 = a2; \
s32 *p; \
s32 v1; \
func_80137840(s2); \
*(s16 *)(s2 + 0x4) = 1; \
*(s32 *)(s2 + 0x0) = s1; \
*(s32 *)(s2 + 0x8) = (s16)s0; \
if ((s0 & 0x2000) == 0) { \
p = &D_80127524; \
v1 = *p; \
if (v1 != 0) { \
D_80127528 = v1; \
*(s16 *)(v1 + 0x1A) = 2; \
} \
*p = s2; \
} \
}
#define DEFINE_func_80139A8C() \
extern s32 func_80014E80(s32 a0, s32 a1); \
extern void func_8001931C(void); \
extern s16 D_8012752C; \
void func_80139A8C(s32 a0) { \
s32 s0 = a0; \
s32 v0; \
s32 v1; \
v0 = *(s32 *)(s0 + 0x8); \
if ((v0 & 0x2021) != 0) { \
return; \
} \
if ((s16)func_80014E80(0, 0x20) == 0) { \
return; \
} \
v0 = *(s32 *)(s0 + 0x8); \
v1 = v0 | 0x20; \
*(s32 *)(s0 + 0x8) = v1; \
if ((v1 & 0x10000) == 0) { \
return; \
} \
*(s32 *)(s0 + 0x8) = (v1 & 0xFFFEFFFF) | 0x20000; \
func_8001931C(); \
D_8012752C = 0; \
}
#define DEFINE_func_801490F8() \
extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); \
void func_801490F8(s32 a0, s32 a1) { \
s32 s0 = a0; \
s32 s1 = (s16)a1; \
*(s16 *)(s0 + 0x100) = \
*(u16 *)(s0 + 0x100) + \
func_80012B04(*(s16 *)(s0 + 0x100), *(s16 *)(s0 + 0x108), s1); \
*(s16 *)(s0 + 0x102) = \
*(u16 *)(s0 + 0x102) + \
func_80012B04(*(s16 *)(s0 + 0x102), *(s16 *)(s0 + 0x10A), s1); \
*(s16 *)(s0 + 0x104) = \
*(u16 *)(s0 + 0x104) + \
func_80012B04(*(s16 *)(s0 + 0x104), *(s16 *)(s0 + 0x10C), s1); \
}
#define DEFINE_func_8016829C() \
extern void func_80146C3C(void); \
extern void func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \
void func_8016829C(s32 a0) { \
s32 *s0 = (s32 *)a0; \
if ((*(s32 *)(*(s32 *)(a0 + 0x34) + 0x44) & 0x2) == 0) { \
func_80146C3C(); \
} else { \
s16 v0 = *(u16 *)(a0 + 0x2A) - 1; \
*(s16 *)(a0 + 0x2A) = v0; \
if (v0 == 0) { \
func_80166994(a0, 0, *(s16 *)(a0 + 0x2C), 0); \
*(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
} \
} \
(void)s0; \
}
#define DEFINE_func_801684B4() \
extern void func_80146C3C(void); \
extern void func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); \
void func_801684B4(s32 a0) { \
if ((*(s32 *)(*(s32 *)(a0 + 0x34) + 0x44) & 0x2) == 0) { \
func_80146C3C(); \
} else { \
s16 v0 = *(u16 *)(a0 + 0x2A) - 1; \
*(s16 *)(a0 + 0x2A) = v0; \
if (v0 == 0) { \
func_80166994(a0, 0, 2, 0); \
*(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
} \
} \
}
#define DEFINE_func_80168AE4() \
extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_80168AE4(s32 a0) { \
s32 s0 = a0; \
func_80168BDC(s0, 9, 3, 2); \
func_80168BDC(s0, 9, 2, 1); \
func_80146A6C(3, (void *)s0, *(s16 *)(s0 + 0x6), *(s16 *)(s0 + 0xA), \
*(s16 *)(s0 + 0xE), -5, 0xC0009C00); \
*(s32 *)(s0 + 0x1C) = 1; \
*(s16 *)(s0 + 0x2) = *(u16 *)(s0 + 0x2) + 1; \
}
#define DEFINE_func_8012F0BC() \
extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); \
void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2) { \
s32 in[3]; \
s32 out[3]; \
in[0] = a1[0] - (a0[5] << 16); \
in[1] = a1[1] - (a0[6] << 16); \
in[2] = a1[2] - (a0[7] << 16); \
ApplyTransposeMatrixLV(a0, in, out); \
a2[0] = out[0]; \
a2[1] = out[1]; \
a2[2] = out[2]; \
}
#define DEFINE_func_8014D790() \
extern void func_8014DD8C(s32 a0, void *a1, void *a2); \
extern void func_8014D820(s32 a0, void *a1, void *a2); \
void func_8014D790(s32 a0) { \
s16 l1[3]; \
s16 l2[3]; \
l1[0] = *(u16 *)(a0 + 0x88); \
l1[1] = *(u16 *)(a0 + 0x8A) - 0x10; \
l1[2] = *(u16 *)(a0 + 0x8C); \
l2[0] = *(u16 *)(a0 + 0x6); \
l2[1] = *(u16 *)(a0 + 0xA) - 0x10; \
l2[2] = *(u16 *)(a0 + 0xE); \
if (*(s32 *)(a0 + 0x170) == 0) { \
func_8014DD8C(a0, l1, l2); \
} else { \
func_8014D820(a0, l1, l2); \
} \
}
#define DEFINE_func_80178744() \
extern void func_80178744(s32 a0, s32 a1); \
void func_80178744(s32 a0, s32 a1) { \
s32 v0; \
s16 sv; \
if (*(s32 *)(a0 + 0x6C) != 0) { \
func_80178744(*(s32 *)(a0 + 0x6C), a1); \
} \
v0 = *(s32 *)(a0 + 0x20); \
sv = a1; \
*(s16 *)(v0 + 0x1C) = sv; \
*(s16 *)(v0 + 0x1A) = sv; \
*(s16 *)(v0 + 0x18) = sv; \
if (a1 == 0x1000) { \
s32 v1 = *(s32 *)(a0 + 0x20); \
*(u16 *)(v1 + 0x2C) = *(u16 *)(v1 + 0x2C) & 0xFFEF; \
} else { \
s32 v1 = *(s32 *)(a0 + 0x20); \
*(u16 *)(v1 + 0x2C) = *(u16 *)(v1 + 0x2C) | 0x10; \
} \
}
#define DEFINE_func_80142838() \
extern s32 func_80142DB8(s32 *a0); \
extern s32 func_8012C0EC(s32 *a0); \
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
extern void func_80142C9C(s32 *a0); \
extern s32 func_8012BF10(s32 a0, s32 a1); \
extern void func_8012AD44(s32 *a0, s16 a1); \
void func_80142838(s32 *a0) { \
if (func_80142DB8(a0) == 1) { \
func_80142BB4(a0, 1, 3); \
return; \
} \
if (*(s16 *)((u8 *)a0 + 0x100) != 0) { \
if (func_8012C0EC(a0) == 0) { \
return; \
} \
func_80142BB4(a0, 0, 3); \
return; \
} \
func_80142C9C(a0); \
if (func_8012BF10((s32)a0, 0x30) != 0) { \
func_8012AD44(a0, 2); \
} \
}
#define DEFINE_func_80142F68() \
extern s32 func_80142DB8(s32 *a0); \
extern s32 func_8012C0EC(s32 *a0); \
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
extern void func_80142C9C(s32 *a0); \
extern s32 func_8012BF10(s32 a0, s32 a1); \
extern void func_8012AD44(s32 *a0, s16 a1); \
void func_80142F68(s32 *a0) { \
if (func_80142DB8(a0) == 1) { \
func_80142BB4(a0, 1, 3); \
return; \
} \
if (*(s16 *)((u8 *)a0 + 0x100) != 0) { \
if (func_8012C0EC(a0) == 0) { \
return; \
} \
func_80142BB4(a0, 0, 3); \
return; \
} \
func_80142C9C(a0); \
if (func_8012BF10((s32)a0, 0x30) != 0) { \
func_8012AD44(a0, 2); \
} \
}
#define DEFINE_func_801430F4() \
extern s32 func_80142DB8(s32 *a0); \
extern s32 func_8012C0EC(s32 *a0); \
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
extern void func_80142C9C(s32 *a0); \
extern s32 func_8012BF10(s32 a0, s32 a1); \
extern void func_8012AD44(s32 *a0, s16 a1); \
void func_801430F4(s32 *a0) { \
if (func_80142DB8(a0) == 1) { \
func_80142BB4(a0, 1, 3); \
return; \
} \
if (*(s16 *)((u8 *)a0 + 0x100) != 0) { \
if (func_8012C0EC(a0) == 0) { \
return; \
} \
func_80142BB4(a0, 0, 3); \
return; \
} \
func_80142C9C(a0); \
if (func_8012BF10((s32)a0, 0x30) != 0) { \
func_8012AD44(a0, 2); \
} \
}
#define DEFINE_func_8014B504() \
extern s32 func_8016F1AC(void); \
extern s16 D_80078E9A; \
extern s32 D_80078E98; \
void func_8014B504(u16 *a0) { \
s32 v1; \
if (func_8016F1AC() != 0) { \
return; \
} \
if (*a0 == 0x1E || *a0 == 0x1A) { \
return; \
} \
if ((D_80078E9A & 0x8000) == 0) { \
return; \
} \
v1 = D_80078E98 + 0x1555; \
D_80078E98 = v1; \
if (0x257F6A < (v1 & 0x7FFF0000)) { \
D_80078E98 = 0; \
} \
}
#define DEFINE_func_801636D0() \
extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); \
extern u16 D_80126B18[]; \
extern s32 D_80115200; \
void func_801636D0(s32 a0, s32 a1) { \
u32 i; \
s32 v; \
u16 *p; \
s32 *q; \
i = 0; \
v = a1 & 0x7FFF; \
p = D_80126B18; \
q = &D_80115200; \
do { \
if (*q & 1) { \
func_8014AD30(a0, p, 0, v & 0xFFFF); \
} \
p += 4; \
i++; \
q += 1; \
} while (i < 3); \
}
#define DEFINE_func_80176D00() \
extern s32 func_80178004(s32 a0, s32 a1, s32 a2); \
extern u8 D_8011F7B1; \
extern u8 D_8011F7A8; \
extern u16 D_80078EA6; \
extern u16 D_8011F7B4; \
extern u16 D_8011F7B6; \
extern s16 D_8011F81E; \
void func_80176D00(s32 a0) { \
u8 *arr = (u8 *)&D_8011F7A8; \
u8 *base; \
s32 tmp; \
s32 a1v, a2v; \
if (D_8011F7B1 != 0) { \
return; \
} \
base = arr + (s16)a0 * 4; \
tmp = *(s32 *)(base + 0x20) + 0x14; \
*(s32 *)(base + 0x38) = tmp; \
a1v = (s16)(D_8011F7B4 - 0x17); \
a2v = (s16)(D_8011F7B6 + 0x65); \
D_8011F81E = D_80078EA6; \
*(s32 *)(base + 0x40) = func_80178004(tmp, a1v, a2v) - 0x14; \
}
#define DEFINE_func_80178608() \
extern void func_80016714(void *a0, s32 a1); \
extern void func_8013E4B4(void); \
extern u8 D_801202A0[]; \
extern u16 D_801270C0; \
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; \
void func_80178608(void) { \
u16 *p = &D_801270C0; \
func_80016714(D_801202A0, 0x6480); \
*p = 1; \
D_801270C4 = 1; \
D_801274D8 = 0x240000; \
D_801270C2 = 0; \
D_801270C6 = 0; \
D_801270C7 = 0; \
D_801274DC = 0x271000; \
D_801274E0 = 0x400000; \
func_80016714((u8 *)p + 8, 0x400); \
func_8013E4B4(); \
}
#define DEFINE_func_8017C0BC() \
extern void func_80146C3C(void); \
void func_8017C0BC(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); \
} \
}
#define DEFINE_func_80128420() \
extern void func_80129220(void); \
extern void func_801378F0(void); \
extern void func_80011E24(void); \
extern void func_80128C14(void); \
extern void func_8002AEF8(void); \
extern void func_800CFBBC(void); \
extern void func_80015310(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 void func_80011C10(void); \
extern u8 D_800B9A17; \
extern u8 D_800B9A10; \
void func_80128420(void) { \
func_80129220(); \
func_801378F0(); \
func_80011E24(); \
func_80128C14(); \
func_8002AEF8(); \
func_800CFBBC(); \
func_80015310(); \
SsUtReverbOff(); \
D_800B9A17 = 0; \
D_800B9A10 = 0; \
func_8013C98C(); \
func_80129C40(0); \
func_800D0630(); \
func_80145CEC(); \
func_80144B9C(); \
func_80011C10(); \
}
#define DEFINE_func_8012BDBC() \
extern s16 D_80126CB8; \
extern s16 D_80126CB4; \
extern s32 ratan2(s32 a0, s32 a1); \
s32 func_8012BDBC(s32 a0, s32 a1) { \
s32 s0 = a0; \
s32 v0; \
s32 angle; \
v0 = ratan2(*(s16 *)(s0 + 0xE) - D_80126CB8, D_80126CB4 - *(s16 *)(s0 + 0x6)); \
v0 = (v0 - 0x400) & 0xFFF; \
v0 = v0 - *(s16 *)(*(s32 *)(s0 + 0x20) + 0x12); \
angle = v0 & 0xFFF; \
if (angle < 0x800) { \
return angle < (s16)a1; \
} \
return (0x1000 - angle) < (s16)a1; \
}
#define DEFINE_func_8013E064() \
extern int SquareRoot12(int a0); \
int func_8013E064(s16 *a0, s16 *a1) { \
s32 d[3]; \
s32 sq[3]; \
d[0] = a0[1] - a1[1]; \
d[1] = a0[3] - a1[3]; \
d[2] = a0[5] - a1[5]; \
__asm__ __volatile__("" ::: "memory"); \
{ \
register s32 *pd __asm__("$2") = &d[0]; \
__asm__ __volatile__( \
"lwc2 $9, 0(%0)\n" \
"lwc2 $10, 4(%0)\n" \
"lwc2 $11, 8(%0)\n" \
"nop\n" \
"nop\n" \
"sqr 1\n" \
: : "r"(pd) : "$9", "$10", "$11", "memory"); \
} \
{ \
register s32 *pq __asm__("$2") = &sq[0]; \
__asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(pq) : "memory"); \
} \
return SquareRoot12(sq[0] + sq[1] + sq[2]); \
}
#define DEFINE_func_8013E0FC() \
extern int SquareRoot12(int a0); \
int func_8013E0FC(s16 *a0, s16 *a1) { \
s32 d[3]; \
s32 sq[3]; \
d[0] = a0[1] - a1[0]; \
d[1] = a0[3] - a1[1]; \
d[2] = a0[5] - a1[2]; \
__asm__ __volatile__("" ::: "memory"); \
{ \
register s32 *pd __asm__("$2") = &d[0]; \
__asm__ __volatile__( \
"lwc2 $9, 0(%0)\n" \
"lwc2 $10, 4(%0)\n" \
"lwc2 $11, 8(%0)\n" \
"nop\n" \
"nop\n" \
"sqr 1\n" \
: : "r"(pd) : "$9", "$10", "$11", "memory"); \
} \
{ \
register s32 *pq __asm__("$2") = &sq[0]; \
__asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(pq) : "memory"); \
} \
return SquareRoot12(sq[0] + sq[1] + sq[2]); \
}
#define DEFINE_func_8013E194() \
extern int SquareRoot12(int a0); \
int func_8013E194(s16 *a0, s16 *a1) { \
s32 d[3]; \
s32 sq[3]; \
d[0] = a0[0] - a1[0]; \
d[1] = a0[1] - a1[1]; \
d[2] = a0[2] - a1[2]; \
__asm__ __volatile__("" ::: "memory"); \
{ \
register s32 *pd __asm__("$2") = &d[0]; \
__asm__ __volatile__( \
"lwc2 $9, 0(%0)\n" \
"lwc2 $10, 4(%0)\n" \
"lwc2 $11, 8(%0)\n" \
"nop\n" \
"nop\n" \
"sqr 1\n" \
: : "r"(pd) : "$9", "$10", "$11", "memory"); \
} \
{ \
register s32 *pq __asm__("$2") = &sq[0]; \
__asm__ __volatile__( \
"swc2 $25, 0(%0)\n" \
"swc2 $26, 4(%0)\n" \
"swc2 $27, 8(%0)\n" \
: : "r"(pq) : "memory"); \
} \
return SquareRoot12(sq[0] + sq[1] + sq[2]); \
}
#define DEFINE_func_80146EC0() \
extern void func_80015954(s32 a0, s32 a1); \
extern void func_80149374(s32 a0, s32 a1); \
extern void func_80146F58(s32 a0, s32 a1); \
void func_80146EC0(s32 a0, s32 a1, s32 a2, s32 a3) { \
s32 s2 = a0; \
s32 s0 = a1; \
s32 s1 = a3; \
u16 buf[3]; \
func_80015954(a2, a1); \
func_80149374(s2, s0); \
func_80146F58(s1, (s32)&buf[0]); \
*(u16 *)(s0 + 2) = *(u16 *)(s0 + 2) + buf[0]; \
*(u16 *)(s0 + 6) = *(u16 *)(s0 + 6) + buf[1]; \
*(u16 *)(s0 + 0xA) = *(u16 *)(s0 + 0xA) + buf[2]; \
}
#define DEFINE_func_80158C40() \
extern u16 func_801487F4(s32 *a0); \
extern s32 func_80159404(s32 a0, s32 a1); \
extern void func_80146E90(s32 *a0, s32 a1); \
extern void func_80146CA0(void *a0); \
void func_80158C40(s32 *a0) { \
s32 n; \
s32 c; \
c = 0x3C000; \
n = 1; \
if (func_801487F4(a0) & 0xF0) { \
n = 4; \
} \
while (n > 0) { \
func_80159404((s32)a0, c); \
if (a0[0x234 / 4] < 0) { \
func_80146E90(a0, 4); \
func_80146CA0(a0); \
n = 0; \
} \
n--; \
} \
}
#define DEFINE_func_80128678() \
extern void func_80029444(void); \
extern void func_8014607C(void); \
extern void func_801287B8(void); \
extern void func_800D1754(void); \
void func_80128678(void) { \
__asm__ __volatile__( \
".set noreorder\n" \
"addiu $sp, $sp, -24\n" \
"sw $ra, 16($sp)\n" \
"lui $v0, 0x1f80\n" \
"ori $v0, $v0, 0x03fc\n" \
"addu $t0, $v0, $zero\n" \
"sw $sp, 0($t0)\n" \
"addiu $t0, $t0, -4\n" \
"addu $sp, $t0, $zero\n" \
"jal func_80029444\n" \
"addiu $sp, $sp, 4\n" \
"lw $sp, 0($sp)\n" \
"jal func_8014607C\n" \
"lui $v0, 0x1f80\n" \
"ori $v0, $v0, 0x03fc\n" \
"addu $t0, $v0, $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, 0x1f80\n" \
"ori $v0, $v0, 0x03fc\n" \
"addu $t0, $v0, $zero\n" \
"sw $sp, 0($t0)\n" \
"addiu $t0, $t0, -4\n" \
"addu $sp, $t0, $zero\n" \
"jal func_800D1754\n" \
"addiu $sp, $sp, 4\n" \
"lw $sp, 0($sp)\n" \
"nop\n" \
"lw $ra, 16($sp)\n" \
"addiu $sp, $sp, 24\n" \
: : : "memory"); \
}
#define DEFINE_func_80152790() \
extern void func_8014BC44(s32 a0, s32 a1); \
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(); \
void func_80152790(s32 a0) { \
s32 s0 = a0; \
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
func_80154A74(s0, 0x11); \
func_801553C0(s0); \
func_801470AC((s32 *)s0); \
func_801472B4((void *)s0); \
*(s16 *)(s0 + 0x3E) = 0; \
*(s16 *)(s0 + 0x40) = 0; \
*(s16 *)(s0 + 0x42) = 0; \
*(s8 *)(s0 + 0xDD) = 0; \
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
*(s16 *)(s0 + 0x60) = 0x1000; \
*(s16 *)(s0 + 0x62) = 0x1000; \
*(s16 *)(s0 + 0x64) = 0x1000; \
func_801477E8((s32 *)s0, 0); \
func_80153C18(s0); \
}
#define DEFINE_func_8013E370() \
extern void *D_801274CC; \
extern s32 func_8013E410(void); \
extern s32 func_8013E448(s32 a0); \
extern void func_8012C724(s32 a0, s32 a1); \
void func_8013E370(void) { \
u8 *s0; \
u8 *s2; \
s32 r; \
s0 = (u8 *)D_801274CC; \
if (s0 == 0) return; \
if (*(u16 *)(s0 + 6) == 0) return; \
s2 = s0 + 6; \
do { \
if ((*(u16 *)(s2 + 4) & 0x8000) == 0) { \
r = func_8013E410(); \
if (r == 0) return; \
if (func_8013E448((s32)s0) != 0) { \
func_8012C724((s32)s0, r); \
} \
} \
s2 += 0x14; \
s0 += 0x14; \
} while (*(u16 *)s2 != 0); \
}
#define DEFINE_func_8014E514() \
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); \
s32 func_8014E514(u8 *a0, s32 a1, s32 a2) { \
u8 *p; \
s32 q; \
p = *(u8 **)(a0 + 0x17C); \
if (*(u16 *)p != 0 && \
(*(u16 *)(p + 0x5C) & 0x40) != 0 && \
(q = *(s32 *)(p + 0x58)) != 0 && \
func_80135888(*(s32 *)(p + 0x20), q, a1, a2) != 0) { \
goto success; \
} \
*(s32 *)(a0 + 0x17C) = 0; \
return 0; \
success: \
*(u16 *)(a0 + 6) = *(u16 *)(p + 6); \
*(u16 *)(a0 + 0xE) = *(u16 *)(p + 0xE); \
return 1; \
}
#define DEFINE_func_8015B858() \
extern u8 D_800D4BE0[]; \
extern s32 D_8011F730; \
extern s32 func_8014A51C(void); \
extern void func_801477E8(s32 *a0, s32 a1); \
extern void func_80154274(s32 *a0, s32 a1); \
s32 func_8015B858(u8 *a0) { \
if (*(u8 *)(a0 + 0x1C6) != 0) return 0; \
if (*(s32 *)(a0 + 0x240) != 0) return 0; \
if (func_8014A51C() == 0) return 0; \
*(s32 *)(a0 + 0x23C) = *(s32 *)(a0 + 0xB4); \
*(u8 *)(a0 + 0x244) = *(u8 *)(a0 + 0xBC); \
func_801477E8((s32 *)a0, 0xFFF20000); \
func_80154274((s32 *)a0, (s32)D_800D4BE0); \
D_8011F730 |= 2; \
return 1; \
}
#define DEFINE_func_80163194() \
extern s32 D_80127090; \
extern s32 D_80127094; \
extern s32 D_80127098; \
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_800484EC(s32 a0, s32 a1, s32 a2); \
extern void func_80146D30(s32 a0); \
void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4) { \
s32 pad[4]; \
s32 out[3]; \
(void)pad; \
func_80162F60(a0, a1); \
func_80162F80(a0, a2); \
func_80162FA0(a0, a3); \
func_800484EC(arg4, a0 + 0x24, (s32)out); \
D_80127090 = out[0]; \
D_80127094 = out[1]; \
D_80127098 = out[2]; \
func_80146D30(a0); \
}
#define DEFINE_func_8012B370() \
extern void RotMatrixYXZ(void *m, void *p); \
void func_8012B370(int a0) { \
int q; \
int p; \
q = *(int *)(a0 + 0x20); \
if (q != 0) { \
RotMatrixYXZ((void *)(q + 0x10), (void *)(q + 0x34)); \
p = *(int *)(a0 + 0x20); \
*(s16 *)(p + 0x8) = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x50); \
*(s32 *)(p + 0x48) = *(s16 *)(p + 0x8); \
*(s16 *)(p + 0xA) = *(u16 *)(a0 + 0xA) + *(u16 *)(a0 + 0x52); \
*(s32 *)(p + 0x4C) = *(s16 *)(p + 0xA); \
{ \
u16 e = *(u16 *)(a0 + 0xE); \
u16 t2c = *(u16 *)(p + 0x2C) | 0x1; \
s16 sum = e + *(u16 *)(a0 + 0x54); \
*(s16 *)(p + 0xC) = sum; \
*(u16 *)(p + 0x2C) = t2c; \
*(s32 *)(p + 0x50) = sum; \
} \
} \
}
#define DEFINE_func_8012B414() \
extern void func_8004978C(s16 *a0, void *a1); \
void func_8012B414(int a0) { \
int q; \
int p; \
q = *(int *)(a0 + 0x20); \
if (q != 0) { \
func_8004978C((s16 *)(q + 0x10), (void *)(q + 0x34)); \
p = *(int *)(a0 + 0x20); \
*(s16 *)(p + 0x8) = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x50); \
*(s32 *)(p + 0x48) = *(s16 *)(p + 0x8); \
*(s16 *)(p + 0xA) = *(u16 *)(a0 + 0xA) + *(u16 *)(a0 + 0x52); \
*(s32 *)(p + 0x4C) = *(s16 *)(p + 0xA); \
{ \
u16 e = *(u16 *)(a0 + 0xE); \
u16 t2c = *(u16 *)(p + 0x2C) | 0x1; \
s16 sum = e + *(u16 *)(a0 + 0x54); \
*(s16 *)(p + 0xC) = sum; \
*(u16 *)(p + 0x2C) = t2c; \
*(s32 *)(p + 0x50) = sum; \
} \
} \
}
#define DEFINE_func_801469C8() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
extern s32 D_8011D030; \
s32 func_801469C8(int a0, void *a1, int a2, int a3, u16 arg5, int arg6, int arg7, int arg8) { \
int count; \
int p; \
int end; \
count = 0; \
p = (int)&D_8011D030; \
end = p + 0xA50; \
if ((u32)p < (u32)end) { \
int key = a0 & 0xFFFF; \
do { \
if (*(u16 *)(p + 0x0) == key) { \
count++; \
} \
p += 0x58; \
} while ((u32)p < (u32)end); \
} \
if ((u32)count < (u32)arg8) { \
return func_80146A6C(a0 & 0xFFFF, a1, (s16)a2, (s16)a3, (s16)arg5, arg6, arg7); \
} \
return 0; \
}
#define DEFINE_func_80152AC8() \
extern void func_8014BC44(s32 a0, s32 a1); \
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(); \
void func_80152AC8(s32 a0) { \
s32 s0 = a0; \
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
*(s8 *)(s0 + 0xA8) = 0x20; \
func_80154A74(s0, 0x11); \
func_801553C0(s0); \
func_801470AC((s32 *)s0); \
func_801472B4((void *)s0); \
*(s16 *)(s0 + 0x3E) = 0; \
*(s16 *)(s0 + 0x40) = 0; \
*(s16 *)(s0 + 0x42) = 0; \
*(s8 *)(s0 + 0xDD) = 0; \
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
*(s16 *)(s0 + 0x60) = 0x1000; \
*(s16 *)(s0 + 0x62) = 0x1000; \
*(s16 *)(s0 + 0x64) = 0x1000; \
func_801477E8((s32 *)s0, 0); \
func_80153C18(s0); \
}
#define DEFINE_func_80152FBC() \
extern void func_8014BC44(s32 a0, s32 a1); \
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(); \
void func_80152FBC(s32 a0) { \
s32 s0 = a0; \
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
*(s8 *)(s0 + 0xA8) = 0x20; \
func_80154A74(s0, 0x11); \
func_801553C0(s0); \
func_801470AC((s32 *)s0); \
func_801472B4((void *)s0); \
*(s16 *)(s0 + 0x3E) = 0; \
*(s16 *)(s0 + 0x40) = 0; \
*(s16 *)(s0 + 0x42) = 0; \
*(s8 *)(s0 + 0xDD) = 0; \
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
*(s16 *)(s0 + 0x60) = 0x1000; \
*(s16 *)(s0 + 0x62) = 0x1000; \
*(s16 *)(s0 + 0x64) = 0x1000; \
func_801477E8((s32 *)s0, 0); \
func_80153C18(s0); \
}
#define DEFINE_func_8015327C() \
extern void func_8014BC44(s32 a0, s32 a1); \
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(); \
void func_8015327C(s32 a0) { \
s32 s0 = a0; \
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
*(s8 *)(s0 + 0xA8) = 0x20; \
func_80154A74(s0, 0x11); \
func_801553C0(s0); \
func_801470AC((s32 *)s0); \
func_801472B4((void *)s0); \
*(s16 *)(s0 + 0x3E) = 0; \
*(s16 *)(s0 + 0x40) = 0; \
*(s16 *)(s0 + 0x42) = 0; \
*(s8 *)(s0 + 0xDD) = 0; \
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
*(s16 *)(s0 + 0x60) = 0x1000; \
*(s16 *)(s0 + 0x62) = 0x1000; \
*(s16 *)(s0 + 0x64) = 0x1000; \
func_801477E8((s32 *)s0, 0); \
func_80153C18(s0); \
}
#define DEFINE_func_80153550() \
extern void func_8014BC44(s32 a0, s32 a1); \
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(); \
void func_80153550(s32 a0) { \
s32 s0 = a0; \
func_8014BC44(s0, *(s16 *)(s0 + 0xF2)); \
*(s8 *)(s0 + 0xA8) = 0x20; \
func_80154A74(s0, 0x11); \
func_801553C0(s0); \
func_801470AC((s32 *)s0); \
func_801472B4((void *)s0); \
*(s16 *)(s0 + 0x3E) = 0; \
*(s16 *)(s0 + 0x40) = 0; \
*(s16 *)(s0 + 0x42) = 0; \
*(s8 *)(s0 + 0xDD) = 0; \
*(s16 *)(s0 + 0x3C) = *(u16 *)(s0 + 0x3C) & 0xFFFE; \
*(s16 *)(*(s32 *)(s0 + 0x20) + 0x10) = 0; \
*(s16 *)(s0 + 0x60) = 0x1000; \
*(s16 *)(s0 + 0x62) = 0x1000; \
*(s16 *)(s0 + 0x64) = 0x1000; \
func_801477E8((s32 *)s0, 0); \
func_80153C18(s0); \
}
#define DEFINE_func_8015640C() \
extern s32 func_801564B0(s32 a0); \
extern s32 func_80029178(s32 a0); \
s32 func_8015640C(s32 a0, s32 a1) { \
if ((func_801564B0(a0) & 0xFFFF) != 0) { \
if ((func_80029178(0x1C) & 0xFF) != 0) { \
return (((175 * (a1 & 0xFFFF)) / 100) & 0xFFFF) | 0x8000; \
} else { \
return (((150 * (a1 & 0xFFFF)) / 100) & 0xFFFF) | 0x8000; \
} \
} \
return a1 & 0xFFFF; \
}
#define DEFINE_func_8015B7B4() \
extern s32 func_80149B54(s32 *a0); \
extern void func_80156648(s32 *a0); \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_80147324(s32 a0); \
extern void func_80147300(u16 arg0); \
extern u8 D_800D4F8C[]; \
s32 func_8015B7B4(s32 a0) { \
s32 s0 = a0; \
if (func_80149B54((s32 *)s0) != 0) { \
func_80156648((s32 *)s0); \
*(s8 *)(s0 + 0x1AA) = 0xC; \
*(s32 *)(s0 + 0x44) = *(s32 *)(s0 + 0x44) | 0x2; \
*(s32 *)(s0 + 0x23C) = *(s32 *)(s0 + 0xB4); \
*(s8 *)(s0 + 0x244) = *(u8 *)(s0 + 0xBC); \
func_80154274((s32 *)s0, (s32)D_800D4F8C); \
func_80154A74(s0, 0x22); \
*(s8 *)(s0 + 0xDA) = 0; \
func_80146994(5, s0, 5, 0); \
func_80147324(0x455); \
func_80147300(0x5F3); \
return 1; \
} \
return 0; \
}
#define DEFINE_func_8015E40C() \
extern void func_80148534(s32 a0, s32 a1); \
extern void func_80149374(s32 a0, s32 a1); \
void func_8015E40C(s32 a0) { \
s32 s1 = a0; \
s32 s0; \
s16 sp10[4]; \
u16 sp18[4]; \
s0 = *(s32 *)(s1 + 0x18C); \
if (s0 == 0) { \
return; \
} \
if (*(u16 *)(s0 + 0x0) == 0) { \
return; \
} \
func_80148534((s32)sp10, (s32)sp18); \
*(s16 *)(s0 + 0x6) = sp18[0] + *(u16 *)(*(s32 *)(s0 + 0x78) + 0xC); \
*(s16 *)(s0 + 0xA) = sp18[1] + *(u16 *)(*(s32 *)(s0 + 0x78) + 0xE); \
*(s16 *)(s0 + 0xE) = sp18[2] + *(u16 *)(*(s32 *)(s0 + 0x78) + 0x10); \
func_80149374(s1, s0 + 0x4); \
}
#define DEFINE_func_8015FDCC() \
extern s32 func_801399F0(s32 a0); \
extern void func_80147324(s32 a0); \
extern void func_80139914(s32 a0); \
extern s32 func_80028DE0(void); \
extern u8 func_80165700(s32 a0, s32 a1); \
extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); \
extern void func_80146CA0(void *a0); \
void func_8015FDCC(s32 a0) { \
s32 s0 = a0; \
if (func_801399F0(*(s32 *)(s0 + 0x198)) != 0) { \
func_80147324(0x19); \
func_80139914(*(s32 *)(s0 + 0x198)); \
*(s32 *)(s0 + 0x198) = 0; \
if (func_80028DE0() == 0) { \
if ((func_80165700(s0, *(u8 *)(s0 + 0x1A0)) & 0xFF) != 0) { \
func_801466F0(0x24, s0, 0, 0, 0, 0, 0, 0); \
func_80147324(0x989); \
} \
} \
func_80146CA0((void *)s0); \
} \
}
#define DEFINE_func_8017C66C() \
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_8017C66C(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(); \
}
#define DEFINE_func_801307B0() \
extern s32 func_801312D0(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_8002D4C8(s32 a0, s32 a1); \
void func_801307B0(s32 a0) { \
s16 local[3]; \
*(s8 *)(a0 + 0xC1) = 0x10; \
*(s16 *)(a0 + 0x5C) = 0; \
func_801312D0(a0, &local[0]); \
func_80146A6C(0x10, (void *)a0, \
(s16)(*(u16 *)(a0 + 0x6) + (u16)local[0]), \
(s16)(*(u16 *)(a0 + 0xA) + (u16)local[1]), \
(s16)(*(u16 *)(a0 + 0xE) + (u16)local[2]), \
0, 0); \
*(s32 *)(a0 + 0x1C) = 0x1E; \
*(s32 *)(a0 + 0x18) = 0; \
*(s32 *)(a0 + 0x10) = 0; \
func_8002D4C8(0x531, 0); \
}
#define DEFINE_func_80132DC4() \
extern s32 VectorNormalSS(void *a0, void *a1); \
void func_80132DC4(s32 a0, s32 a1, s32 a2) { \
s16 in[3]; \
s16 out[4]; \
in[0] = (u16)*(u16 *)(a1 + 0x0) - *(u16 *)(a0 + 0x6); \
in[1] = (u16)*(u16 *)(a1 + 0x2) - *(u16 *)(a0 + 0xA); \
in[2] = (u16)*(u16 *)(a1 + 0x4) - *(u16 *)(a0 + 0xE); \
VectorNormalSS(&in[0], &out[0]); \
*(s32 *)(a0 + 0x10) = out[0] * a2; \
*(s32 *)(a0 + 0x14) = out[1] * a2; \
*(s32 *)(a0 + 0x18) = out[2] * a2; \
}
#define DEFINE_func_80139220() \
extern void func_80139DC8(void); \
extern void func_801392C8(void *a0); \
s32 func_80139220(s32 a0) { \
s32 v1; \
*(s16 *)(a0 + 0x14) = 0; \
*(s16 *)(a0 + 0x12) = (*(u16 *)(a0 + 0x12) + 1) % (*(s16 *)(a0 + 0x2E) + 1); \
func_80139DC8(); \
v1 = *(u16 *)(a0 + 0x12) - *(u16 *)(a0 + 0x16); \
if (v1 != -1) { \
if (v1 < *(s16 *)(a0 + 0x2E)) { \
return 0; \
} \
} \
func_801392C8((void *)a0); \
return 1; \
}
#define DEFINE_func_8017869C() \
extern void func_80178744(s32 a0, s32 a1); \
void func_8017869C(s32 a0) { \
s32 v1; \
s32 a1; \
if (*(s16 *)(a0 + 0xAA) == 0) { \
return; \
} \
*(s16 *)(a0 + 0xAA) = *(s16 *)(a0 + 0xAA) - 1; \
v1 = *(s16 *)(a0 + 0xAA); \
if (v1 == 0) { \
a1 = 0x1000; \
if (*(u16 *)(a0 + 0x5E) == 0x1E) { \
*(s16 *)(a0 + 0x5E) = 0; \
} \
} else if (v1 >= 0xF1) { \
a1 = 0x1000 - (0x100 - v1) * 0x90; \
} else { \
if (v1 < 0x10) { \
a1 = 0x1000 - v1 * 0x90; \
} else { \
a1 = 0x700; \
} \
} \
func_80178744(a0, a1); \
}
#define DEFINE_func_80146608() \
extern void func_801466F0(s32 a0, s32 a1, s32 a2, s32 a3, s32 sp5, s32 sp6, s32 sp7, s32 sp8); \
extern s32 D_8011F9D0; \
s32 func_80146608(s32 a0, s32 a1, s32 a2, s32 a3, s16 arg9, s32 arg10, s32 arg11, s32 arg12, s32 arg13) { \
u8 *p; \
u8 *end; \
s32 cnt; \
cnt = 0; \
p = (u8 *)&D_8011F9D0; \
end = p + 0x820; \
while (p < end) { \
if (*(u16 *)p == (a0 & 0xFFFF)) { \
cnt++; \
} \
p += 0x68; \
} \
if ((u32)cnt >= (u32)arg12) { \
return 0; \
} \
func_801466F0(a0 & 0xFFFF, a1, (s16)a2, (s16)a3, arg9, arg10, arg11, arg13); \
}
#define DEFINE_func_80137840() \
extern void func_80139634(void *); \
extern void func_80139DC8(void); \
void func_80137840(s32 a0) { \
s32 s0 = a0; \
*(u8 *)(s0 + 0xC) = 1; \
*(u8 *)(s0 + 0x23) = 1; \
*(s16 *)(s0 + 0x1A) = 1; \
*(s16 *)(s0 + 0x2A) = 0x1000; \
*(s16 *)(s0 + 0x28) = 0x1000; \
*(s16 *)(s0 + 0x2C) = 0x24; \
*(s16 *)(s0 + 0x2E) = 3; \
*(s16 *)(s0 + 0x4) = 0; \
*(s16 *)(s0 + 0x6) = 0; \
*(s16 *)(s0 + 0x1C) = 0; \
*(s16 *)(s0 + 0x10) = 0; \
*(s16 *)(s0 + 0x14) = 0; \
*(s16 *)(s0 + 0x12) = 0; \
*(s16 *)(s0 + 0x16) = 0; \
*(s16 *)(s0 + 0x30) = 0; \
*(s16 *)(s0 + 0x32) = 0; \
*(s16 *)(s0 + 0x34) = 0; \
*(s16 *)(s0 + 0x36) = 0; \
*(u8 *)(s0 + 0x22) = 0; \
*(u8 *)(s0 + 0x20) = 0; \
*(s32 *)(s0 + 0x40) = 0; \
*(s8 *)(s0 + 0x1F) = -1; \
*(s16 *)(s0 + 0x44) = 0; \
*(s16 *)(s0 + 0x46) = 0; \
*(s16 *)(s0 + 0x48) = 0; \
*(s16 *)(s0 + 0x4A) = 0; \
func_80139634((void *)s0); \
*(u8 *)(s0 + 0xD) = 0; \
func_80139DC8(); \
}
#define DEFINE_func_80139F0C() \
extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); \
extern void func_8002D4C8(s32 a0, s32 a1); \
extern void func_80139B18(s32 a0); \
extern s32 D_80127524; \
void func_80139F0C(s32 a0) { \
s32 s0 = a0; \
s32 a2; \
if (D_80127524 != s0 && (*(s32 *)(s0 + 8) & 0x2000) == 0) { \
*(s16 *)(s0 + 4) = 4; \
return; \
} \
if (*(s32 *)(s0 + 8) & 0x4000) { \
a2 = 0x70; \
} else { \
a2 = 0x60; \
} \
if (func_80138DB8(s0, 0, a2) != 0) { \
s32 v1; \
*(s16 *)(s0 + 4) = 2; \
v1 = *(s32 *)(s0 + 8); \
if ((v1 & 0x20000) == 0) { \
*(s32 *)(s0 + 8) = v1 & ~0x20; \
} \
func_8002D4C8(0x88D, 0); \
} \
func_80139B18(s0); \
}
#define DEFINE_func_80159070() \
extern s32 func_801399F0(s32 a0); \
extern void func_80139914(s32 a0); \
extern s32 func_8013767C(s32 a0); \
extern void func_80146CA0(void *a0); \
extern u8 D_80110C94[]; \
extern u8 D_80110CD4[]; \
void func_80159070(void *a0) { \
s32 obj; \
s32 r; \
s32 v; \
u8 *tbl; \
obj = *(s32 *)((u8 *)a0 + 0x20); \
*(u16 *)(obj + 0x12) = (*(u16 *)(obj + 0x12) + 0x16) & 0xFFF; \
r = func_801399F0(*(s32 *)((u8 *)a0 + 0x198)); \
*(s16 *)((u8 *)a0 + 0x244) = r; \
if ((s16)r != 0) { \
func_80139914(*(s32 *)((u8 *)a0 + 0x198)); \
v = *(s16 *)((u8 *)a0 + 0x244); \
*(s32 *)((u8 *)a0 + 0x198) = 0; \
switch (v) { \
default: \
case 1: \
tbl = D_80110C94; \
break; \
case 2: \
tbl = D_80110CD4; \
break; \
} \
*(s32 *)((u8 *)a0 + 0x198) = func_8013767C((s32)tbl); \
func_80146CA0(a0); \
} \
}
#define DEFINE_func_801638A0() \
extern void func_80015978(s32 a0, s32 *a1); \
extern s32 func_80135004(s32 a0, void *a1, s32 a2); \
extern void func_80015954(s32 a0, s32 a1); \
extern s16 D_801152AA; \
extern void *memcpy(void *dst, void *src, s32 n); \
s32 func_801638A0(u8 *a0, s32 a1) { \
u8 buf[8]; \
s16 d; \
s32 p; \
__builtin_memcpy(buf, a0 + 0x44, 8); \
p = (s32)(a0 + 4); \
func_80015978(p, (s32 *)a1); \
if (func_80135004(1, buf, a1) != 0) { \
func_80015954(a1, p); \
d = D_801152AA; \
if (d >= -0x578) { \
return 0x8000; \
} \
if (d >= -0xBCB) { \
return 0x4000; \
} \
return 0x2000; \
} \
return 0; \
}
#define DEFINE_func_80139FE8() \
extern s32 func_8001B22C(void *a0); \
extern void func_8001931C(void); \
extern void func_80139788(void); \
extern void func_80139A8C(s32 a0); \
extern void func_80139B18(s32 a0); \
void func_80139FE8(void *a0) { \
s32 v1; \
s32 a0v; \
v1 = func_8001B22C(a0); \
if (v1 == 2 || v1 == 4) { \
*(s16 *)((u8 *)a0 + 4) = 2; \
} else if (v1 == 0) { \
a0v = *(s32 *)((u8 *)a0 + 8); \
if (a0v & 1) { \
func_8001931C(); \
} else { \
*(s32 *)((u8 *)a0 + 8) = (a0v & 0xFFFEFFFF) | 0x20020; \
func_80139788(); \
} \
*(s16 *)((u8 *)a0 + 4) = 2; \
} else { \
func_80139A8C((s32)a0); \
if (*(s32 *)((u8 *)a0 + 8) & 0x20) { \
*(s16 *)((u8 *)a0 + 4) = 2; \
} \
} \
func_80139B18((s32)a0); \
}
#define DEFINE_func_8015E288() \
extern u8 D_800D5098[]; \
extern u8 D_800D5060[]; \
extern s32 func_80161208(void); \
extern s32 func_8014A850(s32 a0); \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_8015E40C(s32 a0); \
extern void func_8015E588(void); \
extern void func_8015E4B0(s32 a0); \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_80146CA0(void *a0); \
extern void func_80146C98(s32 *a0, s16 a1); \
void func_8015E288(s32 a0) { \
if (func_80161208() != 0) { \
return; \
} \
if (func_8014A850(a0) != 0) { \
func_80154274((s32 *)a0, (s32)D_800D5098); \
func_8015E40C(a0); \
((void (*)(s32))func_8015E588)(a0); \
func_8015E4B0(a0); \
func_80146994(5, a0, 0xB, 0); \
func_80146CA0((void *)a0); \
return; \
} \
if (*(u16 *)(a0 + 0xB8) & 0x8000) { \
func_80154274((s32 *)a0, (s32)D_800D5060); \
func_80146C98((s32 *)a0, 3); \
} \
}
#define DEFINE_func_80169E44() \
extern s32 func_80128ED8(void *a0, void *a1); \
extern void func_80146C3C(void); \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_80169E44(s32 a0) { \
s32 r; \
s32 p; \
if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { \
((void (*)(s32))func_80146C3C)(a0); \
return; \
} \
r = *(s32 *)(a0 + 0x1C); \
*(s32 *)(a0 + 0x1C) = r + 1; \
if (r < 3) { \
p = func_80146A6C(9, (void *)a0, *(s16 *)(a0 + 0x6), \
*(s16 *)(a0 + 0xA), \
*(s16 *)(a0 + 0xE), \
*(s32 *)(a0 + 0x1C) & 1, 0); \
if (p != 0) { \
*(s16 *)(p + 0x12) = *(u16 *)(a0 + 0x12); \
*(s16 *)(p + 0x16) = *(u16 *)(a0 + 0x16); \
*(s16 *)(p + 0x1A) = *(u16 *)(a0 + 0x1A); \
} \
} \
}
#define DEFINE_func_80149290() \
extern void func_80149350(s32 arg0); \
void func_80149290(s32 a0) { \
volatile s32 a; \
volatile s32 b; \
volatile s32 c; \
a = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x48); \
b = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C); \
c = *(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C); \
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x48) = *(s16 *)(a0 + 6); \
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C) = *(s16 *)(a0 + 0xA); \
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x50) = *(s16 *)(a0 + 0xE); \
func_80149350(a0); \
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x48) = a; \
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x4C) = b; \
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x50) = c; \
}
#define DEFINE_func_80157EA4() \
extern void func_801599A4(void *a0); \
extern void func_80159B3C(void *a0); \
extern s32 func_80157F64(s32 *a0); \
extern int func_80155FF8(int arg, int a1); \
extern s32 func_80156600(void *a0); \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_80157EA4(void *a0) { \
s32 *v1; \
*(s32 *)((u8 *)a0 + 0x44) = *(s32 *)((u8 *)a0 + 0x44) | 2; \
if (*(u16 *)((u8 *)a0 + 0xB8) == 0x8000) { \
func_801599A4(a0); \
func_80159B3C(a0); \
return; \
} \
if (func_80157F64((s32 *)a0) != 0) { \
return; \
} \
func_80155FF8((int)a0, *(u8 *)((u8 *)a0 + 0x1AA)); \
v1 = (s32 *)func_80156600(a0); \
if (v1 == 0) { \
return; \
} \
if (*(s16 *)((u8 *)a0 + 0x244) != 0) { \
return; \
} \
*(s16 *)((u8 *)a0 + 0x244) = 1; \
func_80146A6C(0x54, a0, *(s16 *)v1, *(s16 *)((u8 *)v1 + 2), *(s16 *)((u8 *)v1 + 4), 0, 0); \
}
#define DEFINE_func_80154ED8() \
extern s16 D_80078E96; \
extern u8 D_800D8D10[]; \
extern s16 D_80078E9E; \
extern u16 D_80078EA6; \
extern void func_801550FC(s32 a0); \
void func_80154ED8(s32 a0, s32 a1) { \
*(s32 *)(a0 + 0xC8) = a1; \
if (D_80078E96 & 0x8000) { \
*(s32 *)(a0 + 0xC8) = a1 | 0x1000000; \
func_801550FC((s32)D_800D8D10); \
return; \
} \
if (D_80078E9E >= 0x10) { \
if (*(s16 *)&D_80078EA6 >= 0x10) { \
goto and_path; \
} \
} \
if ((*(s32 *)(a0 + 0x44) & 0xC0) != 0) { \
goto and_path; \
} \
*(s32 *)(a0 + 0xC8) = a1 | 0x1000000; \
func_801550FC(0x40000002); \
return; \
and_path: \
*(s32 *)(a0 + 0xC8) = *(s32 *)(a0 + 0xC8) & 0xC0FFFFFF; \
func_801550FC(a1); \
}
#define DEFINE_func_80158D60() \
extern u16 func_801487F4(s32 *a0); \
extern s32 func_80159434(s32 a0, s32 a1); \
extern void func_80147324(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80158D60(s32 a0) { \
s32 count; \
s32 i; \
s32 arg; \
arg = 0x4C000; \
count = 1; \
if (func_801487F4((s32 *)a0) & 0xF0) { \
count = 4; \
} \
for (i = count; i > 0; i--) { \
func_80159434(a0, arg); \
if (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) < 0xC00) { \
func_80147324(0x454); \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x10) = 0xC00; \
*(s32 *)(a0 + 0x238) = 0xFFEA0000; \
func_80146CA0((void *)a0); \
i = 0; \
} \
} \
}
#define DEFINE_func_80139B18() \
extern s16 D_8012752C; \
extern s32 func_80014E80(s32 a0, s32 a1); \
extern void func_8001931C(void); \
void func_80139B18(s32 a0) { \
s32 m; \
s32 p; \
if (*(s32 *)(a0 + 8) & 0x6000) { \
return; \
} \
if ((s16)func_80014E80(0, 0x10) == 0) { \
return; \
} \
m = *(s32 *)(a0 + 8); \
if (m & 0x10000) { \
*(s32 *)(a0 + 8) = m & 0xFFFEFFFF; \
func_8001931C(); \
D_8012752C = 0; \
} \
if (*(s32 *)(a0 + 8) & 0x2000) { \
*(s16 *)(a0 + 4) = 0xD; \
return; \
} \
*(s16 *)(a0 + 4) = 0xC; \
p = *(s32 *)(a0 + 0x40); \
*(s32 *)(a0 + 8) = *(s32 *)(a0 + 8) & 0xFFFFEFFF; \
if (p == 0) { \
return; \
} \
if (*(u16 *)(a0 + 0x18) == 0) { \
return; \
} \
*(s16 *)p = 3; \
}
#define DEFINE_func_80164864() \
extern void func_80164ACC(); \
extern void func_80146CA0(void *a0); \
void func_80164864(void *a0) { \
s32 s = (s32)a0; \
s32 p = *(s32 *)(s + 0x20); \
s32 sum; \
s32 v; \
s32 w; \
s32 limit; \
sum = *(u16 *)(s + 0x60) + *(u16 *)(s + 0x62); \
*(u16 *)(s + 0x60) = sum; \
*(u16 *)(p + 0x1A) = *(u16 *)(p + 0x1A) + sum; \
if (*(s32 *)(s + 0x50) == 0) { \
limit = 0x4000; \
v = *(u16 *)(p + 0x1C) + 0x100; \
w = *(u16 *)(p + 0x12) + 0x71; \
*(u16 *)(p + 0x1C) = v; \
*(u16 *)(p + 0x18) = v; \
*(u16 *)(p + 0x12) = w; \
func_80164ACC(); \
} else { \
limit = 0x2000; \
v = *(u16 *)(p + 0x1C) + 0x200; \
w = *(u16 *)(p + 0x12) - 0x71; \
*(u16 *)(p + 0x1C) = v; \
*(u16 *)(p + 0x18) = v; \
*(u16 *)(p + 0x12) = w; \
} \
if (limit < *(s16 *)(p + 0x1A)) { \
func_80146CA0(a0); \
} \
}
#define DEFINE_func_80162FF4() \
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_80013F3C(s32 a0); \
extern void func_800126C4(s32 a0, s32 a1); \
extern void func_80012558(s32 a0, s32 a1); \
extern void func_800123F0(s32 a0, s32 a1); \
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
extern void func_80146D30(s32 a0); \
extern s32 D_80127090; \
extern s32 D_80127094; \
extern s32 D_80127098; \
void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3) { \
s32 sp[16]; \
s32 s2 = a0; \
s32 s0 = a2; \
s32 s3 = a3; \
s32 s1 = *(s32 *)(s2 + 0x20); \
s32 *q; \
func_80162F60(a0, a1); \
func_80162F80(s2, s0); \
func_80162FA0(s2, s3); \
q = &sp[8]; \
func_80013F3C((s32)q); \
func_800126C4((s32)q, *(s16 *)(s1 + 0x10)); \
func_80012558((s32)q, *(s16 *)(s1 + 0x12)); \
func_800123F0((s32)q, *(s16 *)(s1 + 0x14)); \
func_800484EC((s32)q, s2 + 0x24, (s32)&sp[4]); \
D_80127090 = sp[4]; \
D_80127094 = sp[5]; \
D_80127098 = sp[6]; \
func_80146D30(s2); \
}
#define DEFINE_func_801630C4() \
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_80013F3C(s32 a0); \
extern void func_800126C4(s32 a0, s32 a1); \
extern void func_80012558(s32 a0, s32 a1); \
extern void func_800123F0(s32 a0, s32 a1); \
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
extern void func_80146D30(s32 a0); \
extern s32 D_80127090; \
extern s32 D_80127094; \
extern s32 D_80127098; \
void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3) { \
s32 sp[16]; \
s32 s2 = a0; \
s32 s0 = a2; \
s32 s3 = a3; \
s32 s1 = *(s32 *)(s2 + 0x20); \
s32 *q; \
func_80162F60(a0, a1); \
func_80162F80(s2, s0); \
func_80162FA0(s2, s3); \
q = &sp[8]; \
func_80013F3C((s32)q); \
func_80012558((s32)q, *(s16 *)(s1 + 0x12)); \
func_800126C4((s32)q, *(s16 *)(s1 + 0x10)); \
func_800123F0((s32)q, *(s16 *)(s1 + 0x14)); \
func_800484EC((s32)q, s2 + 0x24, (s32)&sp[4]); \
D_80127090 = sp[4]; \
D_80127094 = sp[5]; \
D_80127098 = sp[6]; \
func_80146D30(s2); \
}
#define DEFINE_func_8016D778() \
extern void func_80146C3C(void); \
extern void func_800D20C0(void *a0, void *a1, s32 a2); \
extern s32 D_80126B9C; \
void func_8016D778(s32 a0) { \
s32 s0 = a0; \
s32 p; \
s16 sp[6]; \
if (*(s16 *)(s0 + 0x28) == *(s16 *)(*(s32 *)(s0 + 0x30) + 0x36)) { \
if ((D_80126B9C & 0x20) != 0) { \
goto main; \
} \
} \
((void (*)(s32))func_80146C3C)(s0); \
return; \
main: \
p = *(s32 *)(s0 + 0x20); \
*(u16 *)(p + 0x18) = *(u16 *)(p + 0x18) ^ 0x400; \
*(u16 *)(p + 0x1A) = *(u16 *)(p + 0x1A) ^ 0x200; \
sp[0] = *(u16 *)(s0 + 0x12); \
sp[1] = *(u16 *)(s0 + 0x16); \
sp[2] = *(u16 *)(s0 + 0x1A); \
func_800D20C0(&sp[0], &sp[4], 6); \
*(u16 *)(s0 + 6) = sp[0]; \
*(u16 *)(s0 + 0xA) = sp[1]; \
*(u16 *)(s0 + 0xE) = sp[2]; \
}
#define DEFINE_func_80164ACC() \
extern u8 D_801202A0[]; \
extern u8 D_80126720[]; \
extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); \
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); \
extern void func_80015978(s32 a0, s32 *a1); \
extern s32 func_8014C3A4(void *a0, s32 a1, s32 a2, s32 a3); \
void func_80164ACC(s32 a0) { \
u8 *p; \
s16 buf[4]; \
p = D_801202A0; \
if (p < p + 0x6480) { \
do { \
if (func_8014C308(a0, (s32)p, 0xB, 2) != 0) { \
if (func_8014C278(a0, (s32)p, 0x50) != 0) { \
func_80015978((s32)(p + 4), (s32 *)buf); \
buf[3] = 0; \
func_8014C3A4((void *)a0, (s32)p, 0xB, (s32)buf); \
*(s16 *)(p + 0x60) = (s16)(*(s16 *)(p + 0x60)) / 2; \
} \
} \
p += 0x10C; \
} while (p < D_80126720); \
} \
}
#define DEFINE_func_8012FB54() \
extern void func_801319E0(s32 a0); \
extern s32 func_80143B6C(s32 a0, s32 a1); \
extern void func_8002D4C8(s32 a0, s32 a1); \
extern void func_80131CA8(int a0, int a1); \
void func_8012FB54(s32 a0) { \
s32 s0 = a0; \
s32 v1; \
s32 p; \
if ((*(s32 *)(s0 + 0xB4) & 0x10000) != 0) { \
*(s32 *)(s0 + 0x4) = *(s32 *)(s0 + 0x4) + *(s32 *)(s0 + 0x10); \
*(s32 *)(s0 + 0x8) = *(s32 *)(s0 + 0x8) + *(s32 *)(s0 + 0x14); \
*(s32 *)(s0 + 0xC) = *(s32 *)(s0 + 0xC) + *(s32 *)(s0 + 0x18); \
v1 = *(s32 *)(s0 + 0x1C) - 1; \
*(s32 *)(s0 + 0x1C) = v1; \
if (v1 == 0) { \
func_801319E0(s0); \
} else { \
p = func_80143B6C(s0, 1); \
if (p != 0) { \
*(s16 *)(p + 0xA) = *(u16 *)(p + 0xA) + *(u16 *)(s0 + 0xAC); \
} \
if (*(s32 *)(s0 + 0x1C) == 0x13) { \
func_8002D4C8(0x8F2, 0); \
} \
} \
} \
func_80131CA8(s0, 0x36); \
}
#define DEFINE_func_80156A88() \
extern void func_80147324(s32 a0); \
extern s32 func_8014CA88(s32 *a0, s32 a1); \
extern s32 func_8014CA14(s32 a0, s32 a1); \
extern s32 D_801150E0[]; \
extern s32 D_801151E0[]; \
void func_80156A88(s32 a0, s32 a1) { \
s32 v1 = *(s32 *)(a1 + 0xC); \
s32 s3 = v1 & 0xF0FFFFFF; \
s32 s5, s4; \
s32 *s0; \
s32 *s1; \
u32 s2; \
if (v1 == 0x80000000) { \
return; \
} \
s2 = 0; \
s5 = v1 & 0x1000000; \
s4 = v1 & 0x2000000; \
s0 = D_801150E0; \
s1 = D_801151E0; \
do { \
if (*s1 & 1) { \
if (s5 != 0) { \
func_80147324(s3 & 0xFFFF); \
} else if (s4 != 0) { \
func_8014CA88((s32 *)*s0, s3); \
} else { \
func_8014CA14(*s0, s3); \
} \
} \
s0++; \
s2++; \
s1++; \
} while (s2 < 3); \
}
#define DEFINE_func_80176FF4() \
extern u32 func_801783D0(s32 a0, s32 a1); \
extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); \
extern u16 D_8011F82C; \
extern u16 D_8011F82A; \
void func_80176FF4(s32 a0) { \
s32 v0; \
a0 += 0x50; \
func_801778A8(a0, (s16)func_801783D0(D_8011F82C, 4), 3, 0xFF); \
a0 += 0x3C; \
func_801778A8(a0, (s16)func_801783D0(D_8011F82A, 4), 3, 0xFF); \
a0 += 0x3C; \
*(s16 *)(a0 + 0xC) = (u32)(D_8011F82C * 10355) >> 15; \
a0 += 0x14; \
v0 = ((s32)(D_8011F82A * 10355) << 1) >> 16; \
*(s16 *)(a0 + 0xC) = v0; \
*(s16 *)(a0 + 0x20) = v0 + 2; \
}
#define DEFINE_func_80177340() \
extern u32 func_801783D0(s32 a0, s32 a1); \
extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); \
extern u16 D_8011F830; \
extern u16 D_8011F82E; \
void func_80177340(s32 a0) { \
s32 v0; \
a0 += 0x50; \
func_801778A8(a0, (s16)func_801783D0(D_8011F830, 4), 3, 0xFF); \
a0 += 0x3C; \
func_801778A8(a0, (s16)func_801783D0(D_8011F82E, 4), 3, 0xFF); \
a0 += 0x3C; \
*(s16 *)(a0 + 0xC) = (u32)(D_8011F830 * 10355) >> 15; \
a0 += 0x14; \
v0 = ((s32)(D_8011F82E * 10355) << 1) >> 16; \
*(s16 *)(a0 + 0xC) = v0; \
*(s16 *)(a0 + 0x20) = v0 + 2; \
}
#define DEFINE_func_80147628() \
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); \
void func_80147628(s32 a0) { \
s32 s2 = *(s32 *)(a0 + 0x20); \
s32 s1 = s2 + 0x34; \
func_80013F3C(s1); \
func_80012558(s1, *(s16 *)(a0 + 0x102)); \
func_800126C4(s1, *(s16 *)(a0 + 0x100)); \
func_800123F0(s1, *(s16 *)(a0 + 0x104)); \
if (*(u16 *)(a0 + 0x136) & 2) { \
func_80012558(s1, *(s16 *)(a0 + 0x132)); \
} else { \
func_80012558(s1, *(s16 *)(s2 + 0x12)); \
} \
if (*(u16 *)(a0 + 0x136) & 1) { \
func_800126C4(s2 + 0x34, *(s16 *)(a0 + 0x130)); \
} else { \
func_800126C4(s2 + 0x34, *(s16 *)(s2 + 0x10)); \
} \
if (*(u16 *)(a0 + 0x136) & 4) { \
func_800123F0(s2 + 0x34, *(s16 *)(a0 + 0x134)); \
} else { \
func_800123F0(s2 + 0x34, *(s16 *)(s2 + 0x14)); \
} \
}
#define DEFINE_func_80158344() \
extern s32 func_80161208(void); \
extern s32 func_801585AC(s32 *a0); \
extern void func_80156648(s32 *a0); \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80147324(s32 a0); \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_80146E90(s32 *a0, s32 a1); \
extern void func_80146CA0(void *a0); \
extern void func_801599A4(void *a0); \
extern void func_80159B3C(void *a0); \
extern int func_80155FF8(int arg, int a1); \
extern u8 D_800D52E8[]; \
void func_80158344(s32 *a0) { \
volatile s32 spill[4]; \
*(s32 *)((s32)a0 + 0x44) |= 2; \
if (func_80161208() == 0) { \
if (func_801585AC(a0) != 0) { \
func_80156648(a0); \
*(s8 *)((s32)a0 + 0x1AA) = 0x11; \
func_80154274(a0, (s32)D_800D52E8); \
*(s32 *)((s32)a0 + 0x234) = 0; \
func_80147324(0x455); \
func_80146994(4, (s32)a0, 9, 0); \
func_80146994(5, (s32)a0, 0xD, 0); \
func_80146E90(a0, 0x12C); \
func_80146CA0(a0); \
} \
if (*(u16 *)((s32)a0 + 0xB8) & 0x8000) { \
func_801599A4(a0); \
func_80159B3C(a0); \
} else { \
func_80155FF8((int)a0, *(u8 *)((s32)a0 + 0x1AA)); \
} \
} \
}
#define DEFINE_func_8012CEB0() \
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
s32 func_8012CEB0(s32 a0, s32 a1, s32 a2) { \
s32 sp10[2]; \
s32 r; \
s32 v; \
s32 t; \
if ((a2 & 1) != 0) { \
s32 u; \
r = func_80133784((s16)a2, (void *)a0, a1); \
u = *(u8 *)(a1 + 6); \
r |= u; \
if (u == 2 || u == 0x1B) { \
r |= 0x1000; \
} \
return r; \
} else { \
r = func_80133784(0, (void *)a0, a1); \
if (r == 0) { \
return 0; \
} \
v = func_80133784(2, (void *)a1, (s32)sp10); \
if ((v & 0x6000) == 0) { \
return 0; \
} \
v &= 0xFFFF7FFF; \
v |= (r & 0x8000); \
t = *(u8 *)(a1 + 6); \
*(s16 *)(a1 + 2) = *(u16 *)((s32)sp10 + 2); \
v |= t; \
if (t == 2 || t == 0x1B) { \
v |= 0x1000; \
} \
return v; \
} \
}
#define DEFINE_func_801580B4() \
extern u8 D_800D524C[]; \
extern void func_801477E8(s32 *a0, s32 a1); \
extern void func_80148038(s32 a0, s32 a1); \
extern void func_80147460(s32 a0); \
extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
extern void func_801473EC(s32 *a0); \
extern void func_80161418(void *a0); \
extern void func_80156648(s32 *a0); \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80147324(s32 a0); \
extern void func_80146CA0(void *a0); \
extern int func_80155FF8(int arg, int a1); \
void func_801580B4(s32 a0) { \
s32 reserved[4]; \
(void)reserved; \
*(s32 *)(a0 + 0x44) |= 2; \
if ((*(u16 *)(a0 + 0xB8) & 0x4000) != 0) { \
func_801477E8((s32 *)a0, 0xFFF40000); \
*(s32 *)(a0 + 0x234) += 1; \
} \
if (*(s32 *)(a0 + 0x234) != 0) { \
func_80148038(a0, 0x10000); \
func_80147460(a0); \
} \
func_80147AD4(a0, 0, 0, 0); \
func_801473EC((s32 *)a0); \
{ \
register s32 ret __asm__("$2"); \
func_80161418((void *)a0); \
__asm__ __volatile__("" : "=r"(ret)); \
if (ret != 0) { \
return; \
} \
} \
if (*(u16 *)(a0 + 0xB8) == 0x8000) { \
func_80156648((s32 *)a0); \
*(s8 *)(a0 + 0x1AA) = 0xF; \
func_80154274((s32 *)a0, (s32)D_800D524C); \
func_80147324(0x455); \
func_80146CA0((void *)a0); \
} else { \
func_80155FF8(a0, *(u8 *)(a0 + 0x1AA)); \
} \
}
#define DEFINE_func_80157BC8() \
extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
extern void func_801473EC(s32 *a0); \
extern void func_80148038(s32 a0, s32 a1); \
extern void func_80147460(s32 a0); \
extern void func_8014ED28(s32 a0); \
extern void func_80146D90(s32 a0); \
extern void func_8016158C(void *a0); \
extern void func_80161D20(s32 a0, s32 a1); \
extern void func_8014C010(s32 a0, s32 a1); \
extern void func_8016706C(s32 a0); \
extern void func_801599A4(void *a0); \
extern void func_80159B3C(void *a0); \
extern void func_8015BE04(s32 *a0); \
extern s32 func_801725A4(u8 *a0); \
void func_80157BC8(s32 a0) { \
s32 s1; \
func_80147AD4(a0, 0, 0, 0x10000); \
func_801473EC((s32 *)a0); \
func_80148038(a0, 0x1A000); \
func_80147460(a0); \
{ \
register s32 ret __asm__("$2"); \
func_8014ED28(a0); \
__asm__ __volatile__("" : "=r"(ret)); \
if (ret != 0) { \
func_80146D90(a0); \
} \
} \
{ \
register s32 r __asm__("$2"); \
func_8016158C((void *)a0); \
__asm__ __volatile__("" : "=r"(r)); \
s1 = r; \
} \
if ((s1 & 5) != 0) { \
func_80161D20(a0, *(u16 *)(a0 + 0x16E)); \
func_8014C010(a0, 1); \
func_8016706C(4); \
func_8016706C(5); \
func_801599A4((void *)a0); \
func_80159B3C((void *)a0); \
} \
if (s1 != 0) { \
return; \
} \
if (*(s32 *)(a0 + 0x34) > 0) { \
func_801599A4((void *)a0); \
func_80146D90(a0); \
func_8015BE04((s32 *)a0); \
} else { \
func_801725A4((u8 *)a0); \
} \
}
#define DEFINE_func_80163950() \
extern u8 D_801202A0[]; \
extern u8 D_80126720[]; \
extern void func_80015978(s32 a0, s32 *a1); \
extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); \
extern void func_80015954(s32 a0, s32 a1); \
s32 func_80163950(s32 a0) { \
s32 sp10[2]; \
s32 sp18[2]; \
u8 *p; \
func_80015978(a0 + 4, sp10); \
func_80015978(a0 + 4, sp18); \
*(s16 *)((s32)sp10 + 0x2) = *(u16 *)((s32)sp10 + 0x2) - 0x20; \
*(s16 *)((s32)sp18 + 0x2) = *(u16 *)((s32)sp18 + 0x2) + 0x8; \
for (p = D_801202A0; p < D_801202A0 + 0x6480; p += 0x10C) { \
if (*(u16 *)p == 0) continue; \
if ((*(u16 *)(p + 0x5C) & 0x400) == 0) continue; \
if (*(s32 *)(p + 0x58) == 0) continue; \
if (func_80135A4C(*(s32 *)(p + 0x20), *(s32 *)(p + 0x58), sp10, (s32)sp18) != 0) { \
func_80015954((s32)sp18, a0 + 4); \
return 1; \
} \
} \
return 0; \
}
#define DEFINE_func_80149954() \
extern void func_80015978(s32 a0, s32 *a1); \
extern s32 func_8012E5CC(s32 a0, s32 a1, s32 a2); \
extern void func_8002D4C8(s32 a0, s32 a1); \
extern void func_80147364(u16 a0, s32 a1); \
extern s32 func_800CCF28(s32 a0); \
extern void func_80146750(void *a0); \
extern u8 D_80126B5C; \
extern void *D_8012707C; \
extern s16 currentLocationId; \
s32 func_80149954(s32 s0) { \
s32 sp10[2]; \
s16 buf[10]; \
if (*(s32 *)(s0 + 0x44) & 0x404) { \
return 0; \
} \
if ((*(u16 *)(s0 + 0xAA) & 0x90) == 0) { \
if (currentLocationId == 0x308D) { \
func_80015978((s32)&D_80126B5C, sp10); \
func_8012E5CC((s32)sp10, 0x4, 0x8E0); \
return 0; \
} \
func_8002D4C8(0x4, 0x8E0); \
return 0; \
} \
if (*(u16 *)(s0 + 0xAC) & 0x90) { \
if ((s32)D_8012707C == 0x8E0) { \
D_8012707C = 0; \
} else { \
func_80147364(0x8E0, 0); \
} \
} \
func_800CCF28(s0); \
*(s16 *)((s32)buf + 0x0) = 0x12; \
*(s32 *)((s32)buf + 0x8) = s0; \
*(s16 *)((s32)buf + 0x2) = 0; \
*(s16 *)((s32)buf + 0x4) = -0x1E; \
*(s16 *)((s32)buf + 0x6) = 0; \
*(s32 *)((s32)buf + 0xC) = 0; \
*(s32 *)((s32)buf + 0x10) = 0; \
func_80146750(buf); \
return 1; \
}
#define DEFINE_func_801564B0() \
extern s32 rand(void); \
extern s32 func_8002A1B4(void); \
extern s32 func_8002A400(void); \
extern s32 func_8002A670(void); \
extern s32 func_8002A8E0(void); \
extern u8 D_80078E78[]; \
s32 func_801564B0(s32 a0) { \
s32 s0 = (s32)D_80078E78; \
s32 v1; \
if (*(s32 *)(a0 + 0x44) & 0x200) { \
if (rand() & 0x1) { \
return 0x8000; \
} \
} \
if (func_8002A1B4() || func_8002A400() || func_8002A670() || func_8002A8E0()) { \
if ((rand() & 0x3) == 0) { \
return 0x8000; \
} \
} \
if ((rand() & 0x3) != 0) { \
return 0; \
} \
v1 = rand() % 160 & 0xFFFF; \
if ((u32)v1 < 0x51) { \
return 0; \
} \
if (v1 >= *(s16 *)(s0 + 0x2E)) { \
/* LOAD-BEARING: empty volatile asm blocks gcc's noce store-flag \
if-conversion (it would fold "cond ? 0x8000 : 0" to (slt)<<15); \
the original kept the slt+branch form. */ \
__asm__ __volatile__(""); \
return 0; \
} \
return 0x8000; \
}
#define DEFINE_func_8016D4DC() \
extern s32 D_80126B58; \
extern void func_8016C83C(s32 a0); \
extern s32 VectorNormalSS(void *a0, void *a1); \
extern void func_8016CF04(s32 a0, s32 a1); \
extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); \
extern void func_800D22E4(s32 a0); \
void func_8016D4DC(s32 a0) { \
s16 d[20]; \
s32 a1 = *(s32 *)(a0 + 0x34); \
s32 dist; \
s32 idx; \
if (*(u16 *)a1 != 1) { \
*(s16 *)(a0 + 2) = 3; \
*(s32 *)(a0 + 0x34) = (s32)&D_80126B58; \
*(s32 *)(a0 + 0x1C) = 0x40; \
func_8016C83C(a0); \
return; \
} \
d[0] = *(u16 *)(a1 + 6) - *(u16 *)(a0 + 6); \
d[1] = *(u16 *)(a1 + 0xA) - *(u16 *)(a0 + 0xA); \
d[2] = *(u16 *)(a1 + 0xE) - *(u16 *)(a0 + 0xE); \
dist = VectorNormalSS(d, d); \
if (dist < 0x510) { \
func_8016CF04(a0, 2); \
*(s16 *)(a0 + 2) = 4; \
return; \
} \
if (dist < 0x1900) { \
idx = 6; \
} else if (dist < 0x6400) { \
idx = 5; \
} else { \
idx = 4; \
} \
func_8016C74C(a0, (s32)d, idx, 9, 0x400); \
func_800D22E4(a0); \
func_8016CF04(a0, 1); \
}
#define DEFINE_func_80165E90() \
extern void func_801484B0(s32 a0, s32 a1); \
extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); \
extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); \
extern void func_80148534(s32 a0, s32 a1); \
extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); \
extern s32 D_80126B9C; \
extern s32 D_80126B58; \
extern s32 *D_80126B78; \
void func_80165E90(void) { \
s32 s1 = (s32)&D_80126B58; \
s32 buf1[2]; \
s32 buf2[2]; \
s32 v1; \
if ((D_80126B9C & 0x10000400) == 0x10000000) { \
v1 = (s32)D_80126B78; \
if (*(s32 *)(v1 + 0x4) >= 0) { \
if (*(s32 *)(v1 + 0x20) != 0) { \
func_801484B0((s32)buf1, (s32)buf2); \
func_80165FA4(s1, (s32)buf1, (s32)buf2); \
func_80167DBC(s1, (s32)buf1, (s32)buf2); \
} \
} \
} \
if ((*(s32 *)(s1 + 0x44) & 0x20020400) == 0x20000000) { \
v1 = *(s32 *)(s1 + 0x20); \
if (*(s32 *)(v1 + 0x4) >= 0) { \
if (*(s32 *)(v1 + 0x20) != 0) { \
func_80148534((s32)buf1, (s32)buf2); \
func_80165FA4(s1, (s32)buf1, (s32)buf2); \
func_80167AE0(s1, (s32)buf1, (s32)buf2); \
} \
} \
} \
}
#define DEFINE_func_8014B190() \
extern s32 func_8016F1C4(void); \
extern u8 D_80078E78[]; \
extern s16 D_80078E96; \
extern s16 D_80078EB8; \
extern u16 D_80078EA6; \
extern u8 D_80078EC1; \
void func_8014B190(s32 s0) { \
s16 *s1 = (s16 *)D_80078E78; \
s32 v0; \
*(s16 *)(s0 + 0x68) = 0x1000; \
*(s16 *)(s0 + 0x6A) = 0x1000; \
*(s16 *)(s0 + 0x6C) = 0x1000; \
v0 = *(s32 *)(s0 + 0x44) & -0x201; \
v0 = v0 & -0x401; \
*(s32 *)(s0 + 0x44) = v0; \
v0 = func_8016F1C4(); \
if (v0) { \
return; \
} \
if (*(u16 *)(s0 + 0x0) == 0x1E) { \
return; \
} \
if (*(u16 *)(s0 + 0x0) == 0x1A) { \
return; \
} \
if ((D_80078E96 & 0x8000) || \
((u16)D_80078EB8 < 0xB) || \
((s16)D_80078EA6 < 0x10) || \
(D_80078EC1 == 0x1)) { \
*(s32 *)(s0 + 0x44) |= 0x200; \
} \
if (*(s16 *)((s32)s1 + 0x22) & 0x8000) { \
*(s16 *)(s0 + 0x68) = 0x555; \
*(s16 *)(s0 + 0x6A) = 0x555; \
*(s16 *)(s0 + 0x6C) = 0x555; \
*(s32 *)(s0 + 0x44) |= 0x400; \
} \
}
#define DEFINE_func_8014B5D8() \
extern s32 func_8016F1C4(void); \
extern s32 func_80029178(s32 a0); \
extern void func_8014BC80(s32 a0, s32 a1); \
extern u8 D_80078E78[]; \
void func_8014B5D8(s32 s1) { \
s32 *s0 = (s32 *)D_80078E78; \
s32 v0; \
s32 a0; \
v0 = func_8016F1C4(); \
if (v0) { \
return; \
} \
if (*(u16 *)(s1 + 0x0) == 0x1E) { \
return; \
} \
if (*(u16 *)(s1 + 0x0) == 0x1A) { \
return; \
} \
if (*(s32 *)(s1 + 0x44) & 0x10) { \
return; \
} \
if (*(s32 *)(s1 + 0x44) & 0x80) { \
if ((func_80029178(0x1B) & 0xFF) != 0) { \
a0 = 0x2D8; \
} else { \
a0 = 0x5B0; \
} \
} else { \
a0 = 0x16C; \
} \
if (*(u8 *)((s32)s0 + 0x49) == 0x12) { \
a0 = a0 << 1; \
} \
v0 = *(s32 *)((s32)s0 + 0x24) - a0; \
*(s32 *)((s32)s0 + 0x24) = v0; \
if (v0 < 0) { \
*(s32 *)((s32)s0 + 0x24) = 0; \
if (*(s32 *)(s1 + 0x44) & 0x80) { \
*(s32 *)((s32)s0 + 0x28) = *(s32 *)((s32)s0 + 0x28) + 0xAAA8; \
} else { \
*(s32 *)((s32)s0 + 0x28) = *(s32 *)((s32)s0 + 0x28) + 0x1555; \
} \
if (*(s16 *)((s32)s0 + 0x2A) < 0x3C) { \
return; \
} \
*(s32 *)((s32)s0 + 0x28) = 0; \
func_8014BC80(s1, 0x4); \
} else { \
*(s32 *)((s32)s0 + 0x28) = 0; \
*(s8 *)((s32)s0 + 0x43) = 0; \
} \
}
#define DEFINE_func_80137BD8() \
extern void func_801392FC(s32 a0, s32 a1, u8 *a2); \
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 short D_800B9A02; \
extern u8 D_800A6518[]; \
extern s32 D_80127524; \
extern u16 D_800B99D8; \
void func_80137BD8(s32 a0) { \
u8 buf[8]; \
if ((*(s32 *)(a0 + 8) & 0x1000) != 0) { \
func_801392FC(a0, *(u8 *)(a0 + 0x1E), \
&D_800A6518[(u16)D_800B9A02 * 20]); \
if (*(u8 *)(a0 + 0x20) != 0) { \
func_801397B0(a0); \
} \
} \
if (D_80127524 == a0) { \
if (*(s16 *)(a0 + 4) == 7) { \
buf[0] = 0x39; \
buf[1] = 0xFF; \
buf[2] = 0x71; \
func_80137DD4(a0, buf, &D_800A6518[(u16)D_800B9A02 * 20]); \
} else if (*(s16 *)(a0 + 4) == 3) { \
if ((D_800B99D8 & 4) != 0) { \
func_80139680(a0, &D_800A6518[(u16)D_800B9A02 * 20]); \
} \
} \
} \
}
#define DEFINE_func_8013AA24() \
extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); \
extern void func_8013B204(s32 a0, s32 a1); \
extern void func_8013AF20(s32 a0, s32 a1, void *a2, void *a3); \
extern short D_800B9A02; \
extern s32 D_800A651C; \
void func_8013AA24(s32 a0, s32 a1) { \
s32 s2 = a0; \
s32 s0 = a1; \
u8 buf[0xE0]; /* spans 0x10 .. 0xF0 */ \
s16 m00 = *(u16 *)(s0 + 8); \
s16 m11; \
*(s16 *)(buf + 0x02) = 0; /* 0x12 */ \
*(s16 *)(buf + 0x04) = 0; /* 0x14 */ \
*(s16 *)(buf + 0x06) = 0; /* 0x16 */ \
*(s16 *)(buf + 0x00) = m00; /* 0x10 */ \
m11 = *(u16 *)(s0 + 0xA); \
*(s16 *)(buf + 0x0A) = 0; /* 0x1A */ \
*(s16 *)(buf + 0x0C) = 0; /* 0x1C */ \
*(s16 *)(buf + 0x0E) = 0; /* 0x1E */ \
*(s16 *)(buf + 0x10) = 0x1000; /* 0x20 */ \
*(s16 *)(buf + 0x08) = m11; /* 0x18 */ \
*(s32 *)(buf + 0x14) = *(s16 *)(s2 + 0x24); /* 0x24 */ \
*(s32 *)(buf + 0x18) = *(s16 *)(s2 + 0x26); /* 0x28 */ \
*(s32 *)(buf + 0x1C) = 0; /* 0x2C */ \
{ \
register s32 *p __asm__("$2") = (s32 *)(buf + 0x00); \
__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" \
"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"(p) : "$12", "$13", "$14", "memory"); \
} \
func_8013AD38((void *)(s0 + 8), *(s16 *)(s0 + 0xC), buf + 0x20, buf + 0xA0); \
func_8013B204(s2, s0); \
func_8013AF20(*(s32 *)((u8 *)&D_800A651C + (u16)D_800B9A02 * 20) + \
*(u16 *)(s2 + 0x1A) * 4, \
s2 + 0x24, buf + 0x20, buf + 0xA0); \
}
#define DEFINE_func_8014AA28() \
extern s32 D_80126B58; \
extern u8 D_80078EC1; \
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(); \
void func_8014AA28(void) { \
s32 base = (s32)&D_80126B58; \
u16 v1 = *(u16 *)base; \
s32 s0 = D_80078EC1; \
if ((u32)(v1 - 0x19) >= 2 && (u32)(v1 - 0x1D) >= 2) { \
func_801599A4((void *)base); \
func_80159B3C((void *)base); \
if (s0 == 0xC || s0 == 0x18 || s0 == 0xA) { \
func_80165A20(base); \
} \
} \
*(s16 *)(base + 0x1C8) = 0; \
*(s16 *)(base + 0x1CA) = 0; \
*(s16 *)(base + 0x1CC) = 0; \
*(s16 *)(base + 0x1CE) = 0; \
*(s16 *)(base + 0x1D0) = 0; \
*(s32 *)(base + 0x1D4) = 0; \
*(s32 *)(base + 0x1D8) = 0; \
func_8014AB7C(5); \
func_8014AB7C(6); \
func_8014AB7C(7); \
func_8014AB7C(8); \
func_8014AB7C(9); \
func_8014AC10(0x26); \
func_8014AC10(0x27); \
func_8014AC10(0x39); \
func_8014AC10(0x3A); \
func_8014AB7C(0x10); \
func_8014AB7C(0x11); \
func_8014AB7C(0x12); \
func_8014AB7C(0x13); \
func_8014AB7C(0x14); \
func_8014AC10(0x3B); \
func_8014AC10(0x3C); \
*(u8 *)(base + 0x223) = 0x10; \
}
#define DEFINE_func_8015E714() \
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
extern void func_80015978(s32 a0, s32 *a1); \
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
extern void func_801553C0(s32 a0); \
extern void func_80155440(s32 *a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015E714(s32 *a0) { \
s16 sp18[4]; \
s16 sp20[4]; \
s32 s0; \
if (*(s32 *)((s32)a0 + 0x234) == 0) { \
s0 = *(s32 *)((s32)a0 + 0x18C); \
if (s0 != 0) { \
sp18[0] = *(u16 *)((s32)a0 + 0x6); \
sp18[1] = *(u16 *)((s32)a0 + 0xA) - 0x14; \
sp18[2] = *(u16 *)((s32)a0 + 0xE); \
sp20[0] = *(u16 *)(s0 + 0x6); \
sp20[1] = *(u16 *)(s0 + 0xA); \
sp20[2] = *(u16 *)(s0 + 0xE); \
if (func_80133784(0, sp18, (s32)sp20) != 0) { \
*(s16 *)(s0 + 0x6) = sp20[0]; \
*(s16 *)(s0 + 0xA) = sp20[1]; \
*(s16 *)(s0 + 0xE) = sp20[2]; \
} \
func_80015978(s0 + 0x4, (s32 *)sp18); \
sp18[3] = 0; \
func_8014C4AC(s0, 0x1C, 0, sp18, *(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12)); \
*(s32 *)((s32)a0 + 0x18C) = 0; \
} \
} \
func_801553C0((s32)a0); \
func_80155440(a0); \
*(s32 *)((s32)a0 + 0x44) = *(s32 *)((s32)a0 + 0x44) & -3; \
func_80154A74((s32)a0, 0x11); \
*(s32 *)((s32)a0 + 0x44) = *(s32 *)((s32)a0 + 0x44) & -3; \
}
#define DEFINE_func_8016D848() \
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_800D20C0(); \
void func_8016D848(s32 *a0) { \
s16 sp20[4]; \
s16 sp28[4]; \
s32 s2; \
s32 cnt; \
s16 i; \
s32 p; \
cnt = *(s32 *)((s32)a0 + 0x1C) - 1; \
*(s32 *)((s32)a0 + 0x1C) = cnt; \
if (cnt == 0) { \
func_80146C3C(); \
return; \
} \
if (cnt < 4) { \
s2 = -0xC00; \
} else { \
s2 = 0x800; \
i = 0; \
do { \
func_80146A6C(0x33, a0, 0, 0, 0, 0x8000, 0); \
i = i + 1; \
} while (i < 5); \
} \
p = *(s32 *)((s32)a0 + 0x20); \
if ((s2 << 16) == 0) { \
*(s16 *)(p + 0x18) = *(u16 *)(p + 0x18) ^ 0x400; \
*(s16 *)(p + 0x1A) = *(u16 *)(p + 0x1A) ^ 0x200; \
} else { \
*(s16 *)(p + 0x18) = *(u16 *)(p + 0x18) + s2; \
*(s16 *)(p + 0x1A) = *(u16 *)(p + 0x1A) + s2; \
} \
sp20[0] = *(u16 *)((s32)a0 + 0x12); \
sp20[1] = *(u16 *)((s32)a0 + 0x16); \
sp20[2] = *(u16 *)((s32)a0 + 0x1A); \
func_800D20C0((s32)sp20, (s32)sp28, 0x6); \
*(s16 *)((s32)a0 + 0x6) = sp20[0]; \
*(s16 *)((s32)a0 + 0xA) = sp20[1]; \
*(s16 *)((s32)a0 + 0xE) = sp20[2]; \
}
#define DEFINE_func_8013895C() \
extern s32 D_80127524; \
extern s16 func_80138DB8(s32 a0, u8 a1, s32 a2); \
extern void func_80138B88(s32 a0); \
extern void func_8002D4C8(s32 a0, s32 a1); \
void func_8013895C(s32 a0) { \
if ((s32)D_80127524 == a0 || (*(s32 *)(a0 + 8) & 0x2000)) { \
if ((s16)func_80138DB8(a0, 0, 0x40)) { \
*(s8 *)(a0 + 0x1F) = *(u8 *)(a0 + 0x1F) + 1; \
func_80138B88(a0); \
func_8002D4C8(0x630, 0); \
} else if ((s16)func_80138DB8(a0, 0, 0x1000)) { \
*(s8 *)(a0 + 0x1F) = *(u8 *)(a0 + 0x1F) - 1; \
if ((s8)*(s8 *)(a0 + 0x1F) < 0) { \
*(s8 *)(a0 + 0x1F) = *(u8 *)(a0 + 0x21) - 1; \
} \
func_8002D4C8(0x62F, 0); \
} else if ((s16)func_80138DB8(a0, 0, 0x4000)) { \
u8 cur = *(u8 *)(a0 + 0x1F); \
u8 lim = *(u8 *)(a0 + 0x21); \
*(s8 *)(a0 + 0x1F) = cur + 1; \
if (!((s32)(s8)(*(s8 *)(a0 + 0x1F)) < (s32)lim)) { \
*(s8 *)(a0 + 0x1F) = 0; \
} \
func_8002D4C8(0x62F, 0); \
} else if (*(s32 *)(a0 + 8) & 0x2) { \
if ((s16)func_80138DB8(a0, 0, 0x30)) { \
*(s8 *)(a0 + 0x1F) = *(u8 *)(a0 + 0x21) - 1; \
func_8002D4C8(0x62F, 0); \
} \
} \
} \
}
#define DEFINE_func_80154F9C() \
extern u8 D_80078E78[]; \
extern s16 D_80078E96; \
extern s16 D_80078E9E; \
extern u16 D_80078EA6; \
extern u8 D_800D8D10[]; \
extern s32 func_8016F1AC(void); \
extern void func_801550FC(s32 a0); \
void func_80154F9C(s32 a0) { \
u8 *base = D_80078E78; \
if (*(s32 *)(a0 + 0xC8) & 0x1000000) { \
if ((D_80078E96 & 0x8000) || D_80078E9E < 0x10 || (s16)D_80078EA6 < 0x10) { \
if (func_8016F1AC() == 0) { \
return; \
} \
} \
*(s32 *)(a0 + 0xC8) = *(s32 *)(a0 + 0xC8) & 0xC0FFFFFF; \
func_801550FC(*(s32 *)(a0 + 0xC8)); \
} else { \
if ((D_80078E96 & 0x8000) && func_8016F1AC() == 0) { \
*(s32 *)(a0 + 0xC8) = *(s32 *)(a0 + 0xC8) | 0x1000000; \
func_801550FC((s32)D_800D8D10); \
return; \
} \
if (!(*(s16 *)(base + 0x26) < 0x10) && !(*(s16 *)(base + 0x2E) < 0x10)) { \
return; \
} \
if (*(s32 *)(a0 + 0x44) & 0xC0) { \
return; \
} \
if (func_8016F1AC() != 0) { \
return; \
} \
*(s32 *)(a0 + 0xC8) = *(s32 *)(a0 + 0xC8) | 0x1000000; \
func_801550FC(0x40000002); \
} \
}
#define DEFINE_func_80171384() \
extern void *D_8011F738; \
extern void func_80171928(void *a0); \
extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); \
void func_80171384(void *a0) { \
u8 *p = D_8011F738; \
s32 last; \
s32 sum; \
p[0xC] = func_80012F74(p[0xC], 0, 0xA, 1); \
p[0xD] = func_80012F74(p[0xD], 0, 0xA, 1); \
p[0xE] = func_80012F74(p[0xE], 0, 0xA, 1); \
p[0x1C] = func_80012F74(p[0x1C], 0, 0xA, 1); \
p[0x1D] = func_80012F74(p[0x1D], 0, 0xA, 1); \
p[0x1E] = func_80012F74(p[0x1E], 0, 0xA, 1); \
p[0x2C] = func_80012F74(p[0x2C], 0, 0xA, 1); \
p[0x2D] = func_80012F74(p[0x2D], 0, 0xA, 1); \
last = func_80012F74(p[0x2E], 0, 0xA, 1); \
p[0x2E] = last; \
sum = p[0xC] + p[0xD] + p[0xE] + p[0x1C] + p[0x1D] + p[0x1E] + p[0x2C] + p[0x2D] + (last & 0xff); \
if (sum == 0) { \
func_80171928(a0); \
} \
}
#define DEFINE_func_8016986C() \
extern void func_800D20C0(void *a0, void *a1, s32 a2); \
extern void func_800D23D0(void *a0); \
extern void RotMatrixYXZ(void *a0, void *a1); \
extern void func_80048EAC(void *a0, void *a1); \
extern s32 rand(void); \
extern void ApplyMatrixSV(void *a0, void *a1, void *a2); \
void func_8016986C(s32 a0) { \
s32 s1 = a0; \
s16 v10[4]; /* sp+0x10 SVECTOR */ \
s16 v18[4]; /* sp+0x18 SVECTOR */ \
s16 v20[16]; /* sp+0x20 MATRIX */ \
s16 v40[16]; /* sp+0x40 MATRIX */ \
s32 v1; \
s32 t; \
v10[0] = *(u16 *)(s1 + 0x6); \
v10[1] = *(u16 *)(s1 + 0xA); \
v10[2] = *(u16 *)(s1 + 0xE); \
func_800D20C0(v10, v18, 1); \
func_800D23D0(v18); \
RotMatrixYXZ(v18, (void *)(s1 + 0x38)); \
v10[0] = *(u16 *)(s1 + 0x12); \
v10[1] = *(u16 *)(s1 + 0x16); \
v10[2] = *(u16 *)(s1 + 0x1A); \
RotMatrixYXZ(v10, v40); \
v1 = rand(); \
v10[0] = (v1 & 0x1FC) + 0x180; \
if (*(s32 *)(s1 + 0x2C) & 0x2) { \
v10[1] = (((u32)(v1 & 0x7F00)) >> 6) + 0x200; \
} else { \
v10[1] = (((u32)(v1 & 0x7F00)) >> 6) + 0xC00; \
} \
v10[2] = 0; \
RotMatrixYXZ(v10, v20); \
func_80048EAC(v40, v20); \
if ((*(s32 *)(s1 + 0x2C) & 0x1) == 0) { \
*(s32 *)(s1 + 0x2C) = 0xE00; \
} else { \
*(s32 *)(s1 + 0x2C) = 0xA00; \
} \
v10[0] = 0; \
v10[1] = 0; \
v10[2] = 0xA; \
ApplyMatrixSV(v20, v10, v10); \
*(u16 *)(s1 + 0x12) = v10[0]; \
*(u16 *)(s1 + 0x16) = v10[1]; \
{ \
s32 tmp = *(u16 *)(s1 + 0x2); \
s32 z = (u16)v10[2]; \
*(s32 *)(s1 + 0x1C) = 0; \
*(u16 *)(s1 + 0x2) = tmp + 1; \
*(u16 *)(s1 + 0x1A) = z; \
} \
}
#define DEFINE_func_8016AFB0() \
extern void func_8016B234(void); \
extern void func_800D22E4(s32 a0); \
void func_8016AFB0(s32 a0) { \
s32 s0 = a0; \
s32 s1 = *(s32 *)(s0 + 0x20); \
s32 v1; \
s32 v0; \
if ((u32)*(s32 *)(s0 + 0x2C) < 6) { \
func_8016B234(); \
} \
v1 = *(s32 *)(s0 + 0x2C); \
if (v1 == 5) goto L9C; \
if ((u32)v1 < 6) { \
if (v1 == 1) goto L9C; \
goto LB8; \
} \
if (v1 == 6) goto L38; \
if (v1 != 7) goto LB8; \
if (*(s32 *)(s0 + 0x1C) & 0x1) { \
v1 = 0xAE; \
} else { \
v1 = 0xB4; \
} \
*(s8 *)(s1 + 0x27) = v1; \
L38: \
v0 = *(u8 *)(s1 + 0x26) - 0x8; \
*(s8 *)(s1 + 0x26) = v0; \
*(s8 *)(s1 + 0x25) = v0; \
*(s8 *)(s1 + 0x24) = v0; \
v0 = *(s32 *)(s0 + 0x1C) - 1; \
*(s32 *)(s0 + 0x1C) = v0; \
if (v0 != 0) goto LFC; \
*(s8 *)(s1 + 0x26) = 0x70; \
*(s8 *)(s1 + 0x25) = 0x70; \
*(s8 *)(s1 + 0x24) = 0x70; \
*(s32 *)(s1 + 0x4) = *(s32 *)(s1 + 0x4) | 0x50000000; \
*(s32 *)(s0 + 0x1C) = 0x7; \
*(u16 *)(s0 + 0x2) = *(u16 *)(s0 + 0x2) + 1; \
goto LFC; \
L9C: \
func_800D22E4(s0); \
*(s32 *)(s0 + 0x14) = *(s32 *)(s0 + 0x14) + 0x18000; \
LB8: \
v0 = *(u16 *)(s0 + 0x24) - 0x8; \
v1 = *(s32 *)(s0 + 0x1C) - 1; \
*(u16 *)(s0 + 0x24) = v0; \
*(s32 *)(s0 + 0x1C) = v1; \
if (v1 != 0) goto LFC; \
*(u16 *)(s0 + 0x24) = 0x70; \
*(s32 *)(s0 + 0x1C) = 0x7; \
*(u16 *)(s0 + 0x26) = *(u16 *)(s0 + 0x26) + 1; \
*(u16 *)(s0 + 0x2) = *(u16 *)(s0 + 0x2) + 1; \
LFC: \
return; \
}
#define DEFINE_func_80166438() \
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(); \
void func_80166438(u8 *a0) { \
u8 *s0; \
s32 v0; \
s32 v1; \
v0 = 0x9B; \
if ((*(s32 *)(a0 + 0x30) & 0x10000000) == 0) { \
v0 = 0x9C; \
} \
s0 = (u8 *)func_800D21C4((s32)a0, D_800D387C, v0); \
if (s0 == 0) goto tail; \
*(s32 *)(a0 + 0x20) = (s32)s0; \
{ \
register s32 r asm("$2"); \
r = *(s32 *)(a0 + 0x30) & 0x7FFF; \
*(u16 *)(s0 + 0x1A) = r; \
*(u16 *)(s0 + 0x18) = r; \
} \
if (*(s32 *)(a0 + 0x30) & 0x8000) { \
func_800D1FC8((s32)a0, 6); \
} \
v1 = *(s32 *)(a0 + 0x30); \
if (v1 < 0) { \
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) | 0x50000000; \
} else { \
if (v1 & 0x8000000) { \
*(s32 *)(s0 + 4) = 0x60000000; \
} \
} \
if ((*(s32 *)(a0 + 0x30) & 0x40000000) == 0) { \
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) | 0x40; \
} else { \
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) & -0x41; \
} \
if (*(s32 *)(a0 + 0x30) & 0x20000000) { \
u32 h; \
*(s8 *)(s0 + 0x24) = ((u32)*(s32 *)(a0 + 0x2C) >> 20) & 0xF0; \
h = *(u16 *)(a0 + 0x2E); \
*(s8 *)(s0 + 0x25) = h & 0xF0; \
*(s8 *)(s0 + 0x26) = ((u32)*(s32 *)(a0 + 0x2C) >> 12) & 0xF0; \
} \
func_80128EA8((s32)s0, (s32)(a0 + 0x24), (s32)D_800D3888); \
{ \
register s32 r asm("$2"); \
r = *(u16 *)(a0 + 2) + 1; \
*(u16 *)(a0 + 0x16) = *(s32 *)(a0 + 0x2C); \
*(u16 *)(a0 + 2) = r; \
} \
func_801665B4((s32)a0); \
return; \
tail: \
func_80146C3C((s32)a0); \
}
#define DEFINE_func_8013240C() \
extern void func_801325B8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); \
void func_8013240C(s32 a0) { \
s32 *node; \
s32 ent; \
s32 v; \
s16 h6; \
ent = *(s32 *)(a0 + 0x0) + (*(s16 *)(a0 + 0x4) << 3); \
node = (s32 *)*(s32 *)(ent + 0); \
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0xC) & 0xFFFF3FFF; \
if ((s32)node == -1) { \
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0xC) | 0x4000; \
return; \
} \
if (*(s16 *)(ent + 0x6) < 0) { \
v = 0x1000 - ((*(s16 *)(a0 + 0x6) << 12) / *(s16 *)(ent + 0x4)); \
} else { \
v = (*(s16 *)(a0 + 0x6) << 12) / *(s16 *)(ent + 0x4); \
} \
func_801325B8(*(s32 *)(a0 + 0x8), node[0], node[1], node[2], v); \
h6 = *(s16 *)(ent + 0x6); \
if (h6 < 0) { \
*(s16 *)(a0 + 0x6) = *(u16 *)(a0 + 0x6) - h6; \
} else { \
*(s16 *)(a0 + 0x6) = *(u16 *)(a0 + 0x6) + h6; \
} \
if (*(s16 *)(a0 + 0x6) < *(s16 *)(ent + 0x4)) { \
return; \
} \
*(s16 *)(a0 + 0x6) = 0; \
*(s16 *)(a0 + 0x4) = *(u16 *)(a0 + 0x4) + 1; \
{ \
s32 *p = (s32 *)((*(s16 *)(a0 + 0x4) << 3) + *(s32 *)(a0 + 0x0)); \
s32 w = p[0]; \
s32 c; \
if (w != -1) { \
if (w != 0) { \
return; \
} \
*(s16 *)(a0 + 0x4) = 0; \
c = *(s32 *)(a0 + 0xC) | 0x8000; \
} else { \
c = *(s32 *)(a0 + 0xC) | 0x4000; \
} \
*(s32 *)(a0 + 0xC) = c; \
} \
}
#define DEFINE_func_80148648() \
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(); \
void func_80148648(s32 a0, s32 a1) { \
s32 v; \
if (D_800B9A64 == 0) { \
s32 b = a1 & 0xFF; \
*(u8 *)(a0 + 0xA9) = func_80014DC0(b); \
*(s16 *)(a0 + 0xAA) = func_80014D68(b); \
*(s16 *)(a0 + 0xAC) = func_80014D94(b); \
{ \
s32 r4 = func_80014CF8(b, 4); \
s32 r5 = func_80014CF8(b, 5); \
*(s16 *)(a0 + 0xAE) = (r4 & 0xFF) | ((r5 & 0xFF) << 8); \
} \
} else { \
*(u8 *)(a0 + 0xA9) = 0x41; \
func_800120DC(a0 + 0xAA, a0 + 0xAC); \
} \
if (*(u8 *)(a0 + 0x1C5) != 0) { \
*(s16 *)(a0 + 0xAA) = 0; \
*(s16 *)(a0 + 0xAC) = 0; \
*(u16 *)(a0 + 0xAE) = 0x8080; \
} \
if (func_800CF8B4() == 0) { \
u16 mode = *(u16 *)(a0 + 0x0); \
if (mode != 0x1E && mode != 0x1A) { \
*(s16 *)(a0 + 0xAA) = 0; \
*(s16 *)(a0 + 0xAC) = 0; \
*(u16 *)(a0 + 0xAE) = 0x8080; \
} \
} \
{ \
s32 act = *(u8 *)(a0 + 0xA9); \
if (act == 0x53 || (act >= 0x54 && act == 0x73)) { \
if ((*(u16 *)(a0 + 0xAA) & 0xF000) != 0) { \
*(u8 *)(a0 + 0xA9) = 0x41; \
} \
} \
} \
if (*(s32 *)(a0 + 0x1B0) != 0) { \
s32 vAA = *(u16 *)(a0 + 0xAA); \
s32 vAE = *(u16 *)(a0 + 0xAE); \
s32 vAC = *(u16 *)(a0 + 0xAC); \
s32 t; \
t = ((vAA & 0x2000) << 2) | ((vAA & 0x8000) >> 2); \
t = t | (vAA & 0x5FFF); \
*(s16 *)(a0 + 0xAA) = t; \
t = ((vAC & 0x2000) << 2) | ((vAC & 0x8000) >> 2); \
t = t | (vAC & 0x5FFF); \
*(s16 *)(a0 + 0xAC) = t; \
if ((vAE & 0xFF) != 0x80) { \
vAE = (~(vAE & 0xFF) & 0xFF) | (vAE & 0xFF00); \
} \
*(s16 *)(a0 + 0xAE) = vAE; \
} \
}
#define DEFINE_func_80159120() \
extern s32 func_80029504(void); \
extern s32 func_801399F0(s32); \
extern void func_80139914(s32 a0); \
extern s32 func_80029A94(s32); \
extern void func_80175454(void); \
extern void func_801458E0(void); \
extern void func_800298BC(void *); \
extern void func_801458E8(void); \
extern s32 func_8013767C(s32 a0); \
extern void func_8002992C(s32); \
extern void func_80145A2C(void); \
extern void func_80146C98(s32 *a0, s16 a1); \
extern void func_800CF804(void); \
extern void func_800CF818(void); \
extern u8 D_80078E50; \
extern s32 D_80078E8C; \
extern u8 D_80110D0C[]; \
extern u8 D_80110C3C[]; \
void func_80159120(s32 a0) { \
s32 r; \
s32 v1; \
s32 base; \
func_80029504(); \
base = *(s32 *)(a0 + 0x20); \
*(u16 *)(base + 0x12) = (*(u16 *)(base + 0x12) + 0x16) & 0xFFF; \
r = func_801399F0(*(s32 *)(a0 + 0x198)); \
if (r == 0) { \
return; \
} \
func_80139914(*(s32 *)(a0 + 0x198)); \
*(s32 *)(a0 + 0x198) = 0; \
if (r != 1) { \
if (r == 2) { \
goto L290; \
} \
} \
v1 = *(s16 *)(a0 + 0x244); \
if (v1 != 1) { \
if (v1 == 2) { \
goto L224; \
} \
} \
if (func_80029A94(1) != 0) { \
s32 t; \
func_80175454(); \
func_801458E0(); \
t = D_80078E8C; \
func_800298BC(&D_80078E50); \
func_801458E8(); \
D_80078E8C = t / 2; \
goto L270; \
} \
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_80110D0C); \
func_80146C98((s32 *)a0, 0xB); \
return; \
L224: \
if (func_80029A94(0) != 0) { \
func_80175454(); \
func_8002992C(0); \
func_80145A2C(); \
goto L270; \
} \
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_80110D0C); \
func_80146C98((s32 *)a0, 0xB); \
return; \
L270: \
func_80146C98((s32 *)a0, 0xC); \
func_800CF804(); \
func_800CF818(); \
return; \
L290: \
*(s32 *)(a0 + 0x198) = func_8013767C((s32)D_80110C3C); \
func_80146C98((s32 *)a0, 0x9); \
}
#define DEFINE_func_8013AB54() \
extern void func_8013AD38(void *a0, s32 a1, void *a2, void *a3); \
extern void func_8013B274(s32 a0, s32 a1, void *a2); \
extern void func_8013AF20(s32 a0, s32 a1, void *a2, void *a3); \
extern s32 D_800A5E60; \
s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3) { \
u8 buf[0xE4]; /* spans 0x10 .. 0xF4 */ \
s32 neg; \
s32 a, b; \
s32 t4, t6; \
t4 = *(s16 *)(a2 + 4) * 12; \
*(s16 *)(buf + 0xE0) = t4 + 0x10; /* sp+0xF0 */ \
neg = a3 & 0x8000; \
t6 = *(s16 *)(a2 + 6) * 12 + (*(s16 *)(a2 + 6) - 1) * 2; \
*(s16 *)(buf + 0xE2) = t6 + 8; \
if (neg == 0) { \
*(s16 *)(buf + 0xE0) = t4 + 0x38; \
*(s16 *)(buf + 0xE2) = t6 + 0x10; \
} \
a = ((s32)*(s16 *)(buf + 0xE0) << 12) / 154; \
b = ((s32)*(s16 *)(buf + 0xE2) << 12) / 42; \
*(s16 *)(buf + 0xE0) = a; \
*(s16 *)(buf + 0xE2) = b; \
if (neg != 0) { \
*(s16 *)(buf + 0xE0) = -a; \
} \
*(s16 *)(buf + 0xC8) = b; /* 0xD8 */ \
*(s16 *)(buf + 0xC2) = 0; /* 0xD2 */ \
*(s16 *)(buf + 0xC4) = 0; /* 0xD4 */ \
*(s16 *)(buf + 0xC6) = 0; /* 0xD6 */ \
*(s16 *)(buf + 0xCA) = 0; /* 0xDA */ \
*(s16 *)(buf + 0xCC) = 0; /* 0xDC */ \
*(s16 *)(buf + 0xCE) = 0; /* 0xDE */ \
*(s16 *)(buf + 0xD0) = 0x1000; /* 0xE0 */ \
*(s16 *)(buf + 0xC0) = *(u16 *)(buf + 0xE0); /* 0xD0 */ \
*(s32 *)(buf + 0xD4) = *(s16 *)(a2 + 0); /* 0xE4 */ \
*(s32 *)(buf + 0xD8) = *(s16 *)(a2 + 2); /* 0xE8 */ \
*(s32 *)(buf + 0xDC) = 0; /* 0xEC */ \
__asm__ __volatile__("" ::: "memory"); \
{ \
register s32 *p __asm__("$2") = (s32 *)(buf + 0xC0); \
__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" \
"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"(p) : "$12", "$13", "$14", "memory"); \
} \
func_8013AD38(buf + 0xE0, 0, buf + 0x00, buf + 0x80); \
D_800A5E60 = a0; \
if (a3 != 0) { \
func_8013B274(a1, 0x80, buf + 0xE0); \
} \
func_8013AF20(a1, a2, buf + 0x00, buf + 0x80); \
return D_800A5E60; \
}
#define DEFINE_func_80172738() \
extern void func_80174684(void *); \
extern s32 func_80172760(s32 a0); \
void func_80172738(void) { \
func_80174684((void *)func_80172760); \
}
#define DEFINE_func_80173174() \
extern void func_80174684(void *); \
extern s32 func_8017319C(void *a0); \
void func_80173174(void) { \
func_80174684((void *)func_8017319C); \
}
#define DEFINE_func_8017427C() \
extern void func_80174684(void *); \
extern s32 func_801742A4(void *a0); \
void func_8017427C(void) { \
func_80174684((void *)func_801742A4); \
}
#define DEFINE_func_8017435C() \
extern void func_80174684(void *); \
extern s32 func_80174384(void *a0); \
void func_8017435C(void) { \
func_80174684((void *)func_80174384); \
}
#define DEFINE_func_80174784() \
extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); \
extern s32 func_801747CC(void *a0); \
void func_80174784(void) { \
((void (*)(void *, s32))func_8016EDEC)((void *)func_801747CC, 0x1000000); \
}
#define DEFINE_func_80174824() \
extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); \
extern s32 func_80174888(void *a0); \
void func_80174824(void) { \
((void (*)(void *, s32))func_8016EDEC)((void *)func_80174888, 0x1000000); \
}
#define DEFINE_func_80159B08() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80159BE4(s32); \
void func_80159B08(s32 *a0) { \
func_80147078(a0, 0); \
func_80159BE4(a0); \
}
#define DEFINE_func_8015A1FC() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015A2D8(s32); \
void func_8015A1FC(s32 *a0) { \
func_80147078(a0, 1); \
func_8015A2D8(a0); \
}
#define DEFINE_func_8015BF48() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015C0C4(s32 a0); \
void func_8015BF48(s32 *a0) { \
func_80147078(a0, 0x4); \
func_8015C0C4(a0); \
}
#define DEFINE_func_8015C6AC() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015C788(s32 a0); \
void func_8015C6AC(s32 *a0) { \
func_80147078(a0, 0x9); \
func_8015C788(a0); \
}
#define DEFINE_func_8015D480() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015D57C(s32); \
void func_8015D480(s32 *a0) { \
func_80147078(a0, 0xD); \
func_8015D57C(a0); \
}
#define DEFINE_func_8015DA90() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015DB6C(s32 a0); \
void func_8015DA90(s32 *a0) { \
func_80147078(a0, 0xE); \
func_8015DB6C(a0); \
}
#define DEFINE_func_8015DDF0() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015DECC(s32 a0); \
void func_8015DDF0(s32 *a0) { \
func_80147078(a0, 0xF); \
func_8015DECC(a0); \
}
#define DEFINE_func_8015E150() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015E22C(s32 a0); \
void func_8015E150(s32 *a0) { \
func_80147078(a0, 0x10); \
func_8015E22C(a0); \
}
#define DEFINE_func_8015E84C() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015E95C(s32); \
void func_8015E84C(s32 *a0) { \
func_80147078(a0, 0x11); \
func_8015E95C(a0); \
}
#define DEFINE_func_8015EDA0() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015EE7C(s32); \
void func_8015EDA0(s32 *a0) { \
func_80147078(a0, 0x12); \
func_8015EE7C(a0); \
}
#define DEFINE_func_8015EFA4() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015F080(s32); \
void func_8015EFA4(s32 *a0) { \
func_80147078(a0, 0x13); \
func_8015F080(a0); \
}
#define DEFINE_func_80174E9C() \
extern void func_8012A018(s32 a, s32 b); \
extern s32 D_8012697C; \
extern u16 D_80126980; \
extern s32 func_80174F28(void *a0); \
void func_80174E9C(s32 a0) { \
D_8012697C = a0; \
D_80126980 = 0; \
func_8012A018((s32)func_80174F28, 0); \
}
#define DEFINE_func_80174EF0() \
extern void func_8012A018(s32 a, s32 b); \
extern s32 D_8012697C; \
extern u16 D_80126980; \
extern s32 func_80174F28(void *a0); \
void func_80174EF0(s32 a0, s16 a1) { \
D_8012697C = a0; \
D_80126980 = a1; \
func_8012A018((s32)func_80174F28, 1); \
}
#define DEFINE_func_80170634() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_80170670(void *a0); \
void func_80170634(u8 *a0) { \
func_801719A4((int)a0, 1); \
func_80171990(a0); \
func_80170670(a0); \
}
#define DEFINE_func_80170F38() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_80170F74(void *a0); \
void func_80170F38(u8 *a0) { \
func_801719A4((int)a0, 1); \
func_80171990(a0); \
func_80170F74(a0); \
}
#define DEFINE_func_80170FEC() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_80171028(void *a0); \
void func_80170FEC(u8 *a0) { \
func_801719A4((int)a0, 1); \
func_80171990(a0); \
func_80171028(a0); \
}
#define DEFINE_func_80174438() \
extern void func_80174684(void *); \
extern s32 func_80174474(void *a0); \
extern s32 D_80127508; \
void func_80174438(s32 a0) { \
func_80174684((void *)func_80174474); \
D_80127508 = a0; \
}
#define DEFINE_func_801729B0() \
extern void func_80174684(void *); \
extern s32 func_801729F0(void *a0); \
extern s16 D_80126B34; \
extern s16 D_80126B30; \
extern s16 D_80126B32; \
void func_801729B0(s32 a0) { \
D_80126B34 = a0; \
D_80126B30 = 0; \
D_80126B32 = 0; \
func_80174684((void *)func_801729F0); \
}
#define DEFINE_func_80147AD4() \
extern void func_80147CC8(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); \
extern void func_80147B5C(s32 a0, void *a1); \
void func_80147AD4(s32 a0, s32 a1, s32 a2, s32 a3) { \
u8 buf[16]; \
func_80147CC8(a0, a1, a2, a3, (s32)buf); \
func_80147B5C(a0, (s32)buf); \
}
#define DEFINE_func_8016F71C() \
extern void *D_8011F738; \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_8016F764(void *a0); \
void func_8016F71C(u8 *a0) { \
func_801719A4((int)a0, 1); \
*(void **)(a0 + 0x200) = D_8011F738; \
func_80171990(a0); \
func_8016F764((s32)a0); \
}
#define DEFINE_func_80170928() \
extern u8 D_800D5A34[]; \
extern void *D_8011F738; \
extern s32 D_80126B58; \
extern void func_80170AD8(void *a0); \
extern void func_80171904(s32 a0); \
extern void func_80170B48(int a0); \
void func_80170928(void) { \
D_8011F738 = D_800D5A34; \
func_80171904((s32)func_80170AD8); \
func_80170B48((int)&D_80126B58); \
}
#define DEFINE_func_80170970() \
extern u8 D_800D59EC[]; \
extern void *D_8011F738; \
extern s32 D_80126B58; \
extern void func_80170AD8(void *a0); \
extern void func_80171904(s32 a0); \
extern void func_80170B48(int a0); \
void func_80170970(void) { \
D_8011F738 = D_800D59EC; \
func_80171904((s32)func_80170AD8); \
func_80170B48((int)&D_80126B58); \
}
#define DEFINE_func_801709B8() \
extern u8 D_800D599C[]; \
extern void *D_8011F738; \
extern s32 D_80126B58; \
extern void func_80170AD8(void *a0); \
extern void func_80171904(s32 a0); \
extern void func_80170B48(int a0); \
void func_801709B8(void) { \
D_8011F738 = D_800D599C; \
func_80171904((s32)func_80170AD8); \
func_80170B48((int)&D_80126B58); \
}
#define DEFINE_func_80170A00() \
extern u8 D_800D5934[]; \
extern void *D_8011F738; \
extern s32 D_80126B58; \
extern void func_80170AD8(void *a0); \
extern void func_80171904(s32 a0); \
extern void func_80170B48(int a0); \
void func_80170A00(void) { \
D_8011F738 = D_800D5934; \
func_80171904((s32)func_80170AD8); \
func_80170B48((int)&D_80126B58); \
}
#define DEFINE_func_80170A48() \
extern u8 D_800D5DA8; \
extern void *D_8011F738; \
extern s32 D_80126B58; \
extern void func_80170AD8(void *a0); \
extern void func_80171904(s32 a0); \
extern void func_80170B48(int a0); \
void func_80170A48(void) { \
D_8011F738 = &D_800D5DA8; \
func_80171904((s32)func_80170AD8); \
func_80170B48((int)&D_80126B58); \
}
#define DEFINE_func_80170A90() \
extern u8 D_800D5DC0[]; \
extern void *D_8011F738; \
extern s32 D_80126B58; \
extern void func_80170AD8(void *a0); \
extern void func_80171904(s32 a0); \
extern void func_80170B48(int a0); \
void func_80170A90(void) { \
D_8011F738 = D_800D5DC0; \
func_80171904((s32)func_80170AD8); \
func_80170B48((int)&D_80126B58); \
}
#define DEFINE_func_801736B0() \
extern s32 func_8014C118(void *a0, s32 a1, s32 a2); \
extern void func_80174684(void *); \
extern s32 func_801736FC(void *a0); \
extern s32 D_80126B58; \
extern s32 D_80127508; \
void func_801736B0(s32 a0, s32 a1) { \
D_80127508 = func_8014C118(&D_80126B58, a0, (s16)a1); \
func_80174684(func_801736FC); \
}
#define DEFINE_func_8016FAC0() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_8016FB10(void *a0); \
void func_8016FAC0(u8 *a0) { \
u8 *v1; \
*(s16 *)(a0 + 0x136) = 2; \
v1 = *(u8 **)(a0 + 0x20); \
*(s16 *)(a0 + 0x132) = *(u16 *)(v1 + 0x12); \
func_801719A4((int)a0, 2); \
func_80171990(a0); \
func_8016FB10(a0); \
}
#define DEFINE_func_80170784() \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_801707D4(void *a0); \
extern void *D_8011F738; \
void func_80170784(u8 *a0) { \
func_801719A4((int)a0, 1); \
(*(void (*)(void))D_8011F738)(); \
func_80171990(a0); \
func_801707D4(a0); \
}
#define DEFINE_func_8017250C() \
extern s32 func_80172560(u8 *a0, u8 *a1); \
int func_8017250C(short *a0, short *a1) { \
if (func_80172560(a0, a1) == 0) { \
return 0; \
} \
a0[3] = a1[0]; /* sh v0,6(s1) <- lhu 0(s0) */ \
a0[7] = a1[2]; /* sh v1,0xE(s1) <- lhu 4(s0) */ \
return 1; \
}
#define DEFINE_func_8015E95C() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
extern void func_8015E9B8(s32 *a0); \
extern u8 D_80078EC0; \
void func_8015E95C(s32 a0) { \
if ((D_80078EC0 & 0x80) == 0) { \
func_80146A6C(0x14, (void *)a0, 0, 0, 0, 0, 0); \
} \
func_8015E9B8(a0); \
}
#define DEFINE_func_8014A1B0() \
extern void func_80015978(s32 a0, s32 *a1); \
extern u16 func_80156370(u16 a0); \
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
void func_8014A1B0(s32 a0, s32 a1) { \
s16 sp18[4]; \
u16 tmp; \
func_80015978(a0 + 4, (s32 *)sp18); \
sp18[3] = 0; \
tmp = func_80156370(0xA); \
func_8014C4AC(a1, 0xA, tmp, sp18, *(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)); \
}
#define DEFINE_func_801748EC() \
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; \
void func_801748EC(void) { \
D_80126954 = 0x1F4; \
D_80126950 = 0x1F4; \
D_8012695C = 0x384; \
D_80126968 = 0x1C7; \
D_8012696A = 0x600; \
D_8012696C = 0; \
D_80126976 = 0; \
D_80126978 = 0; \
D_8012697A = 0; \
func_8012A018((s32)func_8017496C, 0); \
}
#define DEFINE_func_8014E48C() \
extern void func_8014E5B4(s32 a0, void *a1, void *a2); \
extern s32 func_8014E514(u8 *a0, s32 a1, s32 a2); \
void func_8014E48C(s32 a0) { \
s16 buf1[4]; \
s16 buf2[4]; \
buf1[0] = *(u16 *)(a0 + 0x88); \
buf1[1] = *(u16 *)(a0 + 0x8A); \
buf1[2] = *(u16 *)(a0 + 0x8C); \
buf2[0] = *(u16 *)(a0 + 0x6); \
buf2[1] = *(u16 *)(a0 + 0xA); \
buf2[2] = *(u16 *)(a0 + 0xE); \
if (*(s32 *)(a0 + 0x17C) == 0) { \
func_8014E5B4(a0, buf1, buf2); \
} else { \
func_8014E514(a0, buf1, buf2); \
} \
}
#define DEFINE_func_80149D10() \
extern u8 func_8014B5B8(s32 *a0); \
extern u8 D_80078EBF; \
extern u8 D_80078EC0; \
s32 func_80149D10(s32 a0) { \
if (*(s32 *)(a0 + 0x44) & 0x400) { \
return 0; \
} \
if (D_80078EBF != 0x80) { \
return 0; \
} \
if ((D_80078EC0 & 0x7F) == 0) { \
return 0; \
} \
if (*(u16 *)(a0 + 0xAC) & 0x10) { \
if ((func_8014B5B8((s32 *)a0) & 0xFF) != 0) { \
return 2; \
} \
return 1; \
} \
return 0; \
}
#define DEFINE_func_801432FC() \
extern s32 func_80142DB8(s32 *a0); \
extern s32 func_8012C044(s32 a0); \
extern void func_80142BB4(s32 *a0, s32 a1, s32 a2); \
extern void func_80142C9C(s32 *a0); \
extern s32 func_8012BF10(s32 a0, s32 a1); \
extern void func_8012AD44(s32 *a0, s16 a1); \
void func_801432FC(s32 *a0) { \
if (func_80142DB8(a0) == 1) { \
func_80142BB4(a0, 1, 3); \
return; \
} \
if (*(s16 *)((u8 *)a0 + 0x100) != 0) { \
if (func_8012C044(a0) == 0) { \
return; \
} \
func_80142BB4(a0, 0, 3); \
return; \
} \
func_80142C9C(a0); \
if (func_8012BF10((s32)a0, 0x30) != 0) { \
func_8012AD44(a0, 2); \
} \
}
#define DEFINE_func_801472C8() \
s32 func_801472C8(struct S *a0) { \
return a0->f7E = a0->f7E | 0x2; \
}
#define DEFINE_func_8014C8F0() \
void func_8014C8F0(s32 arg0) { \
*(struct UnalignedPair *)(arg0 + 0x15c) = *(struct UnalignedPair *)(arg0 + 0x90); \
}
#define DEFINE_func_80139FBC() \
void func_80139FBC(struct obj *a0) { \
if (a0->unk8 & 0x800) { \
a0->unk8 &= ~0x800; \
a0->unk4 = 2; \
} \
}
#define DEFINE_func_8014C860() \
s32 func_8014C860(s32 a0, s32 a1) { \
s32 r = 1; \
*(struct S8 *)(a0 + 0x154) = *(struct S8 *)a1; \
*(s16*)(a0 + 0x15A) = r; \
return r; \
}
#define DEFINE_func_8012931C() \
void func_8012931C(struct vec *a0) { \
a0->unk4 += a0->unk10; \
a0->unk8 += a0->unk14; \
a0->unkC += a0->unk18; \
}
#define DEFINE_func_8015BE04() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015BE38(struct Obj *a0); \
void func_8015BE04(s32 *a0) { \
func_80147078(a0, 0x3); \
func_8015BE38((struct Obj *)a0); \
}
#define DEFINE_func_8016F540() \
extern void func_8014708C(void *a0); \
extern s32 func_801472C8(struct S *a0); \
extern void func_80171928(void *a0); \
void func_8016F540(void *a0) { \
func_8014708C(a0); \
func_801472C8((struct S *)a0); \
func_80171928(a0); \
}
#define DEFINE_func_8014C010() \
extern void func_80146AFC(void *a0); \
void func_8014C010(s32 a0, s32 a1) { \
struct S8014C010 sp; \
sp.w8 = a0; \
sp.h0 = 2; \
sp.h1 = 0; \
sp.h2 = 0; \
sp.h3 = 0; \
sp.wC = a1; \
sp.w10 = 0; \
func_80146AFC(&sp); \
}
#define DEFINE_func_8014AD30() \
extern void func_80146AFC(void *a0); \
void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3) { \
struct S_8014AD30 sp; \
s16 b = a1[0]; \
s16 c = a1[1]; \
s16 d = a1[2]; \
sp.h0 = 0x1D; \
sp.w0 = a0; \
sp.w1 = a2; \
sp.w2 = a3; \
sp.h1 = b; \
sp.h2 = c; \
sp.h3 = d; \
func_80146AFC(&sp); \
}
#define DEFINE_func_801504D8() \
extern void func_80150528(void *a0, void *a1, void *a2); \
void func_801504D8(u16 *a0) { \
struct V3 a; \
struct V3 b; \
s32 t6 = a0[3]; /* 0x6 */ \
s32 ta; \
s32 te; \
b.x = t6; \
a.x = t6; \
ta = a0[5]; /* 0xA */ \
a.y = ta - 3; \
te = a0[7]; /* 0xE */ \
b.y = ta + 1; \
b.z = te; \
a.z = te; \
func_80150528(a0, &a, &b); \
}
#define DEFINE_func_80172780() \
extern void func_80174684(void *); \
extern s16 D_80126B30; \
extern s32 func_801727D0(void *a0); \
void func_80172780(void *a0) { \
*(struct S8_80172780 *)&D_80126B30 = *(struct S8_80172780 *)a0; \
func_80174684((void *)func_801727D0); \
}
#define DEFINE_func_80172894() \
extern void func_80174684(void *); \
extern s16 D_80126B30; \
extern s32 func_801728E4(void *a0); \
void func_80172894(void *a0) { \
*(struct S8_80172894 *)&D_80126B30 = *(struct S8_80172894 *)a0; \
func_80174684((void *)func_801728E4); \
}
#define DEFINE_func_80143BDC() \
extern s32 func_8012C51C(void *a0, s32 a1); \
void func_80143BDC(u16 *a0) { \
struct S80143BDC sp; \
u16 t; \
sp.f0 = a0[0]; \
sp.f2 = a0[1]; \
t = a0[2]; \
sp.f6 = 0x1C; \
sp.f8 = 1; \
sp.fA = 0; \
sp.f10 = 0; \
sp.fE = 0; \
sp.f4 = t; \
func_8012C51C(&sp, 0); \
}
#define DEFINE_func_80173460() \
extern void func_801734BC(s32 a0, s32 a1); \
extern struct S80126B38 D_80126B38; \
extern s16 D_80126B3E; \
void func_80173460(s32 a0, s32 a1) { \
func_801734BC(a0, a1); \
D_80126B38 = *(struct S80126B38 *)a1; \
D_80126B3E = 1; \
}
#define DEFINE_func_80131E7C() \
extern s32 func_8012E470(s32 a0); \
extern void func_8012E4C8(s32 a0); \
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
extern void func_80131CA8(int a0, int a1); \
void func_80131E7C(s32 a0) { \
if (*(s32 *)(a0 + 0xB4) & 0x40000) { \
if (func_8012E470(a0)) { \
func_8012E4C8(a0); \
func_80131E00((struct S80131E00 *)a0, 1); \
} \
} \
func_80131CA8(a0, 0x3A); \
}
#define DEFINE_func_801433F0() \
extern void func_80143458(); \
extern void func_8012931C(struct vec *a0); \
extern s32 func_80128ED8(void *a0, void *a1); \
extern void func_801292C8(u8 *a0); \
void func_801433F0(s32 a0) { \
if (*(u16 *)(a0 + 2) == 0) { \
func_80143458(); \
} else { \
func_8012931C((struct vec *)a0); \
if (func_80128ED8(*(void **)(a0 + 0x20), (u8 *)a0 + 0x24) != 0) { \
func_801292C8((u8 *)a0); \
} \
} \
}
#define DEFINE_func_8012BC60() \
extern void Square0(s32 *a0, s32 *a1); \
s32 func_8012BC60(struct Vec *a0, struct Vec *a1) { \
s32 d[3]; \
d[0] = a0->unk2 - a1->unk2; \
d[1] = a0->unk6 - a1->unk6; \
d[2] = a0->unkA - a1->unkA; \
Square0(d, d); \
return d[0] + d[1] + d[2]; \
}
#define DEFINE_func_8013A250() \
extern void func_80139A8C(s32 a0); \
extern void func_80139B18(s32 a0); \
extern void func_80138B88(s32 a0); \
void func_8013A250(struct S8013A250 *a0) { \
if (a0->unkC != 0) { \
a0->unkC = a0->unkC - 1; \
func_80139A8C((s32)a0); \
if ((a0->unk8 & 0x80020) == 0) { \
func_80139B18((s32)a0); \
return; \
} \
} \
func_80138B88((s32)a0); \
}
#define DEFINE_func_8013A4C4() \
extern void func_8013A530(void); \
void func_8013A4C4(struct S8013A4C4 *a0) { \
struct Inner8013A4C4 *a1 = a0->unk4; \
a0->unkE = 0; \
a1->unk28 -= 0x400; \
a1->unk2A -= 0x400; \
if (a1->unk28 < 0x401) { \
a1->unk2A = 0; \
a1->unk28 = 0; \
a0->unk0 = 4; \
a0->unk2 = 0; \
a0->unk4 = 0; \
} else { \
func_8013A530(); \
} \
}
#define DEFINE_func_8013E22C() \
extern void Square12(s32 *a0, s32 *a1); \
s32 func_8013E22C(struct VecA *a0, struct VecB *a1) { \
s32 d[3]; \
s32 sq[3]; \
d[0] = a0->unk2 - a1->unk0; \
d[1] = a0->unk6 - a1->unk2; \
d[2] = a0->unkA - a1->unk4; \
Square12(d, sq); \
return sq[0] + sq[1] + sq[2]; \
}
#define DEFINE_func_8014FDF4() \
extern void func_80150170(void *a0); \
extern void func_8014FE60(void *a0); \
void func_8014FDF4(struct S8014FDF4 *a0) { \
if (a0->f6 != a0->f88 || a0->fA != a0->f8A || a0->fE != a0->f8C) { \
func_80150170(a0); \
} else { \
func_8014FE60(a0); \
} \
}
#define DEFINE_func_80151ECC() \
extern void func_80149020(s32 *a0); \
extern void func_80146CA0(void *a0); \
extern s32 func_80172630(u8 *a0); \
void func_80151ECC(struct S80151ECC *a0) { \
func_80149020((s32 *)a0); \
a0->f64 = a0->f64 + (a0->fDE << 6); \
a0->fDE = a0->fDE + 5; \
if (a0->f64 >= 0x1556) { \
a0->fDE = 0x10; \
func_80146CA0(a0); \
} \
func_80172630((u8 *)a0); \
}
#define DEFINE_func_80153150() \
extern void func_80149020(s32 *a0); \
extern void func_801470B4(s32 a0); \
extern void func_8015369C(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80153150(struct S80153150 *a0) { \
s16 nv; \
func_80149020((s32 *)a0); \
nv = (s16)(a0->f64 - 0x100); \
a0->f64 = nv; \
a0->f62 = nv; \
a0->f60 = nv; \
if (nv <= 0) { \
a0->fDE = 0x10; \
func_801470B4((s32)a0); \
func_8015369C((s32)a0); \
func_80146CA0(a0); \
} \
}
#define DEFINE_func_80172358() \
void func_80172358(u8 *a0, u8 *a1) { \
*(u16 *)(a0 + 6) = *(u16 *)(a1 + 0); \
*(u16 *)(a0 + 0xA) = *(u16 *)(a1 + 2); \
*(u16 *)(a0 + 0xE) = *(u16 *)(a1 + 4); \
*(struct U8 *)(a0 + 0x90) = *(struct U8 *)(a1 + 0); \
*(struct U8 *)(a0 + 0x88) = *(struct U8 *)(a0 + 0x90); \
}
#define DEFINE_func_80136ECC() \
extern short D_800B9A02; \
extern u8 D_800A6518[]; \
extern void GsSortLine(void *a0, void *a1, s32 a2); \
void func_80136ECC(s16 a0, s16 a1, s16 a2, s16 a3, u8 r, u8 g, u8 b) { \
struct { \
u32 tag; \
s16 x0; \
s16 y0; \
s16 x1; \
s16 y1; \
u8 r; \
u8 g; \
u8 b; \
} line; \
line.x0 = a0; \
line.tag = 0; \
line.y0 = a1; \
line.x1 = a2; \
line.y1 = a3; \
line.r = r; \
line.g = g; \
line.b = b; \
GsSortLine(&line, &D_800A6518[(u16)D_800B9A02 * 20], 0); \
}
#define DEFINE_func_801730FC() \
extern void func_80171A1C(u8 *a0); \
extern void func_80147060(u8 *a0); \
extern void func_80154150(s32 a0, s32 a1); \
extern s32 func_80174650(s32); \
extern s16 D_80126B30; \
void func_801730FC(struct S801730FC *a0) { \
if (a0->unkB8 & 0x8000) { \
func_80171A1C((u8 *)a0); \
if (D_80126B30 != 0) { \
func_80147060(a0); \
func_80154150(a0, 0); \
} \
func_80174650((s32)a0); \
} \
}
#define DEFINE_func_8014350C() \
extern void func_8014358C(void); \
extern void func_8012931C(struct vec *a0); \
extern s32 func_80128ED8(void *a0, void *a1); \
extern void func_801292C8(u8 *a0); \
void func_8014350C(s32 *a0) { \
if (*(u16 *)((u8 *)a0 + 2) == 0) { \
func_8014358C(); \
return; \
} \
func_8012931C((struct vec *)a0); \
if (func_80128ED8((void *)a0[0x20 / 4], (void *)((u8 *)a0 + 0x24)) != 0) { \
func_801292C8((u8 *)a0); \
return; \
} \
*(u8 *)(a0[0x20 / 4] + 0x27) = *(u8 *)((u8 *)a0 + 0x28) - 0x70; \
}
#define DEFINE_func_8012FE70() \
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
extern void func_80131170(s32 a0, s32 a1, s32 a2); \
extern void func_80131CA8(int a0, int a1); \
void func_8012FE70(s32 a0) { \
s32 v1 = *(s32 *)(a0 + 0xC4); \
*(u8 *)(a0 + 0xC1) = 9; \
if (v1 & 2) { \
*(u8 *)(a0 + 0xC1) = 1; \
func_80131CA8(a0, 3); \
} else if (v1 & 1) { \
func_80131E00((struct S80131E00 *)a0, 1); \
} else { \
if (*(s32 *)(a0 + 0xB4) & 0x200) { \
func_80131170(a0, 0, 0); \
} \
func_80131CA8(a0, 0x1E); \
} \
}
#define DEFINE_func_8014ED80() \
extern void func_8014EE14(s32 a0, s16 *a1, s16 *a2); \
s32 func_8014ED80(struct SubED80 *a0) { \
s16 g1[3]; \
s16 g2[3]; \
if (a0->f44 & 0x80000) { \
return 0; \
} \
if (a0->f1F8 & 0x4000000) { \
return 0; \
} \
g1[0] = a0->f88; \
g1[1] = a0->f8A - 0x10; \
g1[2] = a0->f8C; \
g2[0] = a0->f6; \
g2[1] = a0->fA - 0x10; \
g2[2] = a0->fE; \
func_8014EE14((s32)a0, g1, g2); \
}
#define DEFINE_func_8014F24C() \
extern void func_8014F2E0(s32 a0, s16 *a1, s16 *a2); \
s32 func_8014F24C(struct SubF24C *a0) { \
s16 g1[3]; \
s16 g2[3]; \
if (a0->f44 & 0x80000) { \
return 0; \
} \
if (a0->f1F8 & 0x4000000) { \
return 0; \
} \
g1[0] = a0->f88; \
g1[1] = a0->f8A - 0x10; \
g1[2] = a0->f8C; \
g2[0] = a0->f6; \
g2[1] = a0->fA - 0x10; \
g2[2] = a0->fE; \
func_8014F2E0((s32)a0, g1, g2); \
}
#define DEFINE_func_8016380C() \
extern void func_80015978(s32 a0, s32 *a1); \
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
extern void func_80015954(s32 a0, s32 a1); \
s32 func_8016380C(struct S8016380C *a0, s32 a1) { \
struct M8 local; \
s32 ret; \
local = a0->m; \
func_80015978((s32)((u8 *)a0 + 4), (s32 *)a1); \
ret = func_80133784(1, &local, a1); \
if (ret != 0) { \
func_80015954(a1, (s32)((u8 *)a0 + 4)); \
return ret; \
} \
return 0; \
}
#define DEFINE_func_8014E6F8() \
extern s32 func_8014E83C(s32 a0, s16 *a1, s16 *a2); \
extern s32 func_8014E790(s32 a0, s16 *a1, s16 *a2); \
void func_8014E6F8(struct SubE6F8 *a0) { \
s16 g1[3]; \
s16 g2[3]; \
u16 t8A; \
u16 tA; \
g1[0] = a0->f88; \
t8A = a0->f8A; \
g1[1] = t8A; \
g1[2] = a0->f8C; \
g2[0] = a0->f6; \
tA = a0->fA; \
g2[1] = tA; \
g2[2] = a0->fE; \
if (a0->f180 == 0) { \
g1[1] = t8A - 0x54; \
g2[1] = tA - 0x54; \
func_8014E83C((s32)a0, g1, g2); \
} else { \
func_8014E790((s32)a0, g1, g2); \
} \
}
#define DEFINE_func_80152E4C() \
extern void func_80149020(s32 *a0); \
extern void func_80153B58(s32 *a0); \
extern void func_80147A84(s32 arg0); \
extern void func_801473EC(s32 *a0); \
extern void func_80148038(s32 a0, s32 a1); \
extern void func_80147460(s32 a0); \
extern s32 func_801472C8(struct S *a0); \
extern void func_801470B4(s32 a0); \
extern void func_8015369C(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_80152E4C(s32 a0) { \
s32 s0 = a0; \
s32 v0; \
func_80149020((s32 *)s0); \
func_80153B58((s32 *)s0); \
func_80147A84(s0); \
func_801473EC((s32 *)s0); \
v0 = *(u8 *)(s0 + 0xDF); \
if (v0 == 0) { \
func_80148038(s0, 0x18000); \
} else { \
*(u8 *)(s0 + 0xDF) = v0 - 1; \
} \
func_80147460(s0); \
{ \
u8 dv = *(u8 *)(s0 + 0xDE); \
*(u8 *)(s0 + 0xDE) = dv + 0xFF; \
if (dv != 0) return; \
} \
{ \
*(u8 *)(s0 + 0xDE) = 0x10; \
func_801472C8(s0); \
func_801470B4(s0); \
func_8015369C(s0); \
func_80146CA0((void *)s0); \
} \
}
#define DEFINE_func_8015294C() \
extern u16 D_800B99DA; \
extern void func_80149020(s32 *a0); \
extern void func_801470B4(s32 a0); \
extern void func_801470AC(s32 *a0); \
extern void func_80147A84(s32 arg0); \
extern void func_801473EC(s32 *a0); \
extern void func_80148038(s32 a0, s32 a1); \
extern void func_80147460(s32 a0); \
extern s32 func_801472C8(struct S *a0); \
extern void func_8015369C(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_8015294C(s32 a0) { \
s32 s0 = a0; \
func_80149020((s32 *)s0); \
if (D_800B99DA & 1) { \
func_801470B4(s0); \
} else { \
func_801470AC((s32 *)s0); \
} \
func_80147A84(s0); \
func_801473EC((s32 *)s0); \
func_80148038(s0, 0x18000); \
func_80147460(s0); \
{ \
u8 v = *(u8 *)(s0 + 0xDE); \
*(u8 *)(s0 + 0xDE) = v + 0xFF; \
if (v == 0) { \
*(u8 *)(s0 + 0xDE) = 0x10; \
func_801472C8((s32 *)s0); \
func_801470B4(s0); \
func_8015369C(s0); \
func_80146CA0((void *)s0); \
} \
} \
}
#define DEFINE_func_8012AE00() \
extern s32 *D_80126B78; \
extern s32 *D_80126B90; \
extern s32 D_80126B58; \
extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); \
extern s32 func_80013478(s32 a0, s32 a1); \
s32 func_8012AE00(s32 a0) { \
s16 sp10[3]; \
s16 sp18[4]; \
struct V8 sp20; \
s32 r1, r2; \
s32 base; \
s32 p18 = (s32)sp18; \
sp10[0] = *(u16 *)(a0 + 0x3A); \
sp10[1] = *(u16 *)(a0 + 0x3E); \
sp10[2] = *(u16 *)(a0 + 0x42); \
sp18[0] = *(u16 *)(a0 + 0x6); \
sp18[1] = *(u16 *)(a0 + 0xA); \
sp18[2] = *(u16 *)(a0 + 0xE); \
base = (s32)&D_80126B58; \
sp20 = *(struct V8 *)sp18; \
if (func_80135888((s32)D_80126B78, (s32)D_80126B90, (s32)sp10, (s32)&sp20) == 0) { \
return 0; \
} \
base += 4; \
r1 = func_80013478(base, (s32)sp10); \
r2 = func_80013478(base, p18); \
if (r1 < r2) { \
return 0; \
} \
*(s32 *)(a0 + 0x4) = *(s32 *)(a0 + 0x38); \
*(s32 *)(a0 + 0x8) = *(s32 *)(a0 + 0x3C); \
*(s32 *)(a0 + 0xC) = *(s32 *)(a0 + 0x40); \
return 1; \
}
#define DEFINE_func_80171520() \
extern void *D_8011F738; \
extern struct B16 D_800A5E88; \
extern struct B16 D_800A5E98; \
extern struct B16 D_800A5EA8; \
extern void func_801719A4(int a0, int a1); \
extern s32 func_80171990(u8 *a0); \
extern void func_8017162C(void *a0); \
void func_80171520(s32 a0) { \
u8 *v1; \
s32 p; \
func_801719A4(a0, 1); \
v1 = (u8 *)D_8011F738; \
*(struct B16 *)(v1 + 0x0) = D_800A5E88; \
*(struct B16 *)(v1 + 0x10) = D_800A5E98; \
*(struct B16 *)(v1 + 0x20) = D_800A5EA8; \
v1[0xE] = 0; \
v1[0xD] = 0; \
v1[0xC] = 0; \
v1[0x1E] = 0; \
v1[0x1D] = 0; \
v1[0x1C] = 0; \
v1[0x2E] = 0; \
v1[0x2D] = 0; \
v1[0x2C] = 0; \
p = *(s32 *)(a0 + 0x20); \
*(u16 *)(p + 0x2C) = *(u16 *)(p + 0x2C) | 0x20; \
*(s32 *)(*(s32 *)(a0 + 0x20) + 0x80) = (s32)v1; \
func_80171990((u8 *)a0); \
func_8017162C((void *)a0); \
}
#define DEFINE_func_8012AF0C() \
s32 func_8012AF0C(s32 a0, s32 a1) { \
s32 s1 = a0; \
s32 s2 = a1; \
s16 spA[4]; /* sp+0x10 */ \
struct M8012AF0C spB; /* sp+0x18 (src) */ \
struct M8012AF0C spC; /* sp+0x20 (dst) */ \
s16 spD[4]; /* sp+0x28 */ \
spA[0] = *(u16 *)(s1 + 0x3A); \
spA[1] = *(u16 *)(s1 + 0x3E); \
spA[2] = *(u16 *)(s1 + 0x42); \
spB.a = *(u16 *)(s1 + 0x6); \
spB.b = *(u16 *)(s1 + 0xA); \
spB.c = *(u16 *)(s1 + 0xE); \
spC = spB; \
if (func_80135888(*(s32 *)(s2 + 0x20), *(s32 *)(s2 + 0x58), (s32)spA, (s32)&spC) != 0) { \
s32 r0, r1; \
spD[0] = *(u16 *)(s2 + 0x6); \
spD[1] = *(u16 *)(s2 + 0xA); \
spD[2] = *(u16 *)(s2 + 0xE); \
r0 = func_800132BC((s32)spD, (s32)spA); \
r1 = func_800132BC((s32)spD, (s32)&spB); \
if (r0 < r1) return 0; \
*(s32 *)(s1 + 0x4) = *(s32 *)(s1 + 0x38); \
*(s32 *)(s1 + 0x8) = *(s32 *)(s1 + 0x3C); \
*(s32 *)(s1 + 0xC) = *(s32 *)(s1 + 0x40); \
return 1; \
} \
return 0; \
}
#define DEFINE_func_80138D58() \
extern void func_8013A9F8(s32 a0, s32 a1); \
void func_80138D58(s32 a0, u16 a1) { \
if (*(s32 *)(a0 + 0x40) == 0) { \
return; \
} \
if ((u32)(*(u16 *)(a0 + 0x18) - 2) >= 5) { \
return; \
} \
if ((u32)(u16)(a1 - 2) >= 5) { \
return; \
} \
*(s16 *)(a0 + 0x18) = a1; \
func_8013A9F8(*(s32 *)(a0 + 0x40), a1); \
}
#define DEFINE_func_80146014() \
extern void MoveImage(void *a0, s32 a1, s32 a2); \
void func_80146014(s32 a0) { \
s32 *r = (s32 *)a0; \
if (r[3] == 0) { \
return; \
} \
do { \
MoveImage(r, r[2], r[3]); \
r += 4; \
} while (r[3] != 0); \
}
#define DEFINE_func_801582C0() \
extern u8 D_800D52A8[]; \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_801585A4(s32 *a0); \
extern void func_8016706C(s32 a0); \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_80147324(s32 a0); \
extern void func_80146CA0(void *a0); \
void func_801582C0(void *a0) { \
s32 s0 = (s32)a0; \
*(s32 *)(s0 + 0x44) = *(s32 *)(s0 + 0x44) | 2; \
*(s8 *)(s0 + 0x1AA) = 0x10; \
func_80154274((s32 *)s0, (s32)D_800D52A8); \
func_80154A74(s0, 0x15); \
func_801585A4((s32 *)s0); \
func_8016706C(5); \
func_80146994(4, s0, 8, 0); \
func_80147324(0x446); \
func_80146CA0((void *)s0); \
}
#define DEFINE_func_80139DF4() \
extern void func_80139A8C(s32 a0); \
void func_80139DF4(s32 a0) { \
s32 c; \
s32 v; \
c = *(u8 *)(a0 + 0xC); \
if (c != 0) { \
c = c - 1; \
*(s8 *)(a0 + 0xC) = (s8)c; \
if ((c & 0xFF) != 0) { \
goto calls; \
} \
} \
*(s16 *)(a0 + 0x4) = 2; \
return; \
calls: \
func_80139A8C(a0); \
if (*(s32 *)(a0 + 0x8) & 0x20) { \
*(s16 *)(a0 + 0x4) = 2; \
v = *(s32 *)(a0 + 0x8); \
*(s8 *)(a0 + 0xC) = 0; \
if ((v & 0x20000) == 0) { \
*(s32 *)(a0 + 0x8) = v & -0x21; \
} \
} \
}
#define DEFINE_func_8016E3CC() \
extern void func_800D20C0(void *a0, void *a1, s32 a2); \
extern void func_800D23D0(void *a0); \
extern void RotMatrixYXZ(void *a0, void *a1); \
void func_8016E3CC(s32 a0) { \
s16 src[4]; \
u8 mtx[8]; \
s32 p; \
p = *(s32 *)(a0 + 0x34); \
src[0] = *(u16 *)(p + 0x6); \
src[1] = *(u16 *)(p + 0xA) - 0x28; \
src[2] = *(u16 *)(p + 0xE); \
func_800D20C0((void *)src, (void *)mtx, 6); \
*(s16 *)(a0 + 0x6) = src[0]; \
*(s16 *)(a0 + 0xA) = src[1]; \
*(s16 *)(a0 + 0xE) = src[2]; \
func_800D23D0((void *)mtx); \
RotMatrixYXZ((void *)mtx, (void *)(a0 + 0x38)); \
}
#define DEFINE_func_8012F374() \
extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); \
extern s16 D_80126CB4; \
extern s16 D_80126CB6; \
extern s16 D_80126CB8; \
void func_8012F374(s32 a0, s32 a1) { \
s32 s0 = a1; \
s32 in[3]; \
s32 out[3]; \
s32 mtx; \
mtx = *(s32 *)(a0 + 0x20); \
in[0] = D_80126CB4 - *(s32 *)(mtx + 0x48); \
in[1] = D_80126CB6 - *(s32 *)(mtx + 0x4C); \
in[2] = D_80126CB8 - *(s32 *)(mtx + 0x50); \
ApplyTransposeMatrixLV((void *)(mtx + 0x34), in, out); \
*(s16 *)(s0 + 0x0) = out[0]; \
*(s16 *)(s0 + 0x2) = out[1]; \
*(s16 *)(s0 + 0x4) = out[2]; \
}
#define DEFINE_func_801308DC() \
extern void func_8002D4C8(s32 a0, s32 a1); \
extern void func_80131CA8(int a0, int a1); \
void func_801308DC(s32 a0) { \
*(u8 *)(a0 + 0xC1) = 0xE; \
if ((*(s32 *)(a0 + 0xB4) & 0x8000) != 0) { \
*(s32 *)(a0 + 0x1C) = 0x10; \
*(s16 *)(a0 + 0xAA) = 0; \
*(s16 *)(a0 + 0x5C) = 0; \
*(s16 *)(a0 + 0x98) = 0; \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x18) = 0x400; \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x1C) = 0x400; \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x1A) = 0x200; \
*(u16 *)(*(s32 *)(a0 + 0x20) + 0x2C) |= 0x10; \
func_8002D4C8(0x68A, 0); \
} \
func_80131CA8(a0, 0x2A); \
}
#define DEFINE_func_8015F080() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_80149048(s32 *a0); \
extern void func_80156648(s32 *a0); \
extern void func_80149020(s32 *a0); \
extern void func_80146CA0(void *a0); \
void func_8015F080(s32 a0) { \
func_80154150(a0, 0x17); \
func_80154A74(a0, 0x15); \
func_80146994(0x5, a0, 0x7, 0); \
*(s32 *)(a0 + 0x238) = -1; \
*(s32 *)(a0 + 0x234) = 0; \
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) & -2; \
func_80149048((s32 *)a0); \
func_80156648((s32 *)a0); \
*(s8 *)(a0 + 0x1AA) = 8; \
func_80149020((s32 *)a0); \
*(s16 *)(a0 + 0xF6) = 0x19EB; \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_8012A110() \
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; \
void func_8012A110(void) { \
D_80120204 = 0x1F4; \
D_80120200 = 0x1F4; \
D_8012020C = 0x5DC; \
D_80120208 = 0x5DC; \
D_80120218 = 0x238; \
D_80120210 = 0x238; \
D_8012021A = 0; \
D_80120212 = 0; \
D_8012021C = 0; \
D_80120214 = 0; \
D_80120226 = 0; \
D_80120220 = 0; \
D_80120228 = 0; \
D_80120222 = 0; \
D_8012022A = 0; \
D_80120224 = 0; \
D_80120294 = 0; \
D_80120298 = 0; \
D_8012029A = 0; \
}
#define DEFINE_func_801653F4() \
extern s32 func_80165624(s32 a0); \
extern u8 D_80078EC1; \
extern u8 D_80078EC5; \
extern s16 currentLocationId; \
void func_801653F4(s32 a0) { \
s32 loc; \
s32 v; \
loc = currentLocationId; \
D_80078EC5 = 0; \
v = D_80078EC1 & 0x7F; \
D_80078EC1 = v; \
if (func_80165624(a0) != 0) { \
D_80078EC5 = 0x80; \
return; \
} \
if (D_80078EC1 != 0x1A) { \
return; \
} \
if ((u32)(loc - 0x305C) < 2) return; \
if ((u32)(loc - 0x305E) < 2) return; \
if ((u32)(loc - 0x3060) < 2) return; \
if ((u32)(loc - 0x3062) < 2) return; \
if ((u32)(loc - 0x3064) < 2) return; \
if (loc == 0x3066) return; \
D_80078EC5 = 0x80; \
}
#define DEFINE_func_80129010() \
extern s16 D_8011DB2C; \
extern s16 D_8011DB30; \
extern s32 D_80126AEC; \
void func_80129010(void) { \
s32 i; \
s32 s1; \
s32 idx; \
void (*fp)(s32); \
s1 = (s32)&D_8011DB30; \
if (D_8011DB2C == 0) { \
return; \
} \
i = 0; \
do { \
idx = *(u16 *)s1; \
if (idx != 0) { \
fp = (void (*)(s32))(*(s32 *)((idx << 2) + (*(s32 *)&D_80126AEC))); \
fp(s1); \
if (*(s32 *)(s1 + 0x20) != 0) { \
*(s16 *)(*(s32 *)(s1 + 0x20) + 0x8) = *(u16 *)(s1 + 0x6); \
*(s16 *)(*(s32 *)(s1 + 0x20) + 0xA) = *(u16 *)(s1 + 0xA); \
*(s16 *)(*(s32 *)(s1 + 0x20) + 0xC) = *(u16 *)(s1 + 0xE); \
} \
} \
i++; \
s1 += 0x38; \
} while (i < 0x80); \
}
#define DEFINE_func_80138AB4() \
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); \
void func_80138AB4(s32 a0) { \
u8 sp10[8]; \
s32 s0 = a0; \
s32 s1; \
s32 a0v; \
s1 = func_80139D04((s32)sp10, (u16)D_80127540[*(u16 *)(s0 + 0x48)]) & 0xFFFF; \
do { \
s32 v1 = *(u16 *)(s0 + 0x44); \
a0v = 0; \
if ((s32)v1 < s1) { \
s32 a1v = (sp10[v1] + 0x30) & 0xFF; \
a0v = func_80138DE0(s0, a1v, 0); \
if (*(s32 *)(s0 + 0x8) & 0x80220) { \
/* a0v stays */ \
} else { \
a0v = 0; \
} \
} else { \
s32 t = *(u16 *)(s0 + 0x48); \
if ((u32)t < 3) { \
*(s16 *)(s0 + 0x48) = t + 1; \
} \
*(s16 *)(s0 + 0x4) = 2; \
} \
} while (a0v != 0); \
func_80139B18(s0); \
}
#define DEFINE_func_8014B350() \
extern u8 D_80078E78[]; \
extern s16 D_80078E96; \
extern s32 D_80078E94; \
extern u8 D_80062BF4[]; \
extern s32 func_8016F1C4(void); \
extern void func_8014BC80(s32 a0, s32 a1); \
extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); \
extern void func_80019064(void *a0); \
void func_8014B350(s32 a0) { \
s32 s0 = a0; \
s32 s1 = (s32)&D_80078E78; \
s32 v0; \
s32 v1; \
u16 buf[4]; \
if (func_8016F1C4() != 0) { \
return; \
} \
v1 = *(u16 *)(s0 + 0x0); \
if (v1 == 0x1E || v1 == 0x1A) { \
return; \
} \
if (D_80078E96 & 0x8000) { \
if (*(s32 *)(s0 + 0x44) & 0x80) { \
D_80078E94 = D_80078E94 + 0xAAA8; \
} else { \
D_80078E94 = D_80078E94 + 0x1555; \
} \
v0 = *(u16 *)(s1 + 0x1E) & 0x7FFF; \
if (v0 < 0x3D) { \
} else { \
*(s32 *)(s1 + 0x1C) = 0x80000000; \
func_8014BC80(s0, 8); \
buf[0] = *(u16 *)(s0 + 0x6); \
buf[1] = *(u16 *)(s0 + 0xA) - 0x20; \
buf[2] = *(u16 *)(s0 + 0xE); \
func_8014AD30(s0, buf, 6, 0); \
func_80019064(&D_80062BF4); \
} \
} \
if (*(s16 *)(s1 + 0x56) & 0x8000) { \
if (*(s32 *)(s0 + 0x44) & 0x80) { \
*(s32 *)(s1 + 0x54) = *(s32 *)(s1 + 0x54) + 0xAAA8; \
} else { \
*(s32 *)(s1 + 0x54) = *(s32 *)(s1 + 0x54) + 0x1555; \
} \
v0 = *(u16 *)(s1 + 0x56) & 0x7FFF; \
if (v0 < 0x3D) { \
} else { \
*(s32 *)(s1 + 0x54) = 0x80000000; \
} \
} \
}
#define DEFINE_func_80143640() \
extern u8 *func_8012913C(s32 a0); \
extern s32 rand(void); \
void func_80143640(s32 a0, s32 a1, s32 a2, s32 a3) { \
u8 *s0; \
s32 r; \
s32 d0, d1, d2; \
s32 t; \
s32 pad[6]; \
(void)pad; \
if ((*(u16 *)(a0 + 0) & (s16)((1 << a3) - 1)) == 0) { \
s0 = func_8012913C(0x22); \
if (s0 != 0) { \
r = rand(); \
d0 = *(s16 *)(a2 + 0); \
*(s16 *)(s0 + 6) = (*(u16 *)(a1 + 0) + (r % (d0 << 1))) - d0; \
r = rand(); \
d1 = *(s16 *)(a2 + 2); \
*(s16 *)(s0 + 0xA) = (*(u16 *)(a1 + 2) + (r % (d1 << 1))) - d1; \
r = rand(); \
d2 = *(s16 *)(a2 + 4); \
t = *(u16 *)(a1 + 4); \
*(s32 *)(s0 + 0x18) = 0; \
*(s32 *)(s0 + 0x14) = 0; \
*(s32 *)(s0 + 0x10) = 0; \
*(s16 *)(s0 + 0xE) = (t + (r % (d2 << 1))) - d2; \
*(s16 *)(s0 + 0x34) = *(u16 *)(a1 + 6); \
*(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) = 0xC008; \
} \
} \
*(u16 *)(a0 + 0) += 1; \
}
#define DEFINE_func_801437D8() \
extern u8 *func_8012913C(s32 a0); \
extern s32 rand(void); \
void func_801437D8(s32 a0, s32 a1, s32 a2, s32 a3) { \
u8 *s0; \
s32 r; \
s32 d0, d1, d2; \
s32 t; \
s32 pad[6]; \
(void)pad; \
if ((*(u16 *)(a0 + 0) & (s16)((1 << a3) - 1)) == 0) { \
s0 = func_8012913C(0x23); \
if (s0 != 0) { \
r = rand(); \
d0 = *(s16 *)(a2 + 0); \
*(s16 *)(s0 + 6) = (*(u16 *)(a1 + 0) + (r % (d0 << 1))) - d0; \
r = rand(); \
d1 = *(s16 *)(a2 + 2); \
*(s16 *)(s0 + 0xA) = (*(u16 *)(a1 + 2) + (r % (d1 << 1))) - d1; \
r = rand(); \
d2 = *(s16 *)(a2 + 4); \
t = *(u16 *)(a1 + 4); \
*(s32 *)(s0 + 0x18) = 0; \
*(s32 *)(s0 + 0x14) = 0; \
*(s32 *)(s0 + 0x10) = 0; \
*(s16 *)(s0 + 0xE) = (t + (r % (d2 << 1))) - d2; \
*(s16 *)(s0 + 0x34) = *(u16 *)(a1 + 6); \
*(u16 *)(*(s32 *)(s0 + 0x20) + 0x2C) = 0xC008; \
} \
} \
*(u16 *)(a0 + 0) += 1; \
}
#define DEFINE_func_80143EBC() \
extern void func_80016714(void *a0, s32 a1); \
extern void func_8012C218(void *a0); \
extern s32 func_80134510(s32 arg); \
extern s32 ratan2(s32 a0, s32 a1); \
extern s32 func_8004787C(s32 a0); \
extern s16 D_801152AC; \
extern s16 D_801152AA; \
extern u8 D_801152A8[]; \
void func_80143EBC(s32 a0) { \
s32 s1 = *(s32 *)(a0 + 0x64); \
s32 s0 = *(s32 *)(a0 + 0xCC); \
s16 sp[3]; \
s32 v0; \
if (*(s16 *)(s1 + 0x36) != *(s16 *)(a0 + 0xFC)) { \
if (a0 == 0) { \
return; \
} \
func_80016714((void *)s0, 0x38); \
func_8012C218((void *)a0); \
return; \
} \
sp[0] = *(u16 *)(s1 + 6); \
sp[1] = *(u16 *)(s1 + 0xA) - 0x10; \
sp[2] = *(u16 *)(s1 + 0xE); \
if (func_80134510((s32)&sp[0]) == 0) { \
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) | 0x80000000; \
return; \
} \
*(s16 *)(s0 + 8) = sp[0]; \
*(s16 *)(s0 + 0xA) = sp[1]; \
*(s16 *)(s0 + 0xC) = sp[2]; \
*(s32 *)(s0 + 4) = *(s32 *)(s0 + 4) & 0x7FFFFFFF; \
if (*(s16 *)(a0 + 0x70) == 1) { \
*(s16 *)(s0 + 0x10) = 0x400; \
*(s16 *)(s0 + 0x12) = 0; \
} else { \
*(s16 *)(s0 + 0x10) = ratan2(D_801152AC, D_801152AA) + 0x400; \
*(s16 *)(s0 + 0x12) = ratan2(*(s16 *)D_801152A8, D_801152AA); \
} \
v0 = *(s32 *)(s1 + 0x20); \
*(s16 *)(s0 + 0x14) = -(*(u16 *)(v0 + 0x12)); \
v0 = *(s32 *)(s1 + 0x20); \
*(s16 *)(s0 + 0x18) = func_8004787C((*(u16 *)(v0 + 0x14) & 0x3FF) << 1) + 0x4000; \
v0 = *(s32 *)(s1 + 0x20); \
*(s16 *)(s0 + 0x1A) = func_8004787C((*(u16 *)(v0 + 0x10) & 0x3FF) << 1) + 0x4000; \
}
#define DEFINE_func_80162B1C() \
extern void func_80162CC4(void); \
extern s32 D_80126D40; \
extern s32 D_8011F9D0; \
void func_80162B1C(void) { \
s32 s3 = *(s32 *)&D_80126D40; \
s32 s2 = 0; \
s32 s1 = 0; \
s32 s0; \
s32 a0; \
s32 p; \
s32 fp; \
void (*f)(s32); \
do { \
s0 = s1 + (s32)&D_8011F9D0; \
*(s16 *)(s0 + 0x44) = *(u16 *)(s0 + 0x6); \
*(s16 *)(s0 + 0x46) = *(u16 *)(s0 + 0xA); \
*(s16 *)(s0 + 0x48) = *(u16 *)(s0 + 0xE); \
if (*(u16 *)(s0 + 0x0) != 0) { \
fp = *(s32 *)((*(u16 *)(s0 + 0x0) << 2) + s3 - 4); \
if (fp != 0) { \
f = (void (*)(s32))fp; \
f(s0); \
} else { \
((void (*)(s32))func_80162CC4)(s0); \
} \
a0 = *(s32 *)(s0 + 0x20); \
if (a0 != 0) { \
if (*(u16 *)a0 == 1) { \
s32 b0 = *(u16 *)(s0 + 0x6); \
*(s16 *)(a0 + 0x8) = b0; \
*(s32 *)(a0 + 0x48) = (s16)b0; \
b0 = *(u16 *)(s0 + 0xA); \
*(s16 *)(a0 + 0xA) = b0; \
*(s32 *)(a0 + 0x4C) = (s16)b0; \
{ \
s32 m = *(u16 *)(a0 + 0x2C) | 1; \
s32 c0 = *(u16 *)(s0 + 0xE); \
*(s16 *)(a0 + 0xC) = c0; \
*(s16 *)(a0 + 0x2C) = m; \
*(s32 *)(a0 + 0x50) = (s16)c0; \
} \
} else if ((p = *(s32 *)(a0 + 0x34)) != 0) { \
s32 b0 = *(u16 *)(s0 + 0x6); \
*(s16 *)(a0 + 0x8) = b0; \
*(s32 *)(p + 0x14) = (s16)b0; \
b0 = *(u16 *)(s0 + 0xA); \
*(s16 *)(a0 + 0xA) = b0; \
*(s32 *)(*(s32 *)(a0 + 0x34) + 0x18) = (s16)b0; \
b0 = *(u16 *)(s0 + 0xE); \
*(s16 *)(a0 + 0xC) = b0; \
*(s32 *)(*(s32 *)(a0 + 0x34) + 0x1C) = (s16)b0; \
} else { \
*(s16 *)(a0 + 0x8) = *(u16 *)(s0 + 0x6); \
*(s16 *)(a0 + 0xA) = *(u16 *)(s0 + 0xA); \
*(s16 *)(a0 + 0xC) = *(u16 *)(s0 + 0xE); \
} \
} \
} \
s2 += 1; \
s1 += 0x68; \
} while (s2 < 0x14); \
}
#define DEFINE_func_80147054() \
s32 func_80147054(void *a0) { \
s32 r = 1; \
*(signed char *)((char *)a0 + 0x4C) = r; \
return r; \
}
#define DEFINE_func_801470A0() \
s32 func_801470A0(void *a0) { \
s32 r = 1; \
*(signed char *)((char *)a0 + 0x220) = r; \
return r; \
}
#define DEFINE_func_8012DFBC() \
void func_8012DFBC(void) { \
char buf[16]; \
}
#define DEFINE_func_80165900() \
extern s8 D_80078EC4; \
s32 func_80165900(void) { \
return (unsigned char)D_80078EC4; \
}
#define DEFINE_func_80129428() \
extern s16 D_80114EE0; \
void func_80129428(void) { \
D_80114EE0 = 1; \
}
#define DEFINE_func_8012AD6C() \
void func_8012AD6C(void *a0) { \
*(short *)((char *)a0 + 0x34) = *(unsigned short *)((char *)a0 + 0x34) + 1; \
}
#define DEFINE_func_8012BF54() \
void func_8012BF54(void *a0) { \
*(short *)((char *)a0 + 0x5C) = *(unsigned short *)((char *)a0 + 0x5C) | 0x8000; \
}
#define DEFINE_func_801472DC() \
extern void *D_8012707C; \
void func_801472DC(void) { \
D_8012707C = (void *)0x451; \
}
#define DEFINE_func_801658EC() \
extern s8 D_80078EC4; \
void func_801658EC(void) { \
D_80078EC4 = 1; \
}
#define DEFINE_func_80148D24() \
s32 func_80148D24(void *a0, int a1) { \
int p = *(int *)((char *)a0 + 0x20); \
*(short *)(p + 0x12) = (a1 - 0x800) & 0xFFF; \
return 1; \
}
#define DEFINE_func_8012A304() \
extern s8 D_801152C0; \
extern s16 D_80127080; \
extern s16 D_801152C2; \
void func_8012A304(s32 a0, s32 a1) { \
D_801152C0 = 1; \
D_80127080 = a0; \
D_801152C2 = a1; \
}
#define DEFINE_func_80147264() \
extern s16 D_80126BB8; \
extern s16 D_80126BBA; \
extern s16 D_80126BBC; \
void func_80147264(s32 a0) { \
D_80126BB8 = *(u16 *)(a0 + 0x0); \
D_80126BBA = *(u16 *)(a0 + 0x2); \
D_80126BBC = *(u16 *)(a0 + 0x4); \
}
#define DEFINE_func_8016F680() \
extern void func_8016F350(void); \
extern void func_80171928(void *a0); \
void func_8016F680(void *a0) { \
func_8016F350(); \
func_80171928(a0); \
}
#define DEFINE_func_8016F6B0() \
extern void func_8016F330(void); \
extern void func_80171928(void *a0); \
void func_8016F6B0(void *a0) { \
func_8016F330(); \
func_80171928(a0); \
}
#define DEFINE_func_8015BDD0() \
extern void func_80147078(s32 *a0, s16 a1); \
extern s32 func_8015BE94(void); \
void func_8015BDD0(s32 *a0) { \
func_80147078(a0, 3); \
((s32 (*)(void *))func_8015BE94)(a0); \
}
#define DEFINE_func_8014C050() \
extern s32 D_8011D030; \
s32 func_8014C050(s32 a0, s32 a1) { \
u32 i = 0; \
s32 p = (s32)&D_8011D030; \
for (; i < 0x1E; i++) { \
if (*(u16 *)p == a1) { \
return p; \
} \
p += 0x58; \
} \
return 0; \
}
#define DEFINE_func_8014BD24() \
extern s16 D_80078EB8; \
extern u16 D_80078EB6; \
void func_8014BD24(s32 a0, s32 a1) { \
u16 v; \
v = *(u16 *)&D_80078EB8 + a1; \
D_80078EB8 = v; \
if (D_80078EB6 < v) { \
D_80078EB8 = D_80078EB6; \
} \
}
#define DEFINE_func_80149AD4() \
extern void func_8015DAC4(s32 *a0); \
extern void func_8015554C(s32 *a0); \
void func_80149AD4(s32 *a0) { \
s32 pad[6]; \
(void)pad; \
if (*(s32 *)((s32)a0 + 0x178) != 0) { \
func_8015DAC4(a0); \
} else { \
*(s8 *)((s32)a0 + 0x1AA) = 1; \
func_8015554C(a0); \
} \
}
#define DEFINE_func_80149B14() \
extern void func_8015DAC4(s32 *a0); \
extern void func_8015554C(s32 *a0); \
void func_80149B14(s32 *a0) { \
s32 pad[6]; \
(void)pad; \
if (*(s32 *)((s32)a0 + 0x178) != 0) { \
func_8015DAC4(a0); \
} else { \
func_8015554C(a0); \
} \
}
#define DEFINE_func_80149BAC() \
extern void func_8015DE24(s32 *a0); \
extern void func_80157510(s32 *a0); \
void func_80149BAC(s32 *a0) { \
if (*(s32 *)((s32)a0 + 0x178) != 0) { \
func_8015DE24(a0); \
} else { \
*(s8 *)((s32)a0 + 0x1AA) = 1; \
func_80157510(a0); \
} \
}
#define DEFINE_func_8014BC80() \
extern s16 D_80078EB4; \
extern u8 D_800B9A17; \
void func_8014BC80(s32 a0, s32 a1) { \
s32 v; \
v = *(u16 *)&D_80078EB4; \
if (v < a1) { \
D_80078EB4 = 0; \
D_800B9A17 = 0; \
} else { \
D_80078EB4 = v - a1; \
} \
}
#define DEFINE_func_8014C088() \
extern s32 D_8011F9D0; \
s32 func_8014C088(s32 a0, s32 a1) { \
u8 *p; \
u8 *end; \
p = (u8 *)&D_8011F9D0; \
end = p + 0xC30; \
if (p >= end) { \
return 0; \
} \
do { \
if (*(u16 *)p == a1) { \
return (s32)p; \
} \
p += 0x68; \
} while (p < end); \
return 0; \
}
#define DEFINE_func_80169FE0() \
extern s32 func_80128ED8(void *a0, void *a1); \
extern void func_80146C3C(void); \
void func_80169FE0(s32 a0) { \
if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { \
((void (*)(s32))func_80146C3C)(a0); \
} \
}
#define DEFINE_func_8016DEE0() \
extern s32 func_80128ED8(void *a0, void *a1); \
extern void func_80146C3C(void); \
void func_8016DEE0(s32 a0) { \
if (func_80128ED8((void *)*(s32 *)(a0 + 0x20), (void *)(a0 + 0x24)) != 0) { \
((void (*)(s32))func_80146C3C)(a0); \
} \
}
#define DEFINE_func_80149A64() \
extern s32 func_80149AA8(s32 *a0); \
extern s32 func_80149B54(s32 *a0); \
s32 func_80149A64(s32 *a0) { \
if (func_80149AA8(a0) || func_80149B54(a0)) { \
return 1; \
} \
return 0; \
}
#define DEFINE_func_8012BCCC() \
extern s32 func_80013478(s32 a0, s32 a1); \
extern s16 D_80126CBA; \
extern s32 D_80126B58; \
s32 func_8012BCCC(s32 a0) { \
s32 *p = &D_80126B58; \
if (D_80126CBA != 0) { \
return 0x7FFFFFFF; \
} \
return func_80013478(a0 + 4, (s32)p + 0x15C); \
}
#define DEFINE_func_80146AB4() \
extern void func_80146B9C(void *a0); \
void func_80146AB4(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; \
func_80146B9C(sp); \
}
#define DEFINE_func_8014A4B4() \
extern s32 func_80029178(s32 a0); \
s32 func_8014A4B4(void *a0) { \
if ((func_80029178(0x1E) & 0xFF) != 0) { \
u32 v = *(u16 *)((s32)a0 + 0xAC) & 0x40; \
return v != 0; \
} \
return 0; \
}
#define DEFINE_func_8014ACE8() \
extern void func_8014AD30(s32 a0, u16 *a1, s32 a2, s32 a3); \
void func_8014ACE8(void *a0, s32 a1, s32 a2) { \
u16 sp[4]; \
sp[0] = *(u16 *)((s32)a0 + 0x6); \
sp[1] = *(u16 *)((s32)a0 + 0xA) - 0x20; \
sp[2] = *(u16 *)((s32)a0 + 0xE); \
func_8014AD30((s32)a0, sp, a1, a2); \
}
#define DEFINE_func_8012A094() \
extern void *memcpy(void *, const void *, unsigned int); \
void func_8012A094(s32 a0) { \
*(s32 *)(a0 + 0x8) = *(s32 *)(a0 + 0xC); \
*(s32 *)(a0 + 0x10) = *(s32 *)(a0 + 0x14); \
memcpy((void *)(a0 + 0x18), (void *)(a0 + 0x20), 8); \
*(u16 *)(a0 + 0x28) = *(u16 *)(a0 + 0x2E); \
*(u16 *)(a0 + 0x2A) = *(u16 *)(a0 + 0x30); \
*(u16 *)(a0 + 0x2C) = *(u16 *)(a0 + 0x32); \
}
#define DEFINE_func_80139634() \
extern void func_80059888(void *a0, s32 a1, s32 a2, s32 a3); \
void func_80139634(void *a0) { \
s16 sp[4]; \
sp[0] = *(u16 *)((u8 *)a0 + 0x38); \
sp[1] = *(u16 *)((u8 *)a0 + 0x3A); \
sp[2] = 0x38; \
sp[3] = 0x30; \
func_80059888(&sp[0], 0, 0, 0); \
}
#define DEFINE_func_80162120() \
extern s32 func_800291DC(s32); \
extern s32 func_800D0D7C(s32, s32); \
extern void func_800291C8(s32, s32); \
void func_80162120(void) { \
s32 v0; \
if ((s16)func_800291DC(8) == 0) { \
v0 = func_800D0D7C(0, 1); \
func_800291C8(8, (s16)(v0 | 0x8000)); \
} \
}
#define DEFINE_func_8012A860() \
extern int func_8012ACE0(void *a0); \
extern void func_8012AAAC(void); \
void func_8012A860(void *a0, int a1) { \
int v0; \
register char *p asm("$4"); \
*(int *)((char *)a0 + 0x90) = a1; \
v0 = func_8012ACE0(a0); \
p = (char *)a0; \
*(unsigned short *)(p + 0x72) = *(unsigned short *)(p + 0x72) | 0x200; \
*(int *)(p + 0x94) = v0 - 1; \
*(int *)(p + 0x9C) = 0; \
*(short *)(p + 0x9A) = 0; \
func_8012AAAC(); \
}
#define DEFINE_func_8012E57C() \
extern u8 D_801202A0[]; \
s32 func_8012E57C(s32 a0, s32 a1) { \
u8 *p = D_801202A0; \
u8 *end = D_801202A0 + 0x6480; \
if (p != end) { \
s32 key = (s16)a1; \
do { \
if (*(u16 *)(p + 0x0) == a0) { \
if (*(s16 *)(p + 0x70) == key) { \
return (s32)p; \
} \
} \
p += 0x10C; \
} while (p != end); \
} \
return 0; \
}
#define DEFINE_func_80146D30() \
extern s32 D_80127090; \
extern s32 D_80127094; \
extern s32 D_80127098; \
void func_80146D30(s32 a0) { \
s32 *p = &D_80127090; \
*(s32 *)(a0 + 0x10) = *p; \
*(s32 *)(a0 + 0x14) = D_80127094; \
*(s32 *)(a0 + 0x18) = D_80127098; \
*p = 0; \
D_80127094 = 0; \
D_80127098 = 0; \
}
#define DEFINE_func_8014C0C8() \
extern u8 D_801202A0[]; \
s32 func_8014C0C8(s32 a0_unused, s32 a1, s32 a2) { \
s32 i = 0; \
s32 key = (s16)a2; \
u8 *p = D_801202A0; \
do { \
if (*(u16 *)(p + 0x0) == a1) { \
if (*(s16 *)(p + 0xFC) == key) { \
return (s32)p; \
} \
} \
i += 1; \
p += 0x10C; \
} while ((u32)i < 0x60); \
return 0; \
}
#define DEFINE_func_8014C918() \
extern u8 D_801151F0[]; \
s32 func_8014C918(s32 a0, s32 a1) { \
s32 v1; \
s32 ret; \
if (a1 == 0x18) { \
return 0x8; \
} \
v1 = 0; \
goto search; \
found: \
return ret; \
search: \
do { \
ret = v1 & 0xFF; \
if (D_801151F0[ret] == a1) { \
goto found; \
} \
v1 += 1; \
} while ((u32)(v1 & 0xFF) < 0x8); \
return 0; \
}
#define DEFINE_func_801552F4() \
extern s32 D_800DE2A4[]; \
void func_801552F4(s32 a0) { \
s32 *p = D_800DE2A4; \
s32 v0 = *p; \
if (v0 != 0) { \
do { \
v0 &= 0x80FFFFFF; \
*p = v0; \
p += 1; \
v0 = *p; \
} while (v0 != 0); \
} \
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) | 0x30000000; \
}
#define DEFINE_func_80155344() \
extern s32 D_800DE2A4[]; \
void func_80155344(s32 a0) { \
s32 *p = D_800DE2A4; \
s32 v0 = *p; \
if (v0 != 0) { \
do { \
v0 |= 0x1000000; \
*p = v0; \
p += 1; \
v0 = *p; \
} while (v0 != 0); \
} \
*(s32 *)(a0 + 0x44) = *(s32 *)(a0 + 0x44) & 0xCFFFFFFF; \
}
#define DEFINE_func_8014A6C4() \
extern s32 func_80029178(s32 a0); \
s32 func_8014A6C4(s32 a0) { \
s32 r; \
if ((func_80029178(0x1F) & 0xFF) == 0) { \
r = 0; \
} else if (*(s32 *)(a0 + 0x44) & 0x4) { \
r = 0; \
} else { \
r = *(u8 *)(a0 + 0x1BE) == 0; \
} \
return r; \
}
#define DEFINE_func_8015AB7C() \
extern u8 D_800D48DC; \
s32 func_8015AB7C(s32 a0) { \
u8 v1; \
if (*(s32*)(a0 + 0xB4) == (s32)&D_800D48DC) { \
v1 = *(u8*)(a0 + 0xDC); \
if (v1 < 6) { \
return 0x10; \
} \
if (v1 < 0xB) { \
return 0x12; \
} \
if (v1 < 0x10) { \
return 0x7; \
} \
return 0x9; \
} \
return *(u8*)(a0 + 0xBC); \
}
#define DEFINE_func_801620C4() \
extern int func_800291DC(int); \
extern int func_800D0E30(void *a0); \
int func_801620C4(void) { \
short local; \
int lo; \
local = func_800291DC(8) & 0x7FFF; \
local = func_800D0E30(&local); \
lo = *(unsigned char *)&local; \
return (short)(*((unsigned char *)&local + 1) * 100 + lo); \
}
#define DEFINE_func_801626B8() \
extern int func_800291DC(int); \
extern int func_800D0E30(void *a0); \
int func_801626B8(void) { \
short local; \
int lo; \
local = func_800291DC(0x12) & 0x7FFF; \
local = func_800D0E30(&local); \
lo = *(unsigned char *)&local; \
return (short)(*((unsigned char *)&local + 1) * 100 + lo); \
}
#define DEFINE_func_801633A8() \
extern s32 D_80115100; \
extern s32 D_80115200; \
s32 func_801633A8(void) { \
s32 *p = &D_80115100; \
s32 *q = &D_80115200; \
s32 i; \
for (i = 0; i < 3; i++) { \
s32 v1 = q[i]; \
if (v1 != 0) { \
if ((*(u16*)(p[i] + 0x5C) & 0x400) == 0) { \
return v1; \
} \
} \
} \
return 0; \
}
#define DEFINE_func_8017C230() \
extern void func_80146C3C(void); \
void func_8017C230(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; \
} \
}
#define DEFINE_func_80146CC8() \
extern s32 D_80127090; \
extern s32 D_80127094; \
extern s32 D_80127098; \
void func_80146CC8(s32 a0) { \
s32 *p = &D_80127090; \
*(s32*)(a0 + 0x10) += *p; \
*(s32*)(a0 + 0x14) += D_80127094; \
*(s32*)(a0 + 0x18) += D_80127098; \
*p = 0; \
D_80127094 = 0; \
D_80127098 = 0; \
}
#define DEFINE_func_801657D8() \
extern s32 D_80078E94; \
extern s32 D_80078E9C; \
extern s32 D_80078EA0; \
extern s32 D_80078EA4; \
extern s32 D_80078EA8; \
extern u8 D_80078EBB; \
extern s32 D_80078ECC; \
extern s32 D_80078ED0; \
extern s32 D_80078ED4; \
extern s32 D_80078ED8; \
extern s32 D_80078EDC; \
extern u8 D_80078EE0; \
void func_801657D8(void) { \
D_80078ECC = D_80078E94; \
D_80078ED0 = D_80078E9C; \
D_80078ED4 = D_80078EA0; \
D_80078ED8 = D_80078EA4; \
D_80078EDC = D_80078EA8; \
D_80078EE0 = D_80078EBB; \
}
#define DEFINE_func_80165874() \
extern s32 D_80078ECC; \
extern s32 D_80078ED0; \
extern s32 D_80078ED4; \
extern s32 D_80078ED8; \
extern s32 D_80078EDC; \
extern u8 D_80078EE0; \
extern s32 D_80078E94; \
extern s32 D_80078E9C; \
extern s32 D_80078EA0; \
extern s32 D_80078EA4; \
extern s32 D_80078EA8; \
extern u8 D_80078EBB; \
void func_80165874(void) { \
D_80078E94 = D_80078ECC; \
D_80078E9C = D_80078ED0; \
D_80078EA0 = D_80078ED4; \
D_80078EA4 = D_80078ED8; \
D_80078EA8 = D_80078EDC; \
D_80078EBB = D_80078EE0; \
}
#define DEFINE_func_8013001C() \
extern s32 func_8012BCCC(s32 a0); \
extern s32 func_80131AC8(void *a0); \
void func_8013001C(void *a0) { \
s32 v0 = func_8012BCCC((s32)a0); \
if (v0 <= 0x8FFF) { \
if (((s32 (*)(void *, s32))func_80131AC8)(a0, 0x30)) { \
return; \
} \
((s32 (*)(void *, s32))func_80131AC8)(a0, 0x31); \
} else { \
if (((s32 (*)(void *, s32))func_80131AC8)(a0, 0x31)) { \
return; \
} \
((s32 (*)(void *, s32))func_80131AC8)(a0, 0x30); \
} \
}
#define DEFINE_func_80130088() \
extern s32 func_8012BCCC(s32 a0); \
extern s32 func_80131AC8(void *a0); \
void func_80130088(void *a0) { \
s32 v0 = func_8012BCCC((s32)a0); \
if (v0 <= 0x8FFF) { \
if (((s32 (*)(void *, s32))func_80131AC8)(a0, 0x32)) { \
return; \
} \
((s32 (*)(void *, s32))func_80131AC8)(a0, 0x33); \
} else { \
if (((s32 (*)(void *, s32))func_80131AC8)(a0, 0x33)) { \
return; \
} \
((s32 (*)(void *, s32))func_80131AC8)(a0, 0x32); \
} \
}
#define DEFINE_func_80128564() \
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; \
void func_80128564(void) { \
register s32 p __asm__("$6") = 0x1F8003FC; \
__asm__ __volatile__( \
"addu $8, %0, $zero\n" \
"sw $sp, 0($8)\n" \
"addiu $8, $8, -4\n" \
"addu $sp, $8, $zero\n" \
"jal func_80178608\n" \
"addiu $sp, $sp, 4\n" \
"lw $sp, 0($sp)\n" \
: : "r"(p) : "$8", "memory"); \
if (currentLocationId == 0x300A) { \
func_8002D4C8(6, 0); \
} \
func_80011A3C(); \
D_800B99F2 = 1; \
}
#define DEFINE_func_801691B8() \
extern s32 func_80169228(void); \
extern void func_800D22E4(s32 a0); \
extern void func_80146C3C(void); \
void func_801691B8(void *a0) { \
if (*(s32 *)((s32)a0 + 0x1C) < 10) { \
func_80169228(); \
func_800D22E4((s32)a0); \
*(s32 *)((s32)a0 + 0x14) += 0x10000; \
*(s32 *)((s32)a0 + 0x1C) += 1; \
} else { \
((void (*)(s32))func_80146C3C)((s32)a0); \
} \
}
#define DEFINE_func_8016E2E8() \
extern void func_8016E3CC(s32 a0); \
extern void func_80146C3C(void); \
void func_8016E2E8(void *a0) { \
s32 *s1 = *(s32 **)((s32)a0 + 0x20); \
func_8016E3CC((s32)a0); \
if (--*(s32 *)((s32)a0 + 0x1C) != 0) { \
*(u16 *)((s32)s1 + 0x18) -= 0x100; \
*(u16 *)((s32)s1 + 0x1A) -= 0x120; \
} else { \
((void (*)(s32))func_80146C3C)((s32)a0); \
} \
}
#define DEFINE_func_8016B984() \
extern void func_80016714(void *a0, s32 a1); \
extern void func_80146C3C(void); \
void func_8016B984(void *a0) { \
if (*(s32*)((s32)a0 + 0x10) != 0) { \
func_80016714(*(void**)((s32)a0 + 0x10), 0x38); \
} \
if (*(s32*)((s32)a0 + 0x14) != 0) { \
func_80016714(*(void**)((s32)a0 + 0x14), 0x38); \
} \
if (*(s32*)((s32)a0 + 0x18) != 0) { \
func_80016714(*(void**)((s32)a0 + 0x18), 0x38); \
} \
((void (*)(void *))func_80146C3C)(a0); \
}
#define DEFINE_func_8016E358() \
extern void func_800D22E4(s32 a0); \
extern void func_8016E460(void *a0, void *a1); \
extern void func_80146C3C(void); \
void func_8016E358(void *a0) { \
s32 v0; \
v0 = *(s32*)((s32)a0 + 0x1C) - 1; \
*(s32*)((s32)a0 + 0x1C) = v0; \
if (v0 != 0) { \
func_800D22E4((s32)a0); \
*(s16*)((s32)a0 + 0x16) = *(u16*)((s32)a0 + 0x16) - 3; \
*(s32*)((s32)a0 + 0x30) = *(s32*)((s32)a0 + 0x30) - 0xE; \
func_8016E460(a0, (void*)((s32)a0 + 0x38)); \
} else { \
((void (*)(void *))func_80146C3C)(a0); \
} \
}
#define DEFINE_func_8014B6F0() \
extern s32 D_80078E9C; \
extern s32 D_80078ED0; \
void func_8014B6F0(s32 a0, s32 a1) { \
D_80078E9C += a1; \
if (*(s16*)((s32)&D_80078E9C + 2) >= 0xA1) { \
D_80078E9C = 0xA00000; \
} \
D_80078ED0 += a1; \
if (*(s16*)((s32)&D_80078ED0 + 2) >= 0xA1) { \
D_80078ED0 = 0xA00000; \
} \
}
#define DEFINE_func_8012BD3C() \
extern s32 func_80013478(s32 a0, s32 a1); \
extern s32 func_8012BDBC(s32 a0, s32 a1); \
extern s16 D_80126CBA; \
extern s16 D_80126CB4; \
s32 func_8012BD3C(s32 a0, s32 a1, s32 a2) { \
s32 v; \
s32 hp; \
hp = a1; \
if (D_80126CBA != 0) { \
v = 0x7FFFFFFF; \
} else { \
v = func_80013478(a0 + 4, (s32)&D_80126CB4); \
} \
if (a2 < v) { \
return 0; \
} \
return func_8012BDBC(a0, (s16)hp); \
}
#define DEFINE_func_8012CAE4() \
extern void func_80016714(void *a0, s32 a1); \
extern u16 D_801274E4[]; \
void func_8012CAE4(void *a0) { \
u16 *d; \
void *p; \
s32 t; \
s32 a1; \
d = D_801274E4; \
*d |= 1; \
p = *(void **)((s32)a0 + 0x20); \
if (p != 0) { \
t = *(u16 *)p; \
if (t != 1) { \
if (t != 2) { \
goto done; \
} \
a1 = 0x38; \
} else { \
a1 = 0x84; \
} \
func_80016714(p, a1); \
done:; \
} \
func_80016714(a0, 0x10C); \
}
#define DEFINE_func_801553C0() \
extern s32 func_80029178(s32); \
extern void func_8001D150(s32, s32); \
void func_801553C0(s32 a0) { \
s32 *flags; \
flags = (s32 *)(a0 + 0x44); \
if ((*flags & 4) != 0 || (func_80029178(0x12F) & 0xFF) != 0) { \
*flags = *flags & 0xEFFFFFFF; \
} else { \
*flags = *flags | 0x10000000; \
} \
func_8001D150(*(s32 *)(*(s32 *)(a0 + 0x20) + 0x24), 0x15); \
}
#define DEFINE_func_8012CE2C() \
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
s32 func_8012CE2C(s32 a0) { \
short a[4]; \
short b[4]; \
s32 pa, pb; \
a[0] = *(u16 *)(a0 + 0x6); \
a[1] = *(u16 *)(a0 + 0xA); \
a[2] = *(u16 *)(a0 + 0xE); \
pa = (s32)a; \
pb = (s32)b; \
__builtin_memcpy((void *)pb, (void *)pa, 8); \
b[1] += 8; \
func_80133784(1, a, pb); \
return a[1] == b[1]; \
}
#define DEFINE_func_80147DC0() \
extern void func_80013F3C(s32 a0); \
extern void func_800126C4(s32 a0, s32 a1); \
extern void func_80012558(s32 a0, s32 a1); \
extern void func_800123F0(s32 a0, s32 a1); \
extern void func_800484EC(s32 a0, s32 a1, s32 a2); \
void func_80147DC0(s32 a0, s32 a1) { \
s32 pad[4]; \
s32 buf[8]; \
s32 q = *(s32 *)(a0 + 0x20); \
func_80013F3C((s32)buf); \
func_800126C4((s32)buf, *(s16 *)(q + 0x10)); \
func_80012558((s32)buf, *(s16 *)(q + 0x12)); \
func_800123F0((s32)buf, *(s16 *)(q + 0x14)); \
func_800484EC((s32)buf, a0 + 0x24, a1); \
}
#define DEFINE_func_8016325C() \
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_80146D30(s32 a0); \
extern s32 D_80127090; \
extern s32 D_80127094; \
extern s32 D_80127098; \
void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3) { \
func_80162F60(a0, a1); \
func_80162F80(a0, a2); \
func_80162FA0(a0, a3); \
D_80127090 = *(s32 *)(a0 + 0x24); \
D_80127094 = *(s32 *)(a0 + 0x28); \
D_80127098 = *(s32 *)(a0 + 0x2C); \
func_80146D30(a0); \
}
#define DEFINE_func_8013F1BC() \
extern void func_800D2624(void); \
extern short D_800B9A02; \
extern unsigned short D_80115114; \
extern unsigned short D_80115112; \
extern unsigned short D_80115118; \
void func_8013F1BC(void) { \
unsigned short *p = &D_80115118; \
if (*p != 0) { \
*p -= 0x10; \
__asm__ __volatile__("" ::: "memory"); \
if (*p != 0) { \
return; \
} \
} \
if (D_80115114 == ((unsigned short)D_800B9A02 ^ 1)) { \
func_800D2624(); \
} else { \
D_80115112 += 1; \
} \
}
#define DEFINE_func_8014CC28() \
extern void func_8014D3E0(s32 a0); \
extern void func_8014D04C(void); \
extern void func_8014CCB4(void); \
void func_8014CC28(s32 a0) { \
if (*(s32 *)(a0 + 0x44) < 0) { \
if (*(s16 *)(a0 + 0xA) != *(s16 *)(a0 + 0x8A)) { \
func_8014D3E0(a0); \
return; \
} \
if (*(s16 *)(a0 + 0x6) != *(s16 *)(a0 + 0x88) || \
*(s16 *)(a0 + 0xE) != *(s16 *)(a0 + 0x8C)) { \
func_8014D04C(); \
return; \
} \
} \
func_8014CCB4(); \
}
#define DEFINE_func_801567BC() \
extern u8 D_8011DAD8[]; \
extern s32 D_801151E0[]; \
extern s32 func_8014C568(void *a0); \
void func_801567BC(s32 a0) { \
s32 obj = a0; \
s32 i = 0; \
u8 *q = D_8011DAD8; \
s32 *p = D_801151E0; \
do { \
if (*p & 1) { \
*(s16 *)(*(s32 *)(obj + 0x20) + 0x12) = \
((s32 (*)(void *, void *))func_8014C568)((void *)obj, q); \
} \
q += 8; \
i += 1; \
p += 1; \
} while ((u32)i < 3); \
}
#define DEFINE_func_80142454() \
extern u16 D_80126B5E; \
extern u16 D_80126B62; \
extern u16 D_80126B66; \
extern s32 func_8012C51C(void *a0, s32 a1); \
void func_80142454(s32 a0) { \
s32 s0 = a0; \
u16 *s1 = &D_80126B5E; \
s32 ret; \
s16 st[10]; \
st[3] = 0x13; \
st[0] = *s1; \
st[1] = D_80126B62; \
st[2] = D_80126B66; \
st[4] = 1; \
st[5] = 0; \
st[7] = 0; \
*(s32 *)&st[8] = 0; \
ret = ((s32 (*)(void *, s32))func_8012C51C)(st, 0); \
if (ret != 0) { \
*(s16 *)(ret + 0x52) = s0; \
*(s32 *)(ret + 0x64) = (s32)s1 - 6; \
} \
}
#define DEFINE_func_801581AC() \
extern void func_80148038(s32 a0, s32 a1); \
extern void func_80147460(s32 a0); \
extern void func_80147AD4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); \
extern void func_801473EC(s32 *a0); \
extern void func_80161418(void *a0); \
extern void func_801599A4(void *a0); \
extern void func_80159B3C(void *a0); \
extern int func_80155FF8(int arg, int a1); \
void func_801581AC(s32 a0) { \
s32 reserved[4]; \
(void)reserved; \
*(s32 *)(a0 + 0x44) |= 2; \
func_80148038(a0, 0x10000); \
func_80147460(a0); \
func_80147AD4(a0, 0, 0, 0); \
func_801473EC((s32 *)a0); \
{ \
register s32 ret __asm__("$2"); \
func_80161418((void *)a0); \
__asm__ __volatile__("" : "=r"(ret)); \
if (ret != 0) { \
return; \
} \
} \
if (*(u16 *)(a0 + 0xB8) == 0x8000) { \
func_801599A4((void *)a0); \
func_80159B3C((void *)a0); \
} else { \
func_80155FF8(a0, *(u8 *)(a0 + 0x1AA)); \
} \
}
#define DEFINE_func_8016E1CC() \
extern void func_8016E3CC(s32 a0); \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_8016E1CC(s32 a0) { \
s32 s1; \
s32 v; \
s1 = *(s32 *)(a0 + 0x20); \
func_8016E3CC(a0); \
v = *(s32 *)(a0 + 0x1C) - 1; \
*(s32 *)(a0 + 0x1C) = v; \
if (v != 0) { \
func_80146A6C(0x48, (void *)a0, 0, 0, 0, 0x8000, 0); \
*(s16 *)(s1 + 0x18) = *(u16 *)(s1 + 0x18) + 0x100; \
*(s16 *)(s1 + 0x1A) = *(u16 *)(s1 + 0x1A) + 0x140; \
return; \
} \
*(s32 *)(a0 + 0x1C) = 0x20; \
*(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; \
}
#define DEFINE_func_8013914C() \
extern s32 func_80139220(s32 a0); \
s32 func_8013914C(s32 a0, s32 a1) { \
s32 t; \
if ((s32)*(u16 *)(a0 + 0x14) >= *(s16 *)(a0 + 0x2C)) { \
if (func_80139220(a0) != 0) { \
return 1; \
} \
} \
t = *(u16 *)(a0 + 0x14); \
*(s16 *)(a1 + 0x0) = *(u16 *)(a0 + 0x38) + (((u32)(t * 3)) >> 1); \
t = *(u16 *)(a0 + 0x12); \
*(s16 *)(a1 + 0x2) = *(u16 *)(a0 + 0x3A) + ((t * 3) << 2); \
*(s16 *)(a0 + 0x14) = *(u16 *)(a0 + 0x14) + 1; \
return 0; \
}
#define DEFINE_func_8013ED6C() \
extern s32 func_80141C50(void); \
extern void func_8013F350(void); \
extern void func_8013FAF8(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 u16 D_80115112; \
void func_8013ED6C(void) { \
s32 sp10[2]; \
if ((s16)func_80141C50() == 0) { \
D_801151D0 = *(s32 *)&D_801151C8[(u16)D_800B9A02 * 4]; \
func_8013F350(); \
func_8013FAF8(7, 8); \
if (D_8011511A == 7) { \
if ((D_8011511E & 0x810) == 0) { \
return; \
} \
} \
func_8013E958(); \
D_80115112 = 4; \
} \
(void)sp10; \
}
#define DEFINE_func_801505FC() \
extern u8 D_801202A0[]; \
extern s32 func_8014C278(s32 a0, s32 a1, s32 a2); \
extern s32 func_801506A4(s32 a0, s32 a1); \
s32 func_801505FC(s32 a0) { \
u8 *p = D_801202A0; \
if (p < D_801202A0 + 0x6480) { \
u8 *end = D_801202A0 + 0x6480; \
do { \
if (*(u16 *)(p + 0x0) != 0) { \
if (*(u16 *)(p + 0x5C) & 0x100) { \
if (func_8014C278(a0, (s32)p, 0x30) != 0) { \
func_801506A4(a0, (s32)p); \
return 1; \
} \
} \
} \
p += 0x10C; \
} while (p < end); \
} \
return 0; \
}
#define DEFINE_func_80149DD8() \
extern u8 D_801202A0[]; \
extern s32 func_80149F2C(s32 a0, s32 a1); \
s32 func_80149DD8(s32 a0) { \
u8 *p; \
if (*(s32 *)(a0 + 0x178) != 0) { \
return 0; \
} \
if (*(s32 *)(a0 + 0x44) & 0x404) { \
return 0; \
} \
if ((*(u16 *)(a0 + 0xAC) & 0x80) == 0) { \
return 0; \
} \
*(s32 *)(a0 + 0x190) = 0; \
for (p = D_801202A0; p < D_801202A0 + 0x6480; p += 0x10C) { \
if (func_80149F2C(a0, (s32)p) != 0) { \
return 1; \
} \
} \
return 0; \
}
#define DEFINE_func_8014E98C() \
extern s32 func_8014EA4C(void *a0, void *a1, void *a2, s32 a3); \
s32 func_8014E98C(void *a0) { \
s16 buf1[3]; \
s16 buf2[4]; \
s32 acc; \
s32 i; \
acc = 0; \
i = 2; \
if ((*(s32 *)((u8 *)a0 + 0x44) & 0x80000) == 0) { \
if ((*(s32 *)((u8 *)a0 + 0x1F8) & 0x4000000) == 0) { \
do { \
buf1[0] = *(u16 *)((u8 *)a0 + 0x88); \
i -= 1; \
buf1[1] = *(u16 *)((u8 *)a0 + 0x8A) - 0x10; \
buf1[2] = *(u16 *)((u8 *)a0 + 0x8C); \
buf2[0] = *(u16 *)((u8 *)a0 + 0x6); \
buf2[1] = *(u16 *)((u8 *)a0 + 0xA) - 0x10; \
buf2[2] = *(u16 *)((u8 *)a0 + 0xE); \
acc = acc | func_8014EA4C(a0, buf1, buf2, i); \
} while (i != 0); \
} \
} \
return acc; \
}
#define DEFINE_func_801575E4() \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80147324(s32 a0); \
extern void func_80146E90(s32 *a0, s32 a1); \
extern void func_80156648(s32 *a0); \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_8014B768(s32 a0, s32 a1); \
extern void func_80147300(u16 arg0); \
extern void func_80146CA0(void *a0); \
extern u8 D_800D4F14[]; \
extern s32 D_8011F730; \
void func_801575E4(void *a0) { \
s32 v; \
func_80154A74((s32)a0, 0x15); \
v = *(u8 *)((u8 *)a0 + 0x1AB) ^ 1; \
*(u8 *)((u8 *)a0 + 0x1AB) = v; \
if (v != 0) { \
*(u8 *)((u8 *)a0 + 0x1AA) = 0xA; \
} else { \
*(u8 *)((u8 *)a0 + 0x1AA) = 0xB; \
} \
func_80154274((s32 *)a0, (s32)D_800D4F14); \
func_80147324(0x455); \
func_80146E90((s32 *)a0, 0); \
func_80156648((s32 *)a0); \
func_80146994(0x5, (s32)a0, 0, 0); \
func_8014B768((s32)a0, 0x333); \
func_80147300(0x5F3); \
D_8011F730 |= 4; \
func_80146CA0(a0); \
}
#define DEFINE_func_8016BADC() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
void func_8016BADC(void *a0, s32 a1, s32 a2) { \
func_80146A6C(0x22, a0, 0, (s16)a1, 0, 0, a2); \
func_80146A6C(0x22, a0, 0, (s16)a1, 0, 1, a2); \
func_80146A6C(0x22, a0, 0, (s16)a1, 0, 2, a2); \
func_80146A6C(0x24, a0, 0, (s16)a1, 0, 0, 0); \
}
#define DEFINE_func_8012C354() \
extern void func_8001CFDC(s32 a, s32 b); \
extern void func_8012CAE4(void *a0); \
extern void func_8001C214(s32 a0, s32 a1); \
extern u8 D_80078EAE; \
s32 func_8012C354(s32 a0, s32 a1) { \
s32 v; \
*(s32*)(a0 + 0x78) = a1; \
if (D_80078EAE == 0) { \
v = (*(s16*)(a1 + 0x0) * 24) / 16; \
} else { \
v = *(u16*)(a1 + 0x0); \
} \
*(s16*)(a0 + 0x76) = v; \
*(s16*)(a0 + 0x5C) = *(u16*)(a1 + 0x2); \
if (*(s32*)(a1 + 0x4) != 0) { \
*(s32*)(a0 + 0x20) = ((s32 (*)(s32, s32))func_8001CFDC)(0x26, 0x85); \
if (*(s32*)(a0 + 0x20) == 0) { \
func_8012CAE4((void *)a0); \
return 0; \
} \
func_8001C214(*(s32*)(a0 + 0x20), *(s32*)(a1 + 0x4)); \
} \
if (*(s32*)(a1 + 0x8) != 0) { \
*(s32*)(a0 + 0x58) = *(s32*)(a1 + 0x8) | 0x60000000; \
} \
return 1; \
}
#define DEFINE_func_8012C438() \
extern void func_8001CFDC(s32 a, s32 b); \
extern void func_8012CAE4(void *a0); \
extern void func_8001C810(s32 a0, s32 a1); \
extern u8 D_80078EAE; \
s32 func_8012C438(s32 a0, s32 a1) { \
s32 v; \
*(s32*)(a0 + 0x78) = a1; \
if (D_80078EAE == 0) { \
v = (*(s16*)(a1 + 0x0) * 24) / 16; \
} else { \
v = *(u16*)(a1 + 0x0); \
} \
*(s16*)(a0 + 0x76) = v; \
*(s16*)(a0 + 0x5C) = *(u16*)(a1 + 0x2); \
if (*(s32*)(a1 + 0x4) != 0) { \
*(s32*)(a0 + 0x20) = ((s32 (*)(s32, s32))func_8001CFDC)(0x26, 0x85); \
if (*(s32*)(a0 + 0x20) == 0) { \
func_8012CAE4((void *)a0); \
return 0; \
} \
func_8001C810(*(s32*)(a0 + 0x20), *(s32*)(a1 + 0x4)); \
} \
if (*(s32*)(a1 + 0x8) != 0) { \
*(s32*)(a0 + 0x58) = *(s32*)(a1 + 0x8) | 0x60000000; \
} \
return 1; \
}
#define DEFINE_func_8014FA70() \
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
extern s32 func_80029178(s32 a0); \
extern u8 D_801152A8[]; \
extern s16 D_801152B0; \
extern s32 D_801152BC; \
s32 func_8014FA70(s32 a0) { \
s32 s1; \
s32 v0; \
u8 in[8]; \
u8 out[8]; \
*(s16 *)(in + 0x0) = *(u16 *)(a0 + 0x88); \
*(s16 *)(in + 0x2) = *(u16 *)(a0 + 0x8A); \
*(s16 *)(in + 0x4) = *(u16 *)(a0 + 0x8C); \
*(s16 *)(out + 0x0) = *(u16 *)(a0 + 0x6); \
*(s16 *)(out + 0x2) = *(u16 *)(a0 + 0xA); \
*(s16 *)(out + 0x4) = *(u16 *)(a0 + 0xE); \
s1 = func_80133784(1, &in[0], (s32)&out[0]); \
if (s1 != 0) { \
*(s16 *)(a0 + 0x6) = *(u16 *)(out + 0x0); \
*(s16 *)(a0 + 0xA) = *(u16 *)(out + 0x2); \
*(s16 *)(a0 + 0xE) = *(u16 *)(out + 0x4); \
v0 = *(u8 *)(out + 0x6); \
if (v0 != 0) { \
*(s16 *)(a0 + 0x16C) = v0; \
} \
*(s16 *)(a0 + 0x16E) = *(u16 *)(out + 0x6) >> 13; \
if (*(u16 *)(a0 + 0x16C) == 0x1D) { \
if ((func_80029178(0x21) & 0xFF) == 0) { \
s1 &= ~0x2000; \
s1 |= 0x4000; \
__builtin_memcpy(&D_801152B0, &D_801152A8[0], 8); \
D_801152BC = 1; \
} \
} \
return s1; \
} \
v0 = *(u8 *)(out + 0x6); \
if (v0 != 0) { \
*(s16 *)(a0 + 0x16C) = v0; \
} \
return 0; \
}
#define DEFINE_func_80172170() \
extern s32 ratan2(s32 a0, s32 a1); \
extern s32 func_80047948(s32 a0); \
extern s32 func_8004787C(s32 a0); \
extern s32 D_801151D4; \
void func_80172170(s32 a0, s32 a1) { \
s32 base = D_801151D4; \
s32 s0; \
s32 s1; \
s32 v1; \
s32 s3 = a1; \
s32 ang; \
*(s8 *)(a0 + 0xA9) = 0x73; \
ang = ratan2(*(s32 *)(base + 0x68) - *(s32 *)(base + 0x5C), \
*(s32 *)(base + 0x70) - *(s32 *)(base + 0x64)); \
s0 = (ang + 0x800) & 0xFFF; \
s0 = (*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12) - s0) & 0xFF8; \
if (s0 == 0x400 || s0 == 0xC00) { \
s1 = 0x80; \
} else { \
s32 t = -((s3 & 0xFF) >> 1) * func_80047948(s0); \
if (t < 0) { \
t += 0xFFF; \
} \
s1 = (t >> 12) + 0x80; \
} \
if (s1 < 0) { \
s1 = 0; \
} \
if (!(s1 < 0x100)) { \
s1 = 0xFF; \
} \
if (s0 == 0 || s0 == 0x800) { \
v1 = 0x80; \
} else { \
s32 t = ((s3 & 0xFF) >> 1) * func_8004787C(s0); \
if (t < 0) { \
t += 0xFFF; \
} \
v1 = (t >> 12) + 0x80; \
} \
if (v1 < 0) { \
v1 = 0; \
} \
if (!(v1 < 0x100)) { \
v1 = 0xFF; \
} \
*(s16 *)(a0 + 0xAE) = (v1 & 0xFF) | (s1 << 8); \
}
#define DEFINE_func_8014BCC0() \
extern s16 D_80078EB4; \
void func_8014BCC0(s32 a0, s32 a1) { \
s32 v1 = (u16)D_80078EB4; \
if (a1 < v1) { \
D_80078EB4 = v1 - a1; \
} else { \
D_80078EB4 = 1; \
} \
}
#define DEFINE_func_8014B160() \
extern void func_8014B2F8(void); \
extern void func_8014B4C4(void); \
void func_8014B160(s32 a0) { \
func_8014B2F8(); \
((void (*)(s32))func_8014B4C4)(a0); \
}
#define DEFINE_func_80174318() \
extern void func_80142454(s32 a0); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
void func_80174318(u8 *a0) { \
func_80142454(-0x80); \
func_80171A1C(a0); \
func_80174650((s32)a0); \
}
#define DEFINE_func_8015B8F8() \
extern void func_801542DC(s32 *a0, s32 a1); \
extern void func_80154150(s32 a0, s32 a1); \
extern s32 D_800D4A9C; \
extern s32 D_800D4B48; \
void func_8015B8F8(s32 *a0) { \
s32 v = *(s32 *)((s32)a0 + 0x23C); \
if (v == (s32)&D_800D4A9C || v == (s32)&D_800D4B48) { \
((void (*)(s32 *, s32, s32))func_801542DC)(a0, v, *(u8 *)((s32)a0 + 0x244)); \
} else { \
func_80154150((s32)a0, 0xF); \
} \
}
#define DEFINE_func_80161B84() \
extern s32 func_80149884(void); \
extern void func_801599A4(void *a0); \
extern void func_801498C0(void); \
s32 func_80161B84(void *a0) { \
if ((((s32 *)a0)[0x11] & 0x100) != 0) { \
if (func_80149884() != 0) { \
func_801599A4(a0); \
(*(void (*)(void *))func_801498C0)(a0); \
return 1; \
} \
} \
return 0; \
}
#define DEFINE_func_80168EC4() \
extern void func_80168F40(void); \
extern void func_800D22E4(s32 a0); \
extern void func_80146C3C(void); \
void func_80168EC4(s32 a0) { \
if (*(s32 *)(a0 + 0x1C) < 5) { \
func_80168F40(); \
*(u16 *)(a0 + 0x10) = *(u16 *)(a0 + 0x6); \
*(u16 *)(a0 + 0x14) = *(u16 *)(a0 + 0xA); \
*(u16 *)(a0 + 0x18) = *(u16 *)(a0 + 0xE); \
func_800D22E4(a0); \
*(s32 *)(a0 + 0x1C) += 1; \
} else { \
((void (*)(s32))func_80146C3C)(a0); \
} \
}
#define DEFINE_func_80172BC8() \
extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
extern s16 D_80126B32; \
void func_80172BC8(void *a0) { \
s32 v0p = *(s32 *)((s32)a0 + 0x20); \
s32 r = func_80012B04(*(s16 *)(v0p + 0x12), D_80126B32, 4); \
s32 v1; \
if (((r << 16) >> 16) == 0) { \
func_80171A1C((u8 *)a0); \
func_80174650((s32)a0); \
} \
v1 = *(s32 *)((s32)a0 + 0x20); \
*(s16 *)(v1 + 0x12) = (*(u16 *)(v1 + 0x12) + r) & 0xFFF; \
}
#define DEFINE_func_80151FB4() \
extern void func_8014BC44(s32 a0, s32 a1); \
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(); \
void func_80151FB4(s32 a0) { \
s32 v1; \
func_8014BC44(a0, *(s16 *)(a0 + 0xF2)); \
*(u8 *)(a0 + 0xA8) = 0x20; \
func_80154A74(a0, 0x11); \
func_801553C0(a0); \
func_801470AC((s32 *)a0); \
func_801472B4((void *)a0); \
v1 = *(s32 *)(a0 + 0x20); \
*(s16 *)(a0 + 0x3E) = 0; \
*(s16 *)(a0 + 0x40) = 0; \
*(s16 *)(a0 + 0x42) = 0; \
*(u8 *)(a0 + 0xDD) = 0; \
*(u16 *)(a0 + 0x3C) = *(u16 *)(a0 + 0x3C) & 0xFFFE; \
*(s16 *)(v1 + 0x10) = 0; \
*(u16 *)(a0 + 0x60) = 0x1000; \
*(u16 *)(a0 + 0x62) = 0x1000; \
*(u16 *)(a0 + 0x64) = 0x1000; \
func_801477E8((s32 *)a0, 0); \
func_80153C18(a0); \
}
#define DEFINE_func_8014B084() \
extern u16 D_80078EAC; \
extern u8 D_80078EBA; \
extern void func_800D10EC(void); \
extern void func_8002AC98(void); \
extern void func_80145C54(void); \
void func_8014B084(void) { \
u16 a; \
u8 b; \
a = D_80078EAC + 1; \
b = D_80078EBA + 1; \
D_80078EAC = a; \
D_80078EBA = b; \
if (a >= 0x16E) { \
D_80078EAC = 1; \
} \
D_80078EBA = b % 7; \
func_800D10EC(); \
func_8002AC98(); \
func_80145C54(); \
}
#define DEFINE_func_80149744() \
extern u8 D_80078EBF; \
s32 func_80149744(struct S_80149744 *a0) { \
if ((a0->w44 & 0x4) == 0 && D_80078EBF >= 0x80) { \
if (a0->h_AC & 0x80) { \
return 1; \
} \
} \
return 0; \
}
#define DEFINE_func_8014A3E0() \
extern s16 D_801152B0; \
extern s16 D_801152B4; \
s32 func_8014A3E0(struct S_8014A3E0 *a0) { \
s32 sp[4]; \
sp[0] = a0->h12 * D_801152B0; \
sp[2] = a0->h1A * D_801152B4; \
if (sp[0] >= 0 && sp[2] >= 0) { \
return 1; \
} \
*(s16 *)((char *)a0 + 0x6) = a0->h88; \
*(s16 *)((char *)a0 + 0xA) = a0->h8A; \
*(s16 *)((char *)a0 + 0xE) = a0->h8C; \
return 0; \
}
#define DEFINE_func_80163328() \
extern s32 D_80115100; \
extern u16 D_80126B18[]; \
extern s32 D_80115200; \
void func_80163328(void) { \
u32 i; \
s32 *table; \
u16 *src; \
s32 *flags; \
i = 0; \
table = &D_80115100; \
src = D_80126B18; \
flags = &D_80115200; \
do { \
if (*flags & 1) { \
u8 *dst = (u8 *)*table; \
*(struct Vec4s *)(dst + 0x7C) = *(struct Vec4s *)src; \
*(s16 *)((u8 *)*table + 0x82) = 0; \
} \
table += 1; \
src += 4; \
i += 1; \
flags += 1; \
} while (i < 3); \
}
#define DEFINE_func_8013A164() \
extern s16 D_8012752C; \
void func_8013A164(struct S8013A164 *a0) { \
s32 flags; \
if (a0->field_40 == 0 || a0->field_18 == 0 || *a0->field_40 == 2) { \
flags = a0->field_08 | 0x1000; \
a0->field_08 = flags; \
if (flags & 0x10000) { \
if (D_8012752C != 0) { \
if (flags & 0x40000) { \
a0->field_04 = 2; \
} else { \
a0->field_04 = 0x10; \
} \
} else { \
a0->field_04 = 2; \
} \
} else { \
a0->field_04 = 2; \
} \
} \
}
#define DEFINE_func_8014BDE8() \
extern s32 func_8016F1AC(void); \
extern s32 func_8017267C(s32 *a0); \
extern void func_80015978(s32 a0, s32 *a1); \
extern s32 func_80013294(void *a0, void *a1); \
extern void func_80029ED4(s32 a0); \
void func_8014BDE8(s32 a0) { \
s32 s0 = a0; \
struct B8014 sp10; \
s16 sp18[4]; \
if (func_8016F1AC() != 0) { \
return; \
} \
if (func_8017267C((s32 *)s0) != 0) { \
return; \
} \
sp10 = *(struct B8014 *)(s0 + 0x98); \
func_80015978(s0 + 4, (s32 *)sp18); \
sp18[1] = 0; \
*(s16 *)((s32)&sp10 + 0x2) = 0; \
func_80029ED4((func_80013294(&sp10, sp18) << 16) >> 16); \
}
#define DEFINE_func_8012A4BC() \
extern s32 D_801151D4; \
extern struct BigCopy D_80126DB8; \
extern struct BigCopy D_80114EE8; \
extern u8 D_80127504; \
void func_8012A4BC(void) { \
D_80126DB8 = *(struct BigCopy *)D_801151D4; \
*(struct BigCopy *)D_801151D4 = D_80114EE8; \
D_80127504 = 0x30; \
}
#define DEFINE_func_80150EC4() \
extern u8 D_800AE6C0; \
extern s16 D_800AE6C8; \
extern s16 D_800AE6CA; \
extern u8 D_80126948[]; \
extern s16 D_800AE6CC; \
extern s32 D_800AE6C4; \
extern s16 D_800AE6CE; \
extern u8 D_800AE6BE; \
extern s32 D_800AE6B0; \
extern u8 D_801201F8[]; \
void func_80150EC4(s32 a0, s32 a1) { \
D_800AE6C0 = 1; \
D_800AE6C8 = *(u16 *)(a0 + 0x6); \
D_800AE6CA = *(u16 *)(a0 + 0xA); \
D_800AE6CC = *(u16 *)(a0 + 0xE); \
D_800AE6CE = *(u16 *)(*(s32 *)(a0 + 0x20) + 0x12); \
D_800AE6B0 = *(s32 *)(((a1 << 2) + D_800AE6C4) + 4); \
D_800AE6BE = a1 + 1; \
*(struct copy00 *)D_801201F8 = *(struct copy00 *)D_80126948; \
}
#define DEFINE_func_8013A0A4() \
extern void func_80139A8C(s32 a0); \
extern void func_80139B18(s32 a0); \
void func_8013A0A4(struct S8013A0A4 *a0) { \
if (a0->field_1E != 0) { \
a0->field_1E = a0->field_1E + 5; \
} else { \
a0->field_1E = 4; \
} \
if (a0->field_1E >= 0xC) { \
a0->field_16 = (a0->field_16 + 1) % (a0->field_2E + 1); \
a0->field_1E = 0; \
if (a0->field_8 & 0x100) { \
a0->field_4 = 6; \
} else { \
a0->field_4 = 2; \
} \
} \
func_80139A8C((s32)a0); \
func_80139B18((s32)a0); \
}
#define DEFINE_func_80147060() \
void func_80147060(u8 * a0) \
{ \
s32 v = 1; \
a0[0x4D] = v; \
return v; \
}
#define DEFINE_func_8014CB68() \
extern u8 D_80126D1D; \
void func_8014CB68(void) \
{ \
D_80126D1D = 1; \
}
#define DEFINE_func_80153C30() \
extern u16 D_8011F748; \
void func_80153C30(void) \
{ \
D_8011F748 = 1; \
}
#define DEFINE_func_80155394() \
s32 func_80155394(s32 *a0) \
{ \
return (a0[0x11] |= 0x20000000); \
}
#define DEFINE_func_80162ACC() \
s32 func_80162ACC(u8 *a0) \
{ \
s32 v = a0[1] + 1; \
a0[1] = v; \
return v; \
}
#define DEFINE_func_80162AE0() \
s32 func_80162AE0(u8 *a0) \
{ \
s32 v = a0[1] - 1; \
a0[1] = v; \
return v; \
}
#define DEFINE_func_801659B8() \
extern s32 D_80126B08; \
void func_801659B8(void) \
{ \
D_80126B08 = 1; \
}
#define DEFINE_func_8016F250() \
extern u8 D_80126D1A; \
void func_8016F250(void) \
{ \
D_80126D1A = 1; \
}
#define DEFINE_func_8016F374() \
extern u8 D_800B9A17; \
void func_8016F374(void) \
{ \
D_800B9A17 = 1; \
}
#define DEFINE_func_8017197C() \
s32 func_8017197C(u8 *a0) \
{ \
s32 v = a0[0x215] + 1; \
a0[0x216] = 0; \
a0[0x215] = v; \
return v; \
}
#define DEFINE_func_80171990() \
s32 func_80171990(u8 *a0) \
{ \
s32 v = a0[0x216] + 1; \
a0[0x216] = v; \
return v; \
}
#define DEFINE_func_80171A44() \
s32 func_80171A44(u8 *a0) \
{ \
s32 v = a0[0x215] + 1; \
a0[0x216] = 0; \
a0[0x215] = v; \
return v; \
}
#define DEFINE_func_80146D90() \
extern void func_80146DE8(s32 *a0, s32 a1, s32 a2, s32 a3); \
void func_80146D90(s32 a0) \
{ \
func_80146DE8(a0, 0, 0, 0); \
}
#define DEFINE_func_80165910() \
extern s8 D_80078EC4; \
s32 func_80165910(void) \
{ \
s32 v; \
s32 ret; \
v = (u8)D_80078EC4; \
ret = v; \
if (v == 0) { \
register s32 one __asm__("$2"); \
one = 1; \
__asm__ __volatile__("" : "=r"(one) : "0"(one)); \
D_80078EC4 = one; \
} \
return ret; \
}
#define DEFINE_func_80151204() \
extern void func_8014ACE8(void *a0, s32 a1, s32 a2); \
int func_80151204(int a0, int a1) \
{ \
if (a1 != 0 && a1 != 1000) { \
func_8014ACE8(a0, 1, a1 & 0x7FFF); \
} \
}
#define DEFINE_func_80159B3C() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80159B70(void *a0); \
void func_80159B3C(void * a0) \
{ \
func_80147078(a0, 0); \
func_80159B70(a0); \
}
#define DEFINE_func_8017118C() \
extern void func_80142454(s32 a0); \
extern void func_80171928(void *a0); \
void func_8017118C(u8 * a0) \
{ \
func_80142454(-0x80); \
func_80171928(a0); \
}
#define DEFINE_func_8012A828() \
extern void func_8012AAAC(void); \
void func_8012A828(s32 a0, void * a1) \
{ \
*(s32 *)((u8 *)a0 + 0x90) = a1; \
*(s32 *)((u8 *)a0 + 0x94) = 0; \
*(s32 *)((u8 *)a0 + 0x9C) = 0; \
*(s16 *)((u8 *)a0 + 0x9A) = 0; \
*(u16 *)((u8 *)a0 + 0x72) = *(u16 *)((u8 *)a0 + 0x72) & 0xF9FF; \
func_8012AAAC(); \
}
#define DEFINE_func_8014BCEC() \
extern u16 D_80078EB6; \
s32 func_8014BCEC(s32 a0, s32 a1) \
{ \
u16 v; \
v = D_80078EB6 + a1; \
D_80078EB6 = v; \
if (v >= 0x663) { \
D_80078EB6 = 0x662; \
} \
}
#define DEFINE_func_8014CB9C() \
extern struct Packed8 D_80126C98; \
extern short D_80126C9E; \
void func_8014CB9C(struct Packed8 *a0) \
{ \
D_80126C98 = *a0; \
D_80126C9E = 1; \
}
#define DEFINE_func_8017303C() \
extern void func_80174684(void *); \
extern s32 func_80173078(void *a0); \
extern s32 D_80127508; \
extern s16 D_80126B30; \
void func_8017303C(void * a0) \
{ \
D_80127508 = a0; \
D_80126B30 = 1; \
func_80174684((void *)func_80173078); \
}
#define DEFINE_func_80154150() \
extern void func_80154190(u8 *a0, s32 a1); \
void func_80154150(s32 a0, s32 a1) \
{ \
if (*(s32 *)(a0 + 0xB4) != ((s32 *)*(s32 *)(a0 + 0xB0))[a1]) { \
func_80154190(a0, a1); \
} \
}
#define DEFINE_func_801743F0() \
extern s32 func_80172658(s32 *a0); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
void func_801743F0(u8 * a0) \
{ \
if (func_80172658(a0)) { \
func_80171A1C((u8 *)a0); \
func_80174650((s32)a0); \
} \
}
#define DEFINE_func_80147B18() \
extern void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); \
extern void func_80147B5C(s32 a0, void *a1); \
void func_80147B18(s32 a0) \
{ \
s32 buf[4]; \
s32 b0, b1, b2; \
func_80147D38(a0, b0, b1, b2, &buf[0]); \
func_80147B5C(a0, &buf[0]); \
}
#define DEFINE_func_801508B4() \
extern s32 func_8014A2E4(s32 a0); \
extern void func_8014A380(s32 a0, s32 a1); \
s32 func_801508B4(s32 a0) \
{ \
s32 r; \
r = func_8014A2E4(a0); \
if (r != 0) { \
func_8014A380(a0, r); \
return 1; \
} \
return 0; \
}
#define DEFINE_func_8015173C() \
extern void func_8014C8F0(s32 arg0); \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_80151780(s32 a0); \
void func_8015173C(s32 *a0) \
{ \
func_8014C8F0((s32)a0); \
*((u8 *)a0 + 0xDE) = *(u16 *)a0; \
func_80147078(a0, 0x19); \
func_80151780((s32)a0); \
}
#define DEFINE_func_8015BD8C() \
extern void func_801553A8(s32 *a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015BD8C(s32 *a0) \
{ \
func_801553A8(a0); \
func_80154A74((s32)a0, 0x11); \
*(s32 *)((u8 *)a0 + 0x44) &= ~2; \
}
#define DEFINE_func_8015BF04() \
extern void func_801553A8(s32 *a0); \
extern void func_80154A74(s32 a0, s32 a1); \
void func_8015BF04(s32 *a0) \
{ \
func_801553A8(a0); \
func_80154A74((s32)a0, 0x11); \
*(s32 *)((u8 *)a0 + 0x44) &= ~2; \
}
#define DEFINE_func_8015BFB0() \
extern void func_80147078(s32 *a0, s16 a1); \
extern void func_8015C030(s32 *a0, s32 a1); \
void func_8015BFB0(s32 *a0, s32 a1) \
{ \
func_80147078(a0, 0x4); \
func_8015C030(a0, a1); \
}
#define DEFINE_func_80172D68() \
extern s32 D_80126B58; \
extern s32 D_80127508; \
extern s32 func_80172DAC(void *a0); \
extern s32 func_8014C168(s32 *a0, s32 a1); \
extern void func_80174684(void *); \
void func_80172D68(s32 a0) \
{ \
D_80127508 = func_8014C168(&D_80126B58, a0); \
func_80174684(func_80172DAC); \
}
#define DEFINE_func_8012C284() \
extern u8 D_80126720[]; \
u16 *func_8012C284(u16 *a0) \
{ \
u16 *end; \
end = (u16 *)D_80126720; \
if (a0 == 0) { \
a0 = (u16 *)(D_80126720 - 0x6480); \
} else { \
a0 = (u16 *)((u8 *)a0 + 0x10C); \
} \
while (a0 != end) { \
if (*a0 == 0) { \
return a0; \
} \
a0 = (u16 *)((u8 *)a0 + 0x10C); \
} \
return 0; \
}
#define DEFINE_func_8016FE2C() \
extern s32 func_80172658(s32 *a0); \
extern s32 func_80171990(u8 *a0); \
void func_8016FE2C(u8 * a0) \
{ \
if (func_80172658(a0) != 0) { \
*(u16 *)((char *)a0 + 0xAC) |= 0x40; \
*(u16 *)((char *)a0 + 0xAA) |= 0x40; \
func_80171990((u8 *)a0); \
} \
}
#define DEFINE_func_80172D14() \
extern s16 func_80171AB0(s32 a0, void *a1); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
extern s16 D_80126B30; \
void func_80172D14(u8 * a0) \
{ \
if (func_80171AB0(a0, &D_80126B30) == 0) { \
func_80171A1C((u8 *)a0); \
func_80174650(a0); \
} \
}
#define DEFINE_func_8014B034() \
extern void func_8014B084(void); \
extern s16 D_80078E90; \
void func_8014B034(s32 a0) \
{ \
register s16 *ptr = &D_80078E90; \
s16 v; \
v = ptr[1] + a0; \
ptr[1] = v; \
if (v >= 0x5A0) { \
ptr[1] = v - 0x5A0; \
func_8014B084(); \
} \
}
#define DEFINE_func_80152BF0() \
extern s32 D_80062C14; \
extern void func_80019064(void *a0); \
extern int func_80151204(int arg, int a1); \
extern void func_80149020(s32 *a0); \
extern void func_80146CA0(void *a0); \
void func_80152BF0(s32 a0) \
{ \
func_80019064(&D_80062C14); \
func_80151204((int)a0, *(s16 *)((s32)a0 + 0xF2)); \
func_80149020((s32 *)a0); \
func_80146CA0(a0); \
}
#define DEFINE_func_80172958() \
extern s32 func_80171D1C(void *a0, void *a1, s32 a2); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
extern s16 D_80126B36; \
extern s16 D_80126B30; \
void func_80172958(u8 * a0) \
{ \
if (func_80171D1C(a0, &D_80126B30, *(u8 *)&D_80126B36)) { \
func_80171A1C(a0); \
func_80174650((s32)a0); \
} \
}
#define DEFINE_func_801508F8() \
extern s32 func_8015094C(s32 a0); \
short func_801508F8(s32 a0) \
{ \
if ((*((u8 *) (a0 + 0x1BF))) != 0) \
{ \
if ((*((u16 *) a0)) != 0x1A) \
{ \
while (func_8015094C(a0) != 0) \
{ \
; \
} \
} \
} \
}
#define DEFINE_func_80171CC4() \
extern s32 func_80171D78(s32 a0, s32 a1); \
extern int func_8017250C(short *a0, short *a1); \
extern void func_80146D90(s32 a0); \
s32 func_80171CC4(void * a0, void * a1) \
{ \
s32 ret; \
ret = func_80171D78(a0, a1); \
if (func_8017250C(a0, a1) != 0) { \
func_80146D90((s32)a0); \
} \
return ret; \
}
#define DEFINE_func_80171D1C() \
extern s32 func_80171FFC(short *a0, short *a1, s32 a2); \
extern int func_8017250C(short *a0, short *a1); \
extern void func_80146D90(s32 a0); \
s32 func_80171D1C(void * a0, void * a1, s32 a2) \
{ \
s32 ret; \
ret = func_80171FFC(a0, a1, a2 & 0xFF); \
if (func_8017250C(a0, a1) != 0) { \
func_80146D90((s32)a0); \
} \
return ret; \
}
#define DEFINE_func_801665B4() \
extern s32 func_80128ED8(void *a0, void *a1); \
extern void func_80146C3C(); \
extern void func_800D22E4(s32 a0); \
void func_801665B4(s32 *a0) \
{ \
if (func_80128ED8((void *)a0[8], (void *)(a0 + 9))) { \
func_80146C3C((s32)a0); \
} else { \
func_800D22E4((s32)a0); \
a0[5] -= a0[5] >> 3; \
} \
}
#define DEFINE_func_8017044C() \
extern s32 D_801151D4; \
extern s16 func_80171AB0(s32 a0, void *a1); \
extern void func_80171928(void *a0); \
void func_8017044C(u8 * a0) \
{ \
s16 buf[3]; \
s32 *p; \
p = (s32 *)D_801151D4; \
buf[0] = (s16)p[0xF]; /* 0x3C */ \
buf[1] = (s16)p[0x10]; /* 0x40 */ \
buf[2] = (s16)p[0x11]; /* 0x44 */ \
if (func_80171AB0(a0, buf) == 0) { \
func_80171928((void *)a0); \
} \
}
#define DEFINE_func_801533A4() \
extern s32 func_801472C8(struct S *a0); \
extern void func_8014CBF8(void *a0); \
extern void func_801474EC(s32 *a0); \
extern void func_80155440(s32 *a0); \
extern void func_80146CA0(void *a0); \
extern u8 D_80062C04[]; \
void func_801533A4(s32 a0) \
{ \
func_80019064(D_80062C04); \
func_80149020(a0); \
func_801472C8((struct S *)a0); \
*((u8 *)a0 + 0xDE) = 0x40; \
func_8014CBF8(a0); \
func_801474EC(a0); \
func_80155440(a0); \
func_80146CA0(a0); \
}
#define DEFINE_func_80157E38() \
extern void func_80154274(s32 *a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); \
extern void func_80147324(s32 a0); \
extern void func_80146CA0(void *a0); \
extern u8 D_800D4F14[]; \
void func_80157E38(void * a0) \
{ \
*((u8 *)a0 + 0x1AA) = 0xD; \
func_80154274(a0, (s32)D_800D4F14); \
func_80154A74((s32)a0, 0x15); \
func_80146994(5, (s32)a0, 0, 0); \
func_80147324(0x455); \
*(s16 *)((u8 *)a0 + 0x244) = 0; \
func_80146CA0((void *)a0); \
}
#define DEFINE_func_8015D57C() \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_801553A8(s32 *a0); \
extern void func_80155440(s32 *a0); \
extern void func_80146CA0(void *a0); \
extern void func_801746DC(void); \
void func_8015D57C(s32 arg0) \
{ \
s16 *p; \
func_80154150((s32)arg0, 0x19); \
func_801553A8(arg0); \
func_80155440(arg0); \
func_80146CA0(arg0); \
*(s32 *)((s8 *)arg0 + 0x234) = 0; \
p = *(s16 **)((s8 *)arg0 + 0x178); \
if (p != 0) { \
if (*(u16 *)p == 0x1F8) { \
*(s16 *)((s8 *)p + 0xFC) = 1; \
func_801746DC(); \
} \
} \
}
#define DEFINE_func_80170374() \
extern s32 func_8014C168(s32 *a0, s32 a1); \
extern s16 func_80171AB0(s32 a0, void *a1); \
extern void func_80171928(void *a0); \
extern void *D_8011F738; \
void func_80170374(u8 * a0) \
{ \
s16 sp[4]; \
s32 v0; \
v0 = func_8014C168(a0, (s32)D_8011F738); \
sp[0] = *(u16 *)(v0 + 0x6); \
sp[1] = *(u16 *)(v0 + 0xA); \
sp[2] = *(u16 *)(v0 + 0xE); \
if (func_80171AB0((s32)a0, sp) == 0) { \
func_80171928(a0); \
} \
}
#define DEFINE_func_8013B204() \
extern void func_8013B274(s32 a0, s32 a1, void *a2); \
extern short D_800B9A02; \
extern s32 D_800A651C; \
void func_8013B204(s32 a0, s32 a1) \
{ \
void *a2; \
s32 idx; \
a2 = a1; \
if (*(s16 *)((u8 *)a2 + 0xC) != 0) { \
return; \
} \
if (*(s16 *)a2 != 2) { \
return; \
} \
a2 = (u8 *)a2 + 8; \
idx = (u16)D_800B9A02; \
func_8013B274( \
(&D_800A651C)[idx * 5] + ((u16)(*(u16 *)((u8 *)a0 + 0x1A)) << 2), \
*(s16 *)((u8 *)a0 + 0x1C), \
a2); \
}
#define DEFINE_func_8014C43C() \
extern u16 func_80156370(u16 a0); \
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
s32 func_8014C43C(void * a0, s32 a1, s32 a2, s32 a3, s16 a4) \
{ \
u16 v0; \
v0 = func_80156370((u16)a2); \
func_8014C4AC(a1, a2, v0 & 0xFFFF, a3, (s16)a4); \
}
#define DEFINE_func_801701C8() \
extern s32 func_80012B04(s32 a0, s32 a1, s32 a2); \
extern void func_80171928(void *a0); \
extern void *D_8011F738; \
void func_801701C8(u8 * a0) \
{ \
s16 *p; \
s32 r; \
r = func_80012B04(((s16 **)a0)[8][9], *(s16 *)&D_8011F738, 4); \
if ((s16)r == 0) { \
func_80171928(a0); \
} \
p = ((s16 **)a0)[8]; \
((u16 *)p)[9] = (((u16 *)p)[9] + r) & 0xFFF; \
}
#define DEFINE_func_8015E0D4() \
int func_8015E0D4(int a0) \
{ \
s16 sp18[4]; \
s32 s0; \
s0 = *(s32 *)(a0 + 0x178); \
if (s0 != 0) { \
func_8014C1A0(a0, s0); \
func_80015978(s0 + 4, (s32 *)sp18); \
sp18[3] = 0; \
func_8014C4AC(s0, 0x11, func_80029AAC(), sp18, \
*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12)); \
*(s32 *)(a0 + 0x178) = 0; \
} \
}
#define DEFINE_func_80147D38() \
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_80147DC0(s32 a0, s32 a1); \
void func_80147D38(s32 a0, s32 a1, s32 a2, s32 a3, void * a4) \
{ \
func_80147948(a0, a1, 0x7FFFFFFF); \
func_801479BC(a0, a2, 0x7FFFFFFF); \
func_80147A30(a0, a3, 0x7FFFFFFF); \
func_80147DC0(a0, a4); \
}
#define DEFINE_func_80129398() \
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[]; \
void func_80129398(void) \
{ \
s32 i; \
s32 off; \
for (i = 0; i < 2; i++) { \
off = i * 0x54; \
*(s16 *)((char *)D_800B9AAC + off) = 0x7FFF; \
*(s16 *)((char *)D_800B9AAE + off) = 0; \
*(u16 *)((char *)D_800B9AB0 + off) = 0xFFFF; \
*(s16 *)((char *)D_800B9AB2 + off) = 0; \
*(s16 *)((char *)D_800B9AB4 + off) = 0x140; \
*(s16 *)((char *)D_800B9AB6 + off) = 0xEE; \
*(s16 *)((char *)D_800B9AB8 + off) = 0; \
*(s16 *)((char *)D_800B9ABA + off) = 0; \
off += 0x54; \
} \
}
#define DEFINE_func_80171D78() \
extern s32 func_8017248C(s32 a0, s32 a1); \
extern s32 ratan2(s32 a0, s32 a1); \
extern void func_80171EC8(s32 a0); \
extern void func_80146D90(s32 a0); \
s32 func_80171D78(s32 a0, s32 a1) \
{ \
s32 ret; \
s32 ang; \
s32 p; \
ret = func_8017248C(a0, a1); \
if (ret != 0) { \
func_80146D90(a0); \
return ret; \
} \
ang = ratan2(*(s16 *)(a1 + 0) - *(s16 *)(a0 + 6), \
*(s16 *)(a1 + 4) - *(s16 *)(a0 + 0xE)); \
ang = (ang + 0x800) & 0xFFF; \
p = *(s32 *)(a0 + 0x20); \
*(s16 *)(p + 0x12) = ang; \
func_80171EC8(a0); \
return 0; \
}
#define DEFINE_func_801776EC() \
extern u8 D_8011F7AB; \
void func_801776EC(u8 *a0) \
{ \
u8 *p; \
switch (D_8011F7AB) { \
default: \
D_8011F7AB = 0; \
case 0: \
a0[4] = 0xFF; \
a0[6] = 0x30; \
a0[5] = 0x30; \
break; \
case 1: \
a0[5] = 0xFF; \
a0[6] = 0x30; \
a0[4] = 0x30; \
break; \
case 2: \
a0[6] = 0xFF; \
a0[5] = 0x30; \
a0[4] = 0x30; \
break; \
} \
p = &D_8011F7AB; \
*p = *p + 1; \
}
#define DEFINE_func_8012B2CC() \
extern void func_80049CAC(s32 a0, s32 a1); \
void func_8012B2CC(s32 a0) \
{ \
s32 a1; \
s32 p; \
s16 v; \
a1 = *(s32 *)(a0 + 0x20); \
if (a1 != 0) { \
func_80049CAC(a1 + 0x10, a1 + 0x34); \
p = *(s32 *)(a0 + 0x20); \
v = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x50); \
*(s16 *)(p + 0x8) = v; \
*(s32 *)(p + 0x48) = v; \
v = *(u16 *)(a0 + 0xA) + *(u16 *)(a0 + 0x52); \
*(s16 *)(p + 0xA) = v; \
*(s32 *)(p + 0x4C) = v; \
v = *(u16 *)(a0 + 0xE) + *(u16 *)(a0 + 0x54); \
*(s16 *)(p + 0xC) = v; \
*(u16 *)(p + 0x2C) = *(u16 *)(p + 0x2C) | 1; \
*(s32 *)(p + 0x50) = v; \
} \
}
#define DEFINE_func_801525F4() \
extern void func_8014BC44(s32 a0, s32 a1); \
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(); \
void func_801525F4(s32 a0) \
{ \
s32 v1; \
func_8014BC44(a0, *(s16 *)(a0 + 0xF2)); \
*(s8 *)(a0 + 0xA8) = 0x20; \
func_80154A74(a0, 0x11); \
func_801553C0(a0); \
func_801470AC((s32 *)a0); \
func_801472B4((void *)a0); \
v1 = *(s32 *)(a0 + 0x20); \
*(s16 *)(a0 + 0x3E) = 0; \
*(s16 *)(a0 + 0x40) = 0; \
*(s16 *)(a0 + 0x42) = 0; \
*(s8 *)(a0 + 0xDD) = 0; \
*(s16 *)(a0 + 0x3C) = *(u16 *)(a0 + 0x3C) & 0xFFFE; \
*(s16 *)(v1 + 0x10) = 0; \
*(s16 *)(a0 + 0x60) = 0x1000; \
*(s16 *)(a0 + 0x62) = 0x1000; \
*(s16 *)(a0 + 0x64) = 0x1000; \
func_801477E8((s32 *)a0, 0); \
func_80153C18(a0); \
}
#define DEFINE_func_8014C5FC() \
extern s32 func_80047D3C(s32 a0); \
extern s32 ratan2(s32 a0, s32 a1); \
s32 func_8014C5FC(s32 a0, s32 a1, void * a2) \
{ \
s32 dx; \
s32 dz; \
s32 dy; \
s32 r; \
dz = (s16)(*(u16 *)((s32)a1 + 0xE) + *(u16 *)((s32)a2 + 0x4) - *(u16 *)((s32)a0 + 0xE)); \
dx = (s16)(*(u16 *)((s32)a1 + 0x6) + *(u16 *)((s32)a2 + 0x0) - *(u16 *)((s32)a0 + 0x6)); \
r = func_80047D3C(dz * dz + dx * dx); \
dy = *(s16 *)((s32)a1 + 0xA) + *(s16 *)((s32)a2 + 0x2) - *(s16 *)((s32)a0 + 0xA); \
return ratan2(dy, (s16)r) & 0xFFF; \
}
#define DEFINE_func_8014FC18() \
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
s32 func_8014FC18(u8 *self) \
{ \
s16 src[4]; \
s16 dst[4]; \
s32 ret; \
src[0] = *(u16 *)(self + 0x6); \
src[1] = *(u16 *)(self + 0xA); \
src[2] = *(u16 *)(self + 0xE); \
dst[0] = *(u16 *)(self + 0x6); \
dst[1] = *(u16 *)(self + 0xA) + 0x10; \
dst[2] = *(u16 *)(self + 0xE); \
ret = func_80133784(1, src, (s32)dst); \
if (ret != 0) { \
*(u16 *)(self + 0x6) = dst[0]; \
*(u16 *)(self + 0xA) = dst[1]; \
*(u16 *)(self + 0xE) = dst[2]; \
if (*(u8 *)&dst[3] != 0) { \
*(s16 *)(self + 0x16C) = *(u8 *)&dst[3]; \
} \
*(s16 *)(self + 0x16E) = (u16)dst[3] >> 13; \
return ret; \
} \
if (*(u8 *)&dst[3] != 0) { \
*(s16 *)(self + 0x16C) = *(u8 *)&dst[3]; \
} \
return 0; \
}
#define DEFINE_func_80161124() \
extern void func_801483E8(void); \
extern void func_8014CBF8(void *a0); \
extern void func_801474EC(s32 *a0); \
extern void func_80154150(s32 a0, s32 a1); \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_80146E90(s32 *a0, s32 a1); \
extern s32 func_80149184(s32 a0); \
extern void func_801553A8(s32 *a0); \
extern s32 func_801725A4(u8 *a0); \
extern s32 func_80161A60(s32 a0); \
extern void func_80147324(s32 a0); \
extern s16 D_801152A0; \
void func_80161124(void *a0) \
{ \
u8 *self = (u8 *)a0; \
*(s16 *)(self + 0x24A) = 0; \
func_801483E8(); \
func_8014CBF8(a0); \
func_801474EC((s32 *)a0); \
if (*(s32 *)(self + 0x2C) < (s32)0xFFF46000) { \
*(s32 *)(self + 0x2C) = 0xFFF46000; \
} \
if ((*(s32 *)(self + 0x24) | *(s32 *)(self + 0x2C)) != 0) { \
func_80154150((s32)self, 0xF); \
} else { \
func_80154150((s32)self, 0xD); \
} \
func_80154A74((s32)self, 0x22); \
*(s32 *)(self + 0x5C) = 0; \
*(s32 *)(self + 0x240) = 0; \
func_80146E90((s32 *)self, 4); \
D_801152A0 = func_80149184((s32)self); \
func_801553A8((s32 *)self); \
func_801725A4((u8 *)self); \
if (func_80161A60((s32)self) != 0) { \
func_80147324(0x8E1); \
} \
}
#define DEFINE_func_8016EE94() \
extern void func_801726D0(void *a0); \
extern s32 D_80126D50; \
extern s32 D_80126B58; \
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 u8 D_800B9A17; \
extern s16 D_80126D20; \
void func_8016EE94(s32 a0, s32 a1) \
{ \
a0 = a0 | 0x4000000; \
D_80126D50 = a0 | a1; \
D_80126D54 = 0; \
D_80126D6C = 0; \
D_80126D6D = 0; \
D_80126D6E = 0; \
D_80126D5C = 0; \
D_80126D60 = 0; \
D_80126D64 = 0; \
D_80126D66 = 0; \
D_80126D68 = 0; \
D_80126D6A = 0; \
D_80126D1A = 0; \
D_80127058 = 0; \
D_8012705C = 0; \
D_80127060 = 0; \
D_80127064 = 0; \
D_80127068 = 0; \
D_8012706C = 0; \
D_80127070 = 0; \
D_80127074 = 0; \
func_801726D0(&D_80126B58); \
D_800B9A17 = 0; \
D_80126D20 = 0; \
}
#define DEFINE_func_8014BB24() \
extern s32 func_80029178(s32 a0); \
extern u8 D_80078E78[]; \
extern s16 D_80078EB4; \
void func_8014BB24(s32 a0, s32 a1, s32 a2) \
{ \
u8 *base = D_80078E78; \
u16 cur; \
if (a2 != 0) { \
D_80078EB4 = (u16)D_80078EB4 + a1; \
} else { \
if ((func_80029178(0x1B) & 0xFF) != 0) { \
cur = D_80078EB4; \
if (cur < 0x3E7) { \
D_80078EB4 = cur + a1; \
if ((u16)(cur + a1) >= 0x3E8) { \
D_80078EB4 = 0x3E7; \
} \
} \
} else { \
cur = D_80078EB4; \
if (cur < 0x1F4) { \
D_80078EB4 = cur + a1; \
if ((u16)(cur + a1) >= 0x1F5) { \
D_80078EB4 = 0x1F4; \
} \
} \
} \
} \
if (*(u16 *)(base + 0x3A) < *(u16 *)(base + 0x3C)) { \
*(u16 *)(base + 0x3C) = *(u16 *)(base + 0x3A); \
} \
}
#define DEFINE_func_8015E5B0() \
extern s32 func_80133784(s32 a0, void *a1, s32 a2); \
extern void func_80015978(s32 a0, s32 *a1); \
extern void func_8014C4AC(s32 a0, s32 a1, s32 a2, s16 *a3, s32 a4); \
void func_8015E5B0(u8 *self) \
{ \
u8 *obj; \
s16 src[4]; \
s16 dst[4]; \
obj = *(u8 **)(self + 0x18C); \
if (obj == 0) { \
return; \
} \
src[0] = *(u16 *)(self + 0x6); \
src[1] = *(u16 *)(self + 0xA) - 0x14; \
src[2] = *(u16 *)(self + 0xE); \
dst[0] = *(u16 *)(obj + 0x6); \
dst[1] = *(u16 *)(obj + 0xA); \
dst[2] = *(u16 *)(obj + 0xE); \
if (func_80133784(0, src, (s32)dst) != 0) { \
*(u16 *)(obj + 0x6) = dst[0]; \
*(u16 *)(obj + 0xA) = dst[1]; \
*(u16 *)(obj + 0xE) = dst[2]; \
} \
func_80015978((s32)(obj + 4), (s32 *)src); \
src[3] = 0; \
func_8014C4AC((s32)obj, 0x1C, 0, src, \
*(s16 *)(*(u8 **)(self + 0x20) + 0x12)); \
*(s32 *)(self + 0x18C) = 0; \
}
#define DEFINE_func_80172E20() \
extern s32 D_80127508; \
extern s16 func_80171AB0(s32 a0, void *a1); \
extern void func_80171A1C(u8 *a0); \
extern s32 func_80174650(s32); \
void func_80172E20(u8 * a0) \
{ \
struct Src80172E20 *p = (struct Src80172E20 *)D_80127508; \
u16 sp10[3]; \
sp10[0] = p->_6; \
sp10[1] = p->_A; \
sp10[2] = p->_E; \
if (func_80171AB0(a0, sp10) == 0) { \
func_80171A1C((u8 *)a0); \
func_80174650(a0); \
} \
}
#define DEFINE_func_8014706C() \
void func_8014706C(void *arg0) { \
M2C_FIELD(arg0, s8 *, 0x4D) = 2; \
}
#define DEFINE_func_8014708C() \
void func_8014708C(void *arg0) { \
M2C_FIELD(arg0, s8 *, 0x221) = 1; \
}
#define DEFINE_func_801470B4() \
void func_801470B4(s32 arg0) \
{ \
M2C_FIELD(arg0, s8 *, 0x222) = 1; \
}
#define DEFINE_func_8012AD50() \
s32 func_8012AD50(void * arg0) \
{ \
M2C_FIELD(arg0, s16 *, 0x34) = 0; \
M2C_FIELD(arg0, u16 *, 2) = (u16) (M2C_FIELD(arg0, u16 *, 2) + 1); \
}
#define DEFINE_func_80151184() \
s32 func_80151184(s32 arg0, s32 arg1, s32 arg2) \
{ \
u16 *new_var; \
int new_var2; \
*((s16 *) (((s8 *) arg0) + 0x3E)) = arg1; \
*((s16 *) (((s8 *) arg0) + 0x40)) = arg2; \
new_var = (u16 *) (((s8 *) arg0) + 0x42); \
new_var2 = (u16) (*((u16 *) (((s8 *) (*((void **) (((s8 *) arg0) + 0x20)))) + 0x12))); \
*((u16 *) (((s8 *) arg0) + 0x3C)) = (u16) ((*((u16 *) (((s8 *) arg0) + 0x3C))) | 1); \
*new_var = new_var2; \
}
#define DEFINE_func_80139914() \
extern void func_8013A8B0(s32 *a0); \
void func_80139914(s32 arg0) \
{ \
s32 temp_a0; \
M2C_FIELD(arg0, s16 *, 4) = 0; \
M2C_FIELD(arg0, s32 *, 0) = 0; \
if (M2C_FIELD(arg0, u16 *, 0x18) != 0) { \
temp_a0 = M2C_FIELD(arg0, s32 *, 0x40); \
if (temp_a0 != 0) { \
func_8013A8B0(temp_a0); \
} \
} \
}
#define DEFINE_func_80147324() \
extern void func_80147364(u16, s32); \
extern void *D_8012707C; \
void func_80147324(s32 arg0) { \
s32 temp_a0; \
temp_a0 = arg0 & 0xFFFF; \
if (temp_a0 == D_8012707C) { \
D_8012707C = 0; \
return; \
} \
func_80147364(temp_a0, 0); \
}
#define DEFINE_func_80165A78() \
extern void func_80165AC8(void); \
void func_80165A78(s32 arg0) \
{ \
void *temp_a0; \
func_80165AC8(); \
temp_a0 = M2C_FIELD(arg0, void **, 0x20); \
M2C_FIELD(arg0, s8 *, 0x197) = 0; \
M2C_FIELD(arg0, s32 *, 0x44) = (s32) (M2C_FIELD(arg0, s32 *, 0x44) & ~8); \
M2C_FIELD(temp_a0, u16 *, 0x2C) = (u16) (M2C_FIELD(temp_a0, u16 *, 0x2C) & 0xFFDF); \
}
#define DEFINE_func_801554B8() \
extern s32 func_801659DC(u8 *a0); \
s32 func_801554B8(void *arg0) { \
s32 var_v0; \
u8 temp_a0; \
temp_a0 = M2C_FIELD(arg0, u8 *, 0x1A0); \
var_v0 = 0; \
if (temp_a0 != M2C_FIELD(arg0, u8 *, 0x196)) { \
if (func_800D02D0(temp_a0) != 0) { \
M2C_FIELD(arg0, u8 *, 0x196) = (u8) M2C_FIELD(arg0, u8 *, 0x1A0); \
func_801659DC(arg0); \
return 0; \
} \
var_v0 = 1; \
/* Duplicate return node #4. Try simplifying control flow for better match */ \
return var_v0; \
} \
return var_v0; \
}
#define DEFINE_func_801530E4() \
extern void func_80019064(void *a0); \
extern void func_80146CA0(void *a0); \
extern s32 func_801472C8(struct S *a0); \
extern void func_801474EC(s32 *a0); \
extern void func_80149020(s32 *a0); \
extern void func_8014CBF8(void *a0); \
extern void func_80155440(s32 *a0); \
extern u8 D_80062C04[]; \
void func_801530E4(s32 arg0) \
{ \
func_80019064(&D_80062C04); \
func_80149020(arg0); \
func_801472C8(arg0); \
M2C_FIELD(arg0, s8 *, 0xDE) = 0x40; \
func_8014CBF8(arg0); \
func_801474EC(arg0); \
func_80155440(arg0); \
func_80146CA0(arg0); \
}
#define DEFINE_func_8016B448() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
extern s32 func_8014C050(s32 a0, s32 a1); \
extern void func_8016B984(void *a0); \
extern s32 D_80126B58; \
s32 func_8016B448(s32 arg0, s32 arg1) \
{ \
s32 temp_v0; \
temp_v0 = func_8014C050(&D_80126B58, 0x1E); \
if (temp_v0 != 0) { \
func_8016B984(temp_v0); \
} \
func_80146A6C(0x1E, arg0, M2C_FIELD(arg0, s16 *, 0x7C), M2C_FIELD(arg0, s16 *, 0x7E), (s32) M2C_FIELD(arg0, s16 *, 0x80), arg1, 0); \
}
#define DEFINE_func_801485B8() \
void func_801485B8(s32 arg0, s32 arg1, s32 arg2) \
{ \
M2C_FIELD(arg1, s16 *, 0) = (s16) (s8) M2C_FIELD(arg0, u8 *, 0); \
M2C_FIELD(arg1, s16 *, 2) = (s16) (s8) M2C_FIELD(arg0, u8 *, 1); \
M2C_FIELD(arg1, s16 *, 4) = (s16) (s8) M2C_FIELD(arg0, u8 *, 2); \
M2C_FIELD(arg2, s16 *, 0) = (s16) (s8) M2C_FIELD(arg0, u8 *, 3); \
M2C_FIELD(arg2, s16 *, 2) = (s16) (s8) M2C_FIELD(arg0, u8 *, 4); \
M2C_FIELD(arg2, s16 *, 4) = (s16) (s8) M2C_FIELD(arg0, u8 *, 5); \
}
#define DEFINE_func_8014E790() \
s32 func_8014E790(s32 arg0, s16 * arg1, s16 * arg2) \
{ \
s32 temp_a1; \
void *temp_s0; \
temp_s0 = M2C_FIELD(arg0, void **, 0x180); \
if ((M2C_FIELD(temp_s0, u16 *, 0) == 0) || !(M2C_FIELD(temp_s0, u16 *, 0x5C) & 0x20) || (temp_a1 = M2C_FIELD(temp_s0, s32 *, 0x58), (temp_a1 == 0)) || (func_80135888(M2C_FIELD(temp_s0, s32 *, 0x20), temp_a1, arg1, arg2) == 0)) { \
M2C_FIELD(arg0, void **, 0x180) = NULL; \
return 0; \
} \
M2C_FIELD(arg0, u16 *, 6) = (u16) M2C_FIELD(temp_s0, u16 *, 6); \
M2C_FIELD(arg0, u16 *, 0xA) = (u16) M2C_FIELD(temp_s0, u16 *, 0xA); \
M2C_FIELD(arg0, u16 *, 0xE) = (u16) M2C_FIELD(temp_s0, u16 *, 0xE); \
return 1; \
}
#define DEFINE_func_8012D3B4() \
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; \
void func_8012D3B4(s32 arg0, s32 arg1, s32 arg2) { \
s32 sp10; \
s32 sp14; \
s32 temp_v0_2; \
void *temp_v0; \
temp_v0 = func_80010A08(0x10); \
(*(s32 *)((s8*)(temp_v0)+(4))) = arg2; \
SetLineF2(temp_v0); \
func_8004914C(&D_800AF648); \
func_800491AC(&D_800AF648); \
temp_v0_2 = RotTransPers(arg0, temp_v0 + 8, &sp10, &sp14); \
if ((temp_v0_2 > 0) && (sp14 >= 0) && (RotTransPers(arg1, temp_v0 + 0xC, &sp10, &sp14) > 0) && (sp14 >= 0)) { \
AddPrim(*(s32 *)((s8 *)&D_800A651C + ((u16)D_800B9A02 * 0x14)) + (temp_v0_2 * 4), temp_v0); \
} \
}
#define DEFINE_func_801303A0() \
extern void func_8012E364(void); \
extern void func_80131CA8(int a0, int a1); \
void func_801303A0(s32 a0) { \
if (*(s32 *)(a0 + 0xB4) & 0x2) { \
((void (*)(s32))func_8012E364)(a0); \
} \
func_80131CA8(a0, 2); \
}
#define DEFINE_func_8015773C() \
extern void func_80154A74(s32 a0, s32 a1); \
extern void func_801553C0(s32 a0); \
extern void func_801553A8(s32 *a0); \
s32 func_8015773C(u8 * arg0) \
{ \
*(s32 *)((u8 *)arg0 + 0x44) = *(s32 *)((u8 *)arg0 + 0x44) & ~2; \
func_80154A74((s32)arg0, 0x11); \
func_801553C0((s32)arg0); \
func_801553A8(arg0); \
}
#define DEFINE_func_8012BE98() \
extern s32 func_800132BC(s32 a0, s32 a1); \
void func_8012BE98(s32 arg0, u16 * arg1) \
{ \
s16 a[3]; \
s16 b[3]; \
a[0] = *(u16 *)((u8 *)arg0 + 0x6); \
a[1] = 0; \
a[2] = *(u16 *)((u8 *)arg0 + 0xE); \
b[0] = *(u16 *)((u8 *)arg1 + 0x0); \
b[1] = 0; \
b[2] = *(u16 *)((u8 *)arg1 + 0x4); \
func_800132BC((s32)a, (s32)b); \
}
#define DEFINE_func_8012A7D4() \
extern s32 D_801151D4; \
void func_8012A7D4(void *arg0, void *arg1) { \
s32 p; \
p = D_801151D4; \
*(s16 *)((u8 *)arg0 + 0x0) = *(s32 *)(p + 0x3C); \
*(s16 *)((u8 *)arg0 + 0x2) = *(s32 *)(p + 0x40); \
*(s16 *)((u8 *)arg0 + 0x4) = *(s32 *)(p + 0x44); \
*(s16 *)((u8 *)arg1 + 0x0) = *(s32 *)(p + 0x48); \
*(s16 *)((u8 *)arg1 + 0x2) = *(s32 *)(p + 0x4C); \
*(s16 *)((u8 *)arg1 + 0x4) = *(s32 *)(p + 0x50); \
}
#define DEFINE_func_8012C51C() \
extern u8 D_80126720[]; \
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); \
s32 func_8012C51C(void *a0, s32 a1) { \
u8 *base = D_80126720; \
u8 *p; \
s32 ret; \
if (a1 == 0) { \
p = base - 0x6480; \
} else { \
p = (u8 *)(a1 + 0x10C); \
} \
if (p != base) { \
do { \
if (*(u16 *)p == 0) goto found; \
p += 0x10C; \
} while (p != base); \
} \
p = 0; \
found: \
ret = 0; \
if (p != 0) { \
ret = func_8012C890((s32)a0, (s32)p, a1); \
} \
return ret; \
}
#define DEFINE_func_801301E8() \
extern s32 func_8012BEE8(s32 a0); \
extern void func_80130D48(s32 a0); \
extern void func_801319E0(s32 a0); \
extern void func_80131CA8(int a0, int a1); \
void func_801301E8(u8 *a0) { \
if (*(s32 *)(a0 + 0xB4) & 0x2000) { \
if (*(u8 *)(a0 + 0xC3) != 0) { \
if (*(u16 *)(a0 + 0x72) & 0x4000) { \
func_80130D48((s32)a0); \
func_801319E0((s32)a0); \
} \
} else if (func_8012BEE8((s32)a0) != 0) { \
func_80130D48((s32)a0); \
func_801319E0((s32)a0); \
} \
} \
func_80131CA8((int)a0, 0x26); \
}
#define DEFINE_func_80130278() \
extern void func_80131CA8(int a0, int a1); \
extern void func_80131170(s32 a0, s32 a1, s32 a2); \
extern void func_80131E00(struct S80131E00 *a0, s32 a1); \
void func_80130278(s32 arg0) { \
s32 flag; \
flag = 0; \
*(u8 *)(arg0 + 0xC1) = 0xB; \
if (*(s32 *)(arg0 + 0xC4) & 1) { \
func_80131E00((struct S80131E00 *)arg0, 0xE); \
return; \
} \
if (*(s32 *)(arg0 + 0xB4) & 0x800) { \
func_80131170(arg0, 0, 0); \
flag = 1; \
} \
if (((s32 (*)(int, int))func_80131CA8)(arg0, 0x2C) != 0) { \
flag = 1; \
} \
if (flag == 0) { \
func_80131E00((struct S80131E00 *)arg0, 6); \
} \
}
#define DEFINE_func_8012C588() \
extern u8 D_801202A0[]; \
extern s32 func_8012C890(s32 a0, s32 a1, s32 a2); \
s32 func_8012C588(s32 a0, s32 a1) { \
s32 p; \
s32 end; \
s32 v0; \
s32 q; \
s16 sp[10]; \
if (a1 != 0 && *(u16*)a1 != 0) { \
sp[0] = *(u16*)(a1 + 0x6); \
sp[1] = *(u16*)(a1 + 0xA); \
sp[2] = *(u16*)(a1 + 0xE); \
} else { \
sp[2] = 0; \
sp[1] = 0; \
sp[0] = 0; \
} \
sp[3] = a0; \
q = (s32)&sp[0]; \
sp[5] = 0; \
sp[4] = 0; \
*(s32*)&sp[8] = 0; \
sp[7] = 0; \
sp[6] = 0x7FFF; \
end = (s32)D_801202A0 + 0x6480; \
if (a1 == 0) { \
p = (s32)D_801202A0; \
} else { \
p = a1 + 0x10C; \
} \
if (p != end) { \
for (;;) { \
if (*(u16*)p == 0) { \
goto found; \
} \
p += 0x10C; \
if (p == end) { \
break; \
} \
} \
} \
p = 0; \
found: \
v0 = 0; \
if (p != 0) { \
v0 = func_8012C890(q, p, a1); \
} \
return v0; \
}
#define DEFINE_func_80147B5C() \
extern s32 D_80127090; \
extern s32 D_80127094; \
extern s32 D_80127098; \
void func_80147B5C(s32 arg0, void *arg1) { \
if (*(s32 *)(arg0 + 0x44) & 0x400000) { \
D_80127090 = *(s32 *)(arg0 + 0x24); \
} else { \
D_80127090 = *(s32 *)arg1; \
} \
if (*(s32 *)(arg0 + 0x44) & 0x800000) { \
D_80127094 = *(s32 *)(arg0 + 0x28); \
} else { \
D_80127094 = *(s32 *)((u8 *)arg1 + 0x4); \
} \
if (*(s32 *)(arg0 + 0x44) & 0x1000000) { \
D_80127098 = *(s32 *)(arg0 + 0x2C); \
} else { \
D_80127098 = *(s32 *)((u8 *)arg1 + 0x8); \
} \
*(s32 *)(arg0 + 0x10) = D_80127090; \
*(s32 *)(arg0 + 0x14) = D_80127094; \
*(s32 *)(arg0 + 0x18) = D_80127098; \
D_80127090 = 0; \
D_80127094 = 0; \
D_80127098 = 0; \
}
#define DEFINE_func_8012E8E0() \
extern void func_80049CAC(s32 a0, s32 a1); \
void func_8012E8E0(s32 a0, s32 a1) \
{ \
s32 v1; \
s32 p; \
s16 v; \
u16 e; \
v1 = *(s32 *)(a0 + 0x20); \
*(s16 *)(a0 + 0x6) = *(u16 *)(a1 + 0x0); \
*(s16 *)(a0 + 0xA) = *(u16 *)(a1 + 0x2); \
e = *(u16 *)(a1 + 0x4); \
*(s16 *)(a0 + 0xC) = 0; \
*(s16 *)(a0 + 0x8) = 0; \
*(s16 *)(a0 + 0x4) = 0; \
*(s16 *)(a0 + 0xE) = e; \
if (v1 != 0) { \
*(s16 *)(v1 + 0x12) = *(u16 *)(a1 + 0x6); \
a1 = *(s32 *)(a0 + 0x20); \
if (a1 != 0) { \
func_80049CAC(a1 + 0x10, a1 + 0x34); \
p = *(s32 *)(a0 + 0x20); \
v = *(u16 *)(a0 + 0x6) + *(u16 *)(a0 + 0x50); \
*(s16 *)(p + 0x8) = v; \
*(s32 *)(p + 0x48) = v; \
v = *(u16 *)(a0 + 0xA) + *(u16 *)(a0 + 0x52); \
*(s16 *)(p + 0xA) = v; \
*(s32 *)(p + 0x4C) = v; \
v = *(u16 *)(a0 + 0xE) + *(u16 *)(a0 + 0x54); \
*(s16 *)(p + 0xC) = v; \
*(u16 *)(p + 0x2C) = *(u16 *)(p + 0x2C) | 1; \
*(s32 *)(p + 0x50) = v; \
} \
} \
}
#define DEFINE_func_8012832C() \
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); \
void func_8012832C(void) { \
s32 a0 = func_80029504(); \
s32 v0; \
switch (currentLocationId) { \
case 0x300E: \
if (func_800CF854(a0) == 0) { \
v0 = func_80128998(); \
} else { \
v0 = func_801289F0(); \
} \
break; \
case 0x30A0: \
if (a0 < 0x640) { \
v0 = func_801288E8(a0); \
} else { \
v0 = func_80128940(a0); \
} \
break; \
case 0x3014: \
if (a0 == 0x4B0 && (func_80029178(0x138) & 0xFF) == 0) { \
v0 = func_801288B0(); \
} else { \
v0 = 1; \
} \
break; \
default: \
func_80011C10(); \
return; \
} \
if (v0 != 0) { \
func_80011C10(); \
} \
}
#define DEFINE_func_8012A988() \
extern s32 func_8012ACE0(void *a0); \
extern void func_8012AAAC(void); \
void func_8012A988(u8 *a0) { \
s32 v0; \
s16 t; \
u16 flags; \
*(u16 *)(a0 + 0x72) = *(u16 *)(a0 + 0x72) & 0x9FFF; \
if (*(u16 *)(a0 + 0x0) == 0) return; \
if (*(u8 *)(a0 + 0xC1) == 0x11) return; \
t = *(s16 *)(a0 + 0x98); \
if (t == 0) return; \
t = t - 1; \
*(s16 *)(a0 + 0x98) = t; \
if (t > 0) return; \
if (*(s32 *)(a0 + 0x90) == 0) return; \
flags = *(u16 *)(a0 + 0x72); \
if (flags & 0x400) { \
v0 = *(s32 *)(a0 + 0x94) - 1; \
*(s32 *)(a0 + 0x94) = v0; \
if (v0 < 0) { \
*(s32 *)(a0 + 0x94) = 1; \
*(u16 *)(a0 + 0x72) = *(u16 *)(a0 + 0x72) & 0xFBFF; \
} \
} else if (flags & 0x200) { \
v0 = *(s32 *)(a0 + 0x94) - 1; \
*(s32 *)(a0 + 0x94) = v0; \
if (v0 < 0) { \
s32 idx = func_8012ACE0(a0); \
if (*(s16 *)((idx * 8) + *(s32 *)(a0 + 0x90) + 4) != -1) { \
*(s32 *)(a0 + 0x94) = 0; \
*(s16 *)(a0 + 0x98) = 0; \
return; \
} \
*(s32 *)(a0 + 0x94) = idx - 1; \
} \
} else { \
*(s32 *)(a0 + 0x94) = *(s32 *)(a0 + 0x94) + 1; \
} \
((void (*)(u8 *))func_8012AAAC)(a0); \
}
#define DEFINE_func_801399A8() \
extern s32 D_801269F0; \
extern s32 D_80126A3C; \
s32 func_801399A8(void) { \
s32 iVar2; s32 puVar3; s32 iVar1; \
for (iVar2 = 1, puVar3 = (s32)&D_80126A3C, iVar1 = 0x4C; iVar2 < 3; puVar3 += 0x4C, iVar2++, iVar1 += 0x4C) { \
if (*(s32 *)((s32)&D_801269F0 + iVar1) == 0) return puVar3; \
} \
return 0; \
}
#define DEFINE_func_8012B8E4() \
extern s16 D_80126CB8; \
extern s16 D_80126CB4; \
extern s32 ratan2(s32 a0, s32 a1); \
s32 func_8012B8E4(s32 arg0, s32 arg1) { \
register s32 d __asm__("$16"); \
register s32 s1ang __asm__("$17"); \
s32 u5; s32 u6; s32 iVar4; s32 q; s32 t; \
d = arg1; \
s1ang = *(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12); \
u5 = (ratan2(*(s16 *)(arg0 + 0xE) - D_80126CB8, D_80126CB4 - *(s16 *)(arg0 + 6)) - 0x400) & 0xFFF; \
__asm__ __volatile__("" : : "r"(u5)); \
d = (s16)d; \
u6 = s1ang & 0xFFF; \
if (u6 == u5) return 0; \
iVar4 = u5 - u6; \
if (iVar4 > 0x800) { t = u6 + 0x1000; iVar4 = u5 - t; } \
if (iVar4 < -0x800) { t = u6 - 0x1000; iVar4 = u5 - t; } \
if (iVar4 >= 0) { q = iVar4 / d; if (q == 0) q = 1; } \
else { q = iVar4 / d; if (q == 0) q = -1; } \
return q; \
}
#define DEFINE_func_8012CB64() \
s32 func_8012CB64(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { \
register s32 v0 __asm__("$2"); \
register s32 v1 __asm__("$3"); \
v0 = 0; \
v1 = *(s16*)arg0; \
if (((arg1 <= v1) && (v1 < arg2)) && (arg3 <= *(s16*)(arg0 + 4))) { \
v0 = *(s16*)(arg0 + 4) < arg4; \
} \
return v0; \
}
#define DEFINE_func_801319E0() \
extern void func_80131CA8(int a0, int a1); \
extern void func_8002A04C(s32 a0); \
extern void func_8012C218(void *a0); \
void func_801319E0(s32 arg0) { \
/* arg0 stays in $s0 (callee-saved) across all three calls -- live across each jal, \
* so clean C allocates it there naturally (no register pin needed). */ \
if (((s32 (*)(int, int))func_80131CA8)(arg0, 0x11) == 0) { \
if (*(s32 *)(arg0 + 0x78) != 0) { \
func_8002A04C(arg0); \
} \
func_8012C218((void *)arg0); \
} \
}
#define DEFINE_func_80143B6C() \
extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); \
s32 func_80143B6C(s32 arg0, s32 arg1) { \
s32 iVar1; \
iVar1 = func_8012C658(0x1C, arg1, arg0); \
if (((iVar1 != 0) && (*(s32*)(arg0 + 0x20) != 0)) && (arg1 == 0)) { \
*(s16*)(iVar1 + 0xFC) = *(u16*)(*(s32*)(arg0 + 0x20) + 0x12); \
} \
return iVar1; \
}
#define DEFINE_func_80149B54() \
extern u8 func_8014BEF8(void); \
s32 func_80149B54(s32 * arg0) \
{ \
s32 var_v0; \
u32 temp; \
if ((*(u32*)((u8*)arg0 + 0x44) & 0x400) != 0) { var_v0 = 0; goto end; } \
if (((s32(*)(s32*))func_8014BEF8)(arg0) == 0) { var_v0 = 0; goto end; } \
temp = *(u16*)((u8*)arg0 + 0xAC) & 0x10; \
var_v0 = temp != 0; \
end: \
return var_v0; \
}
#define DEFINE_func_801468C8() \
extern s32 D_8011F750; \
extern s32 D_8011F754; \
u8 *func_801468C8(s32 arg0, u8 arg1) { \
register u8 *var_a2 __asm__("$6"); /* $a2 — returned base ptr */ \
register u8 *var_v1 __asm__("$3"); /* $v1 — scan/store ptr */ \
s32 var_t0; \
s32 var_a3; \
var_t0 = 0; \
var_a2 = (u8 *)(s32)&D_8011F750; \
var_v1 = var_a2; \
var_a3 = 0; \
do { \
if (*var_v1 != 0) { \
var_a2 += 0x2C; \
var_v1 += 0x2C; \
var_t0 += 1; \
var_a3 += 0x2C; \
} else { \
*(s32 *)((s32)&D_8011F754 + var_a3) = arg0; \
*var_v1 = arg1; \
return var_a2; \
} \
} while (var_t0 < 2); \
return (u8 *)0; \
}
#define DEFINE_func_80146994() \
extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); \
s32 func_80146994(s32 arg0, s32 arg1, s32 arg2, s32 arg3) \
{ \
func_80146A6C(arg0 & 0xFFFF, (void *)arg1, 0, 0, 0, arg2, arg3); \
}
#define DEFINE_func_80149544() \
extern void func_8012F14C(s32); \
extern void func_8012EF70(s32 a0, s32 a1); \
void func_80149544(s32 arg0, s32 arg1, s32 arg2) { \
s32 sp10[2]; \
((void(*)(s32,s32,s32))func_8012F14C)(*(s32 *)(arg0 + 0x20) + 0x34, arg1, (s32)sp10); \
func_8012EF70((s32)sp10, arg2); \
}
#define DEFINE_func_8012913C() \
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); \
u8 * func_8012913C(s32 arg0) \
{ \
s32 iVar1; \
u8 *puVar2; \
iVar1 = ((s32(*)(s32,s32))func_8001D074)(0x7E, 0x100); \
if (iVar1 == 0) { \
return (u8 *)0; \
} \
puVar2 = func_801291C0(); \
if (puVar2 == (u8 *)0) { \
return (u8 *)0; \
} \
*(s16 *)puVar2 = arg0; \
*(s32 *)(puVar2 + 0x20) = iVar1; \
func_8001CC3C(iVar1, 0, 0, 0); \
return puVar2; \
}
#define DEFINE_func_80149584() \
extern void func_8012F14C(s32); \
extern void func_8012EFB8(s32 a0); \
void func_80149584(s32 arg0, s32 arg1, s32 arg2) { \
s8 buf[8]; \
((void(*)(s32,s32,s32))func_8012F14C)(*(s32 *)(arg0 + 0x20) + 0x34, arg1, (s32)buf); \
((void(*)(s32,s32))func_8012EFB8)((s32)buf, arg2); \
}
#endif