#ifndef POKEPLATINUM_UNK_02018340_H
#define POKEPLATINUM_UNK_02018340_H

#include "struct_decls/struct_02018340_decl.h"
#include "struct_defs/struct_0201AE08.h"
#include "struct_defs/struct_0205AA50.h"
#include "overlay061/struct_ov61_0222C884.h"
#include "overlay084/struct_ov84_0223BA5C.h"
#include "overlay097/struct_ov97_0222DB78.h"

#include <nitro/fx/fx.h>

UnkStruct_02018340 * sub_02018340(u32 param0);
u32 sub_02018364(UnkStruct_02018340 * param0);
void sub_02018368(const UnkStruct_ov84_0223BA5C * param0);
void sub_020183A0(const UnkStruct_ov84_0223BA5C * param0, u8 param1);
void sub_020183C4(UnkStruct_02018340 * param0, u8 param1, const UnkStruct_ov97_0222DB78 * param2, u8 param3);
void sub_02018898(UnkStruct_02018340 * param0, u8 param1, u8 param2, u8 param3);
void sub_02019044(UnkStruct_02018340 * param0, u8 param1);
void sub_02019060(u8 param0, u8 param1);
void sub_02019120(u8 param0, u8 param1);
void sub_02019184(UnkStruct_02018340 * param0, u8 param1, u8 param2, int param3);
int sub_020192EC(UnkStruct_02018340 * param0, u32 param1);
int sub_020192F8(UnkStruct_02018340 * param0, u32 param1);
void sub_02019348(UnkStruct_02018340 * param0, u8 param1, const MtxFx22 * param2, int param3, int param4);
void sub_02019410(const void * param0, void * param1, u32 param2);
void sub_02019448(UnkStruct_02018340 * param0, u8 param1);
void sub_02019460(UnkStruct_02018340 * param0, u8 param1, const void * param2, u32 param3, u32 param4);
void sub_02019574(UnkStruct_02018340 * param0, u8 param1, const void * param2, u32 param3);
void sub_0201958C(UnkStruct_02018340 * param0, u8 param1, const void * param2, u32 param3, u32 param4);
void sub_02019690(u8 param0, u32 param1, u32 param2, u32 param3);
void sub_020196C0(UnkStruct_02018340 * param0, u32 param1, u32 param2, u32 param3, u32 param4);
void sub_0201972C(u8 param0, void * param1, u16 param2, u16 param3);
void sub_0201975C(u8 param0, u16 param1);
void sub_020198C0(UnkStruct_02018340 * param0, u8 param1, const void * param2, u8 param3, u8 param4, u8 param5, u8 param6);
void sub_020198E8(UnkStruct_02018340 * param0, u8 param1, u8 param2, u8 param3, u8 param4, u8 param5, const void * param6, u8 param7, u8 param8, u8 param9, u8 param10);
void sub_02019964(UnkStruct_02018340 * param0, u8 param1, u8 param2, u8 param3, u8 param4, u8 param5, const void * param6, u8 param7, u8 param8, u8 param9, u8 param10);
void sub_02019CB8(UnkStruct_02018340 * param0, u8 param1, u16 param2, u8 param3, u8 param4, u8 param5, u8 param6, u8 param7);
void sub_02019E2C(UnkStruct_02018340 * param0, u8 param1, u8 param2, u8 param3, u8 param4, u8 param5, u8 param6);
void sub_02019EBC(UnkStruct_02018340 * param0, u8 param1);
void sub_02019EE0(UnkStruct_02018340 * param0, u8 param1, u16 param2);
void sub_02019F04(UnkStruct_02018340 * param0, u8 param1, u16 param2);
void * sub_02019F28(u8 param0);
void sub_02019F80(const u8 * param0, u32 param1, u8 * param2, u8 param3);
void * sub_02019FC0(const u8 * param0, u32 param1, u8 param2, u32 param3);
void * sub_02019FE4(UnkStruct_02018340 * param0, u8 param1);
int sub_02019FF0(UnkStruct_02018340 * param0, u8 param1);
u16 sub_02019FFC(UnkStruct_02018340 * param0, u8 param1);
u8 sub_0201A008(UnkStruct_02018340 * param0, u8 param1);
void sub_0201A1E4(const UnkStruct_0201AE08 * param0, const UnkStruct_0201AE08 * param1, u16 param2, u16 param3, u16 param4, u16 param5, u16 param6, u16 param7, u16 param8);
void sub_0201A424(const UnkStruct_0201AE08 * param0, const UnkStruct_0201AE08 * param1, u16 param2, u16 param3, u16 param4, u16 param5, u16 param6, u16 param7, u16 param8);
void sub_0201A60C(const UnkStruct_0201AE08 * param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5);
void sub_0201A6D0(const UnkStruct_0201AE08 * param0, u16 param1, u16 param2, u16 param3, u16 param4, u8 param5);
UnkStruct_0205AA50 * sub_0201A778(u32 param0, u8 param1);
void sub_0201A7A0(UnkStruct_0205AA50 * param0);
u8 sub_0201A7CC(UnkStruct_0205AA50 * param0);
void sub_0201A7E8(UnkStruct_02018340 * param0, UnkStruct_0205AA50 * param1, u8 param2, u8 param3, u8 param4, u8 param5, u8 param6, u8 param7, u16 param8);
void sub_0201A870(UnkStruct_02018340 * param0, UnkStruct_0205AA50 * param1, u8 param2, u8 param3, u16 param4, u8 param5);
void sub_0201A8D4(UnkStruct_02018340 * param0, UnkStruct_0205AA50 * param1, const UnkStruct_ov61_0222C884 * param2);
void sub_0201A8FC(UnkStruct_0205AA50 * param0);
void sub_0201A928(UnkStruct_0205AA50 * param0, u8 param1);
void sub_0201A954(UnkStruct_0205AA50 * param0);
void sub_0201A9A4(UnkStruct_0205AA50 * param0);
void sub_0201A9F4(UnkStruct_0205AA50 * param0);
void sub_0201AA10(UnkStruct_0205AA50 * param0, u32 param1, u32 param2);
void sub_0201AA3C(UnkStruct_0205AA50 * param0);
void sub_0201ACCC(UnkStruct_0205AA50 * param0);
void sub_0201ACF4(UnkStruct_0205AA50 * param0);
void sub_0201AD10(UnkStruct_0205AA50 * param0);
void sub_0201ADA4(UnkStruct_0205AA50 * param0, u8 param1);
void sub_0201ADDC(UnkStruct_0205AA50 * param0, void * param1, u16 param2, u16 param3, u16 param4, u16 param5, u16 param6, u16 param7, u16 param8, u16 param9);
void sub_0201AE08(UnkStruct_0205AA50 * param0, void * param1, u16 param2, u16 param3, u16 param4, u16 param5, u16 param6, u16 param7, u16 param8, u16 param9, u16 param10);
void sub_0201AE78(UnkStruct_0205AA50 * param0, u8 param1, u16 param2, u16 param3, u16 param4, u16 param5);
void sub_0201AED0(UnkStruct_0205AA50 * param0, const u8 * param1, u16 param2, u16 param3, u16 param4, u16 param5, u16 param6);
void sub_0201C04C(UnkStruct_0205AA50 * param0, u8 param1, u8 param2, u8 param3);
UnkStruct_02018340 * sub_0201C28C(UnkStruct_0205AA50 * param0);
u8 sub_0201C290(UnkStruct_0205AA50 * param0);
u8 sub_0201C294(UnkStruct_0205AA50 * param0);
u8 sub_0201C298(UnkStruct_0205AA50 * param0);
u8 sub_0201C29C(UnkStruct_0205AA50 * param0);
u8 sub_0201C2A0(UnkStruct_0205AA50 * param0);
u16 sub_0201C2A4(UnkStruct_0205AA50 * param0);
void sub_0201C2AC(UnkStruct_0205AA50 * param0, u8 param1);
void sub_0201C2B0(UnkStruct_0205AA50 * param0, u8 param1);
void sub_0201C2B4(UnkStruct_0205AA50 * param0, u8 param1);
void sub_0201C2B8(UnkStruct_02018340 * param0);
void sub_0201C3C0(UnkStruct_02018340 * param0, u8 param1);
void sub_0201C63C(UnkStruct_02018340 * param0, u8 param1, u8 param2, int param3);
void sub_0201C660(UnkStruct_02018340 * param0, u8 param1, u8 param2, u16 param3);
void sub_0201C6A8(UnkStruct_02018340 * param0, u8 param1, u8 param2, fx32 param3);
void sub_0201C718(UnkStruct_02018340 * param0, u8 param1, u8 param2, int param3);
u8 sub_0201C784(UnkStruct_02018340 * param0, u8 param1, u16 param2, u16 param3, u16 * param4);

#endif // POKEPLATINUM_UNK_02018340_H
