From 1b9662aff49c8a8bc1de6a6b6dda3d9d2edccd35 Mon Sep 17 00:00:00 2001 From: Nomura <72407407+Nomura-RH@users.noreply.github.com> Date: Fri, 6 Jan 2023 15:38:51 +0100 Subject: [PATCH] Match unk_0208694C.c --- asm/include/unk_0208694C.inc | 182 -- asm/unk_0208694C.s | 5188 ---------------------------------- main.lsf | 2 +- src/unk_0208694C.c | 2655 +++++++++++++++++ 4 files changed, 2656 insertions(+), 5371 deletions(-) delete mode 100644 asm/include/unk_0208694C.inc delete mode 100644 asm/unk_0208694C.s create mode 100644 src/unk_0208694C.c diff --git a/asm/include/unk_0208694C.inc b/asm/include/unk_0208694C.inc deleted file mode 100644 index a6ba05a5ed..0000000000 --- a/asm/include/unk_0208694C.inc +++ /dev/null @@ -1,182 +0,0 @@ -.public sub_020021B0 -.public sub_020021F0 -.public sub_0200220C -.public sub_02002BB8 -.public sub_02002BEC -.public sub_02002C28 -.public sub_02002C60 -.public sub_02002D48 -.public sub_02002D7C -.public sub_02002E98 -.public sub_02004550 -.public sub_02005748 -.public sub_0200679C -.public sub_020067D0 -.public sub_0200681C -.public sub_0200682C -.public sub_02006830 -.public sub_02006840 -.public sub_02006C24 -.public sub_02006CA8 -.public sub_02006E60 -.public sub_02006E84 -.public sub_02006F50 -.public sub_02006F88 -.public sub_020070E8 -.public sub_0200710C -.public sub_02007130 -.public sub_020071B4 -.public sub_020093B4 -.public sub_020095C4 -.public sub_0200964C -.public sub_02009714 -.public sub_02009754 -.public sub_02009A4C -.public sub_02009B04 -.public sub_02009BC4 -.public sub_0200A328 -.public sub_0200A4E4 -.public sub_0200A5C8 -.public sub_0200A6DC -.public sub_0200A784 -.public sub_0200A858 -.public sub_0200A878 -.public sub_0200B144 -.public sub_0200B190 -.public sub_0200B1EC -.public sub_0200B29C -.public sub_0200B358 -.public sub_0200B3F0 -.public sub_0200B48C -.public sub_0200B538 -.public sub_0200BD40 -.public sub_0200DD0C -.public sub_0200E060 -.public sub_0200F174 -.public sub_0200F2AC -.public sub_02012C60 -.public sub_0201567C -.public sub_02015760 -.public sub_02017798 -.public sub_020177A4 -.public sub_02017DD4 -.public sub_02017FC8 -.public sub_0201807C -.public sub_02018144 -.public sub_020181C4 -.public sub_02018238 -.public sub_02018340 -.public sub_02018368 -.public sub_020183C4 -.public sub_02019044 -.public sub_02019060 -.public sub_02019184 -.public sub_02019690 -.public sub_0201975C -.public sub_02019EBC -.public sub_0201A7E8 -.public sub_0201A8FC -.public sub_0201A954 -.public sub_0201ADA4 -.public sub_0201ADDC -.public sub_0201AE78 -.public sub_0201CED0 -.public sub_0201D250 -.public sub_0201D2E8 -.public sub_0201D724 -.public sub_0201D738 -.public sub_0201D78C -.public sub_0201DCAC -.public sub_0201E86C -.public sub_0201E958 -.public sub_0201E994 -.public sub_0201F834 -.public sub_0201F8B4 -.public sub_0201F8E4 -.public sub_0201FE94 -.public sub_0201FF00 -.public sub_0201FF0C -.public sub_0201FF68 -.public sub_0201FF74 -.public sub_0201FFE8 -.public sub_02021964 -.public sub_020219F8 -.public sub_02021AA0 -.public sub_02021C50 -.public sub_02021CAC -.public sub_02021CC8 -.public sub_02021D28 -.public sub_02021D34 -.public sub_02021D6C -.public sub_02021E50 -.public sub_02021F58 -.public sub_02021FD0 -.public sub_02021FE0 -.public GF_AssertFail -.public sub_02023790 -.public sub_020237BC -.public sub_02023810 -.public sub_02023D28 -.public sub_02023DF0 -.public sub_02027B50 -.public sub_02073C74 -.public sub_02073D80 -.public sub_02076B10 -.public sub_0207999C -.public sub_020799A0 -.public sub_02079D8C -.public sub_02079EDC -.public sub_02079FD0 -.public sub_02086B30 -.public sub_02086D38 -.public sub_02086E6C -.public sub_02086F14 -.public sub_02087190 -.public sub_020871B0 -.public sub_020871CC -.public sub_020871EC -.public sub_0208732C -.public sub_0208737C -.public sub_02087544 -.public sub_0208765C -.public sub_0208769C -.public sub_020877C4 -.public sub_020877F4 -.public sub_020879DC -.public sub_02087A10 -.public sub_02087BE4 -.public sub_02087CDC -.public sub_02087D64 -.public sub_02087F48 -.public sub_02087F78 -.public sub_02087FC0 -.public sub_02088240 -.public sub_02088260 -.public sub_02088288 -.public sub_02088298 -.public sub_02088350 -.public sub_02088454 -.public sub_02088514 -.public sub_02088554 -.public sub_02088654 -.public sub_02088678 -.public sub_02088754 -.public sub_02088844 -.public sub_02088898 -.public sub_02088C7C -.public sub_02088C9C -.public sub_02088D08 -.public sub_02088E1C -.public sub_02088E58 -.public sub_02088F40 -.public sub_02088FD0 -.public sub_0208903C -.public NNS_G2dInitOamManagerModule -.public G2x_SetBlendAlpha_ -.public GX_LoadOBJPltt -.public GX_LoadOBJ -.public GXS_LoadOBJ -.public DC_FlushRange -.public MIi_CpuClear16 -.public memset -.public _s32_div_f diff --git a/asm/unk_0208694C.s b/asm/unk_0208694C.s deleted file mode 100644 index 1cdb6e0039..0000000000 --- a/asm/unk_0208694C.s +++ /dev/null @@ -1,5188 +0,0 @@ - .include "macros/function.inc" - .include "include/unk_0208694C.inc" - - .extern Unk_021C0A30 - .extern OS_IRQTable - - .text - - - thumb_func_start sub_0208694C -sub_0208694C: ; 0x0208694C - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r1, #0 - ldr r1, [r5, #0] - add r6, r0, #0 - cmp r1, #0 - beq _02086962 - cmp r1, #1 - bne _02086960 - b _02086ACE -_02086960: - b _02086B08 -_02086962: - mov r0, #0 - add r1, r0, #0 - bl sub_02017798 - bl sub_020177A4 - bl sub_0201FF00 - bl sub_0201FF68 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0] - ldr r0, _02086B10 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2, #0] - ldr r2, _02086B14 ; =0x04001000 - ldr r1, [r2, #0] - and r0, r1 - str r0, [r2, #0] - mov r2, #0xa - mov r0, #3 - mov r1, #0x12 - lsl r2, r2, #0xe - bl sub_02017FC8 - mov r1, #0x5d - add r0, r6, #0 - lsl r1, r1, #4 - mov r2, #0x12 - bl sub_0200681C - mov r2, #0x5d - mov r1, #0 - lsl r2, r2, #4 - add r4, r0, #0 - bl memset - mov r0, #0x12 - bl sub_02018340 - mov r1, #0x16 - lsl r1, r1, #4 - str r0, [r4, r1] - mov r0, #0x1f - mov r1, #0x12 - bl sub_02006C24 - add r7, r0, #0 - mov r0, #0x12 - bl sub_0200B358 - mov r2, #0x5a - lsl r2, r2, #2 - str r0, [r4, r2] - mov r0, #0 - mov r1, #0x1a - add r2, #0x3e - mov r3, #0x12 - bl sub_0200B144 - mov r2, #0x5b - lsl r2, r2, #2 - str r0, [r4, r2] - mov r0, #1 - mov r1, #0x1a - add r2, #0x3f - mov r3, #0x12 - bl sub_0200B144 - mov r2, #0x17 - lsl r2, r2, #4 - str r0, [r4, r2] - mov r0, #1 - mov r1, #0x1a - mov r3, #0x12 - bl sub_0200B144 - mov r1, #0x5d - lsl r1, r1, #2 - str r0, [r4, r1] - mov r0, #4 - mov r1, #8 - bl sub_02017DD4 - bl sub_020871CC - mov r0, #0x16 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl sub_020871EC - add r0, r6, #0 - bl sub_02006840 - add r1, r0, #0 - add r0, r4, #0 - bl sub_020871B0 - add r0, r4, #0 - add r1, r7, #0 - bl sub_0208769C - mov r0, #2 - mov r1, #0x12 - bl sub_02002BB8 - ldr r0, _02086B18 ; =sub_02087190 - mov r1, #0 - bl sub_02017798 - add r0, r4, #0 - add r1, r6, #0 - bl sub_0208737C - mov r0, #0 - mov r1, #0x12 - bl sub_02002BEC - bl sub_020877C4 - add r0, r4, #0 - add r1, r7, #0 - bl sub_020877F4 - add r0, r4, #0 - bl sub_02087A10 - add r0, r4, #0 - add r1, r6, #0 - add r2, r7, #0 - bl sub_02087FC0 - ldr r0, _02086B1C ; =0x000004C4 - mov r3, #0x5f - add r1, r4, r0 - lsl r3, r3, #2 - str r1, [sp] - ldr r1, [r4, r3] - add r2, r3, #0 - str r1, [sp, #4] - sub r2, #0x24 - sub r0, #0xcc - add r1, r4, #0 - sub r3, #0x22 - ldrh r2, [r4, r2] - add r0, r4, r0 - add r1, #0xd8 - add r3, r4, r3 - bl sub_02088754 - mov r1, #0 - mov r0, #0x34 - add r2, r1, #0 - bl sub_02004550 - mov r0, #0x10 - str r0, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r0, #0x12 - str r0, [sp, #8] - mov r0, #0 - add r2, r1, #0 - add r3, r0, #0 - bl sub_0200F174 - mov r0, #1 - bl sub_0208732C - ldr r0, _02086B20 ; =0x021BF6DC - mov r1, #1 - strb r1, [r0, #5] - bl sub_0201FFE8 - add r0, r7, #0 - bl sub_02006CA8 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - b _02086B08 -_02086ACE: - bl sub_0200682C - add r4, r0, #0 - ldr r0, [r4, #0] - cmp r0, #1 - bne _02086AEA - ldr r1, _02086B24 ; =0x000004B8 - ldr r2, [r4, #4] - ldr r0, [r4, r1] - add r1, #8 - ldr r1, [r4, r1] - ldr r3, [r4, #8] - bl sub_02086B30 -_02086AEA: - ldr r0, _02086B28 ; =0x021C0A30 - mov r1, #1 - str r4, [r0, #0] - mov r0, #0 - mov r2, #0xc - mov r3, #0x12 - bl sub_0201567C - ldr r1, _02086B2C ; =0x000005C4 - add sp, #0xc - str r0, [r4, r1] - mov r0, #0 - str r0, [r5, #0] - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_02086B08: - mov r0, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_02086B10: .word 0xFFFFE0FF -_02086B14: .word 0x04001000 -_02086B18: .word sub_02087190 -_02086B1C: .word 0x000004C4 -_02086B20: .word 0x021BF6DC -_02086B24: .word 0x000004B8 -_02086B28: .word Unk_021C0A30 -_02086B2C: .word 0x000005C4 - thumb_func_end sub_0208694C - - thumb_func_start sub_02086B30 -sub_02086B30: ; 0x02086B30 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r2, #0 - mov r2, #2 - ldr r0, [r0, #0x14] - ldr r1, _02086B60 ; =0x000057E0 - add r6, r3, #0 - lsl r2, r2, #8 - bl GX_LoadOBJ - ldr r4, [r4, #0xc] - add r0, r5, #0 - add r1, r6, #0 - mov r2, #0 - bl sub_02079EDC - lsl r0, r0, #5 - add r0, r4, r0 - mov r1, #0xc0 - mov r2, #0x20 - bl GX_LoadOBJPltt - pop {r4, r5, r6, pc} - nop -_02086B60: .word 0x000057E0 - thumb_func_end sub_02086B30 - - thumb_func_start sub_02086B64 -sub_02086B64: ; 0x02086B64 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r1, #0 - add r6, r0, #0 - bl sub_0200682C - ldr r1, [r5, #0] - add r4, r0, #0 - cmp r1, #3 - bhi _02086BC8 - add r2, r1, r1 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_02086B84: ; jump table - .short _02086B8C - _02086B84 - 2 ; case 0 - .short _02086BA0 - _02086B84 - 2 ; case 1 - .short _02086BD4 - _02086B84 - 2 ; case 2 - .short _02086CFC - _02086B84 - 2 ; case 3 -_02086B8C: - bl sub_0200F2AC - cmp r0, #0 - beq _02086BC8 - mov r0, #1 - str r0, [r5, #0] - ldr r0, _02086D1C ; =0x000005CC - mov r1, #0 - str r1, [r4, r0] - b _02086D0A -_02086BA0: - ldr r1, _02086D1C ; =0x000005CC - ldr r2, [r4, r1] - add r2, r2, #1 - str r2, [r4, r1] - bl sub_02088FD0 - mov r2, #0x49 - lsl r2, r2, #4 - add r0, r4, r2 - mov r1, #0xcb - sub r2, #0x30 - lsl r1, r1, #2 - ldr r2, [r4, r2] - add r1, r4, r1 - bl sub_02088F40 - ldr r0, _02086D1C ; =0x000005CC - ldr r1, [r4, r0] - cmp r1, #5 - bgt _02086BCA -_02086BC8: - b _02086D0A -_02086BCA: - mov r1, #2 - str r1, [r5, #0] - mov r1, #0 - str r1, [r4, r0] - b _02086D0A -_02086BD4: - ldr r3, _02086D20 ; =0x0000045C - ldr r2, [r4, r3] - cmp r2, #7 - bhi _02086CA8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_02086BE8: ; jump table - .short _02086CA8 - _02086BE8 - 2 ; case 0 - .short _02086CA8 - _02086BE8 - 2 ; case 1 - .short _02086CA8 - _02086BE8 - 2 ; case 2 - .short _02086CA8 - _02086BE8 - 2 ; case 3 - .short _02086BF8 - _02086BE8 - 2 ; case 4 - .short _02086C06 - _02086BE8 - 2 ; case 5 - .short _02086C52 - _02086BE8 - 2 ; case 6 - .short _02086C7E - _02086BE8 - 2 ; case 7 -_02086BF8: - bl sub_02086D38 - str r0, [r5, #0] - add r0, r4, #0 - bl sub_02088FD0 - b _02086CA8 -_02086C06: - add r1, r6, #0 - bl sub_02087544 - ldr r0, _02086D24 ; =0x00000448 - mov r1, #0xf - add r0, r4, r0 - bl sub_0201ADA4 - ldr r0, _02086D24 ; =0x00000448 - mov r2, #1 - add r0, r4, r0 - mov r1, #0 - lsl r2, r2, #8 - mov r3, #0xa - bl sub_0200E060 - mov r3, #0 - mov r2, #6 - ldr r0, _02086D24 ; =0x00000448 - str r3, [sp] - mov r1, #1 - str r1, [sp, #4] - str r3, [sp, #8] - lsl r2, r2, #6 - ldr r2, [r4, r2] - add r0, r4, r0 - bl sub_0201D738 - ldr r1, _02086D28 ; =0x00000458 - str r0, [r4, r1] - sub r1, #0x10 - add r0, r4, r1 - bl sub_0201A954 - ldr r0, _02086D20 ; =0x0000045C - mov r1, #6 - str r1, [r4, r0] - b _02086CA8 -_02086C52: - sub r0, r3, #4 - ldr r0, [r4, r0] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl sub_0201D724 - cmp r0, #0 - bne _02086CA8 - ldr r0, _02086D2C ; =0x000005E2 - bl sub_02005748 - ldr r1, _02086D30 ; =0x000004A8 - mov r2, #0 - ldr r0, [r4, r1] - add r0, r0, #1 - str r0, [r4, r1] - ldr r0, _02086D1C ; =0x000005CC - sub r1, #0x4c - str r2, [r4, r0] - mov r0, #7 - str r0, [r4, r1] - b _02086CA8 -_02086C7E: - ldr r0, _02086D1C ; =0x000005CC - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, r0] - cmp r0, #0x1e - ble _02086CA8 - mov r0, #0x10 - str r0, [sp] - mov r1, #0 - mov r0, #1 - str r0, [sp, #4] - mov r0, #0x12 - str r0, [sp, #8] - mov r0, #2 - add r2, r1, #0 - add r3, r1, #0 - bl sub_0200F174 - mov r0, #3 - str r0, [r5, #0] -_02086CA8: - ldr r3, _02086D34 ; =0x00000464 - mov r1, #0xcb - add r0, r4, r3 - str r0, [sp] - add r0, r3, #4 - add r0, r4, r0 - lsl r1, r1, #2 - str r0, [sp, #4] - add r0, r4, r1 - str r0, [sp, #8] - add r0, r3, #0 - add r0, #0x4c - ldr r0, [r4, r0] - add r2, r3, #0 - ldr r0, [r0, #0x14] - add r1, #0x8c - str r0, [sp, #0xc] - mov r0, #0x16 - lsl r0, r0, #4 - sub r3, r3, #4 - sub r2, #8 - ldr r0, [r4, r0] - ldr r3, [r4, r3] - add r1, r4, r1 - add r2, r4, r2 - bl sub_02087D64 - mov r2, #0x49 - lsl r2, r2, #4 - add r0, r4, r2 - mov r1, #0xcb - sub r2, #0x30 - lsl r1, r1, #2 - ldr r2, [r4, r2] - add r1, r4, r1 - bl sub_02088F40 - add r0, r4, #0 - add r0, #0x38 - bl sub_02088514 - b _02086D0A -_02086CFC: - bl sub_0200F2AC - cmp r0, #0 - beq _02086D0A - add sp, #0x10 - mov r0, #1 - pop {r4, r5, r6, pc} -_02086D0A: - mov r0, #0x62 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_020219F8 - mov r0, #0 - add sp, #0x10 - pop {r4, r5, r6, pc} - nop -_02086D1C: .word 0x000005CC -_02086D20: .word 0x0000045C -_02086D24: .word 0x00000448 -_02086D28: .word 0x00000458 -_02086D2C: .word 0x000005E2 -_02086D30: .word 0x000004A8 -_02086D34: .word 0x00000464 - thumb_func_end sub_02086B64 - - thumb_func_start sub_02086D38 -sub_02086D38: ; 0x02086D38 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl sub_02088350 - ldr r0, _02086E54 ; =0x021BF67C - mov r1, #4 - ldr r0, [r0, #0x48] - tst r1, r0 - beq _02086DDC - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_02021D34 - cmp r0, #0 - bne _02086D6A - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl sub_02021CAC - add r0, r4, #0 - pop {r3, r4, r5, pc} -_02086D6A: - ldr r0, [r5, #0] - cmp r0, #4 - beq _02086DB4 - ldr r1, _02086E58 ; =0x0000045C - mov r0, #0 - str r0, [r5, r1] - add r2, r1, #4 - ldr r2, [r5, r2] - add r3, r2, #1 - add r2, r1, #4 - str r3, [r5, r2] - ldr r2, [r5, r2] - cmp r2, #3 - blt _02086D8A - add r1, r1, #4 - str r0, [r5, r1] -_02086D8A: - mov r2, #0x49 - lsl r2, r2, #4 - add r1, r2, #0 - sub r1, #0x30 - ldr r1, [r5, r1] - add r0, r5, r2 - lsl r3, r1, #2 - ldr r1, [r0, r3] - sub r2, #0x30 - add r1, r1, #1 - str r1, [r0, r3] - add r0, r5, #0 - ldr r1, [r5, r2] - add r0, #0x3a - bl sub_02088844 - ldr r0, _02086E5C ; =0x0000069E - bl sub_02005748 - mov r0, #1 - str r0, [r5, #0x30] -_02086DB4: - mov r2, #0x49 - lsl r2, r2, #4 - add r1, r2, #0 - sub r1, #0x30 - ldr r1, [r5, r1] - add r0, r5, r2 - lsl r3, r1, #2 - ldr r1, [r0, r3] - sub r2, #0x30 - add r1, r1, #1 - str r1, [r0, r3] - add r0, r5, #0 - ldr r1, [r5, r2] - add r0, #0x3a - bl sub_02088844 - ldr r0, _02086E5C ; =0x0000069E - bl sub_02005748 - b _02086E4E -_02086DDC: - mov r2, #1 - add r1, r0, #0 - tst r1, r2 - beq _02086E02 - ldr r3, [r5, #0x20] - mov r1, #0x1a - mul r1, r3 - add r3, r5, r1 - ldr r1, [r5, #0x1c] - add r0, r5, #0 - lsl r1, r1, #1 - add r1, r3, r1 - ldrh r1, [r1, #0x3a] - bl sub_02088898 - add r4, r0, #0 - mov r0, #1 - str r0, [r5, #0x30] - b _02086E4E -_02086E02: - ldr r1, _02086E60 ; =0x000005C8 - ldr r1, [r5, r1] - cmp r1, #1 - bne _02086E2A - ldr r2, [r5, #0x20] - mov r1, #0x1a - mul r1, r2 - add r2, r5, r1 - ldr r1, [r5, #0x1c] - add r0, r5, #0 - lsl r1, r1, #1 - add r1, r2, r1 - ldrh r1, [r1, #0x3a] - mov r2, #0 - bl sub_02088898 - add r4, r0, #0 - mov r0, #0 - str r0, [r5, #0x30] - b _02086E4E -_02086E2A: - mov r1, #2 - add r3, r0, #0 - tst r3, r1 - beq _02086E3E - ldr r1, _02086E64 ; =0x0000E007 - add r0, r5, #0 - bl sub_02088898 - add r4, r0, #0 - b _02086E4E -_02086E3E: - add r1, #0xfe - tst r0, r1 - beq _02086E4E - ldr r1, _02086E68 ; =0x0000E006 - add r0, r5, #0 - bl sub_02088898 - add r4, r0, #0 -_02086E4E: - add r0, r4, #0 - pop {r3, r4, r5, pc} - nop -_02086E54: .word 0x021BF67C -_02086E58: .word 0x0000045C -_02086E5C: .word 0x0000069E -_02086E60: .word 0x000005C8 -_02086E64: .word 0x0000E007 -_02086E68: .word 0x0000E006 - thumb_func_end sub_02086D38 - - thumb_func_start sub_02086E6C -sub_02086E6C: ; 0x02086E6C - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, [r5, #0] - add r4, r1, #0 - cmp r0, #0 - bne _02086ECE - ldr r0, [r5, #4] - cmp r0, #0 - bne _02086E96 - bl sub_0201D2E8 - mov r1, #0x12 - bl _s32_div_f - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl sub_0200B1EC - add r6, r0, #0 - b _02086EB2 -_02086E96: - cmp r0, #1 - bne _02086EB2 - bl sub_0201D2E8 - mov r1, #0x12 - bl _s32_div_f - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r5, r0] - add r1, #0x12 - bl sub_0200B1EC - add r6, r0, #0 -_02086EB2: - ldr r0, [r4, #0x18] - add r1, r6, #0 - bl sub_02023810 - add r0, r6, #0 - bl sub_020237BC - ldr r0, [r4, #0x18] - add r4, #0x1c - add r1, r4, #0 - mov r2, #0xa - bl sub_02023DF0 - pop {r4, r5, r6, pc} -_02086ECE: - cmp r0, #3 - bne _02086F0E - bl sub_0201D2E8 - add r1, r0, #0 - mov r0, #0x17 - lsl r0, r0, #4 - lsr r3, r1, #0x1f - lsl r2, r1, #0x1f - sub r2, r2, r3 - mov r1, #0x1f - ror r2, r1 - add r1, r3, r2 - ldr r0, [r5, r0] - add r1, #0x58 - bl sub_0200B1EC - add r5, r0, #0 - ldr r0, [r4, #0x18] - add r1, r5, #0 - bl sub_02023810 - add r0, r5, #0 - bl sub_020237BC - ldr r0, [r4, #0x18] - add r4, #0x1c - add r1, r4, #0 - mov r2, #0xa - bl sub_02023DF0 - pop {r4, r5, r6, pc} -_02086F0E: - mov r0, #1 - str r0, [r4, #0x14] - pop {r4, r5, r6, pc} - thumb_func_end sub_02086E6C - - thumb_func_start sub_02086F14 -sub_02086F14: ; 0x02086F14 - push {r4, r5} - ldr r1, _02086F34 ; =0x000001DE - ldr r2, _02086F38 ; =0x0000FFFF - mov r5, #1 - mov r3, #0 -_02086F1E: - ldrh r4, [r0] - cmp r4, r2 - beq _02086F2E - cmp r4, r1 - beq _02086F2A - add r5, r3, #0 -_02086F2A: - add r0, r0, #2 - b _02086F1E -_02086F2E: - add r0, r5, #0 - pop {r4, r5} - bx lr - ; .align 2, 0 -_02086F34: .word 0x000001DE -_02086F38: .word 0x0000FFFF - thumb_func_end sub_02086F14 - - thumb_func_start sub_02086F3C -sub_02086F3C: ; 0x02086F3C - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - str r0, [sp, #0x10] - bl sub_0200682C - add r4, r0, #0 - ldr r0, [sp, #0x10] - bl sub_02006840 - add r5, r0, #0 - mov r0, #0x56 - lsl r0, r0, #2 - ldrh r0, [r4, r0] - ldr r1, _02087114 ; =0x0000FFFF - lsl r0, r0, #1 - add r0, r4, r0 - add r0, #0xd8 - strh r1, [r0] - ldr r0, [r4, #0] - cmp r0, #1 - bne _02086F86 - mov r0, #0x12 - bl sub_02073C74 - mov r3, #0xa - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - str r3, [sp, #0xc] - ldr r1, [r4, #4] - add r6, r0, #0 - mov r2, #5 - bl sub_02073D80 - add r0, r6, #0 - bl sub_020181C4 -_02086F86: - mov r1, #0x56 - lsl r1, r1, #2 - ldrh r0, [r4, r1] - cmp r0, #0 - beq _02086FAC - add r0, r4, #0 - sub r1, #0x40 - add r0, #0xd8 - add r1, r4, r1 - bl sub_0200220C - cmp r0, #0 - beq _02086FAC - add r0, r4, #0 - add r0, #0xd8 - bl sub_02086F14 - cmp r0, #0 - beq _02086FB6 -_02086FAC: - add r0, r4, #0 - add r1, r5, #0 - bl sub_02086E6C - b _02086FDA -_02086FB6: - mov r0, #0x46 - lsl r0, r0, #2 - add r1, r4, #0 - add r0, r4, r0 - add r1, #0xd8 - bl sub_020021B0 - add r0, r5, #0 - add r1, r4, #0 - add r0, #0x1c - add r1, #0xd8 - bl sub_020021B0 - add r1, r4, #0 - ldr r0, [r5, #0x18] - add r1, #0xd8 - bl sub_02023D28 -_02086FDA: - mov r0, #0x61 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_020237BC - mov r7, #0xe7 - mov r6, #0 - add r5, r4, #0 - lsl r7, r7, #2 -_02086FEC: - ldr r0, [r5, r7] - bl sub_020067D0 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #7 - blt _02086FEC - mov r0, #0xb1 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0200A4E4 - mov r0, #0xb5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0200A4E4 - mov r0, #0xb2 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0200A6DC - mov r0, #0xb6 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0200A6DC - mov r7, #0xad - mov r6, #0 - add r5, r4, #0 - lsl r7, r7, #2 -_0208702A: - ldr r0, [r5, r7] - bl sub_02009754 - add r6, r6, #1 - add r5, r5, #4 - cmp r6, #4 - blt _0208702A - mov r0, #0x62 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_02021964 - bl sub_0200A878 - ldr r1, _02087118 ; =0x000004AC - mov r0, #0x12 - ldr r1, [r4, r1] - bl sub_02018238 - ldr r0, [r4, #0] - cmp r0, #1 - bne _0208706A - ldr r1, _0208711C ; =0x000004B4 - mov r0, #0x12 - ldr r1, [r4, r1] - bl sub_02018238 - ldr r1, _02087120 ; =0x000004BC - mov r0, #0x12 - ldr r1, [r4, r1] - bl sub_02018238 -_0208706A: - mov r0, #0x16 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #7 - bl sub_02019044 - bl sub_0201E958 - bl sub_0201F8B4 - mov r0, #0x16 - lsl r0, r0, #4 - mov r1, #0xee - lsl r1, r1, #2 - ldr r0, [r4, r0] - add r1, r4, r1 - bl sub_0208765C - mov r0, #0 - bl sub_02002C28 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0] - ldr r0, _02087124 ; =0xFFFF1FFF - and r0, r1 - str r0, [r2, #0] - mov r0, #2 - bl sub_02002C60 - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - cmp r0, #0 - beq _020870B4 - bl sub_020237BC -_020870B4: - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_020237BC - mov r0, #0x5f - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_020237BC - mov r0, #0x5d - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0200B190 - mov r0, #0x17 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl sub_0200B190 - mov r0, #0x5b - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0200B190 - mov r0, #0x5a - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0200B3F0 - ldr r0, [sp, #0x10] - bl sub_02006830 - mov r0, #0 - add r1, r0, #0 - bl sub_02017798 - mov r0, #0x12 - bl sub_0201807C - ldr r0, _02087128 ; =0x021BF6DC - mov r1, #0 - strb r1, [r0, #5] - bl sub_0201FFE8 - mov r0, #1 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_02087114: .word 0x0000FFFF -_02087118: .word 0x000004AC -_0208711C: .word 0x000004B4 -_02087120: .word 0x000004BC -_02087124: .word 0xFFFF1FFF -_02087128: .word 0x021BF6DC - thumb_func_end sub_02086F3C - - thumb_func_start sub_0208712C -sub_0208712C: ; 0x0208712C - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - mov r1, #0x50 - str r0, [sp] - add r6, r2, #0 - add r7, r3, #0 - bl sub_02018144 - add r4, r0, #0 - str r5, [r4, #0] - str r6, [r4, #4] - str r7, [r4, #0xc] - mov r0, #0 - str r0, [r4, #0x14] - ldr r0, _02087168 ; =0x0000FFFF - ldr r1, [sp] - strh r0, [r4, #0x1c] - mov r0, #0x20 - bl sub_02023790 - str r0, [r4, #0x18] - mov r1, #0 - str r1, [r4, #0x44] - str r1, [r4, #0x48] - ldr r0, [sp, #0x18] - str r1, [r4, #0x10] - str r0, [r4, #0x4c] - str r1, [r4, #8] - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02087168: .word 0x0000FFFF - thumb_func_end sub_0208712C - - thumb_func_start sub_0208716C -sub_0208716C: ; 0x0208716C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x18] - cmp r0, #0 - bne _0208717A - bl GF_AssertFail -_0208717A: - cmp r4, #0 - bne _02087182 - bl GF_AssertFail -_02087182: - ldr r0, [r4, #0x18] - bl sub_020237BC - add r0, r4, #0 - bl sub_020181C4 - pop {r4, pc} - thumb_func_end sub_0208716C - - thumb_func_start sub_02087190 -sub_02087190: ; 0x02087190 - push {r3, lr} - bl sub_0201DCAC - bl sub_0200A858 - ldr r3, _020871A8 ; =0x027E0000 - ldr r1, _020871AC ; =0x00003FF8 - mov r0, #1 - ldr r2, [r3, r1] - orr r0, r2 - str r0, [r3, r1] - pop {r3, pc} - ; .align 2, 0 -_020871A8: .word OS_IRQTable -_020871AC: .word 0x00003FF8 - thumb_func_end sub_02087190 - - thumb_func_start sub_020871B0 -sub_020871B0: ; 0x020871B0 - ldr r2, [r1, #0] - str r2, [r0, #0] - ldr r2, [r1, #4] - str r2, [r0, #4] - ldr r2, [r1, #8] - str r2, [r0, #8] - ldr r2, [r1, #0xc] - str r2, [r0, #0xc] - ldr r2, [r1, #0x10] - str r2, [r0, #0x10] - ldr r1, [r1, #0x4c] - str r1, [r0, #0x18] - bx lr - ; .align 2, 0 - thumb_func_end sub_020871B0 - - thumb_func_start sub_020871CC -sub_020871CC: ; 0x020871CC - push {r4, lr} - sub sp, #0x28 - ldr r4, _020871E8 ; =0x020F28DC - add r3, sp, #0 - mov r2, #5 -_020871D6: - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _020871D6 - add r0, sp, #0 - bl sub_0201FE94 - add sp, #0x28 - pop {r4, pc} - ; .align 2, 0 -_020871E8: .word 0x020F28DC - thumb_func_end sub_020871CC - - thumb_func_start sub_020871EC -sub_020871EC: ; 0x020871EC - push {r3, r4, r5, lr} - sub sp, #0x80 - ldr r5, _02087310 ; =0x020F24FC - add r3, sp, #0x70 - add r4, r0, #0 - add r2, r3, #0 - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - add r0, r2, #0 - bl sub_02018368 - ldr r5, _02087314 ; =0x020F2670 - add r3, sp, #0x54 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - mov r1, #0 - str r0, [r3, #0] - add r0, r4, #0 - add r3, r1, #0 - bl sub_020183C4 - add r0, r4, #0 - mov r1, #0 - bl sub_02019EBC - ldr r5, _02087318 ; =0x020F2750 - add r3, sp, #0x38 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - mov r1, #1 - str r0, [r3, #0] - add r0, r4, #0 - mov r3, #0 - bl sub_020183C4 - add r0, r4, #0 - mov r1, #1 - bl sub_02019EBC - ldr r5, _0208731C ; =0x020F2814 - add r3, sp, #0x1c - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - mov r1, #2 - str r0, [r3, #0] - add r0, r4, #0 - mov r3, #0 - bl sub_020183C4 - add r0, r4, #0 - mov r1, #2 - bl sub_02019EBC - ldr r5, _02087320 ; =0x020F25AC - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - mov r1, #4 - str r0, [r3, #0] - add r0, r4, #0 - mov r3, #0 - bl sub_020183C4 - add r0, r4, #0 - mov r1, #4 - bl sub_02019EBC - mov r0, #0 - bl sub_0208732C - mov r0, #0 - mov r1, #0x20 - add r2, r0, #0 - mov r3, #0x12 - bl sub_02019690 - mov r0, #4 - mov r1, #0x20 - mov r2, #0 - mov r3, #0x12 - bl sub_02019690 - mov r0, #1 - lsl r0, r0, #0x1a - add r4, r0, #0 - ldr r2, [r0, #0] - ldr r1, _02087324 ; =0xFFFF1FFF - add r4, #0x48 - and r2, r1 - lsr r1, r0, #0xd - orr r1, r2 - str r1, [r0, #0] - ldrh r3, [r4] - mov r2, #0x3f - mov r1, #0x14 - bic r3, r2 - orr r1, r3 - mov r3, #0x20 - orr r1, r3 - strh r1, [r4] - add r4, r0, #0 - add r4, #0x4a - ldrh r5, [r4] - mov r1, #0x1f - bic r5, r2 - orr r1, r5 - orr r1, r3 - strh r1, [r4] - add r1, r0, #0 - mov r2, #0xff - add r1, #0x40 - strh r2, [r1] - mov r1, #0x40 - add r0, #0x44 - strh r1, [r0] - ldr r0, _02087328 ; =0x04001050 - mov r1, #0 - strh r1, [r0] - add sp, #0x80 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_02087310: .word 0x020F24FC -_02087314: .word 0x020F2670 -_02087318: .word 0x020F2750 -_0208731C: .word 0x020F2814 -_02087320: .word 0x020F25AC -_02087324: .word 0xFFFF1FFF -_02087328: .word 0x04001050 - thumb_func_end sub_020871EC - - thumb_func_start sub_0208732C -sub_0208732C: ; 0x0208732C - push {r4, lr} - add r4, r0, #0 - lsl r1, r4, #0x18 - mov r0, #1 - lsr r1, r1, #0x18 - bl sub_0201FF0C - lsl r1, r4, #0x18 - mov r0, #2 - lsr r1, r1, #0x18 - bl sub_0201FF0C - lsl r1, r4, #0x18 - mov r0, #4 - lsr r1, r1, #0x18 - bl sub_0201FF0C - mov r0, #8 - mov r1, #0 - bl sub_0201FF0C - lsl r1, r4, #0x18 - mov r0, #0x10 - lsr r1, r1, #0x18 - bl sub_0201FF0C - lsl r1, r4, #0x18 - mov r0, #1 - lsr r1, r1, #0x18 - bl sub_0201FF74 - mov r0, #2 - mov r1, #0 - bl sub_0201FF74 - mov r0, #0x10 - mov r1, #0 - bl sub_0201FF74 - pop {r4, pc} - thumb_func_end sub_0208732C - - thumb_func_start sub_0208737C -sub_0208737C: ; 0x0208737C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r0, #0 - add r0, r1, #0 - bl sub_02006840 - add r7, r0, #0 - ldr r0, _0208752C ; =0x0000045C - mov r1, #4 - str r1, [r4, r0] - add r0, #0xc - add r0, r4, r0 - mov r1, #0 - bl sub_02088260 - ldr r6, _02087530 ; =0x00000464 - mov r0, #0x16 - ldr r3, [r4, r6] - mov r5, #0xc - lsl r0, r0, #4 - lsl r1, r3, #0x18 - mul r5, r3 - add r3, r4, r5 - add r5, r6, #4 - ldr r0, [r4, r0] - ldr r3, [r3, r5] - lsr r1, r1, #0x18 - mov r2, #0 - bl sub_02019184 - ldr r3, [r4, r6] - mov r5, #0xc - mov r0, #0x16 - lsl r0, r0, #4 - lsl r1, r3, #0x18 - mul r5, r3 - add r3, r4, r5 - add r6, #8 - ldr r0, [r4, r0] - ldr r3, [r3, r6] - lsr r1, r1, #0x18 - mov r2, #3 - bl sub_02019184 - ldr r6, _02087530 ; =0x00000464 - mov r0, #1 - ldr r1, [r4, r6] - mov r5, #0xc - add r3, r1, #0 - eor r3, r0 - mov r0, #0x16 - lsl r0, r0, #4 - lsl r1, r3, #0x18 - mul r5, r3 - add r3, r4, r5 - add r5, r6, #4 - ldr r0, [r4, r0] - ldr r3, [r3, r5] - lsr r1, r1, #0x18 - mov r2, #0 - bl sub_02019184 - ldr r1, [r4, r6] - mov r0, #1 - add r3, r1, #0 - eor r3, r0 - mov r5, #0xc - mov r0, #0x16 - lsl r0, r0, #4 - lsl r1, r3, #0x18 - mul r5, r3 - add r3, r4, r5 - add r6, #8 - ldr r0, [r4, r0] - ldr r3, [r3, r6] - lsr r1, r1, #0x18 - mov r2, #3 - bl sub_02019184 - mov r1, #0x46 - ldr r0, _02087534 ; =0x0000FFFF - lsl r1, r1, #2 - strh r0, [r4, r1] - ldr r0, [r7, #0x18] - cmp r0, #0 - beq _02087430 - add r1, r4, r1 - mov r2, #0x20 - bl sub_02023DF0 -_02087430: - add r1, r4, #0 - mov r0, #1 - add r1, #0xd8 - mov r2, #0x40 - bl MIi_CpuClear16 - ldr r0, [r4, #0] - cmp r0, #1 - bne _02087476 - mov r0, #0x12 - bl sub_02073C74 - mov r3, #0xa - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - str r3, [sp, #0xc] - ldr r1, [r4, #4] - add r5, r0, #0 - mov r2, #5 - bl sub_02073D80 - add r0, r5, #0 - bl sub_02076B10 - add r2, r0, #0 - mov r0, #0x5a - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl sub_0200B538 - add r0, r5, #0 - bl sub_020181C4 -_02087476: - ldr r0, [r7, #0x44] - cmp r0, #0 - beq _02087480 - mov r0, #1 - str r0, [r4, #0x14] -_02087480: - ldr r2, [r4, #0] - mov r1, #0x5a - lsl r1, r1, #2 - lsl r3, r2, #2 - ldr r2, _02087538 ; =0x020F2850 - ldr r0, [r4, r1] - add r1, r1, #4 - ldr r2, [r2, r3] - ldr r1, [r4, r1] - mov r3, #0x12 - bl sub_0200B29C - mov r1, #0x5e - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r1, #0 - sub r0, #0x10 - sub r1, #0xc - ldr r0, [r4, r0] - ldr r1, [r4, r1] - mov r2, #8 - mov r3, #0x12 - bl sub_0200B29C - mov r1, #0x5f - lsl r1, r1, #2 - str r0, [r4, r1] - sub r1, #0x10 - ldr r0, [r4, r1] - mov r1, #7 - bl sub_0200B1EC - mov r1, #0x61 - lsl r1, r1, #2 - str r0, [r4, r1] - sub r1, #0x6c - add r0, r4, r1 - bl sub_020021F0 - mov r1, #0x56 - lsl r1, r1, #2 - strh r0, [r4, r1] - mov r0, #0 - str r0, [r4, #0x1c] - mov r1, #1 - str r1, [r4, #0x20] - sub r1, r1, #2 - str r1, [r4, #0x24] - str r1, [r4, #0x28] - str r0, [r4, #0x30] - ldr r2, _0208753C ; =0x00000484 - str r0, [r4, #0x34] - str r1, [r4, r2] - add r1, r2, #4 - str r0, [r4, r1] - add r2, #8 - str r0, [r4, r2] - ldr r1, [r4, #0xc] - ldr r2, _02087534 ; =0x0000FFFF - lsl r1, r1, #1 - add r1, r4, r1 - add r1, #0xd8 - strh r2, [r1] - mov r1, #0x49 - add r3, r4, #0 - add r2, r0, #0 - lsl r1, r1, #4 -_02087506: - add r0, r0, #1 - str r2, [r3, r1] - add r3, r3, #4 - cmp r0, #7 - blt _02087506 - ldr r0, [r4, #0] - cmp r0, #4 - bne _02087520 - ldr r0, _02087540 ; =0x0000049C - mov r1, #1 - add sp, #0x10 - str r1, [r4, r0] - pop {r3, r4, r5, r6, r7, pc} -_02087520: - mov r0, #0x49 - mov r1, #1 - lsl r0, r0, #4 - str r1, [r4, r0] - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_0208752C: .word 0x0000045C -_02087530: .word 0x00000464 -_02087534: .word 0x0000FFFF -_02087538: .word 0x020F2850 -_0208753C: .word 0x00000484 -_02087540: .word 0x0000049C - thumb_func_end sub_0208737C - - thumb_func_start sub_02087544 -sub_02087544: ; 0x02087544 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - add r0, r1, #0 - bl sub_02006840 - add r4, r0, #0 - ldr r0, [r4, #0x44] - cmp r0, #0 - beq _02087654 - mov r0, #0xc8 - mov r1, #0x12 - bl sub_02023790 - add r7, r0, #0 - mov r0, #6 - mov r1, #0 - lsl r0, r0, #6 - str r1, [r5, r0] - ldr r0, [r4, #0x48] - bl sub_0207999C - add r6, r0, #0 - ldr r0, [r4, #0x48] - bl sub_020799A0 - str r0, [sp, #0x10] - mov r0, #0x5a - lsl r0, r0, #2 - ldr r0, [r5, r0] - ldr r2, [r4, #0x48] - mov r1, #1 - add r3, r6, #0 - bl sub_0200BD40 - ldr r0, [sp, #0x10] - cmp r6, r0 - beq _020875A8 - mov r0, #0x5a - lsl r0, r0, #2 - ldr r0, [r5, r0] - ldr r2, [r4, #0x48] - ldr r3, [sp, #0x10] - mov r1, #2 - bl sub_0200BD40 - ldr r0, [r4, #0x44] - add r0, r0, #2 - str r0, [r4, #0x44] - b _020875B8 -_020875A8: - mov r0, #0x5a - lsl r0, r0, #2 - ldr r0, [r5, r0] - ldr r2, [r4, #0x48] - mov r1, #2 - add r3, r6, #0 - bl sub_0200BD40 -_020875B8: - mov r0, #0x56 - lsl r0, r0, #2 - ldrh r0, [r5, r0] - cmp r0, #0 - beq _020875CE - add r0, r5, #0 - add r0, #0xd8 - bl sub_02086F14 - cmp r0, #0 - beq _02087604 -_020875CE: - mov r0, #0x12 - bl sub_02073C74 - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - str r3, [sp, #0xc] - ldr r1, [r5, #4] - add r6, r0, #0 - mov r2, #1 - bl sub_02073D80 - add r0, r6, #0 - bl sub_02076B10 - add r2, r0, #0 - mov r0, #0x5a - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #0 - bl sub_0200B538 - add r0, r6, #0 - bl sub_020181C4 - b _02087632 -_02087604: - mov r1, #0x56 - lsl r1, r1, #2 - ldrh r1, [r5, r1] - ldr r0, _02087658 ; =0x0000FFFF - lsl r1, r1, #1 - add r1, r5, r1 - add r1, #0xd8 - strh r0, [r1] - add r1, r5, #0 - add r0, r7, #0 - add r1, #0xd8 - bl sub_02023D28 - mov r1, #0 - str r1, [sp] - mov r0, #0x5a - str r1, [sp, #4] - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r2, r7, #0 - add r3, r1, #0 - bl sub_0200B48C -_02087632: - mov r1, #0x5a - lsl r1, r1, #2 - ldr r0, [r5, r1] - add r1, #0xc - ldr r1, [r5, r1] - ldr r2, [r4, #0x44] - mov r3, #0x12 - bl sub_0200B29C - mov r1, #6 - lsl r1, r1, #6 - str r0, [r5, r1] - mov r0, #1 - str r0, [r5, #0x14] - add r0, r7, #0 - bl sub_020237BC -_02087654: - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_02087658: .word 0x0000FFFF - thumb_func_end sub_02087544 - - thumb_func_start sub_0208765C -sub_0208765C: ; 0x0208765C - push {r4, r5, r6, lr} - add r6, r0, #0 - add r5, r1, #0 - mov r4, #0 -_02087664: - add r0, r5, #0 - bl sub_0201A8FC - add r4, r4, #1 - add r5, #0x10 - cmp r4, #0xa - blt _02087664 - add r0, r6, #0 - mov r1, #4 - bl sub_02019044 - add r0, r6, #0 - mov r1, #2 - bl sub_02019044 - add r0, r6, #0 - mov r1, #1 - bl sub_02019044 - add r0, r6, #0 - mov r1, #0 - bl sub_02019044 - mov r0, #0x12 - add r1, r6, #0 - bl sub_02018238 - pop {r4, r5, r6, pc} - thumb_func_end sub_0208765C - - thumb_func_start sub_0208769C -sub_0208769C: ; 0x0208769C - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r0, #0 - mov r0, #0x16 - lsl r0, r0, #4 - ldr r6, [r5, r0] - mov r0, #0x60 - add r4, r1, #0 - mov r1, #0 - str r0, [sp] - mov r0, #0x12 - str r0, [sp, #4] - add r0, r4, #0 - add r2, r1, #0 - add r3, r1, #0 - bl sub_02007130 - mov r0, #0x20 - str r0, [sp] - mov r0, #0x12 - str r0, [sp, #4] - mov r0, #0xc - add r1, r0, #0 - mov r2, #4 - mov r3, #0 - bl sub_02006E84 - mov r0, #4 - mov r1, #0 - bl sub_0201975C - mov r0, #0 - str r0, [sp] - mov r0, #2 - lsl r0, r0, #0xc - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0x12 - mov r1, #2 - str r0, [sp, #0xc] - add r0, r4, #0 - add r2, r6, #0 - add r3, r1, #0 - bl sub_020070E8 - mov r0, #0 - str r0, [sp] - mov r0, #6 - lsl r0, r0, #8 - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0x12 - str r0, [sp, #0xc] - add r0, r4, #0 - mov r1, #4 - add r2, r6, #0 - mov r3, #2 - bl sub_0200710C - mov r0, #0 - str r0, [sp] - mov r0, #2 - lsl r0, r0, #0xc - str r0, [sp, #4] - mov r3, #1 - str r3, [sp, #8] - mov r0, #0x12 - str r0, [sp, #0xc] - add r0, r4, #0 - mov r1, #2 - add r2, r6, #0 - bl sub_020070E8 - mov r0, #0 - str r0, [sp] - mov r0, #0xe - lsl r0, r0, #6 - str r0, [sp, #4] - mov r3, #1 - str r3, [sp, #8] - mov r0, #0x12 - str r0, [sp, #0xc] - add r0, r4, #0 - mov r1, #6 - add r2, r6, #0 - bl sub_0200710C - mov r3, #0 - mov r0, #0xe - str r3, [sp] - lsl r0, r0, #6 - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0x12 - str r0, [sp, #0xc] - add r0, r4, #0 - mov r1, #7 - add r2, r6, #0 - bl sub_0200710C - mov r1, #6 - mov r0, #0 - lsl r1, r1, #6 - mov r2, #0x12 - bl sub_02002E98 - ldr r0, [r5, #0x18] - bl sub_02027B50 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp] - mov r0, #0x12 - str r0, [sp, #4] - mov r0, #0x16 - lsl r0, r0, #4 - mov r1, #4 - add r2, r1, #0 - ldr r0, [r5, r0] - add r2, #0xfc - mov r3, #0xa - bl sub_0200DD0C - mov r1, #6 - mov r0, #4 - lsl r1, r1, #6 - mov r2, #0x12 - bl sub_02002E98 - mov r3, #0x4b - mov r0, #0x12 - lsl r3, r3, #4 - str r0, [sp] - add r0, r4, #0 - mov r1, #0x10 - mov r2, #1 - add r3, r5, r3 - bl sub_020071B4 - ldr r1, _020877C0 ; =0x000004AC - str r0, [r5, r1] - add sp, #0x10 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_020877C0: .word 0x000004AC - thumb_func_end sub_0208769C - - thumb_func_start sub_020877C4 -sub_020877C4: ; 0x020877C4 - push {r4, lr} - sub sp, #0x10 - ldr r4, _020877F0 ; =0x020F250C - add r3, sp, #0 - add r2, r3, #0 - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - add r0, r2, #0 - bl sub_0201E86C - mov r0, #0x14 - mov r1, #0x12 - bl sub_0201F834 - bl sub_0201E994 - bl sub_0201F8E4 - add sp, #0x10 - pop {r4, pc} - ; .align 2, 0 -_020877F0: .word 0x020F250C - thumb_func_end sub_020877C4 - - thumb_func_start sub_020877F4 -sub_020877F4: ; 0x020877F4 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - add r7, r1, #0 - bl NNS_G2dInitOamManagerModule - mov r0, #0 - str r0, [sp] - mov r1, #0x80 - str r1, [sp, #4] - str r0, [sp, #8] - mov r3, #0x20 - str r3, [sp, #0xc] - mov r2, #0x12 - str r2, [sp, #0x10] - add r2, r0, #0 - bl sub_0200A784 - mov r1, #0x63 - lsl r1, r1, #2 - mov r0, #0x2c - add r1, r5, r1 - mov r2, #0x12 - bl sub_020095C4 - mov r1, #0x62 - lsl r1, r1, #2 - str r0, [r5, r1] - add r0, r1, #4 - mov r2, #1 - add r0, r5, r0 - mov r1, #0 - lsl r2, r2, #0x14 - bl sub_0200964C - mov r6, #0 - add r4, r5, #0 -_0208783E: - mov r0, #2 - add r1, r6, #0 - mov r2, #0x12 - bl sub_02009714 - mov r1, #0xad - lsl r1, r1, #2 - str r0, [r4, r1] - add r6, r6, #1 - add r4, r4, #4 - cmp r6, #4 - blt _0208783E - mov r0, #0 - str r0, [sp] - mov r3, #1 - str r3, [sp, #4] - mov r0, #0x12 - str r0, [sp, #8] - add r0, r1, #0 - ldr r0, [r5, r0] - add r1, r7, #0 - mov r2, #0xa - bl sub_02009A4C - mov r1, #0xb1 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r3, #0 - str r3, [sp] - mov r2, #1 - str r2, [sp, #4] - mov r0, #9 - str r0, [sp, #8] - mov r0, #0x12 - sub r1, #0xc - str r0, [sp, #0xc] - ldr r0, [r5, r1] - add r1, r7, #0 - bl sub_02009B04 - mov r1, #0xb2 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #0 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #0x12 - sub r1, #0xc - str r0, [sp, #8] - ldr r0, [r5, r1] - add r1, r7, #0 - mov r2, #0xc - mov r3, #1 - bl sub_02009BC4 - mov r1, #0xb3 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #0 - str r0, [sp] - mov r0, #3 - str r0, [sp, #4] - mov r0, #0x12 - sub r1, #0xc - str r0, [sp, #8] - ldr r0, [r5, r1] - add r1, r7, #0 - mov r2, #0xe - mov r3, #1 - bl sub_02009BC4 - mov r1, #0x2d - lsl r1, r1, #4 - str r0, [r5, r1] - ldr r0, [r5, #0] - cmp r0, #1 - bne _02087926 - ldr r0, [r5, #4] - ldr r2, [r5, #8] - mov r1, #0 - bl sub_02079D8C - ldr r3, _020879D0 ; =0x000004B8 - add r1, r0, #0 - mov r0, #0x12 - str r0, [sp] - mov r0, #0x13 - mov r2, #0 - add r3, r5, r3 - bl sub_02006F50 - ldr r1, _020879D4 ; =0x000004B4 - str r0, [r5, r1] - add r0, r1, #4 - mov r1, #2 - ldr r0, [r5, r0] - lsl r1, r1, #8 - bl DC_FlushRange - bl sub_02079FD0 - add r1, r0, #0 - mov r0, #0x13 - lsl r2, r0, #6 - add r2, r5, r2 - mov r3, #0x12 - bl sub_02006F88 - ldr r1, _020879D8 ; =0x000004BC - str r0, [r5, r1] - add r0, r1, #4 - ldr r0, [r5, r0] - mov r1, #0x80 - bl DC_FlushRange -_02087926: - mov r3, #1 - str r3, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #0x12 - str r0, [sp, #8] - mov r0, #0xad - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, r7, #0 - mov r2, #0xb - bl sub_02009A4C - mov r1, #0xb5 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r2, #1 - str r2, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #3 - str r0, [sp, #8] - mov r0, #0x12 - sub r1, #0x1c - str r0, [sp, #0xc] - ldr r0, [r5, r1] - add r1, r7, #0 - mov r3, #0 - bl sub_02009B04 - mov r1, #0xb6 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r3, #1 - str r3, [sp] - mov r0, #2 - str r0, [sp, #4] - mov r0, #0x12 - sub r1, #0x1c - str r0, [sp, #8] - ldr r0, [r5, r1] - add r1, r7, #0 - mov r2, #0xd - bl sub_02009BC4 - mov r1, #0xb7 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r3, #1 - str r3, [sp] - mov r0, #3 - str r0, [sp, #4] - mov r0, #0x12 - sub r1, #0x1c - str r0, [sp, #8] - ldr r0, [r5, r1] - add r1, r7, #0 - mov r2, #0xf - bl sub_02009BC4 - mov r1, #0x2e - lsl r1, r1, #4 - str r0, [r5, r1] - sub r1, #0x1c - ldr r0, [r5, r1] - bl sub_0200A328 - mov r0, #0xb5 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_0200A328 - mov r0, #0xb2 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_0200A5C8 - mov r0, #0xb6 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_0200A5C8 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_020879D0: .word 0x000004B8 -_020879D4: .word 0x000004B4 -_020879D8: .word 0x000004BC - thumb_func_end sub_020877F4 - - thumb_func_start sub_020879DC -sub_020879DC: ; 0x020879DC - push {r3, r4, lr} - sub sp, #0xc - add r4, r1, #0 - ldr r0, [r4, #0] - bl sub_02021D28 - ldr r1, [r0, #0] - ldr r0, [r4, #8] - add r0, r1, r0 - str r0, [sp] - ldr r0, [r4, #0xc] - lsl r1, r0, #4 - ldr r0, _02087A0C ; =0x020F2988 - ldr r0, [r0, r1] - add r1, sp, #0 - lsl r0, r0, #0xc - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r0, [r4, #4] - bl sub_02021C50 - add sp, #0xc - pop {r3, r4, pc} - ; .align 2, 0 -_02087A0C: .word 0x020F2988 - thumb_func_end sub_020879DC - - thumb_func_start sub_02087A10 -sub_02087A10: ; 0x02087A10 - push {r4, r5, r6, r7, lr} - sub sp, #0x5c - mov r1, #0 - add r6, r0, #0 - str r1, [sp] - sub r0, r1, #1 - str r0, [sp, #4] - str r0, [sp, #8] - mov r2, #0xad - str r1, [sp, #0xc] - mov r0, #1 - lsl r2, r2, #2 - str r0, [sp, #0x10] - ldr r0, [r6, r2] - add r3, r1, #0 - str r0, [sp, #0x14] - add r0, r2, #4 - ldr r0, [r6, r0] - str r0, [sp, #0x18] - add r0, r2, #0 - add r0, #8 - ldr r0, [r6, r0] - str r0, [sp, #0x1c] - add r0, r2, #0 - add r0, #0xc - ldr r0, [r6, r0] - add r2, #0x30 - str r0, [sp, #0x20] - str r1, [sp, #0x24] - add r0, r6, r2 - add r2, r1, #0 - str r1, [sp, #0x28] - bl sub_020093B4 - mov r1, #1 - mov r3, #0xad - str r1, [sp] - sub r0, r1, #2 - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - lsl r3, r3, #2 - ldr r2, [r6, r3] - str r2, [sp, #0x14] - add r2, r3, #4 - ldr r2, [r6, r2] - str r2, [sp, #0x18] - add r2, r3, #0 - add r2, #8 - ldr r2, [r6, r2] - str r2, [sp, #0x1c] - add r2, r3, #0 - add r2, #0xc - ldr r2, [r6, r2] - add r3, #0x54 - str r2, [sp, #0x20] - str r0, [sp, #0x24] - str r0, [sp, #0x28] - add r0, r6, r3 - add r2, r1, #0 - add r3, r1, #0 - bl sub_020093B4 - mov r0, #0x62 - lsl r0, r0, #2 - ldr r0, [r6, r0] - mov r1, #2 - str r0, [sp, #0x2c] - mov r0, #0xb9 - lsl r0, r0, #2 - add r0, r6, r0 - str r0, [sp, #0x30] - mov r0, #6 - lsl r1, r1, #0x10 - lsl r0, r0, #0x10 - str r0, [sp, #0x38] - lsr r0, r1, #5 - mov r7, #0 - str r1, [sp, #0x34] - str r7, [sp, #0x3c] - str r0, [sp, #0x40] - str r0, [sp, #0x44] - str r0, [sp, #0x48] - add r0, sp, #0x2c - strh r7, [r0, #0x20] - mov r0, #1 - str r0, [sp, #0x50] - str r0, [sp, #0x54] - mov r0, #0x12 - ldr r4, _02087BDC ; =0x020F2984 - str r0, [sp, #0x58] - add r5, r6, #0 -_02087ACC: - ldr r0, [r4, #0] - lsl r0, r0, #0xc - str r0, [sp, #0x34] - ldr r0, [r4, #4] - lsl r0, r0, #0xc - str r0, [sp, #0x38] - add r0, sp, #0x2c - bl sub_02021AA0 - mov r1, #0xcb - lsl r1, r1, #2 - str r0, [r5, r1] - add r0, r1, #0 - ldr r0, [r5, r0] - mov r1, #1 - bl sub_02021CC8 - mov r0, #0xcb - lsl r0, r0, #2 - ldr r0, [r5, r0] - ldr r1, [r4, #8] - bl sub_02021D6C - mov r0, #0xcb - lsl r0, r0, #2 - ldr r0, [r5, r0] - ldr r1, [r4, #0xc] - bl sub_02021F58 - add r7, r7, #1 - add r4, #0x10 - add r5, r5, #4 - cmp r7, #9 - blt _02087ACC - mov r0, #0xcf - lsl r0, r0, #2 - ldr r0, [r6, r0] - mov r1, #0 - bl sub_02021CAC - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r6, r0] - mov r1, #0 - bl sub_02021CAC - ldr r7, _02087BDC ; =0x020F2984 - mov r5, #0 - add r4, r6, #0 -_02087B2E: - ldr r0, _02087BE0 ; =sub_020879DC - mov r1, #0x10 - mov r2, #5 - mov r3, #0x12 - bl sub_0200679C - mov r1, #0xe7 - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r1, #0 - ldr r0, [r4, r0] - bl sub_0201CED0 - mov r1, #0xd2 - lsl r1, r1, #2 - ldr r1, [r6, r1] - str r1, [r0, #0] - mov r1, #0xcb - lsl r1, r1, #2 - ldr r1, [r4, r1] - add r4, r4, #4 - str r1, [r0, #4] - ldr r1, [r7, #0] - add r7, #0x10 - lsl r1, r1, #0xc - str r1, [r0, #8] - str r5, [r0, #0xc] - add r5, r5, #1 - cmp r5, #7 - blt _02087B2E - ldr r2, [r6, #0xc] - mov r7, #0 - cmp r2, #0 - ble _02087BAE - mov r5, #0x50 - add r4, r6, #0 -_02087B76: - lsl r0, r5, #0xc - str r0, [sp, #0x34] - mov r0, #0x27 - lsl r0, r0, #0xc - str r0, [sp, #0x38] - add r0, sp, #0x2c - bl sub_02021AA0 - mov r1, #0xd9 - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r1, #0 - ldr r0, [r4, r0] - mov r1, #1 - bl sub_02021CC8 - mov r0, #0xd9 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x2b - bl sub_02021D6C - ldr r2, [r6, #0xc] - add r7, r7, #1 - add r5, #0xc - add r4, r4, #4 - cmp r7, r2 - blt _02087B76 -_02087BAE: - mov r1, #0x56 - lsl r1, r1, #2 - mov r0, #0xd9 - lsl r0, r0, #2 - ldrh r1, [r6, r1] - add r0, r6, r0 - bl sub_02088E1C - add r0, r6, #0 - add r1, sp, #0x2c - bl sub_02087BE4 - mov r0, #0x10 - mov r1, #1 - bl sub_0201FF0C - mov r0, #0x10 - mov r1, #1 - bl sub_0201FF74 - add sp, #0x5c - pop {r4, r5, r6, r7, pc} - nop -_02087BDC: .word 0x020F2984 -_02087BE0: .word sub_020879DC - thumb_func_end sub_02087A10 - - thumb_func_start sub_02087BE4 -sub_02087BE4: ; 0x02087BE4 - push {r3, r4, r5, lr} - add r4, r0, #0 - mov r0, #6 - add r5, r1, #0 - lsl r0, r0, #0xe - str r0, [r5, #8] - mov r0, #2 - lsl r0, r0, #0xe - str r0, [r5, #0xc] - add r0, r5, #0 - bl sub_02021AA0 - mov r1, #0xe5 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r4, r1] - mov r1, #1 - bl sub_02021CC8 - ldr r0, [r4, #0] - cmp r0, #7 - bhi _02087CDA - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02087C1C: ; jump table - .short _02087C2C - _02087C1C - 2 ; case 0 - .short _02087C94 - _02087C1C - 2 ; case 1 - .short _02087C86 - _02087C1C - 2 ; case 2 - .short _02087C4E - _02087C1C - 2 ; case 3 - .short _02087C78 - _02087C1C - 2 ; case 4 - .short _02087C6A - _02087C1C - 2 ; case 5 - .short _02087C5C - _02087C1C - 2 ; case 6 - .short _02087C78 - _02087C1C - 2 ; case 7 -_02087C2C: - ldr r0, [r4, #4] - cmp r0, #0 - bne _02087C40 - mov r0, #0xe5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x30 - bl sub_02021D6C - pop {r3, r4, r5, pc} -_02087C40: - mov r0, #0xe5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x31 - bl sub_02021D6C - pop {r3, r4, r5, pc} -_02087C4E: - mov r0, #0xe5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x33 - bl sub_02021D6C - pop {r3, r4, r5, pc} -_02087C5C: - mov r0, #0xe5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x37 - bl sub_02021D6C - pop {r3, r4, r5, pc} -_02087C6A: - mov r0, #0xe5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x36 - bl sub_02021D6C - pop {r3, r4, r5, pc} -_02087C78: - mov r0, #0xe5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x35 - bl sub_02021D6C - pop {r3, r4, r5, pc} -_02087C86: - mov r0, #0xe5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x2f - bl sub_02021D6C - pop {r3, r4, r5, pc} -_02087C94: - mov r0, #0xe5 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x32 - bl sub_02021D6C - ldr r0, [r4, #0x10] - cmp r0, #2 - beq _02087CDA - ldr r1, [r4, #0xc] - mov r0, #0xd - mul r0, r1 - add r0, #0x50 - lsl r0, r0, #0xc - str r0, [r5, #8] - mov r0, #0x1b - lsl r0, r0, #0xc - str r0, [r5, #0xc] - add r0, r5, #0 - bl sub_02021AA0 - mov r1, #0xe6 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [r4, #0x10] - cmp r0, #0 - ldr r0, [r4, r1] - bne _02087CD4 - mov r1, #0x2d - bl sub_02021D6C - pop {r3, r4, r5, pc} -_02087CD4: - mov r1, #0x2e - bl sub_02021D6C -_02087CDA: - pop {r3, r4, r5, pc} - thumb_func_end sub_02087BE4 - - thumb_func_start sub_02087CDC -sub_02087CDC: ; 0x02087CDC - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0xc] - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - ldr r0, [r4, #4] - cmp r0, #6 - bhi _02087D5A - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02087CFE: ; jump table - .short _02087D0C - _02087CFE - 2 ; case 0 - .short _02087D5A - _02087CFE - 2 ; case 1 - .short _02087D20 - _02087CFE - 2 ; case 2 - .short _02087D5A - _02087CFE - 2 ; case 3 - .short _02087D34 - _02087CFE - 2 ; case 4 - .short _02087D5A - _02087CFE - 2 ; case 5 - .short _02087D48 - _02087CFE - 2 ; case 6 -_02087D0C: - mov r0, #1 - ldr r1, [r4, #8] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp] - ldr r0, [r4, #0] - add r1, sp, #0 - bl sub_02021C50 - b _02087D5A -_02087D20: - mov r0, #3 - ldr r1, [r4, #8] - lsl r0, r0, #0xc - sub r0, r1, r0 - str r0, [sp] - ldr r0, [r4, #0] - add r1, sp, #0 - bl sub_02021C50 - b _02087D5A -_02087D34: - mov r0, #2 - ldr r1, [r4, #8] - lsl r0, r0, #0xc - add r0, r1, r0 - str r0, [sp] - ldr r0, [r4, #0] - add r1, sp, #0 - bl sub_02021C50 - b _02087D5A -_02087D48: - ldr r0, [r4, #8] - add r1, sp, #0 - str r0, [sp] - ldr r0, [r4, #0] - bl sub_02021C50 - add r0, r5, #0 - bl sub_020067D0 -_02087D5A: - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - add sp, #0xc - pop {r4, r5, pc} - thumb_func_end sub_02087CDC - - thumb_func_start sub_02087D64 -sub_02087D64: ; 0x02087D64 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - str r1, [sp, #0x14] - ldr r1, [sp, #0x40] - add r5, r2, #0 - str r1, [sp, #0x40] - ldr r1, [sp, #0x48] - mov r2, #1 - str r1, [sp, #0x48] - ldr r1, [sp, #0x40] - str r0, [sp, #0x10] - ldr r6, [r1, #0] - add r7, r3, #0 - add r1, r6, #0 - eor r1, r2 - str r1, [sp, #0x18] - ldr r1, [r5, #0] - ldr r4, [sp, #0x44] - cmp r1, #4 - bls _02087D8E - b _02087F32 -_02087D8E: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_02087D9A: ; jump table - .short _02087DA4 - _02087D9A - 2 ; case 0 - .short _02087DF0 - _02087D9A - 2 ; case 1 - .short _02087E16 - _02087D9A - 2 ; case 2 - .short _02087EB0 - _02087D9A - 2 ; case 3 - .short _02087F32 - _02087D9A - 2 ; case 4 -_02087DA4: - mov r0, #0 - str r0, [sp] - mov r0, #0xe - lsl r0, r0, #6 - str r0, [sp, #4] - str r2, [sp, #8] - mov r0, #0x12 - str r0, [sp, #0xc] - ldr r2, [sp, #0x10] - mov r0, #0x1f - add r1, r7, #6 - add r3, r6, #0 - bl sub_02006E60 - add r0, r4, #0 - add r1, r6, #0 - bl sub_02088260 - ldr r0, _02087F38 ; =0x020F24DC - lsl r2, r6, #4 - ldrb r1, [r0, r7] - ldr r0, [sp, #0x4c] - ldr r3, _02087F3C ; =0x000E0F00 - str r0, [sp] - ldr r0, [sp, #0x14] - add r0, r0, r2 - lsl r2, r1, #4 - orr r1, r2 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - add r2, r7, #0 - bl sub_02088E58 - ldr r0, [r5, #0] - add sp, #0x28 - add r0, r0, #1 - str r0, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_02087DF0: - lsl r1, r6, #0x18 - lsr r1, r1, #0x18 - mov r2, #0 - mov r3, #0xee - bl sub_02019184 - mov r2, #3 - lsl r1, r6, #0x18 - add r3, r2, #0 - ldr r0, [sp, #0x10] - lsr r1, r1, #0x18 - sub r3, #0x53 - bl sub_02019184 - ldr r0, [r5, #0] - add sp, #0x28 - add r0, r0, #1 - str r0, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_02087E16: - mov r1, #0xc - add r0, r6, #0 - mul r0, r1 - ldr r2, [r4, r0] - str r0, [sp, #0x1c] - sub r2, #0x18 - str r2, [r4, r0] - ldr r0, [r4, r0] - sub r1, #0xd - cmp r0, r1 - bge _02087E6E - ldr r0, _02087F40 ; =sub_02087CDC - mov r1, #0x10 - mov r2, #0 - mov r3, #0x12 - bl sub_0200679C - bl sub_0201CED0 - add r7, r0, #0 - ldr r0, [sp, #0x48] - ldr r0, [r0, #0x1c] - str r0, [r7, #0] - mov r0, #0 - str r0, [r7, #4] - ldr r0, [sp, #0x48] - ldr r0, [r0, #0x1c] - bl sub_02021D28 - ldr r0, [r0, #0] - str r0, [r7, #8] - ldr r0, [sp, #0x48] - ldr r0, [r0, #0x1c] - bl sub_02021D28 - ldr r0, [r0, #4] - mov r1, #0xa - str r0, [r7, #0xc] - ldr r0, [sp, #0x1c] - mvn r1, r1 - str r1, [r4, r0] - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] -_02087E6E: - ldr r0, [sp, #0x18] - mov r1, #0xc - add r7, r0, #0 - add r5, r4, #4 - mul r7, r1 - ldr r0, [r5, r7] - sub r0, #0xa - str r0, [r5, r7] - add r0, r1, #0 - ldr r2, [r5, r7] - sub r0, #0xd0 - cmp r2, r0 - bge _02087E8C - sub r1, #0xd0 - str r1, [r5, r7] -_02087E8C: - ldr r3, [sp, #0x1c] - lsl r1, r6, #0x18 - ldr r0, [sp, #0x10] - ldr r3, [r4, r3] - lsr r1, r1, #0x18 - mov r2, #0 - bl sub_02019184 - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x10] - lsl r1, r1, #0x18 - ldr r3, [r5, r7] - lsr r1, r1, #0x18 - mov r2, #3 - bl sub_02019184 - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} -_02087EB0: - ldr r1, [sp, #0x18] - mov r0, #0xc - add r2, r1, #0 - mul r2, r0 - str r2, [sp, #0x20] - add r7, r4, #4 - ldr r2, [r7, r2] - ldr r1, [sp, #0x20] - sub r2, #0xa - str r2, [r7, r1] - ldr r2, [r7, r1] - add r1, r0, #0 - sub r1, #0xd0 - cmp r2, r1 - bge _02087ED4 - ldr r1, [sp, #0x20] - sub r0, #0xd0 - str r0, [r7, r1] -_02087ED4: - mov r0, #0xc - mul r0, r6 - str r0, [sp, #0x24] - ldr r3, [sp, #0x24] - lsl r1, r6, #0x18 - ldr r0, [sp, #0x10] - ldr r3, [r4, r3] - lsr r1, r1, #0x18 - mov r2, #0 - bl sub_02019184 - ldr r1, [sp, #0x18] - ldr r3, [sp, #0x20] - lsl r1, r1, #0x18 - ldr r0, [sp, #0x10] - ldr r3, [r7, r3] - lsr r1, r1, #0x18 - mov r2, #3 - bl sub_02019184 - ldr r0, [sp, #0x24] - mov r1, #0xa - ldr r0, [r4, r0] - mvn r1, r1 - cmp r0, r1 - bne _02087F32 - ldr r0, [sp, #0x20] - sub r1, #0xb9 - ldr r0, [r7, r0] - cmp r0, r1 - bne _02087F32 - ldr r0, [r5, #0] - add r2, r4, #0 - add r0, r0, #1 - str r0, [r5, #0] - ldr r0, [sp, #0x40] - ldr r1, [r0, #0] - mov r0, #1 - eor r1, r0 - ldr r0, [sp, #0x40] - str r1, [r0, #0] - ldr r0, [sp, #0x10] - bl sub_02088240 - ldr r0, _02087F44 ; =0x0000069B - bl sub_02005748 -_02087F32: - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - nop -_02087F38: .word 0x020F24DC -_02087F3C: .word 0x000E0F00 -_02087F40: .word sub_02087CDC -_02087F44: .word 0x0000069B - thumb_func_end sub_02087D64 - - thumb_func_start sub_02087F48 -sub_02087F48: ; 0x02087F48 - push {r4, r5, lr} - sub sp, #0xc - add r4, r2, #0 - mov r2, #1 - mov r1, #0 - lsl r2, r2, #8 - mov r3, #0xa - add r5, r0, #0 - bl sub_0200E060 - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - add r0, r5, #0 - mov r1, #1 - add r2, r4, #0 - str r3, [sp, #8] - bl sub_0201D738 - add r0, r5, #0 - bl sub_0201A954 - add sp, #0xc - pop {r4, r5, pc} - thumb_func_end sub_02087F48 - - thumb_func_start sub_02087F78 -sub_02087F78: ; 0x02087F78 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r0, #0 - add r6, r2, #0 - mov r0, #0 - add r1, r6, #0 - add r2, r0, #0 - mov r4, #0x10 - bl sub_02002D7C - cmp r0, #0x82 - ble _02087F92 - mov r4, #0 -_02087F92: - add r0, r5, #0 - mov r1, #1 - bl sub_0201ADA4 - mov r1, #0 - str r1, [sp] - ldr r0, _02087FBC ; =0x000E0F01 - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r5, #0 - add r2, r6, #0 - add r3, r4, #0 - str r1, [sp, #0xc] - bl sub_0201D78C - add r0, r5, #0 - bl sub_0201A954 - add sp, #0x10 - pop {r4, r5, r6, pc} - nop -_02087FBC: .word 0x000E0F01 - thumb_func_end sub_02087F78 - - thumb_func_start sub_02087FC0 -sub_02087FC0: ; 0x02087FC0 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r1, #0 - mov r1, #1 - add r5, r0, #0 - str r1, [sp] - mov r0, #0x1a - str r0, [sp, #4] - mov r0, #0xc - str r0, [sp, #8] - str r1, [sp, #0xc] - add r0, #0xf4 - str r0, [sp, #0x10] - mov r0, #0x16 - lsl r0, r0, #4 - mov r1, #0xee - lsl r1, r1, #2 - add r4, r2, #0 - ldr r0, [r5, r0] - add r1, r5, r1 - mov r2, #0 - mov r3, #2 - bl sub_0201A7E8 - mov r2, #1 - mov r1, #0xf2 - lsl r1, r1, #2 - str r2, [sp] - mov r0, #0x1a - str r0, [sp, #4] - mov r0, #0xc - str r0, [sp, #8] - mov r0, #0x8e - str r2, [sp, #0xc] - lsl r0, r0, #2 - str r0, [sp, #0x10] - sub r0, #0xd8 - ldr r0, [r5, r0] - add r1, r5, r1 - mov r3, #2 - bl sub_0201A7E8 - ldr r0, [r5, #0] - cmp r0, #4 - bne _02088064 - mov r0, #0 - str r0, [sp] - mov r0, #0xe - lsl r0, r0, #6 - str r0, [sp, #4] - mov r3, #1 - mov r2, #0x16 - str r3, [sp, #8] - mov r0, #0x12 - str r0, [sp, #0xc] - lsl r2, r2, #4 - ldr r2, [r5, r2] - add r0, r4, #0 - mov r1, #9 - bl sub_0200710C - mov r0, #0x46 - mov r1, #4 - lsl r0, r0, #4 - str r1, [r5, r0] - add r0, r5, #0 - add r0, #0x3a - bl sub_02088844 - mov r0, #0x4b - lsl r0, r0, #4 - ldr r1, [r5, r0] - sub r0, #0xe8 - ldr r1, [r1, #0x14] - ldr r3, _02088224 ; =0x000E0F00 - str r1, [sp] - ldr r1, _02088228 ; =0x00000A0A - add r0, r5, r0 - mov r2, #4 - bl sub_02088E58 - b _0208808E -_02088064: - mov r0, #0x46 - mov r1, #0 - lsl r0, r0, #4 - str r1, [r5, r0] - add r0, r5, #0 - add r0, #0x3a - bl sub_02088844 - mov r1, #0x4b - lsl r1, r1, #4 - ldr r0, [r5, r1] - ldr r3, _02088224 ; =0x000E0F00 - ldr r0, [r0, #0x14] - mov r2, #0 - str r0, [sp] - add r0, r1, #0 - sub r0, #0xe8 - add r0, r5, r0 - sub r1, #0xac - bl sub_02088E58 -_0208808E: - mov r2, #2 - str r2, [sp] - mov r3, #0x16 - str r3, [sp, #4] - mov r1, #0x37 - str r2, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - lsl r1, r1, #4 - str r1, [sp, #0x10] - lsl r0, r3, #4 - add r1, #0x68 - ldr r0, [r5, r0] - add r1, r5, r1 - mov r3, #7 - bl sub_0201A7E8 - ldr r1, [r5, #0xc] - mov r0, #0xc - add r2, r1, #0 - mul r2, r0 - asr r0, r2, #2 - lsr r0, r0, #0x1d - add r0, r2, r0 - asr r0, r0, #3 - add r4, r0, #1 - mov r0, #3 - str r0, [sp] - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #4] - mov r2, #2 - mov r1, #0xe7 - str r2, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - lsl r1, r1, #2 - mov r0, #0x16 - str r1, [sp, #0x10] - lsl r0, r0, #4 - add r1, #0x4c - ldr r0, [r5, r0] - add r1, r5, r1 - mov r3, #0xa - bl sub_0201A7E8 - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r5, r0 - mov r1, #1 - bl sub_0201ADA4 - mov r0, #3 - str r0, [sp] - mov r0, #7 - str r0, [sp, #4] - mov r2, #2 - mov r1, #0xf - add r4, #9 - lsl r3, r4, #0x18 - str r2, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - lsl r1, r1, #6 - mov r0, #0x16 - str r1, [sp, #0x10] - lsl r0, r0, #4 - add r1, #0x78 - ldr r0, [r5, r0] - add r1, r5, r1 - lsr r3, r3, #0x18 - bl sub_0201A7E8 - ldr r0, _0208822C ; =0x00000438 - mov r1, #1 - add r0, r5, r0 - bl sub_0201ADA4 - ldr r1, [r5, #0] - cmp r1, #5 - bne _02088146 - mov r2, #0x61 - ldr r0, _0208822C ; =0x00000438 - lsl r2, r2, #2 - ldr r2, [r5, r2] - add r0, r5, r0 - bl sub_02087F78 - ldr r0, _0208822C ; =0x00000438 - add r0, r5, r0 - bl sub_0201A954 -_02088146: - mov r0, #0x13 - str r0, [sp] - mov r0, #0x1b - str r0, [sp, #4] - mov r2, #4 - ldr r1, _02088230 ; =0x00000448 - str r2, [sp, #8] - mov r0, #0xc - str r0, [sp, #0xc] - mov r0, #0x84 - str r0, [sp, #0x10] - add r0, #0xdc - ldr r0, [r5, r0] - add r1, r5, r1 - mov r3, #2 - bl sub_0201A7E8 - ldr r0, _02088230 ; =0x00000448 - mov r1, #0xf - add r0, r5, r0 - bl sub_0201ADA4 - mov r2, #0x5e - ldr r0, _02088230 ; =0x00000448 - lsl r2, r2, #2 - ldr r1, [r5, #0] - ldr r2, [r5, r2] - add r0, r5, r0 - bl sub_02087F48 - add r0, r6, #0 - bl sub_02006840 - mov r1, #0x46 - lsl r1, r1, #2 - ldrh r2, [r5, r1] - ldr r0, _02088234 ; =0x0000FFFF - cmp r2, r0 - beq _020881BC - add r0, r5, #0 - add r0, #0xd8 - add r1, r5, r1 - bl sub_020021B0 - mov r0, #0xc - str r0, [sp] - mov r2, #0 - add r1, r5, #0 - ldr r0, _02088238 ; =0x000E0F01 - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r5, r0 - add r1, #0xd8 - add r3, r2, #0 - str r2, [sp, #0xc] - bl sub_02088554 -_020881BC: - mov r0, #0xee - lsl r0, r0, #2 - mov r4, #0 - add r7, r5, r0 -_020881C4: - add r0, r4, #4 - lsl r6, r0, #4 - mov r0, #0 - str r0, [sp] - mov r0, #2 - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - mov r0, #0x78 - str r0, [sp, #0x10] - add r0, #0xe8 - ldr r0, [r5, r0] - add r1, r7, r6 - mov r2, #2 - mov r3, #0 - bl sub_0201A7E8 - add r0, r7, r6 - mov r1, #0 - bl sub_0201ADA4 - add r4, r4, #1 - cmp r4, #3 - blt _020881C4 - mov r3, #0 - str r3, [sp] - mov r0, #0x10 - str r0, [sp, #4] - mov r2, #2 - str r2, [sp, #8] - ldr r1, _0208823C ; =0x00000428 - str r3, [sp, #0xc] - mov r0, #0x84 - str r0, [sp, #0x10] - add r0, #0xdc - ldr r0, [r5, r0] - add r1, r5, r1 - bl sub_0201A7E8 - ldr r0, _0208823C ; =0x00000428 - mov r1, #0 - add r0, r5, r0 - bl sub_0201ADA4 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_02088224: .word 0x000E0F00 -_02088228: .word 0x00000A0A -_0208822C: .word 0x00000438 -_02088230: .word 0x00000448 -_02088234: .word 0x0000FFFF -_02088238: .word 0x000E0F01 -_0208823C: .word 0x00000428 - thumb_func_end sub_02087FC0 - - thumb_func_start sub_02088240 -sub_02088240: ; 0x02088240 - push {r4, lr} - add r4, r1, #0 - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - mov r1, #1 - bl sub_02019060 - mov r0, #1 - eor r0, r4 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov r1, #2 - bl sub_02019060 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end sub_02088240 - - thumb_func_start sub_02088260 -sub_02088260: ; 0x02088260 - push {r3, r4} - mov r3, #0xc - add r4, r1, #0 - mul r4, r3 - mov r2, #0xee - str r2, [r0, r4] - add r2, r3, #0 - sub r2, #0x5c - add r4, r0, r4 - str r2, [r4, #4] - mov r4, #1 - eor r1, r4 - mul r3, r1 - sub r4, #0xc - str r4, [r0, r3] - add r0, r0, r3 - str r2, [r0, #4] - pop {r3, r4} - bx lr - ; .align 2, 0 - thumb_func_end sub_02088260 - - thumb_func_start sub_02088288 -sub_02088288: ; 0x02088288 - cmp r0, r2 - blt _0208828E - add r0, r1, #0 -_0208828E: - cmp r0, r1 - bge _02088294 - sub r0, r2, #1 -_02088294: - bx lr - ; .align 2, 0 - thumb_func_end sub_02088288 - - thumb_func_start sub_02088298 -sub_02088298: ; 0x02088298 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - cmp r1, #0 - beq _0208833C - ldr r3, [r5, #0x20] - mov r2, #0x1a - mul r2, r3 - ldr r0, [r5, #0x1c] - add r3, r5, r2 - lsl r2, r0, #1 - add r2, r3, r2 - ldrh r2, [r2, #0x3a] - lsl r6, r1, #3 - ldr r1, _02088340 ; =0x020F2904 - str r2, [sp] - ldr r1, [r1, r6] - mov r2, #0xd - add r0, r0, r1 - mov r1, #0 - bl sub_02088288 - add r4, r0, #0 - ldr r0, _02088344 ; =0x020F2908 - ldr r1, [r5, #0x20] - ldr r0, [r0, r6] - mov r2, #6 - add r0, r1, r0 - mov r1, #0 - bl sub_02088288 - add r7, r0, #0 - ldr r0, _02088340 ; =0x020F2904 - add r6, r0, r6 - b _0208831A -_020882DC: - ldr r1, [r5, #0x28] - cmp r1, #0 - bne _020882FE - ldr r1, _02088348 ; =0x0000D004 - cmp r0, r1 - bne _020882FE - ldr r0, [r6, #4] - cmp r0, #0 - beq _020882FE - ldr r0, [r5, #0x2c] - mov r1, #0 - add r0, r4, r0 - mov r2, #0xd - bl sub_02088288 - add r4, r0, #0 - b _0208831A -_020882FE: - ldr r0, [r6, #0] - mov r1, #0 - add r0, r4, r0 - mov r2, #0xd - bl sub_02088288 - add r4, r0, #0 - ldr r0, [r6, #4] - mov r1, #0 - add r0, r7, r0 - mov r2, #6 - bl sub_02088288 - add r7, r0, #0 -_0208831A: - mov r0, #0x1a - mul r0, r7 - lsl r1, r4, #1 - add r0, r5, r0 - add r0, r1, r0 - ldrh r0, [r0, #0x3a] - ldr r1, _02088348 ; =0x0000D004 - cmp r0, r1 - beq _020882DC - ldr r1, [sp] - cmp r1, r0 - bne _02088338 - ldr r1, _0208834C ; =0x0000E001 - cmp r0, r1 - bhi _020882DC -_02088338: - str r4, [r5, #0x1c] - str r7, [r5, #0x20] -_0208833C: - pop {r3, r4, r5, r6, r7, pc} - nop -_02088340: .word 0x020F2904 -_02088344: .word 0x020F2908 -_02088348: .word 0x0000D004 -_0208834C: .word 0x0000E001 - thumb_func_end sub_02088298 - - thumb_func_start sub_02088350 -sub_02088350: ; 0x02088350 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - mov r0, #0xd3 - lsl r0, r0, #2 - mov r4, #0 - ldr r0, [r5, r0] - add r6, r4, #0 - add r7, r4, #0 - bl sub_02021D34 - cmp r0, #0 - bne _0208836A - mov r7, #1 -_0208836A: - ldr r0, _02088448 ; =0x021BF67C - ldr r1, [r0, #0x4c] - mov r0, #0x40 - tst r0, r1 - beq _0208838A - ldr r0, _0208844C ; =0x000005DC - bl sub_02005748 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl sub_02021CAC - mov r6, #1 - add r4, r4, #1 -_0208838A: - ldr r0, _02088448 ; =0x021BF67C - ldr r1, [r0, #0x4c] - mov r0, #0x80 - tst r0, r1 - beq _020883AA - ldr r0, _0208844C ; =0x000005DC - bl sub_02005748 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl sub_02021CAC - mov r6, #2 - add r4, r4, #1 -_020883AA: - ldr r0, _02088448 ; =0x021BF67C - ldr r1, [r0, #0x4c] - mov r0, #0x20 - tst r0, r1 - beq _020883CA - ldr r0, _0208844C ; =0x000005DC - bl sub_02005748 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl sub_02021CAC - mov r6, #3 - add r4, r4, #1 -_020883CA: - ldr r0, _02088448 ; =0x021BF67C - ldr r1, [r0, #0x4c] - mov r0, #0x10 - tst r0, r1 - beq _020883EA - ldr r0, _0208844C ; =0x000005DC - bl sub_02005748 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl sub_02021CAC - mov r6, #4 - add r4, r4, #1 -_020883EA: - ldr r0, _02088448 ; =0x021BF67C - ldr r1, [r0, #0x48] - mov r0, #8 - tst r0, r1 - beq _02088410 - ldr r0, _0208844C ; =0x000005DC - bl sub_02005748 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #1 - bl sub_02021CAC - mov r0, #0xc - str r0, [r5, #0x1c] - mov r0, #0 - str r0, [r5, #0x20] - add r4, r4, #1 -_02088410: - add r0, r5, #0 - bl sub_0208903C - ldr r1, _02088450 ; =0x000005C8 - str r0, [r5, r1] - ldr r0, [r5, r1] - cmp r0, #1 - bne _02088424 - mov r6, #0 - add r4, r4, #1 -_02088424: - cmp r7, #1 - bne _02088432 - add r0, r5, #0 - add r1, r6, #0 - mov r4, #0 - bl sub_02088454 -_02088432: - cmp r4, #0 - beq _02088446 - add r0, r5, #0 - add r1, r6, #0 - bl sub_02088298 - add r0, r5, #0 - add r1, r6, #0 - bl sub_02088454 -_02088446: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02088448: .word 0x021BF67C -_0208844C: .word 0x000005DC -_02088450: .word 0x000005C8 - thumb_func_end sub_02088350 - - thumb_func_start sub_02088454 -sub_02088454: ; 0x02088454 - push {r3, r4, r5, lr} - sub sp, #0x18 - add r5, r0, #0 - add r4, r1, #0 - ldr r1, [r5, #0x20] - cmp r1, #0 - beq _0208849E - ldr r0, [r5, #0x28] - cmp r0, #0 - bne _02088478 - cmp r0, r1 - beq _02088478 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #0x27 - bl sub_02021D6C -_02088478: - ldr r0, [r5, #0x1c] - lsl r0, r0, #4 - add r0, #0x1a - lsl r0, r0, #0xc - str r0, [sp, #0xc] - ldr r0, [r5, #0x20] - sub r1, r0, #1 - mov r0, #0x13 - mul r0, r1 - add r0, #0x5b - lsl r0, r0, #0xc - str r0, [sp, #0x10] - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, sp, #0xc - bl sub_02021C50 - b _020884DA -_0208849E: - mov r0, #0x1a - mul r0, r1 - add r1, r5, r0 - ldr r0, [r5, #0x1c] - lsl r0, r0, #1 - add r0, r1, r0 - ldrh r1, [r0, #0x3a] - ldr r0, _02088504 ; =0x0000E002 - sub r1, r1, r0 - ldr r0, _02088508 ; =0x020F251C - lsl r2, r1, #1 - ldrh r0, [r0, r2] - ldr r2, _0208850C ; =0x020F24E8 - lsl r0, r0, #0xc - str r0, [sp] - mov r0, #0x11 - lsl r0, r0, #0xe - str r0, [sp, #4] - mov r0, #0xd3 - lsl r0, r0, #2 - ldrb r1, [r2, r1] - ldr r0, [r5, r0] - bl sub_02021D6C - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, sp, #0 - bl sub_02021C50 -_020884DA: - mov r0, #0xb4 - strh r0, [r5, #0x38] - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r5, r0] - mov r1, #0 - bl sub_02021E50 - ldr r0, [r5, #0x1c] - lsl r1, r4, #3 - str r0, [r5, #0x24] - ldr r0, [r5, #0x20] - str r0, [r5, #0x28] - ldr r0, _02088510 ; =0x020F2904 - ldr r0, [r0, r1] - cmp r0, #0 - beq _020884FE - str r0, [r5, #0x2c] -_020884FE: - add sp, #0x18 - pop {r3, r4, r5, pc} - nop -_02088504: .word 0x0000E002 -_02088508: .word 0x020F251C -_0208850C: .word 0x020F24E8 -_02088510: .word 0x020F2904 - thumb_func_end sub_02088454 - - thumb_func_start sub_02088514 -sub_02088514: ; 0x02088514 - push {r3, lr} - ldrh r1, [r0] - add r1, #0x14 - strh r1, [r0] - ldrh r2, [r0] - mov r1, #0x5a - lsl r1, r1, #2 - cmp r2, r1 - bls _0208852A - mov r1, #0 - strh r1, [r0] -_0208852A: - ldrh r0, [r0] - bl sub_0201D250 - mov r1, #0xa - mul r1, r0 - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r0, r0, #0xc - add r0, #0xf - lsl r1, r0, #5 - mov r0, #0x1d - orr r1, r0 - add r0, sp, #0 - strh r1, [r0] - add r0, sp, #0 - mov r1, #0x3a - mov r2, #2 - bl GX_LoadOBJPltt - pop {r3, pc} - thumb_func_end sub_02088514 - - thumb_func_start sub_02088554 -sub_02088554: ; 0x02088554 - push {r4, r5, r6, r7, lr} - sub sp, #0x3c - str r0, [sp, #0x18] - add r7, r1, #0 - mov r0, #2 - mov r1, #0x12 - str r2, [sp, #0x1c] - str r3, [sp, #0x20] - mov r4, #0 - bl sub_02023790 - str r0, [sp, #0x28] - ldrh r1, [r7] - ldr r0, _02088644 ; =0x0000FFFF - cmp r1, r0 - beq _0208863A - ldr r0, [sp, #0x54] - ldr r6, [sp, #0x50] - str r0, [sp, #0x24] - ldr r0, [sp, #0x58] - str r0, [sp, #0x34] - ldr r0, [sp, #0x20] - add r0, r0, #2 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x2c] - ldr r0, [sp, #0x5c] - str r0, [sp, #0x30] -_0208858C: - lsl r0, r4, #1 - ldrh r1, [r7, r0] - ldr r0, _02088648 ; =0x00002FFF - add r0, r1, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #2 - bhi _020885D8 - mov r0, #0xc - str r0, [sp] - str r0, [sp, #4] - add r2, r4, #0 - ldr r0, [sp, #0x1c] - mul r2, r6 - add r0, r0, r2 - ldr r2, _0208864C ; =0x0000D001 - lsl r0, r0, #0x10 - sub r1, r1, r2 - lsl r1, r1, #0x10 - lsr r0, r0, #0x10 - lsr r2, r1, #8 - str r0, [sp, #8] - ldr r0, [sp, #0x2c] - lsr r1, r2, #0x1f - add r1, r2, r1 - str r0, [sp, #0xc] - mov r0, #0xc - asr r2, r1, #1 - ldr r1, [sp, #0x30] - str r0, [sp, #0x10] - str r0, [sp, #0x14] - add r1, r1, r2 - mov r2, #0 - ldr r0, [sp, #0x18] - add r3, r2, #0 - bl sub_0201ADDC - b _0208862E -_020885D8: - ldr r0, _02088650 ; =0x0000D004 - cmp r1, r0 - bne _020885E2 - add r4, r4, #1 - b _02088630 -_020885E2: - add r0, sp, #0x38 - strh r1, [r0] - ldr r1, _02088644 ; =0x0000FFFF - strh r1, [r0, #2] - mov r0, #0 - add r1, sp, #0x38 - add r2, r0, #0 - bl sub_02002D48 - add r5, r0, #0 - ldr r0, [sp, #0x28] - add r1, sp, #0x38 - bl sub_02023D28 - ldr r0, [sp, #0x20] - sub r3, r6, r5 - str r0, [sp] - ldr r0, [sp, #0x24] - lsr r5, r3, #0x1f - add r5, r3, r5 - asr r3, r5, #1 - str r0, [sp, #4] - ldr r0, [sp, #0x34] - mov ip, r3 - add r5, r4, #0 - str r0, [sp, #8] - mov r0, #0 - str r0, [sp, #0xc] - ldr r3, [sp, #0x1c] - mul r5, r6 - add r3, r3, r5 - mov r5, ip - ldr r0, [sp, #0x18] - ldr r2, [sp, #0x28] - mov r1, #0 - add r3, r5, r3 - bl sub_0201D78C -_0208862E: - add r4, r4, #1 -_02088630: - lsl r0, r4, #1 - ldrh r1, [r7, r0] - ldr r0, _02088644 ; =0x0000FFFF - cmp r1, r0 - bne _0208858C -_0208863A: - ldr r0, [sp, #0x28] - bl sub_020237BC - add sp, #0x3c - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_02088644: .word 0x0000FFFF -_02088648: .word 0x00002FFF -_0208864C: .word 0x0000D001 -_02088650: .word 0x0000D004 - thumb_func_end sub_02088554 - - thumb_func_start sub_02088654 -sub_02088654: ; 0x02088654 - push {r4, r5, r6, lr} - sub sp, #0x10 - mov r5, #0 - add r6, r1, #0 - str r5, [sp] - mov r1, #0xff - str r1, [sp, #4] - str r3, [sp, #8] - add r1, r2, #0 - add r2, r6, #0 - add r3, r5, #0 - add r4, r0, #0 - str r5, [sp, #0xc] - bl sub_0201D78C - ldr r0, [r4, #0xc] - add sp, #0x10 - pop {r4, r5, r6, pc} - thumb_func_end sub_02088654 - - thumb_func_start sub_02088678 -sub_02088678: ; 0x02088678 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x38 - add r6, r0, #0 - str r1, [sp, #8] - add r0, #0x30 - mov r1, #0 - add r5, r2, #0 - add r4, r3, #0 - bl sub_0201ADA4 - add r0, r6, #0 - ldr r3, _02088744 ; =0x000D0E0F - add r0, #0x30 - add r1, r4, #0 - mov r2, #2 - bl sub_02088654 - mov r1, #2 - lsl r1, r1, #0xa - bl DC_FlushRange - add r7, r6, #0 - mov r4, #0 - add r7, #0x30 -_020886A8: - mov r0, #0 - str r0, [sp] - add r0, r7, #0 - mov r1, #4 - mov r2, #2 - lsl r3, r4, #2 - str r5, [sp, #4] - bl sub_02012C60 - mov r1, #1 - add r0, r5, #0 - lsl r1, r1, #8 - bl DC_FlushRange - ldr r1, _02088748 ; =0x020F24D8 - mov r2, #1 - ldrb r1, [r1, r4] - add r0, r5, #0 - lsl r2, r2, #8 - lsl r1, r1, #5 - bl GXS_LoadOBJ - add r0, r4, #1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - cmp r4, #4 - blo _020886A8 - mov r0, #0x15 - mov r1, #0x12 - bl sub_02023790 - add r4, r0, #0 - mov r5, #0 -_020886EA: - ldr r0, [sp, #8] - lsl r1, r5, #1 - ldrh r1, [r0, r1] - add r0, sp, #0xc - lsl r7, r5, #4 - strh r1, [r0] - ldr r1, _0208874C ; =0x0000FFFF - strh r1, [r0, #2] - add r0, r6, r7 - mov r1, #0 - bl sub_0201ADA4 - add r0, r4, #0 - add r1, sp, #0xc - bl sub_02023D28 - ldr r3, _02088744 ; =0x000D0E0F - add r0, r6, r7 - add r1, r4, #0 - mov r2, #2 - bl sub_02088654 - mov r1, #0x80 - add r7, r0, #0 - bl DC_FlushRange - ldr r1, _02088750 ; =0x020F24F0 - lsl r2, r5, #2 - ldr r1, [r1, r2] - add r0, r7, #0 - lsl r1, r1, #5 - mov r2, #0x80 - bl GXS_LoadOBJ - add r0, r5, #1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - cmp r5, #3 - blo _020886EA - add r0, r4, #0 - bl sub_020237BC - add sp, #0x38 - pop {r3, r4, r5, r6, r7, pc} - nop -_02088744: .word 0x000D0E0F -_02088748: .word 0x020F24D8 -_0208874C: .word 0x0000FFFF -_02088750: .word 0x020F24F0 - thumb_func_end sub_02088678 - - thumb_func_start sub_02088754 -sub_02088754: ; 0x02088754 - push {r3, r4, r5, lr} - cmp r2, #0 - bne _0208875E - ldr r1, _02088830 ; =0x0000D003 - b _02088764 -_0208875E: - sub r2, r2, #1 - lsl r2, r2, #1 - ldrh r1, [r1, r2] -_02088764: - ldr r4, _02088834 ; =0x0000E003 - cmp r1, r4 - bgt _02088794 - bge _020887BA - ldr r2, _02088838 ; =0x0000D004 - cmp r1, r2 - bgt _0208878C - sub r2, r2, #3 - sub r2, r1, r2 - bmi _020887BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_02088784: ; jump table - .short _020887BA - _02088784 - 2 ; case 0 - .short _020887BA - _02088784 - 2 ; case 1 - .short _020887BA - _02088784 - 2 ; case 2 - .short _020887BA - _02088784 - 2 ; case 3 -_0208878C: - ldr r2, _0208883C ; =0x0000E002 - cmp r1, r2 - beq _020887BA - b _020887BC -_02088794: - add r2, r4, #1 - cmp r1, r2 - bgt _0208879E - beq _020887BA - b _020887BC -_0208879E: - add r2, r4, #2 - sub r2, r1, r2 - cmp r2, #3 - bhi _020887BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_020887B2: ; jump table - .short _020887BA - _020887B2 - 2 ; case 0 - .short _020887BA - _020887B2 - 2 ; case 1 - .short _020887BA - _020887B2 - 2 ; case 2 - .short _020887BA - _020887B2 - 2 ; case 3 -_020887BA: - mov r1, #1 -_020887BC: - mov r4, #0 - add r5, r3, #0 - mov r2, #1 -_020887C2: - add r4, r4, #1 - strh r2, [r5] - add r5, r5, #2 - cmp r4, #3 - blt _020887C2 - strh r1, [r3] - cmp r1, #1 - beq _02088822 - ldr r5, _02088840 ; =0x020F2BBE - mov r2, #0 -_020887D6: - ldrh r4, [r5] - cmp r1, r4 - bne _020887F8 - mov r4, #6 - ldr r5, _02088840 ; =0x020F2BBE - mul r4, r2 - add r4, r5, r4 - mov r1, #0 - add r5, r3, #0 -_020887E8: - ldrh r2, [r4] - add r1, r1, #1 - add r4, r4, #2 - strh r2, [r5] - add r5, r5, #2 - cmp r1, #3 - blt _020887E8 - b _02088822 -_020887F8: - ldrh r4, [r5, #4] - cmp r1, r4 - bne _0208881A - mov r4, #6 - ldr r5, _02088840 ; =0x020F2BBE - mul r4, r2 - add r4, r5, r4 - mov r1, #0 - add r5, r3, #0 -_0208880A: - ldrh r2, [r4] - add r1, r1, #1 - add r4, r4, #2 - strh r2, [r5] - add r5, r5, #2 - cmp r1, #3 - blt _0208880A - b _02088822 -_0208881A: - add r2, r2, #1 - add r5, r5, #6 - cmp r2, #0x52 - blo _020887D6 -_02088822: - add r1, r3, #0 - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x14] - bl sub_02088678 - pop {r3, r4, r5, pc} - nop -_02088830: .word 0x0000D003 -_02088834: .word 0x0000E003 -_02088838: .word 0x0000D004 -_0208883C: .word 0x0000E002 -_02088840: .word 0x020F2BBE - thumb_func_end sub_02088754 - - thumb_func_start sub_02088844 -sub_02088844: ; 0x02088844 - push {r4, r5, r6, r7} - mov r4, #0 - ldr r3, _02088890 ; =0x02100C40 - add r5, r4, #0 - add r6, r0, #0 - lsl r2, r1, #2 -_02088850: - ldr r7, [r3, r2] - add r4, r4, #1 - ldrh r7, [r7, r5] - add r5, r5, #2 - strh r7, [r6] - add r6, r6, #2 - cmp r4, #0xd - blt _02088850 - mov r3, #0x14 - ldr r4, _02088894 ; =0x02100C54 - mul r3, r1 - mov r2, #0 - add r3, r4, r3 - add r1, r2, #0 -_0208886C: - add r6, r1, #0 - add r4, r1, #0 - add r5, r0, #0 -_02088872: - ldr r7, [r3, #0] - add r6, r6, #1 - ldrh r7, [r7, r4] - add r4, r4, #2 - strh r7, [r5, #0x1a] - add r5, r5, #2 - cmp r6, #0xd - blt _02088872 - add r2, r2, #1 - add r3, r3, #4 - add r0, #0x1a - cmp r2, #5 - blt _0208886C - pop {r4, r5, r6, r7} - bx lr - ; .align 2, 0 -_02088890: .word Unk_02100C40 -_02088894: .word Unk_02100C54 - thumb_func_end sub_02088844 - - thumb_func_start sub_02088898 -sub_02088898: ; 0x02088898 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r4, r0, #0 - ldr r0, _02088BCC ; =0x00002FFD - add r5, r1, #0 - add r0, r5, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r6, r2, #0 - cmp r0, #1 - bhi _020888B0 - mov r5, #1 -_020888B0: - ldr r0, [r4, #0] - cmp r0, #4 - bne _020888C4 - ldr r0, _02088BD0 ; =0x00001FFE - add r0, r5, r0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #3 - bhi _020888C4 - mov r5, #1 -_020888C4: - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_02021D34 - cmp r0, #0 - bne _020888EC - ldr r0, _02088BD4 ; =0x021BF6BC - ldrh r0, [r0, #0x20] - cmp r0, #0 - bne _020888EC - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl sub_02021CAC - add sp, #0x10 - mov r0, #2 - pop {r4, r5, r6, pc} -_020888EC: - ldr r0, _02088BD8 ; =0x0000E002 - cmp r5, r0 - bgt _0208890A - blt _020888F6 - b _02088A1E -_020888F6: - ldr r3, _02088BDC ; =0x0000D002 - cmp r5, r3 - bgt _02088908 - sub r0, r3, #1 - cmp r5, r0 - blt _02088908 - beq _0208892C - cmp r5, r3 - beq _0208897E -_02088908: - b _02088B5E -_0208890A: - add r0, r0, #1 - sub r0, r5, r0 - cmp r0, #5 - bls _02088914 - b _02088B5E -_02088914: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02088920: ; jump table - .short _02088A1E - _02088920 - 2 ; case 0 - .short _02088A1E - _02088920 - 2 ; case 1 - .short _02088A1E - _02088920 - 2 ; case 2 - .short _020889CC - _02088920 - 2 ; case 3 - .short _02088A60 - _02088920 - 2 ; case 4 - .short _02088B10 - _02088920 - 2 ; case 5 -_0208892C: - add r0, r4, #0 - add r0, #0xd8 - str r0, [sp] - mov r0, #0x56 - lsl r0, r0, #2 - ldrh r0, [r4, r0] - ldr r3, _02088BE0 ; =0x0000D001 - mov r1, #0x52 - str r0, [sp, #4] - mov r0, #0x2a - mov r2, #1 - bl sub_02088D08 - cmp r0, #0 - bne _0208894C - b _02088C6E -_0208894C: - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - mov r1, #1 - bl sub_0201ADA4 - mov r0, #0xc - str r0, [sp] - mov r2, #0 - ldr r0, _02088BE4 ; =0x000E0F01 - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - add r4, #0xd8 - add r1, r4, #0 - add r3, r2, #0 - str r2, [sp, #0xc] - bl sub_02088554 - ldr r0, _02088BE8 ; =0x000005EB - bl sub_02005748 - b _02088C6E -_0208897E: - add r0, r4, #0 - add r0, #0xd8 - str r0, [sp] - mov r0, #0x56 - lsl r0, r0, #2 - ldrh r0, [r4, r0] - mov r1, #0x52 - mov r2, #2 - str r0, [sp, #4] - mov r0, #0x48 - bl sub_02088D08 - cmp r0, #0 - beq _02088A6A - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - mov r1, #1 - bl sub_0201ADA4 - mov r0, #0xc - str r0, [sp] - mov r2, #0 - ldr r0, _02088BE4 ; =0x000E0F01 - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - add r4, #0xd8 - add r1, r4, #0 - add r3, r2, #0 - str r2, [sp, #0xc] - bl sub_02088554 - ldr r0, _02088BE8 ; =0x000005EB - bl sub_02005748 - b _02088C6E -_020889CC: - mov r3, #0x56 - lsl r3, r3, #2 - ldrh r3, [r4, r3] - add r2, r4, #0 - mov r0, #0 - mov r1, #0x52 - add r2, #0xd8 - bl sub_02088C9C - cmp r0, #0 - beq _02088A6A - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - mov r1, #1 - bl sub_0201ADA4 - mov r0, #0xc - str r0, [sp] - mov r2, #0 - add r1, r4, #0 - ldr r0, _02088BE4 ; =0x000E0F01 - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - add r1, #0xd8 - add r3, r2, #0 - str r2, [sp, #0xc] - bl sub_02088554 - mov r0, #0x4a - lsl r0, r0, #4 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - ldr r0, _02088BE8 ; =0x000005EB - bl sub_02005748 - b _02088C6E -_02088A1E: - mov r1, #0x46 - lsl r1, r1, #4 - ldr r0, _02088BD8 ; =0x0000E002 - ldr r2, [r4, r1] - sub r5, r5, r0 - cmp r2, r5 - beq _02088A6A - mov r2, #0 - sub r0, r1, #4 - str r2, [r4, r0] - str r5, [r4, r1] - add r0, r4, #0 - ldr r1, [r4, r1] - add r0, #0x3a - bl sub_02088844 - mov r0, #0x49 - lsl r0, r0, #4 - add r2, r4, r0 - lsl r1, r5, #2 - ldr r0, [r2, r1] - add r0, r0, #1 - str r0, [r2, r1] - ldr r0, _02088BEC ; =0x0000069E - bl sub_02005748 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, r6, #0 - bl sub_02021CAC - b _02088C6E -_02088A60: - mov r1, #0x56 - lsl r1, r1, #2 - ldrh r0, [r4, r1] - cmp r0, #0 - bne _02088A6C -_02088A6A: - b _02088C6E -_02088A6C: - sub r0, r0, #1 - lsl r0, r0, #1 - add r0, r4, r0 - ldr r2, _02088BF0 ; =0x0000FFFF - add r0, #0xd8 - strh r2, [r0] - ldrh r0, [r4, r1] - sub r0, r0, #1 - strh r0, [r4, r1] - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - mov r1, #1 - bl sub_0201ADA4 - mov r0, #0x56 - lsl r0, r0, #2 - ldrh r0, [r4, r0] - cmp r0, #0 - bne _02088AA0 - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - bl sub_0201A954 - b _02088ABE -_02088AA0: - mov r0, #0xc - str r0, [sp] - mov r2, #0 - ldr r0, _02088BE4 ; =0x000E0F01 - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0xfa - lsl r0, r0, #2 - add r1, r4, #0 - add r0, r4, r0 - add r1, #0xd8 - add r3, r2, #0 - str r2, [sp, #0xc] - bl sub_02088554 -_02088ABE: - ldr r0, _02088BF4 ; =0x000004C4 - mov r3, #0x5f - add r1, r4, r0 - lsl r3, r3, #2 - str r1, [sp] - ldr r1, [r4, r3] - add r2, r3, #0 - str r1, [sp, #4] - sub r2, #0x24 - sub r0, #0xcc - add r1, r4, #0 - sub r3, #0x22 - ldrh r2, [r4, r2] - add r0, r4, r0 - add r1, #0xd8 - add r3, r4, r3 - bl sub_02088754 - mov r1, #0x56 - lsl r1, r1, #2 - mov r0, #0xd9 - lsl r0, r0, #2 - ldrh r1, [r4, r1] - ldr r2, [r4, #0xc] - add r0, r4, r0 - bl sub_02088E1C - ldr r0, _02088BF8 ; =0x000004A4 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - ldr r0, _02088BFC ; =0x000005DC - bl sub_02005748 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, r6, #0 - bl sub_02021CAC - b _02088C6E -_02088B10: - ldr r0, _02088C00 ; =0x000005C4 - ldr r0, [r4, r0] - bl sub_02015760 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, r6, #0 - bl sub_02021CAC - ldr r0, [r4, #0x14] - cmp r0, #0 - bne _02088B56 - ldr r0, _02088C04 ; =0x000005E2 - bl sub_02005748 - ldr r0, _02088C08 ; =0x000004A8 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - mov r1, #0 - mov r0, #0x10 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #0x12 - str r0, [sp, #8] - mov r0, #2 - add r2, r1, #0 - add r3, r1, #0 - bl sub_0200F174 - add sp, #0x10 - mov r0, #3 - pop {r4, r5, r6, pc} -_02088B56: - ldr r0, _02088C0C ; =0x0000045C - mov r1, #5 - str r1, [r4, r0] - b _02088C6E -_02088B5E: - mov r0, #0x46 - lsl r0, r0, #4 - ldr r0, [r4, r0] - cmp r0, #4 - bne _02088B72 - cmp r5, #1 - bne _02088B72 - add sp, #0x10 - mov r0, #2 - pop {r4, r5, r6, pc} -_02088B72: - mov r0, #0x56 - lsl r0, r0, #2 - ldrh r1, [r4, r0] - ldr r0, [r4, #0xc] - cmp r1, r0 - beq _02088C6E - lsl r0, r1, #1 - add r0, r4, r0 - add r0, #0xd8 - strh r5, [r0] - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - mov r1, #1 - bl sub_0201ADA4 - mov r0, #0xc - str r0, [sp] - mov r2, #0 - add r1, r4, #0 - ldr r0, _02088BE4 ; =0x000E0F01 - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0xfa - lsl r0, r0, #2 - add r0, r4, r0 - add r1, #0xd8 - add r3, r2, #0 - str r2, [sp, #0xc] - bl sub_02088554 - mov r1, #0x56 - lsl r1, r1, #2 - ldrh r0, [r4, r1] - add r0, r0, #1 - strh r0, [r4, r1] - mov r0, #0xd9 - lsl r0, r0, #2 - ldrh r1, [r4, r1] - ldr r2, [r4, #0xc] - add r0, r4, r0 - bl sub_02088E1C - ldr r0, _02088BE8 ; =0x000005EB - b _02088C10 - ; .align 2, 0 -_02088BCC: .word 0x00002FFD -_02088BD0: .word 0x00001FFE -_02088BD4: .word 0x021BF6BC -_02088BD8: .word 0x0000E002 -_02088BDC: .word 0x0000D002 -_02088BE0: .word 0x0000D001 -_02088BE4: .word 0x000E0F01 -_02088BE8: .word 0x000005EB -_02088BEC: .word 0x0000069E -_02088BF0: .word 0x0000FFFF -_02088BF4: .word 0x000004C4 -_02088BF8: .word 0x000004A4 -_02088BFC: .word 0x000005DC -_02088C00: .word 0x000005C4 -_02088C04: .word 0x000005E2 -_02088C08: .word 0x000004A8 -_02088C0C: .word 0x0000045C -_02088C10: - bl sub_02005748 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl sub_02021CAC - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #1 - bl sub_02021FE0 - mov r3, #8 - ldr r0, _02088C74 ; =0x04000050 - mov r1, #0 - mov r2, #7 - str r3, [sp] - bl G2x_SetBlendAlpha_ - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x3c - bl sub_02021D6C - mov r0, #1 - str r0, [r4, #0x34] - ldr r0, _02088C78 ; =0x000004C4 - mov r3, #0x5f - add r1, r4, r0 - lsl r3, r3, #2 - str r1, [sp] - ldr r1, [r4, r3] - add r2, r3, #0 - str r1, [sp, #4] - sub r2, #0x24 - sub r0, #0xcc - add r1, r4, #0 - sub r3, #0x22 - ldrh r2, [r4, r2] - add r0, r4, r0 - add r1, #0xd8 - add r3, r4, r3 - bl sub_02088754 -_02088C6E: - mov r0, #2 - add sp, #0x10 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_02088C74: .word 0x04000050 -_02088C78: .word 0x000004C4 - thumb_func_end sub_02088898 - - thumb_func_start sub_02088C7C -sub_02088C7C: ; 0x02088C7C - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r4, #0 - mov r6, #3 -_02088C84: - add r0, r1, #1 - add r1, r4, #0 - add r2, r6, #0 - bl sub_02088288 - add r1, r0, #0 - lsl r0, r1, #1 - ldrh r0, [r5, r0] - cmp r0, #1 - beq _02088C84 - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end sub_02088C7C - - thumb_func_start sub_02088C9C -sub_02088C9C: ; 0x02088C9C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - add r0, r1, #0 - str r2, [sp] - cmp r3, #0 - bne _02088CB0 - add sp, #8 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02088CB0: - sub r1, r3, #1 - lsl r1, r1, #1 - str r1, [sp, #4] - ldrh r3, [r2, r1] - cmp r4, r0 - bge _02088CFE - mov r1, #6 - ldr r2, _02088D04 ; =0x020F2BBE - mul r1, r4 - add r5, r2, r1 - mov r7, #0 -_02088CC6: - add r2, r7, #0 - add r6, r5, #0 -_02088CCA: - ldrh r1, [r6] - cmp r3, r1 - bne _02088CEE - cmp r3, #1 - beq _02088CEE - mov r0, #6 - ldr r1, _02088D04 ; =0x020F2BBE - mul r0, r4 - add r0, r1, r0 - add r1, r2, #0 - bl sub_02088C7C - ldr r2, [sp] - ldr r1, [sp, #4] - add sp, #8 - strh r0, [r2, r1] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02088CEE: - add r2, r2, #1 - add r6, r6, #2 - cmp r2, #3 - blt _02088CCA - add r4, r4, #1 - add r5, r5, #6 - cmp r4, r0 - blt _02088CC6 -_02088CFE: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02088D04: .word 0x020F2BBE - thumb_func_end sub_02088C9C - - thumb_func_start sub_02088D08 -sub_02088D08: ; 0x02088D08 - push {r3, r4, r5, r6, r7, lr} - add r4, r0, #0 - add r0, r1, #0 - ldr r1, [sp, #0x1c] - mov lr, r2 - mov ip, r3 - cmp r1, #0 - beq _02088D24 - sub r1, r1, #1 - ldr r6, [sp, #0x18] - lsl r7, r1, #1 - ldrh r5, [r6, r7] - cmp r5, #1 - bne _02088D28 -_02088D24: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_02088D28: - add r2, r4, #0 - cmp r4, r0 - bge _02088D5A - mov r1, #6 - ldr r3, _02088E00 ; =0x020F2BBE - mul r1, r4 - add r3, r3, r1 -_02088D36: - ldrh r1, [r3] - cmp r5, r1 - bne _02088D52 - add r3, r2, #0 - mov r0, #6 - mul r3, r0 - mov r0, lr - ldr r2, _02088E00 ; =0x020F2BBE - lsl r1, r0, #1 - add r0, r2, r3 - ldrh r0, [r1, r0] - strh r0, [r6, r7] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02088D52: - add r2, r2, #1 - add r3, r3, #6 - cmp r2, r0 - blt _02088D36 -_02088D5A: - cmp r4, r0 - bge _02088D8A - mov r2, lr - ldr r1, _02088E00 ; =0x020F2BBE - lsl r2, r2, #1 - add r1, r1, r2 - mov r2, #6 - mul r2, r4 - add r2, r1, r2 -_02088D6C: - ldrh r1, [r2] - cmp r5, r1 - bne _02088D82 - mov r0, #6 - add r1, r4, #0 - mul r1, r0 - ldr r0, _02088E00 ; =0x020F2BBE - ldrh r0, [r0, r1] - strh r0, [r6, r7] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02088D82: - add r4, r4, #1 - add r2, r2, #6 - cmp r4, r0 - blt _02088D6C -_02088D8A: - ldr r1, _02088E04 ; =0x0000D001 - mov r0, ip - cmp r0, r1 - beq _02088DA4 - add r1, r1, #1 - mov r0, ip - cmp r0, r1 - beq _02088DC4 - ldr r1, _02088E08 ; =0x0000E006 - mov r0, ip - cmp r0, r1 - beq _02088DE4 - b _02088DFC -_02088DA4: - ldr r1, _02088E0C ; =0x020F2954 - mov r2, #0 -_02088DA8: - ldrh r0, [r1] - cmp r5, r0 - bne _02088DBA - ldr r0, _02088E10 ; =0x020F2956 - lsl r1, r2, #2 - ldrh r0, [r0, r1] - strh r0, [r6, r7] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02088DBA: - add r2, r2, #1 - add r1, r1, #4 - cmp r2, #0xc - blo _02088DA8 - b _02088DFC -_02088DC4: - ldr r1, _02088E14 ; =0x020F292C - mov r2, #0 -_02088DC8: - ldrh r0, [r1] - cmp r5, r0 - bne _02088DDA - ldr r0, _02088E18 ; =0x020F292E - lsl r1, r2, #2 - ldrh r0, [r0, r1] - strh r0, [r6, r7] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02088DDA: - add r2, r2, #1 - add r1, r1, #4 - cmp r2, #0xa - blo _02088DC8 - b _02088DFC -_02088DE4: - cmp r5, #0x26 - bne _02088DF0 - mov r0, #0x24 - strh r0, [r6, r7] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02088DF0: - cmp r5, #0x76 - bne _02088DFC - mov r0, #0x74 - strh r0, [r6, r7] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_02088DFC: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02088E00: .word 0x020F2BBE -_02088E04: .word 0x0000D001 -_02088E08: .word 0x0000E006 -_02088E0C: .word 0x020F2954 -_02088E10: .word 0x020F2956 -_02088E14: .word 0x020F292C -_02088E18: .word 0x020F292E - thumb_func_end sub_02088D08 - - thumb_func_start sub_02088E1C -sub_02088E1C: ; 0x02088E1C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r2, #0 - mov r4, #0 - str r0, [sp] - str r1, [sp, #4] - cmp r6, #0 - ble _02088E40 - add r5, r0, #0 - mov r7, #0x2b -_02088E30: - ldr r0, [r5, #0] - add r1, r7, #0 - bl sub_02021D6C - add r4, r4, #1 - add r5, r5, #4 - cmp r4, r6 - blt _02088E30 -_02088E40: - ldr r0, [sp, #4] - cmp r0, r6 - beq _02088E52 - lsl r1, r0, #2 - ldr r0, [sp] - ldr r0, [r0, r1] - mov r1, #0x2c - bl sub_02021D6C -_02088E52: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end sub_02088E1C - - thumb_func_start sub_02088E58 -sub_02088E58: ; 0x02088E58 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - str r2, [sp, #0x10] - ldr r2, [sp, #0x30] - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - add r5, r0, #0 - str r3, [sp, #0x14] - str r2, [sp, #0x30] - bl sub_0201ADA4 - ldr r1, _02088F38 ; =0x020F24E0 - ldr r0, [sp, #0x10] - mov r7, #0 - ldrb r4, [r1, r0] - mov r6, #0x10 -_02088E78: - mov r0, #0x10 - str r0, [sp] - mov r0, #0x13 - lsl r2, r6, #0x10 - str r0, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - lsr r2, r2, #0x10 - mov r3, #0 - bl sub_0201AE78 - mov r0, #0x10 - str r0, [sp] - mov r0, #0x13 - lsl r2, r6, #0x10 - str r0, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - lsr r2, r2, #0x10 - mov r3, #0x26 - bl sub_0201AE78 - mov r0, #0x10 - str r0, [sp] - mov r0, #0x13 - lsl r2, r6, #0x10 - str r0, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - lsr r2, r2, #0x10 - mov r3, #0x4c - bl sub_0201AE78 - add r7, r7, #1 - add r6, #0x20 - cmp r7, #6 - blt _02088E78 - mov r7, #0 - add r6, r7, #0 -_02088EC6: - mov r0, #0x10 - str r0, [sp] - mov r0, #0x13 - lsl r2, r6, #0x10 - str r0, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - lsr r2, r2, #0x10 - mov r3, #0x13 - bl sub_0201AE78 - mov r0, #0x10 - str r0, [sp] - mov r0, #0x13 - lsl r2, r6, #0x10 - str r0, [sp, #4] - add r0, r5, #0 - add r1, r4, #0 - lsr r2, r2, #0x10 - mov r3, #0x39 - bl sub_0201AE78 - add r7, r7, #1 - add r6, #0x20 - cmp r7, #7 - blt _02088EC6 - ldr r0, [sp, #0x10] - mov r1, #0x14 - ldr r2, _02088F3C ; =0x02100C54 - mul r1, r0 - mov r7, #0 - mov r6, #4 - add r4, r2, r1 -_02088F08: - mov r0, #0x10 - str r0, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r0, [sp, #0x14] - mov r2, #0 - str r0, [sp, #8] - ldr r0, [sp, #0x30] - add r3, r6, #0 - str r0, [sp, #0xc] - ldr r1, [r4, #0] - add r0, r5, #0 - bl sub_02088554 - add r7, r7, #1 - add r6, #0x13 - add r4, r4, #4 - cmp r7, #5 - blt _02088F08 - add r0, r5, #0 - bl sub_0201A954 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02088F38: .word 0x020F24E0 -_02088F3C: .word Unk_02100C54 - thumb_func_end sub_02088E58 - - thumb_func_start sub_02088F40 -sub_02088F40: ; 0x02088F40 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r1, #0 - str r0, [sp] - mov r7, #0 - add r1, r0, #0 -_02088F4C: - ldr r0, [r1, #0] - cmp r0, #0 - beq _02088F82 - mov r0, #0 - ldr r4, _02088FC4 ; =0x020F2984 - str r0, [sp, #4] - add r5, r6, #0 -_02088F5A: - ldr r0, [r5, #0] - ldr r1, [r4, #8] - bl sub_02021D6C - ldr r0, [sp, #4] - add r4, #0x10 - add r0, r0, #1 - add r5, r5, #4 - str r0, [sp, #4] - cmp r0, #3 - blt _02088F5A - ldr r1, _02088FC8 ; =0x020F298C - lsl r2, r7, #4 - lsl r0, r7, #2 - ldr r1, [r1, r2] - ldr r0, [r6, r0] - sub r1, r1, #3 - bl sub_02021D6C - b _02088F8A -_02088F82: - add r7, r7, #1 - add r1, r1, #4 - cmp r7, #3 - blt _02088F4C -_02088F8A: - ldr r4, [sp] - ldr r5, _02088FCC ; =0x020F29D4 - mov r7, #5 - add r4, #0x14 - add r6, #0x14 -_02088F94: - ldr r0, [r4, #0] - cmp r0, #0 - beq _02088FA4 - ldr r1, [r5, #8] - ldr r0, [r6, #0] - add r1, r1, #1 - bl sub_02021D6C -_02088FA4: - add r7, r7, #1 - add r4, r4, #4 - add r5, #0x10 - add r6, r6, #4 - cmp r7, #7 - blt _02088F94 - mov r2, #0 - add r1, r2, #0 -_02088FB4: - ldr r0, [sp] - add r2, r2, #1 - stmia r0!, {r1} - str r0, [sp] - cmp r2, #7 - blt _02088FB4 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_02088FC4: .word 0x020F2984 -_02088FC8: .word 0x020F298C -_02088FCC: .word 0x020F29D4 - thumb_func_end sub_02088F40 - - thumb_func_start sub_02088FD0 -sub_02088FD0: ; 0x02088FD0 - push {r4, lr} - add r4, r0, #0 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_02021FD0 - cmp r0, #0 - bne _0208903A - mov r0, #0x56 - lsl r0, r0, #2 - ldrh r1, [r4, r0] - ldr r0, [r4, #0xc] - cmp r1, r0 - bne _02089004 - mov r0, #0xc - str r0, [r4, #0x1c] - mov r0, #0 - str r0, [r4, #0x20] - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x27 - bl sub_02021D6C - b _02089010 -_02089004: - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0x27 - bl sub_02021D6C -_02089010: - ldr r0, [r4, #0x30] - cmp r0, #0 - bne _02089024 - mov r0, #0xd3 - lsl r0, r0, #2 - ldr r0, [r4, r0] - mov r1, #0 - bl sub_02021CAC - b _0208902C -_02089024: - add r0, r4, #0 - mov r1, #0 - bl sub_02088454 -_0208902C: - mov r1, #0 - mov r0, #0xd3 - str r1, [r4, #0x34] - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_02021FE0 -_0208903A: - pop {r4, pc} - thumb_func_end sub_02088FD0 - - thumb_func_start sub_0208903C -sub_0208903C: ; 0x0208903C - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - mov r0, #0 - mov ip, r0 - ldr r0, [sp] - ldr r0, [r0, #0] - cmp r0, #4 - bne _02089050 - mov r0, #4 - mov ip, r0 -_02089050: - ldr r2, _020890EC ; =0x021BF6BC - ldrh r0, [r2, #0x20] - cmp r0, #0 - beq _020890E6 - ldrh r0, [r2, #0x1c] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - mov lr, r0 - ldrh r0, [r2, #0x1e] - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - mov r0, ip - cmp r0, #0x47 - bhs _020890E6 - mov r0, #6 - mov r2, ip - mul r0, r2 - ldr r2, _020890F0 ; =0x020F2A14 - add r2, r2, r0 - add r3, r2, #0 -_02089078: - ldrh r4, [r3, #2] - ldrb r0, [r2] - ldrb r6, [r2, #1] - lsl r4, r4, #0x1e - lsr r4, r4, #0x1e - beq _0208908E - cmp r4, #1 - beq _02089094 - cmp r4, #2 - beq _0208909A - b _0208909E -_0208908E: - mov r5, #0x1f - mov r1, #0x16 - b _0208909E -_02089094: - mov r5, #0x20 - mov r1, #0x16 - b _0208909E -_0208909A: - mov r5, #0x10 - mov r1, #0x13 -_0208909E: - mov r4, lr - cmp r4, r0 - blo _020890D8 - cmp r7, r6 - blo _020890D8 - add r4, r0, r5 - mov r0, lr - cmp r0, r4 - bgt _020890D8 - add r0, r6, r1 - cmp r7, r0 - bgt _020890D8 - ldr r2, _020890F0 ; =0x020F2A14 - mov r1, #6 - mov r0, ip - mul r1, r0 - add r2, r2, r1 - ldrb r0, [r2, #4] - lsl r0, r0, #0x1b - lsr r1, r0, #0x1b - ldr r0, [sp] - str r1, [r0, #0x1c] - ldrb r0, [r2, #5] - lsl r0, r0, #0x1b - lsr r1, r0, #0x1b - ldr r0, [sp] - str r1, [r0, #0x20] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_020890D8: - mov r0, ip - add r0, r0, #1 - add r2, r2, #6 - add r3, r3, #6 - mov ip, r0 - cmp r0, #0x47 - blo _02089078 -_020890E6: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_020890EC: .word 0x021BF6BC -_020890F0: .word 0x020F2A14 - thumb_func_end sub_0208903C - - .rodata - - - .global Unk_020F24D8 -Unk_020F24D8: ; 0x020F24D8 - .incbin "incbin/arm9_rodata.bin", 0xD898, 0xD89C - 0xD898 - - .global Unk_020F24DC -Unk_020F24DC: ; 0x020F24DC - .incbin "incbin/arm9_rodata.bin", 0xD89C, 0xD8A0 - 0xD89C - - .global Unk_020F24E0 -Unk_020F24E0: ; 0x020F24E0 - .incbin "incbin/arm9_rodata.bin", 0xD8A0, 0xD8A8 - 0xD8A0 - - .global Unk_020F24E8 -Unk_020F24E8: ; 0x020F24E8 - .incbin "incbin/arm9_rodata.bin", 0xD8A8, 0xD8B0 - 0xD8A8 - - .global Unk_020F24F0 -Unk_020F24F0: ; 0x020F24F0 - .incbin "incbin/arm9_rodata.bin", 0xD8B0, 0xD8BC - 0xD8B0 - - .global Unk_020F24FC -Unk_020F24FC: ; 0x020F24FC - .incbin "incbin/arm9_rodata.bin", 0xD8BC, 0xD8CC - 0xD8BC - - .global Unk_020F250C -Unk_020F250C: ; 0x020F250C - .incbin "incbin/arm9_rodata.bin", 0xD8CC, 0xD8DC - 0xD8CC - - .global Unk_020F251C -Unk_020F251C: ; 0x020F251C - .incbin "incbin/arm9_rodata.bin", 0xD8DC, 0xD8EC - 0xD8DC - - .global Unk_020F252C -Unk_020F252C: ; 0x020F252C - .incbin "incbin/arm9_rodata.bin", 0xD8EC, 0xD902 - 0xD8EC - - .global Unk_020F2542 -Unk_020F2542: ; 0x020F2542 - .incbin "incbin/arm9_rodata.bin", 0xD902, 0xD91A - 0xD902 - - .global Unk_020F255A -Unk_020F255A: ; 0x020F255A - .incbin "incbin/arm9_rodata.bin", 0xD91A, 0xD934 - 0xD91A - - .global Unk_020F2574 -Unk_020F2574: ; 0x020F2574 - .incbin "incbin/arm9_rodata.bin", 0xD934, 0xD94E - 0xD934 - - .global Unk_020F258E -Unk_020F258E: ; 0x020F258E - .incbin "incbin/arm9_rodata.bin", 0xD94E, 0xD96C - 0xD94E - - .global Unk_020F25AC -Unk_020F25AC: ; 0x020F25AC - .incbin "incbin/arm9_rodata.bin", 0xD96C, 0xD988 - 0xD96C - - .global Unk_020F25C8 -Unk_020F25C8: ; 0x020F25C8 - .incbin "incbin/arm9_rodata.bin", 0xD988, 0xD9A4 - 0xD988 - - .global Unk_020F25E4 -Unk_020F25E4: ; 0x020F25E4 - .incbin "incbin/arm9_rodata.bin", 0xD9A4, 0xD9C0 - 0xD9A4 - - .global Unk_020F2600 -Unk_020F2600: ; 0x020F2600 - .incbin "incbin/arm9_rodata.bin", 0xD9C0, 0xD9DC - 0xD9C0 - - .global Unk_020F261C -Unk_020F261C: ; 0x020F261C - .incbin "incbin/arm9_rodata.bin", 0xD9DC, 0xD9F8 - 0xD9DC - - .global Unk_020F2638 -Unk_020F2638: ; 0x020F2638 - .incbin "incbin/arm9_rodata.bin", 0xD9F8, 0xDA14 - 0xD9F8 - - .global Unk_020F2654 -Unk_020F2654: ; 0x020F2654 - .incbin "incbin/arm9_rodata.bin", 0xDA14, 0xDA30 - 0xDA14 - - .global Unk_020F2670 -Unk_020F2670: ; 0x020F2670 - .incbin "incbin/arm9_rodata.bin", 0xDA30, 0xDA4C - 0xDA30 - - .global Unk_020F268C -Unk_020F268C: ; 0x020F268C - .incbin "incbin/arm9_rodata.bin", 0xDA4C, 0xDA68 - 0xDA4C - - .global Unk_020F26A8 -Unk_020F26A8: ; 0x020F26A8 - .incbin "incbin/arm9_rodata.bin", 0xDA68, 0xDA84 - 0xDA68 - - .global Unk_020F26C4 -Unk_020F26C4: ; 0x020F26C4 - .incbin "incbin/arm9_rodata.bin", 0xDA84, 0xDAA0 - 0xDA84 - - .global Unk_020F26E0 -Unk_020F26E0: ; 0x020F26E0 - .incbin "incbin/arm9_rodata.bin", 0xDAA0, 0xDABC - 0xDAA0 - - .global Unk_020F26FC -Unk_020F26FC: ; 0x020F26FC - .incbin "incbin/arm9_rodata.bin", 0xDABC, 0xDAD8 - 0xDABC - - .global Unk_020F2718 -Unk_020F2718: ; 0x020F2718 - .incbin "incbin/arm9_rodata.bin", 0xDAD8, 0xDAF4 - 0xDAD8 - - .global Unk_020F2734 -Unk_020F2734: ; 0x020F2734 - .incbin "incbin/arm9_rodata.bin", 0xDAF4, 0xDB10 - 0xDAF4 - - .global Unk_020F2750 -Unk_020F2750: ; 0x020F2750 - .incbin "incbin/arm9_rodata.bin", 0xDB10, 0xDB2C - 0xDB10 - - .global Unk_020F276C -Unk_020F276C: ; 0x020F276C - .incbin "incbin/arm9_rodata.bin", 0xDB2C, 0xDB48 - 0xDB2C - - .global Unk_020F2788 -Unk_020F2788: ; 0x020F2788 - .incbin "incbin/arm9_rodata.bin", 0xDB48, 0xDB64 - 0xDB48 - - .global Unk_020F27A4 -Unk_020F27A4: ; 0x020F27A4 - .incbin "incbin/arm9_rodata.bin", 0xDB64, 0xDB80 - 0xDB64 - - .global Unk_020F27C0 -Unk_020F27C0: ; 0x020F27C0 - .incbin "incbin/arm9_rodata.bin", 0xDB80, 0xDB9C - 0xDB80 - - .global Unk_020F27DC -Unk_020F27DC: ; 0x020F27DC - .incbin "incbin/arm9_rodata.bin", 0xDB9C, 0xDBB8 - 0xDB9C - - .global Unk_020F27F8 -Unk_020F27F8: ; 0x020F27F8 - .incbin "incbin/arm9_rodata.bin", 0xDBB8, 0xDBD4 - 0xDBB8 - - .global Unk_020F2814 -Unk_020F2814: ; 0x020F2814 - .incbin "incbin/arm9_rodata.bin", 0xDBD4, 0xDBF0 - 0xDBD4 - - .global Unk_020F2830 -Unk_020F2830: ; 0x020F2830 - .incbin "incbin/arm9_rodata.bin", 0xDBF0, 0xDC10 - 0xDBF0 - - .global Unk_020F2850 -Unk_020F2850: ; 0x020F2850 - .incbin "incbin/arm9_rodata.bin", 0xDC10, 0xDC30 - 0xDC10 - - .global Unk_020F2870 -Unk_020F2870: ; 0x020F2870 - .incbin "incbin/arm9_rodata.bin", 0xDC30, 0xDC54 - 0xDC30 - - .global Unk_020F2894 -Unk_020F2894: ; 0x020F2894 - .incbin "incbin/arm9_rodata.bin", 0xDC54, 0xDC78 - 0xDC54 - - .global Unk_020F28B8 -Unk_020F28B8: ; 0x020F28B8 - .incbin "incbin/arm9_rodata.bin", 0xDC78, 0xDC9C - 0xDC78 - - .global Unk_020F28DC -Unk_020F28DC: ; 0x020F28DC - .incbin "incbin/arm9_rodata.bin", 0xDC9C, 0xDCC4 - 0xDC9C - - .global Unk_020F2904 -Unk_020F2904: ; 0x020F2904 - .incbin "incbin/arm9_rodata.bin", 0xDCC4, 0xDCEC - 0xDCC4 - - .global Unk_020F292C -Unk_020F292C: ; 0x020F292C - .incbin "incbin/arm9_rodata.bin", 0xDCEC, 0xDD14 - 0xDCEC - - .global Unk_020F2954 -Unk_020F2954: ; 0x020F2954 - .incbin "incbin/arm9_rodata.bin", 0xDD14, 0xDD44 - 0xDD14 - - .global Unk_020F2984 -Unk_020F2984: ; 0x020F2984 - .incbin "incbin/arm9_rodata.bin", 0xDD44, 0xDDD4 - 0xDD44 - - .global Unk_020F2A14 -Unk_020F2A14: ; 0x020F2A14 - .incbin "incbin/arm9_rodata.bin", 0xDDD4, 0xDF7E - 0xDDD4 - - .global Unk_020F2BBE -Unk_020F2BBE: ; 0x020F2BBE - .incbin "incbin/arm9_rodata.bin", 0xDF7E, 0xE16C - 0xDF7E - - .global Unk_020F2DAC -Unk_020F2DAC: ; 0x020F2DAC - .incbin "incbin/arm9_rodata.bin", 0xE16C, 0x10 - - - - .data - - - .global Unk_02100C40 -Unk_02100C40: ; 0x02100C40 - .incbin "incbin/arm9_data.bin", 0x1F60, 0x1F74 - 0x1F60 - - .global Unk_02100C54 -Unk_02100C54: ; 0x02100C54 - .incbin "incbin/arm9_data.bin", 0x1F74, 0x64 - - - - .bss - - - .global Unk_021C0A30 -Unk_021C0A30: ; 0x021C0A30 - .space 0x4 - diff --git a/main.lsf b/main.lsf index af0c9ac2b7..3956db185d 100644 --- a/main.lsf +++ b/main.lsf @@ -304,7 +304,7 @@ Static main Object src/unk_02082C2C.o Object src/unk_02083370.o Object src/unk_02084B70.o - Object asm/unk_0208694C.o + Object src/unk_0208694C.o Object src/unk_020890F4.o Object src/unk_02089604.o Object src/unk_0208A3F4.o diff --git a/src/unk_0208694C.c b/src/unk_0208694C.c new file mode 100644 index 0000000000..7616bafac4 --- /dev/null +++ b/src/unk_0208694C.c @@ -0,0 +1,2655 @@ +#include +#include + +#include "data_021BF67C.h" + +#include "struct_decls/struct_020067E8_decl.h" +#include "struct_decls/struct_02006C24_decl.h" +#include "struct_decls/struct_02009714_decl.h" +#include "struct_decls/struct_02009DC8_decl.h" +#include "struct_decls/struct_0200B144_decl.h" +#include "struct_decls/struct_0200B358_decl.h" +#include "struct_decls/struct_02018340_decl.h" +#include "struct_decls/struct_0201CD38_decl.h" +#include "struct_decls/struct_020218BC_decl.h" +#include "struct_decls/struct_02022550_decl.h" +#include "struct_decls/struct_02023790_decl.h" +#include "struct_decls/struct_02073C74_decl.h" +#include "struct_decls/struct_02087A10_decl.h" + +#include "constdata/const_020F2DAC.h" + +#include "struct_defs/struct_0200C738.h" +#include "struct_defs/struct_020279FC.h" +#include "struct_defs/struct_0205AA50.h" +#include "struct_defs/struct_0208737C.h" +#include "struct_defs/struct_0208BE5C.h" +#include "struct_defs/struct_02099F80.h" +#include "overlay019/struct_ov19_021DA864.h" +#include "overlay022/struct_ov22_022559F8.h" +#include "overlay084/struct_ov84_0223BA5C.h" +#include "overlay097/struct_ov97_0222DB78.h" +#include "overlay115/struct_ov115_02261520.h" + +#include "unk_020021B0.h" +#include "unk_02002B7C.h" +#include "unk_020041CC.h" +#include "unk_02005474.h" +#include "unk_0200679C.h" +#include "unk_020067E8.h" +#include "unk_020068C8.h" +#include "unk_02006E3C.h" +#include "unk_020093B4.h" +#include "unk_02009714.h" +#include "unk_0200A328.h" +#include "unk_0200A784.h" +#include "unk_0200AC5C.h" +#include "unk_0200B29C.h" +#include "unk_0200B358.h" +#include "unk_0200DA60.h" +#include "unk_0200F174.h" +#include "unk_02012744.h" +#include "unk_0201567C.h" +#include "unk_02017728.h" +#include "unk_02017E74.h" +#include "unk_02018340.h" +#include "unk_0201CCF0.h" +#include "unk_0201D15C.h" +#include "unk_0201D670.h" +#include "unk_0201DBEC.h" +#include "unk_0201E86C.h" +#include "unk_0201F834.h" +#include "unk_0201FE94.h" +#include "unk_020218BC.h" +#include "unk_02023790.h" +#include "unk_020279FC.h" +#include "unk_02073C2C.h" +#include "unk_020797C8.h" +#include "unk_02079D40.h" +#include "unk_0208694C.h" + +typedef struct { + int unk_00; + int unk_04; + int unk_08; + int unk_0C; + int unk_10; + int unk_14; + int unk_18; +} UnkStruct_02087A10_sub1; + +struct UnkStruct_02087A10_t { + int unk_00; + int unk_04; + int unk_08; + int unk_0C; + int unk_10; + int unk_14; + UnkStruct_020279FC * unk_18; + UnkStruct_02087A10_sub1 unk_1C; + u16 unk_38; + u16 unk_3A[6][13]; + u16 unk_D6; + u16 unk_D8[32]; + u16 unk_118[32]; + u16 unk_158; + u16 unk_15A[3]; + UnkStruct_02018340 * unk_160; + BOOL unk_164; + UnkStruct_0200B358 * unk_168; + UnkStruct_0200B144 * unk_16C; + UnkStruct_0200B144 * unk_170; + UnkStruct_0200B144 * unk_174; + UnkStruct_02023790 * unk_178; + UnkStruct_02023790 * unk_17C; + UnkStruct_02023790 * unk_180; + UnkStruct_02023790 * unk_184; + UnkStruct_020218BC * unk_188; + UnkStruct_0200C738 unk_18C; + UnkStruct_02009714 * unk_318[4]; + UnkStruct_02009DC8 * unk_328[2][4]; + UnkStruct_ov19_021DA864 unk_348; + UnkStruct_ov19_021DA864 unk_36C; + UnkStruct_02022550 * unk_390[14]; + UnkStruct_02022550 * unk_3C8[12]; + UnkStruct_02022550 * unk_3F8[2]; + UnkStruct_0201CD38 * unk_400[7]; + UnkStruct_0205AA50 unk_41C[10]; + int unk_4BC; + int unk_4C0; + int unk_4C4; + int unk_4C8; + VecFx32 unk_4CC[2]; + int unk_4E4; + int unk_4E8; + int unk_4EC; + int unk_4F0; + int unk_4F4[7]; + void * unk_510; + NNSG2dCharacterData * unk_514; + void * unk_518; + NNSG2dCharacterData * unk_51C; + void * unk_520; + NNSG2dPaletteData * unk_524; + u8 unk_528[256]; + void * unk_628; + BOOL unk_62C; + int unk_630; +}; + +typedef struct { + UnkStruct_02022550 * unk_00; + UnkStruct_02022550 * unk_04; + int unk_08; + int unk_0C; +} UnkStruct_020879DC; + +typedef struct { + UnkStruct_02022550 * unk_00; + int unk_04; + int unk_08; + int unk_0C; +} UnkStruct_02087CDC; + +typedef struct { + u8 unk_00; + u8 unk_01; + u16 unk_02_0 : 2; + u16 : 14; + u8 unk_04_0 : 5; + u8 : 3; + u8 unk_05_0 : 5; + u8 : 3; +} UnkStruct_020F2A14; + +static int sub_0208694C(UnkStruct_020067E8 * param0, int * param1); +static int sub_02086B64(UnkStruct_020067E8 * param0, int * param1); +static int sub_02086F3C(UnkStruct_020067E8 * param0, int * param1); +static void sub_02087190(void * param0); +static void sub_020871CC(void); +static void sub_020871EC(UnkStruct_02018340 * param0); +static void sub_0208765C(UnkStruct_02018340 * param0, UnkStruct_0205AA50 * param1); +static void sub_0208769C(UnkStruct_02087A10 * param0, UnkStruct_02006C24 * param1); +static void sub_02087D64(UnkStruct_02018340 * param0, UnkStruct_0205AA50 * param1, int * param2, int param3, int * param4, VecFx32 param5[], UnkStruct_02022550 ** param6, void * param7); +static void sub_0208737C(UnkStruct_02087A10 * param0, UnkStruct_020067E8 * param1); +static void sub_02088240(UnkStruct_02018340 * param0, int param1, VecFx32 param2[]); +static void sub_02088260(VecFx32 param0[], int param1); +static void sub_020877F4(UnkStruct_02087A10 * param0, UnkStruct_02006C24 * param1); +static void sub_02087A10(UnkStruct_02087A10 * param0); +static void sub_020877C4(void); +static void sub_02087FC0(UnkStruct_02087A10 * param0, UnkStruct_020067E8 * param1, UnkStruct_02006C24 * param2); +static void sub_02088350(UnkStruct_02087A10 * param0); +static void sub_02088514(u16 * param0); +static void sub_02088554(UnkStruct_0205AA50 * param0, const u16 * param1, int param2, int param3, int param4, int param5, u32 param6, u8 * param7); +static void sub_02088678(UnkStruct_0205AA50 * param0, const u16 * param1, u8 * param2, UnkStruct_02023790 * param3); +static void sub_02088844(u16 param0[][13], const int param1); +static void sub_02088754(UnkStruct_0205AA50 * param0, u16 * param1, int param2, u16 * param3, u8 * param4, UnkStruct_02023790 * param5); +static int sub_02088898(UnkStruct_02087A10 * param0, u16 param1, int param2); +static int sub_02088D08(int param0, int param1, int param2, int param3, u16 * param4, int param5); +static int sub_02088C9C(int param0, int param1, u16 * param2, int param3); +static void sub_02088E1C(UnkStruct_02022550 ** param0, int param1, int param2); +static void sub_020871B0(UnkStruct_02087A10 * param0, UnkStruct_0208737C * param1); +static void sub_02088E58(UnkStruct_0205AA50 * param0, u16 param1, int param2, u32 param3, u8 * param4); +static void sub_02088454(UnkStruct_02087A10 * param0, int param1); +static void sub_02088F40(int param0[], UnkStruct_02022550 ** param1, int param2); +static void sub_020879DC(UnkStruct_0201CD38 * param0, void * param1); +static void sub_02087CDC(UnkStruct_0201CD38 * param0, void * param1); +static void sub_02086B30(NNSG2dCharacterData * param0, NNSG2dPaletteData * param1, int param2, int param3); +static void sub_0208732C(int param0); +static void sub_02087544(UnkStruct_02087A10 * param0, UnkStruct_020067E8 * param1); +static void sub_02087BE4(UnkStruct_02087A10 * param0, UnkStruct_ov115_02261520 * param1); +static void sub_02086E6C(UnkStruct_02087A10 * param0, UnkStruct_0208737C * param1); +static void sub_02087F48(UnkStruct_0205AA50 * param0, int param1, UnkStruct_02023790 * param2); +static void sub_02088FD0(UnkStruct_02087A10 * param0); +static int sub_02086D38(UnkStruct_02087A10 * param0, int param1); +static int sub_02086F14(u16 * param0); +static void * sub_02088654(UnkStruct_0205AA50 * param0, UnkStruct_02023790 * param1, u8 param2, u32 param3); +static BOOL sub_0208903C(UnkStruct_02087A10 * param0); + +static const int Unk_020F2984[][4] = { + { 0x4, 0x44, 0x3, 0x1 }, + { 0x24, 0x44, 0x8, 0x1 }, + { 0x44, 0x44, 0xD, 0x1 }, + { 0x0, 0xC8, 0x12, 0x1 }, + { 0x65, 0x44, 0x14, 0x1 }, + { 0x88, 0x44, 0x17, 0x1 }, + { 0xB0, 0x44, 0x19, 0x1 }, + { 0x16, 0x38, 0x25, 0x2 }, + { 0x1A, 0x5B, 0x27, 0x0 } +}; + +static const u16 Unk_020F255A[] = { + 0xE002, + 0xE002, + 0xE003, + 0xE003, + 0xE004, + 0xE004, + 0xD004, + 0xD004, + 0xE007, + 0xE007, + 0xE007, + 0xE008, + 0xE008 +}; + +static const u16 Unk_020F2574[] = { + 0xD004, + 0xD004, + 0xD004, + 0xD004, + 0xD004, + 0xD004, + 0xD004, + 0xD004, + 0xE007, + 0xE007, + 0xE007, + 0xE008, + 0xE008 +}; + +static const u16 *Unk_02100C40[] = { + Unk_020F255A, + Unk_020F255A, + Unk_020F255A, + Unk_020F255A, + Unk_020F2574 +}; + +static const u16 Unk_020F251C[] = { + 0x19, + 0x39, + 0x59, + 0x61, + 0x7A, + 0x9E, + 0xC6, + 0x0 +}; + +static const u8 Unk_020F24E8[] = { + 0x28, + 0x28, + 0x28, + 0x28, + 0x29, + 0x29, + 0x29 +}; + +static const u16 Unk_020F261C[] = { + 0x12B, + 0x12C, + 0x12D, + 0x12E, + 0x12f, + 0x130, + 0x131, + 0x132, + 0x133, + 0x134, + 0x1DE, + 0x1AD, + 0x1AE, + 0xffff +}; + +static const u16 Unk_020F2638[] = { + 0x135, + 0x136, + 0x137, + 0x138, + 0x139, + 0x13A, + 0x13B, + 0x13C, + 0x13D, + 0x13E, + 0x1DE, + 0x1B3, + 0x1BE, + 0xffff +}; + +static const u16 Unk_020F2654[] = { + 0x13f, + 0x140, + 0x141, + 0x142, + 0x143, + 0x144, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1BB, + 0x1BC, + 0xffff +}; + +static const u16 Unk_020F25C8[] = { + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0xffff +}; + +static const u16 Unk_020F2600[] = { + 0x121, + 0x122, + 0x123, + 0x124, + 0x125, + 0x126, + 0x127, + 0x128, + 0x129, + 0x12A, + 0x1DE, + 0x1DE, + 0x1DE, + 0xffff +}; + +static const u16 Unk_020F268C[] = { + 0x145, + 0x146, + 0x147, + 0x148, + 0x149, + 0x14A, + 0x14B, + 0x14C, + 0x14D, + 0x14E, + 0x1DE, + 0x1AD, + 0x1AE, + 0xffff +}; + +static const u16 Unk_020F26A8[] = { + 0x14f, + 0x150, + 0x151, + 0x152, + 0x153, + 0x154, + 0x155, + 0x156, + 0x157, + 0x158, + 0x1DE, + 0x1B3, + 0x1BE, + 0xffff +}; + +static const u16 Unk_020F27F8[] = { + 0x159, + 0x15A, + 0x15B, + 0x15C, + 0x15D, + 0x15E, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1BB, + 0x1BC, + 0xffff +}; + +static const u16 Unk_020F26FC[] = { + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0xffff +}; + +static const u16 Unk_020F27C0[] = { + 0x121, + 0x122, + 0x123, + 0x124, + 0x125, + 0x126, + 0x127, + 0x128, + 0x129, + 0x12A, + 0x1DE, + 0x1DE, + 0x1DE, + 0xffff +}; + +static const u16 Unk_020F2734[] = { + 0x1AD, + 0x1AE, + 0x1C4, + 0x1C5, + 0x1AB, + 0x1AC, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1BB, + 0x1BC, + 0x1DE, + 0x1DE, + 0xffff +}; + +static const u16 Unk_020F276C[] = { + 0x1B4, + 0x1B5, + 0x1B2, + 0x1B3, + 0x1B9, + 0x1BA, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0x1DE, + 0xffff +}; + +static const u16 Unk_020F2788[] = { + 0x1af, + 0x1B0, + 0x1C3, + 0x1D0, + 0x1C0, + 0x1D2, + 0x1BD, + 0x1BE, + 0x1bf, + 0x1B1, + 0x1C1, + 0x1DE, + 0x1DE, + 0xffff +}; + +static const u16 Unk_020F27A4[] = { + 0x1CB, + 0x1CC, + 0x1CD, + 0x1CE, + 0x1cf, + 0x1C6, + 0x1C8, + 0x1C9, + 0x1C7, + 0x1CA, + 0x1D1, + 0x1DE, + 0x1DE, + 0xffff +}; + +static const u16 Unk_020F27DC[] = { + 0x1D3, + 0x1D4, + 0x1D5, + 0x1D6, + 0x1D7, + 0x1D8, + 0x1D9, + 0x1DA, + 0x1DD, + 0x1DB, + 0x1DC, + 0x1DE, + 0x1DE, + 0xffff +}; + +static const u16 Unk_020F2718[] = { + 0xA2, + 0xA3, + 0xA4, + 0xA5, + 0xA6, + 0xA7, + 0xA8, + 0xA9, + 0xAA, + 0xAB, + 0x1, + 0xE1, + 0xE2, + 0xffff +}; + +static const u16 Unk_020F258E[] = { + 0xE3, + 0xE4, + 0xf9, + 0xf8, + 0xE5, + 0xE6, + 0xf5, + 0xf6, + 0xf7, + 0xE7, + 0x1, + 0xEE, + 0xef, + 0xffff +}; + +static const u16 Unk_020F26E0[] = { + 0xE8, + 0xE9, + 0xEA, + 0xEB, + 0xEC, + 0xED, + 0xf0, + 0xf1, + 0xf2, + 0xf3, + 0xf4, + 0x106, + 0x104, + 0xffff +}; + +static const u16 Unk_020F26C4[] = { + 0xff, + 0x100, + 0x101, + 0x102, + 0x103, + 0xfc, + 0xfa, + 0xfd, + 0xfb, + 0xfe, + 0x105, + 0x1, + 0x1, + 0xffff +}; + +static const u16 Unk_020F25E4[] = { + 0x107, + 0x108, + 0x109, + 0x10A, + 0x10B, + 0x10C, + 0x10D, + 0x10E, + 0x111, + 0x10f, + 0x110, + 0x1, + 0x1, + 0xffff +}; + +static const u16 Unk_020F2870[] = { + 0x121, + 0x122, + 0x123, + 0x124, + 0x125, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0xffff +}; + +static const u16 Unk_020F2894[] = { + 0x126, + 0x127, + 0x128, + 0x129, + 0x12A, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0xffff +}; + +static const u16 Unk_020F28B8[] = { + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0x1, + 0xffff +}; + +const u16 *Unk_02100C54[][5] = { + { Unk_020F261C, Unk_020F2638, Unk_020F2654, Unk_020F25C8, Unk_020F2600 }, + { Unk_020F268C, Unk_020F26A8, Unk_020F27F8, Unk_020F26FC, Unk_020F27C0 }, + { Unk_020F2734, Unk_020F276C, Unk_020F2788, Unk_020F27A4, Unk_020F27DC }, + { Unk_020F2718, Unk_020F258E, Unk_020F26E0, Unk_020F26C4, Unk_020F25E4 }, + { Unk_020F2870, Unk_020F2894, Unk_020F28B8, Unk_020F28B8, Unk_020F28B8 } +}; + +static const u16 Unk_020F2BBE[][3] = { + { 0x3, 0x1, 0x2 }, + { 0x5, 0x1, 0x4 }, + { 0x7, 0x1, 0x6 }, + { 0x9, 0x1, 0x8 }, + { 0xB, 0x1, 0xA }, + { 0x53, 0x1, 0x52 }, + { 0x55, 0x1, 0x54 }, + { 0x57, 0x1, 0x56 }, + { 0x59, 0x1, 0x58 }, + { 0x5B, 0x1, 0x5A }, + { 0x45, 0x1, 0x44 }, + { 0x47, 0x1, 0x46 }, + { 0x49, 0x1, 0x48 }, + { 0x95, 0x1, 0x94 }, + { 0x97, 0x1, 0x96 }, + { 0x99, 0x1, 0x98 }, + { 0xAC, 0x1, 0xC6 }, + { 0xAD, 0x1, 0xC7 }, + { 0xAE, 0x1, 0xC8 }, + { 0xaf, 0x1, 0xC9 }, + { 0xB0, 0x1, 0xCA }, + { 0xB1, 0x1, 0xCB }, + { 0xB2, 0x1, 0xCC }, + { 0xB3, 0x1, 0xCD }, + { 0xB4, 0x1, 0xCE }, + { 0xB5, 0x1, 0xcf }, + { 0xB6, 0x1, 0xD0 }, + { 0xB7, 0x1, 0xD1 }, + { 0xB8, 0x1, 0xD2 }, + { 0xB9, 0x1, 0xD3 }, + { 0xBA, 0x1, 0xD4 }, + { 0xBB, 0x1, 0xD5 }, + { 0xBC, 0x1, 0xD6 }, + { 0xBD, 0x1, 0xD7 }, + { 0xBE, 0x1, 0xD8 }, + { 0xbf, 0x1, 0xD9 }, + { 0xC0, 0x1, 0xDA }, + { 0xC1, 0x1, 0xDB }, + { 0xC2, 0x1, 0xDC }, + { 0xC3, 0x1, 0xDD }, + { 0xC4, 0x1, 0xDE }, + { 0xC5, 0x1, 0xdf }, + { 0x25, 0x26, 0x24 }, + { 0x75, 0x76, 0x74 }, + { 0xC, 0xD, 0x1 }, + { 0xE, 0x0f, 0x1 }, + { 0x10, 0x11, 0x1 }, + { 0x12, 0x13, 0x1 }, + { 0x14, 0x15, 0x1 }, + { 0x16, 0x17, 0x1 }, + { 0x18, 0x19, 0x1 }, + { 0x1A, 0x1B, 0x1 }, + { 0x1C, 0x1D, 0x1 }, + { 0x1E, 0x1f, 0x1 }, + { 0x20, 0x21, 0x1 }, + { 0x22, 0x23, 0x1 }, + { 0x27, 0x28, 0x1 }, + { 0x29, 0x2A, 0x1 }, + { 0x5C, 0x5D, 0x1 }, + { 0x5E, 0x5f, 0x1 }, + { 0x60, 0x61, 0x1 }, + { 0x62, 0x63, 0x1 }, + { 0x64, 0x65, 0x1 }, + { 0x66, 0x67, 0x1 }, + { 0x68, 0x69, 0x1 }, + { 0x6A, 0x6B, 0x1 }, + { 0x6C, 0x6D, 0x1 }, + { 0x6E, 0x6f, 0x1 }, + { 0x70, 0x71, 0x1 }, + { 0x72, 0x73, 0x1 }, + { 0x77, 0x78, 0x1 }, + { 0x79, 0x7A, 0x1 }, + { 0x30, 0x31, 0x32 }, + { 0x33, 0x34, 0x35 }, + { 0x36, 0x37, 0x38 }, + { 0x39, 0x3A, 0x3B }, + { 0x3C, 0x3D, 0x3E }, + { 0x80, 0x81, 0x82 }, + { 0x83, 0x84, 0x85 }, + { 0x86, 0x87, 0x88 }, + { 0x89, 0x8A, 0x8B }, + { 0x8C, 0x8D, 0x8E } +}; + +static const u16 Unk_020F2954[][2] = { + { 0x24, 0x26 }, + { 0x74, 0x76 }, + { 0x32, 0x31 }, + { 0x35, 0x34 }, + { 0x38, 0x37 }, + { 0x3B, 0x3A }, + { 0x3E, 0x3D }, + { 0x82, 0x81 }, + { 0x85, 0x84 }, + { 0x88, 0x87 }, + { 0x8B, 0x8A }, + { 0x8E, 0x8D } +}; + +static const u16 Unk_020F292C[][2] = { + { 0x31, 0x32 }, + { 0x34, 0x35 }, + { 0x37, 0x38 }, + { 0x3A, 0x3B }, + { 0x3D, 0x3E }, + { 0x81, 0x82 }, + { 0x84, 0x85 }, + { 0x87, 0x88 }, + { 0x8A, 0x8B }, + { 0x8D, 0x8E } +}; + +static const int Unk_020F24F0[] = { + 0x70, + 0x4C, + 0x48 +}; + +static const u8 Unk_020F24DC[4] = { + 0x4, + 0x7, + 0xD, + 0xA +}; + +const u16 Unk_020F252C[] = { + 0x3, + 0x2B, + 0x20, + 0x2f, + 0x1, + 0x2B, + 0x3f, + 0x9, + 0x30, + 0xE2, + 0xffff +}; + +const u16 Unk_020F2830[] = { + 0x8E, + 0x62, + 0x93, + 0xA1, + 0x2f, + 0x1, + 0x7C, + 0x74, + 0x60, + 0x7E, + 0xf1, + 0x91, + 0x30, + 0xE2, + 0xffff +}; + +const u16 Unk_020F2542[] = { + 0x8D, + 0x74, + 0x60, + 0x6A, + 0x2f, + 0x1, + 0x2B, + 0x3f, + 0x9, + 0x30, + 0xE2, + 0xffff +}; + +static const u16 *dummy[] = { + Unk_020F252C, + Unk_020F2830, + Unk_020F2542, +}; + +static const int Unk_020F2850[] = { + 0x0, + 0x1, + 0x2, + 0x3, + 0x4, + 0x5, + 0x6, + 0x3 +}; + +const UnkStruct_0208BE5C Unk_020F2DAC = { + sub_0208694C, + sub_02086B64, + sub_02086F3C, + 0xFFFFFFFF +}; + +static UnkStruct_02087A10 * Unk_021C0A30; + +static int sub_0208694C (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_02087A10 * v0; + UnkStruct_02006C24 * v1; + + switch (*param1) { + case 0: + sub_02017798(NULL, NULL); + sub_020177A4(); + sub_0201FF00(); + sub_0201FF68(); + + GX_SetVisiblePlane(0); + GXS_SetVisiblePlane(0); + + sub_02017FC8(3, 18, 0x20000 + 0x8000); + + v0 = sub_0200681C(param0, sizeof(UnkStruct_02087A10), 18); + memset(v0, 0, sizeof(UnkStruct_02087A10)); + v0->unk_160 = sub_02018340(18); + v1 = sub_02006C24(31, 18); + + v0->unk_168 = sub_0200B358(18); + v0->unk_16C = sub_0200B144(0, 26, 422, 18); + v0->unk_170 = sub_0200B144(1, 26, 427, 18); + v0->unk_174 = sub_0200B144(1, 26, 368, 18); + + sub_02017DD4(4, 8); + sub_020871CC(); + sub_020871EC(v0->unk_160); + sub_020871B0(v0, (UnkStruct_0208737C *)sub_02006840(param0)); + sub_0208769C(v0, v1); + sub_02002BB8(2, 18); + sub_02017798(sub_02087190, NULL); + sub_0208737C(v0, param0); + sub_02002BEC(0, 18); + sub_020877C4(); + sub_020877F4(v0, v1); + sub_02087A10(v0); + sub_02087FC0(v0, param0, v1); + sub_02088754(&v0->unk_41C[4], v0->unk_D8, v0->unk_158, v0->unk_15A, v0->unk_528, v0->unk_17C); + sub_02004550(52, 0, 0); + sub_0200F174(0, 1, 1, 0x0, 16, 1, 18); + sub_0208732C(1); + + { + Unk_021BF67C.unk_65 = 1; + sub_0201FFE8(); + } + + sub_02006CA8(v1); + (*param1)++; + break; + case 1: + v0 = sub_0200682C(param0); + + if (v0->unk_00 == 1) { + sub_02086B30(v0->unk_51C, v0->unk_524, v0->unk_04, v0->unk_08); + } + + Unk_021C0A30 = v0; + v0->unk_628 = sub_0201567C(NULL, 1, 12, 18); + + (*param1) = 0; + return 1; + break; + } + + return 0; +} + +static void sub_02086B30 (NNSG2dCharacterData * param0, NNSG2dPaletteData * param1, int param2, int param3) +{ + u8 * v0; + + GX_LoadOBJ(param0->pRawData, (21 * 32 + 31) * 0x20, 0x20 * 4 * 4); + v0 = (u8 *)param1->pRawData; + GX_LoadOBJPltt((void *)(v0 + sub_02079EDC(param2, param3, 0) * 0x20), 6 * 0x20, 0x20); +} + +static int sub_02086B64 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_02087A10 * v0 = sub_0200682C(param0); + + switch (*param1) { + case 0: + if (sub_0200F2AC()) { + *param1 = 1; + v0->unk_630 = 0; + } + break; + case 1: + v0->unk_630++; + + sub_02088FD0(v0); + sub_02088F40(v0->unk_4F4, v0->unk_390, v0->unk_4C4); + + if (v0->unk_630 > 5) { + *param1 = 2; + v0->unk_630 = 0; + } + break; + case 2: + switch (v0->unk_4C0) { + case 4: + *param1 = sub_02086D38(v0, *param1); + sub_02088FD0(v0); + break; + case 5: + sub_02087544(v0, param0); + sub_0201ADA4(&v0->unk_41C[9], 0xf0f); + sub_0200E060(&v0->unk_41C[9], 0, ((32 * 8)), 10); + v0->unk_4BC = sub_0201D738(&v0->unk_41C[9], 1, v0->unk_180, 0, 0, 1, NULL); + sub_0201A954(&v0->unk_41C[9]); + v0->unk_4C0 = 6; + break; + case 6: + if (sub_0201D724(v0->unk_4BC) == 0) { + sub_02005748(1506); + v0->unk_4F4[6]++; + v0->unk_630 = 0; + v0->unk_4C0 = 7; + } + break; + case 7: + v0->unk_630++; + + if (v0->unk_630 > 30) { + sub_0200F174(2, 0, 0, 0x0, 16, 1, 18); + *param1 = 3; + } + break; + } + + sub_02087D64(v0->unk_160, &v0->unk_41C[0], &v0->unk_4C0, v0->unk_4C4, &v0->unk_4C8, v0->unk_4CC, v0->unk_390, v0->unk_514->pRawData); + sub_02088F40(v0->unk_4F4, v0->unk_390, v0->unk_4C4); + sub_02088514(&v0->unk_38); + break; + case 3: + if (sub_0200F2AC()) { + return 1; + } + break; + } + + sub_020219F8(v0->unk_188); + + return 0; +} + +static int sub_02086D38 (UnkStruct_02087A10 * param0, int param1) +{ + sub_02088350(param0); + + if (Unk_021BF67C.unk_48 & PAD_BUTTON_SELECT) { + if (sub_02021D34(param0->unk_390[8]) == 0) { + sub_02021CAC(param0->unk_390[8], 1); + return param1; + } + + if (param0->unk_00 != 4) { + param0->unk_4C0 = 0; + param0->unk_4C4++; + + if (param0->unk_4C4 >= 3) { + param0->unk_4C4 = 0; + } + + param0->unk_4F4[param0->unk_4C4]++; + + sub_02088844(param0->unk_3A, param0->unk_4C4); + sub_02005748(1694); + + param0->unk_1C.unk_14 = 1; + } + + param0->unk_4F4[param0->unk_4C4]++; + + sub_02088844(param0->unk_3A, param0->unk_4C4); + sub_02005748(1694); + } else if (Unk_021BF67C.unk_48 & PAD_BUTTON_A) { + param1 = sub_02088898(param0, param0->unk_3A[param0->unk_1C.unk_04][param0->unk_1C.unk_00], 1); + param0->unk_1C.unk_14 = 1; + } else if (param0->unk_62C == 1) { + param1 = sub_02088898(param0, param0->unk_3A[param0->unk_1C.unk_04][param0->unk_1C.unk_00], 0); + param0->unk_1C.unk_14 = 0; + } else if (Unk_021BF67C.unk_48 & PAD_BUTTON_B) { + param1 = sub_02088898(param0, (0xe001 + 6), 1); + } else if (Unk_021BF67C.unk_48 & PAD_BUTTON_R) { + param1 = sub_02088898(param0, (0xe001 + 5), 1); + } + + return param1; +} + +static void sub_02086E6C (UnkStruct_02087A10 * param0, UnkStruct_0208737C * param1) +{ + if (param0->unk_00 == 0) { + UnkStruct_02023790 * v0; + + if (param0->unk_04 == 0) { + v0 = sub_0200B1EC(param0->unk_170, 0 + sub_0201D2E8() % 18); + } else if (param0->unk_04 == 1) { + v0 = sub_0200B1EC(param0->unk_170, 18 + sub_0201D2E8() % 18); + } + + sub_02023810(param1->unk_18, v0); + sub_020237BC(v0); + sub_02023DF0(param1->unk_18, param1->unk_1C, 10); + } else if (param0->unk_00 == 3) { + UnkStruct_02023790 * v1; + + v1 = sub_0200B1EC(param0->unk_170, 88 + (sub_0201D2E8() % 2)); + + sub_02023810(param1->unk_18, v1); + sub_020237BC(v1); + sub_02023DF0(param1->unk_18, param1->unk_1C, 10); + } else { + param1->unk_14 = 1; + } +} + +static int sub_02086F14 (u16 * param0) +{ + int v0 = 1; + int v1; + + for (v1 = 0;; v1++) { + if (param0[v1] == 0xffff) { + break; + } + + if (param0[v1] != 0x1de) { + v0 = 0; + } + } + + return v0; +} + +static int sub_02086F3C (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_02087A10 * v0 = sub_0200682C(param0); + UnkStruct_0208737C * v1 = (UnkStruct_0208737C *)sub_02006840(param0); + int v2; + + v0->unk_D8[v0->unk_158] = 0xffff; + + if (v0->unk_00 == 1) { + u16 v3[10 + 1]; + UnkStruct_02073C74 * v4; + + v4 = sub_02073C74(18); + sub_02073D80(v4, v0->unk_04, 5, 10, 10, 10, 10, 10); + sub_020181C4(v4); + } + + if ((v0->unk_158 == 0) || (sub_0200220C(v0->unk_D8, v0->unk_118) == 0) || sub_02086F14(v0->unk_D8)) { + sub_02086E6C(v0, v1); + } else { + sub_020021B0(v0->unk_118, v0->unk_D8); + sub_020021B0(v1->unk_1C, v0->unk_D8); + sub_02023D28(v1->unk_18, v0->unk_D8); + } + + sub_020237BC(v0->unk_184); + + for (v2 = 0; v2 < 7; v2++) { + sub_020067D0(v0->unk_400[v2]); + } + + sub_0200A4E4(v0->unk_328[0][0]); + sub_0200A4E4(v0->unk_328[1][0]); + sub_0200A6DC(v0->unk_328[0][1]); + sub_0200A6DC(v0->unk_328[1][1]); + + for (v2 = 0; v2 < 4; v2++) { + sub_02009754(v0->unk_318[v2]); + } + + sub_02021964(v0->unk_188); + sub_0200A878(); + sub_02018238(18, v0->unk_510); + + if (v0->unk_00 == 1) { + sub_02018238(18, v0->unk_518); + sub_02018238(18, v0->unk_520); + } + + sub_02019044(v0->unk_160, 7); + sub_0201E958(); + sub_0201F8B4(); + sub_0208765C(v0->unk_160, v0->unk_41C); + sub_02002C28(0); + + GX_SetVisibleWnd(GX_WNDMASK_NONE); + + sub_02002C60(2); + + if (v0->unk_180) { + sub_020237BC(v0->unk_180); + } + + sub_020237BC(v0->unk_178); + sub_020237BC(v0->unk_17C); + sub_0200B190(v0->unk_174); + sub_0200B190(v0->unk_170); + sub_0200B190(v0->unk_16C); + sub_0200B3F0(v0->unk_168); + sub_02006830(param0); + sub_02017798(NULL, NULL); + sub_0201807C(18); + + { + Unk_021BF67C.unk_65 = 0; + sub_0201FFE8(); + } + + return 1; +} + +UnkStruct_0208737C * sub_0208712C (int param0, int param1, int param2, int param3, UnkStruct_020279FC * param4) +{ + UnkStruct_0208737C * v0; + + v0 = (UnkStruct_0208737C *)sub_02018144(param0, sizeof(UnkStruct_0208737C)); + + v0->unk_00 = param1; + v0->unk_04 = param2; + v0->unk_0C = param3; + v0->unk_14 = 0; + v0->unk_1C[0] = 0xffff; + v0->unk_18 = sub_02023790(32, param0); + v0->unk_44 = 0; + v0->unk_48 = NULL; + v0->unk_10 = 0; + v0->unk_4C = param4; + v0->unk_08 = 0; + + return v0; +} + +void sub_0208716C (UnkStruct_0208737C * param0) +{ + GF_ASSERT((param0->unk_18) != NULL); + GF_ASSERT((param0) != NULL); + + sub_020237BC(param0->unk_18); + sub_020181C4(param0); +} + +static void sub_02087190 (void * param0) +{ + sub_0201DCAC(); + sub_0200A858(); + + OS_SetIrqCheckFlag(OS_IE_V_BLANK); +} + +static void sub_020871B0 (UnkStruct_02087A10 * param0, UnkStruct_0208737C * param1) +{ + param0->unk_00 = param1->unk_00; + param0->unk_04 = param1->unk_04; + param0->unk_08 = param1->unk_08; + param0->unk_0C = param1->unk_0C; + param0->unk_10 = param1->unk_10; + param0->unk_18 = param1->unk_4C; +} + +static void sub_020871CC (void) +{ + UnkStruct_02099F80 v0 = { + GX_VRAM_BG_128_A, + GX_VRAM_BGEXTPLTT_NONE, + GX_VRAM_SUB_BG_128_C, + GX_VRAM_SUB_BGEXTPLTT_NONE, + GX_VRAM_OBJ_128_B, + GX_VRAM_OBJEXTPLTT_NONE, + GX_VRAM_SUB_OBJ_16_I, + GX_VRAM_SUB_OBJEXTPLTT_NONE, + GX_VRAM_TEX_NONE, + GX_VRAM_TEXPLTT_NONE + }; + + sub_0201FE94(&v0); +} + +static void sub_020871EC (UnkStruct_02018340 * param0) +{ + { + UnkStruct_ov84_0223BA5C v0 = { + GX_DISPMODE_GRAPHICS, + GX_BGMODE_0, + GX_BGMODE_0, + GX_BG0_AS_2D, + }; + + sub_02018368(&v0); + } + + { + UnkStruct_ov97_0222DB78 v1 = { + 0, + 0, + 0x1000, + 0, + 3, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0xf000, + GX_BG_CHARBASE_0x10000, + GX_BG_EXTPLTT_01, + 1, + 0, + 0, + 0 + }; + + sub_020183C4(param0, 0, &v1, 0); + sub_02019EBC(param0, 0); + } + + { + UnkStruct_ov97_0222DB78 v2 = { + 0, + 0, + 0x1000, + 0, + 3, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0xe000, + GX_BG_CHARBASE_0x10000, + GX_BG_EXTPLTT_01, + 2, + 0, + 0, + 0 + }; + + sub_020183C4(param0, 1, &v2, 0); + sub_02019EBC(param0, 1); + } + + { + UnkStruct_ov97_0222DB78 v3 = { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0xd000, + GX_BG_CHARBASE_0x00000, + GX_BG_EXTPLTT_01, + 3, + 0, + 0, + 0 + }; + + sub_020183C4(param0, 2, &v3, 0); + sub_02019EBC(param0, 2); + } + + { + UnkStruct_ov97_0222DB78 v4 = { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0xf800, + GX_BG_CHARBASE_0x10000, + GX_BG_EXTPLTT_01, + 0, + 0, + 0, + 0 + }; + + sub_020183C4(param0, 4, &v4, 0); + sub_02019EBC(param0, 4); + } + + sub_0208732C(0); + sub_02019690(0, 32, 0, 18); + sub_02019690(4, 32, 0, 18); + + GX_SetVisibleWnd(GX_WNDMASK_W0); + G2_SetWnd0InsidePlane(GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_OBJ, 1); + G2_SetWndOutsidePlane(GX_WND_PLANEMASK_BG0 | GX_WND_PLANEMASK_BG1 | GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_BG3 | GX_WND_PLANEMASK_OBJ, 1); + G2_SetWnd0Position(0, 0, 255, 64); + G2S_BlendNone(); +} + +static void sub_0208732C (int param0) +{ + sub_0201FF0C(GX_BLEND_PLANEMASK_BG0, param0); + sub_0201FF0C(GX_BLEND_PLANEMASK_BG1, param0); + sub_0201FF0C(GX_BLEND_PLANEMASK_BG2, param0); + sub_0201FF0C(GX_BLEND_PLANEMASK_BG3, 0); + sub_0201FF0C(GX_BLEND_PLANEMASK_OBJ, param0); + sub_0201FF74(GX_BLEND_PLANEMASK_BG0, param0); + sub_0201FF74(GX_BLEND_PLANEMASK_BG1, 0); + sub_0201FF74(GX_BLEND_PLANEMASK_OBJ, 0); +} + +static void sub_0208737C (UnkStruct_02087A10 * param0, UnkStruct_020067E8 * param1) +{ + UnkStruct_0208737C * v0 = (UnkStruct_0208737C *)sub_02006840(param1); + + param0->unk_4C0 = 4; + + sub_02088260(param0->unk_4CC, 0); + sub_02019184(param0->unk_160, 0 + param0->unk_4C8, 0, param0->unk_4CC[param0->unk_4C8].x); + sub_02019184(param0->unk_160, 0 + param0->unk_4C8, 3, param0->unk_4CC[param0->unk_4C8].y); + sub_02019184(param0->unk_160, 0 + ((param0->unk_4C8) ^ 1), 0, param0->unk_4CC[((param0->unk_4C8) ^ 1)].x); + sub_02019184(param0->unk_160, 0 + ((param0->unk_4C8) ^ 1), 3, param0->unk_4CC[((param0->unk_4C8) ^ 1)].y); + + param0->unk_118[0] = 0xffff; + + if (v0->unk_18) { + sub_02023DF0(v0->unk_18, param0->unk_118, 32); + } + + MI_CpuFill16(param0->unk_D8, 0x1, 32 * 2); + + if (param0->unk_00 == 1) { + UnkStruct_02073C74 * v1; + + v1 = sub_02073C74(18); + sub_02073D80(v1, param0->unk_04, 5, 10, 10, 10, 10, 10); + sub_0200B538(param0->unk_168, 0, sub_02076B10(v1)); + sub_020181C4(v1); + } + + if (v0->unk_44 != 0) { + param0->unk_14 = 1; + } + + param0->unk_178 = sub_0200B29C(param0->unk_168, param0->unk_16C, Unk_020F2850[param0->unk_00], 18); + param0->unk_17C = sub_0200B29C(param0->unk_168, param0->unk_16C, 8, 18); + param0->unk_184 = sub_0200B1EC(param0->unk_16C, 7); + param0->unk_158 = sub_020021F0(param0->unk_118); + param0->unk_1C.unk_00 = 0; + param0->unk_1C.unk_04 = 1; + param0->unk_1C.unk_08 = -1; + param0->unk_1C.unk_0C = -1; + param0->unk_1C.unk_14 = 0; + param0->unk_1C.unk_18 = 0; + param0->unk_4E8 = 0xffffffff; + param0->unk_4EC = 0; + param0->unk_4F0 = 0; + param0->unk_D8[param0->unk_0C] = 0xffff; + + { + int v2; + + for (v2 = 0; v2 < 7; v2++) { + param0->unk_4F4[v2] = 0; + } + + switch (param0->unk_00) { + case 4: + param0->unk_4F4[3] = 1; + break; + default: + param0->unk_4F4[0] = 1; + break; + } + } +} + +static void sub_02087544 (UnkStruct_02087A10 * param0, UnkStruct_020067E8 * param1) +{ + UnkStruct_02023790 * v0 = NULL; + UnkStruct_0208737C * v1 = (UnkStruct_0208737C *)sub_02006840(param1); + + if (v1->unk_44 != 0) { + int v2, v3; + + v0 = sub_02023790(200, 18); + param0->unk_180 = NULL; + v2 = sub_0207999C(v1->unk_48); + v3 = sub_020799A0(v1->unk_48); + + sub_0200BD40(param0->unk_168, 1, v1->unk_48, v2); + + if (v2 != v3) { + sub_0200BD40(param0->unk_168, 2, v1->unk_48, v3); + v1->unk_44 += 2; + } else { + sub_0200BD40(param0->unk_168, 2, v1->unk_48, v2); + } + + if ((param0->unk_158 == 0) || sub_02086F14(param0->unk_D8)) { + UnkStruct_02073C74 * v4 = sub_02073C74(18); + + sub_02073D80(v4, param0->unk_04, 1, 0, 0, 0, 0, 0); + sub_0200B538(param0->unk_168, 0, sub_02076B10(v4)); + sub_020181C4(v4); + } else { + param0->unk_D8[param0->unk_158] = 0xffff; + sub_02023D28(v0, param0->unk_D8); + sub_0200B48C(param0->unk_168, 0, v0, 0, 0, 0); + } + + param0->unk_180 = sub_0200B29C(param0->unk_168, param0->unk_174, v1->unk_44, 18); + param0->unk_14 = 1; + + sub_020237BC(v0); + } +} + +static void sub_0208765C (UnkStruct_02018340 * param0, UnkStruct_0205AA50 * param1) +{ + int v0; + + for (v0 = 0; v0 < 10; v0++) { + sub_0201A8FC(¶m1[v0]); + } + + sub_02019044(param0, 4); + sub_02019044(param0, 2); + sub_02019044(param0, 1); + sub_02019044(param0, 0); + sub_02018238(18, param0); +} + +static void sub_0208769C (UnkStruct_02087A10 * param0, UnkStruct_02006C24 * param1) +{ + UnkStruct_02018340 * v0 = param0->unk_160; + + sub_02007130(param1, 0, 0, 0, 16 * 3 * 2, 18); + sub_02006E84(12, 12, 4, 0, 16 * 2, 18); + sub_0201975C(4, 0); + sub_020070E8(param1, 2, v0, 2, 0, ((32 * 8) * 0x20), 1, 18); + sub_0200710C(param1, 4, v0, 2, 0, 32 * 24 * 2, 1, 18); + sub_020070E8(param1, 2, v0, 1, 0, 32 * 8 * 0x20, 1, 18); + sub_0200710C(param1, 6, v0, 1, 0, (32 * 14 * 2), 1, 18); + sub_0200710C(param1, 7, v0, 0, 0, (32 * 14 * 2), 1, 18); + sub_02002E98(0, 12 * 32, 18); + sub_0200DD0C(param0->unk_160, 4, ((32 * 8)), 10, sub_02027B50(param0->unk_18), 18); + sub_02002E98(4, 12 * 32, 18); + + param0->unk_510 = sub_020071B4(param1, 16, 1, ¶m0->unk_514, 18); +} + +void sub_020877C4 (void) +{ + { + UnkStruct_ov22_022559F8 v0 = { + 20, 2048, 2048, 18 + }; + + sub_0201E86C(&v0); + } + + sub_0201F834(20, 18); + sub_0201E994(); + sub_0201F8E4(); +} + +static void sub_020877F4 (UnkStruct_02087A10 * param0, UnkStruct_02006C24 * param1) +{ + int v0; + + NNS_G2dInitOamManagerModule(); + sub_0200A784(0, 128, 0, 32, 0, 128, 0, 32, 18); + + param0->unk_188 = sub_020095C4(40 + 4, ¶m0->unk_18C, 18); + + sub_0200964C(¶m0->unk_18C, 0, (256 * FX32_ONE)); + + for (v0 = 0; v0 < 4; v0++) { + param0->unk_318[v0] = sub_02009714(2, v0, 18); + } + + param0->unk_328[0][0] = sub_02009A4C(param0->unk_318[0], param1, 10, 1, 0, NNS_G2D_VRAM_TYPE_2DMAIN, 18); + param0->unk_328[0][1] = sub_02009B04(param0->unk_318[1], param1, 1, 0, 0, NNS_G2D_VRAM_TYPE_2DMAIN, 9, 18); + param0->unk_328[0][2] = sub_02009BC4(param0->unk_318[2], param1, 12, 1, 0, 2, 18); + param0->unk_328[0][3] = sub_02009BC4(param0->unk_318[3], param1, 14, 1, 0, 3, 18); + + if (param0->unk_00 == 1) { + param0->unk_518 = sub_02006F50(19, sub_02079D8C(param0->unk_04, 0, param0->unk_08), 0, ¶m0->unk_51C, 18); + DC_FlushRange(param0->unk_51C, 0x20 * 4 * 4); + + param0->unk_520 = sub_02006F88(19, sub_02079FD0(), ¶m0->unk_524, 18); + DC_FlushRange(param0->unk_524, 0x20 * 4); + } + + param0->unk_328[1][0] = sub_02009A4C(param0->unk_318[0], param1, 11, 1, 1, NNS_G2D_VRAM_TYPE_2DSUB, 18); + param0->unk_328[1][1] = sub_02009B04(param0->unk_318[1], param1, 1, 0, 1, NNS_G2D_VRAM_TYPE_2DSUB, 3, 18); + param0->unk_328[1][2] = sub_02009BC4(param0->unk_318[2], param1, 13, 1, 1, 2, 18); + param0->unk_328[1][3] = sub_02009BC4(param0->unk_318[3], param1, 15, 1, 1, 3, 18); + + sub_0200A328(param0->unk_328[0][0]); + sub_0200A328(param0->unk_328[1][0]); + sub_0200A5C8(param0->unk_328[0][1]); + sub_0200A5C8(param0->unk_328[1][1]); +} + +static void sub_020879DC (UnkStruct_0201CD38 * param0, void * param1) +{ + const VecFx32 * v0; + VecFx32 v1; + UnkStruct_020879DC * v2 = (UnkStruct_020879DC *)param1; + + v0 = sub_02021D28(v2->unk_00); + v1.x = v0->x + v2->unk_08; + v1.y = FX32_ONE * Unk_020F2984[v2->unk_0C][1]; + v1.z = 0; + + sub_02021C50(v2->unk_04, &v1); +} + +static void sub_02087A10 (UnkStruct_02087A10 * param0) +{ + int v0; + + sub_020093B4(¶m0->unk_348, 0, 0, 0, 0, 0xffffffff, 0xffffffff, 0, 1, param0->unk_318[0], param0->unk_318[1], param0->unk_318[2], param0->unk_318[3], NULL, NULL); + sub_020093B4(¶m0->unk_36C, 1, 1, 1, 1, 0xffffffff, 0xffffffff, 0, 0, param0->unk_318[0], param0->unk_318[1], param0->unk_318[2], param0->unk_318[3], NULL, NULL); + + { + UnkStruct_ov115_02261520 v1; + + v1.unk_00 = param0->unk_188; + v1.unk_04 = ¶m0->unk_348; + v1.unk_08.x = FX32_CONST(32); + v1.unk_08.y = FX32_CONST(96); + v1.unk_08.z = 0; + v1.unk_14.x = FX32_ONE; + v1.unk_14.y = FX32_ONE; + v1.unk_14.z = FX32_ONE; + v1.unk_20 = 0; + v1.unk_24 = 1; + v1.unk_28 = NNS_G2D_VRAM_TYPE_2DMAIN; + v1.unk_2C = 18; + + for (v0 = 0; v0 < 9; v0++) { + v1.unk_08.x = FX32_ONE * Unk_020F2984[v0][0]; + v1.unk_08.y = FX32_ONE * Unk_020F2984[v0][1]; + + param0->unk_390[v0] = sub_02021AA0(&v1); + + sub_02021CC8(param0->unk_390[v0], 1); + sub_02021D6C(param0->unk_390[v0], Unk_020F2984[v0][2]); + sub_02021F58(param0->unk_390[v0], Unk_020F2984[v0][3]); + } + + sub_02021CAC(param0->unk_390[4], 0); + sub_02021CAC(param0->unk_390[8], 0); + + for (v0 = 0; v0 < 7; v0++) { + UnkStruct_020879DC * v2; + + param0->unk_400[v0] = sub_0200679C(sub_020879DC, 16, 5, 18); + v2 = sub_0201CED0(param0->unk_400[v0]); + v2->unk_00 = param0->unk_390[7]; + v2->unk_04 = param0->unk_390[v0]; + v2->unk_08 = FX32_ONE * Unk_020F2984[v0][0]; + v2->unk_0C = v0; + } + + for (v0 = 0; v0 < param0->unk_0C; v0++) { + v1.unk_08.x = FX32_ONE * ((10 * 8) + v0 * 12); + v1.unk_08.y = FX32_ONE * (4 * 8 + 7); + + param0->unk_3C8[v0] = sub_02021AA0(&v1); + + sub_02021CC8(param0->unk_3C8[v0], 1); + sub_02021D6C(param0->unk_3C8[v0], 43); + } + + sub_02088E1C(param0->unk_3C8, param0->unk_158, param0->unk_0C); + sub_02087BE4(param0, &v1); + } + + sub_0201FF0C(GX_PLANEMASK_OBJ, 1); + sub_0201FF74(GX_PLANEMASK_OBJ, 1); +} + +static void sub_02087BE4 (UnkStruct_02087A10 * param0, UnkStruct_ov115_02261520 * param1) +{ + param1->unk_08.x = FX32_ONE * 24; + param1->unk_08.y = FX32_ONE * (16 - 8); + param0->unk_3F8[0] = sub_02021AA0(param1); + + sub_02021CC8(param0->unk_3F8[0], 1); + + switch (param0->unk_00) { + case 0: + if (param0->unk_04 == 0) { + sub_02021D6C(param0->unk_3F8[0], 48); + } else { + sub_02021D6C(param0->unk_3F8[0], 49); + } + break; + case 3: + sub_02021D6C(param0->unk_3F8[0], 51); + break; + case 6: + sub_02021D6C(param0->unk_3F8[0], 55); + break; + case 5: + sub_02021D6C(param0->unk_3F8[0], 54); + break; + case 4: + case 7: + sub_02021D6C(param0->unk_3F8[0], 53); + break; + case 2: + sub_02021D6C(param0->unk_3F8[0], 47); + break; + case 1: + sub_02021D6C(param0->unk_3F8[0], 50); + + if (param0->unk_10 != 2) { + param1->unk_08.x = FX32_ONE * ((10 * 8) + param0->unk_0C * 13); + param1->unk_08.y = FX32_ONE * ((4 * 8 + 7) - 12); + param0->unk_3F8[1] = sub_02021AA0(param1); + + if (param0->unk_10 == 0) { + sub_02021D6C(param0->unk_3F8[1], 45); + } else { + sub_02021D6C(param0->unk_3F8[1], 46); + } + } + break; + } +} + +static void sub_02087CDC (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_02087CDC * v0 = (UnkStruct_02087CDC *)param1; + VecFx32 v1; + + v1.y = v0->unk_0C; + v1.z = 0; + + switch (v0->unk_04) { + case 0: + v1.x = v0->unk_08 + 4 * FX32_ONE; + sub_02021C50(v0->unk_00, &v1); + break; + case 2: + v1.x = v0->unk_08 - 3 * FX32_ONE; + sub_02021C50(v0->unk_00, &v1); + break; + case 4: + v1.x = v0->unk_08 + 2 * FX32_ONE; + sub_02021C50(v0->unk_00, &v1); + break; + case 6: + v1.x = v0->unk_08; + sub_02021C50(v0->unk_00, &v1); + sub_020067D0(param0); + break; + } + + v0->unk_04++; +} + +static void sub_02087D64 (UnkStruct_02018340 * param0, UnkStruct_0205AA50 * param1, int * param2, int param3, int * param4, VecFx32 param5[], UnkStruct_02022550 ** param6, void * param7) +{ + int v0 = *param4; + int v1 = v0 ^ 1; + int v2; + + switch (*param2) { + case 0: + { + u16 v3 = Unk_020F24DC[param3] | (Unk_020F24DC[param3] << 4); + + sub_02006E60(31, 6 + param3, param0, 0 + v0, 0, (32 * 14 * 2), 1, 18); + sub_02088260(param5, v0); + sub_02088E58(¶m1[v0], v3, param3, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((0 & 0xff) << 0)), param7); + (*param2)++; + } + break; + case 1: + sub_02019184(param0, 0 + v0, 0, 238); + sub_02019184(param0, 0 + v0, 3, -80); + (*param2)++; + break; + case 2: + param5[v0].x -= 24; + + if (param5[v0].x < -11 + 10) { + UnkStruct_02087CDC * v4; + UnkStruct_0201CD38 * v5; + + v5 = sub_0200679C(sub_02087CDC, 16, 0, 18); + v4 = sub_0201CED0(v5); + v4->unk_00 = param6[7]; + v4->unk_04 = 0; + v4->unk_08 = sub_02021D28(param6[7])->x; + v4->unk_0C = sub_02021D28(param6[7])->y; + + param5[v0].x = -11; + (*param2)++; + } + + param5[v1].y -= 10; + + if (param5[v1].y < -196) { + param5[v1].y = -196; + } + + sub_02019184(param0, 0 + v0, 0, param5[v0].x); + sub_02019184(param0, 0 + v1, 3, param5[v1].y); + break; + case 3: + param5[v1].y -= 10; + + if (param5[v1].y < -196) { + param5[v1].y = -196; + } + + sub_02019184(param0, 0 + v0, 0, param5[v0].x); + sub_02019184(param0, 0 + v1, 3, param5[v1].y); + + if ((param5[v0].x == -11) && (param5[v1].y == -196)) { + (*param2)++; + (*param4) ^= 1; + sub_02088240(param0, *param4, param5); + sub_02005748(1691); + } + break; + case 4: + break; + } +} + +static void sub_02087F48 (UnkStruct_0205AA50 * param0, int param1, UnkStruct_02023790 * param2) +{ + sub_0200E060(param0, 0, ((32 * 8)), 10); + sub_0201D738(param0, 1, param2, 0, 0, 0, NULL); + sub_0201A954(param0); +} + +static void sub_02087F78 (UnkStruct_0205AA50 * param0, int param1, UnkStruct_02023790 * param2) +{ + int v0 = 16; + int v1 = sub_02002D7C(0, param2, 0); + + if (v1 > 130) { + v0 = 0; + } + + sub_0201ADA4(param0, 0x101); + sub_0201D78C(param0, 0, param2, v0, 0, 0, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((1 & 0xff) << 0)), NULL); + sub_0201A954(param0); +} + +static void sub_02087FC0 (UnkStruct_02087A10 * param0, UnkStruct_020067E8 * param1, UnkStruct_02006C24 * param2) +{ + sub_0201A7E8(param0->unk_160, ¶m0->unk_41C[0], 0, 2, 1, 26, 12, 1, (32 * 8)); + sub_0201A7E8(param0->unk_160, ¶m0->unk_41C[1], 1, 2, 1, 26, 12, 1, ((32 * 8) + (26 * 12))); + + if (param0->unk_00 == 4) { + sub_0200710C(param2, 6 + 3, param0->unk_160, 1, 0, (32 * 14 * 2), 1, 18); + param0->unk_4C4 = 4; + sub_02088844(param0->unk_3A, 4); + sub_02088E58(¶m0->unk_41C[1], 0xa0a, 4, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((0 & 0xff) << 0)), param0->unk_514->pRawData); + } else { + param0->unk_4C4 = 0; + sub_02088844(param0->unk_3A, 0); + sub_02088E58(¶m0->unk_41C[1], 0x404, 0, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((0 & 0xff) << 0)), param0->unk_514->pRawData); + } + + sub_0201A7E8(param0->unk_160, ¶m0->unk_41C[2], 2, 7, 2, 22, 2, 0, (((32 * 8) + (26 * 12)) + (26 * 12))); + + { + int v0 = ((param0->unk_0C * 12) / 8) + 1; + + sub_0201A7E8(param0->unk_160, ¶m0->unk_41C[3], 2, 10, 3, v0, 2, 0, ((((32 * 8) + (26 * 12)) + (26 * 12)) + 44)); + sub_0201ADA4(¶m0->unk_41C[3], 0x101); + sub_0201A7E8(param0->unk_160, ¶m0->unk_41C[8], 2, 10 + v0 - 1, 3, 7, 2, 0, (((((32 * 8) + (26 * 12)) + (26 * 12)) + 44) + 36)); + sub_0201ADA4(¶m0->unk_41C[8], 0x101); + } + + if (param0->unk_00 == 5) { + sub_02087F78(¶m0->unk_41C[8], param0->unk_00, param0->unk_184); + sub_0201A954(¶m0->unk_41C[8]); + } + + sub_0201A7E8(param0->unk_160, ¶m0->unk_41C[9], 4, 2, 19, 27, 4, 12, ((120 + (2 * 2 * 3)))); + sub_0201ADA4(¶m0->unk_41C[9], 0xf0f); + sub_02087F48(¶m0->unk_41C[9], param0->unk_00, param0->unk_178); + + { + UnkStruct_0208737C * v1 = (UnkStruct_0208737C *)sub_02006840(param1); + + if (param0->unk_118[0] != 0xffff) { + sub_020021B0(param0->unk_D8, param0->unk_118); + sub_02088554(¶m0->unk_41C[3], param0->unk_D8, 0, 0, 12, 0, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((1 & 0xff) << 0)), NULL); + } + } + + { + int v2; + + for (v2 = 0; v2 < 3; v2++) { + sub_0201A7E8(param0->unk_160, ¶m0->unk_41C[4 + v2], 2, 0, 0, 2, 2, 0, 120); + sub_0201ADA4(¶m0->unk_41C[4 + v2], 0); + } + + sub_0201A7E8(param0->unk_160, ¶m0->unk_41C[7], 2, 0, 0, 16, 2, 0, (120 + (2 * 2 * 3))); + sub_0201ADA4(¶m0->unk_41C[7], 0); + } +} + +static void sub_02088240 (UnkStruct_02018340 * param0, int param1, VecFx32 param2[]) +{ + sub_02019060(0 + param1, 1); + sub_02019060(0 + param1 ^ 1, 2); +} + +static void sub_02088260 (VecFx32 param0[], int param1) +{ + param0[param1].x = 238; + param0[param1].y = -80; + param0[param1 ^ 1].x = -11; + param0[param1 ^ 1].y = -80; +} + +static const int Unk_020F2904[][2] = { + {0x0, 0x0}, + {0x0, 0xFFFFFFFFFFFFFFFF}, + {0x0, 0x1}, + {0xFFFFFFFFFFFFFFFF, 0x0}, + {0x1, 0x0} +}; + +static int sub_02088288 (int param0, int param1, int param2) +{ + if (param0 >= param2) { + param0 = param1; + } + + if (param0 < param1) { + param0 = param2 - 1; + } + + return param0; +} + +static void sub_02088298 (UnkStruct_02087A10 * param0, int param1) +{ + int v0, v1; + u16 v2; + + if (param1 == 0) { + return; + } + + v2 = param0->unk_3A[param0->unk_1C.unk_04][param0->unk_1C.unk_00]; + v0 = sub_02088288((param0->unk_1C.unk_00 + Unk_020F2904[param1][0]), 0, 13); + v1 = sub_02088288((param0->unk_1C.unk_04 + Unk_020F2904[param1][1]), 0, 6); + + while (param0->unk_3A[v1][v0] == (0xd001 + 3) || (param0->unk_3A[v1][v0] == v2 && param0->unk_3A[v1][v0] > 0xe001)) { + if ((param0->unk_1C.unk_0C == 0) && (param0->unk_3A[v1][v0] == (0xd001 + 3)) && (Unk_020F2904[param1][1] != 0)) { + v0 += param0->unk_1C.unk_10; + v0 = sub_02088288(v0, 0, 13); + } else { + v0 += Unk_020F2904[param1][0]; + v0 = sub_02088288(v0, 0, 13); + v1 += Unk_020F2904[param1][1]; + v1 = sub_02088288(v1, 0, 6); + } + } + + param0->unk_1C.unk_00 = v0; + param0->unk_1C.unk_04 = v1; +} + +static void sub_02088350 (UnkStruct_02087A10 * param0) +{ + int v0 = 0; + int v1 = 0; + BOOL v2 = 0; + + if (sub_02021D34(param0->unk_390[8]) == 0) { + v2 = 1; + } + + if (Unk_021BF67C.unk_4C & PAD_KEY_UP) { + sub_02005748(1500); + sub_02021CAC(param0->unk_390[8], 1); + v1 = 1; + v0++; + } + + if (Unk_021BF67C.unk_4C & PAD_KEY_DOWN) { + sub_02005748(1500); + sub_02021CAC(param0->unk_390[8], 1); + v1 = 2; + v0++; + } + + if (Unk_021BF67C.unk_4C & PAD_KEY_LEFT) { + sub_02005748(1500); + sub_02021CAC(param0->unk_390[8], 1); + v1 = 3; + v0++; + } + + if (Unk_021BF67C.unk_4C & PAD_KEY_RIGHT) { + sub_02005748(1500); + sub_02021CAC(param0->unk_390[8], 1); + v1 = 4; + v0++; + } + + if (Unk_021BF67C.unk_48 & PAD_BUTTON_START) { + sub_02005748(1500); + sub_02021CAC(param0->unk_390[8], 1); + param0->unk_1C.unk_00 = 12; + param0->unk_1C.unk_04 = 0; + v0++; + } + + { + if ((param0->unk_62C = sub_0208903C(param0)) == 1) { + v1 = 0; + v0++; + } + } + + if (v2 == 1) { + v0 = 0; + sub_02088454(param0, v1); + } + + if (v0) { + sub_02088298(param0, v1); + sub_02088454(param0, v1); + } +} + +static void sub_02088454 (UnkStruct_02087A10 * param0, int param1) +{ + if (param0->unk_1C.unk_04 != 0) { + VecFx32 v0; + + if ((param0->unk_1C.unk_0C == 0) && (param0->unk_1C.unk_0C != param0->unk_1C.unk_04)) { + sub_02021D6C(param0->unk_390[8], 39); + } + + v0.x = FX32_ONE * (26 + param0->unk_1C.unk_00 * 16); + v0.y = FX32_ONE * ((111 - 20) + (param0->unk_1C.unk_04 - 1) * 19); + sub_02021C50(param0->unk_390[8], &v0); + } else { + VecFx32 v1; + int v2 = param0->unk_3A[param0->unk_1C.unk_04][param0->unk_1C.unk_00] - (0xe001 + 1); + + v1.x = FX32_ONE * Unk_020F251C[v2]; + v1.y = FX32_ONE * (88 - 20); + + sub_02021D6C(param0->unk_390[8], Unk_020F24E8[v2]); + sub_02021C50(param0->unk_390[8], &v1); + } + + param0->unk_38 = 180; + + sub_02021E50(param0->unk_390[8], 0); + + param0->unk_1C.unk_08 = param0->unk_1C.unk_00; + param0->unk_1C.unk_0C = param0->unk_1C.unk_04; + + if (Unk_020F2904[param1][0] != 0) { + param0->unk_1C.unk_10 = Unk_020F2904[param1][0]; + } +} + +static void sub_02088514 (u16 * param0) +{ + fx32 v0; + GXRgb v1; + int v2, v3, v4; + + *param0 += 20; + + if (*param0 > 360) { + *param0 = 0; + } + + v0 = sub_0201D250(*param0); + v3 = 15 + (v0 * 10) / FX32_ONE; + v1 = GX_RGB(29, v3, 0); + + GX_LoadOBJPltt((u16 *)&v1, (16 + 13) * 2, 2); +} + +static void sub_02088554 (UnkStruct_0205AA50 * param0, const u16 * param1, int param2, int param3, int param4, int param5, u32 param6, u8 * param7) +{ + int v0 = 0, v1, v2; + u16 v3[2]; + UnkStruct_02023790 * v4; + + v4 = sub_02023790(2, 18); + + while (param1[v0] != 0xffff) { + if ((param1[v0] == 0xd001) || (param1[v0] == (0xd001 + 1)) || (param1[v0] == (0xd001 + 2))) { + u16 v5 = param1[v0] - 0xd001; + sub_0201ADDC(param0, (void *)¶m7[v5 * 8 * 8 * 4 / 2], 0, 0, 12, 12, param2 + v0 * param4, param3 + 2, 12, 12); + } else { + if (param1[v0] == (0xd001 + 3)) { + v0++; + continue; + } + + v3[0] = param1[v0]; + v3[1] = 0xffff; + + v1 = sub_02002D48(0, v3, 0); + v2 = param2 + v0 * param4 + ((param4 - v1) / 2); + + sub_02023D28(v4, v3); + sub_0201D78C(param0, 0, v4, v2, param3, param5, param6, NULL); + } + + v0++; + } + + sub_020237BC(v4); +} + +static const u8 Unk_020F24D8[] = { + 0x60, + 0x68, + 0x50, + 0x58 +}; + +static void * sub_02088654 (UnkStruct_0205AA50 * param0, UnkStruct_02023790 * param1, u8 param2, const u32 param3) +{ + sub_0201D78C(param0, param2, param1, 0, 0, 0xff, param3, NULL); + return param0->unk_0C; +} + +static void sub_02088678 (UnkStruct_0205AA50 * param0, const u16 * param1, u8 * param2, UnkStruct_02023790 * param3) +{ + u16 v0[20 + 1], v1, v2; + void * v3; + UnkStruct_02023790 * v4; + + sub_0201ADA4(¶m0[3], 0); + v3 = sub_02088654(¶m0[3], param3, 2, (u32)(((0xd & 0xff) << 16) | ((0xe & 0xff) << 8) | ((0xf & 0xff) << 0))); + DC_FlushRange(v3, 0x20 * 4 * 16); + + for (v1 = 0; v1 < 4; v1++) { + sub_02012C60(¶m0[3], 4, 2, 4 * v1, 0, (char *)param2); + DC_FlushRange(param2, 0x20 * 4 * 2); + GXS_LoadOBJ(param2, Unk_020F24D8[v1] * 0x20, 0x20 * 4 * 2); + } + + v4 = sub_02023790(20 + 1, 18); + + for (v1 = 0; v1 < 3; v1++) { + v0[0] = param1[v1]; + v0[1] = 0xffff; + + sub_0201ADA4(¶m0[v1], 0); + sub_02023D28(v4, v0); + + v3 = sub_02088654(¶m0[v1], v4, 2, (u32)(((0xd & 0xff) << 16) | ((0xe & 0xff) << 8) | ((0xf & 0xff) << 0))); + + DC_FlushRange(v3, 0x20 * 4); + GXS_LoadOBJ(v3, Unk_020F24F0[v1] * 0x20, 0x20 * 4); + } + + sub_020237BC(v4); +} + +static void sub_02088754 (UnkStruct_0205AA50 * param0, u16 * param1, int param2, u16 * param3, u8 * param4, UnkStruct_02023790 * param5) +{ + int v0, v1; + const u16 * v2 = NULL; + u16 v3; + + if (param2 == 0) { + v3 = (0xd001 + 2); + } else { + v3 = param1[param2 - 1]; + } + + switch (v3) { + case 0xd001: + case (0xd001 + 1): + case (0xd001 + 2): + case (0xd001 + 3): + case (0xe001 + 1): + case (0xe001 + 2): + case (0xe001 + 3): + case (0xe001 + 4): + case (0xe001 + 5): + case (0xe001 + 6): + case (0xe001 + 7): + v3 = 0x1; + break; + } + + for (v0 = 0; v0 < 3; v0++) { + param3[v0] = 0x1; + } + + param3[0] = v3; + + if (v3 != 0x1) { + for (v0 = 0; v0 < sizeof(Unk_020F2BBE) / (3 * 2); v0++) { + if (Unk_020F2BBE[v0][0] == v3) { + for (v1 = 0; v1 < 3; v1++) { + param3[v1] = Unk_020F2BBE[v0][v1]; + } + break; + } + + if (Unk_020F2BBE[v0][2] == v3) { + for (v1 = 0; v1 < 3; v1++) { + param3[v1] = Unk_020F2BBE[v0][v1]; + } + break; + } + } + } + + sub_02088678(param0, param3, param4, param5); +} + +static void sub_02088844 (u16 param0[][13], const int param1) +{ + int v0, v1; + + for (v0 = 0; v0 < 13; v0++) { + param0[0][v0] = Unk_02100C40[param1][v0]; + } + + for (v1 = 0; v1 < 6 - 1; v1++) { + for (v0 = 0; v0 < 13; v0++) { + param0[1 + v1][v0] = Unk_02100C54[param1][v1][v0]; + } + } +} + +static int sub_02088898 (UnkStruct_02087A10 * param0, u16 param1, int param2) +{ + if ((param1 == (0xd001 + 2)) || (param1 == (0xd001 + 3))) { + param1 = 0x1; + } + + if (param0->unk_00 == 4) { + if ((param1 == (0xe001 + 1)) || (param1 == (0xe001 + 2)) || (param1 == (0xe001 + 3)) || (param1 == (0xe001 + 4))) { + param1 = 0x1; + } + } + + if ((sub_02021D34(param0->unk_390[8]) == 0) && (Unk_021BF67C.unk_60 == 0)) { + sub_02021CAC(param0->unk_390[8], 1); + return 2; + } + + switch (param1) { + case 0xd001: + if (sub_02088D08(42, (42 + 40), 1, 0xd001, param0->unk_D8, param0->unk_158)) { + sub_0201ADA4(¶m0->unk_41C[3], 0x101); + sub_02088554(¶m0->unk_41C[3], param0->unk_D8, 0, 0, 12, 0, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((1 & 0xff) << 0)), NULL); + sub_02005748(1515); + } + break; + case (0xd001 + 1): + if (sub_02088D08(72, (72 + 10), 2, (0xd001 + 1), param0->unk_D8, param0->unk_158)) { + sub_0201ADA4(¶m0->unk_41C[3], 0x101); + sub_02088554(¶m0->unk_41C[3], param0->unk_D8, 0, 0, 12, 0, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((1 & 0xff) << 0)), NULL); + sub_02005748(1515); + } + break; + case (0xe001 + 5): + if (sub_02088C9C(0, (72 + 10), param0->unk_D8, param0->unk_158)) { + sub_0201ADA4(¶m0->unk_41C[3], 0x101); + sub_02088554(¶m0->unk_41C[3], param0->unk_D8, 0, 0, 12, 0, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((1 & 0xff) << 0)), NULL); + param0->unk_4F4[4]++; + sub_02005748(1515); + } + break; + case (0xe001 + 1): + case (0xe001 + 2): + case (0xe001 + 3): + case (0xe001 + 4): + if (param0->unk_4C4 != param1 - (0xe001 + 1)) { + param0->unk_4C0 = 0; + param0->unk_4C4 = param1 - (0xe001 + 1); + sub_02088844(param0->unk_3A, param0->unk_4C4); + param0->unk_4F4[param1 - (0xe001 + 1)]++; + sub_02005748(1694); + sub_02021CAC(param0->unk_390[8], param2); + } + break; + case (0xe001 + 6): + if (param0->unk_158 != 0) { + param0->unk_D8[param0->unk_158 - 1] = 0xffff; + param0->unk_158--; + + sub_0201ADA4(¶m0->unk_41C[3], 0x101); + + if (param0->unk_158 == 0) { + sub_0201A954(¶m0->unk_41C[3]); + } else { + sub_02088554(¶m0->unk_41C[3], param0->unk_D8, 0, 0, 12, 0, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((1 & 0xff) << 0)), NULL); + } + + sub_02088754(¶m0->unk_41C[4], param0->unk_D8, param0->unk_158, param0->unk_15A, param0->unk_528, param0->unk_17C); + sub_02088E1C(param0->unk_3C8, param0->unk_158, param0->unk_0C); + + param0->unk_4F4[5]++; + + sub_02005748(1500); + sub_02021CAC(param0->unk_390[8], param2); + } + break; + case (0xe001 + 7): + sub_02015760(param0->unk_628); + sub_02021CAC(param0->unk_390[8], param2); + + if (param0->unk_14 == 0) { + sub_02005748(1506); + param0->unk_4F4[6]++; + sub_0200F174(2, 0, 0, 0x0, 16, 1, 18); + return 3; + } else { + param0->unk_4C0 = 5; + } + break; + default: + if ((param0->unk_4C4 == 4) && (param1 == 0x1)) { + return 2; + } + + if (param0->unk_158 != param0->unk_0C) { + param0->unk_D8[param0->unk_158] = param1; + + sub_0201ADA4(¶m0->unk_41C[3], 0x101); + sub_02088554(¶m0->unk_41C[3], param0->unk_D8, 0, 0, 12, 0, (u32)(((0xe & 0xff) << 16) | ((0xf & 0xff) << 8) | ((1 & 0xff) << 0)), NULL); + + param0->unk_158++; + + sub_02088E1C(param0->unk_3C8, param0->unk_158, param0->unk_0C); + sub_02005748(1515); + sub_02021CAC(param0->unk_390[8], 1); + sub_02021FE0(param0->unk_390[8], GX_OAM_MODE_XLU); + + G2_SetBlendAlpha(0, GX_BLEND_PLANEMASK_BG0 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG2, 8, 8); + sub_02021D6C(param0->unk_390[8], 60); + + param0->unk_1C.unk_18 = 1; + + sub_02088754(¶m0->unk_41C[4], param0->unk_D8, param0->unk_158, param0->unk_15A, param0->unk_528, param0->unk_17C); + } + } + + return 2; +} + +static u16 sub_02088C7C (const u16 * param0, int param1) +{ + do { + param1 = sub_02088288(++param1, 0, 3); + } while (param0[param1] == 0x1); + + return param0[param1]; +} + +static int sub_02088C9C (int param0, int param1, u16 * param2, int param3) +{ + int v0, v1; + u16 v2, v3; + + if (param3 == 0) { + return 0; + } + + v2 = param2[param3 - 1]; + + for (v0 = param0; v0 < param1; v0++) { + for (v1 = 0; v1 < 3; v1++) { + if ((Unk_020F2BBE[v0][v1] == v2) && (v2 != 0x1)) { + param2[param3 - 1] = sub_02088C7C(Unk_020F2BBE[v0], v1); + return 1; + } + } + } + + return 0; +} + +static int sub_02088D08 (int param0, int param1, int param2, int param3, u16 * param4, int param5) +{ + int v0; + u16 v1; + + if ((param5 == 0) || (param4[param5 - 1] == 0x1)) { + return 0; + } + + v1 = param4[param5 - 1]; + + for (v0 = param0; v0 < param1; v0++) { + if (Unk_020F2BBE[v0][0] == v1) { + param4[param5 - 1] = Unk_020F2BBE[v0][param2]; + return 1; + } + } + + for (v0 = param0; v0 < param1; v0++) { + if (Unk_020F2BBE[v0][param2] == v1) { + param4[param5 - 1] = Unk_020F2BBE[v0][0]; + return 1; + } + } + + switch (param3) { + case 0xd001: + for (v0 = 0; v0 < NELEMS(Unk_020F2954); v0++) { + if (Unk_020F2954[v0][0] == v1) { + param4[param5 - 1] = Unk_020F2954[v0][1]; + return 1; + } + } + break; + case (0xd001 + 1): + for (v0 = 0; v0 < NELEMS(Unk_020F292C); v0++) { + if (Unk_020F292C[v0][0] == v1) { + param4[param5 - 1] = Unk_020F292C[v0][1]; + return 1; + } + } + break; + case (0xe001 + 5): + if (v1 == 0x26) { + param4[param5 - 1] = 0x24; + return 1; + } + + if (v1 == 0x76) { + param4[param5 - 1] = 0x74; + return 1; + } + break; + } + + return 0; +} + +static void sub_02088E1C (UnkStruct_02022550 ** param0, int param1, int param2) +{ + int v0; + + for (v0 = 0; v0 < param2; v0++) { + sub_02021D6C(param0[v0], 43); + } + + if (param1 != param2) { + sub_02021D6C(param0[param1], 44); + } +} + +static const u8 Unk_020F24E0[] = { + 0x3, + 0x6, + 0xC, + 0x9, + 0x9 +}; + +static void sub_02088E58 (UnkStruct_0205AA50 * param0, u16 param1, int param2, u32 param3, u8 * param4) +{ + int v0, v1, v2; + + sub_0201ADA4(param0, param1); + + for (v0 = 0; v0 < 6; v0++) { + sub_0201AE78(param0, Unk_020F24E0[param2], 16 + 32 * v0, 0, 16, 19); + sub_0201AE78(param0, Unk_020F24E0[param2], 16 + 32 * v0, 19 * 2, 16, 19); + sub_0201AE78(param0, Unk_020F24E0[param2], 16 + 32 * v0, 19 * 4, 16, 19); + } + + for (v0 = 0; v0 < 7; v0++) { + sub_0201AE78(param0, Unk_020F24E0[param2], 32 * v0, 19, 16, 19); + sub_0201AE78(param0, Unk_020F24E0[param2], 32 * v0, 19 * 3, 16, 19); + } + + for (v0 = 0; v0 < 5; v0++) { + sub_02088554(param0, Unk_02100C54[param2][v0], 0, v0 * 19 + 4, 16, 0xff, param3, param4); + } + + sub_0201A954(param0); +} + +static void sub_02088F40 (int param0[], UnkStruct_02022550 ** param1, int param2) +{ + int v0, v1; + + for (v0 = 0; v0 < 3; v0++) { + if (param0[v0]) { + for (v1 = 0; v1 < 3; v1++) { + sub_02021D6C(param1[v1], Unk_020F2984[v1][2]); + } + + sub_02021D6C(param1[v0], Unk_020F2984[v0][2] - 3); + break; + } + } + + for (v0 = 5; v0 < 7; v0++) { + if (param0[v0]) { + sub_02021D6C(param1[v0], Unk_020F2984[v0][2] + 1); + } + } + + for (v0 = 0; v0 < 7; v0++) { + param0[v0] = 0; + } +} + +static void sub_02088FD0 (UnkStruct_02087A10 * param0) +{ + if (!sub_02021FD0(param0->unk_390[8])) { + if (param0->unk_158 == param0->unk_0C) { + param0->unk_1C.unk_00 = 12; + param0->unk_1C.unk_04 = 0; + sub_02021D6C(param0->unk_390[8], 39); + } else { + sub_02021D6C(param0->unk_390[8], 39); + } + + if (param0->unk_1C.unk_14 == 0) { + sub_02021CAC(param0->unk_390[8], 0); + } else { + sub_02088454(param0, 0); + } + + param0->unk_1C.unk_18 = 0; + + sub_02021FE0(param0->unk_390[8], GX_OAM_MODE_NORMAL); + } +} + +static const UnkStruct_020F2A14 Unk_020F2A14[] = { + {0x19, 0x3C, 0x0, 0x0, 0x0}, + {0x39, 0x3C, 0x0, 0x2, 0x0}, + {0x59, 0x3C, 0x0, 0x4, 0x0}, + {0x0, 0xC0, 0x0, 0x4, 0x0}, + {0x9D, 0x3C, 0x1, 0x8, 0x0}, + {0xC5, 0x3C, 0x1, 0xB, 0x0}, + {0x1C, 0x58, 0x2, 0x0, 0x1}, + {0x2C, 0x58, 0x2, 0x1, 0x1}, + {0x3C, 0x58, 0x2, 0x2, 0x1}, + {0x4C, 0x58, 0x2, 0x3, 0x1}, + {0x5C, 0x58, 0x2, 0x4, 0x1}, + {0x6C, 0x58, 0x2, 0x5, 0x1}, + {0x7C, 0x58, 0x2, 0x6, 0x1}, + {0x8C, 0x58, 0x2, 0x7, 0x1}, + {0x9C, 0x58, 0x2, 0x8, 0x1}, + {0xAC, 0x58, 0x2, 0x9, 0x1}, + {0xBC, 0x58, 0x2, 0xA, 0x1}, + {0xCC, 0x58, 0x2, 0xB, 0x1}, + {0xDC, 0x58, 0x2, 0xC, 0x1}, + {0x1C, 0x6B, 0x2, 0x0, 0x2}, + {0x2C, 0x6B, 0x2, 0x1, 0x2}, + {0x3C, 0x6B, 0x2, 0x2, 0x2}, + {0x4C, 0x6B, 0x2, 0x3, 0x2}, + {0x5C, 0x6B, 0x2, 0x4, 0x2}, + {0x6C, 0x6B, 0x2, 0x5, 0x2}, + {0x7C, 0x6B, 0x2, 0x6, 0x2}, + {0x8C, 0x6B, 0x2, 0x7, 0x2}, + {0x9C, 0x6B, 0x2, 0x8, 0x2}, + {0xAC, 0x6B, 0x2, 0x9, 0x2}, + {0xBC, 0x6B, 0x2, 0xA, 0x2}, + {0xCC, 0x6B, 0x2, 0xB, 0x2}, + {0xDC, 0x6B, 0x2, 0xC, 0x2}, + {0x1C, 0x7E, 0x2, 0x0, 0x3}, + {0x2C, 0x7E, 0x2, 0x1, 0x3}, + {0x3C, 0x7E, 0x2, 0x2, 0x3}, + {0x4C, 0x7E, 0x2, 0x3, 0x3}, + {0x5C, 0x7E, 0x2, 0x4, 0x3}, + {0x6C, 0x7E, 0x2, 0x5, 0x3}, + {0x7C, 0x7E, 0x2, 0x6, 0x3}, + {0x8C, 0x7E, 0x2, 0x7, 0x3}, + {0x9C, 0x7E, 0x2, 0x8, 0x3}, + {0xAC, 0x7E, 0x2, 0x9, 0x3}, + {0xBC, 0x7E, 0x2, 0xA, 0x3}, + {0xCC, 0x7E, 0x2, 0xB, 0x3}, + {0xDC, 0x7E, 0x2, 0xC, 0x3}, + {0x1C, 0x91, 0x2, 0x0, 0x4}, + {0x2C, 0x91, 0x2, 0x1, 0x4}, + {0x3C, 0x91, 0x2, 0x2, 0x4}, + {0x4C, 0x91, 0x2, 0x3, 0x4}, + {0x5C, 0x91, 0x2, 0x4, 0x4}, + {0x6C, 0x91, 0x2, 0x5, 0x4}, + {0x7C, 0x91, 0x2, 0x6, 0x4}, + {0x8C, 0x91, 0x2, 0x7, 0x4}, + {0x9C, 0x91, 0x2, 0x8, 0x4}, + {0xAC, 0x91, 0x2, 0x9, 0x4}, + {0xBC, 0x91, 0x2, 0xA, 0x4}, + {0xCC, 0x91, 0x2, 0xB, 0x4}, + {0xDC, 0x91, 0x2, 0xC, 0x4}, + {0x1C, 0xA4, 0x2, 0x0, 0x5}, + {0x2C, 0xA4, 0x2, 0x1, 0x5}, + {0x3C, 0xA4, 0x2, 0x2, 0x5}, + {0x4C, 0xA4, 0x2, 0x3, 0x5}, + {0x5C, 0xA4, 0x2, 0x4, 0x5}, + {0x6C, 0xA4, 0x2, 0x5, 0x5}, + {0x7C, 0xA4, 0x2, 0x6, 0x5}, + {0x8C, 0xA4, 0x2, 0x7, 0x5}, + {0x9C, 0xA4, 0x2, 0x8, 0x5}, + {0xAC, 0xA4, 0x2, 0x9, 0x5}, + {0xBC, 0xA4, 0x2, 0xA, 0x5}, + {0xCC, 0xA4, 0x2, 0xB, 0x5}, + {0xDC, 0xA4, 0x2, 0xC, 0x5} +}; + +static BOOL sub_0208903C (UnkStruct_02087A10 * param0) +{ + int v0, v1 = 0; + u8 v2, v3, v4, v5, v6, v7; + + if (param0->unk_00 == 4) { + v1 = 4; + } + + if (Unk_021BF67C.unk_60) { + v2 = Unk_021BF67C.unk_5C; + v3 = Unk_021BF67C.unk_5E; + + for (v0 = v1; v0 < (NELEMS(Unk_020F2A14)); v0++) { + v4 = Unk_020F2A14[v0].unk_00; + v5 = Unk_020F2A14[v0].unk_01; + + switch (Unk_020F2A14[v0].unk_02_0) { + case 0: + v6 = 32 - 1; + v7 = 22; + break; + case 1: + v6 = 32; + v7 = 22; + break; + case 2: + v6 = 16; + v7 = 19; + break; + } + + if ((v2 >= v4) && (v3 >= v5) && (v2 <= (v4 + v6)) && (v3 <= (v5 + v7))) { + param0->unk_1C.unk_00 = Unk_020F2A14[v0].unk_04_0; + param0->unk_1C.unk_04 = Unk_020F2A14[v0].unk_05_0; + return 1; + } + } + } + + return 0; +}