From 856f564f3c36ea583ef6e09a51776d197da3f331 Mon Sep 17 00:00:00 2001 From: Nomura <72407407+Nomura-RH@users.noreply.github.com> Date: Sun, 1 Jan 2023 19:40:55 +0100 Subject: [PATCH] Match files in overlay101 --- asm/overlay101/ov101_021D0D80.inc | 125 - asm/overlay101/ov101_021D0D80.s | 1588 ------ asm/overlay101/ov101_021D1A28.inc | 142 - asm/overlay101/ov101_021D1A28.s | 8885 ----------------------------- asm/overlay101/ov101_021D59AC.inc | 63 - asm/overlay101/ov101_021D59AC.s | 5226 ----------------- asm/overlay101/ov101_021D7E48.inc | 29 - asm/overlay101/ov101_021D7E48.s | 998 ---- asm/overlay101/ov101_021D94D8.s | 67 - asm/overlay102/ov102_021D0D80.inc | 57 - asm/overlay102/ov102_021D0D80.s | 936 --- main.lsf | 12 +- src/overlay101/ov101_021D0D80.c | 697 +++ src/overlay101/ov101_021D1A28.c | 4612 +++++++++++++++ src/overlay101/ov101_021D59AC.c | 2526 ++++++++ src/overlay101/ov101_021D7E48.c | 375 ++ src/overlay101/ov101_021D94D8.c | 450 ++ src/overlay102/ov102_021D0D80.c | 433 ++ 18 files changed, 9099 insertions(+), 18122 deletions(-) delete mode 100644 asm/overlay101/ov101_021D0D80.inc delete mode 100644 asm/overlay101/ov101_021D0D80.s delete mode 100644 asm/overlay101/ov101_021D1A28.inc delete mode 100644 asm/overlay101/ov101_021D1A28.s delete mode 100644 asm/overlay101/ov101_021D59AC.inc delete mode 100644 asm/overlay101/ov101_021D59AC.s delete mode 100644 asm/overlay101/ov101_021D7E48.inc delete mode 100644 asm/overlay101/ov101_021D7E48.s delete mode 100644 asm/overlay101/ov101_021D94D8.s delete mode 100644 asm/overlay102/ov102_021D0D80.inc delete mode 100644 asm/overlay102/ov102_021D0D80.s create mode 100644 src/overlay101/ov101_021D0D80.c create mode 100644 src/overlay101/ov101_021D1A28.c create mode 100644 src/overlay101/ov101_021D59AC.c create mode 100644 src/overlay101/ov101_021D7E48.c create mode 100644 src/overlay101/ov101_021D94D8.c create mode 100644 src/overlay102/ov102_021D0D80.c diff --git a/asm/overlay101/ov101_021D0D80.inc b/asm/overlay101/ov101_021D0D80.inc deleted file mode 100644 index 5543a36308..0000000000 --- a/asm/overlay101/ov101_021D0D80.inc +++ /dev/null @@ -1,125 +0,0 @@ -.public sub_02002E98 -.public sub_02004550 -.public sub_020049F4 -.public sub_02005474 -.public sub_020055D0 -.public sub_0200681C -.public sub_0200682C -.public sub_02006830 -.public sub_02006840 -.public sub_02006C24 -.public sub_02006CA8 -.public sub_02006D28 -.public sub_02006D84 -.public sub_0200A784 -.public sub_0200A858 -.public sub_0200A878 -.public sub_0200B144 -.public sub_0200B190 -.public sub_0200B1B8 -.public sub_0200B358 -.public sub_0200B3F0 -.public sub_0200D9E8 -.public sub_0200DA58 -.public sub_0200DAA4 -.public sub_0200DD0C -.public sub_0200E060 -.public sub_0200E084 -.public sub_0200F174 -.public sub_0200F2AC -.public sub_02017798 -.public sub_020177A4 -.public sub_02017FC8 -.public sub_0201807C -.public sub_02018144 -.public sub_02018184 -.public sub_020181C4 -.public sub_02018340 -.public sub_02018368 -.public sub_020183C4 -.public sub_02019044 -.public sub_02019448 -.public sub_02019574 -.public sub_0201958C -.public sub_02019690 -.public sub_0201972C -.public sub_02019EBC -.public sub_0201A8D4 -.public sub_0201A8FC -.public sub_0201A9A4 -.public sub_0201ACF4 -.public sub_0201ADA4 -.public sub_0201C2B8 -.public sub_0201D738 -.public sub_0201DCAC -.public sub_0201E88C -.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 GF_AssertFail -.public sub_02023790 -.public sub_020237BC -.public sub_0202CF70 -.public sub_020711EC -.public sub_0207121C -.public sub_020713D0 -.public NNS_G2dGetUnpackedCharacterData -.public NNS_G2dGetUnpackedPaletteData -.public NNS_G2dGetUnpackedScreenData -.public NNS_G2dInitOamManagerModule -.public G2x_SetBlendAlpha_ -.public memset -.public ov101_021D0F3C -.public ov101_021D0F6C -.public ov101_021D0F94 -.public ov101_021D0F9C -.public ov101_021D107C -.public ov101_021D1098 -.public ov101_021D10B8 -.public ov101_021D11A4 -.public ov101_021D11D0 -.public ov101_021D121C -.public ov101_021D13C8 -.public ov101_021D1458 -.public ov101_021D150C -.public ov101_021D1544 -.public ov101_021D1550 -.public ov101_021D15A4 -.public ov101_021D15BC -.public ov101_021D1868 -.public ov101_021D186C -.public ov101_021D1884 -.public ov101_021D1894 -.public ov101_021D18B4 -.public ov101_021D18C0 -.public ov101_021D18E4 -.public ov101_021D18F4 -.public ov101_021D197C -.public ov101_021D1998 -.public ov101_021D19BC -.public ov101_021D19D4 -.public ov101_021D19E4 -.public ov101_021D1A28 -.public ov101_021D1A4C -.public ov101_021D1AAC -.public ov101_021D59AC -.public ov101_021D5AF0 -.public ov101_021D5C28 -.public ov101_021D7E48 -.public ov101_021D7FB4 -.public ov101_021D80D4 -.public ov101_021D80E4 -.public ov101_021D814C -.public ov101_021D8180 -.public ov101_021D81B4 -.public ov101_021D8220 -.public ov101_021D8254 -.public ov101_021D8288 -.public ov101_021D82F0 diff --git a/asm/overlay101/ov101_021D0D80.s b/asm/overlay101/ov101_021D0D80.s deleted file mode 100644 index 532135896f..0000000000 --- a/asm/overlay101/ov101_021D0D80.s +++ /dev/null @@ -1,1588 +0,0 @@ - .include "macros/function.inc" - .include "overlay101/ov101_021D0D80.inc" - - - - .text - - - thumb_func_start ov101_021D0D80 -ov101_021D0D80: ; 0x021D0D80 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl sub_02017798 - bl sub_020177A4 - bl sub_0201FF00 - bl sub_0201FF68 - mov r2, #2 - mov r0, #3 - mov r1, #0x4f - lsl r2, r2, #0x12 - bl sub_02017FC8 - add r0, r5, #0 - mov r1, #8 - mov r2, #0x4f - bl sub_0200681C - add r4, r0, #0 - mov r0, #0 - strb r0, [r4] - strb r0, [r4, #1] - strb r0, [r4, #2] - strb r0, [r4, #3] - strb r0, [r4, #4] - strb r0, [r4, #5] - strb r0, [r4, #6] - strb r0, [r4, #7] - add r0, r5, #0 - bl sub_02006840 - str r0, [r4, #0] - bl ov101_021D0F6C - add r5, r0, #0 - str r5, [r4, #4] - bl ov101_021D19BC - add r0, r5, #0 - bl ov101_021D186C - add r0, r5, #0 - bl ov101_021D0F9C - add r0, r5, #0 - bl ov101_021D121C - add r0, r5, #0 - bl ov101_021D13C8 - bl ov101_021D150C - add r0, r5, #0 - bl ov101_021D1550 - add r0, r5, #0 - bl ov101_021D1A28 - add r0, r5, #0 - bl ov101_021D59AC - add r0, r5, #0 - bl ov101_021D5AF0 - add r0, r5, #0 - bl ov101_021D5C28 - mov r1, #0 - mov r0, #0x42 - add r2, r1, #0 - bl sub_02004550 - add r0, r5, #0 - bl ov101_021D18C0 - mov r0, #8 - str r0, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r0, #0x4f - str r0, [sp, #8] - mov r0, #0 - add r2, r1, #0 - add r3, r0, #0 - bl sub_0200F174 - mov r0, #1 - add sp, #0xc - pop {r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D0D80 - - thumb_func_start ov101_021D0E40 -ov101_021D0E40: ; 0x021D0E40 - push {r4, r5, lr} - sub sp, #0xc - add r4, r1, #0 - bl sub_0200682C - ldr r5, [r0, #4] - ldr r0, [r4, #0] - cmp r0, #3 - bhi _021D0EC6 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D0E5E: ; jump table - .short _021D0E66 - _021D0E5E - 2 ; case 0 - .short _021D0E76 - _021D0E5E - 2 ; case 1 - .short _021D0EA8 - _021D0E5E - 2 ; case 2 - .short _021D0EB6 - _021D0E5E - 2 ; case 3 -_021D0E66: - bl sub_0200F2AC - cmp r0, #0 - beq _021D0EC6 - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - b _021D0EC6 -_021D0E76: - add r0, r5, #0 - bl ov101_021D1AAC - cmp r0, #1 - bne _021D0EC6 - ldr r0, [r4, #0] - mov r1, #0 - add r0, r0, #1 - str r0, [r4, #0] - mov r0, #8 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #0x4f - str r0, [sp, #8] - mov r0, #2 - add r2, r1, #0 - add r3, r1, #0 - bl sub_0200F174 - add r0, r5, #0 - mov r1, #0 - bl ov101_021D1894 - b _021D0EC6 -_021D0EA8: - bl sub_0200F2AC - cmp r0, #0 - beq _021D0EC6 - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] -_021D0EB6: - add r0, r5, #0 - bl ov101_021D18B4 - cmp r0, #0 - bne _021D0EC6 - add sp, #0xc - mov r0, #1 - pop {r4, r5, pc} -_021D0EC6: - ldr r0, _021D0EE0 ; =0x0000044C - ldr r0, [r5, r0] - bl sub_020713D0 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl ov101_021D80D4 - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - nop -_021D0EE0: .word 0x0000044C - thumb_func_end ov101_021D0E40 - - thumb_func_start ov101_021D0EE4 -ov101_021D0EE4: ; 0x021D0EE4 - push {r4, r5, r6, lr} - add r5, r0, #0 - bl sub_0200682C - add r6, r0, #0 - mov r0, #0 - ldr r4, [r6, #4] - add r1, r0, #0 - bl sub_02017798 - add r0, r6, #0 - add r1, r4, #0 - bl ov101_021D0F3C - add r0, r4, #0 - bl ov101_021D1884 - add r0, r4, #0 - bl ov101_021D107C - add r0, r4, #0 - bl ov101_021D1458 - add r0, r4, #0 - bl ov101_021D1A4C - add r0, r4, #0 - bl ov101_021D18E4 - add r0, r4, #0 - bl ov101_021D19D4 - add r0, r4, #0 - bl ov101_021D0F94 - add r0, r5, #0 - bl sub_02006830 - mov r0, #0x4f - bl sub_0201807C - mov r0, #1 - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov101_021D0EE4 - - thumb_func_start ov101_021D0F3C -ov101_021D0F3C: ; 0x021D0F3C - push {r3, lr} - add r2, r1, #0 - ldr r3, [r2, #0x60] - ldr r1, _021D0F68 ; =0x0000C350 - cmp r3, r1 - bls _021D0F4A - add r3, r1, #0 -_021D0F4A: - ldr r1, [r0, #0] - ldr r1, [r1, #0] - str r3, [r1, #0] - ldr r3, [r2, #0x20] - ldr r1, [r0, #0] - str r3, [r1, #0xc] - ldr r0, [r0, #0] - ldr r0, [r0, #8] - cmp r0, #0 - beq _021D0F66 - ldr r2, [r2, #0xc] - mov r1, #0xe - bl sub_0202CF70 -_021D0F66: - pop {r3, pc} - ; .align 2, 0 -_021D0F68: .word 0x0000C350 - thumb_func_end ov101_021D0F3C - - thumb_func_start ov101_021D0F6C -ov101_021D0F6C: ; 0x021D0F6C - push {r4, lr} - add r4, r0, #0 - ldr r0, _021D0F8C ; =0x000004C8 - bl ov101_021D1998 - ldr r1, [r4, #0] - ldr r1, [r1, #0] - str r1, [r0, #0x60] - add r1, r0, #0 - ldr r2, [r4, #4] - add r1, #0x88 - str r2, [r1, #0] - ldr r2, [r4, #0x10] - ldr r1, _021D0F90 ; =0x000004C4 - str r2, [r0, r1] - pop {r4, pc} - ; .align 2, 0 -_021D0F8C: .word 0x000004C8 -_021D0F90: .word 0x000004C4 - thumb_func_end ov101_021D0F6C - - thumb_func_start ov101_021D0F94 -ov101_021D0F94: ; 0x021D0F94 - ldr r3, _021D0F98 ; =sub_020181C4 - bx r3 - ; .align 2, 0 -_021D0F98: .word sub_020181C4 - thumb_func_end ov101_021D0F94 - - thumb_func_start ov101_021D0F9C -ov101_021D0F9C: ; 0x021D0F9C - push {r3, r4, r5, r6, r7, lr} - add r4, r0, #0 - mov r0, #0x4f - bl sub_02018340 - ldr r1, _021D106C ; =0x0000043C - str r0, [r4, r1] - bl ov101_021D1098 - ldr r0, _021D106C ; =0x0000043C - ldr r0, [r4, r0] - bl ov101_021D10B8 - bl ov101_021D11D0 - mov r0, #1 - add r1, r0, #0 - bl sub_0201FF0C - mov r0, #2 - mov r1, #1 - bl sub_0201FF0C - mov r0, #4 - mov r1, #1 - bl sub_0201FF0C - mov r0, #8 - mov r1, #0 - bl sub_0201FF0C - mov r0, #0x10 - mov r1, #1 - bl sub_0201FF0C - mov r0, #1 - mov r1, #0 - bl sub_0201FF74 - mov r0, #2 - mov r1, #0 - bl sub_0201FF74 - mov r0, #4 - mov r1, #0 - bl sub_0201FF74 - mov r0, #8 - mov r1, #1 - bl sub_0201FF74 - mov r0, #0x10 - mov r1, #1 - bl sub_0201FF74 - ldr r0, _021D1070 ; =0x04000008 - mov r2, #3 - ldrh r1, [r0] - mov r3, #1 - mov r7, #2 - bic r1, r2 - strh r1, [r0] - ldrh r1, [r0, #2] - ldr r6, _021D1074 ; =0x04001008 - bic r1, r2 - orr r1, r3 - strh r1, [r0, #2] - ldrh r1, [r0, #4] - bic r1, r2 - orr r1, r7 - strh r1, [r0, #4] - ldrh r5, [r0, #6] - mov r1, #3 - bic r5, r2 - orr r5, r1 - strh r5, [r0, #6] - ldrh r5, [r6] - bic r5, r2 - strh r5, [r6] - ldrh r5, [r6, #2] - bic r5, r2 - orr r3, r5 - strh r3, [r6, #2] - ldrh r3, [r6, #4] - add r0, #0x48 - bic r3, r2 - orr r3, r7 - strh r3, [r6, #4] - ldrh r3, [r6, #6] - bic r3, r2 - orr r1, r3 - strh r1, [r6, #6] - mov r1, #9 - str r1, [sp] - mov r1, #4 - mov r2, #0x10 - mov r3, #8 - bl G2x_SetBlendAlpha_ - ldr r0, _021D1078 ; =ov101_021D197C - add r1, r4, #0 - bl sub_02017798 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D106C: .word 0x0000043C -_021D1070: .word 0x04000008 -_021D1074: .word 0x04001008 -_021D1078: .word ov101_021D197C - thumb_func_end ov101_021D0F9C - - thumb_func_start ov101_021D107C -ov101_021D107C: ; 0x021D107C - push {r4, lr} - add r4, r0, #0 - ldr r0, _021D1094 ; =0x0000043C - ldr r0, [r4, r0] - bl ov101_021D11A4 - add r0, r4, #0 - bl ov101_021D15A4 - bl ov101_021D1544 - pop {r4, pc} - ; .align 2, 0 -_021D1094: .word 0x0000043C - thumb_func_end ov101_021D107C - - thumb_func_start ov101_021D1098 -ov101_021D1098: ; 0x021D1098 - push {r4, lr} - sub sp, #0x28 - ldr r4, _021D10B4 ; =0x021D8620 - add r3, sp, #0 - mov r2, #5 -_021D10A2: - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021D10A2 - add r0, sp, #0 - bl sub_0201FE94 - add sp, #0x28 - pop {r4, pc} - ; .align 2, 0 -_021D10B4: .word 0x021D8620 - thumb_func_end ov101_021D1098 - - thumb_func_start ov101_021D10B8 -ov101_021D10B8: ; 0x021D10B8 - push {r3, r4, r5, lr} - sub sp, #0x80 - ldr r2, _021D118C ; =0x04000304 - add r4, r0, #0 - ldrh r1, [r2] - lsr r0, r2, #0xb - ldr r5, _021D1190 ; =0x021D8590 - orr r0, r1 - strh r0, [r2] - add r3, sp, #0x70 - 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, _021D1194 ; =0x021D85CC - 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 - mov r0, #0 - mov r1, #0x20 - add r2, r0, #0 - mov r3, #0x4f - bl sub_02019690 - ldr r5, _021D1198 ; =0x021D85E8 - 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, _021D119C ; =0x021D8604 - 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, _021D11A0 ; =0x021D85B0 - 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, #7 - str r0, [r3, #0] - add r0, r4, #0 - mov r3, #0 - bl sub_020183C4 - add r0, r4, #0 - mov r1, #7 - bl sub_02019EBC - add sp, #0x80 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D118C: .word 0x04000304 -_021D1190: .word 0x021D8590 -_021D1194: .word 0x021D85CC -_021D1198: .word 0x021D85E8 -_021D119C: .word 0x021D8604 -_021D11A0: .word 0x021D85B0 - thumb_func_end ov101_021D10B8 - - thumb_func_start ov101_021D11A4 -ov101_021D11A4: ; 0x021D11A4 - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - bl sub_02019044 - add r0, r4, #0 - mov r1, #1 - bl sub_02019044 - add r0, r4, #0 - mov r1, #2 - bl sub_02019044 - add r0, r4, #0 - mov r1, #7 - bl sub_02019044 - add r0, r4, #0 - bl sub_020181C4 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D11A4 - - thumb_func_start ov101_021D11D0 -ov101_021D11D0: ; 0x021D11D0 - push {r4, r5} - mov r0, #1 - lsl r0, r0, #0x1a - ldr r2, [r0, #0] - ldr r1, _021D1218 ; =0xFFFF1FFF - add r5, r0, #0 - and r2, r1 - lsr r1, r0, #0xd - orr r1, r2 - str r1, [r0, #0] - add r5, #0x48 - ldrh r3, [r5] - mov r1, #0x3f - mov r2, #0x1f - bic r3, r1 - add r4, r3, #0 - orr r4, r2 - mov r3, #0x20 - orr r4, r3 - strh r4, [r5] - add r4, r0, #0 - add r4, #0x4a - ldrh r5, [r4] - bic r5, r1 - add r1, r5, #0 - orr r1, r2 - orr r1, r3 - strh r1, [r4] - add r1, r0, #0 - mov r2, #0xff - add r1, #0x40 - strh r2, [r1] - add r0, #0x44 - strh r2, [r0] - pop {r4, r5} - bx lr - ; .align 2, 0 -_021D1218: .word 0xFFFF1FFF - thumb_func_end ov101_021D11D0 - - thumb_func_start ov101_021D121C -ov101_021D121C: ; 0x021D121C - push {r3, r4, r5, lr} - mov r1, #3 - mov r2, #0 - add r4, r0, #0 - bl ov101_021D19E4 - ldr r1, _021D13BC ; =0x00000448 - add r5, r0, #0 - add r1, r4, r1 - bl NNS_G2dGetUnpackedPaletteData - ldr r1, _021D13BC ; =0x00000448 - mov r2, #0x1a - ldr r1, [r4, r1] - mov r0, #1 - ldr r1, [r1, #0xc] - lsl r2, r2, #4 - mov r3, #0 - bl sub_0201972C - add r0, r5, #0 - bl sub_020181C4 - mov r1, #0 - add r0, r4, #0 - add r2, r1, #0 - bl ov101_021D19E4 - ldr r1, _021D13C0 ; =0x00000444 - add r5, r0, #0 - add r1, r4, r1 - bl NNS_G2dGetUnpackedCharacterData - ldr r0, _021D13C0 ; =0x00000444 - mov r1, #0 - ldr r3, [r4, r0] - sub r0, #8 - str r1, [sp] - ldr r2, [r3, #0x14] - ldr r0, [r4, r0] - ldr r3, [r3, #0x10] - mov r1, #1 - bl sub_0201958C - add r0, r5, #0 - bl sub_020181C4 - add r0, r4, #0 - mov r1, #1 - mov r2, #0 - bl ov101_021D19E4 - mov r1, #0x11 - lsl r1, r1, #6 - add r1, r4, r1 - add r5, r0, #0 - bl NNS_G2dGetUnpackedScreenData - mov r0, #0x11 - lsl r0, r0, #6 - ldr r3, [r4, r0] - sub r0, r0, #4 - add r2, r3, #0 - ldr r0, [r4, r0] - ldr r3, [r3, #8] - mov r1, #1 - add r2, #0xc - bl sub_02019574 - ldr r0, _021D13C4 ; =0x0000043C - mov r1, #1 - ldr r0, [r4, r0] - bl sub_02019448 - add r0, r5, #0 - bl sub_020181C4 - add r0, r4, #0 - mov r1, #8 - mov r2, #0 - bl ov101_021D19E4 - ldr r1, _021D13C0 ; =0x00000444 - add r5, r0, #0 - add r1, r4, r1 - bl NNS_G2dGetUnpackedCharacterData - ldr r0, _021D13C0 ; =0x00000444 - mov r1, #0 - ldr r3, [r4, r0] - sub r0, #8 - str r1, [sp] - ldr r2, [r3, #0x14] - ldr r0, [r4, r0] - ldr r3, [r3, #0x10] - mov r1, #2 - bl sub_0201958C - add r0, r5, #0 - bl sub_020181C4 - add r0, r4, #0 - mov r1, #9 - mov r2, #0 - bl ov101_021D19E4 - mov r1, #0x11 - lsl r1, r1, #6 - add r1, r4, r1 - add r5, r0, #0 - bl NNS_G2dGetUnpackedScreenData - mov r0, #0x11 - lsl r0, r0, #6 - ldr r3, [r4, r0] - sub r0, r0, #4 - add r2, r3, #0 - ldr r0, [r4, r0] - ldr r3, [r3, #8] - mov r1, #2 - add r2, #0xc - bl sub_02019574 - ldr r0, _021D13C4 ; =0x0000043C - mov r1, #2 - ldr r0, [r4, r0] - bl sub_02019448 - add r0, r5, #0 - bl sub_020181C4 - add r0, r4, #0 - mov r1, #3 - mov r2, #0 - bl ov101_021D19E4 - ldr r1, _021D13BC ; =0x00000448 - add r5, r0, #0 - add r1, r4, r1 - bl NNS_G2dGetUnpackedPaletteData - ldr r1, _021D13BC ; =0x00000448 - mov r2, #0x1a - ldr r1, [r4, r1] - mov r0, #7 - ldr r1, [r1, #0xc] - lsl r2, r2, #4 - mov r3, #0 - bl sub_0201972C - add r0, r5, #0 - bl sub_020181C4 - add r0, r4, #0 - mov r1, #2 - mov r2, #0 - bl ov101_021D19E4 - ldr r1, _021D13C0 ; =0x00000444 - add r5, r0, #0 - add r1, r4, r1 - bl NNS_G2dGetUnpackedCharacterData - ldr r0, _021D13C0 ; =0x00000444 - mov r1, #0 - ldr r3, [r4, r0] - sub r0, #8 - str r1, [sp] - ldr r2, [r3, #0x14] - ldr r0, [r4, r0] - ldr r3, [r3, #0x10] - mov r1, #7 - bl sub_0201958C - add r0, r5, #0 - bl sub_020181C4 - add r0, r4, #0 - mov r1, #4 - mov r2, #0 - bl ov101_021D19E4 - mov r1, #0x11 - lsl r1, r1, #6 - add r1, r4, r1 - add r5, r0, #0 - bl NNS_G2dGetUnpackedScreenData - mov r0, #0x11 - lsl r0, r0, #6 - ldr r3, [r4, r0] - sub r0, r0, #4 - add r2, r3, #0 - ldr r0, [r4, r0] - ldr r3, [r3, #8] - mov r1, #7 - add r2, #0xc - bl sub_02019574 - ldr r0, _021D13C4 ; =0x0000043C - mov r1, #7 - ldr r0, [r4, r0] - bl sub_02019448 - add r0, r5, #0 - bl sub_020181C4 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D13BC: .word 0x00000448 -_021D13C0: .word 0x00000444 -_021D13C4: .word 0x0000043C - thumb_func_end ov101_021D121C - - thumb_func_start ov101_021D13C8 -ov101_021D13C8: ; 0x021D13C8 - push {r3, r4, r5, lr} - sub sp, #8 - add r5, r0, #0 - ldr r0, _021D1448 ; =0x00000408 - mov r1, #0 - add r4, r5, r0 - str r1, [sp] - mov r2, #0x4f - str r2, [sp, #4] - add r0, #0x34 - ldr r0, [r5, r0] - mov r2, #1 - mov r3, #0xf - bl sub_0200DAA4 - ldr r1, _021D144C ; =0x000004C4 - mov r2, #0x1f - ldr r0, [r5, r1] - sub r1, #0x88 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp] - mov r0, #0x4f - str r0, [sp, #4] - ldr r0, [r5, r1] - mov r1, #0 - mov r3, #0xe - bl sub_0200DD0C - mov r1, #0x1e - mov r0, #0 - lsl r1, r1, #4 - mov r2, #0x4f - bl sub_02002E98 - mov r2, #0x22 - mov r0, #0 - mov r1, #0x1a - lsl r2, r2, #4 - mov r3, #0x4f - bl sub_0200B144 - ldr r1, _021D1448 ; =0x00000408 - str r0, [r5, r1] - mov r0, #0x4f - bl sub_0200B358 - str r0, [r4, #4] - ldr r0, _021D1450 ; =0x0000043C - add r1, r4, #0 - ldr r0, [r5, r0] - ldr r2, _021D1454 ; =0x021D8588 - add r1, #8 - bl sub_0201A8D4 - mov r0, #1 - lsl r0, r0, #8 - mov r1, #0x4f - bl sub_02023790 - str r0, [r4, #0x18] - add sp, #8 - pop {r3, r4, r5, pc} - nop -_021D1448: .word 0x00000408 -_021D144C: .word 0x000004C4 -_021D1450: .word 0x0000043C -_021D1454: .word 0x021D8588 - thumb_func_end ov101_021D13C8 - - thumb_func_start ov101_021D1458 -ov101_021D1458: ; 0x021D1458 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, _021D1488 ; =0x00000408 - add r4, r5, r0 - add r6, r4, #0 - add r6, #8 - add r0, r6, #0 - bl sub_0201ACF4 - add r0, r6, #0 - bl sub_0201A8FC - ldr r0, _021D1488 ; =0x00000408 - ldr r0, [r5, r0] - bl sub_0200B190 - ldr r0, [r4, #4] - bl sub_0200B3F0 - ldr r0, [r4, #0x18] - bl sub_020237BC - pop {r4, r5, r6, pc} - nop -_021D1488: .word 0x00000408 - thumb_func_end ov101_021D1458 - - thumb_func_start ov101_021D148C -ov101_021D148C: ; 0x021D148C - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r0, #0 - ldr r0, _021D14E0 ; =0x00000408 - add r6, r1, #0 - add r4, r5, r0 - add r0, r4, #0 - add r0, #8 - mov r1, #1 - mov r2, #0x1f - mov r3, #0xe - bl sub_0200E060 - add r0, r4, #0 - add r0, #8 - mov r1, #0xf - bl sub_0201ADA4 - ldr r0, _021D14E0 ; =0x00000408 - ldr r2, [r4, #0x18] - ldr r0, [r5, r0] - add r1, r6, #0 - bl sub_0200B1B8 - mov r3, #0 - str r3, [sp] - mov r0, #0xff - str r0, [sp, #4] - str r3, [sp, #8] - add r0, r4, #0 - ldr r2, [r4, #0x18] - add r0, #8 - mov r1, #1 - bl sub_0201D738 - add r4, #8 - add r0, r4, #0 - bl sub_0201A9A4 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021D14E0: .word 0x00000408 - thumb_func_end ov101_021D148C - - thumb_func_start ov101_021D14E4 -ov101_021D14E4: ; 0x021D14E4 - push {r3, r4, r5, lr} - ldr r4, _021D1508 ; =0x00000408 - add r5, r0, #0 - add r0, r5, r4 - add r0, #8 - mov r1, #1 - bl sub_0200E084 - add r0, r5, r4 - add r0, #8 - mov r1, #0 - bl sub_0201ADA4 - add r0, r5, r4 - add r0, #8 - bl sub_0201A9A4 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D1508: .word 0x00000408 - thumb_func_end ov101_021D14E4 - - thumb_func_start ov101_021D150C -ov101_021D150C: ; 0x021D150C - push {r4, lr} - sub sp, #0x10 - ldr r4, _021D153C ; =0x021D85A0 - add r3, sp, #0 - add r2, r3, #0 - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldmia r4!, {r0, r1} - stmia r3!, {r0, r1} - ldr r1, _021D1540 ; =0x00200010 - add r0, r2, #0 - add r2, r1, #0 - bl sub_0201E88C - mov r0, #0x10 - mov r1, #0x4f - bl sub_0201F834 - bl sub_0201E994 - bl sub_0201F8E4 - add sp, #0x10 - pop {r4, pc} - ; .align 2, 0 -_021D153C: .word 0x021D85A0 -_021D1540: .word 0x00200010 - thumb_func_end ov101_021D150C - - thumb_func_start ov101_021D1544 -ov101_021D1544: ; 0x021D1544 - push {r3, lr} - bl sub_0201E958 - bl sub_0201F8B4 - pop {r3, pc} - thumb_func_end ov101_021D1544 - - thumb_func_start ov101_021D1550 -ov101_021D1550: ; 0x021D1550 - push {r3, r4, lr} - sub sp, #0x1c - add r4, r0, #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, #0x4f - str r2, [sp, #0x10] - add r2, r0, #0 - bl sub_0200A784 - mov r0, #0x10 - str r0, [sp] - mov r1, #0x40 - str r1, [sp, #4] - mov r2, #0x20 - str r2, [sp, #8] - mov r3, #0xb - str r3, [sp, #0xc] - mov r0, #8 - str r0, [sp, #0x10] - str r3, [sp, #0x14] - str r3, [sp, #0x18] - mov r0, #0x4f - add r3, r1, #0 - bl ov101_021D7E48 - mov r1, #0x45 - lsl r1, r1, #4 - str r0, [r4, r1] - add r0, r4, #0 - bl ov101_021D15BC - add sp, #0x1c - pop {r3, r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D1550 - - thumb_func_start ov101_021D15A4 -ov101_021D15A4: ; 0x021D15A4 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D1868 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl ov101_021D7FB4 - bl sub_0200A878 - pop {r4, pc} - thumb_func_end ov101_021D15A4 - - thumb_func_start ov101_021D15BC -ov101_021D15BC: ; 0x021D15BC - push {r3, r4, lr} - sub sp, #4 - mov r2, #0x45 - add r4, r0, #0 - mov r0, #0 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #1 - mov r3, #0xb - bl ov101_021D80E4 - mov r1, #1 - mov r2, #0x45 - str r1, [sp] - lsl r2, r2, #4 - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r3, #0x15 - bl ov101_021D80E4 - mov r2, #0x45 - mov r0, #6 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x44 - bl ov101_021D80E4 - mov r2, #0x45 - mov r0, #7 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x47 - bl ov101_021D80E4 - mov r2, #0x45 - mov r0, #8 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x40 - bl ov101_021D80E4 - mov r2, #0x45 - mov r0, #9 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x3c - bl ov101_021D80E4 - mov r2, #0x45 - mov r0, #0 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #3 - mov r3, #0xa - bl ov101_021D81B4 - mov r1, #1 - mov r2, #0x45 - str r1, [sp] - lsl r2, r2, #4 - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r3, #0x14 - bl ov101_021D81B4 - mov r2, #0x45 - mov r0, #6 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x43 - bl ov101_021D81B4 - mov r2, #0x45 - mov r0, #7 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x3f - bl ov101_021D81B4 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0xc - mov r3, #0 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x16 - mov r3, #1 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x45 - mov r3, #6 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x48 - mov r3, #7 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x41 - mov r3, #8 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x3d - mov r3, #9 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0xd - mov r3, #0 - bl ov101_021D82F0 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x17 - mov r3, #1 - bl ov101_021D82F0 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x46 - mov r3, #6 - bl ov101_021D82F0 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x49 - mov r3, #7 - bl ov101_021D82F0 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x42 - mov r3, #8 - bl ov101_021D82F0 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x3e - mov r3, #9 - bl ov101_021D82F0 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #0 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #1 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #6 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #7 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #8 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #9 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #0 - bl ov101_021D8180 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #1 - bl ov101_021D8180 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #6 - bl ov101_021D8180 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #7 - bl ov101_021D8180 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #8 - bl ov101_021D8180 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #9 - bl ov101_021D8180 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #0 - bl ov101_021D8220 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #1 - bl ov101_021D8220 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #6 - bl ov101_021D8220 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #7 - bl ov101_021D8220 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #0 - bl ov101_021D8254 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #1 - bl ov101_021D8254 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #6 - bl ov101_021D8254 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #7 - bl ov101_021D8254 - add sp, #4 - pop {r3, r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D15BC - - thumb_func_start ov101_021D1868 -ov101_021D1868: ; 0x021D1868 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D1868 - - thumb_func_start ov101_021D186C -ov101_021D186C: ; 0x021D186C - push {r4, lr} - add r4, r0, #0 - mov r0, #0x4f - mov r1, #0x80 - bl sub_020711EC - ldr r1, _021D1880 ; =0x0000044C - str r0, [r4, r1] - pop {r4, pc} - nop -_021D1880: .word 0x0000044C - thumb_func_end ov101_021D186C - - thumb_func_start ov101_021D1884 -ov101_021D1884: ; 0x021D1884 - ldr r1, _021D188C ; =0x0000044C - ldr r3, _021D1890 ; =sub_0207121C - ldr r0, [r0, r1] - bx r3 - ; .align 2, 0 -_021D188C: .word 0x0000044C -_021D1890: .word sub_0207121C - thumb_func_end ov101_021D1884 - - thumb_func_start ov101_021D1894 -ov101_021D1894: ; 0x021D1894 - ldr r2, _021D18B0 ; =0x00000424 - add r2, r0, r2 - ldr r0, [r2, #8] - cmp r0, r1 - beq _021D18AC - ldr r0, [r2, #0xc] - cmp r0, r1 - beq _021D18AC - str r1, [r2, #0xc] - mov r0, #1 - str r0, [r2, #0] - str r0, [r2, #4] -_021D18AC: - bx lr - nop -_021D18B0: .word 0x00000424 - thumb_func_end ov101_021D1894 - - thumb_func_start ov101_021D18B4 -ov101_021D18B4: ; 0x021D18B4 - ldr r1, _021D18BC ; =0x00000428 - ldr r0, [r0, r1] - bx lr - nop -_021D18BC: .word 0x00000428 - thumb_func_end ov101_021D18B4 - - thumb_func_start ov101_021D18C0 -ov101_021D18C0: ; 0x021D18C0 - push {r4, lr} - add r1, r0, #0 - ldr r0, _021D18DC ; =0x00000424 - mov r2, #0x90 - add r4, r1, r0 - mov r0, #0 - str r0, [r4, #8] - mov r0, #3 - str r0, [r4, #0xc] - ldr r0, _021D18E0 ; =ov101_021D18F4 - bl sub_0200D9E8 - str r0, [r4, #0x10] - pop {r4, pc} - ; .align 2, 0 -_021D18DC: .word 0x00000424 -_021D18E0: .word ov101_021D18F4 - thumb_func_end ov101_021D18C0 - - thumb_func_start ov101_021D18E4 -ov101_021D18E4: ; 0x021D18E4 - ldr r1, _021D18EC ; =0x00000434 - ldr r3, _021D18F0 ; =sub_0200DA58 - ldr r0, [r0, r1] - bx r3 - ; .align 2, 0 -_021D18EC: .word 0x00000434 -_021D18F0: .word sub_0200DA58 - thumb_func_end ov101_021D18E4 - - thumb_func_start ov101_021D18F4 -ov101_021D18F4: ; 0x021D18F4 - push {r4, lr} - ldr r0, _021D1978 ; =0x00000424 - add r4, r1, r0 - ldr r1, [r4, #0] - cmp r1, #0 - beq _021D1974 - cmp r1, #1 - beq _021D190A - cmp r1, #2 - beq _021D193E - pop {r4, pc} -_021D190A: - ldr r1, [r4, #8] - cmp r1, #0 - beq _021D191A - cmp r1, #1 - beq _021D1924 - cmp r1, #2 - beq _021D192E - b _021D1936 -_021D191A: - mov r0, #1 - add r1, r0, #0 - bl sub_020049F4 - b _021D1936 -_021D1924: - add r0, #0x7c - mov r1, #0 - bl sub_020055D0 - b _021D1936 -_021D192E: - add r0, #0x7d - mov r1, #0 - bl sub_020055D0 -_021D1936: - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - pop {r4, pc} -_021D193E: - ldr r1, [r4, #0xc] - cmp r1, #0 - beq _021D194E - cmp r1, #1 - beq _021D1958 - cmp r1, #2 - beq _021D1960 - b _021D1966 -_021D194E: - mov r0, #1 - mov r1, #0 - bl sub_020049F4 - b _021D1966 -_021D1958: - add r0, #0x7c - bl sub_02005474 - b _021D1966 -_021D1960: - add r0, #0x7d - bl sub_02005474 -_021D1966: - ldr r0, [r4, #0xc] - str r0, [r4, #8] - mov r0, #3 - str r0, [r4, #0xc] - mov r0, #0 - str r0, [r4, #4] - str r0, [r4, #0] -_021D1974: - pop {r4, pc} - nop -_021D1978: .word 0x00000424 - thumb_func_end ov101_021D18F4 - - thumb_func_start ov101_021D197C -ov101_021D197C: ; 0x021D197C - push {r4, lr} - add r4, r0, #0 - bl sub_0201DCAC - bl sub_0200A858 - ldr r0, _021D1994 ; =0x0000043C - ldr r0, [r4, r0] - bl sub_0201C2B8 - pop {r4, pc} - nop -_021D1994: .word 0x0000043C - thumb_func_end ov101_021D197C - - thumb_func_start ov101_021D1998 -ov101_021D1998: ; 0x021D1998 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r0, #0x4f - add r1, r5, #0 - bl sub_02018144 - add r4, r0, #0 - bne _021D19AC - bl GF_AssertFail -_021D19AC: - add r0, r4, #0 - mov r1, #0 - add r2, r5, #0 - bl memset - add r0, r4, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D1998 - - thumb_func_start ov101_021D19BC -ov101_021D19BC: ; 0x021D19BC - push {r4, lr} - add r4, r0, #0 - mov r0, #0x85 - mov r1, #0x4f - bl sub_02006C24 - ldr r1, _021D19D0 ; =0x00000438 - str r0, [r4, r1] - pop {r4, pc} - nop -_021D19D0: .word 0x00000438 - thumb_func_end ov101_021D19BC - - thumb_func_start ov101_021D19D4 -ov101_021D19D4: ; 0x021D19D4 - ldr r1, _021D19DC ; =0x00000438 - ldr r3, _021D19E0 ; =sub_02006CA8 - ldr r0, [r0, r1] - bx r3 - ; .align 2, 0 -_021D19DC: .word 0x00000438 -_021D19E0: .word sub_02006CA8 - thumb_func_end ov101_021D19D4 - - thumb_func_start ov101_021D19E4 -ov101_021D19E4: ; 0x021D19E4 - push {r4, r5, r6, lr} - add r4, r0, #0 - ldr r0, _021D1A24 ; =0x00000438 - add r6, r1, #0 - ldr r0, [r4, r0] - add r5, r2, #0 - bl sub_02006D84 - add r1, r0, #0 - cmp r5, #1 - bne _021D1A02 - mov r0, #0x4f - bl sub_02018144 - b _021D1A08 -_021D1A02: - mov r0, #0x4f - bl sub_02018184 -_021D1A08: - add r5, r0, #0 - cmp r5, #0 - bne _021D1A12 - bl GF_AssertFail -_021D1A12: - ldr r0, _021D1A24 ; =0x00000438 - add r1, r6, #0 - ldr r0, [r4, r0] - add r2, r5, #0 - bl sub_02006D28 - add r0, r5, #0 - pop {r4, r5, r6, pc} - nop -_021D1A24: .word 0x00000438 - thumb_func_end ov101_021D19E4 - - .rodata - - - .global Unk_ov101_021D8588 -Unk_ov101_021D8588: ; 0x021D8588 - .incbin "incbin/overlay101_rodata.bin", 0x0, 0x8 - 0x0 - - .global Unk_ov101_021D8590 -Unk_ov101_021D8590: ; 0x021D8590 - .incbin "incbin/overlay101_rodata.bin", 0x8, 0x18 - 0x8 - - .global Unk_ov101_021D85A0 -Unk_ov101_021D85A0: ; 0x021D85A0 - .incbin "incbin/overlay101_rodata.bin", 0x18, 0x28 - 0x18 - - .global Unk_ov101_021D85B0 -Unk_ov101_021D85B0: ; 0x021D85B0 - .incbin "incbin/overlay101_rodata.bin", 0x28, 0x44 - 0x28 - - .global Unk_ov101_021D85CC -Unk_ov101_021D85CC: ; 0x021D85CC - .incbin "incbin/overlay101_rodata.bin", 0x44, 0x60 - 0x44 - - .global Unk_ov101_021D85E8 -Unk_ov101_021D85E8: ; 0x021D85E8 - .incbin "incbin/overlay101_rodata.bin", 0x60, 0x7C - 0x60 - - .global Unk_ov101_021D8604 -Unk_ov101_021D8604: ; 0x021D8604 - .incbin "incbin/overlay101_rodata.bin", 0x7C, 0x98 - 0x7C - - .global Unk_ov101_021D8620 -Unk_ov101_021D8620: ; 0x021D8620 - .incbin "incbin/overlay101_rodata.bin", 0x98, 0x28 - diff --git a/asm/overlay101/ov101_021D1A28.inc b/asm/overlay101/ov101_021D1A28.inc deleted file mode 100644 index c92c85ed7f..0000000000 --- a/asm/overlay101/ov101_021D1A28.inc +++ /dev/null @@ -1,142 +0,0 @@ -.public sub_02005748 -.public sub_02005844 -.public sub_0200D9E8 -.public sub_0200DA58 -.public sub_02018184 -.public sub_020181C4 -.public sub_0201972C -.public sub_02019E2C -.public sub_0201C3C0 -.public sub_0201D2E8 -.public GF_AssertFail -.public sub_02071330 -.public sub_0207136C -.public sub_02071598 -.public sub_020715BC -.public NNS_G2dGetUnpackedPaletteData -.public _s32_div_f -.public _u32_div_f -.public ov101_021D148C -.public ov101_021D14E4 -.public ov101_021D1894 -.public ov101_021D19E4 -.public ov101_021D1A68 -.public ov101_021D2B8C -.public ov101_021D2BC0 -.public ov101_021D2BDC -.public ov101_021D2BF4 -.public ov101_021D2C04 -.public ov101_021D2C10 -.public ov101_021D2D88 -.public ov101_021D2DC0 -.public ov101_021D2DE0 -.public ov101_021D2E1C -.public ov101_021D2E58 -.public ov101_021D2E94 -.public ov101_021D2FAC -.public ov101_021D32EC -.public ov101_021D3394 -.public ov101_021D3738 -.public ov101_021D3780 -.public ov101_021D3830 -.public ov101_021D38E4 -.public ov101_021D38FC -.public ov101_021D394C -.public ov101_021D3AF0 -.public ov101_021D3B34 -.public ov101_021D3B50 -.public ov101_021D3C9C -.public ov101_021D3DD4 -.public ov101_021D3F0C -.public ov101_021D3F58 -.public ov101_021D3FA0 -.public ov101_021D3FE8 -.public ov101_021D4024 -.public ov101_021D405C -.public ov101_021D406C -.public ov101_021D4084 -.public ov101_021D40A8 -.public ov101_021D41EC -.public ov101_021D4210 -.public ov101_021D42D0 -.public ov101_021D4370 -.public ov101_021D4394 -.public ov101_021D44A0 -.public ov101_021D44C4 -.public ov101_021D44E8 -.public ov101_021D44FC -.public ov101_021D4550 -.public ov101_021D45B0 -.public ov101_021D45C4 -.public ov101_021D45E8 -.public ov101_021D45F8 -.public ov101_021D460C -.public ov101_021D4614 -.public ov101_021D4714 -.public ov101_021D4764 -.public ov101_021D4788 -.public ov101_021D4798 -.public ov101_021D47AC -.public ov101_021D47B4 -.public ov101_021D47F0 -.public ov101_021D4824 -.public ov101_021D4D38 -.public ov101_021D4EA4 -.public ov101_021D4EA8 -.public ov101_021D4EC0 -.public ov101_021D4F18 -.public ov101_021D4F40 -.public ov101_021D4F58 -.public ov101_021D4F78 -.public ov101_021D4FB8 -.public ov101_021D4FF8 -.public ov101_021D5010 -.public ov101_021D5028 -.public ov101_021D505C -.public ov101_021D5200 -.public ov101_021D5244 -.public ov101_021D5268 -.public ov101_021D53B0 -.public ov101_021D53D4 -.public ov101_021D53F8 -.public ov101_021D542C -.public ov101_021D548C -.public ov101_021D54EC -.public ov101_021D55A4 -.public ov101_021D55D4 -.public ov101_021D55F8 -.public ov101_021D5618 -.public ov101_021D5660 -.public ov101_021D5698 -.public ov101_021D56D0 -.public ov101_021D5708 -.public ov101_021D5740 -.public ov101_021D5778 -.public ov101_021D57EC -.public ov101_021D5814 -.public ov101_021D5848 -.public ov101_021D5858 -.public ov101_021D5880 -.public ov101_021D58C0 -.public ov101_021D58F4 -.public ov101_021D5938 -.public ov101_021D597C -.public ov101_021D5D58 -.public ov101_021D5D90 -.public ov101_021D5DA4 -.public ov101_021D5DC4 -.public ov101_021D6484 -.public ov101_021D6764 -.public ov101_021D679C -.public ov101_021D67B0 -.public ov101_021D6DF0 -.public ov101_021D6E1C -.public ov101_021D7228 -.public ov101_021D72D4 -.public ov101_021D73B4 -.public ov101_021D7460 -.public ov101_021D7550 -.public ov101_021D76B4 -.public ov101_021D77E4 -.public ov101_021D79BC -.public ov101_021D7B08 diff --git a/asm/overlay101/ov101_021D1A28.s b/asm/overlay101/ov101_021D1A28.s deleted file mode 100644 index 8537ac149a..0000000000 --- a/asm/overlay101/ov101_021D1A28.s +++ /dev/null @@ -1,8885 +0,0 @@ - .include "macros/function.inc" - .include "overlay101/ov101_021D1A28.inc" - - - - .text - - - thumb_func_start ov101_021D1A28 -ov101_021D1A28: ; 0x021D1A28 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D1A68 - add r0, r4, #0 - bl ov101_021D2B8C - add r0, r4, #0 - bl ov101_021D45C4 - add r0, r4, #0 - bl ov101_021D4764 - add r0, r4, #0 - bl ov101_021D4D38 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D1A28 - - thumb_func_start ov101_021D1A4C -ov101_021D1A4C: ; 0x021D1A4C - push {r4, lr} - add r4, r0, #0 - bl ov101_021D2BC0 - add r0, r4, #0 - bl ov101_021D45E8 - add r0, r4, #0 - bl ov101_021D4788 - add r0, r4, #0 - bl ov101_021D4EA4 - pop {r4, pc} - thumb_func_end ov101_021D1A4C - - thumb_func_start ov101_021D1A68 -ov101_021D1A68: ; 0x021D1A68 - push {r3, r4, r5, r6, r7, lr} - mov r7, #0x15 - add r5, r0, #0 - mov r4, #0 - lsl r6, r7, #0x11 -_021D1A72: - bl sub_0201D2E8 - add r1, r7, #0 - bl _s32_div_f - add r0, r5, #0 - add r0, #0xa8 - str r1, [r0, #0] - lsl r0, r1, #0x11 - sub r1, r6, r0 - add r0, r5, #0 - add r0, #0x90 - str r1, [r0, #0] - add r0, r5, #0 - add r0, #0x90 - mov r1, #0x2a - ldr r0, [r0, #0] - lsl r1, r1, #0x10 - bl _s32_div_f - add r0, r5, #0 - add r0, #0x90 - add r4, r4, #1 - add r5, r5, #4 - str r1, [r0, #0] - cmp r4, #3 - blt _021D1A72 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D1A68 - - thumb_func_start ov101_021D1AAC -ov101_021D1AAC: ; 0x021D1AAC - push {r3, r4, r5, lr} - ldr r4, _021D1ACC ; =0x021D8838 - add r5, r0, #0 -_021D1AB2: - ldr r1, [r5, #0] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r1, [r4, r1] - blx r1 - cmp r0, #1 - beq _021D1AB2 - cmp r0, #2 - bne _021D1AC8 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D1AC8: - mov r0, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D1ACC: .word 0x021D8838 - thumb_func_end ov101_021D1AAC - - thumb_func_start ov101_021D1AD0 -ov101_021D1AD0: ; 0x021D1AD0 - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - str r1, [r4, #0x64] - mov r3, #1 - add r2, r4, #0 - str r1, [r4, #0x68] - lsl r3, r3, #0x10 - add r2, #0x8c - str r3, [r2, #0] - str r1, [r4, #0x74] - str r1, [r4, #8] - mov r2, #1 - str r2, [r4, #0] - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D5938 - add r0, r4, #0 - bl ov101_021D4FF8 - add r0, r4, #0 - bl ov101_021D5200 - ldr r1, [r4, #0x60] - cmp r1, #0 - bne _021D1B1C - mov r0, #0x3c - str r0, [r4, #0] - mov r0, #0x3f - str r0, [r4, #4] - b _021D1B38 -_021D1B1C: - cmp r1, #3 - bge _021D1B2A - mov r0, #0x3b - str r0, [r4, #0] - mov r0, #0x3f - str r0, [r4, #4] - b _021D1B38 -_021D1B2A: - ldr r0, _021D1B3C ; =0x0000C350 - cmp r1, r0 - blt _021D1B38 - mov r0, #0x3d - str r0, [r4, #0] - mov r0, #1 - str r0, [r4, #4] -_021D1B38: - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 -_021D1B3C: .word 0x0000C350 - thumb_func_end ov101_021D1AD0 - - thumb_func_start ov101_021D1B40 -ov101_021D1B40: ; 0x021D1B40 - push {r4, lr} - add r4, r0, #0 - mov r0, #8 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D1B5C - add r0, r4, #0 - bl ov101_021D5244 - mov r0, #0x3f - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} -_021D1B5C: - mov r0, #1 - lsl r0, r0, #0xa - bl ov101_021D55F8 - cmp r0, #0 - beq _021D1B90 - ldr r0, [r4, #0x60] - sub r0, r0, #3 - str r0, [r4, #0x60] - ldr r0, _021D1B94 ; =0x0000045C - ldr r1, [r4, r0] - add r1, r1, #3 - str r1, [r4, r0] - mov r0, #2 - str r0, [r4, #0] - ldr r0, _021D1B98 ; =0x000005ED - bl sub_02005748 - add r0, r4, #0 - bl ov101_021D5244 - add r0, r4, #0 - bl ov101_021D5010 - mov r0, #0 - pop {r4, pc} -_021D1B90: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_021D1B94: .word 0x0000045C -_021D1B98: .word 0x000005ED - thumb_func_end ov101_021D1B40 - - thumb_func_start ov101_021D1B9C -ov101_021D1B9C: ; 0x021D1B9C - push {r4, lr} - add r4, r0, #0 - mov r0, #8 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D1BB8 - ldr r0, [r4, #0x60] - add r0, r0, #3 - str r0, [r4, #0x60] - mov r0, #0x3f - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} -_021D1BB8: - mov r0, #0x12 - lsl r0, r0, #6 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D1BCC - mov r0, #3 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D1BCC: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D1B9C - - thumb_func_start ov101_021D1BD0 -ov101_021D1BD0: ; 0x021D1BD0 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D40A8 - mov r0, #0x46 - lsl r0, r0, #4 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - add r1, r0, #4 - ldr r1, [r4, r1] - add r0, r0, #4 - add r1, r1, #1 - str r1, [r4, r0] - mov r0, #0 - str r0, [r4, #0x70] - ldr r1, [r4, #0x74] - mov r0, #0x33 - tst r0, r1 - beq _021D1BFC - mov r0, #1 - str r0, [r4, #0x70] -_021D1BFC: - mov r0, #0 - str r0, [r4, #0x30] - ldr r0, [r4, #0x74] - cmp r0, #0 - beq _021D1C38 - add r0, r4, #0 - bl ov101_021D41EC - cmp r0, #0 - bne _021D1C18 - mov r0, #0x55 - mov r1, #4 - lsl r0, r0, #2 - b _021D1C2C -_021D1C18: - ldr r0, [r4, #0x74] - bl ov101_021D5814 - mov r1, #0x55 - lsl r1, r1, #2 - str r0, [r4, r1] - mov r0, #0x49 - lsl r0, r0, #4 - ldr r1, [r4, r0] - add r1, r1, #1 -_021D1C2C: - str r1, [r4, r0] - mov r1, #1 - add r0, r4, #0 - str r1, [r4, #0x30] - bl ov101_021D4798 -_021D1C38: - add r0, r4, #0 - mov r1, #0 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D5938 - add r0, r4, #0 - bl ov101_021D5010 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D2BDC - add r0, r4, #0 - mov r1, #1 - bl ov101_021D2BDC - add r0, r4, #0 - mov r1, #2 - bl ov101_021D2BDC - add r0, r4, #0 - bl ov101_021D5848 - mov r1, #1 - add r0, r4, #0 - str r1, [r4, #0x7c] - add r0, #0x80 - str r1, [r0, #0] - add r0, r4, #0 - add r0, #0x84 - str r1, [r0, #0] - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #4 - str r0, [r4, #0] - ldr r0, _021D1C98 ; =0x000005EE - bl sub_02005748 - mov r0, #1 - pop {r4, pc} - nop -_021D1C98: .word 0x000005EE - thumb_func_end ov101_021D1BD0 - - thumb_func_start ov101_021D1C9C -ov101_021D1C9C: ; 0x021D1C9C - mov r1, #1 - ldr r2, [r0, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - lsl r1, r1, #3 - str r2, [r0, #0x6c] - cmp r2, r1 - blt _021D1CB8 - mov r1, #0 - str r1, [r0, #0x6c] - mov r1, #5 - str r1, [r0, #0] - mov r0, #1 - bx lr -_021D1CB8: - mov r0, #0 - bx lr - thumb_func_end ov101_021D1C9C - - thumb_func_start ov101_021D1CBC -ov101_021D1CBC: ; 0x021D1CBC - push {r4, lr} - ldr r1, _021D1DAC ; =0x021BF67C - add r4, r0, #0 - ldr r2, [r1, #0x48] - ldr r1, [r4, #0x7c] - cmp r1, #1 - bne _021D1D02 - mov r1, #2 - lsl r1, r1, #0xa - add r3, r2, #0 - tst r3, r1 - beq _021D1D02 - mov r2, #2 - str r2, [r4, #0x7c] - bl ov101_021D5858 - add r0, r4, #0 - bl ov101_021D5880 - cmp r0, #0 - bne _021D1CEA - mov r0, #0 - str r0, [r4, #0x70] -_021D1CEA: - add r0, r4, #0 - mov r1, #0 - bl ov101_021D58F4 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D2BF4 - ldr r0, _021D1DB0 ; =0x00000626 - bl sub_02005748 - b _021D1D8A -_021D1D02: - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #1 - bne _021D1D46 - mov r1, #2 - add r0, r2, #0 - tst r0, r1 - beq _021D1D46 - add r0, r4, #0 - add r0, #0x80 - str r1, [r0, #0] - add r0, r4, #0 - bl ov101_021D5858 - add r0, r4, #0 - bl ov101_021D5880 - cmp r0, #0 - bne _021D1D2E - mov r0, #0 - str r0, [r4, #0x70] -_021D1D2E: - add r0, r4, #0 - mov r1, #1 - bl ov101_021D58F4 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D2BF4 - ldr r0, _021D1DB0 ; =0x00000626 - bl sub_02005748 - b _021D1D8A -_021D1D46: - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0, #0] - cmp r0, #1 - bne _021D1D8A - mov r1, #1 - add r0, r2, #0 - tst r0, r1 - beq _021D1D8A - add r0, r4, #0 - mov r2, #2 - add r0, #0x84 - str r2, [r0, #0] - add r0, r4, #0 - bl ov101_021D5858 - add r0, r4, #0 - bl ov101_021D5880 - cmp r0, #0 - bne _021D1D74 - mov r0, #0 - str r0, [r4, #0x70] -_021D1D74: - add r0, r4, #0 - mov r1, #2 - bl ov101_021D58F4 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D2BF4 - ldr r0, _021D1DB0 ; =0x00000626 - bl sub_02005748 -_021D1D8A: - ldr r0, [r4, #0x7c] - cmp r0, #2 - bne _021D1DA8 - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #2 - bne _021D1DA8 - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0, #0] - cmp r0, #2 - bne _021D1DA8 - mov r0, #6 - str r0, [r4, #0] -_021D1DA8: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_021D1DAC: .word 0x021BF67C -_021D1DB0: .word 0x00000626 - thumb_func_end ov101_021D1CBC - - thumb_func_start ov101_021D1DB4 -ov101_021D1DB4: ; 0x021D1DB4 - push {r4, lr} - mov r1, #0 - add r4, r0, #0 - bl ov101_021D2C04 - cmp r0, #1 - beq _021D1DDA - add r0, r4, #0 - mov r1, #1 - bl ov101_021D2C04 - cmp r0, #1 - beq _021D1DDA - add r0, r4, #0 - mov r1, #2 - bl ov101_021D2C04 - cmp r0, #1 - bne _021D1DDE -_021D1DDA: - mov r0, #0 - pop {r4, pc} -_021D1DDE: - add r0, r4, #0 - bl ov101_021D4FF8 - mov r0, #7 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D1DB4 - - thumb_func_start ov101_021D1DEC -ov101_021D1DEC: ; 0x021D1DEC - push {r4, lr} - add r4, r0, #0 - add r2, r4, #0 - ldr r1, [r4, #0x74] - add r2, #0x48 - bl ov101_021D5778 - str r0, [r4, #0x44] - cmp r0, #6 - bne _021D1E24 - ldr r1, [r4, #0x74] - mov r0, #0xaa - tst r0, r1 - beq _021D1E10 - mov r0, #0x10 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D1E10: - cmp r1, #0 - beq _021D1E1C - mov r0, #0xa - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D1E1C: - mov r0, #8 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D1E24: - ldr r2, [r4, #0x74] - mov r1, #0xaa - tst r1, r2 - beq _021D1E3E - mov r0, #2 - tst r0, r2 - beq _021D1E36 - mov r0, #0x15 - b _021D1E38 -_021D1E36: - mov r0, #0x13 -_021D1E38: - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D1E3E: - cmp r0, #2 - bne _021D1E4A - mov r0, #0xe - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D1E4A: - mov r0, #0xc - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D1DEC - - thumb_func_start ov101_021D1E54 -ov101_021D1E54: ; 0x021D1E54 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D4FF8 - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #9 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D1E54 - - thumb_func_start ov101_021D1E68 -ov101_021D1E68: ; 0x021D1E68 - mov r1, #1 - ldr r2, [r0, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - lsl r1, r1, #3 - str r2, [r0, #0x6c] - cmp r2, r1 - blt _021D1E7E - mov r1, #0 - str r1, [r0, #0x6c] - str r1, [r0, #0] -_021D1E7E: - mov r0, #0 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D1E68 - - thumb_func_start ov101_021D1E84 -ov101_021D1E84: ; 0x021D1E84 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D4FF8 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D4798 - mov r0, #0xb - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D1E84 - - thumb_func_start ov101_021D1E9C -ov101_021D1E9C: ; 0x021D1E9C - push {r4, lr} - add r4, r0, #0 - bl ov101_021D47AC - cmp r0, #1 - bne _021D1EB8 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D4798 - mov r0, #0 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D1EB8: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D1E9C - - thumb_func_start ov101_021D1EBC -ov101_021D1EBC: ; 0x021D1EBC - push {r4, lr} - add r4, r0, #0 - bl ov101_021D597C - ldr r1, _021D1EE8 ; =0x00000458 - str r0, [r4, #0x64] - ldr r2, [r4, r1] - add r0, r2, r0 - str r0, [r4, r1] - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0xd - str r0, [r4, #0] - add r0, r4, #0 - bl ov101_021D45F8 - add r0, r4, #0 - mov r1, #0xb - bl ov101_021D4798 - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_021D1EE8: .word 0x00000458 - thumb_func_end ov101_021D1EBC - - thumb_func_start ov101_021D1EEC -ov101_021D1EEC: ; 0x021D1EEC - push {r4, lr} - add r4, r0, #0 - mov r1, #1 - ldr r2, [r4, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - mov r1, #0x1e - lsl r1, r1, #0xc - str r2, [r4, #0x6c] - cmp r2, r1 - bne _021D1F0A - mov r1, #2 - bl ov101_021D4798 - b _021D1F30 -_021D1F0A: - ble _021D1F30 - bl ov101_021D460C - cmp r0, #1 - bne _021D1F30 - add r0, r4, #0 - bl ov101_021D47AC - cmp r0, #1 - bne _021D1F30 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D4798 - mov r0, #0 - str r0, [r4, #0x6c] - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D1F30: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D1EEC - - thumb_func_start ov101_021D1F34 -ov101_021D1F34: ; 0x021D1F34 - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - str r1, [r4, #0x64] - str r1, [r4, #0x6c] - mov r1, #0xf - str r1, [r4, #0] - bl ov101_021D45F8 - add r0, r4, #0 - mov r1, #0xb - bl ov101_021D4798 - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D1F34 - - thumb_func_start ov101_021D1F54 -ov101_021D1F54: ; 0x021D1F54 - push {r4, lr} - add r4, r0, #0 - mov r1, #1 - ldr r2, [r4, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - mov r1, #0xf - lsl r1, r1, #0xc - str r2, [r4, #0x6c] - cmp r2, r1 - bne _021D1F72 - mov r1, #2 - bl ov101_021D4798 - b _021D1F9A -_021D1F72: - ble _021D1F9A - bl ov101_021D460C - cmp r0, #1 - bne _021D1F9A - add r0, r4, #0 - bl ov101_021D47AC - cmp r0, #1 - bne _021D1F9A - add r0, r4, #0 - mov r1, #0 - bl ov101_021D4798 - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #3 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D1F9A: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D1F54 - - thumb_func_start ov101_021D1FA0 -ov101_021D1FA0: ; 0x021D1FA0 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D4FF8 - add r0, r4, #0 - bl ov101_021D4210 - add r0, r4, #0 - bl ov101_021D42D0 - add r0, r4, #0 - mov r1, #0xb - bl ov101_021D4798 - mov r0, #0 - str r0, [r4, #0x6c] - mov r1, #0x11 - str r1, [r4, #0] - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D1FA0 - - thumb_func_start ov101_021D1FC8 -ov101_021D1FC8: ; 0x021D1FC8 - push {r4, lr} - add r4, r0, #0 - mov r1, #1 - ldr r2, [r4, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - lsl r1, r1, #3 - str r2, [r4, #0x6c] - cmp r2, r1 - blt _021D1FEE - mov r1, #3 - bl ov101_021D4798 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D1894 - mov r0, #0x12 - str r0, [r4, #0] -_021D1FEE: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D1FC8 - - thumb_func_start ov101_021D1FF4 -ov101_021D1FF4: ; 0x021D1FF4 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D47AC - cmp r0, #1 - bne _021D2008 - mov r0, #0x17 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D2008: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D1FF4 - - thumb_func_start ov101_021D200C -ov101_021D200C: ; 0x021D200C - push {r4, lr} - add r4, r0, #0 - bl ov101_021D597C - str r0, [r4, #0x64] - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0x14 - str r0, [r4, #0] - add r0, r4, #0 - bl ov101_021D45F8 - add r0, r4, #0 - bl ov101_021D4210 - add r0, r4, #0 - bl ov101_021D42D0 - add r0, r4, #0 - mov r1, #0xb - bl ov101_021D4798 - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D200C - - thumb_func_start ov101_021D203C -ov101_021D203C: ; 0x021D203C - push {r4, lr} - add r4, r0, #0 - mov r1, #1 - ldr r2, [r4, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - mov r1, #0x1e - lsl r1, r1, #0xc - str r2, [r4, #0x6c] - cmp r2, r1 - bne _021D2062 - mov r1, #1 - bl ov101_021D1894 - add r0, r4, #0 - mov r1, #3 - bl ov101_021D4798 - b _021D2082 -_021D2062: - blt _021D2082 - bl ov101_021D460C - cmp r0, #1 - bne _021D2082 - add r0, r4, #0 - bl ov101_021D47AC - cmp r0, #1 - bne _021D2082 - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0x17 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D2082: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D203C - - thumb_func_start ov101_021D2088 -ov101_021D2088: ; 0x021D2088 - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - str r1, [r4, #0x6c] - mov r1, #0x16 - str r1, [r4, #0] - bl ov101_021D45F8 - add r0, r4, #0 - mov r1, #0xb - bl ov101_021D4798 - add r0, r4, #0 - bl ov101_021D4210 - add r0, r4, #0 - bl ov101_021D42D0 - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D2088 - - thumb_func_start ov101_021D20B0 -ov101_021D20B0: ; 0x021D20B0 - push {r4, lr} - add r4, r0, #0 - mov r1, #1 - ldr r2, [r4, #0x6c] - lsl r1, r1, #0xc - add r3, r2, r1 - lsl r2, r1, #3 - str r3, [r4, #0x6c] - cmp r3, r2 - bne _021D20D4 - mov r1, #3 - bl ov101_021D4798 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D1894 - b _021D20F8 -_021D20D4: - lsl r1, r1, #3 - cmp r3, r1 - blt _021D20F8 - bl ov101_021D460C - cmp r0, #1 - bne _021D20F8 - add r0, r4, #0 - bl ov101_021D47AC - cmp r0, #1 - bne _021D20F8 - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0x18 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D20F8: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D20B0 - - thumb_func_start ov101_021D20FC -ov101_021D20FC: ; 0x021D20FC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x50] - cmp r0, #6 - blt _021D210A - bl GF_AssertFail -_021D210A: - mov r0, #0x19 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D20FC - - thumb_func_start ov101_021D2114 -ov101_021D2114: ; 0x021D2114 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x50] - cmp r0, #6 - blt _021D2122 - bl GF_AssertFail -_021D2122: - mov r0, #0x1c - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2114 - - thumb_func_start ov101_021D212C -ov101_021D212C: ; 0x021D212C - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - str r1, [r4, #0x64] - str r1, [r4, #0x68] - mov r2, #0x1a - str r2, [r4, #0] - str r1, [r4, #0x74] - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D5938 - add r0, r4, #0 - bl ov101_021D4FF8 - add r0, r4, #0 - bl ov101_021D5200 - add r0, r4, #0 - mov r1, #7 - bl ov101_021D4798 - ldr r1, [r4, #0x60] - cmp r1, #0 - bne _021D2174 - mov r0, #0x3c - str r0, [r4, #0] - mov r0, #0x3f - str r0, [r4, #4] - b _021D2190 -_021D2174: - cmp r1, #3 - bge _021D2182 - mov r0, #0x3b - str r0, [r4, #0] - mov r0, #0x3f - str r0, [r4, #4] - b _021D2190 -_021D2182: - ldr r0, _021D2194 ; =0x0000C350 - cmp r1, r0 - blt _021D2190 - mov r0, #0x3d - str r0, [r4, #0] - mov r0, #0x1a - str r0, [r4, #4] -_021D2190: - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 -_021D2194: .word 0x0000C350 - thumb_func_end ov101_021D212C - - thumb_func_start ov101_021D2198 -ov101_021D2198: ; 0x021D2198 - push {r4, lr} - add r4, r0, #0 - mov r0, #8 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D21B4 - mov r0, #0x3f - str r0, [r4, #0] - add r0, r4, #0 - bl ov101_021D5244 - mov r0, #0 - pop {r4, pc} -_021D21B4: - mov r0, #1 - lsl r0, r0, #0xa - bl ov101_021D55F8 - cmp r0, #0 - beq _021D21E8 - ldr r0, [r4, #0x60] - sub r0, r0, #3 - str r0, [r4, #0x60] - ldr r0, _021D21EC ; =0x0000045C - ldr r1, [r4, r0] - add r1, r1, #3 - str r1, [r4, r0] - mov r0, #0x1b - str r0, [r4, #0] - ldr r0, _021D21F0 ; =0x000005ED - bl sub_02005748 - add r0, r4, #0 - bl ov101_021D5244 - add r0, r4, #0 - bl ov101_021D5010 - mov r0, #0 - pop {r4, pc} -_021D21E8: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_021D21EC: .word 0x0000045C -_021D21F0: .word 0x000005ED - thumb_func_end ov101_021D2198 - - thumb_func_start ov101_021D21F4 -ov101_021D21F4: ; 0x021D21F4 - push {r4, lr} - add r4, r0, #0 - mov r0, #8 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D2210 - ldr r0, [r4, #0x60] - add r0, r0, #3 - str r0, [r4, #0x60] - mov r0, #0x3f - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} -_021D2210: - mov r0, #0x12 - lsl r0, r0, #6 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D2224 - mov r0, #0x1c - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D2224: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D21F4 - - thumb_func_start ov101_021D2228 -ov101_021D2228: ; 0x021D2228 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D4394 - mov r1, #0x46 - lsl r1, r1, #4 - ldr r0, [r4, r1] - add r0, r0, #1 - str r0, [r4, r1] - add r0, r1, #0 - add r0, #8 - ldr r0, [r4, r0] - add r1, #8 - add r0, r0, #1 - str r0, [r4, r1] - mov r0, #0 - str r0, [r4, #0x70] - ldr r1, [r4, #0x74] - mov r0, #0x33 - tst r0, r1 - beq _021D2256 - mov r0, #1 - str r0, [r4, #0x70] -_021D2256: - mov r0, #0 - str r0, [r4, #0x30] - ldr r0, [r4, #0x74] - cmp r0, #0 - beq _021D2264 - mov r0, #1 - str r0, [r4, #0x30] -_021D2264: - add r0, r4, #0 - mov r1, #0 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D5938 - add r0, r4, #0 - bl ov101_021D5010 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D2BDC - add r0, r4, #0 - mov r1, #1 - bl ov101_021D2BDC - add r0, r4, #0 - mov r1, #2 - bl ov101_021D2BDC - add r0, r4, #0 - bl ov101_021D5848 - add r0, r4, #0 - mov r1, #9 - bl ov101_021D4798 - mov r1, #1 - add r0, r4, #0 - str r1, [r4, #0x7c] - add r0, #0x80 - str r1, [r0, #0] - add r0, r4, #0 - add r0, #0x84 - str r1, [r0, #0] - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0x1d - str r0, [r4, #0] - ldr r0, _021D22CC ; =0x000005EE - bl sub_02005748 - mov r0, #1 - pop {r4, pc} - nop -_021D22CC: .word 0x000005EE - thumb_func_end ov101_021D2228 - - thumb_func_start ov101_021D22D0 -ov101_021D22D0: ; 0x021D22D0 - mov r1, #1 - ldr r2, [r0, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - lsl r1, r1, #3 - str r2, [r0, #0x6c] - cmp r2, r1 - blt _021D22EC - mov r1, #0 - str r1, [r0, #0x6c] - mov r1, #0x1e - str r1, [r0, #0] - mov r0, #1 - bx lr -_021D22EC: - mov r0, #0 - bx lr - thumb_func_end ov101_021D22D0 - - thumb_func_start ov101_021D22F0 -ov101_021D22F0: ; 0x021D22F0 - push {r4, lr} - ldr r1, _021D23E0 ; =0x021BF67C - add r4, r0, #0 - ldr r2, [r1, #0x48] - ldr r1, [r4, #0x7c] - cmp r1, #1 - bne _021D2336 - mov r1, #2 - lsl r1, r1, #0xa - add r3, r2, #0 - tst r3, r1 - beq _021D2336 - mov r2, #2 - str r2, [r4, #0x7c] - bl ov101_021D5858 - add r0, r4, #0 - bl ov101_021D5880 - cmp r0, #0 - bne _021D231E - mov r0, #0 - str r0, [r4, #0x70] -_021D231E: - add r0, r4, #0 - mov r1, #0 - bl ov101_021D58F4 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D2BF4 - ldr r0, _021D23E4 ; =0x00000626 - bl sub_02005748 - b _021D23BE -_021D2336: - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #1 - bne _021D237A - mov r1, #2 - add r0, r2, #0 - tst r0, r1 - beq _021D237A - add r0, r4, #0 - add r0, #0x80 - str r1, [r0, #0] - add r0, r4, #0 - bl ov101_021D5858 - add r0, r4, #0 - bl ov101_021D5880 - cmp r0, #0 - bne _021D2362 - mov r0, #0 - str r0, [r4, #0x70] -_021D2362: - add r0, r4, #0 - mov r1, #1 - bl ov101_021D58F4 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D2BF4 - ldr r0, _021D23E4 ; =0x00000626 - bl sub_02005748 - b _021D23BE -_021D237A: - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0, #0] - cmp r0, #1 - bne _021D23BE - mov r1, #1 - add r0, r2, #0 - tst r0, r1 - beq _021D23BE - add r0, r4, #0 - mov r2, #2 - add r0, #0x84 - str r2, [r0, #0] - add r0, r4, #0 - bl ov101_021D5858 - add r0, r4, #0 - bl ov101_021D5880 - cmp r0, #0 - bne _021D23A8 - mov r0, #0 - str r0, [r4, #0x70] -_021D23A8: - add r0, r4, #0 - mov r1, #2 - bl ov101_021D58F4 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D2BF4 - ldr r0, _021D23E4 ; =0x00000626 - bl sub_02005748 -_021D23BE: - ldr r0, [r4, #0x7c] - cmp r0, #2 - bne _021D23DC - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #2 - bne _021D23DC - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0, #0] - cmp r0, #2 - bne _021D23DC - mov r0, #0x1f - str r0, [r4, #0] -_021D23DC: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_021D23E0: .word 0x021BF67C -_021D23E4: .word 0x00000626 - thumb_func_end ov101_021D22F0 - - thumb_func_start ov101_021D23E8 -ov101_021D23E8: ; 0x021D23E8 - push {r4, lr} - mov r1, #0 - add r4, r0, #0 - bl ov101_021D2C04 - cmp r0, #1 - beq _021D240E - add r0, r4, #0 - mov r1, #1 - bl ov101_021D2C04 - cmp r0, #1 - beq _021D240E - add r0, r4, #0 - mov r1, #2 - bl ov101_021D2C04 - cmp r0, #1 - bne _021D2412 -_021D240E: - mov r0, #0 - pop {r4, pc} -_021D2412: - add r0, r4, #0 - bl ov101_021D4FF8 - mov r0, #0x20 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D23E8 - - thumb_func_start ov101_021D2420 -ov101_021D2420: ; 0x021D2420 - push {r4, lr} - add r4, r0, #0 - add r2, r4, #0 - ldr r1, [r4, #0x74] - add r2, #0x48 - bl ov101_021D5778 - str r0, [r4, #0x44] - cmp r0, #6 - bne _021D243C - mov r0, #0x21 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D243C: - mov r1, #3 - ldr r2, [r4, #0x74] - lsl r1, r1, #8 - tst r1, r2 - beq _021D244E - mov r0, #0x27 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D244E: - cmp r0, #2 - bne _021D245A - mov r0, #0x25 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D245A: - mov r0, #0x23 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2420 - - thumb_func_start ov101_021D2464 -ov101_021D2464: ; 0x021D2464 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D4FF8 - add r0, r4, #0 - mov r1, #7 - bl ov101_021D4798 - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0x22 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D2464 - - thumb_func_start ov101_021D2480 -ov101_021D2480: ; 0x021D2480 - mov r1, #1 - ldr r2, [r0, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - lsl r1, r1, #3 - str r2, [r0, #0x6c] - cmp r2, r1 - blt _021D249C - mov r1, #0 - str r1, [r0, #0x6c] - mov r1, #0x19 - str r1, [r0, #0] - mov r0, #1 - bx lr -_021D249C: - mov r0, #0 - bx lr - thumb_func_end ov101_021D2480 - - thumb_func_start ov101_021D24A0 -ov101_021D24A0: ; 0x021D24A0 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D597C - ldr r1, _021D24CC ; =0x00000458 - str r0, [r4, #0x64] - ldr r2, [r4, r1] - add r0, r2, r0 - str r0, [r4, r1] - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0x24 - str r0, [r4, #0] - add r0, r4, #0 - bl ov101_021D45F8 - add r0, r4, #0 - mov r1, #0xa - bl ov101_021D4798 - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_021D24CC: .word 0x00000458 - thumb_func_end ov101_021D24A0 - - thumb_func_start ov101_021D24D0 -ov101_021D24D0: ; 0x021D24D0 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D460C - cmp r0, #1 - bne _021D24EC - add r0, r4, #0 - mov r1, #7 - bl ov101_021D4798 - mov r0, #0x19 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D24EC: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D24D0 - - thumb_func_start ov101_021D24F0 -ov101_021D24F0: ; 0x021D24F0 - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - str r1, [r4, #0x64] - str r1, [r4, #0x6c] - mov r1, #0x26 - str r1, [r4, #0] - bl ov101_021D45F8 - add r0, r4, #0 - mov r1, #0xa - bl ov101_021D4798 - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D24F0 - - thumb_func_start ov101_021D2510 -ov101_021D2510: ; 0x021D2510 - push {r4, lr} - add r4, r0, #0 - mov r1, #1 - ldr r2, [r4, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - mov r1, #0xf - lsl r1, r1, #0xc - str r2, [r4, #0x6c] - cmp r2, r1 - ble _021D2548 - bl ov101_021D460C - cmp r0, #1 - bne _021D2548 - add r0, r4, #0 - mov r1, #7 - bl ov101_021D4798 - add r0, r4, #0 - bl ov101_021D4FF8 - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0x1c - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D2548: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D2510 - - thumb_func_start ov101_021D254C -ov101_021D254C: ; 0x021D254C - push {r4, lr} - add r4, r0, #0 - bl ov101_021D597C - ldr r1, _021D2590 ; =0x00000458 - str r0, [r4, #0x64] - ldr r2, [r4, r1] - add r0, r2, r0 - str r0, [r4, r1] - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0x28 - str r0, [r4, #0] - add r0, r4, #0 - bl ov101_021D45F8 - add r0, r4, #0 - mov r1, #0xa - bl ov101_021D4798 - add r0, r4, #0 - bl ov101_021D53B0 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D1894 - add r0, r4, #0 - bl ov101_021D7B08 - ldr r1, _021D2594 ; =0x00000454 - str r0, [r4, r1] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_021D2590: .word 0x00000458 -_021D2594: .word 0x00000454 - thumb_func_end ov101_021D254C - - thumb_func_start ov101_021D2598 -ov101_021D2598: ; 0x021D2598 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D460C - cmp r0, #1 - bne _021D25BC - ldr r0, _021D25C0 ; =0x00000454 - ldr r0, [r4, r0] - bl sub_0207136C - add r0, r4, #0 - mov r1, #7 - bl ov101_021D4798 - mov r0, #0x29 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D25BC: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_021D25C0: .word 0x00000454 - thumb_func_end ov101_021D2598 - - thumb_func_start ov101_021D25C4 -ov101_021D25C4: ; 0x021D25C4 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D47B4 - mov r0, #0 - str r0, [r4, #0x1c] - str r0, [r4, #0x14] - mov r0, #1 - str r0, [r4, #8] - mov r1, #0x2a - str r1, [r4, #0] - pop {r4, pc} - thumb_func_end ov101_021D25C4 - - thumb_func_start ov101_021D25DC -ov101_021D25DC: ; 0x021D25DC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #0x1c] - add r1, r0, #1 - ldr r0, _021D2624 ; =0x000003E7 - str r1, [r4, #0x1c] - cmp r1, r0 - bls _021D25F4 - str r0, [r4, #0x1c] -_021D25F4: - ldr r1, [r4, #0x1c] - add r0, r4, #0 - bl ov101_021D79BC - mov r0, #0x10 - str r0, [r4, #0x10] - mov r0, #1 - str r0, [r4, #8] - mov r0, #0 - str r0, [r4, #0x24] - str r0, [r4, #0x28] - str r0, [r4, #0x2c] - add r0, r4, #0 - bl ov101_021D44E8 - cmp r0, #0 - bne _021D261A - mov r0, #1 - str r0, [r4, #0x2c] -_021D261A: - mov r0, #0x2b - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - nop -_021D2624: .word 0x000003E7 - thumb_func_end ov101_021D25DC - - thumb_func_start ov101_021D2628 -ov101_021D2628: ; 0x021D2628 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x10] - sub r0, r0, #1 - str r0, [r4, #0x10] - cmp r0, #1 - bge _021D263A - bl GF_AssertFail -_021D263A: - add r0, r4, #0 - mov r1, #0 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D5938 - add r0, r4, #0 - bl ov101_021D4FF8 - add r0, r4, #0 - bl ov101_021D5200 - add r0, r4, #0 - mov r1, #7 - bl ov101_021D4798 - mov r2, #0x2c - str r2, [r4, #0] - ldr r1, [r4, #0x60] - cmp r1, #0 - bne _021D267A - mov r0, #0x3c - str r0, [r4, #0] - mov r0, #0x3f - str r0, [r4, #4] - b _021D2694 -_021D267A: - cmp r1, #1 - bge _021D2688 - mov r0, #0x3c - str r0, [r4, #0] - mov r0, #0x3f - str r0, [r4, #4] - b _021D2694 -_021D2688: - ldr r0, _021D2698 ; =0x0000C350 - cmp r1, r0 - blt _021D2694 - mov r0, #0x3d - str r0, [r4, #0] - str r2, [r4, #4] -_021D2694: - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 -_021D2698: .word 0x0000C350 - thumb_func_end ov101_021D2628 - - thumb_func_start ov101_021D269C -ov101_021D269C: ; 0x021D269C - push {r4, lr} - add r4, r0, #0 - mov r0, #8 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D26B2 - mov r0, #0x3f - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} -_021D26B2: - mov r0, #1 - lsl r0, r0, #0xa - bl ov101_021D55F8 - cmp r0, #0 - beq _021D26F8 - ldr r0, [r4, #0x60] - sub r0, r0, #1 - str r0, [r4, #0x60] - ldr r0, [r4, #0x14] - sub r0, r0, #1 - str r0, [r4, #0x14] - ldr r0, _021D26FC ; =0x0000045C - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - ldr r0, [r4, #0x14] - cmp r0, #0 - bge _021D26DC - mov r0, #0 - str r0, [r4, #0x14] -_021D26DC: - mov r0, #0x2d - str r0, [r4, #0] - ldr r0, _021D2700 ; =0x000005ED - bl sub_02005748 - add r0, r4, #0 - bl ov101_021D5244 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D4FB8 - mov r0, #0 - pop {r4, pc} -_021D26F8: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 -_021D26FC: .word 0x0000045C -_021D2700: .word 0x000005ED - thumb_func_end ov101_021D269C - - thumb_func_start ov101_021D2704 -ov101_021D2704: ; 0x021D2704 - push {r4, lr} - add r4, r0, #0 - mov r0, #8 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D2720 - ldr r0, [r4, #0x60] - add r0, r0, #1 - str r0, [r4, #0x60] - mov r0, #0x3f - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} -_021D2720: - mov r0, #0x12 - lsl r0, r0, #6 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D2734 - mov r0, #0x2e - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D2734: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D2704 - - thumb_func_start ov101_021D2738 -ov101_021D2738: ; 0x021D2738 - push {r4, lr} - mov r2, #0x46 - add r4, r0, #0 - lsl r2, r2, #4 - ldr r1, [r4, r2] - add r1, r1, #1 - str r1, [r4, r2] - add r1, r2, #0 - add r1, #0xc - ldr r1, [r4, r1] - add r2, #0xc - add r1, r1, #1 - str r1, [r4, r2] - mov r1, #1 - str r1, [r4, #0x74] - str r1, [r4, #0x30] - str r1, [r4, #0x70] - mov r1, #0 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D5938 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D4FB8 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D2BDC - add r0, r4, #0 - mov r1, #1 - bl ov101_021D2BDC - add r0, r4, #0 - mov r1, #2 - bl ov101_021D2BDC - add r0, r4, #0 - bl ov101_021D5848 - add r0, r4, #0 - bl ov101_021D45B0 - mov r1, #1 - add r0, r4, #0 - str r1, [r4, #0x7c] - add r0, #0x80 - str r1, [r0, #0] - add r0, r4, #0 - add r0, #0x84 - str r1, [r0, #0] - mov r0, #0 - str r0, [r4, #0x6c] - mov r0, #0x2f - str r0, [r4, #0] - ldr r0, _021D2820 ; =0x000005EE - bl sub_02005748 - ldr r0, [r4, #0x24] - cmp r0, #0 - bne _021D27EC - ldr r0, [r4, #0x28] - cmp r0, #0 - bne _021D27EC - add r0, r4, #0 - bl ov101_021D44C4 - cmp r0, #1 - bne _021D27DE - mov r0, #1 - str r0, [r4, #0x28] - mov r0, #0x13 - lsl r0, r0, #6 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] -_021D27DE: - ldr r0, [r4, #0x28] - cmp r0, #1 - bne _021D27EC - add r0, r4, #0 - mov r1, #1 - bl ov101_021D53F8 -_021D27EC: - ldr r0, [r4, #0x24] - cmp r0, #0 - bne _021D281C - ldr r0, [r4, #0x28] - cmp r0, #0 - bne _021D281C - add r0, r4, #0 - bl ov101_021D44A0 - cmp r0, #1 - bne _021D280E - mov r0, #1 - str r0, [r4, #0x24] - ldr r0, _021D2824 ; =0x000004BC - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] -_021D280E: - ldr r0, [r4, #0x24] - cmp r0, #1 - bne _021D281C - add r0, r4, #0 - mov r1, #0 - bl ov101_021D53F8 -_021D281C: - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 -_021D2820: .word 0x000005EE -_021D2824: .word 0x000004BC - thumb_func_end ov101_021D2738 - - thumb_func_start ov101_021D2828 -ov101_021D2828: ; 0x021D2828 - push {r3, lr} - mov r1, #1 - ldr r2, [r0, #0x6c] - lsl r1, r1, #0xc - add r2, r2, r1 - lsl r1, r1, #3 - str r2, [r0, #0x6c] - cmp r2, r1 - blt _021D284C - mov r1, #0 - str r1, [r0, #0x6c] - mov r1, #0x30 - str r1, [r0, #0] - mov r1, #6 - bl ov101_021D4798 - mov r0, #1 - pop {r3, pc} -_021D284C: - mov r0, #0 - pop {r3, pc} - thumb_func_end ov101_021D2828 - - thumb_func_start ov101_021D2850 -ov101_021D2850: ; 0x021D2850 - push {r4, lr} - ldr r1, _021D2948 ; =0x021BF67C - add r4, r0, #0 - ldr r2, [r1, #0x48] - ldr r1, [r4, #0x7c] - cmp r1, #1 - bne _021D2898 - mov r1, #2 - lsl r1, r1, #0xa - add r3, r2, #0 - tst r3, r1 - beq _021D2898 - mov r2, #2 - str r2, [r4, #0x7c] - bl ov101_021D5858 - add r0, r4, #0 - bl ov101_021D58C0 - cmp r0, #0 - bne _021D2880 - mov r0, #0 - str r0, [r4, #0x70] - str r0, [r4, #0x30] -_021D2880: - add r0, r4, #0 - mov r1, #0 - bl ov101_021D58F4 - add r0, r4, #0 - mov r1, #0 - bl ov101_021D2BF4 - ldr r0, _021D294C ; =0x000005F5 - bl sub_02005748 - b _021D2924 -_021D2898: - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #1 - bne _021D28DE - mov r1, #2 - add r0, r2, #0 - tst r0, r1 - beq _021D28DE - add r0, r4, #0 - add r0, #0x80 - str r1, [r0, #0] - add r0, r4, #0 - bl ov101_021D5858 - add r0, r4, #0 - bl ov101_021D58C0 - cmp r0, #0 - bne _021D28C6 - mov r0, #0 - str r0, [r4, #0x70] - str r0, [r4, #0x30] -_021D28C6: - add r0, r4, #0 - mov r1, #1 - bl ov101_021D58F4 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D2BF4 - ldr r0, _021D294C ; =0x000005F5 - bl sub_02005748 - b _021D2924 -_021D28DE: - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0, #0] - cmp r0, #1 - bne _021D2924 - mov r1, #1 - add r0, r2, #0 - tst r0, r1 - beq _021D2924 - add r0, r4, #0 - mov r2, #2 - add r0, #0x84 - str r2, [r0, #0] - add r0, r4, #0 - bl ov101_021D5858 - add r0, r4, #0 - bl ov101_021D58C0 - cmp r0, #0 - bne _021D290E - mov r0, #0 - str r0, [r4, #0x70] - str r0, [r4, #0x30] -_021D290E: - add r0, r4, #0 - mov r1, #2 - bl ov101_021D58F4 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D2BF4 - ldr r0, _021D294C ; =0x000005F5 - bl sub_02005748 -_021D2924: - ldr r0, [r4, #0x7c] - cmp r0, #2 - bne _021D2942 - add r0, r4, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #2 - bne _021D2942 - add r0, r4, #0 - add r0, #0x84 - ldr r0, [r0, #0] - cmp r0, #2 - bne _021D2942 - mov r0, #0x31 - str r0, [r4, #0] -_021D2942: - mov r0, #0 - pop {r4, pc} - nop -_021D2948: .word 0x021BF67C -_021D294C: .word 0x000005F5 - thumb_func_end ov101_021D2850 - - thumb_func_start ov101_021D2950 -ov101_021D2950: ; 0x021D2950 - push {r4, lr} - mov r1, #0 - add r4, r0, #0 - bl ov101_021D2C04 - cmp r0, #1 - beq _021D2976 - add r0, r4, #0 - mov r1, #1 - bl ov101_021D2C04 - cmp r0, #1 - beq _021D2976 - add r0, r4, #0 - mov r1, #2 - bl ov101_021D2C04 - cmp r0, #1 - bne _021D297A -_021D2976: - mov r0, #0 - pop {r4, pc} -_021D297A: - add r0, r4, #0 - bl ov101_021D4FF8 - mov r0, #0x32 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D2950 - - thumb_func_start ov101_021D2988 -ov101_021D2988: ; 0x021D2988 - push {r4, lr} - add r4, r0, #0 - add r2, r4, #0 - ldr r1, [r4, #0x74] - add r2, #0x48 - bl ov101_021D57EC - str r0, [r4, #0x44] - cmp r0, #6 - ldr r0, [r4, #0x28] - bne _021D29AE - cmp r0, #1 - bne _021D29A6 - mov r0, #3 - str r0, [r4, #0x28] -_021D29A6: - mov r0, #0x33 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} -_021D29AE: - cmp r0, #1 - bne _021D29B6 - mov r0, #2 - str r0, [r4, #0x28] -_021D29B6: - mov r0, #0x34 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2988 - - thumb_func_start ov101_021D29C0 -ov101_021D29C0: ; 0x021D29C0 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D4FF8 - add r0, r4, #0 - mov r1, #7 - bl ov101_021D4798 - ldr r0, [r4, #0x10] - cmp r0, #1 - bgt _021D29DA - mov r0, #0x36 - b _021D29DC -_021D29DA: - mov r0, #0x2b -_021D29DC: - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D29C0 - - thumb_func_start ov101_021D29E4 -ov101_021D29E4: ; 0x021D29E4 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #0x44] - lsl r2, r1, #2 - ldr r1, _021D2A10 ; =0x021D94F0 - ldr r3, [r1, r2] - ldr r1, _021D2A14 ; =0x00000458 - str r3, [r4, #0x64] - ldr r2, [r4, r1] - add r2, r2, r3 - str r2, [r4, r1] - bl ov101_021D45F8 - add r0, r4, #0 - mov r1, #0xa - bl ov101_021D4798 - mov r0, #0 - str r0, [r4, #0x6c] - mov r1, #0x35 - str r1, [r4, #0] - pop {r4, pc} - ; .align 2, 0 -_021D2A10: .word 0x021D94F0 -_021D2A14: .word 0x00000458 - thumb_func_end ov101_021D29E4 - - thumb_func_start ov101_021D2A18 -ov101_021D2A18: ; 0x021D2A18 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D460C - cmp r0, #0 - bne _021D2A28 - mov r0, #0 - pop {r4, pc} -_021D2A28: - add r0, r4, #0 - mov r1, #7 - bl ov101_021D4798 - ldr r0, [r4, #0x10] - cmp r0, #1 - bgt _021D2A3A - mov r0, #0x36 - b _021D2A3C -_021D2A3A: - mov r0, #0x2b -_021D2A3C: - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2A18 - - thumb_func_start ov101_021D2A44 -ov101_021D2A44: ; 0x021D2A44 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x10] - sub r0, r0, #1 - str r0, [r4, #0x10] - beq _021D2A54 - bl GF_AssertFail -_021D2A54: - ldr r0, [r4, #0x2c] - cmp r0, #1 - bne _021D2A70 - ldr r0, [r4, #0x24] - cmp r0, #0 - bne _021D2A70 - add r0, r4, #0 - mov r1, #8 - bl ov101_021D4798 - mov r0, #0x3a - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} -_021D2A70: - mov r0, #0x37 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D2A44 - - thumb_func_start ov101_021D2A78 -ov101_021D2A78: ; 0x021D2A78 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D44FC - add r0, r4, #0 - bl ov101_021D4550 - ldr r1, [r4, #0x24] - cmp r1, #1 - bne _021D2A8E - mov r0, #2 -_021D2A8E: - cmp r0, #2 - bne _021D2AA2 - add r0, r4, #0 - mov r1, #5 - bl ov101_021D4798 - mov r0, #0x38 - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} -_021D2AA2: - cmp r0, #1 - bne _021D2AB6 - add r0, r4, #0 - mov r1, #0xc - bl ov101_021D4798 - mov r0, #0x39 - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} -_021D2AB6: - mov r0, #0x23 - mov r1, #0 - bl sub_02005844 - mov r0, #0x2a - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2A78 - - thumb_func_start ov101_021D2AC8 -ov101_021D2AC8: ; 0x021D2AC8 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D47AC - cmp r0, #0 - bne _021D2AD8 - mov r0, #0 - pop {r4, pc} -_021D2AD8: - mov r0, #0x2a - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D2AC8 - - thumb_func_start ov101_021D2AE0 -ov101_021D2AE0: ; 0x021D2AE0 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D47AC - cmp r0, #0 - bne _021D2AF0 - mov r0, #0 - pop {r4, pc} -_021D2AF0: - mov r0, #0x2a - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D2AE0 - - thumb_func_start ov101_021D2AF8 -ov101_021D2AF8: ; 0x021D2AF8 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D47AC - cmp r0, #0 - bne _021D2B08 - mov r0, #0 - pop {r4, pc} -_021D2B08: - ldr r1, [r4, #0x1c] - ldr r0, [r4, #0x20] - cmp r1, r0 - bls _021D2B12 - str r1, [r4, #0x20] -_021D2B12: - add r0, r4, #0 - mov r1, #0 - bl ov101_021D1894 - add r0, r4, #0 - bl ov101_021D53D4 - mov r0, #0 - str r0, [r4, #0] - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D2AF8 - - thumb_func_start ov101_021D2B28 -ov101_021D2B28: ; 0x021D2B28 - push {r4, lr} - mov r1, #0 - add r4, r0, #0 - bl ov101_021D148C - mov r0, #0x3e - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2B28 - - thumb_func_start ov101_021D2B3C -ov101_021D2B3C: ; 0x021D2B3C - push {r4, lr} - mov r1, #2 - add r4, r0, #0 - bl ov101_021D148C - mov r0, #0x3e - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2B3C - - thumb_func_start ov101_021D2B50 -ov101_021D2B50: ; 0x021D2B50 - push {r4, lr} - mov r1, #1 - add r4, r0, #0 - bl ov101_021D148C - mov r0, #0x3e - str r0, [r4, #0] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2B50 - - thumb_func_start ov101_021D2B64 -ov101_021D2B64: ; 0x021D2B64 - push {r4, lr} - add r4, r0, #0 - mov r0, #3 - bl ov101_021D55F8 - cmp r0, #0 - beq _021D2B7C - add r0, r4, #0 - bl ov101_021D14E4 - ldr r0, [r4, #4] - str r0, [r4, #0] -_021D2B7C: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D2B64 - - thumb_func_start ov101_021D2B80 -ov101_021D2B80: ; 0x021D2B80 - push {r3, lr} - bl ov101_021D5244 - mov r0, #2 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2B80 - - thumb_func_start ov101_021D2B8C -ov101_021D2B8C: ; 0x021D2B8C - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r7, #0 - add r5, #0xb4 - mov r4, #0 - add r6, r5, #0 -_021D2B98: - mov r0, #0 - str r0, [r5, #0] - add r2, r4, #0 - str r4, [r5, #0x10] - ldr r0, _021D2BBC ; =ov101_021D2C10 - add r1, r6, #0 - add r2, #0x81 - str r7, [r5, #0x20] - bl sub_0200D9E8 - str r0, [r5, #0x1c] - add r4, r4, #1 - add r5, #0x24 - add r6, #0x24 - cmp r4, #3 - blo _021D2B98 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D2BBC: .word ov101_021D2C10 - thumb_func_end ov101_021D2B8C - - thumb_func_start ov101_021D2BC0 -ov101_021D2BC0: ; 0x021D2BC0 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r4, #0 -_021D2BC6: - add r0, r5, #0 - add r0, #0xd0 - ldr r0, [r0, #0] - bl sub_0200DA58 - add r4, r4, #1 - add r5, #0x24 - cmp r4, #3 - blo _021D2BC6 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2BC0 - - thumb_func_start ov101_021D2BDC -ov101_021D2BDC: ; 0x021D2BDC - mov r2, #0x24 - add r3, r1, #0 - mul r3, r2 - add r1, r0, r3 - add r0, r0, r3 - mov r2, #1 - add r1, #0xb4 - str r2, [r1, #0] - add r0, #0xb8 - str r2, [r0, #0] - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D2BDC - - thumb_func_start ov101_021D2BF4 -ov101_021D2BF4: ; 0x021D2BF4 - mov r2, #0x24 - mul r2, r1 - add r0, r0, r2 - mov r3, #2 - add r0, #0xb4 - str r3, [r0, #0] - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D2BF4 - - thumb_func_start ov101_021D2C04 -ov101_021D2C04: ; 0x021D2C04 - mov r2, #0x24 - mul r2, r1 - add r0, r0, r2 - add r0, #0xb8 - ldr r0, [r0, #0] - bx lr - thumb_func_end ov101_021D2C04 - - thumb_func_start ov101_021D2C10 -ov101_021D2C10: ; 0x021D2C10 - push {r4, r5, r6, lr} - add r5, r1, #0 - ldr r4, [r5, #0x20] - ldr r6, _021D2C2C ; =0x021D86C4 -_021D2C18: - ldr r2, [r5, #0] - add r0, r5, #0 - lsl r2, r2, #2 - ldr r2, [r6, r2] - add r1, r4, #0 - blx r2 - cmp r0, #1 - beq _021D2C18 - pop {r4, r5, r6, pc} - nop -_021D2C2C: .word 0x021D86C4 - thumb_func_end ov101_021D2C10 - - thumb_func_start ov101_021D2C30 -ov101_021D2C30: ; 0x021D2C30 - mov r0, #0 - bx lr - thumb_func_end ov101_021D2C30 - - thumb_func_start ov101_021D2C34 -ov101_021D2C34: ; 0x021D2C34 - push {r3, lr} - add r2, r0, #0 - add r0, r1, #0 - ldr r1, [r2, #0x10] - add r2, r0, #0 - add r2, #0x8c - ldr r2, [r2, #0] - bl ov101_021D3FE8 - mov r0, #0 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2C34 - - thumb_func_start ov101_021D2C4C -ov101_021D2C4C: ; 0x021D2C4C - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r2, [r5, #0] - add r4, r1, #0 - add r2, r2, #1 - str r2, [r5, #0] - mov r2, #0 - str r2, [r5, #0x14] - str r2, [r5, #0x18] - ldr r2, [r4, #0x30] - cmp r2, #1 - ldr r2, [r4, #8] - bne _021D2C96 - cmp r2, #0 - bne _021D2C80 - bl ov101_021D2D88 - cmp r0, #0 - bne _021D2CA4 - add r0, r5, #0 - add r1, r4, #0 - bl ov101_021D3780 - mov r0, #0 - str r0, [r4, #0x30] - b _021D2CA4 -_021D2C80: - bl ov101_021D2DC0 - cmp r0, #0 - bne _021D2CA4 - add r0, r5, #0 - add r1, r4, #0 - bl ov101_021D3830 - mov r0, #0 - str r0, [r4, #0x30] - b _021D2CA4 -_021D2C96: - cmp r2, #0 - bne _021D2CA0 - bl ov101_021D3780 - b _021D2CA4 -_021D2CA0: - bl ov101_021D3830 -_021D2CA4: - mov r0, #1 - pop {r3, r4, r5, pc} - thumb_func_end ov101_021D2C4C - - thumb_func_start ov101_021D2CA8 -ov101_021D2CA8: ; 0x021D2CA8 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r5, r0, #0 - add r3, r1, #0 - ldr r1, [r5, #0x10] - add r7, r3, #0 - lsl r0, r1, #2 - add r7, #0x90 - str r0, [sp] - ldr r0, [r7, r0] - mov r4, #0 - lsr r6, r0, #0x1f - lsl r2, r0, #0xf - sub r2, r2, r6 - mov r0, #0xf - ror r2, r0 - add r0, r6, r2 - beq _021D2CE2 - add r2, r3, #0 - add r2, #0x8c - ldr r2, [r2, #0] - mov r4, #1 - cmp r0, r2 - bge _021D2CDA - add r2, r0, #0 -_021D2CDA: - add r0, r3, #0 - bl ov101_021D4024 - b _021D2D08 -_021D2CE2: - ldr r2, [r5, #0x18] - cmp r2, #0 - beq _021D2D08 - sub r0, r2, #1 - str r0, [r5, #0x18] - add r0, r3, #0 - add r3, #0x8c - ldr r2, [r3, #0] - mov r4, #1 - bl ov101_021D3FE8 - ldr r0, [sp] - ldr r0, [r7, r0] - lsr r2, r0, #0x1f - lsl r1, r0, #0xf - sub r1, r1, r2 - mov r0, #0xf - ror r1, r0 - add r0, r2, r1 -_021D2D08: - cmp r0, #0 - bne _021D2D44 - ldr r6, [r5, #0x18] - cmp r6, #0 - bne _021D2D44 - ldr r3, _021D2D4C ; =0x021D86D8 - add r2, sp, #4 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - cmp r6, #4 - str r0, [r2, #0] - ble _021D2D28 - mov r6, #4 -_021D2D28: - lsl r1, r6, #2 - add r0, sp, #4 - ldr r0, [r0, r1] - str r0, [r5, #8] - mov r0, #0 - str r0, [r5, #0xc] - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - cmp r4, #0 - bne _021D2D44 - add sp, #0x18 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D2D44: - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D2D4C: .word 0x021D86D8 - thumb_func_end ov101_021D2CA8 - - thumb_func_start ov101_021D2D50 -ov101_021D2D50: ; 0x021D2D50 - push {r3, r4} - ldr r2, [r0, #0x10] - ldr r3, [r0, #8] - add r1, #0x9c - lsl r2, r2, #2 - str r3, [r1, r2] - ldr r3, [r0, #8] - neg r3, r3 - str r3, [r0, #8] - ldr r3, [r0, #0xc] - add r4, r3, #1 - mov r3, #1 - str r4, [r0, #0xc] - tst r3, r4 - bne _021D2D74 - ldr r3, [r0, #8] - asr r3, r3, #2 - str r3, [r0, #8] -_021D2D74: - ldr r3, [r0, #8] - cmp r3, #0 - bne _021D2D82 - mov r3, #0 - str r3, [r0, #0] - str r3, [r0, #4] - str r3, [r1, r2] -_021D2D82: - mov r0, #0 - pop {r3, r4} - bx lr - thumb_func_end ov101_021D2D50 - - thumb_func_start ov101_021D2D88 -ov101_021D2D88: ; 0x021D2D88 - push {r3, lr} - ldr r2, [r1, #0x74] - cmp r2, #0 - bne _021D2D94 - mov r0, #0 - pop {r3, pc} -_021D2D94: - ldr r2, [r0, #0x10] - cmp r2, #0 - beq _021D2DA4 - cmp r2, #1 - beq _021D2DAA - cmp r2, #2 - beq _021D2DB0 - b _021D2DB6 -_021D2DA4: - bl ov101_021D2DE0 - pop {r3, pc} -_021D2DAA: - bl ov101_021D2E1C - pop {r3, pc} -_021D2DB0: - bl ov101_021D2E58 - pop {r3, pc} -_021D2DB6: - bl GF_AssertFail - mov r0, #0 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2D88 - - thumb_func_start ov101_021D2DC0 -ov101_021D2DC0: ; 0x021D2DC0 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0x74] - cmp r0, #0 - bne _021D2DD0 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D2DD0: - bl ov101_021D5618 - add r2, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - bl ov101_021D3738 - pop {r3, r4, r5, pc} - thumb_func_end ov101_021D2DC0 - - thumb_func_start ov101_021D2DE0 -ov101_021D2DE0: ; 0x021D2DE0 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0x74] - bl ov101_021D5618 - add r6, r0, #0 - cmp r6, #6 - bne _021D2DF6 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D2DF6: - add r0, r5, #0 - add r1, r4, #0 - bl ov101_021D38FC - cmp r0, #1 - bne _021D2E0E - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov101_021D2E94 - pop {r4, r5, r6, pc} -_021D2E0E: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov101_021D2FAC - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2DE0 - - thumb_func_start ov101_021D2E1C -ov101_021D2E1C: ; 0x021D2E1C - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0x74] - bl ov101_021D5618 - add r6, r0, #0 - cmp r6, #6 - bne _021D2E32 - mov r0, #0 - pop {r4, r5, r6, pc} -_021D2E32: - add r0, r5, #0 - add r1, r4, #0 - bl ov101_021D38FC - cmp r0, #1 - bne _021D2E4A - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov101_021D32EC - pop {r4, r5, r6, pc} -_021D2E4A: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov101_021D3394 - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2E1C - - thumb_func_start ov101_021D2E58 -ov101_021D2E58: ; 0x021D2E58 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0x74] - bl ov101_021D5618 - add r6, r0, #0 - cmp r6, #6 - bne _021D2E6E - mov r0, #0 - pop {r4, r5, r6, pc} -_021D2E6E: - add r0, r5, #0 - add r1, r4, #0 - bl ov101_021D38FC - cmp r0, #1 - bne _021D2E86 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov101_021D32EC - pop {r4, r5, r6, pc} -_021D2E86: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov101_021D3394 - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2E58 - - thumb_func_start ov101_021D2E94 -ov101_021D2E94: ; 0x021D2E94 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - str r0, [sp] - ldr r0, [r0, #0x10] - add r4, r1, #0 - add r6, r2, #0 - str r0, [sp, #8] - mov r7, #1 -_021D2EA4: - ldr r1, [sp, #8] - add r0, r4, #0 - add r2, r7, #0 - bl ov101_021D55D4 - cmp r6, r0 - bne _021D2EDC - mov r5, #0 - cmp r7, #3 - bgt _021D2EDC -_021D2EB8: - add r0, r4, #0 - add r1, r5, #0 - add r2, r6, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D2ED4 - ldr r0, [sp] - add r1, r7, r5 - str r1, [r0, #0x14] - str r5, [r0, #0x18] - add sp, #0x14 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021D2ED4: - add r5, r5, #1 - add r0, r7, r5 - cmp r0, #3 - ble _021D2EB8 -_021D2EDC: - add r7, r7, #1 - cmp r7, #3 - ble _021D2EA4 - mov r0, #4 - str r0, [sp, #0x10] - ldr r0, [r4, #0x70] - cmp r0, #1 - bne _021D2EF0 - mov r0, #0x15 - str r0, [sp, #0x10] -_021D2EF0: - add r0, r4, #0 - add r0, #0xa8 - ldr r0, [r0, #0] - mov r7, #1 - str r0, [sp, #0xc] - ldr r0, [sp, #0x10] - cmp r0, #1 - blt _021D2FA4 -_021D2F00: - mov r2, #1 - ldr r1, [sp, #8] - add r0, r4, #0 - sub r2, r2, r7 - bl ov101_021D55D4 - cmp r6, r0 - bne _021D2F9C - mov r5, #0 -_021D2F12: - add r0, r7, r5 - str r0, [sp, #4] - ldr r1, [sp, #4] - add r0, r4, #0 - add r2, r6, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D2F96 - cmp r5, #0 - bne _021D2F58 - ldr r0, [sp, #0xc] - ldr r1, [sp, #0xc] - lsr r0, r0, #0x1f - lsl r2, r1, #0x1e - sub r2, r2, r0 - mov r1, #0x1e - ror r2, r1 - add r0, r0, r2 - bne _021D2F86 - add r0, r4, #0 - add r1, r7, #2 - add r2, r6, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D2F86 - ldr r0, [sp] - mov r1, #3 - str r1, [r0, #0x14] - add r1, r7, #2 - str r1, [r0, #0x18] - add sp, #0x14 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021D2F58: - cmp r5, #1 - bne _021D2F86 - ldr r0, [sp, #0xc] - mov r1, #6 - bl _s32_div_f - cmp r1, #2 - bge _021D2F86 - add r0, r4, #0 - add r1, r7, #2 - add r2, r6, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D2F86 - ldr r0, [sp] - mov r1, #3 - str r1, [r0, #0x14] - add r1, r7, #2 - str r1, [r0, #0x18] - add sp, #0x14 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021D2F86: - ldr r0, [sp] - add r1, r5, #1 - str r1, [r0, #0x14] - ldr r1, [sp, #4] - add sp, #0x14 - str r1, [r0, #0x18] - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021D2F96: - add r5, r5, #1 - cmp r5, #3 - blt _021D2F12 -_021D2F9C: - ldr r0, [sp, #0x10] - add r7, r7, #1 - cmp r7, r0 - ble _021D2F00 -_021D2FA4: - mov r0, #0 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D2E94 - - thumb_func_start ov101_021D2FAC -ov101_021D2FAC: ; 0x021D2FAC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r4, r2, #0 - add r2, r0, #0 - ldr r7, [r2, #0x10] - add r2, sp, #0xc - str r2, [sp] - add r2, sp, #0x14 - add r3, sp, #0x10 - str r0, [sp, #4] - add r5, r1, #0 - bl ov101_021D394C - cmp r0, #0 - bne _021D2FD0 - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D2FD0: - add r0, r5, #0 - mov r1, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D3040 - ldr r2, [sp, #0x14] - add r0, r5, #0 - add r1, r7, #0 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D2FFC - ldr r1, [sp, #0x14] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - mov r1, #0 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D2FFC: - ldr r2, [sp, #0x10] - cmp r2, #0 - beq _021D301E - add r0, r5, #0 - add r1, r7, #0 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D301E - ldr r1, [sp, #0x10] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - mov r1, #0 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D301E: - ldr r2, [sp, #0xc] - cmp r2, #0 - beq _021D3040 - add r0, r5, #0 - add r1, r7, #0 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D3040 - ldr r1, [sp, #0xc] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - mov r1, #0 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3040: - mov r0, #4 - str r0, [sp, #8] - ldr r0, [r5, #0x70] - cmp r0, #1 - bne _021D304E - mov r0, #0x15 - str r0, [sp, #8] -_021D304E: - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _021D3096 - ldr r0, [sp, #8] - mov r6, #1 - cmp r0, #1 - blt _021D3090 -_021D305C: - ldr r2, [sp, #0x14] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D3088 - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D3088 - ldr r1, [sp, #0x14] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3088: - ldr r0, [sp, #8] - add r6, r6, #1 - cmp r6, r0 - ble _021D305C -_021D3090: - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D3096: - ldr r0, [sp, #0xc] - cmp r0, #0 - bne _021D3168 - ldr r0, [sp, #8] - mov r6, #1 - cmp r0, #1 - blt _021D3162 -_021D30A4: - mov r0, #1 - tst r0, r6 - beq _021D3102 - ldr r2, [sp, #0x14] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D30D6 - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D30D6 - ldr r1, [sp, #0x14] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D30D6: - ldr r2, [sp, #0x10] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D315A - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D315A - ldr r1, [sp, #0x10] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3102: - ldr r2, [sp, #0x10] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D312E - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D312E - ldr r1, [sp, #0x10] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D312E: - ldr r2, [sp, #0x14] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D315A - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D315A - ldr r1, [sp, #0x14] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D315A: - ldr r0, [sp, #8] - add r6, r6, #1 - cmp r6, r0 - ble _021D30A4 -_021D3162: - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D3168: - ldr r0, [sp, #8] - mov r6, #1 - cmp r0, #1 - bge _021D3172 - b _021D32E6 -_021D3172: - mov r0, #3 - and r0, r6 - bne _021D31FC - ldr r2, [sp, #0x14] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D31A4 - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D31A4 - ldr r1, [sp, #0x14] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D31A4: - ldr r2, [sp, #0x10] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D31D0 - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D31D0 - ldr r1, [sp, #0x10] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D31D0: - ldr r2, [sp, #0xc] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D32DC - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D32DC - ldr r1, [sp, #0xc] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D31FC: - cmp r0, #1 - bne _021D3258 - ldr r2, [sp, #0x10] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D322C - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D322C - ldr r1, [sp, #0x10] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D322C: - ldr r2, [sp, #0x14] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D32DC - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D32DC - ldr r1, [sp, #0x14] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3258: - ldr r2, [sp, #0xc] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D3284 - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D3284 - ldr r1, [sp, #0xc] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3284: - ldr r2, [sp, #0x14] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D32B0 - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D32B0 - ldr r1, [sp, #0x14] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D32B0: - ldr r2, [sp, #0x10] - add r0, r5, #0 - add r1, r7, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - cmp r4, r0 - bne _021D32DC - add r0, r5, #0 - add r1, r6, #0 - add r2, r4, #0 - bl ov101_021D3B34 - cmp r0, #1 - bne _021D32DC - ldr r1, [sp, #0x10] - ldr r0, [sp, #4] - add sp, #0x18 - str r1, [r0, #0x14] - str r6, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D32DC: - ldr r0, [sp, #8] - add r6, r6, #1 - cmp r6, r0 - bgt _021D32E6 - b _021D3172 -_021D32E6: - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D2FAC - - thumb_func_start ov101_021D32EC -ov101_021D32EC: ; 0x021D32EC - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - ldr r7, [r0, #0x10] - str r0, [sp] - add r4, r1, #0 - add r6, r2, #0 - mov r5, #1 -_021D32FA: - add r0, r4, #0 - add r1, r7, #0 - add r2, r5, #0 - bl ov101_021D55D4 - cmp r6, r0 - bne _021D3316 - ldr r0, [sp] - mov r1, #0 - str r5, [r0, #0x14] - str r1, [r0, #0x18] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3316: - add r5, r5, #1 - cmp r5, #3 - ble _021D32FA - mov r0, #4 - str r0, [sp, #4] - ldr r0, [r4, #0x70] - cmp r0, #1 - bne _021D332A - mov r0, #0x15 - str r0, [sp, #4] -_021D332A: - ldr r0, [sp, #4] - mov r5, #1 - cmp r0, #1 - blt _021D338C -_021D3332: - mov r2, #1 - add r0, r4, #0 - add r1, r7, #0 - sub r2, r2, r5 - bl ov101_021D55D4 - cmp r6, r0 - bne _021D3384 - lsr r2, r5, #0x1f - lsl r1, r5, #0x1e - sub r1, r1, r2 - mov r0, #0x1e - ror r1, r0 - add r0, r2, r1 - cmp r0, #1 - bne _021D3362 - ldr r0, [sp] - mov r1, #3 - str r1, [r0, #0x14] - add r1, r5, #2 - str r1, [r0, #0x18] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3362: - sub r0, r0, #2 - cmp r0, #1 - bhi _021D3378 - ldr r0, [sp] - mov r1, #2 - str r1, [r0, #0x14] - add r1, r5, #1 - str r1, [r0, #0x18] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3378: - ldr r1, [sp] - mov r0, #1 - str r0, [r1, #0x14] - add sp, #8 - str r5, [r1, #0x18] - pop {r3, r4, r5, r6, r7, pc} -_021D3384: - ldr r0, [sp, #4] - add r5, r5, #1 - cmp r5, r0 - ble _021D3332 -_021D338C: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D32EC - - thumb_func_start ov101_021D3394 -ov101_021D3394: ; 0x021D3394 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x48 - add r5, r2, #0 - add r2, r0, #0 - ldr r7, [r2, #0x10] - add r2, sp, #0x3c - str r2, [sp] - add r2, sp, #0x44 - add r3, sp, #0x40 - str r0, [sp, #4] - add r6, r1, #0 - bl ov101_021D394C - cmp r0, #0 - bne _021D33B8 - add sp, #0x48 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D33B8: - ldr r2, [sp, #0x44] - add r0, r6, #0 - add r1, r7, #0 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D33D6 - ldr r1, [sp, #0x44] - ldr r0, [sp, #4] - add sp, #0x48 - str r1, [r0, #0x14] - mov r1, #0 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D33D6: - ldr r2, [sp, #0x40] - cmp r2, #0 - beq _021D33F8 - add r0, r6, #0 - add r1, r7, #0 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D33F8 - ldr r1, [sp, #0x40] - ldr r0, [sp, #4] - add sp, #0x48 - str r1, [r0, #0x14] - mov r1, #0 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D33F8: - ldr r2, [sp, #0x3c] - cmp r2, #0 - beq _021D341A - add r0, r6, #0 - add r1, r7, #0 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D341A - ldr r1, [sp, #0x3c] - ldr r0, [sp, #4] - add sp, #0x48 - str r1, [r0, #0x14] - mov r1, #0 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D341A: - ldr r0, [r6, #0x70] - mov r4, #4 - cmp r0, #1 - bne _021D3424 - mov r4, #0x15 -_021D3424: - ldr r0, [sp, #0x40] - cmp r0, #0 - bne _021D3464 - mov r0, #1 - str r0, [sp, #0x38] - cmp r4, #1 - blt _021D345E -_021D3432: - ldr r3, [sp, #0x44] - ldr r2, [sp, #0x38] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D3454 - ldr r1, [sp, #0x44] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x38] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3454: - ldr r0, [sp, #0x38] - add r0, r0, #1 - str r0, [sp, #0x38] - cmp r0, r4 - ble _021D3432 -_021D345E: - add sp, #0x48 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D3464: - lsl r0, r7, #2 - add r0, r6, r0 - add r0, #0xa8 - ldr r1, [sp, #0x3c] - ldr r0, [r0, #0] - cmp r1, #0 - bne _021D354A - mov r1, #1 - str r1, [sp, #8] - tst r0, r1 - beq _021D34E0 - cmp r4, #1 - blt _021D34AA -_021D347E: - ldr r3, [sp, #0x44] - ldr r2, [sp, #8] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D34A0 - ldr r1, [sp, #0x44] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #8] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D34A0: - ldr r0, [sp, #8] - add r0, r0, #1 - str r0, [sp, #8] - cmp r0, r4 - ble _021D347E -_021D34AA: - mov r0, #1 - str r0, [sp, #0xc] - cmp r4, #1 - blt _021D3544 -_021D34B2: - ldr r3, [sp, #0x40] - ldr r2, [sp, #0xc] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D34D4 - ldr r1, [sp, #0x40] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0xc] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D34D4: - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, r4 - ble _021D34B2 - b _021D3544 -_021D34E0: - cmp r4, #1 - blt _021D3510 -_021D34E4: - ldr r3, [sp, #0x40] - ldr r2, [sp, #8] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D3506 - ldr r1, [sp, #0x40] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #8] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3506: - ldr r0, [sp, #8] - add r0, r0, #1 - str r0, [sp, #8] - cmp r0, r4 - ble _021D34E4 -_021D3510: - mov r0, #1 - str r0, [sp, #0x10] - cmp r4, #1 - blt _021D3544 -_021D3518: - ldr r3, [sp, #0x44] - ldr r2, [sp, #0x10] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D353A - ldr r1, [sp, #0x44] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x10] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D353A: - ldr r0, [sp, #0x10] - add r0, r0, #1 - str r0, [sp, #0x10] - cmp r0, r4 - ble _021D3518 -_021D3544: - add sp, #0x48 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D354A: - mov r1, #3 - bl _s32_div_f - cmp r1, #0 - bne _021D35F2 - mov r0, #1 - str r0, [sp, #0x14] - cmp r4, #1 - blt _021D3588 -_021D355C: - ldr r3, [sp, #0x44] - ldr r2, [sp, #0x14] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D357E - ldr r1, [sp, #0x44] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x14] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D357E: - ldr r0, [sp, #0x14] - add r0, r0, #1 - str r0, [sp, #0x14] - cmp r0, r4 - ble _021D355C -_021D3588: - mov r0, #1 - str r0, [sp, #0x18] - cmp r4, #1 - blt _021D35BC -_021D3590: - ldr r3, [sp, #0x40] - ldr r2, [sp, #0x18] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D35B2 - ldr r1, [sp, #0x40] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x18] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D35B2: - ldr r0, [sp, #0x18] - add r0, r0, #1 - str r0, [sp, #0x18] - cmp r0, r4 - ble _021D3590 -_021D35BC: - mov r0, #1 - str r0, [sp, #0x1c] - cmp r4, #1 - blt _021D35F0 -_021D35C4: - ldr r3, [sp, #0x3c] - ldr r2, [sp, #0x1c] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D35E6 - ldr r1, [sp, #0x3c] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x1c] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D35E6: - ldr r0, [sp, #0x1c] - add r0, r0, #1 - str r0, [sp, #0x1c] - cmp r0, r4 - ble _021D35C4 -_021D35F0: - b _021D3730 -_021D35F2: - cmp r1, #1 - bne _021D3694 - mov r0, #1 - str r0, [sp, #0x20] - cmp r4, #1 - blt _021D362A -_021D35FE: - ldr r3, [sp, #0x40] - ldr r2, [sp, #0x20] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D3620 - ldr r1, [sp, #0x40] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x20] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3620: - ldr r0, [sp, #0x20] - add r0, r0, #1 - str r0, [sp, #0x20] - cmp r0, r4 - ble _021D35FE -_021D362A: - mov r0, #1 - str r0, [sp, #0x24] - cmp r4, #1 - blt _021D365E -_021D3632: - ldr r3, [sp, #0x3c] - ldr r2, [sp, #0x24] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D3654 - ldr r1, [sp, #0x3c] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x24] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3654: - ldr r0, [sp, #0x24] - add r0, r0, #1 - str r0, [sp, #0x24] - cmp r0, r4 - ble _021D3632 -_021D365E: - mov r0, #1 - str r0, [sp, #0x28] - cmp r4, #1 - blt _021D3730 -_021D3666: - ldr r3, [sp, #0x44] - ldr r2, [sp, #0x28] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D3688 - ldr r1, [sp, #0x44] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x28] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3688: - ldr r0, [sp, #0x28] - add r0, r0, #1 - str r0, [sp, #0x28] - cmp r0, r4 - ble _021D3666 - b _021D3730 -_021D3694: - mov r0, #1 - str r0, [sp, #0x2c] - cmp r4, #1 - blt _021D36C8 -_021D369C: - ldr r3, [sp, #0x3c] - ldr r2, [sp, #0x2c] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D36BE - ldr r1, [sp, #0x3c] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x2c] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D36BE: - ldr r0, [sp, #0x2c] - add r0, r0, #1 - str r0, [sp, #0x2c] - cmp r0, r4 - ble _021D369C -_021D36C8: - mov r0, #1 - str r0, [sp, #0x30] - cmp r4, #1 - blt _021D36FC -_021D36D0: - ldr r3, [sp, #0x44] - ldr r2, [sp, #0x30] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D36F2 - ldr r1, [sp, #0x44] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x30] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D36F2: - ldr r0, [sp, #0x30] - add r0, r0, #1 - str r0, [sp, #0x30] - cmp r0, r4 - ble _021D36D0 -_021D36FC: - mov r0, #1 - str r0, [sp, #0x34] - cmp r4, #1 - blt _021D3730 -_021D3704: - ldr r3, [sp, #0x40] - ldr r2, [sp, #0x34] - add r0, r6, #0 - add r1, r7, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - cmp r5, r0 - bne _021D3726 - ldr r1, [sp, #0x40] - ldr r0, [sp, #4] - str r1, [r0, #0x14] - ldr r1, [sp, #0x34] - add sp, #0x48 - str r1, [r0, #0x18] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3726: - ldr r0, [sp, #0x34] - add r0, r0, #1 - str r0, [sp, #0x34] - cmp r0, r4 - ble _021D3704 -_021D3730: - mov r0, #0 - add sp, #0x48 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D3394 - - thumb_func_start ov101_021D3738 -ov101_021D3738: ; 0x021D3738 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r0, [sp] - ldr r0, [r0, #0x10] - add r6, r1, #0 - str r0, [sp, #4] - ldr r0, [r6, #0x70] - add r7, r2, #0 - mov r5, #4 - cmp r0, #1 - bne _021D3750 - mov r5, #0x15 -_021D3750: - mov r4, #0 - cmp r5, #0 - blt _021D377A -_021D3756: - mov r2, #2 - ldr r1, [sp, #4] - add r0, r6, #0 - sub r2, r2, r4 - bl ov101_021D55D4 - cmp r7, r0 - bne _021D3774 - ldr r0, [sp] - mov r1, #2 - str r1, [r0, #0x14] - str r4, [r0, #0x18] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3774: - add r4, r4, #1 - cmp r4, r5 - ble _021D3756 -_021D377A: - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D3738 - - thumb_func_start ov101_021D3780 -ov101_021D3780: ; 0x021D3780 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r6, r0, #0 - add r0, r4, #0 - bl ov101_021D38E4 - ldr r1, [r6, #0x10] - cmp r1, #0 - beq _021D3796 - cmp r0, #2 - blt _021D382C -_021D3796: - cmp r1, #0 - bne _021D37BC - cmp r0, #2 - bge _021D37BC - mov r5, #0 -_021D37A0: - add r0, r4, #0 - add r1, r5, #0 - bl ov101_021D3AF0 - cmp r0, #0 - bne _021D37B0 - str r5, [r6, #0x18] - pop {r4, r5, r6, pc} -_021D37B0: - add r5, r5, #1 - cmp r5, #0x15 - ble _021D37A0 - bl GF_AssertFail - pop {r4, r5, r6, pc} -_021D37BC: - cmp r1, #0 - beq _021D37CA - cmp r1, #1 - beq _021D37EA - cmp r1, #2 - beq _021D380A - b _021D3828 -_021D37CA: - mov r5, #1 -_021D37CC: - add r0, r6, #0 - add r1, r4, #0 - add r2, r5, #0 - bl ov101_021D3B50 - cmp r0, #0 - bne _021D37DE - str r5, [r6, #0x18] - pop {r4, r5, r6, pc} -_021D37DE: - add r5, r5, #1 - cmp r5, #0x15 - ble _021D37CC - bl GF_AssertFail - pop {r4, r5, r6, pc} -_021D37EA: - mov r5, #1 -_021D37EC: - add r0, r6, #0 - add r1, r4, #0 - add r2, r5, #0 - bl ov101_021D3C9C - cmp r0, #0 - bne _021D37FE - str r5, [r6, #0x18] - pop {r4, r5, r6, pc} -_021D37FE: - add r5, r5, #1 - cmp r5, #0x15 - ble _021D37EC - bl GF_AssertFail - b _021D3828 -_021D380A: - mov r5, #1 -_021D380C: - add r0, r6, #0 - add r1, r4, #0 - add r2, r5, #0 - bl ov101_021D3DD4 - cmp r0, #0 - bne _021D381E - str r5, [r6, #0x18] - pop {r4, r5, r6, pc} -_021D381E: - add r5, r5, #1 - cmp r5, #0x15 - ble _021D380C - bl GF_AssertFail -_021D3828: - bl GF_AssertFail -_021D382C: - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov101_021D3780 - - thumb_func_start ov101_021D3830 -ov101_021D3830: ; 0x021D3830 - push {r3, r4, r5, r6, r7, lr} - add r4, r1, #0 - add r6, r0, #0 - add r0, r4, #0 - bl ov101_021D38E4 - ldr r1, [r6, #0x10] - cmp r1, #0 - beq _021D3846 - cmp r0, #2 - blt _021D38E0 -_021D3846: - cmp r1, #0 - bne _021D386E - cmp r0, #2 - bge _021D386E - mov r5, #0 - mov r7, #2 -_021D3852: - add r0, r4, #0 - mov r1, #0 - sub r2, r7, r5 - bl ov101_021D55D4 - cmp r0, #3 - beq _021D3864 - str r5, [r6, #0x18] - pop {r3, r4, r5, r6, r7, pc} -_021D3864: - add r5, r5, #1 - cmp r5, #0x15 - blt _021D3852 - bl GF_AssertFail -_021D386E: - ldr r0, [r6, #0x10] - cmp r0, #0 - beq _021D387E - cmp r0, #1 - beq _021D389E - cmp r0, #2 - beq _021D38BE - b _021D38DC -_021D387E: - mov r5, #0 -_021D3880: - add r0, r6, #0 - add r1, r4, #0 - add r2, r5, #0 - bl ov101_021D3F0C - cmp r0, #0 - bne _021D3892 - str r5, [r6, #0x18] - pop {r3, r4, r5, r6, r7, pc} -_021D3892: - add r5, r5, #1 - cmp r5, #0x15 - blt _021D3880 - bl GF_AssertFail - pop {r3, r4, r5, r6, r7, pc} -_021D389E: - mov r5, #0 -_021D38A0: - add r0, r6, #0 - add r1, r4, #0 - add r2, r5, #0 - bl ov101_021D3F58 - cmp r0, #0 - bne _021D38B2 - str r5, [r6, #0x18] - pop {r3, r4, r5, r6, r7, pc} -_021D38B2: - add r5, r5, #1 - cmp r5, #0x15 - ble _021D38A0 - bl GF_AssertFail - pop {r3, r4, r5, r6, r7, pc} -_021D38BE: - mov r5, #0 -_021D38C0: - add r0, r6, #0 - add r1, r4, #0 - add r2, r5, #0 - bl ov101_021D3FA0 - cmp r0, #0 - bne _021D38D2 - str r5, [r6, #0x18] - pop {r3, r4, r5, r6, r7, pc} -_021D38D2: - add r5, r5, #1 - cmp r5, #0x15 - ble _021D38C0 - bl GF_AssertFail -_021D38DC: - bl GF_AssertFail -_021D38E0: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D3830 - - thumb_func_start ov101_021D38E4 -ov101_021D38E4: ; 0x021D38E4 - mov r2, #0 - add r3, r2, #0 -_021D38E8: - ldr r1, [r0, #0x7c] - cmp r1, #1 - beq _021D38F0 - add r3, r3, #1 -_021D38F0: - add r2, r2, #1 - add r0, r0, #4 - cmp r2, #3 - blt _021D38E8 - add r0, r3, #0 - bx lr - thumb_func_end ov101_021D38E4 - - thumb_func_start ov101_021D38FC -ov101_021D38FC: ; 0x021D38FC - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _021D390C - cmp r0, #1 - beq _021D3922 - cmp r0, #2 - beq _021D3934 - b _021D3946 -_021D390C: - add r0, r1, #0 - add r0, #0x80 - ldr r0, [r0, #0] - cmp r0, #1 - bne _021D391E - add r1, #0x84 - ldr r0, [r1, #0] - cmp r0, #1 - beq _021D3946 -_021D391E: - mov r0, #0 - bx lr -_021D3922: - ldr r0, [r1, #0x7c] - cmp r0, #1 - bne _021D3930 - add r1, #0x84 - ldr r0, [r1, #0] - cmp r0, #1 - beq _021D3946 -_021D3930: - mov r0, #0 - bx lr -_021D3934: - ldr r0, [r1, #0x7c] - cmp r0, #1 - bne _021D3942 - add r1, #0x80 - ldr r0, [r1, #0] - cmp r0, #1 - beq _021D3946 -_021D3942: - mov r0, #0 - bx lr -_021D3946: - mov r0, #1 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D38FC - - thumb_func_start ov101_021D394C -ov101_021D394C: ; 0x021D394C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r0, [sp] - add r5, r1, #0 - ldr r0, [sp, #0x20] - add r1, r3, #0 - str r0, [sp, #0x20] - add r0, r5, #0 - add r0, #0x80 - ldr r0, [r0, #0] - ldr r7, [r5, #0x7c] - str r0, [sp, #4] - add r0, r5, #0 - add r0, #0x84 - ldr r0, [r0, #0] - mov r3, #0 - mov ip, r0 - add r0, r5, #0 - add r0, #0xc8 - ldr r4, [r0, #0] - add r0, r5, #0 - add r0, #0xec - ldr r6, [r0, #0] - mov r0, #0x11 - lsl r0, r0, #4 - ldr r5, [r5, r0] - ldr r0, [sp, #0x20] - str r3, [r2, #0] - str r3, [r1, #0] - str r3, [r0, #0] - ldr r0, [sp] - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _021D399A - cmp r0, #1 - beq _021D3A04 - cmp r0, #2 - beq _021D3A80 - b _021D3AE4 -_021D399A: - ldr r0, [sp, #4] - cmp r0, #1 - beq _021D39C8 - mov r0, ip - cmp r0, #1 - beq _021D39C8 - cmp r6, r5 - bne _021D39B2 - add sp, #8 - str r6, [r2, #0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D39B2: - cmp r5, #1 - bne _021D39C0 - mov r0, #3 - str r0, [r2, #0] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D39C0: - mov r0, #1 - str r0, [r2, #0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D39C8: - ldr r0, [sp, #4] - cmp r0, #1 - beq _021D39EC - cmp r6, #2 - bne _021D39E4 - mov r0, #1 - str r0, [r2, #0] - mov r2, #2 - str r2, [r1, #0] - ldr r1, [sp, #0x20] - mov r2, #3 - str r2, [r1, #0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D39E4: - add sp, #8 - str r6, [r2, #0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D39EC: - cmp r5, #2 - bne _021D39F8 - add sp, #8 - str r5, [r2, #0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D39F8: - mov r0, #1 - str r0, [r2, #0] - mov r2, #3 - str r2, [r1, #0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D3A04: - cmp r7, #1 - beq _021D3A24 - mov r0, ip - cmp r0, #1 - beq _021D3A24 - cmp r4, r5 - bne _021D3A1A - add sp, #8 - str r4, [r2, #0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3A1A: - mov r0, #2 - str r0, [r2, #0] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3A24: - cmp r7, #1 - beq _021D3A54 - cmp r4, #2 - bne _021D3A36 - mov r0, #2 - str r0, [r2, #0] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3A36: - cmp r4, #1 - bne _021D3A46 - mov r0, #1 - str r0, [r2, #0] - mov r2, #2 - str r2, [r1, #0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D3A46: - mov r0, #2 - str r0, [r2, #0] - mov r0, #3 - str r0, [r1, #0] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3A54: - cmp r5, #2 - bne _021D3A62 - mov r0, #2 - str r0, [r2, #0] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3A62: - cmp r5, #1 - bne _021D3A72 - mov r0, #1 - str r0, [r2, #0] - mov r2, #2 - str r2, [r1, #0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D3A72: - mov r0, #2 - str r0, [r2, #0] - mov r0, #3 - str r0, [r1, #0] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3A80: - cmp r7, #1 - beq _021D3AA8 - ldr r0, [sp, #4] - cmp r0, #1 - beq _021D3AA8 - cmp r4, r6 - bne _021D3A96 - add sp, #8 - str r4, [r2, #0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3A96: - cmp r4, #1 - bne _021D3A9E - mov r0, #3 - b _021D3AA0 -_021D3A9E: - mov r0, #1 -_021D3AA0: - str r0, [r2, #0] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3AA8: - cmp r7, #1 - beq _021D3AC6 - cmp r4, #2 - bne _021D3ABA - mov r0, #2 - str r0, [r2, #0] - add sp, #8 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3ABA: - mov r0, #1 - str r0, [r2, #0] - mov r2, #3 - str r2, [r1, #0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D3AC6: - cmp r6, #2 - bne _021D3ADC - mov r0, #1 - str r0, [r2, #0] - mov r2, #2 - str r2, [r1, #0] - ldr r1, [sp, #0x20] - mov r2, #3 - str r2, [r1, #0] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D3ADC: - add sp, #8 - str r6, [r2, #0] - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3AE4: - bl GF_AssertFail - mov r0, #0 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D394C - - thumb_func_start ov101_021D3AF0 -ov101_021D3AF0: ; 0x021D3AF0 - push {r3, r4, r5, lr} - add r4, r1, #0 - mov r2, #1 - mov r1, #0 - sub r2, r2, r4 - add r5, r0, #0 - bl ov101_021D55D4 - cmp r0, #3 - bne _021D3B08 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D3B08: - mov r2, #2 - add r0, r5, #0 - mov r1, #0 - sub r2, r2, r4 - bl ov101_021D55D4 - cmp r0, #3 - bne _021D3B1C - mov r0, #1 - pop {r3, r4, r5, pc} -_021D3B1C: - mov r2, #3 - add r0, r5, #0 - mov r1, #0 - sub r2, r2, r4 - bl ov101_021D55D4 - cmp r0, #3 - bne _021D3B30 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D3B30: - mov r0, #0 - pop {r3, r4, r5, pc} - thumb_func_end ov101_021D3AF0 - - thumb_func_start ov101_021D3B34 -ov101_021D3B34: ; 0x021D3B34 - push {r3, lr} - cmp r2, #3 - bne _021D3B3E - mov r0, #1 - pop {r3, pc} -_021D3B3E: - bl ov101_021D3AF0 - cmp r0, #0 - bne _021D3B4A - mov r0, #1 - pop {r3, pc} -_021D3B4A: - mov r0, #0 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D3B34 - - thumb_func_start ov101_021D3B50 -ov101_021D3B50: ; 0x021D3B50 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r4, r1, #0 - add r0, r4, #0 - add r0, #0xf0 - ldr r7, [r0, #0] - mov r0, #0x45 - lsl r0, r0, #2 - ldr r6, [r4, r0] - mov r1, #1 - add r0, r2, #0 - sub r0, r1, r0 - str r0, [sp, #0x10] - str r2, [sp] - ldr r2, [sp, #0x10] - add r0, r4, #0 - mov r1, #0 - bl ov101_021D55D4 - mov r1, #1 - add r5, r0, #0 - add r0, r4, #0 - sub r2, r1, r7 - bl ov101_021D55D4 - str r0, [sp, #0x14] - mov r0, #1 - sub r0, r0, r6 - str r0, [sp, #4] - ldr r2, [sp, #4] - add r0, r4, #0 - mov r1, #2 - bl ov101_021D55D4 - cmp r5, #3 - beq _021D3BA2 - ldr r1, [sp, #0x14] - cmp r5, r1 - bne _021D3BA8 - cmp r5, r0 - bne _021D3BA8 -_021D3BA2: - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3BA8: - ldr r2, [sp] - mov r3, #2 - add r0, r4, #0 - mov r1, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - add r5, r0, #0 - mov r0, #2 - sub r0, r0, r7 - str r0, [sp, #0xc] - ldr r2, [sp, #0xc] - add r0, r4, #0 - mov r1, #1 - bl ov101_021D55D4 - mov r1, #2 - str r0, [sp, #0x18] - add r0, r4, #0 - sub r2, r1, r6 - bl ov101_021D55D4 - cmp r5, #3 - beq _021D3BE2 - ldr r1, [sp, #0x18] - cmp r5, r1 - bne _021D3BE8 - cmp r5, r0 - bne _021D3BE8 -_021D3BE2: - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3BE8: - ldr r0, [sp] - mov r1, #3 - sub r0, r1, r0 - str r0, [sp, #8] - ldr r2, [sp, #8] - add r0, r4, #0 - mov r1, #0 - bl ov101_021D55D4 - mov r2, #3 - add r5, r0, #0 - add r0, r4, #0 - mov r1, #1 - sub r2, r2, r7 - bl ov101_021D55D4 - add r7, r0, #0 - mov r0, #3 - sub r0, r0, r6 - str r0, [sp, #0x1c] - ldr r2, [sp, #0x1c] - add r0, r4, #0 - mov r1, #2 - bl ov101_021D55D4 - cmp r5, #3 - beq _021D3C26 - cmp r5, r7 - bne _021D3C2C - cmp r5, r0 - bne _021D3C2C -_021D3C26: - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3C2C: - ldr r2, [sp, #0x10] - add r0, r4, #0 - mov r1, #0 - bl ov101_021D55D4 - add r5, r0, #0 - ldr r2, [sp, #0xc] - add r0, r4, #0 - mov r1, #1 - bl ov101_021D55D4 - add r6, r0, #0 - ldr r2, [sp, #0x1c] - add r0, r4, #0 - mov r1, #2 - bl ov101_021D55D4 - cmp r5, #3 - beq _021D3C5A - cmp r5, r6 - bne _021D3C60 - cmp r5, r0 - bne _021D3C60 -_021D3C5A: - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3C60: - ldr r2, [sp, #8] - add r0, r4, #0 - mov r1, #0 - bl ov101_021D55D4 - add r5, r0, #0 - ldr r2, [sp, #0xc] - add r0, r4, #0 - mov r1, #1 - bl ov101_021D55D4 - add r6, r0, #0 - ldr r2, [sp, #4] - add r0, r4, #0 - mov r1, #2 - bl ov101_021D55D4 - cmp r5, #3 - beq _021D3C8E - cmp r5, r6 - bne _021D3C94 - cmp r5, r0 - bne _021D3C94 -_021D3C8E: - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3C94: - mov r0, #0 - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D3B50 - - thumb_func_start ov101_021D3C9C -ov101_021D3C9C: ; 0x021D3C9C - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r1, #0 - add r0, r5, #0 - add r0, #0xcc - ldr r6, [r0, #0] - mov r0, #0x45 - lsl r0, r0, #2 - ldr r4, [r5, r0] - mov r0, #1 - sub r0, r0, r6 - str r0, [sp, #0xc] - add r7, r2, #0 - ldr r2, [sp, #0xc] - add r0, r5, #0 - mov r1, #0 - bl ov101_021D55D4 - mov r1, #1 - str r0, [sp, #0x10] - add r0, r5, #0 - sub r2, r1, r7 - bl ov101_021D55D4 - str r0, [sp, #0x14] - mov r0, #1 - sub r0, r0, r4 - str r0, [sp] - ldr r2, [sp] - add r0, r5, #0 - mov r1, #2 - bl ov101_021D55D4 - ldr r2, [sp, #0x10] - ldr r1, [sp, #0x14] - cmp r2, r1 - bne _021D3CF2 - add r1, r2, #0 - cmp r1, r0 - bne _021D3CF2 - add sp, #0x24 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021D3CF2: - mov r2, #2 - add r0, r5, #0 - mov r1, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - str r0, [sp, #0x18] - mov r0, #2 - sub r0, r0, r7 - str r0, [sp, #8] - ldr r2, [sp, #8] - add r0, r5, #0 - mov r1, #1 - bl ov101_021D55D4 - mov r1, #2 - str r0, [sp, #0x1c] - add r0, r5, #0 - sub r2, r1, r4 - bl ov101_021D55D4 - ldr r2, [sp, #0x18] - ldr r1, [sp, #0x1c] - cmp r2, r1 - bne _021D3D30 - add r1, r2, #0 - cmp r1, r0 - bne _021D3D30 - add sp, #0x24 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021D3D30: - mov r0, #3 - sub r0, r0, r6 - str r0, [sp, #4] - ldr r2, [sp, #4] - add r0, r5, #0 - mov r1, #0 - bl ov101_021D55D4 - mov r2, #3 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #1 - sub r2, r2, r7 - bl ov101_021D55D4 - str r0, [sp, #0x20] - mov r0, #3 - sub r7, r0, r4 - add r0, r5, #0 - mov r1, #2 - add r2, r7, #0 - bl ov101_021D55D4 - ldr r1, [sp, #0x20] - cmp r6, r1 - bne _021D3D6E - cmp r6, r0 - bne _021D3D6E - add sp, #0x24 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021D3D6E: - ldr r2, [sp, #0xc] - add r0, r5, #0 - mov r1, #0 - bl ov101_021D55D4 - add r4, r0, #0 - ldr r2, [sp, #8] - add r0, r5, #0 - mov r1, #1 - bl ov101_021D55D4 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #2 - add r2, r7, #0 - bl ov101_021D55D4 - cmp r4, r6 - bne _021D3D9E - cmp r4, r0 - bne _021D3D9E - add sp, #0x24 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021D3D9E: - ldr r2, [sp, #4] - add r0, r5, #0 - mov r1, #0 - bl ov101_021D55D4 - add r4, r0, #0 - ldr r2, [sp, #8] - add r0, r5, #0 - mov r1, #1 - bl ov101_021D55D4 - add r6, r0, #0 - ldr r2, [sp] - add r0, r5, #0 - mov r1, #2 - bl ov101_021D55D4 - cmp r4, r6 - bne _021D3DCE - cmp r4, r0 - bne _021D3DCE - add sp, #0x24 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021D3DCE: - mov r0, #0 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - thumb_func_end ov101_021D3C9C - - thumb_func_start ov101_021D3DD4 -ov101_021D3DD4: ; 0x021D3DD4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r5, r1, #0 - add r0, r5, #0 - add r0, #0xcc - ldr r6, [r0, #0] - add r0, r5, #0 - add r0, #0xf0 - ldr r4, [r0, #0] - mov r0, #1 - sub r0, r0, r6 - str r0, [sp, #0xc] - add r7, r2, #0 - ldr r2, [sp, #0xc] - add r0, r5, #0 - mov r1, #0 - bl ov101_021D55D4 - mov r1, #1 - str r0, [sp, #0x10] - add r0, r5, #0 - sub r2, r1, r4 - bl ov101_021D55D4 - str r0, [sp, #0x14] - mov r0, #1 - sub r0, r0, r7 - str r0, [sp] - ldr r2, [sp] - add r0, r5, #0 - mov r1, #2 - bl ov101_021D55D4 - ldr r2, [sp, #0x10] - ldr r1, [sp, #0x14] - cmp r2, r1 - bne _021D3E2A - add r1, r2, #0 - cmp r1, r0 - bne _021D3E2A - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3E2A: - mov r2, #2 - add r0, r5, #0 - mov r1, #0 - sub r2, r2, r6 - bl ov101_021D55D4 - str r0, [sp, #0x18] - mov r0, #2 - sub r0, r0, r4 - str r0, [sp, #8] - ldr r2, [sp, #8] - add r0, r5, #0 - mov r1, #1 - bl ov101_021D55D4 - mov r1, #2 - str r0, [sp, #0x1c] - add r0, r5, #0 - sub r2, r1, r7 - bl ov101_021D55D4 - ldr r2, [sp, #0x18] - ldr r1, [sp, #0x1c] - cmp r2, r1 - bne _021D3E68 - add r1, r2, #0 - cmp r1, r0 - bne _021D3E68 - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3E68: - mov r0, #3 - sub r0, r0, r6 - str r0, [sp, #4] - ldr r2, [sp, #4] - add r0, r5, #0 - mov r1, #0 - bl ov101_021D55D4 - mov r2, #3 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #1 - sub r2, r2, r4 - bl ov101_021D55D4 - add r4, r0, #0 - mov r0, #3 - sub r7, r0, r7 - add r0, r5, #0 - mov r1, #2 - add r2, r7, #0 - bl ov101_021D55D4 - cmp r6, r4 - bne _021D3EA4 - cmp r6, r0 - bne _021D3EA4 - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3EA4: - ldr r2, [sp, #0xc] - add r0, r5, #0 - mov r1, #0 - bl ov101_021D55D4 - add r4, r0, #0 - ldr r2, [sp, #8] - add r0, r5, #0 - mov r1, #1 - bl ov101_021D55D4 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #2 - add r2, r7, #0 - bl ov101_021D55D4 - cmp r4, r6 - bne _021D3ED4 - cmp r4, r0 - bne _021D3ED4 - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3ED4: - ldr r2, [sp, #4] - add r0, r5, #0 - mov r1, #0 - bl ov101_021D55D4 - add r4, r0, #0 - ldr r2, [sp, #8] - add r0, r5, #0 - mov r1, #1 - bl ov101_021D55D4 - add r6, r0, #0 - ldr r2, [sp] - add r0, r5, #0 - mov r1, #2 - bl ov101_021D55D4 - cmp r4, r6 - bne _021D3F04 - cmp r4, r0 - bne _021D3F04 - add sp, #0x20 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3F04: - mov r0, #0 - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D3DD4 - - thumb_func_start ov101_021D3F0C -ov101_021D3F0C: ; 0x021D3F0C - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r0, r5, #0 - add r0, #0xf0 - ldr r7, [r0, #0] - mov r0, #0x45 - lsl r0, r0, #2 - mov r3, #2 - ldr r6, [r5, r0] - add r0, r5, #0 - mov r1, #0 - sub r2, r3, r2 - bl ov101_021D55D4 - mov r2, #2 - add r4, r0, #0 - add r0, r5, #0 - mov r1, #1 - sub r2, r2, r7 - bl ov101_021D55D4 - mov r1, #2 - add r7, r0, #0 - add r0, r5, #0 - sub r2, r1, r6 - bl ov101_021D55D4 - cmp r4, #3 - beq _021D3F4E - cmp r4, r7 - bne _021D3F52 - cmp r4, r0 - bne _021D3F52 -_021D3F4E: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3F52: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D3F0C - - thumb_func_start ov101_021D3F58 -ov101_021D3F58: ; 0x021D3F58 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r2, #0 - add r2, r5, #0 - add r2, #0xcc - mov r0, #0x45 - ldr r3, [r2, #0] - lsl r0, r0, #2 - mov r2, #2 - ldr r6, [r5, r0] - add r0, r5, #0 - mov r1, #0 - sub r2, r2, r3 - bl ov101_021D55D4 - mov r2, #2 - add r4, r0, #0 - add r0, r5, #0 - mov r1, #1 - sub r2, r2, r7 - bl ov101_021D55D4 - mov r1, #2 - add r7, r0, #0 - add r0, r5, #0 - sub r2, r1, r6 - bl ov101_021D55D4 - cmp r4, r7 - bne _021D3F9C - cmp r4, r0 - bne _021D3F9C - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3F9C: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D3F58 - - thumb_func_start ov101_021D3FA0 -ov101_021D3FA0: ; 0x021D3FA0 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r2, #0 - add r2, r5, #0 - add r2, #0xcc - add r0, r5, #0 - ldr r3, [r2, #0] - add r0, #0xf0 - mov r2, #2 - ldr r6, [r0, #0] - add r0, r5, #0 - mov r1, #0 - sub r2, r2, r3 - bl ov101_021D55D4 - mov r2, #2 - add r4, r0, #0 - add r0, r5, #0 - mov r1, #1 - sub r2, r2, r6 - bl ov101_021D55D4 - mov r1, #2 - add r6, r0, #0 - add r0, r5, #0 - sub r2, r1, r7 - bl ov101_021D55D4 - cmp r4, r6 - bne _021D3FE4 - cmp r4, r0 - bne _021D3FE4 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D3FE4: - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D3FA0 - - thumb_func_start ov101_021D3FE8 -ov101_021D3FE8: ; 0x021D3FE8 - push {r4, r5, r6, lr} - add r6, r0, #0 - add r4, r6, #0 - lsl r5, r1, #2 - add r4, #0x90 - ldr r0, [r4, r5] - mov r1, #0x2a - add r0, r0, r2 - str r0, [r4, r5] - ldr r0, [r4, r5] - lsl r1, r1, #0x10 - bl _s32_div_f - str r1, [r4, r5] - ldr r1, [r4, r5] - asr r0, r1, #0xb - lsr r0, r0, #0x14 - add r0, r1, r0 - asr r1, r0, #0xc - asr r0, r1, #4 - lsr r0, r0, #0x1b - add r0, r1, r0 - asr r1, r0, #5 - mov r0, #0x15 - sub r1, r0, r1 - add r0, r6, r5 - add r0, #0xa8 - str r1, [r0, #0] - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov101_021D3FE8 - - thumb_func_start ov101_021D4024 -ov101_021D4024: ; 0x021D4024 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r7, #0 - add r5, #0x90 - lsl r4, r1, #2 - ldr r0, [r5, r4] - lsr r6, r0, #0x1f - lsl r3, r0, #0xf - sub r3, r3, r6 - mov r0, #0xf - ror r3, r0 - add r0, r6, r3 - beq _021D4058 - cmp r0, r2 - bge _021D4044 - add r2, r0, #0 -_021D4044: - add r0, r7, #0 - bl ov101_021D3FE8 - ldr r0, [r5, r4] - lsr r2, r0, #0x1f - lsl r1, r0, #0xf - sub r1, r1, r2 - mov r0, #0xf - ror r1, r0 - add r0, r2, r1 -_021D4058: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4024 - - thumb_func_start ov101_021D405C -ov101_021D405C: ; 0x021D405C - push {r3, lr} - bl sub_0201D2E8 - mov r1, #0x64 - bl _u32_div_f - add r0, r1, #0 - pop {r3, pc} - thumb_func_end ov101_021D405C - - thumb_func_start ov101_021D406C -ov101_021D406C: ; 0x021D406C - ldr r3, [r1, #0] - sub r2, r3, r0 - str r2, [r1, #0] - bpl _021D4078 - mov r2, #0 - str r2, [r1, #0] -_021D4078: - cmp r3, r0 - bhs _021D4080 - mov r0, #1 - bx lr -_021D4080: - mov r0, #0 - bx lr - thumb_func_end ov101_021D406C - - thumb_func_start ov101_021D4084 -ov101_021D4084: ; 0x021D4084 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D405C - add r4, #0x88 - ldr r1, [r4, #0] - lsl r2, r1, #2 - ldr r1, _021D40A4 ; =0x021D9520 - ldr r1, [r1, r2] - cmp r1, r0 - bls _021D409E - mov r0, #1 - pop {r4, pc} -_021D409E: - mov r0, #0 - pop {r4, pc} - nop -_021D40A4: .word 0x021D9520 - thumb_func_end ov101_021D4084 - - thumb_func_start ov101_021D40A8 -ov101_021D40A8: ; 0x021D40A8 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r1, #0 - str r1, [r5, #0x74] - bl ov101_021D4084 - cmp r0, #1 - beq _021D40BA - b _021D41CC -_021D40BA: - add r0, r5, #0 - bl ov101_021D405C - add r1, r5, #0 - str r0, [sp] - add r1, #0x88 - ldr r1, [r1, #0] - ldr r0, _021D41D0 ; =0x021D95C8 - lsl r3, r1, #4 - mov r1, #0x47 - lsl r1, r1, #4 - ldr r2, [r5, r1] - add r4, r0, r3 - add r2, r2, #1 - str r2, [r5, r1] - ldrh r0, [r0, r3] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #0 - beq _021D40FA - ldr r1, [r5, #0x74] - mov r0, #8 - orr r0, r1 - str r0, [r5, #0x74] - mov r0, #0x4a - lsl r0, r0, #4 - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_021D40FA: - ldrh r0, [r4, #2] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #0 - beq _021D411A - ldr r1, [r5, #0x74] - mov r0, #4 - orr r0, r1 - str r0, [r5, #0x74] - ldr r0, _021D41D4 ; =0x0000049C - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_021D411A: - ldrh r0, [r4, #4] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #0 - beq _021D413C - ldr r1, [r5, #0x74] - mov r0, #0x80 - orr r0, r1 - str r0, [r5, #0x74] - mov r0, #0x4b - lsl r0, r0, #4 - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_021D413C: - ldrh r0, [r4, #6] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #0 - beq _021D415C - ldr r1, [r5, #0x74] - mov r0, #0x40 - orr r0, r1 - str r0, [r5, #0x74] - ldr r0, _021D41D8 ; =0x000004AC - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_021D415C: - ldrh r0, [r4, #8] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #0 - beq _021D417C - ldr r1, [r5, #0x74] - mov r0, #0x20 - orr r0, r1 - str r0, [r5, #0x74] - ldr r0, _021D41DC ; =0x000004A8 - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_021D417C: - ldrh r0, [r4, #0xa] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #0 - beq _021D419C - ldr r1, [r5, #0x74] - mov r0, #0x10 - orr r0, r1 - str r0, [r5, #0x74] - ldr r0, _021D41E0 ; =0x000004A4 - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_021D419C: - ldrh r0, [r4, #0xc] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #0 - ldr r1, [r5, #0x74] - beq _021D41BC - mov r0, #2 - orr r0, r1 - str r0, [r5, #0x74] - ldr r0, _021D41E4 ; =0x00000498 - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - mov r0, #1 - pop {r3, r4, r5, pc} -_021D41BC: - mov r0, #1 - orr r1, r0 - str r1, [r5, #0x74] - ldr r1, _021D41E8 ; =0x00000494 - ldr r2, [r5, r1] - add r2, r2, #1 - str r2, [r5, r1] - pop {r3, r4, r5, pc} -_021D41CC: - mov r0, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D41D0: .word 0x021D95C8 -_021D41D4: .word 0x0000049C -_021D41D8: .word 0x000004AC -_021D41DC: .word 0x000004A8 -_021D41E0: .word 0x000004A4 -_021D41E4: .word 0x00000498 -_021D41E8: .word 0x00000494 - thumb_func_end ov101_021D40A8 - - thumb_func_start ov101_021D41EC -ov101_021D41EC: ; 0x021D41EC - push {r4, lr} - add r4, r0, #0 - bl ov101_021D405C - add r4, #0x88 - ldr r1, [r4, #0] - lsl r2, r1, #2 - ldr r1, _021D420C ; =0x021D94D8 - ldr r1, [r1, r2] - cmp r0, r1 - bhs _021D4206 - mov r0, #1 - pop {r4, pc} -_021D4206: - mov r0, #0 - pop {r4, pc} - nop -_021D420C: .word 0x021D94D8 - thumb_func_end ov101_021D41EC - - thumb_func_start ov101_021D4210 -ov101_021D4210: ; 0x021D4210 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - bl ov101_021D405C - str r0, [sp, #4] - add r0, r5, #0 - add r0, #0x88 - ldr r1, [r0, #0] - mov r0, #0x48 - ldr r2, _021D42C0 ; =0x021D9934 - mul r0, r1 - add r0, r2, r0 - str r0, [sp] - mov r6, #0 - add r4, r0, #0 - add r7, sp, #4 -_021D4232: - ldr r0, [r4, #0] - add r1, r7, #0 - bl ov101_021D406C - cmp r0, #1 - bne _021D4292 - mov r0, #0xc - add r1, r6, #0 - mul r1, r0 - ldr r0, [sp] - add r1, r0, r1 - ldr r0, [r1, #4] - str r0, [r5, #0x50] - ldr r0, [r1, #8] - str r0, [r5, #0x4c] - ldr r0, [r5, #0x50] - lsl r1, r0, #2 - ldr r0, _021D42C4 ; =0x021D9568 - ldr r0, [r0, r1] - str r0, [r5, #0x18] - ldr r0, [r5, #0x4c] - cmp r0, #0 - beq _021D426C - cmp r0, #1 - beq _021D4278 - cmp r0, #2 - beq _021D4284 - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D426C: - ldr r0, _021D42C8 ; =0x00000478 - add sp, #8 - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - pop {r3, r4, r5, r6, r7, pc} -_021D4278: - ldr r0, _021D42CC ; =0x0000047C - add sp, #8 - ldr r1, [r5, r0] - add r1, r1, #1 - str r1, [r5, r0] - pop {r3, r4, r5, r6, r7, pc} -_021D4284: - mov r0, #0x12 - lsl r0, r0, #6 - ldr r1, [r5, r0] - add sp, #8 - add r1, r1, #1 - str r1, [r5, r0] - pop {r3, r4, r5, r6, r7, pc} -_021D4292: - add r6, r6, #1 - add r4, #0xc - cmp r6, #6 - blt _021D4232 - sub r1, r6, #1 - mov r0, #0xc - add r2, r1, #0 - mul r2, r0 - ldr r0, [sp] - add r1, r0, r2 - ldr r0, [r1, #4] - str r0, [r5, #0x50] - ldr r0, [r1, #8] - str r0, [r5, #0x4c] - ldr r0, [r5, #0x50] - lsl r1, r0, #2 - ldr r0, _021D42C4 ; =0x021D9568 - ldr r0, [r0, r1] - str r0, [r5, #0x18] - bl GF_AssertFail - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D42C0: .word 0x021D9934 -_021D42C4: .word 0x021D9568 -_021D42C8: .word 0x00000478 -_021D42CC: .word 0x0000047C - thumb_func_end ov101_021D4210 - - thumb_func_start ov101_021D42D0 -ov101_021D42D0: ; 0x021D42D0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r6, r0, #0 - mov r4, #0 - bl ov101_021D405C - str r0, [sp, #4] - add r0, r6, #0 - add r0, #0x88 - ldr r1, [r0, #0] - mov r0, #0x48 - mul r0, r1 - ldr r2, _021D4360 ; =0x021D9784 - ldr r1, [r6, #0x4c] - add r2, r2, r0 - mov r0, #0x18 - mul r0, r1 - add r5, r2, r0 - str r5, [sp] - add r7, sp, #4 -_021D42F8: - ldr r0, [r5, #0] - add r1, r7, #0 - bl ov101_021D406C - cmp r0, #1 - bne _021D4348 - ldr r0, [sp] - lsl r1, r4, #3 - add r0, r0, r1 - ldr r1, [r0, #4] - mov r0, #0x56 - lsl r0, r0, #2 - str r1, [r6, r0] - ldr r0, [r6, r0] - cmp r0, #0 - beq _021D4324 - cmp r0, #1 - beq _021D4330 - cmp r0, #2 - beq _021D433C - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} -_021D4324: - ldr r0, _021D4364 ; =0x00000488 - add sp, #8 - ldr r1, [r6, r0] - add r1, r1, #1 - str r1, [r6, r0] - pop {r3, r4, r5, r6, r7, pc} -_021D4330: - ldr r0, _021D4368 ; =0x00000484 - add sp, #8 - ldr r1, [r6, r0] - add r1, r1, #1 - str r1, [r6, r0] - pop {r3, r4, r5, r6, r7, pc} -_021D433C: - ldr r0, _021D436C ; =0x0000048C - add sp, #8 - ldr r1, [r6, r0] - add r1, r1, #1 - str r1, [r6, r0] - pop {r3, r4, r5, r6, r7, pc} -_021D4348: - add r4, r4, #1 - add r5, #8 - cmp r4, #3 - blo _021D42F8 - mov r0, #0x56 - mov r1, #1 - lsl r0, r0, #2 - str r1, [r6, r0] - bl GF_AssertFail - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D4360: .word 0x021D9784 -_021D4364: .word 0x00000488 -_021D4368: .word 0x00000484 -_021D436C: .word 0x0000048C - thumb_func_end ov101_021D42D0 - - thumb_func_start ov101_021D4370 -ov101_021D4370: ; 0x021D4370 - push {r4, lr} - add r1, r0, #0 - add r1, #0x88 - ldr r1, [r1, #0] - lsl r2, r1, #2 - ldr r1, _021D4390 ; =0x021D9538 - ldr r4, [r1, r2] - bl ov101_021D405C - cmp r0, r4 - bhs _021D438A - mov r0, #1 - pop {r4, pc} -_021D438A: - mov r0, #0 - pop {r4, pc} - nop -_021D4390: .word 0x021D9538 - thumb_func_end ov101_021D4370 - - thumb_func_start ov101_021D4394 -ov101_021D4394: ; 0x021D4394 - push {r3, r4, r5, lr} - add r4, r0, #0 - add r1, r4, #0 - add r1, #0x88 - ldr r1, [r1, #0] - ldr r2, _021D4488 ; =0x021D9628 - lsl r1, r1, #4 - add r5, r2, r1 - bl ov101_021D405C - str r0, [sp] - mov r0, #0 - str r0, [r4, #0x74] - add r0, r4, #0 - bl ov101_021D4370 - cmp r0, #0 - bne _021D441E - ldr r0, _021D448C ; =0x00000474 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - ldr r1, [r4, #0x50] - cmp r1, #5 - bhi _021D440E - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D43D2: ; jump table - .short _021D43DE - _021D43D2 - 2 ; case 0 - .short _021D43DE - _021D43D2 - 2 ; case 1 - .short _021D43DE - _021D43D2 - 2 ; case 2 - .short _021D43F6 - _021D43D2 - 2 ; case 3 - .short _021D43F6 - _021D43D2 - 2 ; case 4 - .short _021D43F6 - _021D43D2 - 2 ; case 5 -_021D43DE: - mov r1, #2 - ldr r2, [r4, #0x74] - lsl r1, r1, #8 - orr r1, r2 - str r1, [r4, #0x74] - add r1, r0, #0 - add r1, #0x44 - ldr r1, [r4, r1] - add r0, #0x44 - add r1, r1, #1 - str r1, [r4, r0] - pop {r3, r4, r5, pc} -_021D43F6: - mov r1, #1 - ldr r2, [r4, #0x74] - lsl r1, r1, #8 - orr r1, r2 - str r1, [r4, #0x74] - add r1, r0, #0 - add r1, #0x40 - ldr r1, [r4, r1] - add r0, #0x40 - add r1, r1, #1 - str r1, [r4, r0] - pop {r3, r4, r5, pc} -_021D440E: - bl GF_AssertFail - mov r0, #2 - ldr r1, [r4, #0x74] - lsl r0, r0, #8 - orr r0, r1 - str r0, [r4, #0x74] - pop {r3, r4, r5, pc} -_021D441E: - ldr r0, [r5, #0] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #1 - bne _021D443C - ldr r1, [r4, #0x74] - mov r0, #4 - orr r0, r1 - str r0, [r4, #0x74] - ldr r0, _021D4490 ; =0x0000049C - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - pop {r3, r4, r5, pc} -_021D443C: - ldr r0, [r5, #4] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #1 - bne _021D445A - ldr r1, [r4, #0x74] - mov r0, #0x40 - orr r0, r1 - str r0, [r4, #0x74] - ldr r0, _021D4494 ; =0x000004AC - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - pop {r3, r4, r5, pc} -_021D445A: - ldr r0, [r5, #4] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #1 - bne _021D4478 - ldr r1, [r4, #0x74] - mov r0, #0x10 - orr r0, r1 - str r0, [r4, #0x74] - ldr r0, _021D4498 ; =0x000004A4 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - pop {r3, r4, r5, pc} -_021D4478: - mov r0, #1 - str r0, [r4, #0x74] - ldr r0, _021D449C ; =0x00000494 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - pop {r3, r4, r5, pc} - nop -_021D4488: .word 0x021D9628 -_021D448C: .word 0x00000474 -_021D4490: .word 0x0000049C -_021D4494: .word 0x000004AC -_021D4498: .word 0x000004A4 -_021D449C: .word 0x00000494 - thumb_func_end ov101_021D4394 - - thumb_func_start ov101_021D44A0 -ov101_021D44A0: ; 0x021D44A0 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D405C - add r4, #0x88 - ldr r1, [r4, #0] - lsl r2, r1, #2 - ldr r1, _021D44C0 ; =0x021D9580 - ldr r1, [r1, r2] - cmp r0, r1 - bhs _021D44BA - mov r0, #1 - pop {r4, pc} -_021D44BA: - mov r0, #0 - pop {r4, pc} - nop -_021D44C0: .word 0x021D9580 - thumb_func_end ov101_021D44A0 - - thumb_func_start ov101_021D44C4 -ov101_021D44C4: ; 0x021D44C4 - push {r4, lr} - add r4, r0, #0 - bl ov101_021D405C - add r4, #0x88 - ldr r1, [r4, #0] - lsl r2, r1, #2 - ldr r1, _021D44E4 ; =0x021D9508 - ldr r1, [r1, r2] - cmp r0, r1 - bhs _021D44DE - mov r0, #1 - pop {r4, pc} -_021D44DE: - mov r0, #0 - pop {r4, pc} - nop -_021D44E4: .word 0x021D9508 - thumb_func_end ov101_021D44C4 - - thumb_func_start ov101_021D44E8 -ov101_021D44E8: ; 0x021D44E8 - push {r4, lr} - ldr r4, [r0, #0x18] - bl ov101_021D405C - cmp r0, r4 - bhs _021D44F8 - mov r0, #1 - pop {r4, pc} -_021D44F8: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D44E8 - - thumb_func_start ov101_021D44FC -ov101_021D44FC: ; 0x021D44FC - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r5, r0, #0 - ldr r4, [r5, #0x18] - bl ov101_021D405C - str r0, [sp] - add r0, r5, #0 - add r0, #0x88 - ldr r0, [r0, #0] - ldr r1, _021D454C ; =0x021D9598 - lsl r0, r0, #3 - add r6, r1, r0 - ldr r0, [r5, #0x28] - cmp r0, #2 - bne _021D4520 - sub r4, #0xa - b _021D453E -_021D4520: - ldr r0, [r6, #0] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #1 - bne _021D4530 - sub r4, #0xa - b _021D453E -_021D4530: - ldr r0, [r6, #4] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #1 - bne _021D453E - sub r4, r4, #5 -_021D453E: - cmp r4, #0 - bge _021D4544 - mov r4, #0 -_021D4544: - str r4, [r5, #0x18] - add sp, #4 - pop {r3, r4, r5, r6, pc} - nop -_021D454C: .word 0x021D9598 - thumb_func_end ov101_021D44FC - - thumb_func_start ov101_021D4550 -ov101_021D4550: ; 0x021D4550 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r4, [r5, #0x18] - bl ov101_021D405C - str r0, [sp] - add r5, #0x88 - ldr r1, [r5, #0] - mov r0, #0x90 - mul r0, r1 - ldr r2, _021D45AC ; =0x021D9AE4 - mov r1, #0 - add r5, r2, r0 - add r2, r5, #0 -_021D456C: - ldr r0, [r2, #0] - cmp r4, r0 - blo _021D459C - lsl r4, r1, #4 - add r0, r5, r4 - ldr r0, [r0, #4] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #1 - bne _021D4586 - mov r0, #1 - pop {r3, r4, r5, pc} -_021D4586: - add r0, r5, r4 - ldr r0, [r0, #8] - add r1, sp, #0 - bl ov101_021D406C - cmp r0, #1 - bne _021D4598 - mov r0, #0 - pop {r3, r4, r5, pc} -_021D4598: - mov r0, #2 - pop {r3, r4, r5, pc} -_021D459C: - add r1, r1, #1 - add r2, #0x10 - cmp r1, #9 - blt _021D456C - bl GF_AssertFail - mov r0, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D45AC: .word 0x021D9AE4 - thumb_func_end ov101_021D4550 - - thumb_func_start ov101_021D45B0 -ov101_021D45B0: ; 0x021D45B0 - push {r4, lr} - add r4, r0, #0 - bl sub_0201D2E8 - mov r1, #6 - bl _s32_div_f - str r1, [r4, #0x34] - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D45B0 - - thumb_func_start ov101_021D45C4 -ov101_021D45C4: ; 0x021D45C4 - push {r4, lr} - mov r1, #0x12 - lsl r1, r1, #4 - add r4, r0, r1 - mov r1, #0 - str r1, [r4, #0] - str r1, [r4, #4] - str r0, [r4, #0xc] - ldr r0, _021D45E4 ; =ov101_021D4614 - add r1, r4, #0 - mov r2, #0x8a - bl sub_0200D9E8 - str r0, [r4, #0x10] - pop {r4, pc} - nop -_021D45E4: .word ov101_021D4614 - thumb_func_end ov101_021D45C4 - - thumb_func_start ov101_021D45E8 -ov101_021D45E8: ; 0x021D45E8 - mov r1, #0x13 - lsl r1, r1, #4 - ldr r3, _021D45F4 ; =sub_0200DA58 - ldr r0, [r0, r1] - bx r3 - nop -_021D45F4: .word sub_0200DA58 - thumb_func_end ov101_021D45E8 - - thumb_func_start ov101_021D45F8 -ov101_021D45F8: ; 0x021D45F8 - mov r1, #0x49 - lsl r1, r1, #2 - mov r3, #0 - str r3, [r0, r1] - add r2, r1, #4 - str r3, [r0, r2] - mov r2, #1 - sub r1, r1, #4 - str r2, [r0, r1] - bx lr - thumb_func_end ov101_021D45F8 - - thumb_func_start ov101_021D460C -ov101_021D460C: ; 0x021D460C - mov r1, #0x49 - lsl r1, r1, #2 - ldr r0, [r0, r1] - bx lr - thumb_func_end ov101_021D460C - - thumb_func_start ov101_021D4614 -ov101_021D4614: ; 0x021D4614 - push {r3, r4, r5, lr} - add r5, r1, #0 - ldr r0, [r5, #0] - ldr r4, [r5, #0xc] - cmp r0, #3 - bhi _021D4702 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D462C: ; jump table - .short _021D4702 - _021D462C - 2 ; case 0 - .short _021D4634 - _021D462C - 2 ; case 1 - .short _021D4642 - _021D462C - 2 ; case 2 - .short _021D4664 - _021D462C - 2 ; case 3 -_021D4634: - add r0, r5, #0 - bl ov101_021D4714 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - pop {r3, r4, r5, pc} -_021D4642: - ldr r0, [r5, #0x14] - cmp r0, #0 - beq _021D4650 - bl ov101_021D505C - cmp r0, #1 - bne _021D4702 -_021D4650: - ldr r0, [r5, #0x18] - cmp r0, #0 - beq _021D465E - bl ov101_021D505C - cmp r0, #1 - bne _021D4702 -_021D465E: - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] -_021D4664: - mov r0, #1 - lsl r0, r0, #0xa - bl ov101_021D55F8 - cmp r0, #0 - bne _021D4676 - ldr r0, [r4, #0x64] - cmp r0, #0 - bne _021D46C4 -_021D4676: - ldr r0, _021D4704 ; =0x0000062D - bl sub_02005748 - ldr r1, [r4, #0x60] - ldr r0, [r4, #0x64] - add r1, r1, r0 - ldr r0, _021D4708 ; =0x0000C350 - str r1, [r4, #0x60] - cmp r1, r0 - blt _021D468C - str r0, [r4, #0x60] -_021D468C: - ldr r0, [r4, #8] - cmp r0, #1 - bne _021D469A - ldr r1, [r4, #0x14] - ldr r0, [r4, #0x64] - add r0, r1, r0 - str r0, [r4, #0x14] -_021D469A: - mov r0, #0 - str r0, [r4, #0x64] - ldr r0, [r5, #0x14] - cmp r0, #0 - beq _021D46AC - bl sub_0207136C - mov r0, #0 - str r0, [r5, #0x14] -_021D46AC: - ldr r0, [r5, #0x18] - cmp r0, #0 - beq _021D46BA - bl sub_0207136C - mov r0, #0 - str r0, [r5, #0x18] -_021D46BA: - mov r0, #1 - str r0, [r5, #4] - mov r0, #0 - str r0, [r5, #0] - pop {r3, r4, r5, pc} -_021D46C4: - ldr r1, _021D470C ; =0x021BF67C - mov r0, #3 - ldr r2, [r1, #0x44] - ldr r1, _021D4710 ; =0x00000C03 - tst r1, r2 - beq _021D46D2 - mov r0, #1 -_021D46D2: - ldr r1, [r5, #8] - add r1, r1, #1 - str r1, [r5, #8] - tst r0, r1 - bne _021D4702 - ldr r0, [r4, #0x64] - sub r0, r0, #1 - str r0, [r4, #0x64] - ldr r0, [r4, #0x60] - add r1, r0, #1 - ldr r0, _021D4708 ; =0x0000C350 - str r1, [r4, #0x60] - cmp r1, r0 - blt _021D46F0 - str r0, [r4, #0x60] -_021D46F0: - ldr r0, _021D4704 ; =0x0000062D - bl sub_02005748 - ldr r0, [r4, #8] - cmp r0, #1 - bne _021D4702 - ldr r0, [r4, #0x14] - add r0, r0, #1 - str r0, [r4, #0x14] -_021D4702: - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D4704: .word 0x0000062D -_021D4708: .word 0x0000C350 -_021D470C: .word 0x021BF67C -_021D4710: .word 0x00000C03 - thumb_func_end ov101_021D4614 - - thumb_func_start ov101_021D4714 -ov101_021D4714: ; 0x021D4714 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r7, [r5, #0xc] - ldr r6, [r7, #0x48] - cmp r6, #0 - bne _021D4724 - bl GF_AssertFail -_021D4724: - mov r4, #0 -_021D4726: - mov r0, #1 - tst r0, r6 - beq _021D4758 - ldr r0, [r5, #0x14] - cmp r0, #0 - bne _021D4740 - ldr r2, [r7, #0x64] - add r0, r7, #0 - add r1, r4, #0 - bl ov101_021D5028 - str r0, [r5, #0x14] - b _021D4758 -_021D4740: - ldr r0, [r5, #0x18] - cmp r0, #0 - bne _021D4754 - ldr r2, [r7, #0x64] - add r0, r7, #0 - add r1, r4, #0 - bl ov101_021D5028 - str r0, [r5, #0x18] - b _021D4758 -_021D4754: - bl GF_AssertFail -_021D4758: - add r4, r4, #1 - lsr r6, r6, #1 - cmp r4, #5 - blt _021D4726 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4714 - - thumb_func_start ov101_021D4764 -ov101_021D4764: ; 0x021D4764 - push {r4, lr} - mov r1, #0x4f - lsl r1, r1, #2 - add r4, r0, r1 - mov r1, #0 - str r1, [r4, #0] - str r1, [r4, #4] - str r0, [r4, #0x20] - ldr r0, _021D4784 ; =ov101_021D4824 - add r1, r4, #0 - mov r2, #0x84 - bl sub_0200D9E8 - str r0, [r4, #0x24] - pop {r4, pc} - nop -_021D4784: .word ov101_021D4824 - thumb_func_end ov101_021D4764 - - thumb_func_start ov101_021D4788 -ov101_021D4788: ; 0x021D4788 - mov r1, #0x16 - lsl r1, r1, #4 - ldr r3, _021D4794 ; =sub_0200DA58 - ldr r0, [r0, r1] - bx r3 - nop -_021D4794: .word sub_0200DA58 - thumb_func_end ov101_021D4788 - - thumb_func_start ov101_021D4798 -ov101_021D4798: ; 0x021D4798 - mov r2, #0x4f - lsl r2, r2, #2 - add r2, r0, r2 - str r1, [r2, #0] - mov r0, #0 - str r0, [r2, #4] - str r0, [r2, #8] - str r0, [r2, #0x10] - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D4798 - - thumb_func_start ov101_021D47AC -ov101_021D47AC: ; 0x021D47AC - mov r1, #0x51 - lsl r1, r1, #2 - ldr r0, [r0, r1] - bx lr - thumb_func_end ov101_021D47AC - - thumb_func_start ov101_021D47B4 -ov101_021D47B4: ; 0x021D47B4 - push {r4, lr} - mov r1, #0x52 - add r4, r0, #0 - mov r2, #0 - lsl r1, r1, #2 - str r2, [r4, r1] - bl ov101_021D7228 - mov r1, #0x5d - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r4, #0 - bl ov101_021D73B4 - mov r1, #0x5e - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r4, #0 - bl ov101_021D7550 - mov r1, #0x5f - lsl r1, r1, #2 - str r0, [r4, r1] - add r0, r4, #0 - bl ov101_021D76B4 - mov r1, #6 - lsl r1, r1, #6 - str r0, [r4, r1] - pop {r4, pc} - thumb_func_end ov101_021D47B4 - - thumb_func_start ov101_021D47F0 -ov101_021D47F0: ; 0x021D47F0 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x52 - mov r1, #1 - lsl r0, r0, #2 - str r1, [r4, r0] - add r0, #0x2c - ldr r0, [r4, r0] - bl sub_0207136C - mov r0, #0x5e - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0207136C - mov r0, #0x5f - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl sub_0207136C - mov r0, #6 - lsl r0, r0, #6 - ldr r0, [r4, r0] - bl sub_0207136C - pop {r4, pc} - thumb_func_end ov101_021D47F0 - - thumb_func_start ov101_021D4824 -ov101_021D4824: ; 0x021D4824 - push {r3, r4, r5, lr} - ldr r4, _021D4840 ; =0x021D8774 - add r5, r1, #0 -_021D482A: - ldr r1, [r5, #0] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r2, [r4, r1] - ldr r1, [r5, #4] - lsl r1, r1, #2 - ldr r1, [r2, r1] - blx r1 - cmp r0, #1 - beq _021D482A - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D4840: .word 0x021D8774 - thumb_func_end ov101_021D4824 - - thumb_func_start ov101_021D4844 -ov101_021D4844: ; 0x021D4844 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x20] - ldr r1, [r4, #0x18] - bl ov101_021D5D58 - str r0, [r4, #0x28] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D4844 - - thumb_func_start ov101_021D485C -ov101_021D485C: ; 0x021D485C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - bl ov101_021D5DC4 - cmp r0, #0 - bne _021D486E - mov r0, #0 - pop {r4, pc} -_021D486E: - ldr r0, [r4, #0x28] - mov r1, #1 - bl ov101_021D5D90 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D485C - - thumb_func_start ov101_021D4880 -ov101_021D4880: ; 0x021D4880 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - bl ov101_021D5DC4 - cmp r0, #0 - bne _021D4892 - mov r0, #0 - pop {r4, pc} -_021D4892: - ldr r0, [r4, #0x28] - mov r1, #5 - bl ov101_021D5D90 - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D4880 - - thumb_func_start ov101_021D48A8 -ov101_021D48A8: ; 0x021D48A8 - mov r0, #0 - bx lr - thumb_func_end ov101_021D48A8 - - thumb_func_start ov101_021D48AC -ov101_021D48AC: ; 0x021D48AC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - mov r1, #4 - bl ov101_021D5D90 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D48AC - - thumb_func_start ov101_021D48C4 -ov101_021D48C4: ; 0x021D48C4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - bl ov101_021D5DC4 - cmp r0, #1 - bne _021D48E2 - ldr r0, [r4, #0x28] - bl sub_0207136C - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D48E2: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D48C4 - - thumb_func_start ov101_021D48E8 -ov101_021D48E8: ; 0x021D48E8 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - mov r1, #2 - bl ov101_021D5D90 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D48E8 - - thumb_func_start ov101_021D4900 -ov101_021D4900: ; 0x021D4900 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - bl ov101_021D5DC4 - cmp r0, #1 - bne _021D4926 - ldr r0, [r4, #0x20] - bl ov101_021D6484 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x20] - ldr r1, [r4, #0x1c] - bl ov101_021D6764 - str r0, [r4, #0x30] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4926: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4900 - - thumb_func_start ov101_021D492C -ov101_021D492C: ; 0x021D492C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - bl ov101_021D67B0 - cmp r0, #1 - bne _021D4950 - ldr r0, [r4, #0x30] - mov r1, #1 - bl ov101_021D679C - ldr r0, [r4, #0x28] - mov r1, #1 - bl ov101_021D5DA4 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4950: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D492C - - thumb_func_start ov101_021D4954 -ov101_021D4954: ; 0x021D4954 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - bl ov101_021D67B0 - cmp r0, #1 - bne _021D4972 - ldr r0, [r4, #0x2c] - bl sub_0207136C - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4972: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4954 - - thumb_func_start ov101_021D4978 -ov101_021D4978: ; 0x021D4978 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x20] - bl ov101_021D6484 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x30] - mov r1, #2 - bl ov101_021D679C - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4978 - - thumb_func_start ov101_021D4998 -ov101_021D4998: ; 0x021D4998 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - bl ov101_021D67B0 - cmp r0, #1 - bne _021D49C8 - ldr r0, [r4, #0x30] - bl sub_0207136C - ldr r0, [r4, #0x2c] - bl sub_0207136C - ldr r0, [r4, #0x28] - mov r1, #0 - bl ov101_021D5DA4 - ldr r0, [r4, #0x28] - mov r1, #3 - bl ov101_021D5D90 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D49C8: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D4998 - - thumb_func_start ov101_021D49CC -ov101_021D49CC: ; 0x021D49CC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - bl ov101_021D5DC4 - cmp r0, #1 - bne _021D49E8 - ldr r0, [r4, #0x28] - mov r1, #4 - bl ov101_021D5D90 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D49E8: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D49CC - - thumb_func_start ov101_021D49EC -ov101_021D49EC: ; 0x021D49EC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - bl ov101_021D5DC4 - cmp r0, #1 - bne _021D4A0A - ldr r0, [r4, #0x28] - bl sub_0207136C - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4A0A: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D49EC - - thumb_func_start ov101_021D4A10 -ov101_021D4A10: ; 0x021D4A10 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - mov r1, #3 - bl ov101_021D679C - ldr r0, [r4, #0x20] - bl ov101_021D6DF0 - str r0, [r4, #0x34] - mov r0, #0 - str r0, [r4, #0x10] - ldr r1, [r4, #4] - add r1, r1, #1 - str r1, [r4, #4] - pop {r4, pc} - thumb_func_end ov101_021D4A10 - - thumb_func_start ov101_021D4A30 -ov101_021D4A30: ; 0x021D4A30 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x10] - add r0, r0, #1 - str r0, [r4, #0x10] - cmp r0, #0x30 - blt _021D4A56 - mov r1, #0 - str r1, [r4, #0x10] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0x23 - bl sub_02005844 - ldr r0, [r4, #0x30] - mov r1, #4 - bl ov101_021D679C -_021D4A56: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4A30 - - thumb_func_start ov101_021D4A5C -ov101_021D4A5C: ; 0x021D4A5C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x34] - bl ov101_021D6E1C - cmp r0, #1 - bne _021D4A86 - ldr r0, [r4, #0x30] - mov r1, #3 - bl ov101_021D679C - ldr r0, [r4, #0x34] - bl sub_0207136C - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - str r0, [r4, #0x10] - mov r0, #1 - str r0, [r4, #8] -_021D4A86: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4A5C - - thumb_func_start ov101_021D4A8C -ov101_021D4A8C: ; 0x021D4A8C - push {r3, lr} - ldr r1, [r0, #0x20] - ldr r3, _021D4AB4 ; =0x021D87A8 - ldr r2, [r1, #0x34] - mov r1, #0x18 - mul r1, r2 - add r2, r3, r1 - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] - mov r1, #0 - str r1, [r0, #0x14] - lsl r1, r1, #2 - add r1, r2, r1 - ldr r0, [r0, #0x30] - ldr r1, [r1, #0xc] - bl ov101_021D679C - mov r0, #0 - pop {r3, pc} - ; .align 2, 0 -_021D4AB4: .word 0x021D87A8 - thumb_func_end ov101_021D4A8C - - thumb_func_start ov101_021D4AB8 -ov101_021D4AB8: ; 0x021D4AB8 - push {r3, r4, r5, lr} - ldr r2, [r0, #0x20] - mov r1, #0 - add r4, r1, #0 - add r5, r2, #0 -_021D4AC2: - ldr r3, [r5, #0x7c] - cmp r3, #1 - beq _021D4ACA - add r1, r1, #1 -_021D4ACA: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #3 - blt _021D4AC2 - ldr r3, [r0, #0x14] - cmp r3, #2 - bge _021D4AF4 - cmp r3, r1 - beq _021D4AF4 - ldr r3, [r2, #0x34] - mov r2, #0x18 - ldr r4, _021D4AF8 ; =0x021D87A8 - str r1, [r0, #0x14] - mul r2, r3 - add r2, r4, r2 - lsl r1, r1, #2 - add r1, r2, r1 - ldr r0, [r0, #0x30] - ldr r1, [r1, #0xc] - bl ov101_021D679C -_021D4AF4: - mov r0, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D4AF8: .word 0x021D87A8 - thumb_func_end ov101_021D4AB8 - - thumb_func_start ov101_021D4AFC -ov101_021D4AFC: ; 0x021D4AFC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - mov r1, #3 - bl ov101_021D679C - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4AFC - - thumb_func_start ov101_021D4B14 -ov101_021D4B14: ; 0x021D4B14 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x20] - bl ov101_021D47F0 - ldr r0, [r4, #0x20] - bl ov101_021D6484 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x30] - mov r1, #2 - bl ov101_021D679C - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D4B14 - - thumb_func_start ov101_021D4B38 -ov101_021D4B38: ; 0x021D4B38 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - bl ov101_021D67B0 - cmp r0, #1 - bne _021D4B68 - ldr r0, [r4, #0x30] - bl sub_0207136C - ldr r0, [r4, #0x2c] - bl sub_0207136C - ldr r0, [r4, #0x28] - mov r1, #0 - bl ov101_021D5DA4 - ldr r0, [r4, #0x28] - mov r1, #3 - bl ov101_021D5D90 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4B68: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D4B38 - - thumb_func_start ov101_021D4B6C -ov101_021D4B6C: ; 0x021D4B6C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - bl ov101_021D5DC4 - cmp r0, #1 - bne _021D4B9C - ldr r0, [r4, #0x20] - bl ov101_021D72D4 - ldr r0, [r4, #0x20] - bl ov101_021D7460 - ldr r0, [r4, #0x20] - mov r1, #0 - bl ov101_021D77E4 - ldr r0, [r4, #0x20] - mov r1, #1 - bl ov101_021D77E4 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4B9C: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D4B6C - - thumb_func_start ov101_021D4BA0 -ov101_021D4BA0: ; 0x021D4BA0 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x10] - add r0, r0, #1 - str r0, [r4, #0x10] - cmp r0, #0x2d - blt _021D4BC0 - mov r0, #0 - str r0, [r4, #0x10] - ldr r0, [r4, #0x28] - mov r1, #4 - bl ov101_021D5D90 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4BC0: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D4BA0 - - thumb_func_start ov101_021D4BC4 -ov101_021D4BC4: ; 0x021D4BC4 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - bl ov101_021D5DC4 - cmp r0, #1 - bne _021D4BE2 - ldr r0, [r4, #0x28] - bl sub_0207136C - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4BE2: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4BC4 - - thumb_func_start ov101_021D4BE8 -ov101_021D4BE8: ; 0x021D4BE8 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - mov r1, #4 - bl ov101_021D679C - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4BE8 - - thumb_func_start ov101_021D4C04 -ov101_021D4C04: ; 0x021D4C04 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - mov r1, #8 - bl ov101_021D679C - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4C04 - - thumb_func_start ov101_021D4C20 -ov101_021D4C20: ; 0x021D4C20 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - mov r1, #6 - bl ov101_021D5D90 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #1 - str r0, [r4, #8] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4C20 - - thumb_func_start ov101_021D4C3C -ov101_021D4C3C: ; 0x021D4C3C - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x20] - bl ov101_021D6484 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x30] - mov r1, #2 - bl ov101_021D679C - mov r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4C3C - - thumb_func_start ov101_021D4C60 -ov101_021D4C60: ; 0x021D4C60 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - bl ov101_021D67B0 - cmp r0, #1 - bne _021D4C94 - ldr r0, [r4, #0x2c] - bl sub_0207136C - ldr r0, [r4, #0x30] - bl sub_0207136C - ldr r0, [r4, #0x28] - mov r1, #0 - bl ov101_021D5DA4 - ldr r0, [r4, #0x28] - mov r1, #3 - bl ov101_021D5D90 - mov r0, #0 - str r0, [r4, #0x10] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4C94: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D4C60 - - thumb_func_start ov101_021D4C98 -ov101_021D4C98: ; 0x021D4C98 - push {r3, lr} - ldr r1, [r0, #0x10] - add r1, r1, #1 - str r1, [r0, #0x10] - cmp r1, #0x1e - blt _021D4CB6 - mov r1, #0 - str r1, [r0, #0x10] - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] - ldr r0, [r0, #0x28] - mov r1, #2 - bl ov101_021D5D90 -_021D4CB6: - mov r0, #0 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4C98 - - thumb_func_start ov101_021D4CBC -ov101_021D4CBC: ; 0x021D4CBC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x28] - bl ov101_021D5DC4 - cmp r0, #1 - bne _021D4CE6 - ldr r0, [r4, #0x20] - bl ov101_021D6484 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x20] - ldr r1, [r4, #0x1c] - bl ov101_021D6764 - str r0, [r4, #0x30] - mov r0, #0 - str r0, [r4, #0xc] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4CE6: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4CBC - - thumb_func_start ov101_021D4CEC -ov101_021D4CEC: ; 0x021D4CEC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - bl ov101_021D67B0 - cmp r0, #1 - bne _021D4D10 - ldr r0, [r4, #0x30] - mov r1, #1 - bl ov101_021D679C - ldr r0, [r4, #0x28] - mov r1, #1 - bl ov101_021D5DA4 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4D10: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D4CEC - - thumb_func_start ov101_021D4D14 -ov101_021D4D14: ; 0x021D4D14 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x30] - bl ov101_021D67B0 - cmp r0, #1 - bne _021D4D32 - ldr r0, [r4, #0x2c] - bl sub_0207136C - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D4D32: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4D14 - - thumb_func_start ov101_021D4D38 -ov101_021D4D38: ; 0x021D4D38 - push {r3, r4, r5, r6, lr} - sub sp, #4 - mov r1, #0x61 - add r5, r0, #0 - lsl r1, r1, #2 - add r4, r5, r1 - mov r1, #3 - mov r2, #0 - str r5, [r4, #0] - bl ov101_021D19E4 - add r1, sp, #0 - add r6, r0, #0 - bl NNS_G2dGetUnpackedPaletteData - ldr r0, [sp] - mov r1, #1 - add r2, r4, #4 - bl ov101_021D4EA8 - add r2, r4, #0 - ldr r0, [sp] - mov r1, #2 - add r2, #0xa4 - bl ov101_021D4EA8 - add r2, r4, #0 - ldr r0, [sp] - mov r1, #3 - add r2, #0xc4 - bl ov101_021D4EA8 - add r2, r4, #0 - ldr r0, [sp] - mov r1, #3 - add r2, #0xe4 - bl ov101_021D4EA8 - mov r2, #0x41 - lsl r2, r2, #2 - ldr r0, [sp] - mov r1, #4 - add r2, r4, r2 - bl ov101_021D4EA8 - mov r2, #0x49 - lsl r2, r2, #2 - ldr r0, [sp] - mov r1, #4 - add r2, r4, r2 - bl ov101_021D4EA8 - add r0, r6, #0 - bl sub_020181C4 - add r0, r5, #0 - mov r1, #5 - mov r2, #0 - bl ov101_021D19E4 - add r1, sp, #0 - add r6, r0, #0 - bl NNS_G2dGetUnpackedPaletteData - add r2, r4, #0 - ldr r0, [sp] - mov r1, #0 - add r2, #0x24 - bl ov101_021D4EA8 - add r0, r6, #0 - bl sub_020181C4 - add r0, r5, #0 - mov r1, #6 - mov r2, #0 - bl ov101_021D19E4 - add r1, sp, #0 - add r6, r0, #0 - bl NNS_G2dGetUnpackedPaletteData - add r2, r4, #0 - ldr r0, [sp] - mov r1, #0 - add r2, #0x44 - bl ov101_021D4EA8 - add r0, r6, #0 - bl sub_020181C4 - add r0, r5, #0 - mov r1, #7 - mov r2, #0 - bl ov101_021D19E4 - add r1, sp, #0 - add r6, r0, #0 - bl NNS_G2dGetUnpackedPaletteData - add r2, r4, #0 - ldr r0, [sp] - mov r1, #0 - add r2, #0x64 - bl ov101_021D4EA8 - add r0, r6, #0 - bl sub_020181C4 - add r0, r5, #0 - mov r1, #0x4a - mov r2, #0 - bl ov101_021D19E4 - add r1, sp, #0 - add r6, r0, #0 - bl NNS_G2dGetUnpackedPaletteData - mov r2, #0x51 - lsl r2, r2, #2 - ldr r0, [sp] - mov r1, #0 - add r2, r4, r2 - bl ov101_021D4EA8 - add r0, r6, #0 - bl sub_020181C4 - add r0, r5, #0 - mov r1, #0x4b - mov r2, #0 - bl ov101_021D19E4 - add r1, sp, #0 - add r6, r0, #0 - bl NNS_G2dGetUnpackedPaletteData - mov r2, #0x59 - lsl r2, r2, #2 - ldr r0, [sp] - mov r1, #0 - add r2, r4, r2 - bl ov101_021D4EA8 - mov r2, #0x61 - lsl r2, r2, #2 - ldr r0, [sp] - mov r1, #0 - add r2, r4, r2 - bl ov101_021D4EA8 - add r0, r6, #0 - bl sub_020181C4 - add r0, r5, #0 - mov r1, #0x4c - mov r2, #0 - bl ov101_021D19E4 - add r1, sp, #0 - add r5, r0, #0 - bl NNS_G2dGetUnpackedPaletteData - mov r2, #0x69 - lsl r2, r2, #2 - ldr r0, [sp] - mov r1, #0 - add r2, r4, r2 - bl ov101_021D4EA8 - mov r2, #0x71 - lsl r2, r2, #2 - ldr r0, [sp] - mov r1, #0 - add r2, r4, r2 - bl ov101_021D4EA8 - add r0, r5, #0 - bl sub_020181C4 - add sp, #4 - pop {r3, r4, r5, r6, pc} - thumb_func_end ov101_021D4D38 - - thumb_func_start ov101_021D4EA4 -ov101_021D4EA4: ; 0x021D4EA4 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D4EA4 - - thumb_func_start ov101_021D4EA8 -ov101_021D4EA8: ; 0x021D4EA8 - ldr r3, [r0, #0xc] - lsl r0, r1, #5 - add r3, r3, r0 - mov r1, #0 -_021D4EB0: - ldrh r0, [r3] - add r1, r1, #1 - add r3, r3, #2 - strh r0, [r2] - add r2, r2, #2 - cmp r1, #0x10 - blt _021D4EB0 - bx lr - thumb_func_end ov101_021D4EA8 - - thumb_func_start ov101_021D4EC0 -ov101_021D4EC0: ; 0x021D4EC0 - push {r0, r1, r2, r3} - push {r3, r4, r5, r6} - add r1, r2, #0 - add r0, r3, #0 - add r2, sp, #0x10 - add r3, sp, #0x14 - cmp r1, #0x10 - bls _021D4ED2 - mov r1, #0x10 -_021D4ED2: - ldrh r4, [r2] - ldrh r3, [r3] - lsl r2, r4, #0x16 - lsr r6, r2, #0x1b - lsl r2, r4, #0x1b - lsr r5, r2, #0x1b - lsl r2, r4, #0x11 - lsl r4, r3, #0x11 - lsr r2, r2, #0x1b - lsr r4, r4, #0x1b - sub r4, r4, r2 - mul r4, r1 - asr r4, r4, #4 - add r2, r2, r4 - lsl r4, r2, #0xa - lsl r2, r3, #0x1b - lsl r3, r3, #0x16 - lsr r3, r3, #0x1b - lsr r2, r2, #0x1b - sub r3, r3, r6 - sub r2, r2, r5 - mul r2, r1 - mul r3, r1 - asr r1, r3, #4 - asr r2, r2, #4 - add r1, r6, r1 - add r2, r5, r2 - lsl r1, r1, #5 - orr r1, r2 - orr r1, r4 - strh r1, [r0] - pop {r3, r4, r5, r6} - add sp, #0x10 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D4EC0 - - thumb_func_start ov101_021D4F18 -ov101_021D4F18: ; 0x021D4F18 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - add r4, r1, #0 - str r2, [sp] - add r6, r3, #0 - mov r7, #0 -_021D4F24: - ldrh r0, [r5] - ldrh r1, [r4] - ldr r2, [sp] - add r3, r6, #0 - bl ov101_021D4EC0 - add r7, r7, #1 - add r6, r6, #2 - add r4, r4, #2 - add r5, r5, #2 - cmp r7, #0x10 - blt _021D4F24 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4F18 - - thumb_func_start ov101_021D4F40 -ov101_021D4F40: ; 0x021D4F40 - push {r4, lr} - add r4, r2, #0 - lsl r0, r1, #0x18 - add r1, r3, #0 - lsl r3, r4, #0x15 - lsr r0, r0, #0x18 - mov r2, #0x20 - lsr r3, r3, #0x10 - bl sub_0201972C - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4F40 - - thumb_func_start ov101_021D4F58 -ov101_021D4F58: ; 0x021D4F58 - push {r4, lr} - add r3, r1, #0 - lsl r4, r3, #2 - ldr r2, _021D4F74 ; =0x021D9E60 - lsl r3, r3, #5 - ldr r2, [r2, r4] - mov r4, #0x8a - lsl r4, r4, #2 - add r4, r0, r4 - mov r1, #1 - add r3, r4, r3 - bl ov101_021D4F40 - pop {r4, pc} - ; .align 2, 0 -_021D4F74: .word 0x021D9E60 - thumb_func_end ov101_021D4F58 - - thumb_func_start ov101_021D4F78 -ov101_021D4F78: ; 0x021D4F78 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - mov r2, #0x61 - lsl r2, r2, #2 - ldr r0, _021D4FB4 ; =0x021D9E60 - lsl r4, r1, #2 - ldr r6, [r0, r4] - add r0, r2, #0 - add r3, r7, r2 - add r0, #0x60 - add r4, r3, r0 - add r0, r3, #0 - sub r2, #0x40 - lsl r5, r1, #5 - add r1, r3, r2 - add r0, #0xa4 - add r0, r0, r5 - add r1, r1, r5 - mov r2, #0xa - add r3, r4, r5 - bl ov101_021D4F18 - add r0, r7, #0 - mov r1, #1 - add r2, r6, #0 - add r3, r4, r5 - bl ov101_021D4F40 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D4FB4: .word 0x021D9E60 - thumb_func_end ov101_021D4F78 - - thumb_func_start ov101_021D4FB8 -ov101_021D4FB8: ; 0x021D4FB8 - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - mov r2, #0x61 - lsl r2, r2, #2 - ldr r0, _021D4FF4 ; =0x021D9E60 - lsl r4, r1, #2 - ldr r6, [r0, r4] - add r0, r2, #0 - add r3, r7, r2 - add r0, #0x60 - add r4, r3, r0 - add r0, r3, #0 - sub r2, #0x40 - lsl r5, r1, #5 - add r1, r3, r2 - add r0, #0xa4 - add r0, r0, r5 - add r1, r1, r5 - mov r2, #0xc - add r3, r4, r5 - bl ov101_021D4F18 - add r0, r7, #0 - mov r1, #1 - add r2, r6, #0 - add r3, r4, r5 - bl ov101_021D4F40 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D4FF4: .word 0x021D9E60 - thumb_func_end ov101_021D4FB8 - - thumb_func_start ov101_021D4FF8 -ov101_021D4FF8: ; 0x021D4FF8 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r4, #0 -_021D4FFE: - add r0, r5, #0 - add r1, r4, #0 - bl ov101_021D4F58 - add r4, r4, #1 - cmp r4, #5 - blt _021D4FFE - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D4FF8 - - thumb_func_start ov101_021D5010 -ov101_021D5010: ; 0x021D5010 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r4, #0 -_021D5016: - add r0, r5, #0 - add r1, r4, #0 - bl ov101_021D4F78 - add r4, r4, #1 - cmp r4, #5 - blt _021D5016 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5010 - - thumb_func_start ov101_021D5028 -ov101_021D5028: ; 0x021D5028 - push {r4, lr} - sub sp, #0x20 - add r4, sp, #0x14 - mov r3, #0 - str r3, [r4, #0] - str r3, [r4, #4] - str r1, [sp, #8] - str r2, [sp, #0xc] - str r3, [r4, #8] - str r0, [sp, #0x10] - add r1, sp, #8 - str r1, [sp] - mov r1, #0x8f - str r1, [sp, #4] - ldr r1, _021D5054 ; =0x0000044C - add r2, r4, #0 - ldr r0, [r0, r1] - ldr r1, _021D5058 ; =0x021D86B0 - bl sub_02071330 - add sp, #0x20 - pop {r4, pc} - ; .align 2, 0 -_021D5054: .word 0x0000044C -_021D5058: .word 0x021D86B0 - thumb_func_end ov101_021D5028 - - thumb_func_start ov101_021D505C -ov101_021D505C: ; 0x021D505C - push {r3, lr} - bl sub_02071598 - ldr r0, [r0, #0xc] - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D505C - - thumb_func_start ov101_021D5068 -ov101_021D5068: ; 0x021D5068 - push {r4, lr} - add r4, r1, #0 - bl sub_020715BC - ldr r1, [r0, #8] - str r1, [r4, #0x1c] - ldr r1, [r0, #0] - str r1, [r4, #0x10] - ldr r0, [r0, #4] - str r0, [r4, #0x14] - mov r0, #0x61 - ldr r1, [r4, #0x1c] - lsl r0, r0, #2 - add r0, r1, r0 - str r0, [r4, #0x20] - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5068 - - thumb_func_start ov101_021D508C -ov101_021D508C: ; 0x021D508C - ldr r3, _021D5094 ; =ov101_021D4F58 - ldr r0, [r1, #0x1c] - ldr r1, [r1, #0x10] - bx r3 - ; .align 2, 0 -_021D5094: .word ov101_021D4F58 - thumb_func_end ov101_021D508C - - thumb_func_start ov101_021D5098 -ov101_021D5098: ; 0x021D5098 - push {r3, r4, r5, r6, r7, lr} - add r4, r1, #0 - ldr r2, [r4, #0x10] - ldr r0, _021D51FC ; =0x021D9E60 - lsl r1, r2, #2 - ldr r0, [r0, r1] - lsl r5, r2, #5 - mov r1, #0x79 - ldr r2, [r4, #0x20] - lsl r1, r1, #2 - add r6, r2, r1 - sub r1, #0xa0 - str r0, [sp] - add r0, r2, #0 - add r1, r2, r1 - ldr r2, [r4, #0] - add r0, #0xa4 - cmp r2, #4 - bls _021D50C0 - b _021D51FA -_021D50C0: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_021D50CC: ; jump table - .short _021D50D6 - _021D50CC - 2 ; case 0 - .short _021D5118 - _021D50CC - 2 ; case 1 - .short _021D517C - _021D50CC - 2 ; case 2 - .short _021D51BE - _021D50CC - 2 ; case 3 - .short _021D51FA - _021D50CC - 2 ; case 4 -_021D50D6: - mov r7, #1 - ldr r2, [r4, #0x18] - lsl r7, r7, #0xe - add r3, r2, r7 - lsl r2, r7, #2 - str r3, [r4, #0x18] - cmp r3, r2 - ble _021D50E8 - str r2, [r4, #0x18] -_021D50E8: - ldr r2, [r4, #0x18] - asr r3, r2, #0xb - lsr r3, r3, #0x14 - add r3, r2, r3 - asr r2, r3, #0xc - cmp r2, #0x10 - bne _021D50FC - ldr r3, [r4, #0] - add r3, r3, #1 - str r3, [r4, #0] -_021D50FC: - lsl r2, r2, #0x10 - add r0, r0, r5 - add r1, r1, r5 - lsr r2, r2, #0x10 - add r3, r6, r5 - bl ov101_021D4F18 - ldr r0, [r4, #0x1c] - ldr r2, [sp] - mov r1, #1 - add r3, r6, r5 - bl ov101_021D4F40 - pop {r3, r4, r5, r6, r7, pc} -_021D5118: - mov r2, #1 - ldr r3, [r4, #0x18] - lsl r2, r2, #0xe - sub r2, r3, r2 - str r2, [r4, #0x18] - bpl _021D5128 - mov r2, #0 - str r2, [r4, #0x18] -_021D5128: - ldr r2, [r4, #0x18] - asr r3, r2, #0xb - lsr r3, r3, #0x14 - add r3, r2, r3 - asr r2, r3, #0xc - bne _021D5160 - ldr r3, [r4, #4] - add r3, r3, #1 - str r3, [r4, #4] - cmp r3, #4 - blt _021D515A - ldr r3, [r4, #0x14] - cmp r3, #0 - beq _021D5150 - ldr r3, [r4, #0] - add r3, r3, #1 - str r3, [r4, #0] - mov r3, #1 - str r3, [r4, #0xc] - b _021D5160 -_021D5150: - mov r3, #4 - str r3, [r4, #0] - mov r3, #1 - str r3, [r4, #0xc] - b _021D5160 -_021D515A: - ldr r3, [r4, #0] - sub r3, r3, #1 - str r3, [r4, #0] -_021D5160: - lsl r2, r2, #0x10 - add r0, r0, r5 - add r1, r1, r5 - lsr r2, r2, #0x10 - add r3, r6, r5 - bl ov101_021D4F18 - ldr r0, [r4, #0x1c] - ldr r2, [sp] - mov r1, #1 - add r3, r6, r5 - bl ov101_021D4F40 - pop {r3, r4, r5, r6, r7, pc} -_021D517C: - mov r7, #2 - ldr r2, [r4, #0x18] - lsl r7, r7, #0xe - add r3, r2, r7 - lsl r2, r7, #1 - str r3, [r4, #0x18] - cmp r3, r2 - ble _021D518E - str r2, [r4, #0x18] -_021D518E: - ldr r2, [r4, #0x18] - asr r3, r2, #0xb - lsr r3, r3, #0x14 - add r3, r2, r3 - asr r2, r3, #0xc - cmp r2, #0x10 - bne _021D51A2 - ldr r3, [r4, #0] - add r3, r3, #1 - str r3, [r4, #0] -_021D51A2: - lsl r2, r2, #0x10 - add r0, r0, r5 - add r1, r1, r5 - lsr r2, r2, #0x10 - add r3, r6, r5 - bl ov101_021D4F18 - ldr r0, [r4, #0x1c] - ldr r2, [sp] - mov r1, #1 - add r3, r6, r5 - bl ov101_021D4F40 - pop {r3, r4, r5, r6, r7, pc} -_021D51BE: - mov r2, #2 - ldr r3, [r4, #0x18] - lsl r2, r2, #0xe - sub r2, r3, r2 - str r2, [r4, #0x18] - bpl _021D51CE - mov r2, #0 - str r2, [r4, #0x18] -_021D51CE: - ldr r2, [r4, #0x18] - asr r3, r2, #0xb - lsr r3, r3, #0x14 - add r3, r2, r3 - asr r2, r3, #0xc - bne _021D51E0 - ldr r3, [r4, #0] - sub r3, r3, #1 - str r3, [r4, #0] -_021D51E0: - lsl r2, r2, #0x10 - add r0, r0, r5 - add r1, r1, r5 - lsr r2, r2, #0x10 - add r3, r6, r5 - bl ov101_021D4F18 - ldr r0, [r4, #0x1c] - ldr r2, [sp] - mov r1, #1 - add r3, r6, r5 - bl ov101_021D4F40 -_021D51FA: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D51FC: .word 0x021D9E60 - thumb_func_end ov101_021D5098 - - thumb_func_start ov101_021D5200 -ov101_021D5200: ; 0x021D5200 - push {r3, r4, lr} - sub sp, #0x14 - add r4, r0, #0 - add r1, sp, #8 - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - str r0, [r1, #8] - mov r0, #0x4d - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - beq _021D521E - bl GF_AssertFail -_021D521E: - str r4, [sp] - mov r0, #0x8f - str r0, [sp, #4] - ldr r0, _021D523C ; =0x0000044C - ldr r1, _021D5240 ; =0x021D8700 - ldr r0, [r4, r0] - add r2, sp, #8 - mov r3, #0 - bl sub_02071330 - mov r1, #0x4d - lsl r1, r1, #2 - str r0, [r4, r1] - add sp, #0x14 - pop {r3, r4, pc} - ; .align 2, 0 -_021D523C: .word 0x0000044C -_021D5240: .word 0x021D8700 - thumb_func_end ov101_021D5200 - - thumb_func_start ov101_021D5244 -ov101_021D5244: ; 0x021D5244 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x4d - lsl r0, r0, #2 - ldr r0, [r4, r0] - cmp r0, #0 - beq _021D525E - bl sub_0207136C - mov r0, #0x4d - mov r1, #0 - lsl r0, r0, #2 - str r1, [r4, r0] -_021D525E: - add r0, r4, #0 - bl ov101_021D4FF8 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5244 - - thumb_func_start ov101_021D5268 -ov101_021D5268: ; 0x021D5268 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r6, r0, #0 - ldr r0, [r6, #4] - ldr r1, _021D5380 ; =0x021D8938 - lsl r0, r0, #4 - add r4, r1, r0 - mov r0, #1 - str r0, [sp, #8] - str r0, [sp, #0xc] - ldr r0, _021D5384 ; =0x021D9E60 - add r5, r6, #0 - str r0, [sp] - mov r7, #0 -_021D5284: - ldr r1, [r4, #0] - ldr r0, [sp, #0xc] - tst r0, r1 - beq _021D5310 - ldr r0, [r6, #8] - cmp r0, #0 - bne _021D529C - ldr r0, [r4, #4] - str r0, [r5, #0x14] - mov r0, #0 - str r0, [sp, #8] - b _021D52D0 -_021D529C: - ldr r1, [r4, #4] - ldr r0, [r4, #8] - cmp r1, r0 - ldr r1, [r5, #0x14] - bge _021D52BC - ldr r0, [r4, #0xc] - add r1, r1, r0 - str r1, [r5, #0x14] - ldr r0, [r4, #8] - cmp r1, r0 - blt _021D52B6 - str r0, [r5, #0x14] - b _021D52D0 -_021D52B6: - mov r0, #0 - str r0, [sp, #8] - b _021D52D0 -_021D52BC: - ldr r0, [r4, #0xc] - sub r1, r1, r0 - str r1, [r5, #0x14] - ldr r0, [r4, #8] - cmp r1, r0 - bgt _021D52CC - str r0, [r5, #0x14] - b _021D52D0 -_021D52CC: - mov r0, #0 - str r0, [sp, #8] -_021D52D0: - ldr r0, [sp] - mov r2, #0x51 - ldr r0, [r0, #0] - ldr r1, [r6, #0x2c] - str r0, [sp, #4] - mov r0, #0x79 - lsl r0, r0, #2 - add r0, r1, r0 - str r0, [sp, #0x10] - add r0, r1, #0 - lsl r2, r2, #2 - add r1, r1, r2 - ldr r3, [r5, #0x14] - add r0, #0xa4 - asr r2, r3, #0xb - lsr r2, r2, #0x14 - add r2, r3, r2 - ldr r3, [sp, #0x10] - lsl r2, r2, #4 - add r0, r0, r7 - add r1, r1, r7 - lsr r2, r2, #0x10 - add r3, r3, r7 - bl ov101_021D4F18 - ldr r3, [sp, #0x10] - ldr r0, [r6, #0x28] - ldr r2, [sp, #4] - mov r1, #1 - add r3, r3, r7 - bl ov101_021D4F40 -_021D5310: - ldr r0, [sp] - add r5, r5, #4 - add r0, r0, #4 - str r0, [sp] - ldr r0, [sp, #0xc] - add r7, #0x20 - lsl r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, #0x10 - bls _021D5284 - cmp r0, #0x20 - bhi _021D535A - add r5, r6, #0 - mov r7, #1 - add r5, #0xc - mov r1, #0 - lsl r7, r7, #0xc - mov r0, #0x20 -_021D5334: - ldr r2, [r4, #0] - tst r2, r0 - beq _021D5350 - ldr r2, [r5, #0] - add r2, r2, r7 - str r2, [r5, #0] - ldr r3, [r6, #0xc] - ldr r2, [r4, #4] - cmp r3, r2 - blt _021D534C - str r1, [r6, #0xc] - b _021D5350 -_021D534C: - mov r2, #0 - str r2, [sp, #8] -_021D5350: - ldr r2, [sp, #0xc] - lsl r2, r2, #1 - str r2, [sp, #0xc] - cmp r2, #0x20 - bls _021D5334 -_021D535A: - mov r0, #1 - str r0, [r6, #8] - ldr r0, [sp, #8] - cmp r0, #1 - bne _021D537A - mov r3, #0 - str r3, [r6, #8] - ldr r0, [r6, #4] - ldr r1, _021D5380 ; =0x021D8938 - add r0, r0, #1 - str r0, [r6, #4] - lsl r0, r0, #4 - ldr r0, [r1, r0] - cmp r0, #0x40 - bne _021D537A - str r3, [r6, #4] -_021D537A: - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_021D5380: .word 0x021D8938 -_021D5384: .word 0x021D9E60 - thumb_func_end ov101_021D5268 - - thumb_func_start ov101_021D5388 -ov101_021D5388: ; 0x021D5388 - push {r4, lr} - add r4, r1, #0 - bl sub_020715BC - mov r1, #0x61 - lsl r1, r1, #2 - str r0, [r4, #0x28] - add r0, r0, r1 - str r0, [r4, #0x2c] - mov r0, #1 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5388 - - thumb_func_start ov101_021D53A0 -ov101_021D53A0: ; 0x021D53A0 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D53A0 - - thumb_func_start ov101_021D53A4 -ov101_021D53A4: ; 0x021D53A4 - ldr r3, _021D53AC ; =ov101_021D5268 - add r0, r1, #0 - bx r3 - nop -_021D53AC: .word ov101_021D5268 - thumb_func_end ov101_021D53A4 - - thumb_func_start ov101_021D53B0 -ov101_021D53B0: ; 0x021D53B0 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x4f - mov r1, #0x10 - bl sub_02018184 - add r1, r0, #0 - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - ldr r0, _021D53D0 ; =ov101_021D542C - mov r2, #0x8f - str r4, [r1, #0xc] - bl sub_0200D9E8 - pop {r4, pc} - ; .align 2, 0 -_021D53D0: .word ov101_021D542C - thumb_func_end ov101_021D53B0 - - thumb_func_start ov101_021D53D4 -ov101_021D53D4: ; 0x021D53D4 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x4f - mov r1, #0x10 - bl sub_02018184 - add r1, r0, #0 - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - ldr r0, _021D53F4 ; =ov101_021D548C - mov r2, #0x8f - str r4, [r1, #0xc] - bl sub_0200D9E8 - pop {r4, pc} - ; .align 2, 0 -_021D53F4: .word ov101_021D548C - thumb_func_end ov101_021D53D4 - - thumb_func_start ov101_021D53F8 -ov101_021D53F8: ; 0x021D53F8 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r0, #0x4f - mov r1, #0x10 - bl sub_02018184 - add r1, r0, #0 - mov r0, #0 - str r0, [r1, #0] - mov r0, #2 - str r4, [r1, #8] - lsl r0, r0, #0xe - str r0, [r1, #4] - ldr r0, _021D5428 ; =ov101_021D54EC - mov r2, #0x8f - str r5, [r1, #0xc] - bl sub_0200D9E8 - mov r0, #0x5f - lsl r0, r0, #4 - bl sub_02005748 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D5428: .word ov101_021D54EC - thumb_func_end ov101_021D53F8 - - thumb_func_start ov101_021D542C -ov101_021D542C: ; 0x021D542C - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r0, #0 - mov r0, #0x61 - ldr r1, [r5, #0xc] - lsl r0, r0, #2 - add r2, r1, r0 - mov r0, #2 - ldr r3, [r5, #4] - lsl r0, r0, #0xa - add r0, r3, r0 - asr r3, r0, #0xb - lsr r3, r3, #0x14 - add r1, r2, #0 - add r6, r2, #0 - add r3, r0, r3 - str r0, [r5, #4] - lsl r0, r3, #4 - lsr r4, r0, #0x10 - add r1, #0x24 - add r6, #0x84 - cmp r4, #0x10 - bls _021D545C - mov r4, #0x10 -_021D545C: - add r0, r2, #4 - add r2, r4, #0 - add r3, r6, #0 - bl ov101_021D4F18 - ldr r0, [r5, #0xc] - mov r1, #7 - mov r2, #1 - add r3, r6, #0 - bl ov101_021D4F40 - cmp r4, #0x10 - beq _021D547E - ldr r0, [r5, #0xc] - ldr r0, [r0, #0] - cmp r0, #0x3f - bne _021D548A -_021D547E: - add r0, r5, #0 - bl sub_020181C4 - add r0, r7, #0 - bl sub_0200DA58 -_021D548A: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D542C - - thumb_func_start ov101_021D548C -ov101_021D548C: ; 0x021D548C - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r7, r0, #0 - mov r0, #0x61 - ldr r1, [r5, #0xc] - lsl r0, r0, #2 - add r2, r1, r0 - mov r1, #2 - ldr r3, [r5, #4] - lsl r1, r1, #0xa - add r1, r3, r1 - asr r3, r1, #0xb - lsr r3, r3, #0x14 - add r0, r2, #0 - add r6, r2, #0 - add r3, r1, r3 - str r1, [r5, #4] - lsl r1, r3, #4 - lsr r4, r1, #0x10 - add r0, #0x24 - add r6, #0x84 - cmp r4, #0x10 - bls _021D54BC - mov r4, #0x10 -_021D54BC: - add r1, r2, #4 - add r2, r4, #0 - add r3, r6, #0 - bl ov101_021D4F18 - ldr r0, [r5, #0xc] - mov r1, #7 - mov r2, #1 - add r3, r6, #0 - bl ov101_021D4F40 - cmp r4, #0x10 - beq _021D54DE - ldr r0, [r5, #0xc] - ldr r0, [r0, #0] - cmp r0, #0x3f - bne _021D54EA -_021D54DE: - add r0, r5, #0 - bl sub_020181C4 - add r0, r7, #0 - bl sub_0200DA58 -_021D54EA: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D548C - - thumb_func_start ov101_021D54EC -ov101_021D54EC: ; 0x021D54EC - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - ldr r1, [r5, #0xc] - mov r2, #0x61 - lsl r2, r2, #2 - add r7, r0, #0 - add r0, r1, r2 - add r6, r1, r2 - ldr r3, [r1, #0] - add r0, #0x24 - add r6, #0x84 - cmp r3, #0x3f - bne _021D5514 - add r0, r5, #0 - bl sub_020181C4 - add r0, r7, #0 - bl sub_0200DA58 - pop {r3, r4, r5, r6, r7, pc} -_021D5514: - ldr r3, [r5, #8] - cmp r3, #0 - bne _021D5520 - add r1, r1, r2 - add r1, #0x44 - b _021D5524 -_021D5520: - add r1, r1, r2 - add r1, #0x64 -_021D5524: - ldr r2, [r5, #0] - cmp r2, #0 - beq _021D5530 - cmp r2, #1 - beq _021D5566 - pop {r3, r4, r5, r6, r7, pc} -_021D5530: - mov r2, #1 - ldr r3, [r5, #4] - lsl r2, r2, #0xc - add r3, r3, r2 - asr r2, r3, #0xb - lsr r2, r2, #0x14 - add r2, r3, r2 - asr r2, r2, #0xc - str r3, [r5, #4] - cmp r2, #0x10 - ble _021D554E - ldr r3, [r5, #0] - mov r2, #0x10 - add r3, r3, #1 - str r3, [r5, #0] -_021D554E: - lsl r2, r2, #0x10 - lsr r2, r2, #0x10 - add r3, r6, #0 - bl ov101_021D4F18 - ldr r0, [r5, #0xc] - mov r1, #7 - mov r2, #1 - add r3, r6, #0 - bl ov101_021D4F40 - pop {r3, r4, r5, r6, r7, pc} -_021D5566: - mov r2, #1 - ldr r3, [r5, #4] - lsl r2, r2, #0xa - sub r2, r3, r2 - asr r3, r2, #0xb - lsr r3, r3, #0x14 - add r3, r2, r3 - str r2, [r5, #4] - asr r4, r3, #0xc - bpl _021D557C - mov r4, #0 -_021D557C: - lsl r2, r4, #0x10 - lsr r2, r2, #0x10 - add r3, r6, #0 - bl ov101_021D4F18 - ldr r0, [r5, #0xc] - mov r1, #7 - mov r2, #1 - add r3, r6, #0 - bl ov101_021D4F40 - cmp r4, #0 - bne _021D55A2 - add r0, r5, #0 - bl sub_020181C4 - add r0, r7, #0 - bl sub_0200DA58 -_021D55A2: - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D54EC - - thumb_func_start ov101_021D55A4 -ov101_021D55A4: ; 0x021D55A4 - push {r4, lr} - add r4, r1, #0 - lsl r1, r4, #2 - add r0, r0, r1 - add r0, #0xa8 - ldr r0, [r0, #0] - mov r1, #0x15 - add r0, r2, r0 - bl _s32_div_f - cmp r1, #0 - bge _021D55BE - add r1, #0x15 -_021D55BE: - mov r0, #0x54 - add r2, r4, #0 - mul r2, r0 - ldr r0, _021D55D0 ; =0x021D9688 - lsl r1, r1, #2 - add r0, r0, r2 - ldr r0, [r1, r0] - pop {r4, pc} - nop -_021D55D0: .word 0x021D9688 - thumb_func_end ov101_021D55A4 - - thumb_func_start ov101_021D55D4 -ov101_021D55D4: ; 0x021D55D4 - push {r4, r5, r6, lr} - lsl r4, r1, #2 - add r4, r0, r4 - add r4, #0x90 - ldr r4, [r4, #0] - mov r3, #0 - lsr r6, r4, #0x1f - lsl r5, r4, #0xf - sub r5, r5, r6 - mov r4, #0xf - ror r5, r4 - add r4, r6, r5 - beq _021D55F0 - sub r3, r3, #1 -_021D55F0: - add r2, r2, r3 - bl ov101_021D55A4 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D55D4 - - thumb_func_start ov101_021D55F8 -ov101_021D55F8: ; 0x021D55F8 - ldr r1, _021D5614 ; =0x021BF67C - ldr r1, [r1, #0x48] - and r1, r0 - cmp r1, r0 - bne _021D5606 - mov r0, #2 - bx lr -_021D5606: - tst r0, r1 - beq _021D560E - mov r0, #1 - bx lr -_021D560E: - mov r0, #0 - bx lr - nop -_021D5614: .word 0x021BF67C - thumb_func_end ov101_021D55F8 - - thumb_func_start ov101_021D5618 -ov101_021D5618: ; 0x021D5618 - mov r2, #3 - add r1, r0, #0 - tst r1, r2 - beq _021D5624 - mov r0, #2 - bx lr -_021D5624: - mov r1, #0xc - tst r1, r0 - beq _021D562E - add r0, r2, #0 - bx lr -_021D562E: - mov r1, #0x30 - tst r1, r0 - beq _021D5638 - mov r0, #4 - bx lr -_021D5638: - mov r1, #0xc0 - add r2, r0, #0 - tst r2, r1 - beq _021D5644 - mov r0, #5 - bx lr -_021D5644: - add r1, #0x40 - tst r1, r0 - beq _021D564E - mov r0, #1 - bx lr -_021D564E: - mov r1, #2 - lsl r1, r1, #8 - tst r0, r1 - beq _021D565A - mov r0, #0 - bx lr -_021D565A: - mov r0, #6 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D5618 - - thumb_func_start ov101_021D5660 -ov101_021D5660: ; 0x021D5660 - push {r4, r5, r6, lr} - mov r1, #0 - mov r2, #1 - add r5, r0, #0 - bl ov101_021D55D4 - mov r1, #1 - add r4, r0, #0 - add r0, r5, #0 - add r2, r1, #0 - bl ov101_021D55D4 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #2 - mov r2, #1 - bl ov101_021D55D4 - cmp r4, #3 - beq _021D5690 - cmp r4, r6 - bne _021D5694 - cmp r4, r0 - bne _021D5694 -_021D5690: - add r0, r4, #0 - pop {r4, r5, r6, pc} -_021D5694: - mov r0, #6 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D5660 - - thumb_func_start ov101_021D5698 -ov101_021D5698: ; 0x021D5698 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r1, #0 - mov r2, #2 - bl ov101_021D55D4 - add r4, r0, #0 - add r0, r5, #0 - mov r1, #1 - mov r2, #2 - bl ov101_021D55D4 - mov r1, #2 - add r6, r0, #0 - add r0, r5, #0 - add r2, r1, #0 - bl ov101_021D55D4 - cmp r4, #3 - beq _021D56C8 - cmp r4, r6 - bne _021D56CC - cmp r4, r0 - bne _021D56CC -_021D56C8: - add r0, r4, #0 - pop {r4, r5, r6, pc} -_021D56CC: - mov r0, #6 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D5698 - - thumb_func_start ov101_021D56D0 -ov101_021D56D0: ; 0x021D56D0 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r1, #0 - mov r2, #3 - bl ov101_021D55D4 - add r4, r0, #0 - add r0, r5, #0 - mov r1, #1 - mov r2, #3 - bl ov101_021D55D4 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #2 - mov r2, #3 - bl ov101_021D55D4 - cmp r4, #3 - beq _021D5700 - cmp r4, r6 - bne _021D5704 - cmp r4, r0 - bne _021D5704 -_021D5700: - add r0, r4, #0 - pop {r4, r5, r6, pc} -_021D5704: - mov r0, #6 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D56D0 - - thumb_func_start ov101_021D5708 -ov101_021D5708: ; 0x021D5708 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r1, #0 - mov r2, #1 - bl ov101_021D55D4 - add r4, r0, #0 - add r0, r5, #0 - mov r1, #1 - mov r2, #2 - bl ov101_021D55D4 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #2 - mov r2, #3 - bl ov101_021D55D4 - cmp r4, #3 - beq _021D5738 - cmp r4, r6 - bne _021D573C - cmp r4, r0 - bne _021D573C -_021D5738: - add r0, r4, #0 - pop {r4, r5, r6, pc} -_021D573C: - mov r0, #6 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D5708 - - thumb_func_start ov101_021D5740 -ov101_021D5740: ; 0x021D5740 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r1, #0 - mov r2, #3 - bl ov101_021D55D4 - add r4, r0, #0 - add r0, r5, #0 - mov r1, #1 - mov r2, #2 - bl ov101_021D55D4 - add r6, r0, #0 - add r0, r5, #0 - mov r1, #2 - mov r2, #1 - bl ov101_021D55D4 - cmp r4, #3 - beq _021D5770 - cmp r4, r6 - bne _021D5774 - cmp r4, r0 - bne _021D5774 -_021D5770: - add r0, r4, #0 - pop {r4, r5, r6, pc} -_021D5774: - mov r0, #6 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D5740 - - thumb_func_start ov101_021D5778 -ov101_021D5778: ; 0x021D5778 - push {r4, r5, r6, lr} - add r4, r2, #0 - mov r1, #0 - add r5, r0, #0 - str r1, [r4, #0] - mov r6, #6 - bl ov101_021D5660 - cmp r0, #6 - beq _021D5796 - ldr r1, [r4, #0] - add r6, r0, #0 - mov r0, #2 - orr r0, r1 - str r0, [r4, #0] -_021D5796: - add r0, r5, #0 - bl ov101_021D5698 - cmp r0, #6 - beq _021D57AA - ldr r1, [r4, #0] - add r6, r0, #0 - mov r0, #1 - orr r0, r1 - str r0, [r4, #0] -_021D57AA: - add r0, r5, #0 - bl ov101_021D56D0 - cmp r0, #6 - beq _021D57BE - ldr r1, [r4, #0] - add r6, r0, #0 - mov r0, #4 - orr r0, r1 - str r0, [r4, #0] -_021D57BE: - add r0, r5, #0 - bl ov101_021D5708 - cmp r0, #6 - beq _021D57D2 - ldr r1, [r4, #0] - add r6, r0, #0 - mov r0, #8 - orr r0, r1 - str r0, [r4, #0] -_021D57D2: - add r0, r5, #0 - bl ov101_021D5740 - cmp r0, #6 - beq _021D57E6 - ldr r1, [r4, #0] - add r6, r0, #0 - mov r0, #0x10 - orr r0, r1 - str r0, [r4, #0] -_021D57E6: - add r0, r6, #0 - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5778 - - thumb_func_start ov101_021D57EC -ov101_021D57EC: ; 0x021D57EC - push {r3, r4, r5, lr} - add r5, r2, #0 - mov r1, #0 - str r1, [r5, #0] - bl ov101_021D5698 - add r4, r0, #0 - cmp r4, #6 - beq _021D580E - cmp r4, #2 - beq _021D5806 - bl GF_AssertFail -_021D5806: - ldr r1, [r5, #0] - mov r0, #1 - orr r0, r1 - str r0, [r5, #0] -_021D580E: - add r0, r4, #0 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D57EC - - thumb_func_start ov101_021D5814 -ov101_021D5814: ; 0x021D5814 - push {r3, lr} - mov r2, #3 - add r1, r0, #0 - tst r1, r2 - beq _021D5822 - mov r0, #1 - pop {r3, pc} -_021D5822: - mov r1, #0xc - tst r1, r0 - beq _021D582C - mov r0, #0 - pop {r3, pc} -_021D582C: - mov r1, #0x30 - tst r1, r0 - beq _021D5836 - mov r0, #2 - pop {r3, pc} -_021D5836: - mov r1, #0xc0 - tst r0, r1 - beq _021D5840 - add r0, r2, #0 - pop {r3, pc} -_021D5840: - bl GF_AssertFail - mov r0, #4 - pop {r3, pc} - thumb_func_end ov101_021D5814 - - thumb_func_start ov101_021D5848 -ov101_021D5848: ; 0x021D5848 - mov r2, #0 - add r1, r2, #0 -_021D584C: - add r2, r2, #1 - str r1, [r0, #0x54] - add r0, r0, #4 - cmp r2, #3 - blt _021D584C - bx lr - thumb_func_end ov101_021D5848 - - thumb_func_start ov101_021D5858 -ov101_021D5858: ; 0x021D5858 - push {r4, r5, r6, lr} - add r5, r0, #0 - add r6, r1, #0 - mov r4, #0 - add r1, r5, #0 -_021D5862: - ldr r0, [r1, #0x54] - cmp r0, #0 - beq _021D5870 - add r4, r4, #1 - add r1, r1, #4 - cmp r4, #3 - blt _021D5862 -_021D5870: - cmp r4, #3 - blt _021D5878 - bl GF_AssertFail -_021D5878: - lsl r0, r4, #2 - add r0, r5, r0 - str r6, [r0, #0x54] - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D5858 - - thumb_func_start ov101_021D5880 -ov101_021D5880: ; 0x021D5880 - push {r4, r5, r6} - sub sp, #0xc - ldr r6, _021D58BC ; =0x021D866C - add r4, r0, #0 - ldmia r6!, {r0, r1} - add r5, sp, #0 - add r3, r5, #0 - stmia r5!, {r0, r1} - ldr r0, [r6, #0] - mov r2, #0 - str r0, [r5, #0] -_021D5896: - ldr r1, [r4, #0x54] - cmp r1, #0 - beq _021D58AA - ldr r0, [r3, #0] - cmp r1, r0 - beq _021D58AA - add sp, #0xc - mov r0, #0 - pop {r4, r5, r6} - bx lr -_021D58AA: - add r2, r2, #1 - add r4, r4, #4 - add r3, r3, #4 - cmp r2, #3 - blt _021D5896 - mov r0, #1 - add sp, #0xc - pop {r4, r5, r6} - bx lr - ; .align 2, 0 -_021D58BC: .word 0x021D866C - thumb_func_end ov101_021D5880 - - thumb_func_start ov101_021D58C0 -ov101_021D58C0: ; 0x021D58C0 - push {r3, r4} - ldr r2, [r0, #0x34] - mov r1, #0x18 - ldr r3, _021D58F0 ; =0x021D87A8 - mul r1, r2 - mov r4, #0 - add r3, r3, r1 -_021D58CE: - ldr r2, [r0, #0x54] - cmp r2, #0 - beq _021D58E0 - ldr r1, [r3, #0] - cmp r2, r1 - beq _021D58E0 - mov r0, #0 - pop {r3, r4} - bx lr -_021D58E0: - add r4, r4, #1 - add r0, r0, #4 - add r3, r3, #4 - cmp r4, #3 - blt _021D58CE - mov r0, #1 - pop {r3, r4} - bx lr - ; .align 2, 0 -_021D58F0: .word 0x021D87A8 - thumb_func_end ov101_021D58C0 - - thumb_func_start ov101_021D58F4 -ov101_021D58F4: ; 0x021D58F4 - push {r4, r5, lr} - sub sp, #0xc - add r4, r0, #0 - mov r0, #3 - str r0, [sp] - mov r0, #2 - lsl r2, r1, #3 - ldr r3, _021D5930 ; =0x021D8740 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - add r5, r3, r2 - ldr r2, [r3, r2] - ldr r0, _021D5934 ; =0x0000043C - ldr r3, [r5, #4] - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r4, r0] - mov r1, #1 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl sub_02019E2C - ldr r0, _021D5934 ; =0x0000043C - mov r1, #1 - ldr r0, [r4, r0] - bl sub_0201C3C0 - add sp, #0xc - pop {r4, r5, pc} - ; .align 2, 0 -_021D5930: .word 0x021D8740 -_021D5934: .word 0x0000043C - thumb_func_end ov101_021D58F4 - - thumb_func_start ov101_021D5938 -ov101_021D5938: ; 0x021D5938 - push {r4, r5, lr} - sub sp, #0xc - add r4, r0, #0 - mov r0, #3 - str r0, [sp] - mov r0, #2 - lsl r2, r1, #3 - ldr r3, _021D5974 ; =0x021D8740 - str r0, [sp, #4] - mov r0, #5 - str r0, [sp, #8] - add r5, r3, r2 - ldr r2, [r3, r2] - ldr r0, _021D5978 ; =0x0000043C - ldr r3, [r5, #4] - lsl r2, r2, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r4, r0] - mov r1, #1 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl sub_02019E2C - ldr r0, _021D5978 ; =0x0000043C - mov r1, #1 - ldr r0, [r4, r0] - bl sub_0201C3C0 - add sp, #0xc - pop {r4, r5, pc} - ; .align 2, 0 -_021D5974: .word 0x021D8740 -_021D5978: .word 0x0000043C - thumb_func_end ov101_021D5938 - - thumb_func_start ov101_021D597C -ov101_021D597C: ; 0x021D597C - push {r3, r4, r5, lr} - ldr r4, [r0, #0x44] - ldr r5, [r0, #0x48] - cmp r4, #6 - bne _021D598A - bl GF_AssertFail -_021D598A: - ldr r3, _021D59A8 ; =0x021D9550 - lsl r2, r4, #2 - mov r1, #0 - ldr r3, [r3, r2] - add r0, r1, #0 - mov r2, #1 -_021D5996: - add r4, r5, #0 - tst r4, r2 - beq _021D599E - add r0, r0, r3 -_021D599E: - add r1, r1, #1 - lsr r5, r5, #1 - cmp r1, #5 - blt _021D5996 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D59A8: .word 0x021D9550 - thumb_func_end ov101_021D597C - - .rodata - - - .global Unk_ov101_021D8648 -Unk_ov101_021D8648: ; 0x021D8648 - .incbin "incbin/overlay101_rodata.bin", 0xC0, 0xC4 - 0xC0 - - .global Unk_ov101_021D864C -Unk_ov101_021D864C: ; 0x021D864C - .incbin "incbin/overlay101_rodata.bin", 0xC4, 0xCC - 0xC4 - - .global Unk_ov101_021D8654 -Unk_ov101_021D8654: ; 0x021D8654 - .incbin "incbin/overlay101_rodata.bin", 0xCC, 0xD4 - 0xCC - - .global Unk_ov101_021D865C -Unk_ov101_021D865C: ; 0x021D865C - .incbin "incbin/overlay101_rodata.bin", 0xD4, 0xDC - 0xD4 - - .global Unk_ov101_021D8664 -Unk_ov101_021D8664: ; 0x021D8664 - .incbin "incbin/overlay101_rodata.bin", 0xDC, 0xE4 - 0xDC - - .global Unk_ov101_021D866C -Unk_ov101_021D866C: ; 0x021D866C - .incbin "incbin/overlay101_rodata.bin", 0xE4, 0xF0 - 0xE4 - - .global Unk_ov101_021D8678 -Unk_ov101_021D8678: ; 0x021D8678 - .incbin "incbin/overlay101_rodata.bin", 0xF0, 0xFC - 0xF0 - - .global Unk_ov101_021D8684 -Unk_ov101_021D8684: ; 0x021D8684 - .incbin "incbin/overlay101_rodata.bin", 0xFC, 0x108 - 0xFC - - .global Unk_ov101_021D8690 -Unk_ov101_021D8690: ; 0x021D8690 - .incbin "incbin/overlay101_rodata.bin", 0x108, 0x118 - 0x108 - - .global Unk_ov101_021D86A0 -Unk_ov101_021D86A0: ; 0x021D86A0 - .incbin "incbin/overlay101_rodata.bin", 0x118, 0x128 - 0x118 - - .global Unk_ov101_021D86B0 -Unk_ov101_021D86B0: ; 0x021D86B0 - .incbin "incbin/overlay101_rodata.bin", 0x128, 0x13C - 0x128 - - .global Unk_ov101_021D86C4 -Unk_ov101_021D86C4: ; 0x021D86C4 - .incbin "incbin/overlay101_rodata.bin", 0x13C, 0x150 - 0x13C - - .global Unk_ov101_021D86D8 -Unk_ov101_021D86D8: ; 0x021D86D8 - .incbin "incbin/overlay101_rodata.bin", 0x150, 0x164 - 0x150 - - .global Unk_ov101_021D86EC -Unk_ov101_021D86EC: ; 0x021D86EC - .incbin "incbin/overlay101_rodata.bin", 0x164, 0x178 - 0x164 - - .global Unk_ov101_021D8700 -Unk_ov101_021D8700: ; 0x021D8700 - .incbin "incbin/overlay101_rodata.bin", 0x178, 0x18C - 0x178 - - .global Unk_ov101_021D8714 -Unk_ov101_021D8714: ; 0x021D8714 - .incbin "incbin/overlay101_rodata.bin", 0x18C, 0x1A0 - 0x18C - - .global Unk_ov101_021D8728 -Unk_ov101_021D8728: ; 0x021D8728 - .incbin "incbin/overlay101_rodata.bin", 0x1A0, 0x1B8 - 0x1A0 - - .global Unk_ov101_021D8740 -Unk_ov101_021D8740: ; 0x021D8740 - .incbin "incbin/overlay101_rodata.bin", 0x1B8, 0x1D0 - 0x1B8 - - .global Unk_ov101_021D8758 -Unk_ov101_021D8758: ; 0x021D8758 - .incbin "incbin/overlay101_rodata.bin", 0x1D0, 0x1EC - 0x1D0 - - .global Unk_ov101_021D8774 -Unk_ov101_021D8774: ; 0x021D8774 - .incbin "incbin/overlay101_rodata.bin", 0x1EC, 0x220 - 0x1EC - - .global Unk_ov101_021D87A8 -Unk_ov101_021D87A8: ; 0x021D87A8 - .incbin "incbin/overlay101_rodata.bin", 0x220, 0x2B0 - 0x220 - - .global Unk_ov101_021D8838 -Unk_ov101_021D8838: ; 0x021D8838 - .incbin "incbin/overlay101_rodata.bin", 0x2B0, 0x3B0 - 0x2B0 - - .global Unk_ov101_021D8938 -Unk_ov101_021D8938: ; 0x021D8938 - .incbin "incbin/overlay101_rodata.bin", 0x3B0, 0x520 - - - .data - - - .global Unk_ov101_021D9E60 -Unk_ov101_021D9E60: ; 0x021D9E60 - .incbin "incbin/overlay101_data.bin", 0x0, 0x14 - diff --git a/asm/overlay101/ov101_021D59AC.inc b/asm/overlay101/ov101_021D59AC.inc deleted file mode 100644 index 00a08014be..0000000000 --- a/asm/overlay101/ov101_021D59AC.inc +++ /dev/null @@ -1,63 +0,0 @@ -.public sub_02005748 -.public sub_02005844 -.public sub_0200DA04 -.public sub_0200DA3C -.public sub_0200DA58 -.public sub_0201D2A4 -.public sub_02021C50 -.public sub_02021C60 -.public sub_02021C70 -.public sub_02021C94 -.public sub_02021CAC -.public sub_02021CC8 -.public sub_02021CE4 -.public sub_02021CF8 -.public sub_02021D0C -.public sub_02021D6C -.public sub_02021DE0 -.public sub_02021E24 -.public sub_02021E2C -.public sub_02021E50 -.public sub_02021FD0 -.public GF_AssertFail -.public sub_02071330 -.public sub_0207136C -.public sub_02071598 -.public sub_020715B4 -.public sub_020715BC -.public sub_020715D4 -.public sub_020715E4 -.public _s32_div_f -.public _u32_div_f -.public ov101_021D55A4 -.public ov101_021D630C -.public ov101_021D63A4 -.public ov101_021D63BC -.public ov101_021D63E8 -.public ov101_021D6410 -.public ov101_021D65A0 -.public ov101_021D65CC -.public ov101_021D65F4 -.public ov101_021D667C -.public ov101_021D66A8 -.public ov101_021D66D0 -.public ov101_021D6D10 -.public ov101_021D6D3C -.public ov101_021D6D68 -.public ov101_021D6E78 -.public ov101_021D7D4C -.public ov101_021D7D6C -.public ov101_021D7D94 -.public ov101_021D80E4 -.public ov101_021D814C -.public ov101_021D8180 -.public ov101_021D81B4 -.public ov101_021D8220 -.public ov101_021D8254 -.public ov101_021D8288 -.public ov101_021D82F0 -.public ov101_021D8358 -.public ov101_021D84A4 -.public ov101_021D8544 -.public ov101_021D8560 -.public ov101_021D8574 diff --git a/asm/overlay101/ov101_021D59AC.s b/asm/overlay101/ov101_021D59AC.s deleted file mode 100644 index 8dee2c9be0..0000000000 --- a/asm/overlay101/ov101_021D59AC.s +++ /dev/null @@ -1,5226 +0,0 @@ - .include "macros/function.inc" - .include "overlay101/ov101_021D59AC.inc" - - - - .text - - - thumb_func_start ov101_021D59AC -ov101_021D59AC: ; 0x021D59AC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x20 - add r7, r0, #0 - mov r4, #0 - add r0, sp, #8 - str r4, [r0, #0] - str r4, [r0, #4] - mov r6, #0x11 - lsl r6, r6, #0xe - str r4, [r0, #8] - str r7, [sp, #0x14] - cmp r4, #3 - bge _021D59FE -_021D59C6: - mov r5, #0 -_021D59C8: - str r6, [sp, #8] - str r4, [sp, #0x1c] - str r5, [sp, #0x18] - add r0, sp, #0x14 - str r0, [sp] - mov r0, #0x8b - str r0, [sp, #4] - ldr r0, _021D5A04 ; =0x0000044C - ldr r1, _021D5A08 ; =0x021D91DC - ldr r0, [r7, r0] - add r2, sp, #8 - mov r3, #0 - bl sub_02071330 - mov r0, #2 - lsl r0, r0, #0x10 - add r5, r5, r0 - mov r0, #0xa - lsl r0, r0, #0x10 - cmp r5, r0 - blt _021D59C8 - mov r0, #0xf - lsl r0, r0, #0xe - add r4, r4, #1 - add r6, r6, r0 - cmp r4, #3 - blt _021D59C6 -_021D59FE: - add sp, #0x20 - pop {r3, r4, r5, r6, r7, pc} - nop -_021D5A04: .word 0x0000044C -_021D5A08: .word 0x021D91DC - thumb_func_end ov101_021D59AC - - thumb_func_start ov101_021D5A0C -ov101_021D5A0C: ; 0x021D5A0C - push {r3, r4, r5, lr} - sub sp, #0x28 - add r5, r0, #0 - add r4, r1, #0 - bl sub_020715BC - add r3, r0, #0 - ldmia r3!, {r0, r1} - add r2, r4, #0 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - add r1, sp, #0x1c - str r0, [r2, #0] - add r0, r5, #0 - bl sub_020715E4 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #3 - str r0, [sp, #0x14] - mov r0, #2 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #0] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r1, #0xc - add r2, sp, #0x1c - mov r3, #1 - bl ov101_021D84A4 - ldr r0, [r4, #0x10] - mov r1, #1 - bl sub_02021CC8 - mov r0, #1 - add sp, #0x28 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5A0C - - thumb_func_start ov101_021D5A64 -ov101_021D5A64: ; 0x021D5A64 - ldr r3, _021D5A6C ; =ov101_021D8544 - add r1, #0xc - add r0, r1, #0 - bx r3 - ; .align 2, 0 -_021D5A6C: .word ov101_021D8544 - thumb_func_end ov101_021D5A64 - - thumb_func_start ov101_021D5A70 -ov101_021D5A70: ; 0x021D5A70 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r1, #0 - ldr r7, [r5, #8] - str r0, [sp] - ldr r0, [r5, #0] - lsl r6, r7, #2 - add r0, r0, r6 - add r0, #0x90 - ldr r1, [r5, #4] - ldr r0, [r0, #0] - add r0, r1, r0 - mov r1, #0xa - lsl r1, r1, #0x10 - bl _s32_div_f - add r4, r1, #0 - ldr r0, [sp] - add r1, sp, #4 - bl sub_020715E4 - ldr r1, [r5, #0] - mov r0, #1 - add r1, r1, r6 - add r1, #0x9c - lsl r0, r0, #0x10 - ldr r1, [r1, #0] - add r0, r4, r0 - add r0, r0, r1 - str r0, [sp, #8] - ldr r0, [r5, #0x10] - add r1, sp, #4 - bl sub_02021C50 - asr r2, r4, #0x10 - lsr r2, r2, #0xf - add r2, r4, r2 - ldr r0, [r5, #0] - add r1, r7, #0 - asr r2, r2, #0x11 - bl ov101_021D55A4 - lsl r1, r0, #2 - ldr r0, _021D5AE8 ; =0x021D927C - ldr r4, [r0, r1] - ldr r0, [r5, #0x10] - bl sub_02021E24 - cmp r4, r0 - beq _021D5AE4 - ldr r0, [r5, #0x10] - add r1, r4, #0 - bl sub_02021D6C - ldr r0, [r5, #0x10] - mov r1, #0 - bl sub_02021E50 -_021D5AE4: - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D5AE8: .word 0x021D927C - thumb_func_end ov101_021D5A70 - - thumb_func_start ov101_021D5AEC -ov101_021D5AEC: ; 0x021D5AEC - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D5AEC - - thumb_func_start ov101_021D5AF0 -ov101_021D5AF0: ; 0x021D5AF0 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - ldr r3, _021D5B34 ; =0x021D8ECC - add r5, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #8 - add r6, r2, #0 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - mov r4, #1 - str r0, [r2, #0] - mov r7, #0x8d -_021D5B08: - str r5, [sp] - ldr r0, _021D5B38 ; =0x0000044C - str r7, [sp, #4] - ldr r0, [r5, r0] - ldr r1, _021D5B3C ; =0x021D91F0 - add r2, r6, #0 - add r3, r4, #0 - bl sub_02071330 - mov r0, #0xa - mul r4, r0 - mov r0, #2 - ldr r1, [sp, #8] - lsl r0, r0, #0xe - sub r0, r1, r0 - str r0, [sp, #8] - ldr r0, _021D5B40 ; =0x000186A0 - cmp r4, r0 - blo _021D5B08 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_021D5B34: .word 0x021D8ECC -_021D5B38: .word 0x0000044C -_021D5B3C: .word 0x021D91F0 -_021D5B40: .word 0x000186A0 - thumb_func_end ov101_021D5AF0 - - thumb_func_start ov101_021D5B44 -ov101_021D5B44: ; 0x021D5B44 - push {r3, r4, r5, lr} - sub sp, #0x28 - add r5, r0, #0 - add r4, r1, #0 - bl sub_020715B4 - mov r1, #0xa - str r0, [r4, #4] - mul r1, r0 - str r1, [r4, #8] - add r0, r5, #0 - bl sub_020715BC - str r0, [r4, #0] - add r0, r5, #0 - add r1, sp, #0x1c - bl sub_020715E4 - mov r0, #0 - str r0, [sp] - mov r3, #1 - str r3, [sp, #4] - str r3, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - str r3, [sp, #0x14] - str r3, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #0] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r1, #0xc - add r2, sp, #0x1c - bl ov101_021D84A4 - ldr r0, [r4, #0x10] - mov r1, #1 - bl sub_02021CC8 - mov r0, #1 - add sp, #0x28 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5B44 - - thumb_func_start ov101_021D5B9C -ov101_021D5B9C: ; 0x021D5B9C - ldr r3, _021D5BA4 ; =ov101_021D8544 - add r1, #0xc - add r0, r1, #0 - bx r3 - ; .align 2, 0 -_021D5BA4: .word ov101_021D8544 - thumb_func_end ov101_021D5B9C - - thumb_func_start ov101_021D5BA8 -ov101_021D5BA8: ; 0x021D5BA8 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r1, #0 - add r6, r0, #0 - ldr r0, [r5, #0] - ldr r4, [r0, #0x60] - ldr r0, [r5, #4] - cmp r0, #1 - bls _021D5BCA - cmp r4, r0 - bhs _021D5BCA - ldr r0, [r5, #0x10] - mov r1, #0 - bl sub_02021CAC - add sp, #0xc - pop {r3, r4, r5, r6, pc} -_021D5BCA: - ldr r0, [r5, #0x10] - mov r1, #1 - bl sub_02021CAC - ldr r1, [r5, #8] - add r0, r4, #0 - bl _u32_div_f - add r4, r1, #0 - ldr r1, [r5, #4] - add r0, r4, #0 - bl _u32_div_f - add r4, r0, #0 - ldr r0, [r5, #0x10] - bl sub_02021E24 - cmp r4, r0 - beq _021D5BFE - ldr r0, [r5, #0x10] - add r1, r4, #0 - bl sub_02021D6C - ldr r0, [r5, #0x10] - bl sub_02021DE0 -_021D5BFE: - add r0, r6, #0 - add r1, sp, #0 - bl sub_020715E4 - ldr r0, _021D5C20 ; =0x021D937C - lsl r1, r4, #2 - ldr r0, [r0, r1] - ldr r2, [sp] - add r1, sp, #0 - add r0, r2, r0 - str r0, [sp] - ldr r0, [r5, #0x10] - bl sub_02021C50 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021D5C20: .word 0x021D937C - thumb_func_end ov101_021D5BA8 - - thumb_func_start ov101_021D5C24 -ov101_021D5C24: ; 0x021D5C24 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D5C24 - - thumb_func_start ov101_021D5C28 -ov101_021D5C28: ; 0x021D5C28 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - ldr r3, _021D5C6C ; =0x021D8F98 - add r5, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #8 - add r6, r2, #0 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - mov r4, #1 - str r0, [r2, #0] - mov r7, #0x8d -_021D5C40: - str r5, [sp] - ldr r0, _021D5C70 ; =0x0000044C - str r7, [sp, #4] - ldr r0, [r5, r0] - ldr r1, _021D5C74 ; =0x021D9204 - add r2, r6, #0 - add r3, r4, #0 - bl sub_02071330 - mov r0, #0xa - mul r4, r0 - mov r0, #2 - ldr r1, [sp, #8] - lsl r0, r0, #0xe - sub r0, r1, r0 - str r0, [sp, #8] - ldr r0, _021D5C78 ; =0x000186A0 - cmp r4, r0 - blo _021D5C40 - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - nop -_021D5C6C: .word 0x021D8F98 -_021D5C70: .word 0x0000044C -_021D5C74: .word 0x021D9204 -_021D5C78: .word 0x000186A0 - thumb_func_end ov101_021D5C28 - - thumb_func_start ov101_021D5C7C -ov101_021D5C7C: ; 0x021D5C7C - push {r3, r4, r5, lr} - sub sp, #0x28 - add r5, r0, #0 - add r4, r1, #0 - bl sub_020715B4 - mov r1, #0xa - str r0, [r4, #4] - mul r1, r0 - str r1, [r4, #8] - add r0, r5, #0 - bl sub_020715BC - str r0, [r4, #0] - add r0, r5, #0 - add r1, sp, #0x1c - bl sub_020715E4 - mov r0, #0 - str r0, [sp] - mov r3, #1 - str r3, [sp, #4] - str r3, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - str r3, [sp, #0x14] - str r3, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #0] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r1, #0xc - add r2, sp, #0x1c - bl ov101_021D84A4 - ldr r0, [r4, #0x10] - mov r1, #1 - bl sub_02021CC8 - mov r0, #1 - add sp, #0x28 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5C7C - - thumb_func_start ov101_021D5CD4 -ov101_021D5CD4: ; 0x021D5CD4 - ldr r3, _021D5CDC ; =ov101_021D8544 - add r1, #0xc - add r0, r1, #0 - bx r3 - ; .align 2, 0 -_021D5CDC: .word ov101_021D8544 - thumb_func_end ov101_021D5CD4 - - thumb_func_start ov101_021D5CE0 -ov101_021D5CE0: ; 0x021D5CE0 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r1, #0 - add r6, r0, #0 - ldr r0, [r5, #0] - ldr r4, [r0, #0x64] - ldr r0, [r5, #4] - cmp r4, r0 - ldr r0, [r5, #0x10] - bhs _021D5CFE - mov r1, #0 - bl sub_02021CAC - add sp, #0xc - pop {r3, r4, r5, r6, pc} -_021D5CFE: - mov r1, #1 - bl sub_02021CAC - ldr r1, [r5, #8] - add r0, r4, #0 - bl _u32_div_f - add r4, r1, #0 - ldr r1, [r5, #4] - add r0, r4, #0 - bl _u32_div_f - add r4, r0, #0 - ldr r0, [r5, #0x10] - bl sub_02021E24 - cmp r4, r0 - beq _021D5D30 - ldr r0, [r5, #0x10] - add r1, r4, #0 - bl sub_02021D6C - ldr r0, [r5, #0x10] - bl sub_02021DE0 -_021D5D30: - add r0, r6, #0 - add r1, sp, #0 - bl sub_020715E4 - ldr r0, _021D5D50 ; =0x021D9354 - lsl r1, r4, #2 - ldr r0, [r0, r1] - ldr r2, [sp] - add r1, sp, #0 - add r0, r2, r0 - str r0, [sp] - ldr r0, [r5, #0x10] - bl sub_02021C50 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021D5D50: .word 0x021D9354 - thumb_func_end ov101_021D5CE0 - - thumb_func_start ov101_021D5D54 -ov101_021D5D54: ; 0x021D5D54 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D5D54 - - thumb_func_start ov101_021D5D58 -ov101_021D5D58: ; 0x021D5D58 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - ldr r6, _021D5D84 ; =0x021D90AC - add r5, sp, #8 - add r4, r0, #0 - add r3, r1, #0 - ldmia r6!, {r0, r1} - add r2, r5, #0 - stmia r5!, {r0, r1} - ldr r0, [r6, #0] - ldr r1, _021D5D88 ; =0x021D9218 - str r0, [r5, #0] - str r4, [sp] - mov r0, #0x86 - str r0, [sp, #4] - ldr r0, _021D5D8C ; =0x0000044C - ldr r0, [r4, r0] - bl sub_02071330 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - nop -_021D5D84: .word 0x021D90AC -_021D5D88: .word 0x021D9218 -_021D5D8C: .word 0x0000044C - thumb_func_end ov101_021D5D58 - - thumb_func_start ov101_021D5D90 -ov101_021D5D90: ; 0x021D5D90 - push {r4, lr} - add r4, r1, #0 - bl sub_02071598 - str r4, [r0, #0] - mov r1, #0 - str r1, [r0, #4] - str r1, [r0, #8] - str r1, [r0, #0x30] - pop {r4, pc} - thumb_func_end ov101_021D5D90 - - thumb_func_start ov101_021D5DA4 -ov101_021D5DA4: ; 0x021D5DA4 - push {r4, lr} - add r4, r1, #0 - bl sub_02071598 - cmp r4, #1 - ldr r0, [r0, #0x40] - bne _021D5DBA - mov r1, #0 - bl sub_02021CAC - pop {r4, pc} -_021D5DBA: - mov r1, #1 - bl sub_02021CAC - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5DA4 - - thumb_func_start ov101_021D5DC4 -ov101_021D5DC4: ; 0x021D5DC4 - push {r3, lr} - bl sub_02071598 - ldr r0, [r0, #8] - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5DC4 - - thumb_func_start ov101_021D5DD0 -ov101_021D5DD0: ; 0x021D5DD0 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl sub_020715BC - str r0, [r4, #0x38] - add r0, r5, #0 - bl sub_020715B4 - str r0, [r4, #0x10] - mov r0, #1 - pop {r3, r4, r5, pc} - thumb_func_end ov101_021D5DD0 - - thumb_func_start ov101_021D5DE8 -ov101_021D5DE8: ; 0x021D5DE8 - push {r4, lr} - add r4, r1, #0 - ldr r0, [r4, #0x40] - cmp r0, #0 - beq _021D5E00 - ldr r0, [r4, #0x38] - bl ov101_021D63A4 - add r4, #0x3c - add r0, r4, #0 - bl ov101_021D8544 -_021D5E00: - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D5DE8 - - thumb_func_start ov101_021D5E04 -ov101_021D5E04: ; 0x021D5E04 - push {r3, r4, r5, lr} - ldr r4, _021D5E20 ; =0x021D9294 - add r5, r1, #0 -_021D5E0A: - ldr r1, [r5, #0] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r2, [r4, r1] - ldr r1, [r5, #4] - lsl r1, r1, #2 - ldr r1, [r2, r1] - blx r1 - cmp r0, #1 - beq _021D5E0A - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D5E20: .word 0x021D9294 - thumb_func_end ov101_021D5E04 - - thumb_func_start ov101_021D5E24 -ov101_021D5E24: ; 0x021D5E24 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D5E24 - - thumb_func_start ov101_021D5E28 -ov101_021D5E28: ; 0x021D5E28 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4, #0x10] - bl ov101_021D630C - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D5E28 - - thumb_func_start ov101_021D5E3C -ov101_021D5E3C: ; 0x021D5E3C - ldr r1, [r0, #0xc] - cmp r1, #2 - bne _021D5E48 - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] -_021D5E48: - mov r0, #0 - bx lr - thumb_func_end ov101_021D5E3C - - thumb_func_start ov101_021D5E4C -ov101_021D5E4C: ; 0x021D5E4C - push {r4, r5, lr} - sub sp, #0xc - ldr r5, _021D5E7C ; =0x021D90C4 - add r4, r0, #0 - ldmia r5!, {r0, r1} - add r3, sp, #0 - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r4, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x38] - add r1, #0x3c - bl ov101_021D6410 - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - nop -_021D5E7C: .word 0x021D90C4 - thumb_func_end ov101_021D5E4C - - thumb_func_start ov101_021D5E80 -ov101_021D5E80: ; 0x021D5E80 - mov r0, #0 - bx lr - thumb_func_end ov101_021D5E80 - - thumb_func_start ov101_021D5E84 -ov101_021D5E84: ; 0x021D5E84 - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D5EE0 ; =0x021D9088 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D5EE4 ; =0x021D8FB0 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x40] - bl sub_02021C70 - ldr r0, [r4, #0x40] - mov r1, #0 - bl sub_02021C94 - ldr r0, [r4, #0x40] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x40] - mov r1, #0 - bl sub_02021D6C - ldr r0, [r4, #0x40] - mov r1, #0 - bl sub_02021E50 - ldr r0, _021D5EE8 ; =0x00000624 - bl sub_02005748 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - nop -_021D5EE0: .word 0x021D9088 -_021D5EE4: .word 0x021D8FB0 -_021D5EE8: .word 0x00000624 - thumb_func_end ov101_021D5E84 - - thumb_func_start ov101_021D5EEC -ov101_021D5EEC: ; 0x021D5EEC - push {r4, lr} - sub sp, #0x18 - add r4, r0, #0 - ldr r0, [r4, #0x40] - add r1, sp, #0xc - bl ov101_021D8560 - ldr r0, [r4, #0x40] - add r1, sp, #0 - bl ov101_021D8574 - mov r0, #1 - ldr r1, [sp, #0x10] - lsl r0, r0, #0xe - sub r1, r1, r0 - str r1, [sp, #0x10] - ldr r2, [sp] - ldr r1, _021D5F50 ; =0x000001C7 - sub r2, r2, r1 - str r2, [sp] - ldr r2, [sp, #4] - sub r1, r2, r1 - str r1, [sp, #4] - ldr r1, [r4, #0x30] - add r1, r1, #1 - str r1, [r4, #0x30] - cmp r1, #9 - blo _021D5F3A - mov r1, #0x16 - lsr r0, r0, #2 - lsl r1, r1, #0x10 - str r1, [sp, #0x10] - str r0, [sp] - str r0, [sp, #4] - mov r0, #0 - str r0, [r4, #0x30] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D5F3A: - ldr r0, [r4, #0x40] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x40] - add r1, sp, #0 - bl sub_02021C70 - mov r0, #0 - add sp, #0x18 - pop {r4, pc} - ; .align 2, 0 -_021D5F50: .word 0x000001C7 - thumb_func_end ov101_021D5EEC - - thumb_func_start ov101_021D5F54 -ov101_021D5F54: ; 0x021D5F54 - ldr r1, [r0, #0x30] - add r1, r1, #1 - str r1, [r0, #0x30] - cmp r1, #3 - blo _021D5F6C - mov r1, #0 - str r1, [r0, #0x30] - mov r1, #1 - str r1, [r0, #8] - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] -_021D5F6C: - mov r0, #0 - bx lr - thumb_func_end ov101_021D5F54 - - thumb_func_start ov101_021D5F70 -ov101_021D5F70: ; 0x021D5F70 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0x40] - mov r1, #1 - bl sub_02021D6C - ldr r0, [r4, #0x40] - bl sub_02021DE0 - ldr r0, [r4, #0x40] - mov r1, #1 - bl sub_02021CC8 - mov r0, #0x6d - lsl r0, r0, #4 - bl sub_02005748 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D5F70 - - thumb_func_start ov101_021D5F9C -ov101_021D5F9C: ; 0x021D5F9C - ldr r1, [r0, #0x30] - add r1, r1, #1 - str r1, [r0, #0x30] - cmp r1, #4 - blo _021D5FB4 - mov r1, #0 - str r1, [r0, #0x30] - mov r1, #1 - str r1, [r0, #8] - ldr r1, [r0, #4] - add r1, r1, #1 - str r1, [r0, #4] -_021D5FB4: - mov r0, #0 - bx lr - thumb_func_end ov101_021D5F9C - - thumb_func_start ov101_021D5FB8 -ov101_021D5FB8: ; 0x021D5FB8 - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D6018 ; =0x021D8FF8 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D601C ; =0x021D8F14 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r5, r2, #0 - str r0, [r3, #0] - add r3, r4, #0 - ldmia r5!, {r0, r1} - add r3, #0x14 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x40] - bl sub_02021C50 - ldr r0, [r4, #0x40] - add r1, sp, #0xc - bl sub_02021C70 - ldr r0, [r4, #0x40] - mov r1, #0 - bl sub_02021C94 - ldr r0, [r4, #0x40] - mov r1, #3 - bl sub_02021D6C - ldr r0, [r4, #0x40] - bl sub_02021DE0 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #1 - add sp, #0x18 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D6018: .word 0x021D8FF8 -_021D601C: .word 0x021D8F14 - thumb_func_end ov101_021D5FB8 - - thumb_func_start ov101_021D6020 -ov101_021D6020: ; 0x021D6020 - push {r3, r4, r5, r6, lr} - sub sp, #0x2c - ldr r5, _021D6080 ; =0x021D92B0 - add r4, r0, #0 - add r2, sp, #0 - ldmia r5!, {r0, r1} - add r3, r2, #0 - stmia r2!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r5!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r5!, {r0, r1} - add r6, r4, #0 - add r6, #0x14 - stmia r2!, {r0, r1} - add r5, sp, #0x20 - ldmia r6!, {r0, r1} - add r2, r5, #0 - stmia r5!, {r0, r1} - ldr r0, [r6, #0] - str r0, [r5, #0] - ldr r1, [r4, #0x30] - ldr r0, [sp, #0x24] - lsr r1, r1, #1 - lsl r1, r1, #2 - ldr r1, [r3, r1] - add r0, r0, r1 - str r0, [sp, #0x24] - ldr r0, [r4, #0x40] - add r1, r2, #0 - bl sub_02021C50 - ldr r0, [r4, #0x30] - add r0, r0, #1 - str r0, [r4, #0x30] - cmp r0, #0x10 - blo _021D607A - mov r0, #0 - str r0, [r4, #0x30] - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D607A: - mov r0, #0 - add sp, #0x2c - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021D6080: .word 0x021D92B0 - thumb_func_end ov101_021D6020 - - thumb_func_start ov101_021D6084 -ov101_021D6084: ; 0x021D6084 - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D60E4 ; =0x021D8EE4 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D60E8 ; =0x021D8FD4 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r5, r2, #0 - str r0, [r3, #0] - add r3, r4, #0 - ldmia r5!, {r0, r1} - add r3, #0x14 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x40] - bl sub_02021C50 - ldr r0, [r4, #0x40] - add r1, sp, #0xc - bl sub_02021C70 - ldr r0, [r4, #0x40] - mov r1, #0 - bl sub_02021C94 - ldr r0, [r4, #0x40] - mov r1, #4 - bl sub_02021D6C - ldr r0, [r4, #0x40] - bl sub_02021DE0 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #1 - add sp, #0x18 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D60E4: .word 0x021D8EE4 -_021D60E8: .word 0x021D8FD4 - thumb_func_end ov101_021D6084 - - thumb_func_start ov101_021D60EC -ov101_021D60EC: ; 0x021D60EC - push {r4, lr} - sub sp, #0x18 - add r4, r0, #0 - ldr r0, [r4, #0x40] - add r1, sp, #0xc - bl ov101_021D8560 - ldr r0, [r4, #0x40] - add r1, sp, #0 - bl ov101_021D8574 - mov r0, #1 - ldr r1, [sp, #0x10] - lsl r0, r0, #0xe - add r1, r1, r0 - str r1, [sp, #0x10] - ldr r2, [sp] - ldr r1, _021D6154 ; =0x000001C7 - add r2, r2, r1 - str r2, [sp] - ldr r2, [sp, #4] - add r1, r2, r1 - str r1, [sp, #4] - ldr r1, [r4, #0x30] - add r1, r1, #1 - str r1, [r4, #0x30] - cmp r1, #0xa - blo _021D613E - mov r1, #7 - lsr r0, r0, #2 - lsl r1, r1, #0x12 - str r1, [sp, #0x10] - str r0, [sp] - str r0, [sp, #4] - mov r0, #0 - str r0, [r4, #0x30] - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] -_021D613E: - ldr r0, [r4, #0x40] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x40] - add r1, sp, #0 - bl sub_02021C70 - mov r0, #0 - add sp, #0x18 - pop {r4, pc} - ; .align 2, 0 -_021D6154: .word 0x000001C7 - thumb_func_end ov101_021D60EC - - thumb_func_start ov101_021D6158 -ov101_021D6158: ; 0x021D6158 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - ldr r3, _021D61D8 ; =0x021D8F50 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0x18 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r3, _021D61DC ; =0x021D8EC0 - str r0, [r2, #0] - add r2, sp, #0xc - ldmia r3!, {r0, r1} - add r6, r2, #0 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - add r5, sp, #0 - mov r7, #0 - str r7, [r5, #0] - str r0, [r2, #0] - add r3, r6, #0 - str r7, [r5, #4] - add r2, r4, #0 - ldmia r3!, {r0, r1} - str r7, [r5, #8] - add r2, #0x14 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - str r0, [r2, #0] - add r2, r4, #0 - ldmia r5!, {r0, r1} - add r2, #0x20 - stmia r2!, {r0, r1} - ldr r0, [r5, #0] - add r1, r6, #0 - str r0, [r2, #0] - str r7, [r4, #0x30] - str r7, [r4, #0x34] - str r7, [r4, #0x2c] - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #0x40] - bl sub_02021C50 - ldr r0, [r4, #0x40] - add r1, sp, #0x18 - bl sub_02021C70 - ldr r0, [r4, #0x40] - add r1, r7, #0 - bl sub_02021C94 - ldr r0, [r4, #0x40] - mov r1, #2 - bl sub_02021D6C - ldr r0, [r4, #0x40] - bl sub_02021DE0 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #1 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D61D8: .word 0x021D8F50 -_021D61DC: .word 0x021D8EC0 - thumb_func_end ov101_021D6158 - - thumb_func_start ov101_021D61E0 -ov101_021D61E0: ; 0x021D61E0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x60 - ldr r3, _021D627C ; =0x021D92D0 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0x40 - add r6, r2, #0 - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r3, _021D6280 ; =0x021D92F0 - add r2, sp, #0x20 - ldmia r3!, {r0, r1} - add r5, r2, #0 - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r3, _021D6284 ; =0x021D9310 - add r2, sp, #0 - add r7, r2, #0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r1, [r4, #0x34] - ldr r0, [r4, #0x2c] - lsl r1, r1, #2 - ldr r1, [r6, r1] - add r0, r0, r1 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x34] - ldr r1, [r4, #0x14] - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r0, r1, r0 - str r0, [r4, #0x14] - ldr r0, [r4, #0x30] - add r2, r0, #1 - str r2, [r4, #0x30] - ldr r1, [r4, #0x34] - lsl r0, r1, #2 - ldr r0, [r7, r0] - cmp r2, r0 - blo _021D6260 - add r0, r1, #1 - str r0, [r4, #0x34] - cmp r0, #8 - blt _021D625C - mov r0, #0 - str r0, [r4, #0x34] -_021D625C: - mov r0, #0 - str r0, [r4, #0x30] -_021D6260: - add r1, r4, #0 - ldr r0, [r4, #0x40] - add r1, #0x14 - bl sub_02021C50 - ldr r1, [r4, #0x2c] - ldr r0, [r4, #0x40] - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl sub_02021C94 - mov r0, #0 - add sp, #0x60 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D627C: .word 0x021D92D0 -_021D6280: .word 0x021D92F0 -_021D6284: .word 0x021D9310 - thumb_func_end ov101_021D61E0 - - thumb_func_start ov101_021D6288 -ov101_021D6288: ; 0x021D6288 - push {r3, r4, r5, r6, lr} - sub sp, #0x24 - ldr r3, _021D6304 ; =0x021D8E9C - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0x18 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D6308 ; =0x021D8EFC - str r0, [r2, #0] - add r2, sp, #0xc - add r3, r2, #0 - ldmia r5!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r5, #0] - add r5, r4, #0 - str r0, [r2, #0] - add r2, sp, #0 - mov r0, #0 - str r0, [r2, #0] - str r0, [r2, #4] - add r6, r3, #0 - str r0, [r2, #8] - ldmia r6!, {r0, r1} - add r5, #0x14 - stmia r5!, {r0, r1} - ldr r0, [r6, #0] - str r0, [r5, #0] - add r5, r4, #0 - ldmia r2!, {r0, r1} - add r5, #0x20 - stmia r5!, {r0, r1} - ldr r0, [r2, #0] - add r1, r3, #0 - str r0, [r5, #0] - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4, #0x40] - bl sub_02021C50 - ldr r0, [r4, #0x40] - add r1, sp, #0x18 - bl sub_02021C70 - ldr r0, [r4, #0x40] - mov r1, #0 - bl sub_02021C94 - ldr r0, [r4, #0x40] - mov r1, #2 - bl sub_02021D6C - ldr r0, [r4, #0x40] - bl sub_02021DE0 - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - mov r0, #1 - add sp, #0x24 - pop {r3, r4, r5, r6, pc} - nop -_021D6304: .word 0x021D8E9C -_021D6308: .word 0x021D8EFC - thumb_func_end ov101_021D6288 - - thumb_func_start ov101_021D630C -ov101_021D630C: ; 0x021D630C - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - add r5, r1, #0 - ldr r4, [r6, #0x38] - cmp r5, #5 - blt _021D631C - bl GF_AssertFail -_021D631C: - mov r1, #2 - mov r2, #0x45 - ldr r7, _021D6394 ; =0x021D93D4 - lsl r3, r5, #4 - str r1, [sp] - lsl r2, r2, #4 - ldr r0, [r4, r2] - sub r2, #0x18 - add r5, r7, r3 - ldr r2, [r4, r2] - ldr r3, [r7, r3] - bl ov101_021D80E4 - mov r1, #2 - mov r2, #0x45 - str r1, [sp] - lsl r2, r2, #4 - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - ldr r3, [r5, #4] - bl ov101_021D81B4 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - ldr r2, [r5, #8] - mov r3, #2 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - ldr r2, [r5, #0xc] - mov r3, #2 - bl ov101_021D82F0 - ldr r0, _021D6398 ; =ov101_021D63BC - ldr r2, _021D639C ; =0x00000101 - add r1, r6, #0 - bl sub_0200DA04 - cmp r0, #0 - bne _021D6380 - bl GF_AssertFail -_021D6380: - ldr r0, _021D63A0 ; =ov101_021D63E8 - ldr r2, _021D639C ; =0x00000101 - add r1, r6, #0 - bl sub_0200DA3C - cmp r0, #0 - bne _021D6392 - bl GF_AssertFail -_021D6392: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D6394: .word 0x021D93D4 -_021D6398: .word ov101_021D63BC -_021D639C: .word 0x00000101 -_021D63A0: .word ov101_021D63E8 - thumb_func_end ov101_021D630C - - thumb_func_start ov101_021D63A4 -ov101_021D63A4: ; 0x021D63A4 - push {r3, lr} - mov r1, #2 - mov r2, #0x45 - str r1, [sp] - lsl r2, r2, #4 - ldr r0, [r0, r2] - add r2, r1, #0 - add r3, r1, #0 - bl ov101_021D8358 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D63A4 - - thumb_func_start ov101_021D63BC -ov101_021D63BC: ; 0x021D63BC - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - mov r0, #0x45 - ldr r4, [r5, #0x38] - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #2 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #2 - bl ov101_021D8220 - mov r0, #1 - str r0, [r5, #0xc] - add r0, r6, #0 - bl sub_0200DA58 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D63BC - - thumb_func_start ov101_021D63E8 -ov101_021D63E8: ; 0x021D63E8 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x38] - cmp r0, #1 - bne _021D640C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r1, r0] - mov r1, #2 - bl ov101_021D8254 - mov r0, #2 - str r0, [r4, #0xc] - add r0, r5, #0 - bl sub_0200DA58 -_021D640C: - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D63E8 - - thumb_func_start ov101_021D6410 -ov101_021D6410: ; 0x021D6410 - push {r3, r4, r5, r6, lr} - sub sp, #0x34 - add r5, r0, #0 - add r4, r1, #0 - add r1, sp, #0x28 - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - ldr r6, _021D6480 ; =0x021D9100 - str r0, [r1, #8] - ldmia r6!, {r0, r1} - add r3, sp, #0x1c - stmia r3!, {r0, r1} - ldr r0, [r6, #0] - add r1, r4, #0 - str r0, [r3, #0] - mov r0, #1 - str r0, [sp] - mov r3, #2 - str r3, [sp, #4] - str r3, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - str r3, [sp, #0x14] - mov r0, #7 - str r0, [sp, #0x18] - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl ov101_021D84A4 - ldr r0, [r4, #4] - mov r1, #2 - bl sub_02021CF8 - ldr r0, [r4, #4] - add r1, sp, #0x28 - bl sub_02021C60 - ldr r0, [r4, #4] - add r1, sp, #0x1c - bl sub_02021C70 - mov r0, #0 - bl sub_0201D2A4 - add r1, r0, #0 - ldr r0, [r4, #4] - bl sub_02021C94 - ldr r0, [r4, #4] - mov r1, #1 - bl sub_02021CC8 - add sp, #0x34 - pop {r3, r4, r5, r6, pc} - ; .align 2, 0 -_021D6480: .word 0x021D9100 - thumb_func_end ov101_021D6410 - - thumb_func_start ov101_021D6484 -ov101_021D6484: ; 0x021D6484 - push {r4, r5, lr} - sub sp, #0x14 - ldr r5, _021D64B0 ; =0x021D8F8C - add r3, r0, #0 - ldmia r5!, {r0, r1} - add r4, sp, #8 - add r2, r4, #0 - stmia r4!, {r0, r1} - ldr r0, [r5, #0] - ldr r1, _021D64B4 ; =0x021D9150 - str r0, [r4, #0] - str r3, [sp] - mov r0, #0x87 - str r0, [sp, #4] - ldr r0, _021D64B8 ; =0x0000044C - ldr r0, [r3, r0] - mov r3, #0 - bl sub_02071330 - add sp, #0x14 - pop {r4, r5, pc} - nop -_021D64B0: .word 0x021D8F8C -_021D64B4: .word 0x021D9150 -_021D64B8: .word 0x0000044C - thumb_func_end ov101_021D6484 - - thumb_func_start ov101_021D64BC -ov101_021D64BC: ; 0x021D64BC - push {r4, lr} - add r4, r1, #0 - bl sub_020715BC - str r0, [r4, #0x10] - add r0, r4, #0 - bl ov101_021D65F4 - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D64BC - - thumb_func_start ov101_021D64D0 -ov101_021D64D0: ; 0x021D64D0 - push {r3, r4, lr} - sub sp, #4 - add r4, r1, #0 - ldr r0, [r4, #0x18] - cmp r0, #0 - beq _021D64F8 - mov r1, #3 - str r1, [sp] - mov r0, #0x45 - ldr r2, [r4, #0x10] - lsl r0, r0, #4 - ldr r0, [r2, r0] - add r2, r1, #0 - add r3, r1, #0 - bl ov101_021D8358 - add r4, #0x14 - add r0, r4, #0 - bl ov101_021D8544 -_021D64F8: - add sp, #4 - pop {r3, r4, pc} - thumb_func_end ov101_021D64D0 - - thumb_func_start ov101_021D64FC -ov101_021D64FC: ; 0x021D64FC - push {r4, lr} - sub sp, #0x28 - add r4, r1, #0 - ldr r1, [r4, #0] - cmp r1, #3 - bhi _021D6598 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D6514: ; jump table - .short _021D651C - _021D6514 - 2 ; case 0 - .short _021D655E - _021D6514 - 2 ; case 1 - .short _021D6576 - _021D6514 - 2 ; case 2 - .short _021D6598 - _021D6514 - 2 ; case 3 -_021D651C: - ldr r1, [r4, #0xc] - cmp r1, #2 - bne _021D6598 - add r1, sp, #0x1c - bl sub_020715E4 - mov r0, #1 - str r0, [sp] - mov r0, #3 - str r0, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r3, #2 - str r3, [sp, #0x14] - mov r0, #5 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #0x10] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r1, #0x14 - add r2, sp, #0x1c - bl ov101_021D84A4 - ldr r0, [r4, #0x18] - mov r1, #1 - bl sub_02021CC8 - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] -_021D655E: - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #0xf - blo _021D6598 - ldr r0, [r4, #0] - add sp, #0x28 - add r0, r0, #1 - str r0, [r4, #0] - mov r0, #1 - str r0, [r4, #4] - pop {r4, pc} -_021D6576: - mov r1, #3 - str r1, [sp] - mov r0, #0x45 - ldr r2, [r4, #0x10] - lsl r0, r0, #4 - ldr r0, [r2, r0] - add r2, r1, #0 - add r3, r1, #0 - bl ov101_021D8358 - add r0, r4, #0 - add r0, #0x14 - bl ov101_021D8544 - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] -_021D6598: - add sp, #0x28 - pop {r4, pc} - thumb_func_end ov101_021D64FC - - thumb_func_start ov101_021D659C -ov101_021D659C: ; 0x021D659C - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D659C - - thumb_func_start ov101_021D65A0 -ov101_021D65A0: ; 0x021D65A0 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - mov r0, #0x45 - ldr r4, [r5, #0x10] - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #3 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #3 - bl ov101_021D8220 - mov r0, #1 - str r0, [r5, #0xc] - add r0, r6, #0 - bl sub_0200DA58 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D65A0 - - thumb_func_start ov101_021D65CC -ov101_021D65CC: ; 0x021D65CC - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0xc] - ldr r1, [r4, #0x10] - cmp r0, #1 - bne _021D65F0 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r1, r0] - mov r1, #3 - bl ov101_021D8254 - mov r0, #2 - str r0, [r4, #0xc] - add r0, r5, #0 - bl sub_0200DA58 -_021D65F0: - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D65CC - - thumb_func_start ov101_021D65F4 -ov101_021D65F4: ; 0x021D65F4 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r2, #0x45 - ldr r4, [r5, #0x10] - mov r0, #3 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x2c - bl ov101_021D80E4 - mov r2, #0x45 - mov r0, #3 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x2f - bl ov101_021D81B4 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x2d - mov r3, #3 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x2e - mov r3, #3 - bl ov101_021D82F0 - ldr r0, _021D6670 ; =ov101_021D65A0 - ldr r2, _021D6674 ; =0x00000101 - add r1, r5, #0 - bl sub_0200DA04 - cmp r0, #0 - bne _021D665C - bl GF_AssertFail -_021D665C: - ldr r0, _021D6678 ; =ov101_021D65CC - ldr r2, _021D6674 ; =0x00000101 - add r1, r5, #0 - bl sub_0200DA3C - cmp r0, #0 - bne _021D666E - bl GF_AssertFail -_021D666E: - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D6670: .word ov101_021D65A0 -_021D6674: .word 0x00000101 -_021D6678: .word ov101_021D65CC - thumb_func_end ov101_021D65F4 - - thumb_func_start ov101_021D667C -ov101_021D667C: ; 0x021D667C - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - mov r0, #0x45 - ldr r4, [r5, #0x20] - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #4 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #4 - bl ov101_021D8220 - mov r0, #1 - str r0, [r5, #0x10] - add r0, r6, #0 - bl sub_0200DA58 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D667C - - thumb_func_start ov101_021D66A8 -ov101_021D66A8: ; 0x021D66A8 - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #0x10] - ldr r1, [r4, #0x20] - cmp r0, #1 - bne _021D66CC - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r1, r0] - mov r1, #4 - bl ov101_021D8254 - mov r0, #2 - str r0, [r4, #0x10] - add r0, r5, #0 - bl sub_0200DA58 -_021D66CC: - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D66A8 - - thumb_func_start ov101_021D66D0 -ov101_021D66D0: ; 0x021D66D0 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - ldr r0, [r6, #0x18] - mov r2, #0x45 - lsl r3, r0, #4 - ldr r7, _021D6754 ; =0x021D93A4 - ldr r4, [r6, #0x20] - mov r0, #4 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - add r5, r7, r3 - ldr r2, [r4, r2] - ldr r3, [r7, r3] - mov r1, #2 - bl ov101_021D80E4 - mov r2, #0x45 - mov r0, #4 - str r0, [sp] - lsl r2, r2, #4 - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - ldr r3, [r5, #4] - mov r1, #2 - bl ov101_021D81B4 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - ldr r2, [r5, #8] - mov r3, #4 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - ldr r2, [r5, #0xc] - mov r3, #4 - bl ov101_021D82F0 - ldr r0, _021D6758 ; =ov101_021D667C - ldr r2, _021D675C ; =0x00000101 - add r1, r6, #0 - bl sub_0200DA04 - cmp r0, #0 - bne _021D6740 - bl GF_AssertFail -_021D6740: - ldr r0, _021D6760 ; =ov101_021D66A8 - ldr r2, _021D675C ; =0x00000101 - add r1, r6, #0 - bl sub_0200DA3C - cmp r0, #0 - bne _021D6752 - bl GF_AssertFail -_021D6752: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D6754: .word 0x021D93A4 -_021D6758: .word ov101_021D667C -_021D675C: .word 0x00000101 -_021D6760: .word ov101_021D66A8 - thumb_func_end ov101_021D66D0 - - thumb_func_start ov101_021D6764 -ov101_021D6764: ; 0x021D6764 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - ldr r6, _021D6790 ; =0x021D90DC - add r5, sp, #8 - add r4, r0, #0 - add r3, r1, #0 - ldmia r6!, {r0, r1} - add r2, r5, #0 - stmia r5!, {r0, r1} - ldr r0, [r6, #0] - ldr r1, _021D6794 ; =0x021D9164 - str r0, [r5, #0] - str r4, [sp] - mov r0, #0x89 - str r0, [sp, #4] - ldr r0, _021D6798 ; =0x0000044C - ldr r0, [r4, r0] - bl sub_02071330 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - nop -_021D6790: .word 0x021D90DC -_021D6794: .word 0x021D9164 -_021D6798: .word 0x0000044C - thumb_func_end ov101_021D6764 - - thumb_func_start ov101_021D679C -ov101_021D679C: ; 0x021D679C - push {r4, lr} - add r4, r1, #0 - bl sub_02071598 - str r4, [r0, #4] - mov r1, #0 - str r1, [r0, #8] - str r1, [r0, #0xc] - str r1, [r0, #0x14] - pop {r4, pc} - thumb_func_end ov101_021D679C - - thumb_func_start ov101_021D67B0 -ov101_021D67B0: ; 0x021D67B0 - push {r3, lr} - bl sub_02071598 - ldr r0, [r0, #0xc] - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D67B0 - - thumb_func_start ov101_021D67BC -ov101_021D67BC: ; 0x021D67BC - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bl sub_020715BC - str r0, [r4, #0x20] - add r0, r5, #0 - bl sub_020715B4 - str r0, [r4, #0x18] - add r0, r4, #0 - bl ov101_021D66D0 - mov r0, #1 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D67BC - - thumb_func_start ov101_021D67DC -ov101_021D67DC: ; 0x021D67DC - push {r3, r4, lr} - sub sp, #4 - add r4, r1, #0 - ldr r0, [r4, #0x28] - cmp r0, #0 - beq _021D6804 - mov r1, #4 - str r1, [sp] - mov r0, #0x45 - ldr r2, [r4, #0x20] - lsl r0, r0, #4 - ldr r0, [r2, r0] - add r2, r1, #0 - add r3, r1, #0 - bl ov101_021D8358 - add r4, #0x24 - add r0, r4, #0 - bl ov101_021D8544 -_021D6804: - add sp, #4 - pop {r3, r4, pc} - thumb_func_end ov101_021D67DC - - thumb_func_start ov101_021D6808 -ov101_021D6808: ; 0x021D6808 - push {r3, r4, r5, lr} - ldr r4, _021D6824 ; =0x021D9330 - add r5, r1, #0 -_021D680E: - ldr r1, [r5, #4] - add r0, r5, #0 - lsl r1, r1, #2 - ldr r2, [r4, r1] - ldr r1, [r5, #8] - lsl r1, r1, #2 - ldr r1, [r2, r1] - blx r1 - cmp r0, #1 - beq _021D680E - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D6824: .word 0x021D9330 - thumb_func_end ov101_021D6808 - - thumb_func_start ov101_021D6828 -ov101_021D6828: ; 0x021D6828 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D6828 - - thumb_func_start ov101_021D682C -ov101_021D682C: ; 0x021D682C - push {r4, r5, lr} - sub sp, #0x34 - add r4, r0, #0 - ldr r0, [r4, #0x10] - cmp r0, #2 - bne _021D689E - ldr r5, _021D68A4 ; =0x021D8F74 - add r3, sp, #0x28 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, sp, #0x1c - str r0, [r3, #0] - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - str r0, [r1, #8] - mov r0, #1 - str r0, [sp] - mov r0, #4 - str r0, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r3, #2 - str r3, [sp, #0x14] - mov r0, #6 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #0x20] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r1, #0x24 - bl ov101_021D84A4 - ldr r0, [r4, #0x28] - mov r1, #2 - bl sub_02021CF8 - ldr r0, [r4, #0x28] - add r1, sp, #0x1c - bl sub_02021C60 - mov r0, #0 - bl sub_0201D2A4 - add r1, r0, #0 - ldr r0, [r4, #0x28] - bl sub_02021C94 - mov r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] -_021D689E: - mov r0, #0 - add sp, #0x34 - pop {r4, r5, pc} - ; .align 2, 0 -_021D68A4: .word 0x021D8F74 - thumb_func_end ov101_021D682C - - thumb_func_start ov101_021D68A8 -ov101_021D68A8: ; 0x021D68A8 - mov r0, #0 - bx lr - thumb_func_end ov101_021D68A8 - - thumb_func_start ov101_021D68AC -ov101_021D68AC: ; 0x021D68AC - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D6900 ; =0x021D90A0 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D6904 ; =0x021D9094 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x28] - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x28] - mov r1, #1 - bl sub_02021D6C - ldr r0, [r4, #0x28] - mov r1, #0 - bl sub_02021CE4 - ldr r0, [r4, #0x28] - mov r1, #0 - bl sub_02021CC8 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D6900: .word 0x021D90A0 -_021D6904: .word 0x021D9094 - thumb_func_end ov101_021D68AC - - thumb_func_start ov101_021D6908 -ov101_021D6908: ; 0x021D6908 - push {r4, lr} - sub sp, #0x18 - add r4, r0, #0 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl ov101_021D8560 - ldr r0, [r4, #0x28] - add r1, sp, #0 - bl ov101_021D8574 - ldr r0, [sp] - add r0, #0xc0 - str r0, [sp] - ldr r0, [sp, #4] - add r0, #0xc0 - str r0, [sp, #4] - ldr r0, [r4, #0x14] - add r0, r0, #1 - str r0, [r4, #0x14] - cmp r0, #0x10 - blt _021D6952 - mov r0, #5 - lsl r0, r0, #0x12 - str r0, [sp, #0x10] - mov r0, #1 - lsl r0, r0, #0xc - str r0, [sp] - str r0, [sp, #4] - mov r1, #0 - str r1, [r4, #0x14] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0x23 - bl sub_02005844 -_021D6952: - ldr r0, [r4, #0x28] - add r1, sp, #0 - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - mov r0, #0 - add sp, #0x18 - pop {r4, pc} - thumb_func_end ov101_021D6908 - - thumb_func_start ov101_021D6968 -ov101_021D6968: ; 0x021D6968 - push {r4, lr} - add r4, r0, #0 - mov r1, #1 - ldr r0, [r4, #0x28] - lsl r1, r1, #0xc - bl sub_02021E2C - ldr r0, [r4, #0x14] - add r0, r0, #1 - str r0, [r4, #0x14] - cmp r0, #9 - blt _021D698E - mov r0, #0 - str r0, [r4, #0x14] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #1 - str r0, [r4, #0xc] -_021D698E: - mov r0, #0 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D6968 - - thumb_func_start ov101_021D6994 -ov101_021D6994: ; 0x021D6994 - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D69F0 ; =0x021D907C - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D69F4 ; =0x021D9070 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x28] - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x28] - mov r1, #1 - bl sub_02021D6C - ldr r0, [r4, #0x28] - mov r1, #0 - bl sub_02021CE4 - ldr r0, [r4, #0x28] - mov r1, #0 - bl sub_02021CC8 - ldr r0, _021D69F8 ; =0x000006D1 - bl sub_02005748 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - nop -_021D69F0: .word 0x021D907C -_021D69F4: .word 0x021D9070 -_021D69F8: .word 0x000006D1 - thumb_func_end ov101_021D6994 - - thumb_func_start ov101_021D69FC -ov101_021D69FC: ; 0x021D69FC - push {r4, lr} - sub sp, #0x18 - add r4, r0, #0 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl ov101_021D8560 - ldr r0, [r4, #0x28] - add r1, sp, #0 - bl ov101_021D8574 - mov r0, #6 - ldr r1, [sp] - lsl r0, r0, #6 - sub r1, r1, r0 - str r1, [sp] - ldr r1, [sp, #4] - sub r0, r1, r0 - str r0, [sp, #4] - ldr r0, [r4, #0x14] - add r0, r0, #1 - str r0, [r4, #0x14] - cmp r0, #8 - blt _021D6A48 - mov r0, #0x1d - lsl r0, r0, #0x10 - str r0, [sp, #0x10] - mov r0, #1 - lsl r0, r0, #0xc - str r0, [sp] - str r0, [sp, #4] - mov r0, #0 - str r0, [r4, #0x14] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #1 - str r0, [r4, #0xc] -_021D6A48: - ldr r0, [r4, #0x28] - add r1, sp, #0 - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - mov r0, #0 - add sp, #0x18 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D69FC - - thumb_func_start ov101_021D6A60 -ov101_021D6A60: ; 0x021D6A60 - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D6AC0 ; =0x021D9058 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D6AC4 ; =0x021D904C - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x28] - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x28] - mov r1, #0 - bl sub_02021D6C - ldr r0, [r4, #0x28] - mov r1, #0 - bl sub_02021CC8 - ldr r0, [r4, #0x28] - mov r1, #0 - bl sub_02021CE4 - ldr r0, [r4, #0x28] - bl sub_02021DE0 - mov r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - nop -_021D6AC0: .word 0x021D9058 -_021D6AC4: .word 0x021D904C - thumb_func_end ov101_021D6A60 - - thumb_func_start ov101_021D6AC8 -ov101_021D6AC8: ; 0x021D6AC8 - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D6B34 ; =0x021D9004 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D6B38 ; =0x021D8F80 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x28] - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x28] - mov r1, #1 - bl sub_02021CC8 - mov r1, #2 - ldr r0, [r4, #0x28] - lsl r1, r1, #0xa - bl sub_02021CE4 - ldr r0, [r4, #0x28] - bl sub_02021E24 - cmp r0, #2 - beq _021D6B22 - ldr r0, [r4, #0x28] - mov r1, #2 - bl sub_02021D6C - ldr r0, [r4, #0x28] - bl sub_02021DE0 -_021D6B22: - mov r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - nop -_021D6B34: .word 0x021D9004 -_021D6B38: .word 0x021D8F80 - thumb_func_end ov101_021D6AC8 - - thumb_func_start ov101_021D6B3C -ov101_021D6B3C: ; 0x021D6B3C - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D6B9C ; =0x021D8F20 - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D6BA0 ; =0x021D90F4 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x28] - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x28] - mov r1, #5 - bl sub_02021D6C - ldr r0, [r4, #0x28] - mov r1, #1 - bl sub_02021CC8 - mov r1, #1 - ldr r0, [r4, #0x28] - lsl r1, r1, #0xc - bl sub_02021CE4 - ldr r0, [r4, #0x28] - bl sub_02021DE0 - mov r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D6B9C: .word 0x021D8F20 -_021D6BA0: .word 0x021D90F4 - thumb_func_end ov101_021D6B3C - - thumb_func_start ov101_021D6BA4 -ov101_021D6BA4: ; 0x021D6BA4 - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D6C04 ; =0x021D8F2C - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D6C08 ; =0x021D8FE0 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x28] - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x28] - mov r1, #4 - bl sub_02021D6C - ldr r0, [r4, #0x28] - mov r1, #1 - bl sub_02021CC8 - mov r1, #1 - ldr r0, [r4, #0x28] - lsl r1, r1, #0xc - bl sub_02021CE4 - ldr r0, [r4, #0x28] - bl sub_02021DE0 - mov r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D6C04: .word 0x021D8F2C -_021D6C08: .word 0x021D8FE0 - thumb_func_end ov101_021D6BA4 - - thumb_func_start ov101_021D6C0C -ov101_021D6C0C: ; 0x021D6C0C - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D6C6C ; =0x021D8FBC - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D6C70 ; =0x021D8FC8 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x28] - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x28] - mov r1, #3 - bl sub_02021D6C - ldr r0, [r4, #0x28] - mov r1, #1 - bl sub_02021CC8 - mov r1, #1 - ldr r0, [r4, #0x28] - lsl r1, r1, #0xc - bl sub_02021CE4 - ldr r0, [r4, #0x28] - bl sub_02021DE0 - mov r0, #1 - str r0, [r4, #0xc] - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D6C6C: .word 0x021D8FBC -_021D6C70: .word 0x021D8FC8 - thumb_func_end ov101_021D6C0C - - thumb_func_start ov101_021D6C74 -ov101_021D6C74: ; 0x021D6C74 - push {r3, r4, r5, lr} - sub sp, #0x18 - ldr r3, _021D6CD8 ; =0x021D901C - add r4, r0, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0xc - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - ldr r5, _021D6CDC ; =0x021D8EA8 - str r0, [r2, #0] - add r3, sp, #0 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - add r1, r2, #0 - str r0, [r3, #0] - ldr r0, [r4, #0x28] - bl sub_02021C70 - ldr r0, [r4, #0x28] - add r1, sp, #0xc - bl sub_02021C50 - ldr r0, [r4, #0x28] - mov r1, #0 - bl sub_02021CC8 - mov r1, #1 - ldr r0, [r4, #0x28] - lsl r1, r1, #0xc - bl sub_02021CE4 - ldr r0, [r4, #0x28] - mov r1, #5 - bl sub_02021D6C - ldr r0, [r4, #0x28] - bl sub_02021DE0 - mov r0, #0 - str r0, [r4, #0x14] - mov r1, #1 - str r1, [r4, #0xc] - ldr r1, [r4, #8] - add r1, r1, #1 - str r1, [r4, #8] - add sp, #0x18 - pop {r3, r4, r5, pc} - nop -_021D6CD8: .word 0x021D901C -_021D6CDC: .word 0x021D8EA8 - thumb_func_end ov101_021D6C74 - - thumb_func_start ov101_021D6CE0 -ov101_021D6CE0: ; 0x021D6CE0 - push {r4, lr} - add r4, r0, #0 - mov r1, #1 - ldr r0, [r4, #0x28] - lsl r1, r1, #0xc - bl sub_02021E2C - ldr r0, [r4, #0x28] - bl sub_02021FD0 - cmp r0, #0 - bne _021D6D0C - ldr r0, [r4, #0x14] - add r0, r0, #1 - str r0, [r4, #0x14] - cmp r0, #8 - blt _021D6D0C - mov r0, #0 - str r0, [r4, #0x14] - ldr r0, [r4, #0x28] - bl sub_02021DE0 -_021D6D0C: - mov r0, #0 - pop {r4, pc} - thumb_func_end ov101_021D6CE0 - - thumb_func_start ov101_021D6D10 -ov101_021D6D10: ; 0x021D6D10 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - mov r0, #0x45 - ldr r4, [r5, #0x2c] - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #5 - bl ov101_021D814C - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r4, r0] - mov r1, #5 - bl ov101_021D8220 - mov r0, #1 - str r0, [r5, #0x10] - add r0, r6, #0 - bl sub_0200DA58 - pop {r4, r5, r6, pc} - thumb_func_end ov101_021D6D10 - - thumb_func_start ov101_021D6D3C -ov101_021D6D3C: ; 0x021D6D3C - push {r3, r4, r5, lr} - add r4, r1, #0 - ldr r1, [r4, #0x2c] - add r5, r0, #0 - mov r0, #1 - str r0, [r4, #0x10] - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _021D6D64 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r1, r0] - mov r1, #5 - bl ov101_021D8254 - mov r0, #2 - str r0, [r4, #0x10] - add r0, r5, #0 - bl sub_0200DA58 -_021D6D64: - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D6D3C - - thumb_func_start ov101_021D6D68 -ov101_021D6D68: ; 0x021D6D68 - push {r3, r4, r5, lr} - add r5, r0, #0 - mov r2, #0x45 - ldr r4, [r5, #0x2c] - mov r0, #5 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x38 - bl ov101_021D80E4 - mov r2, #0x45 - mov r0, #5 - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #2 - mov r3, #0x3b - bl ov101_021D81B4 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x39 - mov r3, #5 - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x3a - mov r3, #5 - bl ov101_021D82F0 - ldr r0, _021D6DE4 ; =ov101_021D6D10 - ldr r2, _021D6DE8 ; =0x00000101 - add r1, r5, #0 - bl sub_0200DA04 - cmp r0, #0 - bne _021D6DD0 - bl GF_AssertFail -_021D6DD0: - ldr r0, _021D6DEC ; =ov101_021D6D3C - ldr r2, _021D6DE8 ; =0x00000101 - add r1, r5, #0 - bl sub_0200DA3C - cmp r0, #0 - bne _021D6DE2 - bl GF_AssertFail -_021D6DE2: - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D6DE4: .word ov101_021D6D10 -_021D6DE8: .word 0x00000101 -_021D6DEC: .word ov101_021D6D3C - thumb_func_end ov101_021D6D68 - - thumb_func_start ov101_021D6DF0 -ov101_021D6DF0: ; 0x021D6DF0 - push {lr} - sub sp, #0x14 - add r2, sp, #8 - mov r3, #0 - str r3, [r2, #0] - str r3, [r2, #4] - str r3, [r2, #8] - str r0, [sp] - mov r1, #0x88 - str r1, [sp, #4] - ldr r1, _021D6E14 ; =0x0000044C - ldr r0, [r0, r1] - ldr r1, _021D6E18 ; =0x021D9178 - bl sub_02071330 - add sp, #0x14 - pop {pc} - nop -_021D6E14: .word 0x0000044C -_021D6E18: .word 0x021D9178 - thumb_func_end ov101_021D6DF0 - - thumb_func_start ov101_021D6E1C -ov101_021D6E1C: ; 0x021D6E1C - push {r3, lr} - bl sub_02071598 - ldr r0, [r0, #4] - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D6E1C - - thumb_func_start ov101_021D6E28 -ov101_021D6E28: ; 0x021D6E28 - push {r4, lr} - add r4, r1, #0 - bl sub_020715BC - str r0, [r4, #0x2c] - add r0, r4, #0 - bl ov101_021D6D68 - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D6E28 - - thumb_func_start ov101_021D6E3C -ov101_021D6E3C: ; 0x021D6E3C - push {r3, r4, lr} - sub sp, #4 - add r4, r1, #0 - ldr r0, [r4, #0x34] - cmp r0, #0 - beq _021D6E72 - mov r1, #5 - str r1, [sp] - mov r0, #0x45 - ldr r2, [r4, #0x2c] - lsl r0, r0, #4 - ldr r0, [r2, r0] - add r2, r1, #0 - add r3, r1, #0 - bl ov101_021D8358 - add r0, r4, #0 - add r0, #0x30 - bl ov101_021D8544 - ldr r0, [r4, #0x40] - cmp r0, #0 - beq _021D6E72 - add r4, #0x3c - add r0, r4, #0 - bl ov101_021D8544 -_021D6E72: - add sp, #4 - pop {r3, r4, pc} - ; .align 2, 0 - thumb_func_end ov101_021D6E3C - - thumb_func_start ov101_021D6E78 -ov101_021D6E78: ; 0x021D6E78 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - add r5, r1, #0 - add r1, sp, #0xc - add r7, r0, #0 - add r4, r2, #0 - add r6, r3, #0 - bl sub_020715E4 - ldr r0, [sp, #0xc] - ldr r1, [sp, #0x10] - add r0, r0, r6 - str r0, [sp, #0xc] - ldr r0, [sp, #0x30] - add r0, r1, r0 - str r0, [sp, #0x10] - add r0, r7, #0 - add r1, sp, #0xc - bl sub_020715D4 - ldr r0, [sp, #0x38] - cmp r0, #0 - bne _021D6EAE - ldr r0, [sp, #0xc] - add r0, r5, r0 - str r0, [sp] - b _021D6EB4 -_021D6EAE: - ldr r0, [sp, #0xc] - sub r0, r5, r0 - str r0, [sp] -_021D6EB4: - ldr r0, [sp, #0x10] - add r1, sp, #0 - sub r0, r4, r0 - str r0, [sp, #4] - ldr r0, [sp, #0x34] - bl sub_02021C50 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D6E78 - - thumb_func_start ov101_021D6EC8 -ov101_021D6EC8: ; 0x021D6EC8 - push {r4, r5, r6, lr} - sub sp, #0x40 - add r4, r1, #0 - ldr r1, [r4, #0] - add r6, r0, #0 - cmp r1, #0xa - bls _021D6ED8 - b _021D7210 -_021D6ED8: - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D6EE4: ; jump table - .short _021D6EFA - _021D6EE4 - 2 ; case 0 - .short _021D6F6C - _021D6EE4 - 2 ; case 1 - .short _021D6FF4 - _021D6EE4 - 2 ; case 2 - .short _021D7008 - _021D6EE4 - 2 ; case 3 - .short _021D703A - _021D6EE4 - 2 ; case 4 - .short _021D706C - _021D6EE4 - 2 ; case 5 - .short _021D709E - _021D6EE4 - 2 ; case 6 - .short _021D70E6 - _021D6EE4 - 2 ; case 7 - .short _021D70FC - _021D6EE4 - 2 ; case 8 - .short _021D7148 - _021D6EE4 - 2 ; case 9 - .short _021D71A8 - _021D6EE4 - 2 ; case 10 -_021D6EFA: - ldr r0, [r4, #0x10] - cmp r0, #2 - beq _021D6F02 - b _021D7210 -_021D6F02: - ldr r5, _021D7214 ; =0x021D90D0 - add r3, sp, #0x34 - ldmia r5!, {r0, r1} - add r2, r3, #0 - stmia r3!, {r0, r1} - ldr r0, [r5, #0] - str r0, [r3, #0] - mov r0, #1 - str r0, [sp] - mov r0, #5 - str r0, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r3, #2 - str r3, [sp, #0x14] - mov r0, #4 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #0x2c] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r1, #0x30 - bl ov101_021D84A4 - mov r0, #1 - str r0, [sp] - mov r0, #5 - str r0, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r3, #2 - str r3, [sp, #0x14] - mov r0, #4 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #0x2c] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r1, #0x3c - add r2, sp, #0x34 - bl ov101_021D84A4 - ldr r0, [r4, #0x40] - mov r1, #1 - bl sub_02021D0C - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] -_021D6F6C: - add r0, r6, #0 - add r1, sp, #0x28 - mov r5, #0 - bl sub_020715E4 - mov r1, #2 - ldr r2, [sp, #0x2c] - lsl r1, r1, #0xe - ldr r0, [sp, #0x28] - add r2, r2, r1 - add r0, r0, r1 - str r2, [sp, #0x2c] - lsl r2, r1, #3 - str r0, [sp, #0x28] - cmp r0, r2 - blt _021D6F92 - add r0, r2, #0 - str r0, [sp, #0x28] - add r5, r5, #1 -_021D6F92: - mov r0, #0xe - ldr r1, [sp, #0x2c] - lsl r0, r0, #0xe - cmp r1, r0 - blt _021D6FA4 - mov r0, #1 - lsl r0, r0, #0x12 - str r0, [sp, #0x2c] - add r5, r5, #1 -_021D6FA4: - add r0, r6, #0 - add r1, sp, #0x28 - bl sub_020715D4 - mov r0, #2 - ldr r1, [sp, #0x28] - lsl r0, r0, #0x10 - sub r0, r1, r0 - str r0, [sp, #0x1c] - mov r0, #0x69 - ldr r1, [sp, #0x2c] - lsl r0, r0, #0xe - sub r0, r0, r1 - str r0, [sp, #0x20] - ldr r0, [r4, #0x34] - add r1, sp, #0x1c - bl sub_02021C50 - mov r0, #0x12 - ldr r1, [sp, #0x28] - lsl r0, r0, #0x10 - sub r0, r0, r1 - str r0, [sp, #0x1c] - mov r0, #0x69 - ldr r1, [sp, #0x2c] - lsl r0, r0, #0xe - sub r0, r0, r1 - str r0, [sp, #0x20] - ldr r0, [r4, #0x40] - add r1, sp, #0x1c - bl sub_02021C50 - cmp r5, #2 - beq _021D6FEA - b _021D7210 -_021D6FEA: - ldr r0, [r4, #0] - add sp, #0x40 - add r0, r0, #1 - str r0, [r4, #0] - pop {r4, r5, r6, pc} -_021D6FF4: - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #8 - blo _021D70F0 - mov r0, #0 - str r0, [r4, #8] - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] -_021D7008: - ldr r3, _021D7218 ; =0xFFFFC000 - mov r2, #0x69 - str r3, [sp] - ldr r0, [r4, #0x34] - lsl r1, r3, #3 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - add r0, r6, #0 - lsl r2, r2, #0xe - asr r3, r3, #1 - bl ov101_021D6E78 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #4 - blo _021D70F0 - mov r0, #0 - str r0, [r4, #8] - ldr r0, [r4, #0] - add sp, #0x40 - add r0, r0, #1 - str r0, [r4, #0] - pop {r4, r5, r6, pc} -_021D703A: - mov r3, #1 - lsl r3, r3, #0xe - str r3, [sp] - ldr r1, [r4, #0x34] - mov r2, #0x69 - str r1, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - ldr r1, _021D721C ; =0xFFFE0000 - lsl r2, r2, #0xe - lsr r3, r3, #1 - bl ov101_021D6E78 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #4 - blo _021D70F0 - mov r0, #0 - str r0, [r4, #8] - ldr r0, [r4, #0] - add sp, #0x40 - add r0, r0, #1 - str r0, [r4, #0] - pop {r4, r5, r6, pc} -_021D706C: - ldr r3, _021D7218 ; =0xFFFFC000 - mov r2, #0x69 - str r3, [sp] - ldr r1, [r4, #0x40] - lsl r2, r2, #0xe - str r1, [sp, #4] - mov r1, #1 - str r1, [sp, #8] - mov r1, #0x12 - lsl r1, r1, #0x10 - asr r3, r3, #1 - bl ov101_021D6E78 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #4 - blo _021D70F0 - mov r0, #0 - str r0, [r4, #8] - ldr r0, [r4, #0] - add sp, #0x40 - add r0, r0, #1 - str r0, [r4, #0] - pop {r4, r5, r6, pc} -_021D709E: - mov r1, #1 - lsl r1, r1, #0xe - str r1, [sp] - ldr r1, [r4, #0x40] - mov r2, #0x69 - str r1, [sp, #4] - mov r3, #1 - mov r1, #0x12 - str r3, [sp, #8] - lsl r1, r1, #0x10 - lsl r2, r2, #0xe - lsl r3, r3, #0xd - bl ov101_021D6E78 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #4 - blo _021D70F0 - mov r1, #0 - str r1, [r4, #8] - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - cmp r0, #2 - bhs _021D70DA - mov r0, #3 - add sp, #0x40 - str r0, [r4, #0] - pop {r4, r5, r6, pc} -_021D70DA: - str r1, [r4, #0xc] - ldr r0, [r4, #0] - add sp, #0x40 - add r0, r0, #1 - str r0, [r4, #0] - pop {r4, r5, r6, pc} -_021D70E6: - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #8 - bhs _021D70F2 -_021D70F0: - b _021D7210 -_021D70F2: - mov r0, #0 - str r0, [r4, #8] - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] -_021D70FC: - ldr r3, _021D7218 ; =0xFFFFC000 - mov r2, #0x69 - str r3, [sp] - ldr r0, [r4, #0x34] - lsl r1, r3, #3 - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - add r0, r6, #0 - lsl r2, r2, #0xe - asr r3, r3, #1 - bl ov101_021D6E78 - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #0x40] - mov r1, #0x12 - str r0, [sp, #4] - mov r0, #1 - mov r2, #0x69 - str r0, [sp, #8] - add r0, r6, #0 - lsl r1, r1, #0x10 - lsl r2, r2, #0xe - bl ov101_021D6E78 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #4 - blo _021D7210 - mov r0, #0 - str r0, [r4, #8] - ldr r0, [r4, #0] - add sp, #0x40 - add r0, r0, #1 - str r0, [r4, #0] - pop {r4, r5, r6, pc} -_021D7148: - mov r3, #1 - lsl r3, r3, #0xe - str r3, [sp] - ldr r1, [r4, #0x34] - mov r2, #0x69 - str r1, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - ldr r1, _021D721C ; =0xFFFE0000 - lsl r2, r2, #0xe - lsr r3, r3, #1 - bl ov101_021D6E78 - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #0x40] - mov r1, #0x12 - str r0, [sp, #4] - mov r0, #1 - mov r2, #0x69 - str r0, [sp, #8] - add r0, r6, #0 - lsl r1, r1, #0x10 - lsl r2, r2, #0xe - bl ov101_021D6E78 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #4 - blo _021D7210 - mov r1, #0 - str r1, [r4, #8] - ldr r0, [r4, #0xc] - add r0, r0, #1 - str r0, [r4, #0xc] - cmp r0, #2 - bhs _021D719C - mov r0, #8 - add sp, #0x40 - str r0, [r4, #0] - pop {r4, r5, r6, pc} -_021D719C: - str r1, [r4, #0xc] - ldr r0, [r4, #0] - add sp, #0x40 - add r0, r0, #1 - str r0, [r4, #0] - pop {r4, r5, r6, pc} -_021D71A8: - ldr r3, _021D7220 ; =0xFFFF8000 - mov r2, #0x69 - str r3, [sp] - ldr r1, [r4, #0x34] - lsl r2, r2, #0xe - str r1, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - lsl r1, r3, #2 - bl ov101_021D6E78 - mov r3, #0 - str r3, [sp] - ldr r0, [r4, #0x40] - mov r1, #0x12 - str r0, [sp, #4] - mov r0, #1 - mov r2, #0x69 - str r0, [sp, #8] - add r0, r6, #0 - lsl r1, r1, #0x10 - lsl r2, r2, #0xe - bl ov101_021D6E78 - ldr r0, [r4, #8] - add r0, r0, #1 - str r0, [r4, #8] - cmp r0, #4 - blo _021D7206 - add r0, r4, #0 - add r0, #0x30 - bl ov101_021D8544 - add r0, r4, #0 - add r0, #0x3c - bl ov101_021D8544 - mov r1, #5 - str r1, [sp] - mov r0, #0x45 - ldr r2, [r4, #0x2c] - lsl r0, r0, #4 - ldr r0, [r2, r0] - add r2, r1, #0 - add r3, r1, #0 - bl ov101_021D8358 -_021D7206: - ldr r0, [r4, #0] - add r0, r0, #1 - str r0, [r4, #0] - mov r0, #1 - str r0, [r4, #4] -_021D7210: - add sp, #0x40 - pop {r4, r5, r6, pc} - ; .align 2, 0 -_021D7214: .word 0x021D90D0 -_021D7218: .word 0xFFFFC000 -_021D721C: .word 0xFFFE0000 -_021D7220: .word 0xFFFF8000 - thumb_func_end ov101_021D6EC8 - - thumb_func_start ov101_021D7224 -ov101_021D7224: ; 0x021D7224 - bx lr - ; .align 2, 0 - thumb_func_end ov101_021D7224 - - thumb_func_start ov101_021D7228 -ov101_021D7228: ; 0x021D7228 - push {r4, r5, lr} - sub sp, #0x14 - ldr r5, _021D7254 ; =0x021D8F5C - add r3, r0, #0 - ldmia r5!, {r0, r1} - add r4, sp, #8 - add r2, r4, #0 - stmia r4!, {r0, r1} - ldr r0, [r5, #0] - ldr r1, _021D7258 ; =0x021D918C - str r0, [r4, #0] - str r3, [sp] - mov r0, #0x8e - str r0, [sp, #4] - ldr r0, _021D725C ; =0x0000044C - ldr r0, [r3, r0] - mov r3, #0 - bl sub_02071330 - add sp, #0x14 - pop {r4, r5, pc} - nop -_021D7254: .word 0x021D8F5C -_021D7258: .word 0x021D918C -_021D725C: .word 0x0000044C - thumb_func_end ov101_021D7228 - - thumb_func_start ov101_021D7260 -ov101_021D7260: ; 0x021D7260 - push {r3, r4, r5, lr} - sub sp, #0x28 - add r5, r0, #0 - add r4, r1, #0 - bl sub_020715BC - str r0, [r4, #0] - add r0, r5, #0 - add r1, sp, #0x1c - bl sub_020715E4 - mov r0, #0 - str r0, [sp] - mov r0, #6 - str r0, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r3, #2 - str r3, [sp, #0x14] - mov r0, #3 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #0] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #4 - add r2, sp, #0x1c - bl ov101_021D84A4 - ldr r0, [r4, #8] - mov r1, #1 - bl sub_02021CC8 - mov r0, #1 - add sp, #0x28 - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D7260 - - thumb_func_start ov101_021D72AC -ov101_021D72AC: ; 0x021D72AC - ldr r3, _021D72B4 ; =ov101_021D8544 - add r0, r1, #4 - bx r3 - nop -_021D72B4: .word ov101_021D8544 - thumb_func_end ov101_021D72AC - - thumb_func_start ov101_021D72B8 -ov101_021D72B8: ; 0x021D72B8 - mov r0, #0x52 - ldr r2, [r1, #0] - lsl r0, r0, #2 - ldr r0, [r2, r0] - mov r3, #1 - cmp r0, #1 - bne _021D72C8 - mov r3, #0 -_021D72C8: - ldr r0, [r1, #8] - add r1, r3, #0 - ldr r3, _021D72D0 ; =sub_02021CAC - bx r3 - ; .align 2, 0 -_021D72D0: .word sub_02021CAC - thumb_func_end ov101_021D72B8 - - thumb_func_start ov101_021D72D4 -ov101_021D72D4: ; 0x021D72D4 - push {lr} - sub sp, #0x14 - mov r1, #0x15 - lsl r1, r1, #0xe - str r1, [sp, #8] - mov r1, #0x13 - lsl r1, r1, #0x10 - str r1, [sp, #0xc] - str r0, [sp] - mov r1, #0x8e - str r1, [sp, #4] - ldr r1, _021D72FC ; =0x0000044C - add r2, sp, #8 - ldr r0, [r0, r1] - ldr r1, _021D7300 ; =0x021D91C8 - mov r3, #0 - bl sub_02071330 - add sp, #0x14 - pop {pc} - ; .align 2, 0 -_021D72FC: .word 0x0000044C -_021D7300: .word 0x021D91C8 - thumb_func_end ov101_021D72D4 - - thumb_func_start ov101_021D7304 -ov101_021D7304: ; 0x021D7304 - push {r3, r4, r5, lr} - sub sp, #0x40 - add r5, r0, #0 - add r4, r1, #0 - add r1, sp, #0x28 - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - ldr r3, _021D7390 ; =0x021D8F44 - str r0, [r1, #8] - ldmia r3!, {r0, r1} - add r2, sp, #0x1c - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - str r0, [r2, #0] - add r0, r5, #0 - bl sub_020715BC - str r0, [r4, #4] - add r0, r5, #0 - add r1, sp, #0x34 - bl sub_020715E4 - mov r0, #0 - str r0, [sp] - mov r0, #6 - str r0, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r3, #2 - str r3, [sp, #0x14] - mov r0, #3 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #4] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r1, #8 - add r2, sp, #0x34 - bl ov101_021D84A4 - ldr r0, [r4, #0xc] - mov r1, #2 - bl sub_02021CF8 - ldr r0, [r4, #0xc] - add r1, sp, #0x28 - bl sub_02021C60 - ldr r0, [r4, #0xc] - add r1, sp, #0x1c - bl sub_02021C70 - mov r0, #0 - bl sub_0201D2A4 - add r1, r0, #0 - ldr r0, [r4, #0xc] - bl sub_02021C94 - ldr r0, [r4, #0xc] - mov r1, #1 - bl sub_02021CC8 - mov r0, #1 - add sp, #0x40 - pop {r3, r4, r5, pc} - nop -_021D7390: .word 0x021D8F44 - thumb_func_end ov101_021D7304 - - thumb_func_start ov101_021D7394 -ov101_021D7394: ; 0x021D7394 - ldr r3, _021D739C ; =ov101_021D8544 - add r1, #8 - add r0, r1, #0 - bx r3 - ; .align 2, 0 -_021D739C: .word ov101_021D8544 - thumb_func_end ov101_021D7394 - - thumb_func_start ov101_021D73A0 -ov101_021D73A0: ; 0x021D73A0 - push {r3, lr} - ldr r2, [r1, #0] - add r2, r2, #1 - str r2, [r1, #0] - cmp r2, #0x2d - blt _021D73B0 - bl sub_0207136C -_021D73B0: - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D73A0 - - thumb_func_start ov101_021D73B4 -ov101_021D73B4: ; 0x021D73B4 - push {r4, r5, lr} - sub sp, #0x14 - ldr r5, _021D73E0 ; =0x021D9034 - add r3, r0, #0 - ldmia r5!, {r0, r1} - add r4, sp, #8 - add r2, r4, #0 - stmia r4!, {r0, r1} - ldr r0, [r5, #0] - ldr r1, _021D73E4 ; =0x021D922C - str r0, [r4, #0] - str r3, [sp] - mov r0, #0x8e - str r0, [sp, #4] - ldr r0, _021D73E8 ; =0x0000044C - ldr r0, [r3, r0] - mov r3, #0 - bl sub_02071330 - add sp, #0x14 - pop {r4, r5, pc} - nop -_021D73E0: .word 0x021D9034 -_021D73E4: .word 0x021D922C -_021D73E8: .word 0x0000044C - thumb_func_end ov101_021D73B4 - - thumb_func_start ov101_021D73EC -ov101_021D73EC: ; 0x021D73EC - push {r3, r4, r5, lr} - sub sp, #0x28 - add r5, r0, #0 - add r4, r1, #0 - bl sub_020715BC - str r0, [r4, #0] - add r0, r5, #0 - add r1, sp, #0x1c - bl sub_020715E4 - mov r0, #0 - str r0, [sp] - mov r1, #7 - str r1, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - str r1, [sp, #0xc] - str r1, [sp, #0x10] - mov r3, #2 - str r3, [sp, #0x14] - mov r0, #3 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #0] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #4 - add r2, sp, #0x1c - bl ov101_021D84A4 - ldr r0, [r4, #8] - mov r1, #1 - bl sub_02021CC8 - mov r0, #1 - add sp, #0x28 - pop {r3, r4, r5, pc} - thumb_func_end ov101_021D73EC - - thumb_func_start ov101_021D7438 -ov101_021D7438: ; 0x021D7438 - ldr r3, _021D7440 ; =ov101_021D8544 - add r0, r1, #4 - bx r3 - nop -_021D7440: .word ov101_021D8544 - thumb_func_end ov101_021D7438 - - thumb_func_start ov101_021D7444 -ov101_021D7444: ; 0x021D7444 - mov r0, #0x52 - ldr r2, [r1, #0] - lsl r0, r0, #2 - ldr r0, [r2, r0] - mov r3, #1 - cmp r0, #1 - bne _021D7454 - mov r3, #0 -_021D7454: - ldr r0, [r1, #8] - add r1, r3, #0 - ldr r3, _021D745C ; =sub_02021CAC - bx r3 - ; .align 2, 0 -_021D745C: .word sub_02021CAC - thumb_func_end ov101_021D7444 - - thumb_func_start ov101_021D7460 -ov101_021D7460: ; 0x021D7460 - push {r4, r5, lr} - sub sp, #0x14 - ldr r5, _021D7494 ; =0x021D8EF0 - add r3, r0, #0 - ldmia r5!, {r0, r1} - add r4, sp, #8 - add r2, r4, #0 - stmia r4!, {r0, r1} - ldr r0, [r5, #0] - ldr r1, _021D7498 ; =0x021D9254 - str r0, [r4, #0] - mov r0, #0x11 - lsl r0, r0, #0xe - str r0, [sp, #8] - lsl r0, r0, #2 - str r0, [sp, #0xc] - str r3, [sp] - mov r0, #0x8e - str r0, [sp, #4] - ldr r0, _021D749C ; =0x0000044C - ldr r0, [r3, r0] - mov r3, #0 - bl sub_02071330 - add sp, #0x14 - pop {r4, r5, pc} - ; .align 2, 0 -_021D7494: .word 0x021D8EF0 -_021D7498: .word 0x021D9254 -_021D749C: .word 0x0000044C - thumb_func_end ov101_021D7460 - - thumb_func_start ov101_021D74A0 -ov101_021D74A0: ; 0x021D74A0 - push {r3, r4, r5, lr} - sub sp, #0x40 - add r5, r0, #0 - add r4, r1, #0 - add r1, sp, #0x28 - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - ldr r3, _021D752C ; =0x021D8FEC - str r0, [r1, #8] - ldmia r3!, {r0, r1} - add r2, sp, #0x1c - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - str r0, [r2, #0] - add r0, r5, #0 - bl sub_020715BC - str r0, [r4, #4] - add r0, r5, #0 - add r1, sp, #0x34 - bl sub_020715E4 - mov r0, #0 - str r0, [sp] - mov r1, #7 - str r1, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - str r1, [sp, #0xc] - str r1, [sp, #0x10] - mov r3, #2 - str r3, [sp, #0x14] - mov r0, #3 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r4, #4] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r1, #8 - add r2, sp, #0x34 - bl ov101_021D84A4 - ldr r0, [r4, #0xc] - mov r1, #2 - bl sub_02021CF8 - ldr r0, [r4, #0xc] - add r1, sp, #0x28 - bl sub_02021C60 - ldr r0, [r4, #0xc] - add r1, sp, #0x1c - bl sub_02021C70 - mov r0, #0 - bl sub_0201D2A4 - add r1, r0, #0 - ldr r0, [r4, #0xc] - bl sub_02021C94 - ldr r0, [r4, #0xc] - mov r1, #1 - bl sub_02021CC8 - mov r0, #1 - add sp, #0x40 - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D752C: .word 0x021D8FEC - thumb_func_end ov101_021D74A0 - - thumb_func_start ov101_021D7530 -ov101_021D7530: ; 0x021D7530 - ldr r3, _021D7538 ; =ov101_021D8544 - add r1, #8 - add r0, r1, #0 - bx r3 - ; .align 2, 0 -_021D7538: .word ov101_021D8544 - thumb_func_end ov101_021D7530 - - thumb_func_start ov101_021D753C -ov101_021D753C: ; 0x021D753C - push {r3, lr} - ldr r2, [r1, #0] - add r2, r2, #1 - str r2, [r1, #0] - cmp r2, #0x2d - blt _021D754C - bl sub_0207136C -_021D754C: - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D753C - - thumb_func_start ov101_021D7550 -ov101_021D7550: ; 0x021D7550 - push {r4, r5, lr} - sub sp, #0x14 - ldr r5, _021D757C ; =0x021D8EB4 - add r3, r0, #0 - ldmia r5!, {r0, r1} - add r4, sp, #8 - add r2, r4, #0 - stmia r4!, {r0, r1} - ldr r0, [r5, #0] - ldr r1, _021D7580 ; =0x021D913C - str r0, [r4, #0] - str r3, [sp] - mov r0, #0x8e - str r0, [sp, #4] - ldr r0, _021D7584 ; =0x0000044C - ldr r0, [r3, r0] - mov r3, #0 - bl sub_02071330 - add sp, #0x14 - pop {r4, r5, pc} - nop -_021D757C: .word 0x021D8EB4 -_021D7580: .word 0x021D913C -_021D7584: .word 0x0000044C - thumb_func_end ov101_021D7550 - - thumb_func_start ov101_021D7588 -ov101_021D7588: ; 0x021D7588 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - add r4, r0, #0 - add r7, r1, #0 - bl sub_020715BC - str r0, [r7, #0] - add r0, r4, #0 - add r1, sp, #0x1c - bl sub_020715E4 - mov r6, #0 - add r4, r7, #4 - add r5, r7, #0 -_021D75A4: - mov r0, #0 - str r0, [sp] - mov r0, #8 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #2 - str r0, [sp, #0x14] - mov r0, #3 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r7, #0] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r4, #0 - add r2, sp, #0x1c - mov r3, #2 - bl ov101_021D84A4 - ldr r0, [r5, #8] - mov r1, #0 - bl sub_02021CAC - ldr r0, [r5, #8] - mov r1, #1 - bl sub_02021CC8 - add r6, r6, #1 - add r4, #0xc - add r5, #0xc - cmp r6, #2 - blt _021D75A4 - mov r0, #1 - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D7588 - - thumb_func_start ov101_021D75F0 -ov101_021D75F0: ; 0x021D75F0 - push {r4, lr} - add r4, r1, #0 - add r0, r4, #4 - bl ov101_021D8544 - add r4, #0x10 - add r0, r4, #0 - bl ov101_021D8544 - pop {r4, pc} - thumb_func_end ov101_021D75F0 - - thumb_func_start ov101_021D7604 -ov101_021D7604: ; 0x021D7604 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r1, #0 - mov r0, #0x4f - ldr r1, [r5, #0] - lsl r0, r0, #2 - add r4, r1, r0 - ldr r0, [r5, #8] - mov r1, #0 - bl sub_02021CAC - ldr r0, [r5, #0x14] - mov r1, #0 - bl sub_02021CAC - ldr r0, [r4, #0xc] - cmp r0, #1 - beq _021D76AA - ldr r3, _021D76B0 ; =0x021D9010 - add r2, sp, #0 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - mov r6, #0 - str r0, [r2, #0] - ldr r0, [r5, #0] - ldr r7, [r0, #0x10] - cmp r7, #0x63 - bls _021D7640 - mov r7, #0x63 -_021D7640: - add r0, r7, #0 - mov r1, #0x64 - bl _u32_div_f - add r0, r1, #0 - mov r1, #0xa - bl _u32_div_f - add r4, r0, #0 - beq _021D767E - ldr r0, [r5, #8] - add r1, sp, #0 - bl sub_02021C50 - ldr r0, [r5, #8] - add r1, r4, #0 - bl sub_02021D6C - ldr r0, [r5, #8] - bl sub_02021DE0 - ldr r0, [r5, #8] - mov r1, #1 - bl sub_02021CAC - mov r0, #2 - ldr r1, [sp] - lsl r0, r0, #0xe - add r0, r1, r0 - str r0, [sp] - add r6, r6, #1 -_021D767E: - mov r0, #0xc - add r4, r6, #0 - add r5, #8 - mul r4, r0 - ldr r0, [r5, r4] - add r1, sp, #0 - bl sub_02021C50 - add r0, r7, #0 - mov r1, #0xa - bl _u32_div_f - ldr r0, [r5, r4] - bl sub_02021D6C - ldr r0, [r5, r4] - bl sub_02021DE0 - ldr r0, [r5, r4] - mov r1, #1 - bl sub_02021CAC -_021D76AA: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_021D76B0: .word 0x021D9010 - thumb_func_end ov101_021D7604 - - thumb_func_start ov101_021D76B4 -ov101_021D76B4: ; 0x021D76B4 - push {r4, r5, lr} - sub sp, #0x14 - ldr r5, _021D76E0 ; =0x021D90E8 - add r3, r0, #0 - ldmia r5!, {r0, r1} - add r4, sp, #8 - add r2, r4, #0 - stmia r4!, {r0, r1} - ldr r0, [r5, #0] - ldr r1, _021D76E4 ; =0x021D91A0 - str r0, [r4, #0] - str r3, [sp] - mov r0, #0x8e - str r0, [sp, #4] - ldr r0, _021D76E8 ; =0x0000044C - ldr r0, [r3, r0] - mov r3, #0 - bl sub_02071330 - add sp, #0x14 - pop {r4, r5, pc} - nop -_021D76E0: .word 0x021D90E8 -_021D76E4: .word 0x021D91A0 -_021D76E8: .word 0x0000044C - thumb_func_end ov101_021D76B4 - - thumb_func_start ov101_021D76EC -ov101_021D76EC: ; 0x021D76EC - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - ldr r3, _021D7750 ; =0x021D8F68 - add r4, r0, #0 - add r6, r1, #0 - ldmia r3!, {r0, r1} - add r2, sp, #0x1c - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - str r0, [r2, #0] - add r0, r4, #0 - bl sub_020715BC - str r0, [r6, #0] - mov r4, #0 - add r5, r6, #4 - mov r7, #2 -_021D770E: - mov r0, #0 - str r0, [sp] - mov r0, #8 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - str r7, [sp, #0x14] - mov r0, #3 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r6, #0] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r5, #0 - add r2, sp, #0x1c - add r3, r7, #0 - bl ov101_021D84A4 - mov r0, #2 - ldr r1, [sp, #0x1c] - lsl r0, r0, #0xe - add r0, r1, r0 - add r4, r4, #1 - add r5, #0xc - str r0, [sp, #0x1c] - cmp r4, #5 - blt _021D770E - mov r0, #1 - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D7750: .word 0x021D8F68 - thumb_func_end ov101_021D76EC - - thumb_func_start ov101_021D7754 -ov101_021D7754: ; 0x021D7754 - push {r3, r4, r5, lr} - mov r4, #0 - add r5, r1, #4 -_021D775A: - add r0, r5, #0 - bl ov101_021D8544 - add r4, r4, #1 - add r5, #0xc - cmp r4, #5 - blt _021D775A - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D7754 - - thumb_func_start ov101_021D776C -ov101_021D776C: ; 0x021D776C - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - mov r0, #0x52 - ldr r1, [r5, #0] - lsl r0, r0, #2 - ldr r0, [r1, r0] - mov r7, #1 - cmp r0, #1 - bne _021D7780 - mov r7, #0 -_021D7780: - mov r6, #0 - add r4, r5, #0 -_021D7784: - ldr r0, [r4, #8] - add r1, r7, #0 - bl sub_02021CAC - add r6, r6, #1 - add r4, #0xc - cmp r6, #5 - blt _021D7784 - cmp r7, #0 - beq _021D77D8 - ldr r0, [r5, #0] - ldr r6, [r0, #0x14] - ldr r0, _021D77DC ; =0x0000C350 - cmp r6, r0 - ble _021D77A4 - add r6, r0, #0 -_021D77A4: - ldr r4, _021D77E0 ; =0x00002710 - mov r7, #0xa -_021D77A8: - add r1, r4, #0 - add r0, r6, #0 - mul r1, r7 - bl _s32_div_f - add r0, r1, #0 - add r1, r4, #0 - bl _s32_div_f - add r1, r0, #0 - ldr r0, [r5, #8] - bl sub_02021D6C - ldr r0, [r5, #8] - bl sub_02021DE0 - add r0, r4, #0 - mov r1, #0xa - bl _s32_div_f - add r4, r0, #0 - add r5, #0xc - cmp r4, #1 - bge _021D77A8 -_021D77D8: - pop {r3, r4, r5, r6, r7, pc} - nop -_021D77DC: .word 0x0000C350 -_021D77E0: .word 0x00002710 - thumb_func_end ov101_021D776C - - thumb_func_start ov101_021D77E4 -ov101_021D77E4: ; 0x021D77E4 - push {lr} - sub sp, #0x14 - add r3, r1, #0 - add r2, sp, #8 - mov r1, #0 - str r1, [r2, #0] - str r1, [r2, #4] - str r1, [r2, #8] - str r0, [sp] - mov r1, #0x8e - str r1, [sp, #4] - ldr r1, _021D7808 ; =0x0000044C - ldr r0, [r0, r1] - ldr r1, _021D780C ; =0x021D9240 - bl sub_02071330 - add sp, #0x14 - pop {pc} - ; .align 2, 0 -_021D7808: .word 0x0000044C -_021D780C: .word 0x021D9240 - thumb_func_end ov101_021D77E4 - - thumb_func_start ov101_021D7810 -ov101_021D7810: ; 0x021D7810 - push {r4, r5, r6, r7, lr} - sub sp, #0x44 - add r6, r0, #0 - add r5, r1, #0 - add r1, sp, #0x2c - mov r0, #0 - str r0, [r1, #0] - str r0, [r1, #4] - ldr r3, _021D7974 ; =0x021D9040 - str r0, [r1, #8] - ldmia r3!, {r0, r1} - add r2, sp, #0x20 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - str r0, [r2, #0] - add r0, r6, #0 - bl sub_020715BC - add r4, r0, #0 - add r0, r6, #0 - bl sub_020715B4 - str r0, [r5, #0] - str r4, [r5, #0x14] - ldr r0, [r5, #0] - cmp r0, #0 - bne _021D787A - ldr r1, [r4, #0x1c] - ldr r0, _021D7978 ; =0x000003E7 - str r1, [r5, #4] - cmp r1, r0 - bls _021D7852 - str r0, [r5, #4] -_021D7852: - ldr r0, [r5, #4] - cmp r0, #0x64 - blo _021D785E - mov r0, #3 - str r0, [r5, #8] - b _021D786C -_021D785E: - cmp r0, #0xa - blo _021D7868 - mov r0, #2 - str r0, [r5, #8] - b _021D786C -_021D7868: - mov r0, #1 - str r0, [r5, #8] -_021D786C: - mov r0, #0x32 - lsl r0, r0, #0xe - str r0, [sp, #0x38] - mov r0, #0x13 - lsl r0, r0, #0x10 - str r0, [sp, #0x3c] - b _021D78C6 -_021D787A: - ldr r1, [r4, #0x14] - ldr r0, _021D797C ; =0x0001869F - str r1, [r5, #4] - cmp r1, r0 - bls _021D7886 - str r0, [r5, #4] -_021D7886: - ldr r1, [r5, #4] - ldr r0, _021D7980 ; =0x00002710 - cmp r1, r0 - blo _021D7894 - mov r0, #5 - str r0, [r5, #8] - b _021D78BA -_021D7894: - mov r0, #0xfa - lsl r0, r0, #2 - cmp r1, r0 - blo _021D78A2 - mov r0, #4 - str r0, [r5, #8] - b _021D78BA -_021D78A2: - cmp r1, #0x64 - blo _021D78AC - mov r0, #3 - str r0, [r5, #8] - b _021D78BA -_021D78AC: - cmp r1, #0xa - blo _021D78B6 - mov r0, #2 - str r0, [r5, #8] - b _021D78BA -_021D78B6: - mov r0, #1 - str r0, [r5, #8] -_021D78BA: - mov r0, #0x32 - lsl r0, r0, #0xe - str r0, [sp, #0x38] - mov r0, #0x11 - lsl r0, r0, #0x10 - str r0, [sp, #0x3c] -_021D78C6: - ldr r0, [r5, #8] - mov r7, #0 - mov r6, #1 - cmp r0, #0 - bls _021D796A - add r0, r5, #0 - str r0, [sp, #0x1c] - add r0, #0x18 - str r0, [sp, #0x1c] - add r4, r5, #0 -_021D78DA: - mov r0, #0 - str r0, [sp] - mov r0, #8 - str r0, [sp, #4] - mov r0, #6 - str r0, [sp, #8] - mov r0, #8 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #2 - str r0, [sp, #0x14] - mov r0, #3 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r5, #0x14] - lsl r0, r0, #4 - ldr r0, [r1, r0] - ldr r1, [sp, #0x1c] - add r2, sp, #0x38 - mov r3, #2 - bl ov101_021D84A4 - ldr r0, [r4, #0x1c] - mov r1, #2 - bl sub_02021CF8 - ldr r0, [r4, #0x1c] - add r1, sp, #0x2c - bl sub_02021C60 - ldr r0, [r4, #0x1c] - add r1, sp, #0x20 - bl sub_02021C70 - mov r0, #0 - bl sub_0201D2A4 - add r1, r0, #0 - ldr r0, [r4, #0x1c] - bl sub_02021C94 - mov r1, #0xa - ldr r0, [r5, #4] - mul r1, r6 - bl _u32_div_f - add r0, r1, #0 - add r1, r6, #0 - bl _u32_div_f - add r1, r0, #0 - ldr r0, [r4, #0x1c] - bl sub_02021D6C - ldr r0, [r4, #0x1c] - bl sub_02021DE0 - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x38] - add r0, #0xc - str r0, [sp, #0x1c] - mov r0, #0xa - mul r6, r0 - mov r0, #1 - lsl r0, r0, #0x10 - sub r0, r1, r0 - str r0, [sp, #0x38] - ldr r0, [r5, #8] - add r7, r7, #1 - add r4, #0xc - cmp r7, r0 - blo _021D78DA -_021D796A: - str r7, [r5, #0x10] - mov r0, #1 - add sp, #0x44 - pop {r4, r5, r6, r7, pc} - nop -_021D7974: .word 0x021D9040 -_021D7978: .word 0x000003E7 -_021D797C: .word 0x0001869F -_021D7980: .word 0x00002710 - thumb_func_end ov101_021D7810 - - thumb_func_start ov101_021D7984 -ov101_021D7984: ; 0x021D7984 - push {r4, r5, r6, lr} - add r6, r1, #0 - ldr r0, [r6, #0x10] - mov r4, #0 - cmp r0, #0 - ble _021D79A4 - add r5, r6, #0 - add r5, #0x18 -_021D7994: - add r0, r5, #0 - bl ov101_021D8544 - ldr r0, [r6, #0x10] - add r4, r4, #1 - add r5, #0xc - cmp r4, r0 - blt _021D7994 -_021D79A4: - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov101_021D7984 - - thumb_func_start ov101_021D79A8 -ov101_021D79A8: ; 0x021D79A8 - push {r3, lr} - ldr r2, [r1, #0xc] - add r2, r2, #1 - str r2, [r1, #0xc] - cmp r2, #0x2d - blt _021D79B8 - bl sub_0207136C -_021D79B8: - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D79A8 - - thumb_func_start ov101_021D79BC -ov101_021D79BC: ; 0x021D79BC - push {r4, r5, lr} - sub sp, #0x14 - ldr r5, _021D79F0 ; =0x021D8F08 - add r2, r0, #0 - add r3, r1, #0 - ldmia r5!, {r0, r1} - add r4, sp, #8 - stmia r4!, {r0, r1} - ldr r0, [r5, #0] - str r0, [r4, #0] - ldr r0, _021D79F4 ; =0x000003E7 - cmp r3, r0 - bls _021D79D8 - add r3, r0, #0 -_021D79D8: - str r2, [sp] - mov r0, #0x8e - str r0, [sp, #4] - ldr r0, _021D79F8 ; =0x0000044C - ldr r1, _021D79FC ; =0x021D9268 - ldr r0, [r2, r0] - add r2, sp, #8 - bl sub_02071330 - add sp, #0x14 - pop {r4, r5, pc} - nop -_021D79F0: .word 0x021D8F08 -_021D79F4: .word 0x000003E7 -_021D79F8: .word 0x0000044C -_021D79FC: .word 0x021D9268 - thumb_func_end ov101_021D79BC - - thumb_func_start ov101_021D7A00 -ov101_021D7A00: ; 0x021D7A00 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x30 - add r4, r0, #0 - add r5, r1, #0 - bl sub_020715BC - str r0, [r5, #8] - add r0, r4, #0 - bl sub_020715B4 - str r0, [sp, #0x20] - add r0, r4, #0 - add r1, sp, #0x24 - bl sub_020715E4 - ldr r0, [sp, #0x20] - cmp r0, #0x64 - blo _021D7A36 - mov r0, #3 - str r0, [r5, #4] - mov r0, #1 - ldr r1, [sp, #0x24] - lsl r0, r0, #0x10 - sub r0, r1, r0 - mov r4, #0x64 - str r0, [sp, #0x24] - b _021D7A4E -_021D7A36: - cmp r0, #0xa - blo _021D7A4A - mov r0, #2 - str r0, [r5, #4] - ldr r1, [sp, #0x24] - lsl r0, r0, #0xe - sub r0, r1, r0 - mov r4, #0xa - str r0, [sp, #0x24] - b _021D7A4E -_021D7A4A: - mov r4, #1 - str r4, [r5, #4] -_021D7A4E: - ldr r0, [r5, #4] - mov r6, #0 - cmp r0, #0 - ble _021D7ACA - add r0, r5, #0 - str r0, [sp, #0x1c] - add r0, #0xc - str r0, [sp, #0x1c] - add r7, r5, #0 -_021D7A60: - mov r0, #0 - str r0, [sp] - mov r0, #9 - str r0, [sp, #4] - mov r0, #7 - str r0, [sp, #8] - mov r0, #9 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #2 - str r0, [sp, #0x14] - mov r0, #3 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r5, #8] - lsl r0, r0, #4 - ldr r0, [r1, r0] - ldr r1, [sp, #0x1c] - add r2, sp, #0x24 - mov r3, #2 - bl ov101_021D84A4 - mov r1, #0xa - ldr r0, [sp, #0x20] - mul r1, r4 - bl _u32_div_f - add r0, r1, #0 - add r1, r4, #0 - bl _u32_div_f - add r1, r0, #0 - ldr r0, [r7, #0x10] - bl sub_02021D6C - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x24] - add r0, #0xc - str r0, [sp, #0x1c] - mov r0, #1 - lsl r0, r0, #0x10 - add r0, r1, r0 - str r0, [sp, #0x24] - add r0, r4, #0 - mov r1, #0xa - add r7, #0xc - add r6, r6, #1 - bl _u32_div_f - add r4, r0, #0 - ldr r0, [r5, #4] - cmp r6, r0 - blt _021D7A60 -_021D7ACA: - mov r0, #1 - add sp, #0x30 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D7A00 - - thumb_func_start ov101_021D7AD0 -ov101_021D7AD0: ; 0x021D7AD0 - push {r4, r5, r6, lr} - add r6, r1, #0 - ldr r0, [r6, #4] - mov r4, #0 - cmp r0, #0 - ble _021D7AF0 - add r5, r6, #0 - add r5, #0xc -_021D7AE0: - add r0, r5, #0 - bl ov101_021D8544 - ldr r0, [r6, #4] - add r4, r4, #1 - add r5, #0xc - cmp r4, r0 - blt _021D7AE0 -_021D7AF0: - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov101_021D7AD0 - - thumb_func_start ov101_021D7AF4 -ov101_021D7AF4: ; 0x021D7AF4 - push {r3, lr} - ldr r2, [r1, #0] - add r2, r2, #1 - str r2, [r1, #0] - cmp r2, #0x3c - blt _021D7B04 - bl sub_0207136C -_021D7B04: - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D7AF4 - - thumb_func_start ov101_021D7B08 -ov101_021D7B08: ; 0x021D7B08 - push {lr} - sub sp, #0x14 - add r2, sp, #8 - mov r3, #0 - str r3, [r2, #0] - str r3, [r2, #4] - str r3, [r2, #8] - str r0, [sp] - mov r1, #0x8c - str r1, [sp, #4] - ldr r1, _021D7B2C ; =0x0000044C - ldr r0, [r0, r1] - ldr r1, _021D7B30 ; =0x021D91B4 - bl sub_02071330 - add sp, #0x14 - pop {pc} - nop -_021D7B2C: .word 0x0000044C -_021D7B30: .word 0x021D91B4 - thumb_func_end ov101_021D7B08 - - thumb_func_start ov101_021D7B34 -ov101_021D7B34: ; 0x021D7B34 - push {r4, lr} - add r4, r1, #0 - bl sub_020715BC - str r0, [r4, #0x44] - ldr r0, [r0, #0x44] - add r3, r4, #0 - str r0, [r4, #0x18] - ldr r0, [r4, #0x44] - add r3, #0x1c - ldr r0, [r0, #0x48] - mov r1, #1 -_021D7B4C: - add r2, r0, #0 - tst r2, r1 - bne _021D7B60 - ldr r2, [r3, #0] - lsr r0, r0, #1 - add r2, r2, #1 - str r2, [r3, #0] - ldr r2, [r4, #0x1c] - cmp r2, #5 - blt _021D7B4C -_021D7B60: - ldr r0, [r4, #0x1c] - cmp r0, #5 - blt _021D7B6A - bl GF_AssertFail -_021D7B6A: - add r0, r4, #0 - bl ov101_021D7D94 - mov r0, #1 - pop {r4, pc} - thumb_func_end ov101_021D7B34 - - thumb_func_start ov101_021D7B74 -ov101_021D7B74: ; 0x021D7B74 - push {r3, r4, r5, r6, r7, lr} - add r7, r1, #0 - ldr r0, [r7, #0x14] - cmp r0, #0 - bne _021D7BB0 - add r5, r7, #0 - mov r6, #0 - add r4, r7, #0 - add r5, #0x20 -_021D7B86: - ldr r0, [r4, #0x24] - cmp r0, #0 - beq _021D7B92 - add r0, r5, #0 - bl ov101_021D8544 -_021D7B92: - add r6, r6, #1 - add r4, #0xc - add r5, #0xc - cmp r6, #3 - blt _021D7B86 - mov r1, #0xa - str r1, [sp] - mov r0, #0x45 - ldr r2, [r7, #0x44] - lsl r0, r0, #4 - ldr r0, [r2, r0] - mov r2, #8 - add r3, r1, #0 - bl ov101_021D8358 -_021D7BB0: - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D7B74 - - thumb_func_start ov101_021D7BB4 -ov101_021D7BB4: ; 0x021D7BB4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x30 - add r5, r1, #0 - ldr r0, [r5, #0] - cmp r0, #5 - bhi _021D7BDE - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D7BCC: ; jump table - .short _021D7BD8 - _021D7BCC - 2 ; case 0 - .short _021D7C52 - _021D7BCC - 2 ; case 1 - .short _021D7C9C - _021D7BCC - 2 ; case 2 - .short _021D7CB4 - _021D7BCC - 2 ; case 3 - .short _021D7CF8 - _021D7BCC - 2 ; case 4 - .short _021D7D10 - _021D7BCC - 2 ; case 5 -_021D7BD8: - ldr r0, [r5, #8] - cmp r0, #2 - beq _021D7BE0 -_021D7BDE: - b _021D7D44 -_021D7BE0: - mov r4, #0 - add r7, r5, #0 - str r4, [sp, #0x20] - add r7, #0x20 - add r6, r5, #0 -_021D7BEA: - ldr r1, [r5, #0x1c] - mov r0, #0x24 - add r2, r1, #0 - mul r2, r0 - ldr r0, _021D7D48 ; =0x021D9424 - add r0, r0, r2 - add r3, r4, r0 - add r2, sp, #0x24 - ldmia r3!, {r0, r1} - mov ip, r2 - stmia r2!, {r0, r1} - ldr r0, [r3, #0] - mov r3, #3 - str r0, [r2, #0] - mov r0, #0 - str r0, [sp] - mov r0, #0xa - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - mov r0, #0xa - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #1 - str r0, [sp, #0x14] - mov r0, #0 - str r0, [sp, #0x18] - mov r0, #0x45 - ldr r1, [r5, #0x44] - lsl r0, r0, #4 - ldr r0, [r1, r0] - add r1, r7, #0 - mov r2, ip - bl ov101_021D84A4 - ldr r0, [r6, #0x24] - mov r1, #1 - bl sub_02021CC8 - ldr r0, [sp, #0x20] - add r4, #0xc - add r0, r0, #1 - add r7, #0xc - add r6, #0xc - str r0, [sp, #0x20] - cmp r0, #3 - blt _021D7BEA - ldr r0, [r5, #0] - add sp, #0x30 - add r0, r0, #1 - str r0, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_021D7C52: - mov r6, #0 - str r6, [sp, #0x1c] - add r4, r5, #0 - add r7, sp, #0x24 -_021D7C5A: - ldr r0, [r4, #0x24] - add r1, r7, #0 - bl ov101_021D8560 - mov r0, #1 - ldr r1, [sp, #0x28] - lsl r0, r0, #0xe - add r1, r1, r0 - mov r0, #0xf - lsl r0, r0, #0x10 - str r1, [sp, #0x28] - cmp r1, r0 - blt _021D7C78 - str r0, [sp, #0x28] - b _021D7C7C -_021D7C78: - mov r0, #1 - str r0, [sp, #0x1c] -_021D7C7C: - ldr r0, [r4, #0x24] - add r1, r7, #0 - bl sub_02021C50 - add r6, r6, #1 - add r4, #0xc - cmp r6, #3 - blt _021D7C5A - ldr r0, [sp, #0x1c] - cmp r0, #0 - bne _021D7D44 - ldr r0, [r5, #0] - add sp, #0x30 - add r0, r0, #1 - str r0, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_021D7C9C: - ldr r0, [r5, #0xc] - add r0, r0, #1 - str r0, [r5, #0xc] - cmp r0, #0x1e - blt _021D7D44 - mov r0, #0 - str r0, [r5, #0xc] - ldr r0, [r5, #0] - add sp, #0x30 - add r0, r0, #1 - str r0, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_021D7CB4: - ldr r0, [r5, #0xc] - add r0, r0, #1 - str r0, [r5, #0xc] - cmp r0, #0xc - blt _021D7CC2 - mov r7, #1 - b _021D7CC4 -_021D7CC2: - mov r7, #0 -_021D7CC4: - mov r6, #0 - add r4, r5, #0 -_021D7CC8: - ldr r0, [r4, #0x24] - add r1, r7, #0 - bl sub_02021CAC - add r6, r6, #1 - add r4, #0xc - cmp r6, #3 - blt _021D7CC8 - ldr r0, [r5, #0xc] - cmp r0, #0x1e - blt _021D7D44 - mov r1, #0 - str r1, [r5, #0xc] - ldr r0, [r5, #0x10] - add r0, r0, #1 - str r0, [r5, #0x10] - cmp r0, #3 - blt _021D7D44 - str r1, [r5, #0x10] - ldr r0, [r5, #0] - add sp, #0x30 - add r0, r0, #1 - str r0, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_021D7CF8: - ldr r0, [r5, #0xc] - add r0, r0, #1 - str r0, [r5, #0xc] - cmp r0, #0x1e - blt _021D7D44 - mov r0, #0 - str r0, [r5, #0xc] - ldr r0, [r5, #0] - add sp, #0x30 - add r0, r0, #1 - str r0, [r5, #0] - pop {r3, r4, r5, r6, r7, pc} -_021D7D10: - add r4, r5, #0 - mov r6, #0 - add r4, #0x20 -_021D7D16: - add r0, r4, #0 - bl ov101_021D8544 - add r6, r6, #1 - add r4, #0xc - cmp r6, #3 - blt _021D7D16 - mov r1, #0xa - str r1, [sp] - mov r0, #0x45 - ldr r2, [r5, #0x44] - lsl r0, r0, #4 - ldr r0, [r2, r0] - mov r2, #8 - add r3, r1, #0 - bl ov101_021D8358 - ldr r0, [r5, #0] - add r0, r0, #1 - str r0, [r5, #0] - mov r0, #1 - str r0, [r5, #4] - str r0, [r5, #0x14] -_021D7D44: - add sp, #0x30 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 -_021D7D48: .word 0x021D9424 - thumb_func_end ov101_021D7BB4 - - thumb_func_start ov101_021D7D4C -ov101_021D7D4C: ; 0x021D7D4C - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - mov r0, #0x45 - ldr r1, [r4, #0x44] - lsl r0, r0, #4 - ldr r0, [r1, r0] - mov r1, #0xa - bl ov101_021D814C - mov r0, #1 - str r0, [r4, #8] - add r0, r5, #0 - bl sub_0200DA58 - pop {r3, r4, r5, pc} - thumb_func_end ov101_021D7D4C - - thumb_func_start ov101_021D7D6C -ov101_021D7D6C: ; 0x021D7D6C - push {r3, r4, r5, lr} - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4, #8] - ldr r1, [r4, #0x44] - cmp r0, #1 - bne _021D7D90 - mov r0, #0x45 - lsl r0, r0, #4 - ldr r0, [r1, r0] - mov r1, #0xa - bl ov101_021D8180 - mov r0, #2 - str r0, [r4, #8] - add r0, r5, #0 - bl sub_0200DA58 -_021D7D90: - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D7D6C - - thumb_func_start ov101_021D7D94 -ov101_021D7D94: ; 0x021D7D94 - push {r3, r4, r5, lr} - add r5, r0, #0 - ldr r0, [r5, #0x18] - ldr r4, [r5, #0x44] - cmp r0, #0 - bne _021D7DDC - mov r2, #0x45 - mov r0, #0xa - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #3 - mov r3, #0xe - bl ov101_021D80E4 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0xf - mov r3, #0xa - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x10 - mov r3, #0xa - bl ov101_021D82F0 - b _021D7E16 -_021D7DDC: - mov r2, #0x45 - mov r0, #0xa - lsl r2, r2, #4 - str r0, [sp] - ldr r0, [r4, r2] - sub r2, #0x18 - ldr r2, [r4, r2] - mov r1, #3 - mov r3, #0x11 - bl ov101_021D80E4 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x12 - mov r3, #0xa - bl ov101_021D8288 - mov r1, #0x45 - lsl r1, r1, #4 - ldr r0, [r4, r1] - sub r1, #0x18 - ldr r1, [r4, r1] - mov r2, #0x13 - mov r3, #0xa - bl ov101_021D82F0 -_021D7E16: - ldr r0, _021D7E3C ; =ov101_021D7D4C - ldr r2, _021D7E40 ; =0x00000101 - add r1, r5, #0 - bl sub_0200DA04 - cmp r0, #0 - bne _021D7E28 - bl GF_AssertFail -_021D7E28: - ldr r0, _021D7E44 ; =ov101_021D7D6C - ldr r2, _021D7E40 ; =0x00000101 - add r1, r5, #0 - bl sub_0200DA3C - cmp r0, #0 - bne _021D7E3A - bl GF_AssertFail -_021D7E3A: - pop {r3, r4, r5, pc} - ; .align 2, 0 -_021D7E3C: .word ov101_021D7D4C -_021D7E40: .word 0x00000101 -_021D7E44: .word ov101_021D7D6C - thumb_func_end ov101_021D7D94 - - .rodata - - - .global Unk_ov101_021D8E58 -Unk_ov101_021D8E58: ; 0x021D8E58 - .incbin "incbin/overlay101_rodata.bin", 0x8D0, 0x8D8 - 0x8D0 - - .global Unk_ov101_021D8E60 -Unk_ov101_021D8E60: ; 0x021D8E60 - .incbin "incbin/overlay101_rodata.bin", 0x8D8, 0x8E0 - 0x8D8 - - .global Unk_ov101_021D8E68 -Unk_ov101_021D8E68: ; 0x021D8E68 - .incbin "incbin/overlay101_rodata.bin", 0x8E0, 0x8E8 - 0x8E0 - - .global Unk_ov101_021D8E70 -Unk_ov101_021D8E70: ; 0x021D8E70 - .incbin "incbin/overlay101_rodata.bin", 0x8E8, 0x8F0 - 0x8E8 - - .global Unk_ov101_021D8E78 -Unk_ov101_021D8E78: ; 0x021D8E78 - .incbin "incbin/overlay101_rodata.bin", 0x8F0, 0x8F8 - 0x8F0 - - .global Unk_ov101_021D8E80 -Unk_ov101_021D8E80: ; 0x021D8E80 - .incbin "incbin/overlay101_rodata.bin", 0x8F8, 0x900 - 0x8F8 - - .global Unk_ov101_021D8E88 -Unk_ov101_021D8E88: ; 0x021D8E88 - .incbin "incbin/overlay101_rodata.bin", 0x900, 0x908 - 0x900 - - .global Unk_ov101_021D8E90 -Unk_ov101_021D8E90: ; 0x021D8E90 - .incbin "incbin/overlay101_rodata.bin", 0x908, 0x914 - 0x908 - - .global Unk_ov101_021D8E9C -Unk_ov101_021D8E9C: ; 0x021D8E9C - .incbin "incbin/overlay101_rodata.bin", 0x914, 0x920 - 0x914 - - .global Unk_ov101_021D8EA8 -Unk_ov101_021D8EA8: ; 0x021D8EA8 - .incbin "incbin/overlay101_rodata.bin", 0x920, 0x92C - 0x920 - - .global Unk_ov101_021D8EB4 -Unk_ov101_021D8EB4: ; 0x021D8EB4 - .incbin "incbin/overlay101_rodata.bin", 0x92C, 0x938 - 0x92C - - .global Unk_ov101_021D8EC0 -Unk_ov101_021D8EC0: ; 0x021D8EC0 - .incbin "incbin/overlay101_rodata.bin", 0x938, 0x944 - 0x938 - - .global Unk_ov101_021D8ECC -Unk_ov101_021D8ECC: ; 0x021D8ECC - .incbin "incbin/overlay101_rodata.bin", 0x944, 0x950 - 0x944 - - .global Unk_ov101_021D8ED8 -Unk_ov101_021D8ED8: ; 0x021D8ED8 - .incbin "incbin/overlay101_rodata.bin", 0x950, 0x95C - 0x950 - - .global Unk_ov101_021D8EE4 -Unk_ov101_021D8EE4: ; 0x021D8EE4 - .incbin "incbin/overlay101_rodata.bin", 0x95C, 0x968 - 0x95C - - .global Unk_ov101_021D8EF0 -Unk_ov101_021D8EF0: ; 0x021D8EF0 - .incbin "incbin/overlay101_rodata.bin", 0x968, 0x974 - 0x968 - - .global Unk_ov101_021D8EFC -Unk_ov101_021D8EFC: ; 0x021D8EFC - .incbin "incbin/overlay101_rodata.bin", 0x974, 0x980 - 0x974 - - .global Unk_ov101_021D8F08 -Unk_ov101_021D8F08: ; 0x021D8F08 - .incbin "incbin/overlay101_rodata.bin", 0x980, 0x98C - 0x980 - - .global Unk_ov101_021D8F14 -Unk_ov101_021D8F14: ; 0x021D8F14 - .incbin "incbin/overlay101_rodata.bin", 0x98C, 0x998 - 0x98C - - .global Unk_ov101_021D8F20 -Unk_ov101_021D8F20: ; 0x021D8F20 - .incbin "incbin/overlay101_rodata.bin", 0x998, 0x9A4 - 0x998 - - .global Unk_ov101_021D8F2C -Unk_ov101_021D8F2C: ; 0x021D8F2C - .incbin "incbin/overlay101_rodata.bin", 0x9A4, 0x9B0 - 0x9A4 - - .global Unk_ov101_021D8F38 -Unk_ov101_021D8F38: ; 0x021D8F38 - .incbin "incbin/overlay101_rodata.bin", 0x9B0, 0x9BC - 0x9B0 - - .global Unk_ov101_021D8F44 -Unk_ov101_021D8F44: ; 0x021D8F44 - .incbin "incbin/overlay101_rodata.bin", 0x9BC, 0x9C8 - 0x9BC - - .global Unk_ov101_021D8F50 -Unk_ov101_021D8F50: ; 0x021D8F50 - .incbin "incbin/overlay101_rodata.bin", 0x9C8, 0x9D4 - 0x9C8 - - .global Unk_ov101_021D8F5C -Unk_ov101_021D8F5C: ; 0x021D8F5C - .incbin "incbin/overlay101_rodata.bin", 0x9D4, 0x9E0 - 0x9D4 - - .global Unk_ov101_021D8F68 -Unk_ov101_021D8F68: ; 0x021D8F68 - .incbin "incbin/overlay101_rodata.bin", 0x9E0, 0x9EC - 0x9E0 - - .global Unk_ov101_021D8F74 -Unk_ov101_021D8F74: ; 0x021D8F74 - .incbin "incbin/overlay101_rodata.bin", 0x9EC, 0x9F8 - 0x9EC - - .global Unk_ov101_021D8F80 -Unk_ov101_021D8F80: ; 0x021D8F80 - .incbin "incbin/overlay101_rodata.bin", 0x9F8, 0xA04 - 0x9F8 - - .global Unk_ov101_021D8F8C -Unk_ov101_021D8F8C: ; 0x021D8F8C - .incbin "incbin/overlay101_rodata.bin", 0xA04, 0xA10 - 0xA04 - - .global Unk_ov101_021D8F98 -Unk_ov101_021D8F98: ; 0x021D8F98 - .incbin "incbin/overlay101_rodata.bin", 0xA10, 0xA1C - 0xA10 - - .global Unk_ov101_021D8FA4 -Unk_ov101_021D8FA4: ; 0x021D8FA4 - .incbin "incbin/overlay101_rodata.bin", 0xA1C, 0xA28 - 0xA1C - - .global Unk_ov101_021D8FB0 -Unk_ov101_021D8FB0: ; 0x021D8FB0 - .incbin "incbin/overlay101_rodata.bin", 0xA28, 0xA34 - 0xA28 - - .global Unk_ov101_021D8FBC -Unk_ov101_021D8FBC: ; 0x021D8FBC - .incbin "incbin/overlay101_rodata.bin", 0xA34, 0xA40 - 0xA34 - - .global Unk_ov101_021D8FC8 -Unk_ov101_021D8FC8: ; 0x021D8FC8 - .incbin "incbin/overlay101_rodata.bin", 0xA40, 0xA4C - 0xA40 - - .global Unk_ov101_021D8FD4 -Unk_ov101_021D8FD4: ; 0x021D8FD4 - .incbin "incbin/overlay101_rodata.bin", 0xA4C, 0xA58 - 0xA4C - - .global Unk_ov101_021D8FE0 -Unk_ov101_021D8FE0: ; 0x021D8FE0 - .incbin "incbin/overlay101_rodata.bin", 0xA58, 0xA64 - 0xA58 - - .global Unk_ov101_021D8FEC -Unk_ov101_021D8FEC: ; 0x021D8FEC - .incbin "incbin/overlay101_rodata.bin", 0xA64, 0xA70 - 0xA64 - - .global Unk_ov101_021D8FF8 -Unk_ov101_021D8FF8: ; 0x021D8FF8 - .incbin "incbin/overlay101_rodata.bin", 0xA70, 0xA7C - 0xA70 - - .global Unk_ov101_021D9004 -Unk_ov101_021D9004: ; 0x021D9004 - .incbin "incbin/overlay101_rodata.bin", 0xA7C, 0xA88 - 0xA7C - - .global Unk_ov101_021D9010 -Unk_ov101_021D9010: ; 0x021D9010 - .incbin "incbin/overlay101_rodata.bin", 0xA88, 0xA94 - 0xA88 - - .global Unk_ov101_021D901C -Unk_ov101_021D901C: ; 0x021D901C - .incbin "incbin/overlay101_rodata.bin", 0xA94, 0xAA0 - 0xA94 - - .global Unk_ov101_021D9028 -Unk_ov101_021D9028: ; 0x021D9028 - .incbin "incbin/overlay101_rodata.bin", 0xAA0, 0xAAC - 0xAA0 - - .global Unk_ov101_021D9034 -Unk_ov101_021D9034: ; 0x021D9034 - .incbin "incbin/overlay101_rodata.bin", 0xAAC, 0xAB8 - 0xAAC - - .global Unk_ov101_021D9040 -Unk_ov101_021D9040: ; 0x021D9040 - .incbin "incbin/overlay101_rodata.bin", 0xAB8, 0xAC4 - 0xAB8 - - .global Unk_ov101_021D904C -Unk_ov101_021D904C: ; 0x021D904C - .incbin "incbin/overlay101_rodata.bin", 0xAC4, 0xAD0 - 0xAC4 - - .global Unk_ov101_021D9058 -Unk_ov101_021D9058: ; 0x021D9058 - .incbin "incbin/overlay101_rodata.bin", 0xAD0, 0xADC - 0xAD0 - - .global Unk_ov101_021D9064 -Unk_ov101_021D9064: ; 0x021D9064 - .incbin "incbin/overlay101_rodata.bin", 0xADC, 0xAE8 - 0xADC - - .global Unk_ov101_021D9070 -Unk_ov101_021D9070: ; 0x021D9070 - .incbin "incbin/overlay101_rodata.bin", 0xAE8, 0xAF4 - 0xAE8 - - .global Unk_ov101_021D907C -Unk_ov101_021D907C: ; 0x021D907C - .incbin "incbin/overlay101_rodata.bin", 0xAF4, 0xB00 - 0xAF4 - - .global Unk_ov101_021D9088 -Unk_ov101_021D9088: ; 0x021D9088 - .incbin "incbin/overlay101_rodata.bin", 0xB00, 0xB0C - 0xB00 - - .global Unk_ov101_021D9094 -Unk_ov101_021D9094: ; 0x021D9094 - .incbin "incbin/overlay101_rodata.bin", 0xB0C, 0xB18 - 0xB0C - - .global Unk_ov101_021D90A0 -Unk_ov101_021D90A0: ; 0x021D90A0 - .incbin "incbin/overlay101_rodata.bin", 0xB18, 0xB24 - 0xB18 - - .global Unk_ov101_021D90AC -Unk_ov101_021D90AC: ; 0x021D90AC - .incbin "incbin/overlay101_rodata.bin", 0xB24, 0xB30 - 0xB24 - - .global Unk_ov101_021D90B8 -Unk_ov101_021D90B8: ; 0x021D90B8 - .incbin "incbin/overlay101_rodata.bin", 0xB30, 0xB3C - 0xB30 - - .global Unk_ov101_021D90C4 -Unk_ov101_021D90C4: ; 0x021D90C4 - .incbin "incbin/overlay101_rodata.bin", 0xB3C, 0xB48 - 0xB3C - - .global Unk_ov101_021D90D0 -Unk_ov101_021D90D0: ; 0x021D90D0 - .incbin "incbin/overlay101_rodata.bin", 0xB48, 0xB54 - 0xB48 - - .global Unk_ov101_021D90DC -Unk_ov101_021D90DC: ; 0x021D90DC - .incbin "incbin/overlay101_rodata.bin", 0xB54, 0xB60 - 0xB54 - - .global Unk_ov101_021D90E8 -Unk_ov101_021D90E8: ; 0x021D90E8 - .incbin "incbin/overlay101_rodata.bin", 0xB60, 0xB6C - 0xB60 - - .global Unk_ov101_021D90F4 -Unk_ov101_021D90F4: ; 0x021D90F4 - .incbin "incbin/overlay101_rodata.bin", 0xB6C, 0xB78 - 0xB6C - - .global Unk_ov101_021D9100 -Unk_ov101_021D9100: ; 0x021D9100 - .incbin "incbin/overlay101_rodata.bin", 0xB78, 0xB84 - 0xB78 - - .global Unk_ov101_021D910C -Unk_ov101_021D910C: ; 0x021D910C - .incbin "incbin/overlay101_rodata.bin", 0xB84, 0xB94 - 0xB84 - - .global Unk_ov101_021D911C -Unk_ov101_021D911C: ; 0x021D911C - .incbin "incbin/overlay101_rodata.bin", 0xB94, 0xBA4 - 0xB94 - - .global Unk_ov101_021D912C -Unk_ov101_021D912C: ; 0x021D912C - .incbin "incbin/overlay101_rodata.bin", 0xBA4, 0xBB4 - 0xBA4 - - .global Unk_ov101_021D913C -Unk_ov101_021D913C: ; 0x021D913C - .incbin "incbin/overlay101_rodata.bin", 0xBB4, 0xBC8 - 0xBB4 - - .global Unk_ov101_021D9150 -Unk_ov101_021D9150: ; 0x021D9150 - .incbin "incbin/overlay101_rodata.bin", 0xBC8, 0xBDC - 0xBC8 - - .global Unk_ov101_021D9164 -Unk_ov101_021D9164: ; 0x021D9164 - .incbin "incbin/overlay101_rodata.bin", 0xBDC, 0xBF0 - 0xBDC - - .global Unk_ov101_021D9178 -Unk_ov101_021D9178: ; 0x021D9178 - .incbin "incbin/overlay101_rodata.bin", 0xBF0, 0xC04 - 0xBF0 - - .global Unk_ov101_021D918C -Unk_ov101_021D918C: ; 0x021D918C - .incbin "incbin/overlay101_rodata.bin", 0xC04, 0xC18 - 0xC04 - - .global Unk_ov101_021D91A0 -Unk_ov101_021D91A0: ; 0x021D91A0 - .incbin "incbin/overlay101_rodata.bin", 0xC18, 0xC2C - 0xC18 - - .global Unk_ov101_021D91B4 -Unk_ov101_021D91B4: ; 0x021D91B4 - .incbin "incbin/overlay101_rodata.bin", 0xC2C, 0xC40 - 0xC2C - - .global Unk_ov101_021D91C8 -Unk_ov101_021D91C8: ; 0x021D91C8 - .incbin "incbin/overlay101_rodata.bin", 0xC40, 0xC54 - 0xC40 - - .global Unk_ov101_021D91DC -Unk_ov101_021D91DC: ; 0x021D91DC - .incbin "incbin/overlay101_rodata.bin", 0xC54, 0xC68 - 0xC54 - - .global Unk_ov101_021D91F0 -Unk_ov101_021D91F0: ; 0x021D91F0 - .incbin "incbin/overlay101_rodata.bin", 0xC68, 0xC7C - 0xC68 - - .global Unk_ov101_021D9204 -Unk_ov101_021D9204: ; 0x021D9204 - .incbin "incbin/overlay101_rodata.bin", 0xC7C, 0xC90 - 0xC7C - - .global Unk_ov101_021D9218 -Unk_ov101_021D9218: ; 0x021D9218 - .incbin "incbin/overlay101_rodata.bin", 0xC90, 0xCA4 - 0xC90 - - .global Unk_ov101_021D922C -Unk_ov101_021D922C: ; 0x021D922C - .incbin "incbin/overlay101_rodata.bin", 0xCA4, 0xCB8 - 0xCA4 - - .global Unk_ov101_021D9240 -Unk_ov101_021D9240: ; 0x021D9240 - .incbin "incbin/overlay101_rodata.bin", 0xCB8, 0xCCC - 0xCB8 - - .global Unk_ov101_021D9254 -Unk_ov101_021D9254: ; 0x021D9254 - .incbin "incbin/overlay101_rodata.bin", 0xCCC, 0xCE0 - 0xCCC - - .global Unk_ov101_021D9268 -Unk_ov101_021D9268: ; 0x021D9268 - .incbin "incbin/overlay101_rodata.bin", 0xCE0, 0xCF4 - 0xCE0 - - .global Unk_ov101_021D927C -Unk_ov101_021D927C: ; 0x021D927C - .incbin "incbin/overlay101_rodata.bin", 0xCF4, 0xD0C - 0xCF4 - - .global Unk_ov101_021D9294 -Unk_ov101_021D9294: ; 0x021D9294 - .incbin "incbin/overlay101_rodata.bin", 0xD0C, 0xD28 - 0xD0C - - .global Unk_ov101_021D92B0 -Unk_ov101_021D92B0: ; 0x021D92B0 - .incbin "incbin/overlay101_rodata.bin", 0xD28, 0xD48 - 0xD28 - - .global Unk_ov101_021D92D0 -Unk_ov101_021D92D0: ; 0x021D92D0 - .incbin "incbin/overlay101_rodata.bin", 0xD48, 0xD68 - 0xD48 - - .global Unk_ov101_021D92F0 -Unk_ov101_021D92F0: ; 0x021D92F0 - .incbin "incbin/overlay101_rodata.bin", 0xD68, 0xD88 - 0xD68 - - .global Unk_ov101_021D9310 -Unk_ov101_021D9310: ; 0x021D9310 - .incbin "incbin/overlay101_rodata.bin", 0xD88, 0xDA8 - 0xD88 - - .global Unk_ov101_021D9330 -Unk_ov101_021D9330: ; 0x021D9330 - .incbin "incbin/overlay101_rodata.bin", 0xDA8, 0xDCC - 0xDA8 - - .global Unk_ov101_021D9354 -Unk_ov101_021D9354: ; 0x021D9354 - .incbin "incbin/overlay101_rodata.bin", 0xDCC, 0xDF4 - 0xDCC - - .global Unk_ov101_021D937C -Unk_ov101_021D937C: ; 0x021D937C - .incbin "incbin/overlay101_rodata.bin", 0xDF4, 0xE1C - 0xDF4 - - .global Unk_ov101_021D93A4 -Unk_ov101_021D93A4: ; 0x021D93A4 - .incbin "incbin/overlay101_rodata.bin", 0xE1C, 0xE4C - 0xE1C - - .global Unk_ov101_021D93D4 -Unk_ov101_021D93D4: ; 0x021D93D4 - .incbin "incbin/overlay101_rodata.bin", 0xE4C, 0xE9C - 0xE4C - - .global Unk_ov101_021D9424 -Unk_ov101_021D9424: ; 0x021D9424 - .incbin "incbin/overlay101_rodata.bin", 0xE9C, 0xB4 - diff --git a/asm/overlay101/ov101_021D7E48.inc b/asm/overlay101/ov101_021D7E48.inc deleted file mode 100644 index df3b02c8d2..0000000000 --- a/asm/overlay101/ov101_021D7E48.inc +++ /dev/null @@ -1,29 +0,0 @@ -.public sub_020093B4 -.public sub_020095C4 -.public sub_02009714 -.public sub_02009754 -.public sub_02009A4C -.public sub_02009B04 -.public sub_02009BC4 -.public sub_02009D4C -.public sub_02009D68 -.public sub_0200A3DC -.public sub_0200A4E4 -.public sub_0200A5B4 -.public sub_0200A640 -.public sub_0200A6DC -.public sub_02018144 -.public sub_020181C4 -.public sub_0201DBEC -.public sub_0201DC3C -.public sub_0201DCC8 -.public sub_0201DCE8 -.public sub_0201DCF0 -.public sub_02021964 -.public sub_020219C0 -.public sub_020219F8 -.public sub_02021B90 -.public sub_02021BD4 -.public sub_02021D28 -.public sub_02021D2C -.public GF_AssertFail diff --git a/asm/overlay101/ov101_021D7E48.s b/asm/overlay101/ov101_021D7E48.s deleted file mode 100644 index 209584be4a..0000000000 --- a/asm/overlay101/ov101_021D7E48.s +++ /dev/null @@ -1,998 +0,0 @@ - .include "macros/function.inc" - .include "overlay101/ov101_021D7E48.inc" - - - - .text - - - thumb_func_start ov101_021D7E48 -ov101_021D7E48: ; 0x021D7E48 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - str r1, [sp, #4] - ldr r1, [sp, #0x28] - str r0, [sp] - str r1, [sp, #0x28] - mov r1, #0x57 - lsl r1, r1, #2 - str r2, [sp, #8] - add r7, r3, #0 - ldr r5, [sp, #0x20] - ldr r6, [sp, #0x24] - bl sub_02018144 - add r4, r0, #0 - bne _021D7E6C - bl GF_AssertFail -_021D7E6C: - ldr r0, [sp] - add r1, r4, #0 - str r0, [r4, #0] - strb r7, [r4, #4] - strb r5, [r4, #5] - ldr r0, [sp, #0x28] - strb r6, [r4, #6] - strb r0, [r4, #7] - ldr r0, [sp, #0x2c] - ldr r2, [sp] - strb r0, [r4, #8] - ldr r0, [sp, #0x30] - add r1, #0x10 - strb r0, [r4, #9] - ldr r0, [sp, #0x34] - strb r0, [r4, #0xa] - ldr r0, [sp, #0x38] - strb r0, [r4, #0xb] - ldr r0, [sp, #4] - bl sub_020095C4 - str r0, [r4, #0xc] - ldr r0, [sp, #8] - ldr r1, [sp] - bl sub_0201DCC8 - mov r1, #0x4e - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [sp, #8] - ldr r1, [sp] - bl sub_0201DBEC - ldr r2, [sp] - add r0, r7, #0 - mov r1, #0 - bl sub_02009714 - mov r1, #0x4f - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r2, [sp] - add r0, r5, #0 - mov r1, #1 - bl sub_02009714 - mov r1, #5 - lsl r1, r1, #6 - str r0, [r4, r1] - ldr r2, [sp] - add r0, r6, #0 - mov r1, #2 - bl sub_02009714 - mov r1, #0x51 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [sp, #0x28] - ldr r2, [sp] - mov r1, #3 - bl sub_02009714 - mov r1, #0x52 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [sp] - lsl r1, r7, #3 - bl sub_02018144 - mov r1, #0x53 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r0, [sp] - lsl r1, r5, #3 - bl sub_02018144 - mov r1, #0x15 - lsl r1, r1, #4 - str r0, [r4, r1] - ldr r0, [sp] - lsl r1, r6, #3 - bl sub_02018144 - mov r1, #0x55 - lsl r1, r1, #2 - str r0, [r4, r1] - ldr r1, [sp, #0x28] - ldr r0, [sp] - lsl r1, r1, #3 - bl sub_02018144 - mov r1, #0x56 - lsl r1, r1, #2 - str r0, [r4, r1] - mov r1, #0 - cmp r7, #0 - bls _021D7F48 - bls _021D7F48 - ldr r0, [sp, #0x2c] - add r2, r1, #0 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 -_021D7F38: - mov r3, #0x53 - lsl r3, r3, #2 - ldr r3, [r4, r3] - add r1, r1, #1 - strh r0, [r3, r2] - add r2, #8 - cmp r1, r7 - blo _021D7F38 -_021D7F48: - mov r3, #0 - cmp r5, #0 - bls _021D7F68 - bls _021D7F68 - ldr r0, [sp, #0x30] - mov r7, #0x15 - lsl r0, r0, #0x10 - add r2, r3, #0 - lsr r1, r0, #0x10 - lsl r7, r7, #4 -_021D7F5C: - ldr r0, [r4, r7] - add r3, r3, #1 - strh r1, [r0, r2] - add r2, #8 - cmp r3, r5 - blo _021D7F5C -_021D7F68: - mov r1, #0 - cmp r6, #0 - bls _021D7F88 - bls _021D7F88 - ldr r2, [sp, #0x34] - add r0, r1, #0 - lsl r2, r2, #0x10 - lsr r5, r2, #0x10 - mov r2, #0x55 - lsl r2, r2, #2 -_021D7F7C: - ldr r3, [r4, r2] - add r1, r1, #1 - strh r5, [r3, r0] - add r0, #8 - cmp r1, r6 - blo _021D7F7C -_021D7F88: - ldr r0, [sp, #0x28] - mov r1, #0 - cmp r0, #0 - bls _021D7FAC - bls _021D7FAC - ldr r2, [sp, #0x38] - mov r3, #0x56 - lsl r2, r2, #0x10 - add r0, r1, #0 - lsr r5, r2, #0x10 - lsl r3, r3, #2 -_021D7F9E: - ldr r2, [r4, r3] - add r1, r1, #1 - strh r5, [r2, r0] - ldr r2, [sp, #0x28] - add r0, #8 - cmp r1, r2 - blo _021D7F9E -_021D7FAC: - add r0, r4, #0 - add sp, #0xc - pop {r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D7E48 - - thumb_func_start ov101_021D7FB4 -ov101_021D7FB4: ; 0x021D7FB4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldrb r0, [r5, #4] - mov r6, #0 - cmp r0, #0 - bls _021D7FE2 - mov r7, #0x53 - add r4, r6, #0 - lsl r7, r7, #2 -_021D7FC6: - ldr r1, [r5, r7] - ldrb r2, [r5, #8] - add r0, r1, r4 - ldrh r1, [r1, r4] - cmp r2, r1 - beq _021D7FD8 - ldr r0, [r0, #4] - bl sub_0200A4E4 -_021D7FD8: - ldrb r0, [r5, #4] - add r6, r6, #1 - add r4, #8 - cmp r6, r0 - blo _021D7FC6 -_021D7FE2: - ldrb r0, [r5, #5] - mov r6, #0 - cmp r0, #0 - bls _021D800C - mov r7, #0x15 - add r4, r6, #0 - lsl r7, r7, #4 -_021D7FF0: - ldr r1, [r5, r7] - ldrb r2, [r5, #9] - add r0, r1, r4 - ldrh r1, [r1, r4] - cmp r2, r1 - beq _021D8002 - ldr r0, [r0, #4] - bl sub_0200A6DC -_021D8002: - ldrb r0, [r5, #5] - add r6, r6, #1 - add r4, #8 - cmp r6, r0 - blo _021D7FF0 -_021D800C: - ldrb r0, [r5, #6] - mov r6, #0 - cmp r0, #0 - bls _021D8036 - mov r7, #0x55 - add r4, r6, #0 - lsl r7, r7, #2 -_021D801A: - ldr r1, [r5, r7] - ldrb r2, [r5, #0xa] - add r0, r1, r4 - ldrh r1, [r1, r4] - cmp r2, r1 - beq _021D802C - ldr r0, [r0, #4] - bl sub_02009D4C -_021D802C: - ldrb r0, [r5, #6] - add r6, r6, #1 - add r4, #8 - cmp r6, r0 - blo _021D801A -_021D8036: - ldrb r0, [r5, #7] - mov r6, #0 - cmp r0, #0 - bls _021D8060 - mov r7, #0x56 - add r4, r6, #0 - lsl r7, r7, #2 -_021D8044: - ldr r1, [r5, r7] - ldrb r2, [r5, #0xb] - add r0, r1, r4 - ldrh r1, [r1, r4] - cmp r2, r1 - beq _021D8056 - ldr r0, [r0, #4] - bl sub_02009D4C -_021D8056: - ldrb r0, [r5, #7] - add r6, r6, #1 - add r4, #8 - cmp r6, r0 - blo _021D8044 -_021D8060: - mov r0, #0x4f - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_02009754 - mov r0, #5 - lsl r0, r0, #6 - ldr r0, [r5, r0] - bl sub_02009754 - mov r0, #0x51 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_02009754 - mov r0, #0x52 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_02009754 - mov r0, #0x53 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_020181C4 - mov r0, #0x15 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl sub_020181C4 - mov r0, #0x55 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_020181C4 - mov r0, #0x56 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_020181C4 - bl sub_0201DC3C - mov r0, #0x4e - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl sub_0201DCF0 - ldr r0, [r5, #0xc] - bl sub_020219C0 - ldr r0, [r5, #0xc] - bl sub_02021964 - add r0, r5, #0 - bl sub_020181C4 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D7FB4 - - thumb_func_start ov101_021D80D4 -ov101_021D80D4: ; 0x021D80D4 - push {r3, lr} - ldr r0, [r0, #0xc] - bl sub_020219F8 - bl sub_0201DCE8 - pop {r3, pc} - ; .align 2, 0 - thumb_func_end ov101_021D80D4 - - thumb_func_start ov101_021D80E4 -ov101_021D80E4: ; 0x021D80E4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r0, #0 - ldrb r5, [r4, #4] - add r7, r1, #0 - mov r1, #0 - str r2, [sp, #0xc] - mov ip, r3 - cmp r5, #0 - bls _021D8144 - mov r0, #0x53 - lsl r0, r0, #2 - ldr r6, [r4, r0] - ldrb r3, [r4, #8] - add r2, r6, #0 -_021D8102: - ldrh r0, [r2] - cmp r3, r0 - bne _021D813C - ldr r0, [sp, #0x28] - lsl r5, r1, #3 - mov r1, #0x53 - strh r0, [r6, r5] - lsl r1, r1, #2 - ldr r2, [r4, r1] - mov r3, #0 - add r2, r2, r5 - strh r3, [r2, #2] - str r0, [sp] - str r7, [sp, #4] - ldr r0, [r4, #0] - sub r1, #0x10 - str r0, [sp, #8] - ldr r0, [r4, r1] - ldr r1, [sp, #0xc] - mov r2, ip - bl sub_02009A4C - mov r1, #0x53 - lsl r1, r1, #2 - ldr r1, [r4, r1] - add sp, #0x10 - add r1, r1, r5 - str r0, [r1, #4] - pop {r3, r4, r5, r6, r7, pc} -_021D813C: - add r1, r1, #1 - add r2, #8 - cmp r1, r5 - blo _021D8102 -_021D8144: - bl GF_AssertFail - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D80E4 - - thumb_func_start ov101_021D814C -ov101_021D814C: ; 0x021D814C - push {r3, r4, r5, lr} - ldrb r2, [r0, #4] - mov r4, #0 - cmp r2, #0 - bls _021D8178 - mov r3, #0x53 - lsl r3, r3, #2 - ldr r5, [r0, r3] - add r3, r5, #0 -_021D815E: - ldrh r0, [r3] - cmp r1, r0 - bne _021D8170 - lsl r0, r4, #3 - add r0, r5, r0 - ldr r0, [r0, #4] - bl sub_0200A3DC - pop {r3, r4, r5, pc} -_021D8170: - add r4, r4, #1 - add r3, #8 - cmp r4, r2 - blo _021D815E -_021D8178: - bl GF_AssertFail - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D814C - - thumb_func_start ov101_021D8180 -ov101_021D8180: ; 0x021D8180 - push {r3, r4, r5, lr} - ldrb r2, [r0, #4] - mov r4, #0 - cmp r2, #0 - bls _021D81AC - mov r3, #0x53 - lsl r3, r3, #2 - ldr r5, [r0, r3] - add r3, r5, #0 -_021D8192: - ldrh r0, [r3] - cmp r1, r0 - bne _021D81A4 - lsl r0, r4, #3 - add r0, r5, r0 - ldr r0, [r0, #4] - bl sub_02009D4C - pop {r3, r4, r5, pc} -_021D81A4: - add r4, r4, #1 - add r3, #8 - cmp r4, r2 - blo _021D8192 -_021D81AC: - bl GF_AssertFail - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D8180 - - thumb_func_start ov101_021D81B4 -ov101_021D81B4: ; 0x021D81B4 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r4, r0, #0 - ldrb r5, [r4, #4] - add r7, r1, #0 - mov r1, #0 - str r2, [sp, #0x10] - mov ip, r3 - cmp r5, #0 - bls _021D8218 - mov r0, #0x15 - lsl r0, r0, #4 - ldr r6, [r4, r0] - ldrb r3, [r4, #9] - add r2, r6, #0 -_021D81D2: - ldrh r0, [r2] - cmp r3, r0 - bne _021D8210 - ldr r0, [sp, #0x28] - lsl r5, r1, #3 - mov r1, #0x15 - strh r0, [r6, r5] - lsl r1, r1, #4 - ldr r2, [r4, r1] - mov r3, #0 - add r2, r2, r5 - strh r3, [r2, #2] - str r0, [sp] - str r7, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - ldr r0, [r4, #0] - sub r1, #0x10 - str r0, [sp, #0xc] - ldr r0, [r4, r1] - ldr r1, [sp, #0x10] - mov r2, ip - bl sub_02009B04 - mov r1, #0x15 - lsl r1, r1, #4 - ldr r1, [r4, r1] - add sp, #0x14 - add r1, r1, r5 - str r0, [r1, #4] - pop {r4, r5, r6, r7, pc} -_021D8210: - add r1, r1, #1 - add r2, #8 - cmp r1, r5 - blo _021D81D2 -_021D8218: - bl GF_AssertFail - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - thumb_func_end ov101_021D81B4 - - thumb_func_start ov101_021D8220 -ov101_021D8220: ; 0x021D8220 - push {r3, r4, r5, lr} - ldrb r2, [r0, #5] - mov r4, #0 - cmp r2, #0 - bls _021D824C - mov r3, #0x15 - lsl r3, r3, #4 - ldr r5, [r0, r3] - add r3, r5, #0 -_021D8232: - ldrh r0, [r3] - cmp r1, r0 - bne _021D8244 - lsl r0, r4, #3 - add r0, r5, r0 - ldr r0, [r0, #4] - bl sub_0200A640 - pop {r3, r4, r5, pc} -_021D8244: - add r4, r4, #1 - add r3, #8 - cmp r4, r2 - blo _021D8232 -_021D824C: - bl GF_AssertFail - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D8220 - - thumb_func_start ov101_021D8254 -ov101_021D8254: ; 0x021D8254 - push {r3, r4, r5, lr} - ldrb r2, [r0, #5] - mov r4, #0 - cmp r2, #0 - bls _021D8280 - mov r3, #0x15 - lsl r3, r3, #4 - ldr r5, [r0, r3] - add r3, r5, #0 -_021D8266: - ldrh r0, [r3] - cmp r1, r0 - bne _021D8278 - lsl r0, r4, #3 - add r0, r5, r0 - ldr r0, [r0, #4] - bl sub_02009D4C - pop {r3, r4, r5, pc} -_021D8278: - add r4, r4, #1 - add r3, #8 - cmp r4, r2 - blo _021D8266 -_021D8280: - bl GF_AssertFail - pop {r3, r4, r5, pc} - ; .align 2, 0 - thumb_func_end ov101_021D8254 - - thumb_func_start ov101_021D8288 -ov101_021D8288: ; 0x021D8288 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r0, #0 - ldrb r5, [r4, #4] - str r1, [sp, #0xc] - mov ip, r2 - add r6, r3, #0 - mov r1, #0 - cmp r5, #0 - bls _021D82E8 - mov r0, #0x55 - lsl r0, r0, #2 - ldr r7, [r4, r0] - ldrb r3, [r4, #0xa] - add r2, r7, #0 -_021D82A6: - ldrh r0, [r2] - cmp r3, r0 - bne _021D82E0 - lsl r5, r1, #3 - mov r0, #0x55 - strh r6, [r7, r5] - lsl r0, r0, #2 - ldr r1, [r4, r0] - mov r3, #0 - add r1, r1, r5 - strh r3, [r1, #2] - str r6, [sp] - mov r1, #2 - str r1, [sp, #4] - ldr r1, [r4, #0] - sub r0, #0x10 - str r1, [sp, #8] - ldr r0, [r4, r0] - ldr r1, [sp, #0xc] - mov r2, ip - bl sub_02009BC4 - mov r1, #0x55 - lsl r1, r1, #2 - ldr r1, [r4, r1] - add sp, #0x10 - add r1, r1, r5 - str r0, [r1, #4] - pop {r3, r4, r5, r6, r7, pc} -_021D82E0: - add r1, r1, #1 - add r2, #8 - cmp r1, r5 - blo _021D82A6 -_021D82E8: - bl GF_AssertFail - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D8288 - - thumb_func_start ov101_021D82F0 -ov101_021D82F0: ; 0x021D82F0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r4, r0, #0 - ldrb r5, [r4, #4] - str r1, [sp, #0xc] - mov ip, r2 - add r6, r3, #0 - mov r1, #0 - cmp r5, #0 - bls _021D8350 - mov r0, #0x56 - lsl r0, r0, #2 - ldr r7, [r4, r0] - ldrb r3, [r4, #0xb] - add r2, r7, #0 -_021D830E: - ldrh r0, [r2] - cmp r3, r0 - bne _021D8348 - lsl r5, r1, #3 - mov r0, #0x56 - strh r6, [r7, r5] - lsl r0, r0, #2 - ldr r1, [r4, r0] - mov r3, #0 - add r1, r1, r5 - strh r3, [r1, #2] - str r6, [sp] - mov r1, #3 - str r1, [sp, #4] - ldr r1, [r4, #0] - sub r0, #0x10 - str r1, [sp, #8] - ldr r0, [r4, r0] - ldr r1, [sp, #0xc] - mov r2, ip - bl sub_02009BC4 - mov r1, #0x56 - lsl r1, r1, #2 - ldr r1, [r4, r1] - add sp, #0x10 - add r1, r1, r5 - str r0, [r1, #4] - pop {r3, r4, r5, r6, r7, pc} -_021D8348: - add r1, r1, #1 - add r2, #8 - cmp r1, r5 - blo _021D830E -_021D8350: - bl GF_AssertFail - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D82F0 - - thumb_func_start ov101_021D8358 -ov101_021D8358: ; 0x021D8358 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r4, r0, #0 - add r0, r1, #0 - ldrb r1, [r4, #8] - add r7, r2, #0 - str r3, [sp] - ldr r6, [sp, #0x20] - cmp r0, r1 - beq _021D83B4 - ldrb r5, [r4, #4] - mov r2, #0 - cmp r5, #0 - bls _021D83B4 - mov r1, #0x53 - lsl r1, r1, #2 - ldr r3, [r4, r1] - mov ip, r3 -_021D837C: - ldrh r1, [r3] - cmp r0, r1 - bne _021D83AC - lsl r5, r2, #3 - mov r0, ip - add r0, r0, r5 - ldr r0, [r0, #4] - bl sub_0200A4E4 - mov r1, #0x4f - lsl r1, r1, #2 - ldr r0, [r4, r1] - add r1, #0x10 - ldr r1, [r4, r1] - add r1, r1, r5 - ldr r1, [r1, #4] - bl sub_02009D68 - mov r0, #0x53 - lsl r0, r0, #2 - ldrb r1, [r4, #8] - ldr r0, [r4, r0] - strh r1, [r0, r5] - b _021D83B4 -_021D83AC: - add r2, r2, #1 - add r3, #8 - cmp r2, r5 - blo _021D837C -_021D83B4: - ldrb r0, [r4, #9] - cmp r7, r0 - beq _021D8402 - ldrb r0, [r4, #5] - mov r1, #0 - cmp r0, #0 - bls _021D8402 - mov r2, #0x15 - lsl r2, r2, #4 - ldr r3, [r4, r2] - str r3, [sp, #4] -_021D83CA: - ldrh r2, [r3] - cmp r7, r2 - bne _021D83FA - ldr r0, [sp, #4] - lsl r5, r1, #3 - add r0, r0, r5 - ldr r0, [r0, #4] - bl sub_0200A6DC - mov r1, #5 - lsl r1, r1, #6 - ldr r0, [r4, r1] - add r1, #0x10 - ldr r1, [r4, r1] - add r1, r1, r5 - ldr r1, [r1, #4] - bl sub_02009D68 - mov r0, #0x15 - lsl r0, r0, #4 - ldrb r1, [r4, #9] - ldr r0, [r4, r0] - strh r1, [r0, r5] - b _021D8402 -_021D83FA: - add r1, r1, #1 - add r3, #8 - cmp r1, r0 - blo _021D83CA -_021D8402: - ldrb r1, [r4, #0xa] - ldr r0, [sp] - cmp r0, r1 - beq _021D8452 - ldrb r3, [r4, #6] - mov r5, #0 - cmp r3, #0 - bls _021D8452 - mov r0, #0x55 - lsl r0, r0, #2 - ldr r7, [r4, r0] - add r2, r7, #0 -_021D841A: - ldrh r1, [r2] - ldr r0, [sp] - cmp r0, r1 - bne _021D844A - lsl r5, r5, #3 - add r0, r7, r5 - ldr r0, [r0, #4] - bl sub_02009D4C - mov r1, #0x51 - lsl r1, r1, #2 - ldr r0, [r4, r1] - add r1, #0x10 - ldr r1, [r4, r1] - add r1, r1, r5 - ldr r1, [r1, #4] - bl sub_02009D68 - mov r0, #0x55 - lsl r0, r0, #2 - ldrb r1, [r4, #0xa] - ldr r0, [r4, r0] - strh r1, [r0, r5] - b _021D8452 -_021D844A: - add r5, r5, #1 - add r2, #8 - cmp r5, r3 - blo _021D841A -_021D8452: - ldrb r0, [r4, #0xb] - cmp r6, r0 - beq _021D84A0 - ldrb r1, [r4, #7] - mov r2, #0 - cmp r1, #0 - bls _021D84A0 - mov r0, #0x56 - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r5, r0, #0 -_021D8468: - ldrh r3, [r5] - cmp r6, r3 - bne _021D8498 - lsl r5, r2, #3 - add r0, r0, r5 - ldr r0, [r0, #4] - bl sub_02009D4C - mov r1, #0x52 - lsl r1, r1, #2 - ldr r0, [r4, r1] - add r1, #0x10 - ldr r1, [r4, r1] - add r1, r1, r5 - ldr r1, [r1, #4] - bl sub_02009D68 - mov r0, #0x56 - lsl r0, r0, #2 - ldrb r1, [r4, #0xb] - ldr r0, [r4, r0] - add sp, #8 - strh r1, [r0, r5] - pop {r3, r4, r5, r6, r7, pc} -_021D8498: - add r2, r2, #1 - add r5, #8 - cmp r2, r1 - blo _021D8468 -_021D84A0: - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - thumb_func_end ov101_021D8358 - - thumb_func_start ov101_021D84A4 -ov101_021D84A4: ; 0x021D84A4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x70 - add r5, r0, #0 - ldrb r0, [r5, #0xb] - add r4, r1, #0 - ldr r1, [sp, #0x98] - add r6, r2, #0 - add r7, r3, #0 - cmp r1, r0 - bne _021D84BE - mov r0, #0 - mvn r0, r0 - str r0, [sp, #0x98] -_021D84BE: - ldr r0, [sp, #0x98] - mov r1, #0x4f - str r0, [sp] - mov r0, #0 - mvn r0, r0 - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [sp, #0x88] - lsl r1, r1, #2 - str r0, [sp, #0xc] - ldr r0, [sp, #0x9c] - ldr r2, [sp, #0x90] - str r0, [sp, #0x10] - ldr r0, [r5, r1] - ldr r3, [sp, #0x94] - str r0, [sp, #0x14] - add r0, r1, #4 - ldr r0, [r5, r0] - str r0, [sp, #0x18] - add r0, r1, #0 - add r0, #8 - ldr r0, [r5, r0] - add r1, #0xc - str r0, [sp, #0x1c] - ldr r0, [r5, r1] - ldr r1, [sp, #0x8c] - str r0, [sp, #0x20] - mov r0, #0 - str r0, [sp, #0x24] - str r0, [sp, #0x28] - add r0, sp, #0x4c - bl sub_020093B4 - ldr r0, [sp, #0x88] - cmp r0, #1 - bne _021D850E - ldr r0, [sp, #0x4c] - str r0, [r4, #8] - mov r0, #1 - b _021D8510 -_021D850E: - mov r0, #0 -_021D8510: - str r0, [r4, #0] - ldr r0, [r5, #0xc] - add r2, sp, #0x34 - str r0, [sp, #0x2c] - add r0, sp, #0x4c - str r0, [sp, #0x30] - ldmia r6!, {r0, r1} - stmia r2!, {r0, r1} - ldr r0, [r6, #0] - str r0, [r2, #0] - ldr r0, [sp, #0xa0] - str r7, [sp, #0x44] - str r0, [sp, #0x40] - ldr r0, [r5, #0] - str r0, [sp, #0x48] - add r0, sp, #0x2c - bl sub_02021B90 - str r0, [r4, #4] - cmp r0, #0 - bne _021D853E - bl GF_AssertFail -_021D853E: - add sp, #0x70 - pop {r3, r4, r5, r6, r7, pc} - ; .align 2, 0 - thumb_func_end ov101_021D84A4 - - thumb_func_start ov101_021D8544 -ov101_021D8544: ; 0x021D8544 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #0] - cmp r0, #1 - bne _021D8554 - ldr r0, [r4, #8] - bl sub_0200A5B4 -_021D8554: - ldr r0, [r4, #4] - bl sub_02021BD4 - mov r0, #0 - str r0, [r4, #4] - pop {r4, pc} - thumb_func_end ov101_021D8544 - - thumb_func_start ov101_021D8560 -ov101_021D8560: ; 0x021D8560 - push {r4, lr} - add r4, r1, #0 - bl sub_02021D28 - add r2, r0, #0 - ldmia r2!, {r0, r1} - stmia r4!, {r0, r1} - ldr r0, [r2, #0] - str r0, [r4, #0] - pop {r4, pc} - thumb_func_end ov101_021D8560 - - thumb_func_start ov101_021D8574 -ov101_021D8574: ; 0x021D8574 - push {r4, lr} - add r4, r1, #0 - bl sub_02021D2C - add r2, r0, #0 - ldmia r2!, {r0, r1} - stmia r4!, {r0, r1} - ldr r0, [r2, #0] - str r0, [r4, #0] - pop {r4, pc} - thumb_func_end ov101_021D8574 \ No newline at end of file diff --git a/asm/overlay101/ov101_021D94D8.s b/asm/overlay101/ov101_021D94D8.s deleted file mode 100644 index 77a3440076..0000000000 --- a/asm/overlay101/ov101_021D94D8.s +++ /dev/null @@ -1,67 +0,0 @@ - .include "macros/function.inc" - - - - .rodata - - - .global Unk_ov101_021D94D8 -Unk_ov101_021D94D8: ; 0x021D94D8 - .incbin "incbin/overlay101_rodata.bin", 0xF50, 0xF68 - 0xF50 - - .global Unk_ov101_021D94F0 -Unk_ov101_021D94F0: ; 0x021D94F0 - .incbin "incbin/overlay101_rodata.bin", 0xF68, 0xF80 - 0xF68 - - .global Unk_ov101_021D9508 -Unk_ov101_021D9508: ; 0x021D9508 - .incbin "incbin/overlay101_rodata.bin", 0xF80, 0xF98 - 0xF80 - - .global Unk_ov101_021D9520 -Unk_ov101_021D9520: ; 0x021D9520 - .incbin "incbin/overlay101_rodata.bin", 0xF98, 0xFB0 - 0xF98 - - .global Unk_ov101_021D9538 -Unk_ov101_021D9538: ; 0x021D9538 - .incbin "incbin/overlay101_rodata.bin", 0xFB0, 0xFC8 - 0xFB0 - - .global Unk_ov101_021D9550 -Unk_ov101_021D9550: ; 0x021D9550 - .incbin "incbin/overlay101_rodata.bin", 0xFC8, 0xFE0 - 0xFC8 - - .global Unk_ov101_021D9568 -Unk_ov101_021D9568: ; 0x021D9568 - .incbin "incbin/overlay101_rodata.bin", 0xFE0, 0xFF8 - 0xFE0 - - .global Unk_ov101_021D9580 -Unk_ov101_021D9580: ; 0x021D9580 - .incbin "incbin/overlay101_rodata.bin", 0xFF8, 0x1010 - 0xFF8 - - .global Unk_ov101_021D9598 -Unk_ov101_021D9598: ; 0x021D9598 - .incbin "incbin/overlay101_rodata.bin", 0x1010, 0x1040 - 0x1010 - - .global Unk_ov101_021D95C8 -Unk_ov101_021D95C8: ; 0x021D95C8 - .incbin "incbin/overlay101_rodata.bin", 0x1040, 0x10A0 - 0x1040 - - .global Unk_ov101_021D9628 -Unk_ov101_021D9628: ; 0x021D9628 - .incbin "incbin/overlay101_rodata.bin", 0x10A0, 0x1100 - 0x10A0 - - .global Unk_ov101_021D9688 -Unk_ov101_021D9688: ; 0x021D9688 - .incbin "incbin/overlay101_rodata.bin", 0x1100, 0x11FC - 0x1100 - - .global Unk_ov101_021D9784 -Unk_ov101_021D9784: ; 0x021D9784 - .incbin "incbin/overlay101_rodata.bin", 0x11FC, 0x13AC - 0x11FC - - .global Unk_ov101_021D9934 -Unk_ov101_021D9934: ; 0x021D9934 - .incbin "incbin/overlay101_rodata.bin", 0x13AC, 0x155C - 0x13AC - - .global Unk_ov101_021D9AE4 -Unk_ov101_021D9AE4: ; 0x021D9AE4 - .incbin "incbin/overlay101_rodata.bin", 0x155C, 0x360 - diff --git a/asm/overlay102/ov102_021D0D80.inc b/asm/overlay102/ov102_021D0D80.inc deleted file mode 100644 index 95e60ebf46..0000000000 --- a/asm/overlay102/ov102_021D0D80.inc +++ /dev/null @@ -1,57 +0,0 @@ -.public sub_02002E7C -.public sub_0200681C -.public sub_0200682C -.public sub_02006830 -.public sub_02006840 -.public sub_02006E3C -.public sub_02006E60 -.public sub_02006E84 -.public sub_0200B144 -.public sub_0200B190 -.public sub_0200B1B8 -.public sub_0200B358 -.public sub_0200B3F0 -.public sub_0200B498 -.public sub_0200C388 -.public sub_0200F174 -.public sub_0200F2AC -.public sub_0200F344 -.public sub_02017798 -.public sub_020177BC -.public sub_02017DD4 -.public sub_02017FC8 -.public sub_0201807C -.public sub_020181C4 -.public sub_02018340 -.public sub_02018368 -.public sub_020183C4 -.public sub_02019044 -.public sub_02019120 -.public sub_02019184 -.public sub_02019448 -.public sub_02019690 -.public sub_02019E2C -.public sub_02019EBC -.public sub_0201A8D4 -.public sub_0201A8FC -.public sub_0201AE78 -.public sub_0201C2B8 -.public sub_0201D710 -.public sub_0201D78C -.public sub_0201FE94 -.public sub_0201FF00 -.public sub_0201FF68 -.public sub_0201FFD0 -.public sub_02023790 -.public sub_020237BC -.public sub_02025E38 -.public memset -.public ov102_021D0F80 -.public ov102_021D0F8C -.public ov102_021D10F8 -.public ov102_021D1174 -.public ov102_021D1204 -.public ov102_021D1224 -.public ov102_021D1230 -.public ov102_021D1274 -.public ov102_021D1420 diff --git a/asm/overlay102/ov102_021D0D80.s b/asm/overlay102/ov102_021D0D80.s deleted file mode 100644 index 8daf1c078c..0000000000 --- a/asm/overlay102/ov102_021D0D80.s +++ /dev/null @@ -1,936 +0,0 @@ - .include "macros/function.inc" - .include "overlay102/ov102_021D0D80.inc" - - - - .text - - - thumb_func_start ov102_021D0D80 -ov102_021D0D80: ; 0x021D0D80 - push {r3, r4, r5, lr} - mov r2, #2 - add r5, r0, #0 - mov r0, #3 - mov r1, #0x54 - lsl r2, r2, #0x10 - bl sub_02017FC8 - add r0, r5, #0 - mov r1, #0x44 - mov r2, #0x54 - bl sub_0200681C - mov r1, #0 - mov r2, #0x44 - add r4, r0, #0 - bl memset - mov r0, #0x54 - str r0, [r4, #0] - add r0, r5, #0 - bl sub_02006840 - ldr r1, [r0, #0] - str r1, [r4, #8] - ldr r0, [r0, #4] - str r0, [r4, #4] - ldr r0, [r4, #8] - bl sub_02025E38 - str r0, [r4, #0xc] - mov r0, #0 - add r1, r0, #0 - bl sub_0200F344 - mov r0, #1 - mov r1, #0 - bl sub_0200F344 - mov r0, #0 - add r1, r0, #0 - bl sub_02017798 - mov r0, #0 - add r1, r0, #0 - bl sub_020177BC - bl sub_0201FF00 - bl sub_0201FF68 - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2, #0] - ldr r0, _021D0E20 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2, #0] - ldr r2, _021D0E24 ; =0x04001000 - ldr r1, [r2, #0] - and r0, r1 - str r0, [r2, #0] - mov r0, #4 - mov r1, #8 - bl sub_02017DD4 - add r0, r4, #0 - bl ov102_021D0F8C - add r0, r4, #0 - bl ov102_021D1174 - ldr r0, _021D0E28 ; =ov102_021D0F80 - add r1, r4, #0 - bl sub_02017798 - bl sub_0201FFD0 - mov r0, #1 - pop {r3, r4, r5, pc} - nop -_021D0E20: .word 0xFFFFE0FF -_021D0E24: .word 0x04001000 -_021D0E28: .word ov102_021D0F80 - thumb_func_end ov102_021D0D80 - - thumb_func_start ov102_021D0E2C -ov102_021D0E2C: ; 0x021D0E2C - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r5, r1, #0 - bl sub_0200682C - ldr r1, [r5, #0] - add r4, r0, #0 - mov r6, #0 - cmp r1, #5 - bhi _021D0F40 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_021D0E4C: ; jump table - .short _021D0E58 - _021D0E4C - 2 ; case 0 - .short _021D0EB4 - _021D0E4C - 2 ; case 1 - .short _021D0EC6 - _021D0E4C - 2 ; case 2 - .short _021D0ED8 - _021D0E4C - 2 ; case 3 - .short _021D0EFC - _021D0E4C - 2 ; case 4 - .short _021D0F36 - _021D0E4C - 2 ; case 5 -_021D0E58: - bl ov102_021D1224 - add r0, r4, #0 - bl ov102_021D1274 - add r0, r4, #0 - bl ov102_021D1420 - add r0, r6, #0 - mov r1, #1 - bl sub_02019120 - mov r0, #1 - add r1, r0, #0 - bl sub_02019120 - mov r0, #3 - mov r1, #1 - bl sub_02019120 - mov r0, #4 - mov r1, #1 - bl sub_02019120 - mov r0, #5 - mov r1, #1 - bl sub_02019120 - mov r0, #7 - mov r1, #1 - bl sub_02019120 - mov r0, #6 - mov r1, #1 - str r0, [sp] - str r1, [sp, #4] - ldr r0, [r4, #0] - add r2, r1, #0 - str r0, [sp, #8] - add r0, r6, #0 - add r3, r0, #0 - bl sub_0200F174 - mov r0, #1 - str r0, [r5, #0] - b _021D0F40 -_021D0EB4: - bl sub_0200F2AC - cmp r0, #1 - bne _021D0F40 - add r0, r6, #0 - str r0, [r4, #0x40] - mov r0, #2 - str r0, [r5, #0] - b _021D0F40 -_021D0EC6: - ldr r0, [r4, #0x40] - cmp r0, #0x3c - bge _021D0ED2 - add r0, r0, #1 - str r0, [r4, #0x40] - b _021D0F40 -_021D0ED2: - mov r0, #3 - str r0, [r5, #0] - b _021D0F40 -_021D0ED8: - mov r2, #0x3c - ldrsh r3, [r4, r2] - add r1, r2, #0 - sub r1, #0xfc - cmp r3, r1 - ble _021D0EEE - sub r1, r3, #4 - strh r1, [r4, #0x3c] - bl ov102_021D1230 - b _021D0F40 -_021D0EEE: - sub r2, #0xfc - strh r2, [r4, #0x3c] - bl ov102_021D1230 - mov r0, #4 - str r0, [r5, #0] - b _021D0F40 -_021D0EFC: - ldr r0, _021D0F48 ; =0x021BF67C - ldr r1, [r0, #0x48] - mov r0, #1 - and r0, r1 - cmp r0, #1 - beq _021D0F18 - mov r0, #2 - and r0, r1 - cmp r0, #2 - beq _021D0F18 - ldr r0, _021D0F4C ; =0x021BF6BC - ldrh r0, [r0, #0x20] - cmp r0, #0 - beq _021D0F40 -_021D0F18: - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4, #0] - str r0, [sp, #8] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl sub_0200F174 - mov r0, #5 - str r0, [r5, #0] - b _021D0F40 -_021D0F36: - bl sub_0200F2AC - cmp r0, #1 - bne _021D0F40 - mov r6, #1 -_021D0F40: - add r0, r6, #0 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021D0F48: .word 0x021BF67C -_021D0F4C: .word 0x021BF6BC - thumb_func_end ov102_021D0E2C - - thumb_func_start ov102_021D0F50 -ov102_021D0F50: ; 0x021D0F50 - push {r4, r5, r6, lr} - add r5, r0, #0 - bl sub_0200682C - add r6, r0, #0 - ldr r4, [r6, #0] - bl ov102_021D1204 - add r0, r6, #0 - bl ov102_021D10F8 - mov r0, #0 - add r1, r0, #0 - bl sub_02017798 - add r0, r5, #0 - bl sub_02006830 - add r0, r4, #0 - bl sub_0201807C - mov r0, #1 - pop {r4, r5, r6, pc} - ; .align 2, 0 - thumb_func_end ov102_021D0F50 - - thumb_func_start ov102_021D0F80 -ov102_021D0F80: ; 0x021D0F80 - ldr r3, _021D0F88 ; =sub_0201C2B8 - ldr r0, [r0, #0x10] - bx r3 - nop -_021D0F88: .word sub_0201C2B8 - thumb_func_end ov102_021D0F80 - - thumb_func_start ov102_021D0F8C -ov102_021D0F8C: ; 0x021D0F8C - push {r4, r5, lr} - sub sp, #0x54 - ldr r5, _021D10EC ; =0x021D155C - add r4, r0, #0 - add r3, sp, #0x2c - mov r2, #5 -_021D0F98: - ldmia r5!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021D0F98 - add r0, sp, #0x2c - bl sub_0201FE94 - ldr r0, [r4, #0] - bl sub_02018340 - add r3, sp, #0x1c - ldr r5, _021D10F0 ; =0x021D1530 - str r0, [r4, #0x10] - 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, _021D10F4 ; =0x021D1540 - 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, #0 - str r0, [r3, #0] - add r0, sp, #0 - strb r1, [r0, #0x12] - mov r3, #4 - strb r3, [r0, #0x13] - lsl r3, r3, #0xa - str r3, [sp, #8] - mov r3, #2 - strb r3, [r0, #0x10] - ldr r0, [r4, #0x10] - add r3, r1, #0 - bl sub_020183C4 - ldr r0, [r4, #0x10] - mov r1, #0 - bl sub_02019EBC - mov r2, #2 - add r0, sp, #0 - strb r2, [r0, #0x12] - strb r2, [r0, #0x13] - lsl r1, r2, #0xb - str r1, [sp, #8] - strb r2, [r0, #0x10] - ldr r0, [r4, #0x10] - mov r1, #1 - add r2, sp, #0 - mov r3, #0 - bl sub_020183C4 - ldr r0, [r4, #0x10] - mov r1, #1 - bl sub_02019EBC - mov r1, #4 - add r0, sp, #0 - strb r1, [r0, #0x12] - mov r2, #1 - strb r2, [r0, #0x13] - lsl r1, r2, #0xb - str r1, [sp, #8] - strb r2, [r0, #0x10] - ldr r0, [r4, #0x10] - mov r1, #3 - add r2, sp, #0 - mov r3, #0 - bl sub_020183C4 - ldr r0, [r4, #0x10] - mov r1, #3 - bl sub_02019EBC - mov r1, #4 - mov r3, #0 - add r0, sp, #0 - strb r3, [r0, #0x12] - strb r1, [r0, #0x13] - lsl r2, r1, #0xa - str r2, [sp, #8] - mov r2, #2 - strb r2, [r0, #0x10] - ldr r0, [r4, #0x10] - add r2, sp, #0 - bl sub_020183C4 - ldr r0, [r4, #0x10] - mov r1, #4 - bl sub_02019EBC - mov r2, #2 - add r0, sp, #0 - strb r2, [r0, #0x12] - strb r2, [r0, #0x13] - lsl r1, r2, #0xb - str r1, [sp, #8] - strb r2, [r0, #0x10] - ldr r0, [r4, #0x10] - mov r1, #5 - add r2, sp, #0 - mov r3, #0 - bl sub_020183C4 - ldr r0, [r4, #0x10] - mov r1, #5 - bl sub_02019EBC - mov r1, #4 - add r0, sp, #0 - strb r1, [r0, #0x12] - mov r2, #1 - strb r2, [r0, #0x13] - lsl r1, r2, #0xb - str r1, [sp, #8] - strb r2, [r0, #0x10] - ldr r0, [r4, #0x10] - mov r1, #7 - add r2, sp, #0 - mov r3, #0 - bl sub_020183C4 - ldr r0, [r4, #0x10] - mov r1, #7 - bl sub_02019EBC - mov r0, #0 - add r1, r0, #0 - bl sub_02019120 - mov r0, #1 - mov r1, #0 - bl sub_02019120 - mov r0, #2 - mov r1, #0 - bl sub_02019120 - mov r0, #3 - mov r1, #0 - bl sub_02019120 - mov r0, #4 - mov r1, #0 - bl sub_02019120 - mov r0, #5 - mov r1, #0 - bl sub_02019120 - mov r0, #6 - mov r1, #0 - bl sub_02019120 - mov r0, #7 - mov r1, #0 - bl sub_02019120 - add sp, #0x54 - pop {r4, r5, pc} - ; .align 2, 0 -_021D10EC: .word 0x021D155C -_021D10F0: .word 0x021D1530 -_021D10F4: .word 0x021D1540 - thumb_func_end ov102_021D0F8C - - thumb_func_start ov102_021D10F8 -ov102_021D10F8: ; 0x021D10F8 - push {r4, lr} - add r4, r0, #0 - mov r0, #0 - add r1, r0, #0 - bl sub_02019120 - mov r0, #1 - mov r1, #0 - bl sub_02019120 - mov r0, #2 - mov r1, #0 - bl sub_02019120 - mov r0, #3 - mov r1, #0 - bl sub_02019120 - mov r0, #4 - mov r1, #0 - bl sub_02019120 - mov r0, #5 - mov r1, #0 - bl sub_02019120 - mov r0, #6 - mov r1, #0 - bl sub_02019120 - mov r0, #7 - mov r1, #0 - bl sub_02019120 - ldr r0, [r4, #0x10] - mov r1, #0 - bl sub_02019044 - ldr r0, [r4, #0x10] - mov r1, #1 - bl sub_02019044 - ldr r0, [r4, #0x10] - mov r1, #3 - bl sub_02019044 - ldr r0, [r4, #0x10] - mov r1, #4 - bl sub_02019044 - ldr r0, [r4, #0x10] - mov r1, #5 - bl sub_02019044 - ldr r0, [r4, #0x10] - mov r1, #7 - bl sub_02019044 - ldr r0, [r4, #0x10] - bl sub_020181C4 - pop {r4, pc} - thumb_func_end ov102_021D10F8 - - thumb_func_start ov102_021D1174 -ov102_021D1174: ; 0x021D1174 - push {r4, lr} - sub sp, #0x10 - ldr r1, _021D1200 ; =0x021D1528 - add r4, r0, #0 - ldrh r2, [r1] - add r0, sp, #8 - strh r2, [r0] - ldrh r2, [r1, #2] - strh r2, [r0, #2] - ldrh r2, [r1, #4] - ldrh r1, [r1, #6] - strh r2, [r0, #4] - strh r1, [r0, #6] - bl sub_0201D710 - mov r0, #1 - ldr r3, [r4, #0] - mov r1, #0x1a - add r2, r0, #0 - bl sub_0200B144 - str r0, [r4, #0x34] - ldr r0, [r4, #0] - bl sub_0200B358 - str r0, [r4, #0x38] - mov r1, #0 - add r0, sp, #8 - strb r1, [r0] - add r1, r4, #0 - ldr r0, [r4, #0x10] - add r1, #0x14 - add r2, sp, #8 - bl sub_0201A8D4 - mov r1, #0 - mov r0, #1 - lsl r0, r0, #8 - str r0, [sp] - mov r0, #0xc0 - str r0, [sp, #4] - add r0, r4, #0 - add r0, #0x14 - add r2, r1, #0 - add r3, r1, #0 - bl sub_0201AE78 - mov r1, #4 - add r0, sp, #8 - strb r1, [r0] - add r1, r4, #0 - ldr r0, [r4, #0x10] - add r1, #0x24 - add r2, sp, #8 - bl sub_0201A8D4 - mov r1, #0 - mov r0, #1 - lsl r0, r0, #8 - str r0, [sp] - mov r0, #0xc0 - add r4, #0x24 - str r0, [sp, #4] - add r0, r4, #0 - add r2, r1, #0 - add r3, r1, #0 - bl sub_0201AE78 - add sp, #0x10 - pop {r4, pc} - ; .align 2, 0 -_021D1200: .word 0x021D1528 - thumb_func_end ov102_021D1174 - - thumb_func_start ov102_021D1204 -ov102_021D1204: ; 0x021D1204 - push {r4, lr} - add r4, r0, #0 - add r0, #0x24 - bl sub_0201A8FC - add r0, r4, #0 - add r0, #0x14 - bl sub_0201A8FC - ldr r0, [r4, #0x38] - bl sub_0200B3F0 - ldr r0, [r4, #0x34] - bl sub_0200B190 - pop {r4, pc} - thumb_func_end ov102_021D1204 - - thumb_func_start ov102_021D1224 -ov102_021D1224: ; 0x021D1224 - ldr r3, _021D122C ; =ov102_021D1230 - mov r1, #0 - strh r1, [r0, #0x3c] - bx r3 - ; .align 2, 0 -_021D122C: .word ov102_021D1230 - thumb_func_end ov102_021D1224 - - thumb_func_start ov102_021D1230 -ov102_021D1230: ; 0x021D1230 - push {r4, lr} - add r4, r0, #0 - mov r3, #0x3c - ldrsh r3, [r4, r3] - ldr r0, [r4, #0x10] - mov r1, #1 - mov r2, #3 - bl sub_02019184 - mov r3, #0x3c - ldrsh r3, [r4, r3] - ldr r0, [r4, #0x10] - mov r1, #5 - mov r2, #3 - add r3, #0xc0 - bl sub_02019184 - mov r3, #0x3c - ldrsh r3, [r4, r3] - ldr r0, [r4, #0x10] - mov r1, #0 - mov r2, #3 - bl sub_02019184 - mov r3, #0x3c - ldrsh r3, [r4, r3] - ldr r0, [r4, #0x10] - mov r1, #4 - mov r2, #3 - add r3, #0xc0 - bl sub_02019184 - pop {r4, pc} - ; .align 2, 0 - thumb_func_end ov102_021D1230 - - thumb_func_start ov102_021D1274 -ov102_021D1274: ; 0x021D1274 - push {r4, r5, r6, r7, lr} - sub sp, #0x1c - add r5, r0, #0 - ldr r0, [r5, #4] - cmp r0, #0 - bne _021D1294 - mov r0, #2 - str r0, [sp, #0x18] - mov r0, #6 - str r0, [sp, #0x14] - mov r0, #8 - mov r7, #0xa - str r0, [sp, #0x10] - mov r6, #0 - mov r4, #4 - b _021D12A6 -_021D1294: - mov r0, #3 - str r0, [sp, #0x18] - mov r0, #7 - str r0, [sp, #0x14] - mov r0, #9 - mov r7, #0xb - str r0, [sp, #0x10] - mov r6, #1 - mov r4, #5 -_021D12A6: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0] - add r1, r7, #0 - str r0, [sp, #0xc] - ldr r2, [r5, #0x10] - mov r0, #0x84 - mov r3, #3 - bl sub_02006E60 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0] - ldr r1, [sp, #0x18] - str r0, [sp, #0xc] - ldr r2, [r5, #0x10] - mov r0, #0x84 - mov r3, #3 - bl sub_02006E3C - mov r0, #0x20 - str r0, [sp] - ldr r0, [r5, #0] - mov r2, #0 - str r0, [sp, #4] - ldr r1, [sp, #0x14] - mov r0, #0x84 - add r3, r2, #0 - bl sub_02006E84 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0] - add r1, r7, #0 - str r0, [sp, #0xc] - ldr r2, [r5, #0x10] - mov r0, #0x84 - mov r3, #7 - bl sub_02006E60 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0] - ldr r1, [sp, #0x18] - str r0, [sp, #0xc] - ldr r2, [r5, #0x10] - mov r0, #0x84 - mov r3, #7 - bl sub_02006E3C - mov r0, #0x20 - str r0, [sp] - ldr r0, [r5, #0] - ldr r1, [sp, #0x14] - str r0, [sp, #4] - mov r0, #0x84 - mov r2, #4 - mov r3, #0 - bl sub_02006E84 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0] - ldr r1, [sp, #0x10] - str r0, [sp, #0xc] - ldr r2, [r5, #0x10] - mov r0, #0x84 - mov r3, #1 - bl sub_02006E60 - mov r0, #0x20 - str r0, [sp] - mov r0, #0x18 - str r0, [sp, #4] - mov r1, #1 - str r1, [sp, #8] - mov r2, #0 - ldr r0, [r5, #0x10] - add r3, r2, #0 - bl sub_02019E2C - ldr r0, [r5, #0x10] - mov r1, #1 - bl sub_02019448 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0] - add r1, r6, #0 - str r0, [sp, #0xc] - ldr r2, [r5, #0x10] - mov r0, #0x84 - mov r3, #1 - bl sub_02006E3C - mov r3, #0x20 - str r3, [sp] - ldr r0, [r5, #0] - add r1, r4, #0 - str r0, [sp, #4] - mov r0, #0x84 - mov r2, #0 - bl sub_02006E84 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0] - ldr r1, [sp, #0x10] - str r0, [sp, #0xc] - ldr r2, [r5, #0x10] - mov r0, #0x84 - mov r3, #5 - bl sub_02006E60 - mov r0, #0x20 - str r0, [sp] - mov r0, #0x18 - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r2, #0 - ldr r0, [r5, #0x10] - mov r1, #5 - add r3, r2, #0 - bl sub_02019E2C - ldr r0, [r5, #0x10] - mov r1, #5 - bl sub_02019448 - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [r5, #0] - add r1, r6, #0 - str r0, [sp, #0xc] - ldr r2, [r5, #0x10] - mov r0, #0x84 - mov r3, #5 - bl sub_02006E3C - mov r3, #0x20 - str r3, [sp] - ldr r0, [r5, #0] - add r1, r4, #0 - str r0, [sp, #4] - mov r0, #0x84 - mov r2, #4 - bl sub_02006E84 - mov r0, #0 - ldr r3, [r5, #0] - mov r1, #0x20 - add r2, r0, #0 - bl sub_02019690 - ldr r3, [r5, #0] - mov r0, #4 - mov r1, #0x20 - mov r2, #0 - bl sub_02019690 - ldr r2, [r5, #0] - mov r0, #0 - mov r1, #0x40 - bl sub_02002E7C - ldr r2, [r5, #0] - mov r0, #4 - mov r1, #0x40 - bl sub_02002E7C - add sp, #0x1c - pop {r4, r5, r6, r7, pc} - thumb_func_end ov102_021D1274 - - thumb_func_start ov102_021D1420 -ov102_021D1420: ; 0x021D1420 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r0, #0 - mov r0, #2 - ldr r1, [r5, #0] - lsl r0, r0, #8 - bl sub_02023790 - add r4, r0, #0 - mov r0, #2 - ldr r1, [r5, #0] - lsl r0, r0, #8 - bl sub_02023790 - add r6, r0, #0 - ldr r0, [r5, #0x34] - mov r1, #0 - add r2, r6, #0 - bl sub_0200B1B8 - ldr r0, [r5, #0x38] - ldr r2, [r5, #0xc] - mov r1, #0 - bl sub_0200B498 - ldr r0, [r5, #0x38] - add r1, r4, #0 - add r2, r6, #0 - bl sub_0200C388 - mov r0, #0x20 - str r0, [sp] - mov r1, #0 - ldr r0, _021D1524 ; =0x00010200 - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x14 - add r2, r4, #0 - mov r3, #0x30 - str r1, [sp, #0xc] - bl sub_0201D78C - mov r0, #0x20 - str r0, [sp] - mov r1, #0 - ldr r0, _021D1524 ; =0x00010200 - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x24 - add r2, r4, #0 - mov r3, #0x30 - str r1, [sp, #0xc] - bl sub_0201D78C - add r0, r6, #0 - bl sub_020237BC - ldr r0, [r5, #4] - cmp r0, #0 - bne _021D14A0 - mov r1, #1 - b _021D14A2 -_021D14A0: - mov r1, #2 -_021D14A2: - ldr r0, [r5, #0x34] - add r2, r4, #0 - bl sub_0200B1B8 - mov r3, #0x40 - str r3, [sp] - mov r1, #0 - ldr r0, _021D1524 ; =0x00010200 - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x14 - add r2, r4, #0 - str r1, [sp, #0xc] - bl sub_0201D78C - mov r3, #0x40 - str r3, [sp] - mov r1, #0 - ldr r0, _021D1524 ; =0x00010200 - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r5, #0 - str r1, [sp, #0xc] - add r0, #0x24 - add r2, r4, #0 - bl sub_0201D78C - ldr r0, [r5, #0x34] - mov r1, #3 - add r2, r4, #0 - bl sub_0200B1B8 - mov r0, #0x90 - str r0, [sp] - mov r1, #0 - ldr r0, _021D1524 ; =0x00010200 - str r1, [sp, #4] - str r0, [sp, #8] - add r0, r5, #0 - add r0, #0x14 - add r2, r4, #0 - mov r3, #0x8a - str r1, [sp, #0xc] - bl sub_0201D78C - mov r0, #0x90 - str r0, [sp] - mov r1, #0 - ldr r0, _021D1524 ; =0x00010200 - str r1, [sp, #4] - str r0, [sp, #8] - add r5, #0x24 - add r0, r5, #0 - add r2, r4, #0 - mov r3, #0x8a - str r1, [sp, #0xc] - bl sub_0201D78C - add r0, r4, #0 - bl sub_020237BC - add sp, #0x10 - pop {r4, r5, r6, pc} - nop -_021D1524: .word 0x00010200 - thumb_func_end ov102_021D1420 - - .rodata - - - .global Unk_ov102_021D1528 -Unk_ov102_021D1528: ; 0x021D1528 - .incbin "incbin/overlay102_rodata.bin", 0x0, 0x8 - 0x0 - - .global Unk_ov102_021D1530 -Unk_ov102_021D1530: ; 0x021D1530 - .incbin "incbin/overlay102_rodata.bin", 0x8, 0x18 - 0x8 - - .global Unk_ov102_021D1540 -Unk_ov102_021D1540: ; 0x021D1540 - .incbin "incbin/overlay102_rodata.bin", 0x18, 0x34 - 0x18 - - .global Unk_ov102_021D155C -Unk_ov102_021D155C: ; 0x021D155C - .incbin "incbin/overlay102_rodata.bin", 0x34, 0x28 - diff --git a/main.lsf b/main.lsf index 607301d562..871f6f11bd 100644 --- a/main.lsf +++ b/main.lsf @@ -1997,17 +1997,17 @@ Overlay overlay100 Overlay overlay101 { After main - Object asm/overlay101/ov101_021D0D80.o - Object asm/overlay101/ov101_021D1A28.o - Object asm/overlay101/ov101_021D59AC.o - Object asm/overlay101/ov101_021D7E48.o - Object asm/overlay101/ov101_021D94D8.o + Object src/overlay101/ov101_021D0D80.o + Object src/overlay101/ov101_021D1A28.o + Object src/overlay101/ov101_021D59AC.o + Object src/overlay101/ov101_021D7E48.o + Object src/overlay101/ov101_021D94D8.o } Overlay overlay102 { After main - Object asm/overlay102/ov102_021D0D80.o + Object src/overlay102/ov102_021D0D80.o } Overlay overlay103 diff --git a/src/overlay101/ov101_021D0D80.c b/src/overlay101/ov101_021D0D80.c new file mode 100644 index 0000000000..ec4e7401ec --- /dev/null +++ b/src/overlay101/ov101_021D0D80.c @@ -0,0 +1,697 @@ +#include "enums.h" + +#include +#include + +#include "struct_decls/struct_020067E8_decl.h" +#include "struct_decls/struct_02018340_decl.h" +#include "struct_decls/struct_0201CD38_decl.h" + +#include "struct_defs/struct_0203E348.h" +#include "struct_defs/struct_02099F80.h" +#include "overlay022/struct_ov22_022559F8.h" +#include "overlay061/struct_ov61_0222C884.h" +#include "overlay084/struct_ov84_0223BA5C.h" +#include "overlay097/struct_ov97_0222DB78.h" +#include "overlay101/struct_ov101_021D13C8.h" +#include "overlay101/struct_ov101_021D148C.h" +#include "overlay101/struct_ov101_021D1894.h" + +#include "unk_02002B7C.h" +#include "unk_020041CC.h" +#include "unk_02005474.h" +#include "unk_020067E8.h" +#include "unk_020068C8.h" +#include "unk_0200A784.h" +#include "unk_0200AC5C.h" +#include "unk_0200B358.h" +#include "unk_0200D9E8.h" +#include "unk_0200DA60.h" +#include "unk_0200F174.h" +#include "unk_02017728.h" +#include "unk_02017E74.h" +#include "unk_02018340.h" +#include "unk_0201D670.h" +#include "unk_0201DBEC.h" +#include "unk_0201E86C.h" +#include "unk_0201F834.h" +#include "unk_0201FE94.h" +#include "unk_02023790.h" +#include "unk_0202CD50.h" +#include "unk_020711EC.h" +#include "overlay101/ov101_021D0D80.h" +#include "overlay101/ov101_021D1A28.h" +#include "overlay101/ov101_021D59AC.h" +#include "overlay101/ov101_021D7E48.h" + +typedef struct { + UnkStruct_0203E348 * unk_00; + UnkStruct_ov101_021D13C8 * unk_04; +} UnkStruct_ov101_021D0F3C; + +static void ov101_021D0F3C(UnkStruct_ov101_021D0F3C * param0, UnkStruct_ov101_021D13C8 * param1); +static UnkStruct_ov101_021D13C8 * ov101_021D0F6C(UnkStruct_0203E348 * param0); +static void ov101_021D0F94(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D0F9C(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D107C(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D1098(void); +static void ov101_021D10B8(UnkStruct_02018340 * param0); +static void ov101_021D11A4(UnkStruct_02018340 * param0); +static void ov101_021D11D0(void); +static void ov101_021D121C(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D150C(void); +static void ov101_021D1544(void); +static void ov101_021D1550(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D15A4(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D15BC(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D1868(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D186C(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D1884(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D18B4(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D18C0(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D18E4(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D18F4(UnkStruct_0201CD38 * param0, void * param1); +static void ov101_021D197C(void * param0); +static void ov101_021D19BC(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D19D4(UnkStruct_ov101_021D13C8 * param0); +static const UnkStruct_ov61_0222C884 Unk_ov101_021D8588[1]; +static void ov101_021D1458(UnkStruct_ov101_021D13C8 * param0); + +int ov101_021D0D80 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov101_021D0F3C * v0; + UnkStruct_ov101_021D13C8 * v1; + UnkStruct_0203E348 * v2; + + sub_02017798(NULL, NULL); + sub_020177A4(); + sub_0201FF00(); + sub_0201FF68(); + sub_02017FC8(3, 79, 0x80000); + + v0 = sub_0200681C(param0, (sizeof(UnkStruct_ov101_021D0F3C)), 79); + memset(v0, 0, (sizeof(UnkStruct_ov101_021D0F3C))); + v2 = sub_02006840(param0); + v0->unk_00 = v2; + v1 = ov101_021D0F6C(v0->unk_00); + v0->unk_04 = v1; + + ov101_021D19BC(v1); + ov101_021D186C(v1); + ov101_021D0F9C(v1); + ov101_021D121C(v1); + ov101_021D13C8(v1); + ov101_021D150C(); + ov101_021D1550(v1); + ov101_021D1A28(v1); + ov101_021D59AC(v1); + ov101_021D5AF0(v1); + ov101_021D5C28(v1); + sub_02004550(66, 0, 0); + ov101_021D18C0(v1); + sub_0200F174(0, 1, 1, 0x0, 8, 1, 79); + + return 1; +} + +int ov101_021D0E40 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov101_021D0F3C * v0 = sub_0200682C(param0); + UnkStruct_ov101_021D13C8 * v1 = v0->unk_04; + + switch (*param1) { + case 0: + if (sub_0200F2AC()) { + (*param1)++; + } + break; + case 1: + if (ov101_021D1AAC(v1) == 1) { + (*param1)++; + sub_0200F174(2, 0, 0, 0x0, 8, 1, 79); + ov101_021D1894(v1, UnkEnum_ov101_021D1894_00); + } + break; + case 2: + if (sub_0200F2AC() == 0) { + break; + } + (*param1)++; + case 3: + if (ov101_021D18B4(v1) == 0) { + return 1; + } + } + + sub_020713D0(v1->unk_44C); + ov101_021D80D4(v1->unk_450); + + return 0; +} + +int ov101_021D0EE4 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov101_021D0F3C * v0 = sub_0200682C(param0); + UnkStruct_ov101_021D13C8 * v1 = v0->unk_04; + + sub_02017798(NULL, NULL); + + ov101_021D0F3C(v0, v1); + + ov101_021D1884(v1); + ov101_021D107C(v1); + ov101_021D1458(v1); + + ov101_021D1A4C(v1); + ov101_021D18E4(v1); + + ov101_021D19D4(v1); + ov101_021D0F94(v1); + + sub_02006830(param0); + sub_0201807C(79); + + return 1; +} + +static void ov101_021D0F3C (UnkStruct_ov101_021D0F3C * param0, UnkStruct_ov101_021D13C8 * param1) +{ + u32 v0 = param1->unk_60; + + if (v0 > 50000) { + v0 = 50000; + } + + (*param0->unk_00->unk_00) = v0; + param0->unk_00->unk_0C = param1->unk_20; + + if (param0->unk_00->unk_08 != NULL) { + sub_0202CF70(param0->unk_00->unk_08, (1 + 13), param1->unk_0C); + } +} + +static UnkStruct_ov101_021D13C8 * ov101_021D0F6C (UnkStruct_0203E348 * param0) +{ + UnkStruct_ov101_021D13C8 * v0 = ov101_021D1998((sizeof(UnkStruct_ov101_021D13C8))); + + v0->unk_60 = *(param0->unk_00); + v0->unk_88 = param0->unk_04; + v0->unk_4C4 = param0->unk_10; + + return v0; +} + +static void ov101_021D0F94 (UnkStruct_ov101_021D13C8 * param0) +{ + sub_020181C4(param0); +} + +static void ov101_021D0F9C (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_43C = sub_02018340(79); + + ov101_021D1098(); + ov101_021D10B8(param0->unk_43C); + ov101_021D11D0(); + + sub_0201FF0C(GX_PLANEMASK_BG0, 1); + sub_0201FF0C(GX_PLANEMASK_BG1, 1); + sub_0201FF0C(GX_PLANEMASK_BG2, 1); + sub_0201FF0C(GX_PLANEMASK_BG3, 0); + sub_0201FF0C(GX_PLANEMASK_OBJ, 1); + sub_0201FF74(GX_PLANEMASK_BG0, 0); + sub_0201FF74(GX_PLANEMASK_BG1, 0); + sub_0201FF74(GX_PLANEMASK_BG2, 0); + sub_0201FF74(GX_PLANEMASK_BG3, 1); + sub_0201FF74(GX_PLANEMASK_OBJ, 1); + + G2_SetBG0Priority(0); + G2_SetBG1Priority(1); + G2_SetBG2Priority(2); + G2_SetBG3Priority(3); + G2S_SetBG0Priority(0); + G2S_SetBG1Priority(1); + G2S_SetBG2Priority(2); + G2S_SetBG3Priority(3); + G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG2, GX_BLEND_PLANEMASK_OBJ, 8, 9); + + sub_02017798(ov101_021D197C, param0); +} + +static void ov101_021D107C (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D11A4(param0->unk_43C); + ov101_021D15A4(param0); + ov101_021D1544(); +} + +static void ov101_021D1098 (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 ov101_021D10B8 (UnkStruct_02018340 * param0) +{ + GX_SetDispSelect(GX_DISP_SELECT_MAIN_SUB); + + { + 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, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x0000, + GX_BG_CHARBASE_0x04000, + GX_BG_EXTPLTT_01, + 0, + 0, + 0, + 0 + }; + + sub_020183C4(param0, 0, &v1, 0); + sub_02019EBC(param0, 0); + sub_02019690(0, 32, 0, 79); + } + + { + UnkStruct_ov97_0222DB78 v2 = { + 0, + 0, + 0x800, + 0, + 1, + GX_BG_COLORMODE_16, + GX_BG_SCRBASE_0x0800, + GX_BG_CHARBASE_0x0c000, + GX_BG_EXTPLTT_01, + 1, + 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_0x1000, + GX_BG_CHARBASE_0x14000, + GX_BG_EXTPLTT_01, + 2, + 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_0x1800, + GX_BG_CHARBASE_0x20000, + GX_BG_EXTPLTT_01, + 3, + 0, + 0, + 0 + }; + + sub_020183C4(param0, 7, &v4, 0); + sub_02019EBC(param0, 7); + } +} + +static void ov101_021D11A4 (UnkStruct_02018340 * param0) +{ + sub_02019044(param0, 0); + sub_02019044(param0, 1); + sub_02019044(param0, 2); + sub_02019044(param0, 7); + sub_020181C4(param0); +} + +static void ov101_021D11D0 (void) +{ + GX_SetVisibleWnd(GX_WNDMASK_W0); + G2_SetWnd0InsidePlane(GX_WND_PLANEMASK_BG0 | GX_WND_PLANEMASK_BG1 | GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_BG3 | 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, 255); +} + +static void ov101_021D121C (UnkStruct_ov101_021D13C8 * param0) +{ + void * v0 = ov101_021D19E4(param0, 3, 0); + + NNS_G2dGetUnpackedPaletteData(v0, ¶m0->unk_448); + sub_0201972C(1, param0->unk_448->pRawData, (32 * 13), (32 * 0)); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 0, 0); + NNS_G2dGetUnpackedCharacterData(v0, ¶m0->unk_444); + sub_0201958C(param0->unk_43C, 1, param0->unk_444->pRawData, param0->unk_444->szByte, (32 * 0)); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 1, 0); + NNS_G2dGetUnpackedScreenData(v0, ¶m0->unk_440); + sub_02019574(param0->unk_43C, 1, (void *)param0->unk_440->rawData, param0->unk_440->szByte); + sub_02019448(param0->unk_43C, 1); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 8, 0); + NNS_G2dGetUnpackedCharacterData(v0, ¶m0->unk_444); + sub_0201958C(param0->unk_43C, 2, param0->unk_444->pRawData, param0->unk_444->szByte, (32 * 0)); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 9, 0); + NNS_G2dGetUnpackedScreenData(v0, ¶m0->unk_440); + sub_02019574(param0->unk_43C, 2, (void *)param0->unk_440->rawData, param0->unk_440->szByte); + sub_02019448(param0->unk_43C, 2); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 3, 0); + NNS_G2dGetUnpackedPaletteData(v0, ¶m0->unk_448); + sub_0201972C(7, param0->unk_448->pRawData, (32 * 13), (32 * 0)); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 2, 0); + NNS_G2dGetUnpackedCharacterData(v0, ¶m0->unk_444); + sub_0201958C(param0->unk_43C, 7, param0->unk_444->pRawData, param0->unk_444->szByte, 0); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 4, 0); + NNS_G2dGetUnpackedScreenData(v0, ¶m0->unk_440); + sub_02019574(param0->unk_43C, 7, (void *)param0->unk_440->rawData, param0->unk_440->szByte); + sub_02019448(param0->unk_43C, 7); + sub_020181C4(v0); +} + +void ov101_021D13C8 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0; + UnkStruct_ov101_021D148C * v1 = ¶m0->unk_408; + + sub_0200DAA4(param0->unk_43C, 0, 1, 15, 0, 79); + sub_0200DD0C(param0->unk_43C, 0, (1 + (18 + 12)), 14, param0->unk_4C4, 79); + sub_02002E98(0, 15 * 32, 79); + + v1->unk_00 = sub_0200B144(0, 26, 544, 79); + v1->unk_04 = sub_0200B358(79); + + for (v0 = 0; v0 < 1; v0++) { + sub_0201A8D4(param0->unk_43C, &v1->unk_08[v0], &Unk_ov101_021D8588[v0]); + } + + v1->unk_18 = sub_02023790(256, 79); +} + +void ov101_021D1458 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0; + UnkStruct_ov101_021D148C * v1 = ¶m0->unk_408; + + for (v0 = 0; v0 < 1; v0++) { + sub_0201ACF4(&v1->unk_08[v0]); + sub_0201A8FC(&v1->unk_08[v0]); + } + + sub_0200B190(v1->unk_00); + sub_0200B3F0(v1->unk_04); + sub_020237BC(v1->unk_18); +} + +void ov101_021D148C (UnkStruct_ov101_021D13C8 * param0, u32 param1) +{ + UnkStruct_ov101_021D148C * v0 = ¶m0->unk_408; + + sub_0200E060(&v0->unk_08[0], 1, (1 + (18 + 12)), 14); + sub_0201ADA4(&v0->unk_08[0], 15); + sub_0200B1B8(v0->unk_00, param1, v0->unk_18); + sub_0201D738(&v0->unk_08[0], 1, v0->unk_18, 0, 0, 0xff, NULL); + sub_0201A9A4(&v0->unk_08[0]); +} + +void ov101_021D14E4 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D148C * v0 = ¶m0->unk_408; + + sub_0200E084(&v0->unk_08[0], 1); + sub_0201ADA4(&v0->unk_08[0], 0); + sub_0201A9A4(&v0->unk_08[0]); +} + +static void ov101_021D150C (void) +{ + UnkStruct_ov22_022559F8 v0 = { + 32, 0x4000, 0x4000, 79 + }; + + sub_0201E88C(&v0, GX_OBJVRAMMODE_CHAR_1D_128K, GX_OBJVRAMMODE_CHAR_1D_128K); + sub_0201F834(16, 79); + sub_0201E994(); + sub_0201F8E4(); +} + +static void ov101_021D1544 (void) +{ + sub_0201E958(); + sub_0201F8B4(); +} + +static void ov101_021D1550 (UnkStruct_ov101_021D13C8 * param0) +{ + NNS_G2dInitOamManagerModule(); + + sub_0200A784(0, 128, 0, 32, 0, 128, 0, 32, 79); + param0->unk_450 = ov101_021D7E48(79, 64, 32, 64, 16, 64, 32, 11, 8, 11, 11); + ov101_021D15BC(param0); +} + +static void ov101_021D15A4 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D1868(param0); + ov101_021D7FB4(param0->unk_450); + sub_0200A878(); +} + +static void ov101_021D15BC (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D80E4(param0->unk_450, (NNS_G2D_VRAM_TYPE_2DMAIN), param0->unk_438, 11, 0); + ov101_021D80E4(param0->unk_450, (NNS_G2D_VRAM_TYPE_2DMAIN), param0->unk_438, 21, 1); + ov101_021D80E4(param0->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), param0->unk_438, 68, 6); + ov101_021D80E4(param0->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), param0->unk_438, 71, 7); + ov101_021D80E4(param0->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), param0->unk_438, 64, 8); + ov101_021D80E4(param0->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), param0->unk_438, 60, 9); + + ov101_021D81B4(param0->unk_450, (NNS_G2D_VRAM_TYPE_MAX), param0->unk_438, 10, 0); + ov101_021D81B4(param0->unk_450, (NNS_G2D_VRAM_TYPE_2DMAIN), param0->unk_438, 20, 1); + ov101_021D81B4(param0->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), param0->unk_438, 67, 6); + ov101_021D81B4(param0->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), param0->unk_438, 63, 7); + + ov101_021D8288(param0->unk_450, param0->unk_438, 12, 0); + ov101_021D8288(param0->unk_450, param0->unk_438, 22, 1); + ov101_021D8288(param0->unk_450, param0->unk_438, 69, 6); + ov101_021D8288(param0->unk_450, param0->unk_438, 72, 7); + ov101_021D8288(param0->unk_450, param0->unk_438, 65, 8); + ov101_021D8288(param0->unk_450, param0->unk_438, 61, 9); + + ov101_021D82F0(param0->unk_450, param0->unk_438, 13, 0); + ov101_021D82F0(param0->unk_450, param0->unk_438, 23, 1); + ov101_021D82F0(param0->unk_450, param0->unk_438, 70, 6); + ov101_021D82F0(param0->unk_450, param0->unk_438, 73, 7); + ov101_021D82F0(param0->unk_450, param0->unk_438, 66, 8); + ov101_021D82F0(param0->unk_450, param0->unk_438, 62, 9); + + ov101_021D814C(param0->unk_450, 0); + ov101_021D814C(param0->unk_450, 1); + ov101_021D814C(param0->unk_450, 6); + ov101_021D814C(param0->unk_450, 7); + ov101_021D814C(param0->unk_450, 8); + ov101_021D814C(param0->unk_450, 9); + ov101_021D8180(param0->unk_450, 0); + ov101_021D8180(param0->unk_450, 1); + ov101_021D8180(param0->unk_450, 6); + ov101_021D8180(param0->unk_450, 7); + ov101_021D8180(param0->unk_450, 8); + ov101_021D8180(param0->unk_450, 9); + + ov101_021D8220(param0->unk_450, 0); + ov101_021D8220(param0->unk_450, 1); + ov101_021D8220(param0->unk_450, 6); + ov101_021D8220(param0->unk_450, 7); + ov101_021D8254(param0->unk_450, 0); + ov101_021D8254(param0->unk_450, 1); + ov101_021D8254(param0->unk_450, 6); + ov101_021D8254(param0->unk_450, 7); +} + +static void ov101_021D1868 (UnkStruct_ov101_021D13C8 * param0) +{ + return; +} + +static void ov101_021D186C (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_44C = sub_020711EC(79, 128); +} + +static void ov101_021D1884 (UnkStruct_ov101_021D13C8 * param0) +{ + sub_0207121C(param0->unk_44C); +} + +void ov101_021D1894 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D1894 param1) +{ + UnkStruct_ov101_021D1894 * v0 = ¶m0->unk_424; + + if ((v0->unk_08 == param1) || (v0->unk_0C == param1)) { + return; + } + + v0->unk_0C = param1; + v0->unk_00 = 1; + v0->unk_04 = 1; +} + +static int ov101_021D18B4 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D1894 * v0 = ¶m0->unk_424; + return v0->unk_04; +} + +static void ov101_021D18C0 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D1894 * v0 = ¶m0->unk_424; + + v0->unk_08 = UnkEnum_ov101_021D1894_00; + v0->unk_0C = UnkEnum_ov101_021D1894_03; + v0->unk_10 = sub_0200D9E8(ov101_021D18F4, param0, 144); +} + +static void ov101_021D18E4 (UnkStruct_ov101_021D13C8 * param0) +{ + sub_0200DA58(param0->unk_424.unk_10); +} + +static void ov101_021D18F4 (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D13C8 * v0 = param1; + UnkStruct_ov101_021D1894 * v1 = &v0->unk_424; + + switch (v1->unk_00) { + case 0: + break; + case 1: + switch (v1->unk_08) { + case UnkEnum_ov101_021D1894_00: sub_020049F4(1, 1); break; + case UnkEnum_ov101_021D1894_01: sub_020055D0(1184, 0); break; + case UnkEnum_ov101_021D1894_02: sub_020055D0(1185, 0); break; + } + + v1->unk_00++; + break; + case 2: + switch (v1->unk_0C) { + case UnkEnum_ov101_021D1894_00: sub_020049F4(1, 0); break; + case UnkEnum_ov101_021D1894_01: sub_02005474(1184); break; + case UnkEnum_ov101_021D1894_02: sub_02005474(1185); break; + } + + v1->unk_08 = v1->unk_0C; + v1->unk_0C = UnkEnum_ov101_021D1894_03; + v1->unk_04 = 0; + v1->unk_00 = 0; + } +} + +static void ov101_021D197C (void * param0) +{ + UnkStruct_ov101_021D13C8 * v0 = param0; + + sub_0201DCAC(); + sub_0200A858(); + sub_0201C2B8(v0->unk_43C); +} + +void * ov101_021D1998 (u32 param0) +{ + void * v0 = sub_02018144(79, param0); + + GF_ASSERT(v0 != NULL); + memset(v0, 0, param0); + + return v0; +} + +static void ov101_021D19BC (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_438 = sub_02006C24(133, 79); +} + +static void ov101_021D19D4 (UnkStruct_ov101_021D13C8 * param0) +{ + sub_02006CA8(param0->unk_438); +} + +void * ov101_021D19E4 (UnkStruct_ov101_021D13C8 * param0, u32 param1, int param2) +{ + void * v0; + u32 v1 = sub_02006D84(param0->unk_438, param1); + + if (param2 == 1) { + v0 = sub_02018144(79, v1); + } else { + v0 = sub_02018184(79, v1); + } + + GF_ASSERT(v0 != NULL); + sub_02006D28(param0->unk_438, param1, v0); + + return v0; +} + +static const UnkStruct_ov61_0222C884 Unk_ov101_021D8588[1] = { + {0x0, 0x2, 0x13, 0x1A, 0x4, 0xF, 0x3D} +}; diff --git a/src/overlay101/ov101_021D1A28.c b/src/overlay101/ov101_021D1A28.c new file mode 100644 index 0000000000..c471ff3da8 --- /dev/null +++ b/src/overlay101/ov101_021D1A28.c @@ -0,0 +1,4612 @@ +#include "enums.h" + +#include +#include + +#include "data_021BF67C.h" + +#include "struct_decls/struct_0201CD38_decl.h" +#include "struct_decls/struct_02025E50_decl.h" +#include "overlay101/struct_ov101_021D5D90_decl.h" + +#include "overlay101/const_ov101_021D9580.h" +#include "overlay101/const_ov101_021D9628.h" +#include "overlay101/const_ov101_021D9AE4.h" +#include "overlay101/const_ov101_021D9934.h" +#include "overlay101/const_ov101_021D94F0.h" +#include "overlay101/const_ov101_021D94D8.h" +#include "overlay101/const_ov101_021D9538.h" +#include "overlay101/const_ov101_021D9784.h" +#include "overlay101/const_ov101_021D9520.h" +#include "overlay101/const_ov101_021D95C8.h" +#include "overlay101/const_ov101_021D9550.h" +#include "overlay101/const_ov101_021D9508.h" +#include "overlay101/const_ov101_021D9598.h" +#include "overlay101/const_ov101_021D9568.h" +#include "overlay101/const_ov101_021D9688.h" + +#include "overlay101/struct_ov101_021D13C8.h" +#include "overlay101/struct_ov101_021D2D88.h" +#include "overlay101/struct_ov101_021D4714.h" +#include "overlay101/struct_ov101_021D4764.h" +#include "overlay101/struct_ov101_021D4F58.h" +#include "overlay101/struct_ov101_021D86B0.h" +#include "overlay101/struct_ov101_021D95C8.h" +#include "overlay101/struct_ov101_021D9784.h" +#include "overlay101/struct_ov101_021D9934.h" +#include "overlay101/struct_ov101_021D9AE4.h" + +#include "unk_02005474.h" +#include "unk_0200D9E8.h" +#include "unk_02017E74.h" +#include "unk_02018340.h" +#include "unk_0201D15C.h" +#include "unk_020711EC.h" +#include "overlay101/ov101_021D0D80.h" +#include "overlay101/ov101_021D1A28.h" +#include "overlay101/ov101_021D59AC.h" + +typedef struct { + u16 unk_00_0 : 5; + u16 unk_00_5 : 5; + u16 unk_00_10 : 5; + u16 unk_00_15 : 1; +} UnkStruct_ov101_021D4EC0; + +typedef struct { + u32 unk_00[3]; + UnkEnum_ov101_021D679C unk_0C[3]; +} UnkStruct_ov101_021D87A8; + +typedef struct { + UnkEnum_ov101_021D4F58 unk_00; + u32 unk_04; + UnkStruct_ov101_021D13C8 * unk_08; +} UnkStruct_ov101_021D5068; + +typedef struct { + int unk_00; + int unk_04; + int unk_08; + int unk_0C; + UnkEnum_ov101_021D4F58 unk_10; + u32 unk_14; + fx32 unk_18; + UnkStruct_ov101_021D13C8 * unk_1C; + UnkStruct_ov101_021D4F58 * unk_20; +} UnkStruct_ov101_021D505C; + +typedef struct { + int unk_00; + int unk_04; + int unk_08; + fx32 unk_0C; + UnkEnum_ov101_021D4F58 unk_10; + fx32 unk_14[5]; + UnkStruct_ov101_021D13C8 * unk_28; + UnkStruct_ov101_021D4F58 * unk_2C; +} UnkStruct_ov101_021D5388; + +typedef struct { + u32 unk_00; + fx32 unk_04; + fx32 unk_08; + fx32 unk_0C; +} UnkStruct_ov101_021D8938; + +typedef struct { + int unk_00; + fx32 unk_04; + int unk_08; + UnkStruct_ov101_021D13C8 * unk_0C; +} UnkStruct_ov101_021D53B0; + +static void ov101_021D1A68(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D2B8C(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D2BC0(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D2BDC(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1); +static void ov101_021D2BF4(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1); +static int ov101_021D2C04(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1); +static void ov101_021D2C10(UnkStruct_0201CD38 * param0, void * param1); +static int ov101_021D2D88(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1); +static int ov101_021D2DC0(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1); +static int ov101_021D2DE0(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1); +static int ov101_021D2E1C(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1); +static int ov101_021D2E58(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1); +static int ov101_021D2E94(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2); +static int ov101_021D2FAC(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2); +static int ov101_021D32EC(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2); +static int ov101_021D3394(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2); +static int ov101_021D3738(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2); +static void ov101_021D3780(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1); +static void ov101_021D3830(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1); +static int ov101_021D3AF0(UnkStruct_ov101_021D13C8 * param0, int param1); +static int ov101_021D3B34(UnkStruct_ov101_021D13C8 * param0, int param1, UnkEnum_ov101_021D9688 param2); +static int ov101_021D3B50(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2); +static int ov101_021D3C9C(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2); +static int ov101_021D3DD4(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2); +static int ov101_021D3F0C(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2); +static int ov101_021D3F58(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2); +static int ov101_021D3FA0(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2); +static int ov101_021D38E4(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D38FC(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1); +static int ov101_021D394C(UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int * param2, int * param3, int * param4); +static void ov101_021D3FE8(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1, fx32 param2); +static fx32 ov101_021D4024(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1, fx32 param2); +static u32 ov101_021D405C(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D406C(u32 param0, u32 * param1); +static int ov101_021D4084(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D40A8(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D41EC(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D4210(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D42D0(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D4370(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D4394(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D44C4(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D44A0(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D44E8(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D44FC(UnkStruct_ov101_021D13C8 * param0); +static UnkEnum_ov101_021D4550 ov101_021D4550(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D45B0(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D45C4(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D45E8(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D45F8(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D460C(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D4614(UnkStruct_0201CD38 * param0, void * param1); +static void ov101_021D4714(UnkStruct_ov101_021D4714 * param0); +static void ov101_021D4764(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D4788(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D4798(UnkStruct_ov101_021D13C8 * param0, u32 param1); +static int ov101_021D47AC(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D47B4(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D47F0(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D4D38(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D4EA4(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D4EA8(NNSG2dPaletteData * param0, int param1, u16 * param2); +static void ov101_021D4EC0(u16 param0, u16 param1, u16 param2, u16 * param3); +static void ov101_021D4F18(const u16 * param0, const u16 * param1, u16 param2, u16 * param3); +static void ov101_021D4F40(UnkStruct_ov101_021D13C8 * param0, u32 param1, int param2, u16 * param3); +static void ov101_021D4F58(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D4F58 param1); +static void ov101_021D4F78(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D4F58 param1); +static void ov101_021D4FB8(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D4F58 param1); +static void ov101_021D4FF8(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D5010(UnkStruct_ov101_021D13C8 * param0); +static UnkStruct_ov101_021D5D90 * ov101_021D5028(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D4F58 param1, u32 param2); +static int ov101_021D505C(UnkStruct_ov101_021D5D90 * param0); +static void ov101_021D5200(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D5244(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D53B0(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D53D4(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D53F8(UnkStruct_ov101_021D13C8 * param0, int param1); +static int ov101_021D55F8(u32 param0); +static UnkEnum_ov101_021D9688 ov101_021D5618(u32 param0); +static UnkEnum_ov101_021D9688 ov101_021D5660(UnkStruct_ov101_021D13C8 * param0); +static UnkEnum_ov101_021D9688 ov101_021D5698(UnkStruct_ov101_021D13C8 * param0); +static UnkEnum_ov101_021D9688 ov101_021D56D0(UnkStruct_ov101_021D13C8 * param0); +static UnkEnum_ov101_021D9688 ov101_021D5708(UnkStruct_ov101_021D13C8 * param0); +static UnkEnum_ov101_021D9688 ov101_021D5740(UnkStruct_ov101_021D13C8 * param0); +static UnkEnum_ov101_021D9688 ov101_021D5778(UnkStruct_ov101_021D13C8 * param0, u32 param1, u32 * param2); +static UnkEnum_ov101_021D9688 ov101_021D57EC(UnkStruct_ov101_021D13C8 * param0, u32 param1, u32 * param2); +static UnkEnum_ov101_021D5814 ov101_021D5814(u32 param0); +static void ov101_021D5848(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D5858(UnkStruct_ov101_021D13C8 * param0, u32 param1); +static int ov101_021D5880(UnkStruct_ov101_021D13C8 * param0); +static int ov101_021D58C0(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D58F4(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1); +static void ov101_021D5938(UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1); +static u32 ov101_021D597C(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D4824(UnkStruct_0201CD38 * param0, void * param1); +static void ov101_021D542C(UnkStruct_0201CD38 * param0, void * param1); +static void ov101_021D548C(UnkStruct_0201CD38 * param0, void * param1); +static void ov101_021D54EC(UnkStruct_0201CD38 * param0, void * param1); + +static const UnkStruct_ov101_021D87A8 Unk_ov101_021D87A8[6]; +static const int Unk_ov101_021D8740[3][2]; +static int(*const Unk_ov101_021D8838[64])(UnkStruct_ov101_021D13C8 *); +static int(*const Unk_ov101_021D86C4[5])(UnkStruct_ov101_021D2D88 *, UnkStruct_ov101_021D13C8 *); +static int(*const * const Unk_ov101_021D8774[13])(UnkStruct_ov101_021D4764 *); + +void ov101_021D1A28 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D1A68(param0); + ov101_021D2B8C(param0); + ov101_021D45C4(param0); + ov101_021D4764(param0); + ov101_021D4D38(param0); +} + +void ov101_021D1A4C (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D2BC0(param0); + ov101_021D45E8(param0); + ov101_021D4788(param0); + ov101_021D4EA4(param0); +} + +static void ov101_021D1A68 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0, v1; + fx32 v2; + + for (v0 = 0; v0 < 3; v0++) { + v1 = (int)sub_0201D2E8() % 21; + param0->unk_A8[v0] = v1; + param0->unk_90[v0] = (FX32_ONE * ((21 * 32))) - ((FX32_ONE * ((v1) * 32))); + param0->unk_90[v0] %= (FX32_ONE * ((21 * 32))); + } +} + +int ov101_021D1AAC (UnkStruct_ov101_021D13C8 * param0) +{ + int v0; + + do { + v0 = Unk_ov101_021D8838[param0->unk_00](param0); + } while (v0 == 1); + + if (v0 == 2) { + return 1; + } + + return 0; +} + +static int ov101_021D1AD0 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_64 = 0; + param0->unk_68 = 0; + param0->unk_8C = ((FX32_ONE * 16)); + param0->unk_74 = 0; + param0->unk_08 = 0; + param0->unk_00 = 1; + + ov101_021D5938(param0, 0); + ov101_021D5938(param0, 1); + ov101_021D5938(param0, 2); + ov101_021D4FF8(param0); + ov101_021D5200(param0); + + if (param0->unk_60 == 0) { + param0->unk_00 = 60; + param0->unk_04 = 63; + } else if (param0->unk_60 < 3) { + param0->unk_00 = 59; + param0->unk_04 = 63; + } else if (param0->unk_60 >= 50000) { + param0->unk_00 = 61; + param0->unk_04 = 1; + } + + return 1; +} + +static int ov101_021D1B40 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D55F8(PAD_BUTTON_START) != 0) { + ov101_021D5244(param0); + param0->unk_00 = 63; + return 0; + } + + if (ov101_021D55F8(PAD_BUTTON_X) != 0) { + param0->unk_60 -= 3; + param0->unk_45C += 3; + param0->unk_00 = 2; + + sub_02005748(1517); + ov101_021D5244(param0); + ov101_021D5010(param0); + + return 0; + } + + return 0; +} + +static int ov101_021D1B9C (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D55F8(PAD_BUTTON_START) != 0) { + param0->unk_60 += 3; + param0->unk_00 = 63; + return 0; + } + + if (ov101_021D55F8((PAD_KEY_DOWN | PAD_BUTTON_X)) != 0) { + param0->unk_00 = 3; + return 1; + } + + return 0; +} + +static int ov101_021D1BD0 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D40A8(param0); + + param0->unk_460++; + param0->unk_464++; + param0->unk_70 = 0; + + if ((param0->unk_74 & ((1 << 0) | (1 << 1) | (1 << 4) | (1 << 5)))) { + param0->unk_70 = 1; + } + + param0->unk_30 = 0; + + if (param0->unk_74 != 0) { + if (ov101_021D41EC(param0) == 0) { + param0->unk_13C.unk_18 = UnkEnum_ov101_021D5814_04; + } else { + param0->unk_13C.unk_18 = ov101_021D5814(param0->unk_74); + param0->unk_490++; + } + + param0->unk_30 = 1; + ov101_021D4798(param0, 1); + } + + ov101_021D5938(param0, 0); + ov101_021D5938(param0, 1); + ov101_021D5938(param0, 2); + ov101_021D5010(param0); + + ov101_021D2BDC(param0, 0); + ov101_021D2BDC(param0, 1); + ov101_021D2BDC(param0, 2); + ov101_021D5848(param0); + + param0->unk_7C[0] = 1; + param0->unk_7C[1] = 1; + param0->unk_7C[2] = 1; + param0->unk_6C = 0; + param0->unk_00 = 4; + + sub_02005748(1518); + + return 1; +} + +static int ov101_021D1C9C (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C >= ((FX32_ONE * 8))) { + param0->unk_6C = 0; + param0->unk_00 = 5; + return 1; + } + + return 0; +} + +static int ov101_021D1CBC (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = Unk_021BF67C.unk_48; + + if ((param0->unk_7C[0] == 1) && (v0 & PAD_BUTTON_Y)) { + param0->unk_7C[0] = 2; + ov101_021D5858(param0, PAD_BUTTON_Y); + + if (ov101_021D5880(param0) == 0) { + param0->unk_70 = 0; + } + + ov101_021D58F4(param0, 0); + ov101_021D2BF4(param0, 0); + sub_02005748(1574); + } else if ((param0->unk_7C[1] == 1) && (v0 & PAD_BUTTON_B)) { + param0->unk_7C[1] = 2; + + ov101_021D5858(param0, PAD_BUTTON_B); + + if (ov101_021D5880(param0) == 0) { + param0->unk_70 = 0; + } + + ov101_021D58F4(param0, 1); + ov101_021D2BF4(param0, 1); + sub_02005748(1574); + } else if ((param0->unk_7C[2] == 1) && (v0 & PAD_BUTTON_A)) { + param0->unk_7C[2] = 2; + ov101_021D5858(param0, PAD_BUTTON_A); + + if (ov101_021D5880(param0) == 0) { + param0->unk_70 = 0; + } + + ov101_021D58F4(param0, 2); + ov101_021D2BF4(param0, 2); + sub_02005748(1574); + } + + if ((param0->unk_7C[0] == 2) && (param0->unk_7C[1] == 2) && (param0->unk_7C[2] == 2)) { + param0->unk_00 = 6; + } + + return 0; +} + +static int ov101_021D1DB4 (UnkStruct_ov101_021D13C8 * param0) +{ + if ((ov101_021D2C04(param0, 0) == 1) || (ov101_021D2C04(param0, 1) == 1) || (ov101_021D2C04(param0, 2) == 1)) { + return 0; + } + + ov101_021D4FF8(param0); + param0->unk_00 = 7; + return 1; +} + +static int ov101_021D1DEC (UnkStruct_ov101_021D13C8 * param0) +{ + UnkEnum_ov101_021D9688 v0 = ov101_021D5778(param0, param0->unk_74, ¶m0->unk_48); + + param0->unk_44 = v0; + + if (v0 == 6) { + if ((param0->unk_74 & ((1 << 1) | (1 << 3) | (1 << 5) | (1 << 7)))) { + param0->unk_00 = 16; + return 1; + } + + if ((param0->unk_74 != 0)) { + param0->unk_00 = 10; + return 1; + } + + param0->unk_00 = 8; + return 1; + } + + if ((param0->unk_74 & ((1 << 1) | (1 << 3) | (1 << 5) | (1 << 7)))) { + if ((param0->unk_74 & (1 << 1))) { + param0->unk_00 = 21; + } else { + param0->unk_00 = 19; + } + + return 1; + } + + if (v0 == 2) { + param0->unk_00 = 14; + return 1; + } + + param0->unk_00 = 12; + return 1; +} + +static int ov101_021D1E54 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D4FF8(param0); + + param0->unk_6C = 0; + param0->unk_00 = 9; + + return 1; +} + +static int ov101_021D1E68 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C >= ((FX32_ONE * 8))) { + param0->unk_6C = 0; + param0->unk_00 = 0; + } + + return 0; +} + +static int ov101_021D1E84 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D4FF8(param0); + ov101_021D4798(param0, 2); + param0->unk_00 = 11; + + return 0; +} + +static int ov101_021D1E9C (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D47AC(param0) == 1) { + ov101_021D4798(param0, 0); + param0->unk_00 = 0; + return 1; + } + + return 0; +} + +static int ov101_021D1EBC (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_64 = ov101_021D597C(param0); + param0->unk_458 += param0->unk_64; + param0->unk_6C = 0; + param0->unk_00 = 13; + + ov101_021D45F8(param0); + ov101_021D4798(param0, 11); + + return 0; +} + +static int ov101_021D1EEC (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C == ((FX32_ONE * 30))) { + ov101_021D4798(param0, 2); + } else if (param0->unk_6C > ((FX32_ONE * 30))) { + if ((ov101_021D460C(param0) == 1) && (ov101_021D47AC(param0) == 1)) { + ov101_021D4798(param0, 0); + param0->unk_6C = 0; + param0->unk_00 = 0; + return 1; + } + } + + return 0; +} + +static int ov101_021D1F34 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_64 = 0; + param0->unk_6C = 0; + param0->unk_00 = 15; + + ov101_021D45F8(param0); + ov101_021D4798(param0, 11); + + return 0; +} + +static int ov101_021D1F54 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C == ((FX32_ONE * 15))) { + ov101_021D4798(param0, 2); + } else if (param0->unk_6C > ((FX32_ONE * 15))) { + if ((ov101_021D460C(param0) == 1) && (ov101_021D47AC(param0) == 1)) { + ov101_021D4798(param0, 0); + param0->unk_6C = 0; + param0->unk_00 = 3; + return 1; + } + } + + return 0; +} + +static int ov101_021D1FA0 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D4FF8(param0); + ov101_021D4210(param0); + ov101_021D42D0(param0); + ov101_021D4798(param0, 11); + + param0->unk_6C = 0; + param0->unk_00 = 17; + + return 0; +} + +static int ov101_021D1FC8 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C >= ((FX32_ONE * 8))) { + ov101_021D4798(param0, 3); + ov101_021D1894(param0, UnkEnum_ov101_021D1894_01); + param0->unk_00 = 18; + } + + return 0; +} + +static int ov101_021D1FF4 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D47AC(param0) == 1) { + param0->unk_00 = 23; + return 1; + } + + return 0; +} + +static int ov101_021D200C (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_64 = ov101_021D597C(param0); + param0->unk_6C = 0; + param0->unk_00 = 20; + + ov101_021D45F8(param0); + ov101_021D4210(param0); + ov101_021D42D0(param0); + ov101_021D4798(param0, 11); + + return 0; +} + +static int ov101_021D203C (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C == ((FX32_ONE * 30))) { + ov101_021D1894(param0, UnkEnum_ov101_021D1894_01); + ov101_021D4798(param0, 3); + } else if (param0->unk_6C >= ((FX32_ONE * 30))) { + if ((ov101_021D460C(param0) == 1) && (ov101_021D47AC(param0) == 1)) { + param0->unk_6C = 0; + param0->unk_00 = 23; + return 1; + } + } + + return 0; +} + +static int ov101_021D2088 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C = 0; + param0->unk_00 = 22; + + ov101_021D45F8(param0); + ov101_021D4798(param0, 11); + ov101_021D4210(param0); + ov101_021D42D0(param0); + + return 0; +} + +static int ov101_021D20B0 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C == ((FX32_ONE * 8))) { + ov101_021D4798(param0, 3); + ov101_021D1894(param0, UnkEnum_ov101_021D1894_01); + } else if (param0->unk_6C >= ((FX32_ONE * 8))) { + if ((ov101_021D460C(param0) == 1) && (ov101_021D47AC(param0) == 1)) { + param0->unk_6C = 0; + param0->unk_00 = 24; + return 1; + } + } + + return 0; +} + +static int ov101_021D20FC (UnkStruct_ov101_021D13C8 * param0) +{ + GF_ASSERT(param0->unk_50 < UnkEnum_ov101_021D9934_06); + param0->unk_00 = 25; + return 1; +} + +static int ov101_021D2114 (UnkStruct_ov101_021D13C8 * param0) +{ + GF_ASSERT(param0->unk_50 < UnkEnum_ov101_021D9934_06); + param0->unk_00 = 28; + + return 1; +} + +static int ov101_021D212C (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_64 = 0; + param0->unk_68 = 0; + param0->unk_00 = 26; + param0->unk_74 = 0; + + ov101_021D5938(param0, 0); + ov101_021D5938(param0, 1); + ov101_021D5938(param0, 2); + ov101_021D4FF8(param0); + ov101_021D5200(param0); + ov101_021D4798(param0, 7); + + if (param0->unk_60 == 0) { + param0->unk_00 = 60; + param0->unk_04 = 63; + } else if (param0->unk_60 < 3) { + param0->unk_00 = 59; + param0->unk_04 = 63; + } else if (param0->unk_60 >= 50000) { + param0->unk_00 = 61; + param0->unk_04 = 26; + } + + return 1; +} + +static int ov101_021D2198 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D55F8(PAD_BUTTON_START) != 0) { + param0->unk_00 = 63; + ov101_021D5244(param0); + return 0; + } + + if (ov101_021D55F8(PAD_BUTTON_X) != 0) { + param0->unk_60 -= 3; + param0->unk_45C += 3; + param0->unk_00 = 27; + + sub_02005748(1517); + ov101_021D5244(param0); + ov101_021D5010(param0); + + return 0; + } + + return 0; +} + +static int ov101_021D21F4 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D55F8(PAD_BUTTON_START) != 0) { + param0->unk_60 += 3; + param0->unk_00 = 63; + return 0; + } + + if (ov101_021D55F8((PAD_KEY_DOWN | PAD_BUTTON_X)) != 0) { + param0->unk_00 = 28; + return 1; + } + + return 0; +} + +static int ov101_021D2228 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D4394(param0); + + param0->unk_460++; + param0->unk_468++; + param0->unk_70 = 0; + + if ((param0->unk_74 & ((1 << 0) | (1 << 1) | (1 << 4) | (1 << 5)))) { + param0->unk_70 = 1; + } + + param0->unk_30 = 0; + + if (param0->unk_74 != 0) { + param0->unk_30 = 1; + } + + ov101_021D5938(param0, 0); + ov101_021D5938(param0, 1); + ov101_021D5938(param0, 2); + ov101_021D5010(param0); + + ov101_021D2BDC(param0, 0); + ov101_021D2BDC(param0, 1); + ov101_021D2BDC(param0, 2); + ov101_021D5848(param0); + + ov101_021D4798(param0, 9); + + param0->unk_7C[0] = 1; + param0->unk_7C[1] = 1; + param0->unk_7C[2] = 1; + param0->unk_6C = 0; + param0->unk_00 = 29; + + sub_02005748(1518); + + return 1; +} + +static int ov101_021D22D0 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C >= ((FX32_ONE * 8))) { + param0->unk_6C = 0; + param0->unk_00 = 30; + + return 1; + } + + return 0; +} + +static int ov101_021D22F0 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = Unk_021BF67C.unk_48; + + if ((param0->unk_7C[0] == 1) && (v0 & PAD_BUTTON_Y)) { + param0->unk_7C[0] = 2; + + ov101_021D5858(param0, PAD_BUTTON_Y); + + if (ov101_021D5880(param0) == 0) { + param0->unk_70 = 0; + } + + ov101_021D58F4(param0, 0); + ov101_021D2BF4(param0, 0); + sub_02005748(1574); + } else if ((param0->unk_7C[1] == 1) && (v0 & PAD_BUTTON_B)) { + param0->unk_7C[1] = 2; + ov101_021D5858(param0, PAD_BUTTON_B); + + if (ov101_021D5880(param0) == 0) { + param0->unk_70 = 0; + } + + ov101_021D58F4(param0, 1); + ov101_021D2BF4(param0, 1); + sub_02005748(1574); + } else if ((param0->unk_7C[2] == 1) && (v0 & PAD_BUTTON_A)) { + param0->unk_7C[2] = 2; + ov101_021D5858(param0, PAD_BUTTON_A); + + if (ov101_021D5880(param0) == 0) { + param0->unk_70 = 0; + } + + ov101_021D58F4(param0, 2); + ov101_021D2BF4(param0, 2); + sub_02005748(1574); + } + + if ((param0->unk_7C[0] == 2) && (param0->unk_7C[1] == 2) && (param0->unk_7C[2] == 2)) { + param0->unk_00 = 31; + } + + return 0; +} + +static int ov101_021D23E8 (UnkStruct_ov101_021D13C8 * param0) +{ + if ((ov101_021D2C04(param0, 0) == 1) || (ov101_021D2C04(param0, 1) == 1) || (ov101_021D2C04(param0, 2) == 1)) { + return 0; + } + + ov101_021D4FF8(param0); + param0->unk_00 = 32; + return 1; +} + +static int ov101_021D2420 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkEnum_ov101_021D9688 v0 = ov101_021D5778(param0, param0->unk_74, ¶m0->unk_48); + + param0->unk_44 = v0; + + if (v0 == 6) { + param0->unk_00 = 33; + return 1; + } + + if ((param0->unk_74 & ((1 << 8) | (1 << 9)))) { + param0->unk_00 = 39; + return 1; + } + + if (v0 == 2) { + param0->unk_00 = 37; + return 1; + } + + param0->unk_00 = 35; + return 1; +} + +static int ov101_021D2464 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D4FF8(param0); + ov101_021D4798(param0, 7); + + param0->unk_6C = 0; + param0->unk_00 = 34; + + return 1; +} + +static int ov101_021D2480 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C >= ((FX32_ONE * 8))) { + param0->unk_6C = 0; + param0->unk_00 = 25; + + return 1; + } + + return 0; +} + +static int ov101_021D24A0 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_64 = ov101_021D597C(param0); + param0->unk_458 += param0->unk_64; + param0->unk_6C = 0; + param0->unk_00 = 36; + + ov101_021D45F8(param0); + ov101_021D4798(param0, 10); + + return 0; +} + +static int ov101_021D24D0 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D460C(param0) == 1) { + ov101_021D4798(param0, 7); + param0->unk_00 = 25; + return 1; + } + + return 0; +} + +static int ov101_021D24F0 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_64 = 0; + param0->unk_6C = 0; + param0->unk_00 = 38; + + ov101_021D45F8(param0); + ov101_021D4798(param0, 10); + + return 0; +} + +static int ov101_021D2510 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C > ((FX32_ONE * 15))) { + if (ov101_021D460C(param0) == 1) { + ov101_021D4798(param0, 7); + ov101_021D4FF8(param0); + + param0->unk_6C = 0; + param0->unk_00 = 28; + + return 1; + } + } + + return 0; +} + +static int ov101_021D254C (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_64 = ov101_021D597C(param0); + param0->unk_458 += param0->unk_64; + param0->unk_6C = 0; + param0->unk_00 = 40; + + ov101_021D45F8(param0); + ov101_021D4798(param0, 10); + ov101_021D53B0(param0); + ov101_021D1894(param0, UnkEnum_ov101_021D1894_02); + + param0->unk_454 = ov101_021D7B08(param0); + + return 0; +} + +static int ov101_021D2598 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D460C(param0) == 1) { + sub_0207136C(param0->unk_454); + ov101_021D4798(param0, 7); + param0->unk_00 = 41; + return 1; + } + + return 0; +} + +static int ov101_021D25C4 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D47B4(param0); + + param0->unk_1C = 0; + param0->unk_14 = 0; + param0->unk_08 = 1; + param0->unk_00 = 42; + + return 1; +} + +static int ov101_021D25DC (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_0C++; + param0->unk_1C++; + + if (param0->unk_1C > 999) { + param0->unk_1C = 999; + } + + ov101_021D79BC(param0, param0->unk_1C); + + param0->unk_10 = 15 + 1; + param0->unk_08 = 1; + param0->unk_24 = 0; + param0->unk_28 = 0; + param0->unk_2C = 0; + + if (ov101_021D44E8(param0) == 0) { + param0->unk_2C = 1; + } + + param0->unk_00 = 43; + return 1; +} + +static int ov101_021D2628 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_10--; + GF_ASSERT((int)param0->unk_10 >= 1); + + ov101_021D5938(param0, 0); + ov101_021D5938(param0, 1); + ov101_021D5938(param0, 2); + ov101_021D4FF8(param0); + ov101_021D5200(param0); + ov101_021D4798(param0, 7); + + param0->unk_00 = 44; + + if (param0->unk_60 == 0) { + param0->unk_00 = 60; + param0->unk_04 = 63; + } else if (param0->unk_60 < 1) { + param0->unk_00 = 60; + param0->unk_04 = 63; + } else if (param0->unk_60 >= 50000) { + param0->unk_00 = 61; + param0->unk_04 = 44; + } + + return 1; +} + +static int ov101_021D269C (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D55F8(PAD_BUTTON_START) != 0) { + param0->unk_00 = 63; + return 0; + } + + if (ov101_021D55F8(PAD_BUTTON_X) != 0) { + param0->unk_60 -= 1; + param0->unk_14 -= 1; + param0->unk_45C += 1; + + if ((int)param0->unk_14 < 0) { + param0->unk_14 = 0; + } + + param0->unk_00 = 45; + + sub_02005748(1517); + ov101_021D5244(param0); + ov101_021D4FB8(param0, UnkEnum_ov101_021D4F58_00); + + return 0; + } + + return 0; +} + +static int ov101_021D2704 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D55F8(PAD_BUTTON_START) != 0) { + param0->unk_60 += 1; + param0->unk_00 = 63; + return 0; + } + + if (ov101_021D55F8((PAD_KEY_DOWN | PAD_BUTTON_X)) != 0) { + param0->unk_00 = 46; + return 1; + } + + return 0; +} + +static int ov101_021D2738 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_460++; + param0->unk_46C++; + param0->unk_74 = (1 << 0); + param0->unk_30 = 1; + param0->unk_70 = 1; + + ov101_021D5938(param0, 0); + ov101_021D5938(param0, 1); + ov101_021D5938(param0, 2); + ov101_021D4FB8(param0, UnkEnum_ov101_021D4F58_00); + + ov101_021D2BDC(param0, 0); + ov101_021D2BDC(param0, 1); + ov101_021D2BDC(param0, 2); + ov101_021D5848(param0); + ov101_021D45B0(param0); + + param0->unk_7C[0] = 1; + param0->unk_7C[1] = 1; + param0->unk_7C[2] = 1; + param0->unk_6C = 0; + param0->unk_00 = 47; + + sub_02005748(1518); + + if ((param0->unk_24 == 0) && (param0->unk_28 == 0)) { + if (ov101_021D44C4(param0) == 1) { + param0->unk_28 = 1; + param0->unk_4C0++; + } + + if (param0->unk_28 == 1) { + ov101_021D53F8(param0, 1); + } + } + + if ((param0->unk_24 == 0) && (param0->unk_28 == 0)) { + if (ov101_021D44A0(param0) == 1) { + param0->unk_24 = 1; + param0->unk_4BC++; + } + + if (param0->unk_24 == 1) { + ov101_021D53F8(param0, 0); + } + } + + return 1; +} + +static int ov101_021D2828 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_6C += FX32_ONE; + + if (param0->unk_6C >= ((FX32_ONE * 8))) { + param0->unk_6C = 0; + param0->unk_00 = 48; + ov101_021D4798(param0, 6); + return 1; + } + + return 0; +} + +static int ov101_021D2850 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = Unk_021BF67C.unk_48; + + if ((param0->unk_7C[0] == 1) && (v0 & PAD_BUTTON_Y)) { + param0->unk_7C[0] = 2; + ov101_021D5858(param0, PAD_BUTTON_Y); + + if (ov101_021D58C0(param0) == 0) { + param0->unk_70 = 0; + param0->unk_30 = 0; + } + + ov101_021D58F4(param0, 0); + ov101_021D2BF4(param0, 0); + sub_02005748(1525); + } else if ((param0->unk_7C[1] == 1) && (v0 & PAD_BUTTON_B)) { + param0->unk_7C[1] = 2; + ov101_021D5858(param0, PAD_BUTTON_B); + + if (ov101_021D58C0(param0) == 0) { + param0->unk_70 = 0; + param0->unk_30 = 0; + } + + ov101_021D58F4(param0, 1); + ov101_021D2BF4(param0, 1); + sub_02005748(1525); + } else if ((param0->unk_7C[2] == 1) && (v0 & PAD_BUTTON_A)) { + param0->unk_7C[2] = 2; + ov101_021D5858(param0, PAD_BUTTON_A); + + if (ov101_021D58C0(param0) == 0) { + param0->unk_70 = 0; + param0->unk_30 = 0; + } + + ov101_021D58F4(param0, 2); + ov101_021D2BF4(param0, 2); + sub_02005748(1525); + } + + if ((param0->unk_7C[0] == 2) && (param0->unk_7C[1] == 2) && (param0->unk_7C[2] == 2)) { + param0->unk_00 = 49; + } + + return 0; +} + +static int ov101_021D2950 (UnkStruct_ov101_021D13C8 * param0) +{ + if ((ov101_021D2C04(param0, 0) == 1) || (ov101_021D2C04(param0, 1) == 1) || (ov101_021D2C04(param0, 2) == 1)) { + return 0; + } + + ov101_021D4FF8(param0); + param0->unk_00 = 50; + return 1; +} + +static int ov101_021D2988 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkEnum_ov101_021D9688 v0 = ov101_021D57EC(param0, param0->unk_74, ¶m0->unk_48); + + param0->unk_44 = v0; + + if (v0 == 6) { + if (param0->unk_28 == 1) { + param0->unk_28 = 3; + } + + param0->unk_00 = 51; + return 1; + } + + if (param0->unk_28 == 1) { + param0->unk_28 = 2; + } + + param0->unk_00 = 52; + + return 1; +} + +static int ov101_021D29C0 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D4FF8(param0); + ov101_021D4798(param0, 7); + + if ((int)param0->unk_10 <= 1) { + param0->unk_00 = 54; + } else { + param0->unk_00 = 43; + } + + return 0; +} + +static int ov101_021D29E4 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_64 = Unk_ov101_021D94F0[param0->unk_44]; + param0->unk_458 += param0->unk_64; + + ov101_021D45F8(param0); + ov101_021D4798(param0, 10); + + param0->unk_6C = 0; + param0->unk_00 = 53; + + return 0; +} + +static int ov101_021D2A18 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D460C(param0) == 0) { + return 0; + } + + ov101_021D4798(param0, 7); + + if ((int)param0->unk_10 <= 1) { + param0->unk_00 = 54; + } else { + param0->unk_00 = 43; + } + + return 1; +} + +static int ov101_021D2A44 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_10--; + GF_ASSERT(param0->unk_10 == 0); + + if ((param0->unk_2C == 1) && (param0->unk_24 == 0)) { + ov101_021D4798(param0, 8); + param0->unk_00 = 58; + return 0; + } + + param0->unk_00 = 55; + return 1; +} + +static int ov101_021D2A78 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkEnum_ov101_021D4550 v0; + + ov101_021D44FC(param0); + v0 = ov101_021D4550(param0); + + if (param0->unk_24 == 1) { + v0 = UnkEnum_ov101_021D4550_02; + } + + if (v0 == UnkEnum_ov101_021D4550_02) { + ov101_021D4798(param0, 5); + param0->unk_00 = 56; + return 0; + } + + if (v0 == UnkEnum_ov101_021D4550_01) { + ov101_021D4798(param0, 12); + param0->unk_00 = 57; + return 0; + } + + sub_02005844(35, 0); + param0->unk_00 = 42; + return 0; +} + +static int ov101_021D2AC8 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D47AC(param0) == 0) { + return 0; + } + + param0->unk_00 = 42; + return 1; +} + +static int ov101_021D2AE0 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D47AC(param0) == 0) { + return 0; + } + + param0->unk_00 = 42; + return 1; +} + +static int ov101_021D2AF8 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D47AC(param0) == 0) { + return 0; + } + + if (param0->unk_1C > param0->unk_20) { + param0->unk_20 = param0->unk_1C; + } + + ov101_021D1894(param0, UnkEnum_ov101_021D1894_00); + ov101_021D53D4(param0); + param0->unk_00 = 0; + + return 1; +} + +static int ov101_021D2B28 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D148C(param0, 0); + param0->unk_00 = 62; + return 0; +} + +static int ov101_021D2B3C (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D148C(param0, 2); + param0->unk_00 = 62; + return 0; +} + +static int ov101_021D2B50 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D148C(param0, 1); + param0->unk_00 = 62; + return 0; +} + +static int ov101_021D2B64 (UnkStruct_ov101_021D13C8 * param0) +{ + if (ov101_021D55F8(PAD_BUTTON_A | PAD_BUTTON_B)) { + ov101_021D14E4(param0); + param0->unk_00 = param0->unk_04; + } + + return 0; +} + +static int ov101_021D2B80 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D5244(param0); + return 2; +} + +static int(*const Unk_ov101_021D8838[64])(UnkStruct_ov101_021D13C8 *) = { + ov101_021D1AD0, + ov101_021D1B40, + ov101_021D1B9C, + ov101_021D1BD0, + ov101_021D1C9C, + ov101_021D1CBC, + ov101_021D1DB4, + ov101_021D1DEC, + ov101_021D1E54, + ov101_021D1E68, + ov101_021D1E84, + ov101_021D1E9C, + ov101_021D1EBC, + ov101_021D1EEC, + ov101_021D1F34, + ov101_021D1F54, + ov101_021D1FA0, + ov101_021D1FC8, + ov101_021D1FF4, + ov101_021D200C, + ov101_021D203C, + ov101_021D2088, + ov101_021D20B0, + ov101_021D20FC, + ov101_021D2114, + ov101_021D212C, + ov101_021D2198, + ov101_021D21F4, + ov101_021D2228, + ov101_021D22D0, + ov101_021D22F0, + ov101_021D23E8, + ov101_021D2420, + ov101_021D2464, + ov101_021D2480, + ov101_021D24A0, + ov101_021D24D0, + ov101_021D24F0, + ov101_021D2510, + ov101_021D254C, + ov101_021D2598, + ov101_021D25C4, + ov101_021D25DC, + ov101_021D2628, + ov101_021D269C, + ov101_021D2704, + ov101_021D2738, + ov101_021D2828, + ov101_021D2850, + ov101_021D2950, + ov101_021D2988, + ov101_021D29C0, + ov101_021D29E4, + ov101_021D2A18, + ov101_021D2A44, + ov101_021D2A78, + ov101_021D2AC8, + ov101_021D2AE0, + ov101_021D2AF8, + ov101_021D2B28, + ov101_021D2B3C, + ov101_021D2B50, + ov101_021D2B64, + ov101_021D2B80 +}; + +static void ov101_021D2B8C (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = 0; + UnkStruct_ov101_021D2D88 * v1 = param0->unk_B4; + + do { + v1->unk_00 = 0; + v1->unk_10 = v0; + v1->unk_20 = param0; + v1->unk_1C = sub_0200D9E8(ov101_021D2C10, ¶m0->unk_B4[v0], 129 + v0); + v1++; v0++; + } while (v0 < 3); +} + +static void ov101_021D2BC0 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = 0; + + do { + sub_0200DA58(param0->unk_B4[v0].unk_1C); v0++; + } while (v0 < 3); +} + +static void ov101_021D2BDC (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1) +{ + param0->unk_B4[param1].unk_00 = 1; + param0->unk_B4[param1].unk_04 = 1; +} + +static void ov101_021D2BF4 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1) +{ + param0->unk_B4[param1].unk_00 = 2; +} + +static int ov101_021D2C04 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1) +{ + return param0->unk_B4[param1].unk_04; +} + +static void ov101_021D2C10 (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D2D88 * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_20; + + while (Unk_ov101_021D86C4[v0->unk_00](v0, v1) == 1) { + (void)0; + } +} + +static int ov101_021D2C30 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + return 0; +} + +static int ov101_021D2C34 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + ov101_021D3FE8(param1, param0->unk_10, param1->unk_8C); + return 0; +} + +static int ov101_021D2C4C (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + param0->unk_00++; + param0->unk_14 = 0; + param0->unk_18 = 0; + + if (param1->unk_30 == 1) { + if (param1->unk_08 == 0) { + if (ov101_021D2D88(param0, param1) == 0) { + ov101_021D3780(param0, param1); + param1->unk_30 = 0; + } + } else { + if (ov101_021D2DC0(param0, param1) == 0) { + ov101_021D3830(param0, param1); + param1->unk_30 = 0; + } + } + } else { + if (param1->unk_08 == 0) { + ov101_021D3780(param0, param1); + } else { + ov101_021D3830(param0, param1); + } + } + + return 1; +} + +static int ov101_021D2CA8 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + fx32 v0, v1; + int v2 = param0->unk_10; + int v3 = 0; + + v0 = param1->unk_90[v2] % (FX32_ONE * 32); + + if (v0) { + v3 = 1; + v1 = param1->unk_8C; + + if (v0 < v1) { + v1 = v0; + } + + v0 = ov101_021D4024(param1, v2, v1); + } else if (param0->unk_18) { + v3 = 1; + param0->unk_18--; + ov101_021D3FE8(param1, v2, param1->unk_8C); + v0 = param1->unk_90[v2] % (FX32_ONE * 32); + } + + if ((v0 == 0) && (param0->unk_18 == 0)) { + fx32 v4[5] = {(FX32_ONE * 4), (FX32_ONE * 8), (FX32_ONE * 8), (FX32_ONE * 8), (FX32_ONE * 16)}; + s32 v5 = param0->unk_18; + + if (v5 > 4) { + v5 = 4; + } + + param0->unk_08 = v4[v5]; + param0->unk_0C = 0; + param0->unk_00++; + + if (v3 == 0) { + return 1; + } + } + + return 0; +} + +static int ov101_021D2D50 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + int v0 = param0->unk_10; + + param1->unk_9C[v0] = param0->unk_08; + param0->unk_08 = -param0->unk_08; + param0->unk_0C++; + + if ((param0->unk_0C & 0x1) == 0) { + param0->unk_08 >>= 2; + } + + if (param0->unk_08 == 0) { + param0->unk_00 = 0; + param0->unk_04 = 0; + param1->unk_9C[v0] = 0; + } + + return 0; +} + +static int(*const Unk_ov101_021D86C4[5])(UnkStruct_ov101_021D2D88 *, UnkStruct_ov101_021D13C8 *) = { + ov101_021D2C30, + ov101_021D2C34, + ov101_021D2C4C, + ov101_021D2CA8, + ov101_021D2D50, +}; + +static int ov101_021D2D88 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + if (param1->unk_74 == 0) { + return 0; + } + + switch (param0->unk_10) { + case 0: + return ov101_021D2DE0(param0, param1); + case 1: + return ov101_021D2E1C(param0, param1); + case 2: + return ov101_021D2E58(param0, param1); + } + + GF_ASSERT(0); + return 0; +} + +static int ov101_021D2DC0 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + if (param1->unk_74 == 0) { + return 0; + } + + { + UnkEnum_ov101_021D9688 v0 = ov101_021D5618(param1->unk_74); + return ov101_021D3738(param0, param1, v0); + } +} + +static int ov101_021D2DE0 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + UnkEnum_ov101_021D9688 v0 = ov101_021D5618(param1->unk_74); + + if (v0 == 6) { + return 0; + } + + if (ov101_021D38FC(param0, param1) == 1) { + return ov101_021D2E94(param0, param1, v0); + } + + return ov101_021D2FAC(param0, param1, v0); +} + +static int ov101_021D2E1C (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + UnkEnum_ov101_021D9688 v0 = ov101_021D5618(param1->unk_74); + + if (v0 == 6) { + return 0; + } + + if (ov101_021D38FC(param0, param1) == 1) { + return ov101_021D32EC(param0, param1, v0); + } + + return ov101_021D3394(param0, param1, v0); +} + +static int ov101_021D2E58 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + UnkEnum_ov101_021D9688 v0 = ov101_021D5618(param1->unk_74); + + if (v0 == 6) { + return 0; + } + + if (ov101_021D38FC(param0, param1) == 1) { + return ov101_021D32EC(param0, param1, v0); + } + + return ov101_021D3394(param0, param1, v0); +} + +static int ov101_021D2E94 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2) +{ + int v0, v1, v2, v3, v4; + int v5 = param0->unk_10; + + for (v0 = 1; v0 <= 3; v0++) { + if (ov101_021D55D4(param1, v5, v0) == param2) { + for (v1 = 0; (v0 + v1) <= 3; v1++) { + if (ov101_021D3B34(param1, v1, param2) == 1) { + param0->unk_14 = v0 + v1; + param0->unk_18 = v1; + return 1; + } + } + } + } + + v2 = 4; + + if (param1->unk_70 == 1) { + v2 = 21; + } + + v4 = (int)param1->unk_A8[0]; + + for (v0 = 1; v0 <= v2; v0++) { + if (ov101_021D55D4(param1, v5, 1 - v0) == param2) { + for (v1 = 0; v1 < 3; v1++) { + if (ov101_021D3B34(param1, v0 + v1, param2) == 1) { + if (v1 == 0) { + v3 = v4 % 4; + + if ((v3 == 0) && (ov101_021D3B34(param1, v0 + 2, param2) == 1)) { + param0->unk_14 = 3; + param0->unk_18 = v0 + 2; + return 1; + } + } else if (v1 == 1) { + v3 = v4 % 6; + + if ((v3 < 2) && (ov101_021D3B34(param1, v0 + 2, param2) == 1)) { + param0->unk_14 = 3; + param0->unk_18 = v0 + 2; + return 1; + } + } + + param0->unk_14 = 1 + v1; + param0->unk_18 = v0 + v1; + return 1; + } + } + } + } + + return 0; +} + +static int ov101_021D2FAC (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2) +{ + int v0, v1, v2, v3, v4, v5; + int v6 = param0->unk_10; + + if (ov101_021D394C(param0, param1, &v2, &v3, &v4) == 0) { + return 0; + } + + if (ov101_021D3B34(param1, 0, param2) == 1) { + if (ov101_021D55D4(param1, v6, v2) == param2) { + param0->unk_14 = v2; + param0->unk_18 = 0; + return 1; + } + + if ((v3 != 0) && (ov101_021D55D4(param1, v6, v3) == param2)) { + param0->unk_14 = v3; + param0->unk_18 = 0; + return 1; + } + + if ((v4 != 0) && (ov101_021D55D4(param1, v6, v4) == param2)) { + param0->unk_14 = v4; + param0->unk_18 = 0; + return 1; + } + } + + v5 = 4; + + if (param1->unk_70 == 1) { + v5 = 21; + } + + if (v3 == 0) { + for (v0 = 1; v0 <= v5; v0++) { + if (ov101_021D55D4(param1, v6, v2 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v2; + param0->unk_18 = v0; + return 1; + } + } + } + + return 0; + } + + if (v4 == 0) { + for (v0 = 1; v0 <= v5; v0++) { + if ((v0 & 0x1)) { + if (ov101_021D55D4(param1, v6, v2 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v2; + param0->unk_18 = v0; + return 1; + } + } + + if (ov101_021D55D4(param1, v6, v3 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + } else { + if (ov101_021D55D4(param1, v6, v3 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + + if (ov101_021D55D4(param1, v6, v2 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v2; + param0->unk_18 = v0; + return 1; + } + } + } + } + + return 0; + } + + for (v0 = 1; v0 <= v5; v0++) { + int v7 = v0 & 0x3; + + if (v7 == 0) { + if (ov101_021D55D4(param1, v6, v2 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v2; + param0->unk_18 = v0; + return 1; + } + } + + if (ov101_021D55D4(param1, v6, v3 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + + if (ov101_021D55D4(param1, v6, v4 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v4; + param0->unk_18 = v0; + return 1; + } + } + } else if (v7 == 1) { + if (ov101_021D55D4(param1, v6, v3 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + + if (ov101_021D55D4(param1, v6, v2 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v2; + param0->unk_18 = v0; + return 1; + } + } + } else { + if (ov101_021D55D4(param1, v6, v4 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v4; + param0->unk_18 = v0; + return 1; + } + } + + if (ov101_021D55D4(param1, v6, v2 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v2; + param0->unk_18 = v0; + return 1; + } + } + + if (ov101_021D55D4(param1, v6, v3 - v0) == param2) { + if (ov101_021D3B34(param1, v0, param2) == 1) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + } + } + + return 0; +} + +static int ov101_021D32EC (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2) +{ + int v0, v1, v2; + int v3 = param0->unk_10; + + for (v0 = 1; v0 <= 3; v0++) { + if (ov101_021D55D4(param1, v3, v0) == param2) { + param0->unk_14 = v0; + param0->unk_18 = 0; + return 1; + } + } + + v2 = 4; + + if (param1->unk_70 == 1) { + v2 = 21; + } + + for (v0 = 1; v0 <= v2; v0++) { + if (ov101_021D55D4(param1, v3, 1 - v0) == param2) { + v1 = v0 % 4; + + if (v1 == 1) { + param0->unk_14 = 3; + param0->unk_18 = v0 + 2; + return 1; + } + + if ((v1 == 2) || (v1 == 3)) { + param0->unk_14 = 2; + param0->unk_18 = v0 + 1; + return 1; + } + + param0->unk_14 = 1; + param0->unk_18 = v0; + return 1; + } + } + + return 0; +} + +static int ov101_021D3394 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2) +{ + int v0, v1, v2, v3, v4, v5, v6 = 4, v7 = param0->unk_10; + + if (ov101_021D394C(param0, param1, &v3, &v4, &v5) == 0) { + return 0; + } + + if (ov101_021D55D4(param1, v7, v3) == param2) { + param0->unk_14 = v3; + param0->unk_18 = 0; + return 1; + } + + if ((v4 != 0) && (ov101_021D55D4(param1, v7, v4) == param2)) { + param0->unk_14 = v4; + param0->unk_18 = 0; + return 1; + } + + if ((v5 != 0) && (ov101_021D55D4(param1, v7, v5) == param2)) { + param0->unk_14 = v5; + param0->unk_18 = 0; + return 1; + } + + v6 = 4; + + if (param1->unk_70 == 1) { + v6 = 21; + } + + if (v4 == 0) { + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v3 - v0) == param2) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + + return 0; + } + + v2 = (int)param1->unk_A8[v7]; + + if (v5 == 0) { + if ((v2 & 0x1)) { + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v3 - v0) == param2) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v4 - v0) == param2) { + param0->unk_14 = v4; + param0->unk_18 = v0; + return 1; + } + } + } else { + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v4 - v0) == param2) { + param0->unk_14 = v4; + param0->unk_18 = v0; + return 1; + } + } + + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v3 - v0) == param2) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + } + + return 0; + } + + v2 %= 3; + + if (v2 == 0) { + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v3 - v0) == param2) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v4 - v0) == param2) { + param0->unk_14 = v4; + param0->unk_18 = v0; + return 1; + } + } + + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v5 - v0) == param2) { + param0->unk_14 = v5; + param0->unk_18 = v0; + return 1; + } + } + } else if (v2 == 1) { + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v4 - v0) == param2) { + param0->unk_14 = v4; + param0->unk_18 = v0; + return 1; + } + } + + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v5 - v0) == param2) { + param0->unk_14 = v5; + param0->unk_18 = v0; + return 1; + } + } + + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v3 - v0) == param2) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + } else { + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v5 - v0) == param2) { + param0->unk_14 = v5; + param0->unk_18 = v0; + return 1; + } + } + + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v3 - v0) == param2) { + param0->unk_14 = v3; + param0->unk_18 = v0; + return 1; + } + } + + for (v0 = 1; v0 <= v6; v0++) { + if (ov101_021D55D4(param1, v7, v4 - v0) == param2) { + param0->unk_14 = v4; + param0->unk_18 = v0; + return 1; + } + } + } + + return 0; +} + +static int ov101_021D3738 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, UnkEnum_ov101_021D9688 param2) +{ + int v0, v1, v2; + int v3 = param0->unk_10; + + v2 = 4; + + if (param1->unk_70 == 1) { + v2 = 21; + } + + for (v0 = 0; v0 <= v2; v0++) { + if (ov101_021D55D4(param1, v3, 2 - v0) == param2) { + param0->unk_14 = 2; + param0->unk_18 = v0; + return 1; + } + } + + return 0; +} + +static void ov101_021D3780 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + int v0, v1; + + v1 = ov101_021D38E4(param1); + + if ((param0->unk_10 != 0) && (v1 < 2)) { + return; + } + + if ((param0->unk_10 == 0) && (v1 < 2)) { + for (v0 = 0; v0 <= 21; v0++) { + if (ov101_021D3AF0(param1, v0) == 0) { + param0->unk_18 = v0; + return; + } + } + + GF_ASSERT(FALSE); + return; + } + + switch (param0->unk_10) { + case 0: + for (v0 = 1; v0 <= 21; v0++) { + if (ov101_021D3B50(param0, param1, v0) == 0) { + param0->unk_18 = v0; + return; + } + } + + GF_ASSERT(FALSE); + return; + case 1: + for (v0 = 1; v0 <= 21; v0++) { + if (ov101_021D3C9C(param0, param1, v0) == 0) { + param0->unk_18 = v0; + return; + } + } + + GF_ASSERT(FALSE); + + break; + case 2: + for (v0 = 1; v0 <= 21; v0++) { + if (ov101_021D3DD4(param0, param1, v0) == 0) { + param0->unk_18 = v0; + return; + } + } + + GF_ASSERT(FALSE); + break; + } + + GF_ASSERT(FALSE); +} + +static void ov101_021D3830 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + int v0, v1; + + v1 = ov101_021D38E4(param1); + + if ((param0->unk_10 != 0) && (v1 < 2)) { + return; + } + + if ((param0->unk_10 == 0) && (v1 < 2)) { + for (v0 = 0; v0 < 21; v0++) { + if (ov101_021D55D4(param1, 0, 2 - v0) != 3) { + param0->unk_18 = v0; + return; + } + } + + GF_ASSERT(FALSE); + } + + switch (param0->unk_10) { + case 0: + for (v0 = 0; v0 < 21; v0++) { + if (ov101_021D3F0C(param0, param1, v0) == 0) { + param0->unk_18 = v0; + return; + } + } + + GF_ASSERT(FALSE); + return; + case 1: + for (v0 = 0; v0 <= 21; v0++) { + if (ov101_021D3F58(param0, param1, v0) == 0) { + param0->unk_18 = v0; + return; + } + } + + GF_ASSERT(FALSE); + return; + case 2: + for (v0 = 0; v0 <= 21; v0++) { + if (ov101_021D3FA0(param0, param1, v0) == 0) { + param0->unk_18 = v0; + return; + } + } + + GF_ASSERT(FALSE); + } + + GF_ASSERT(FALSE); +} + +static int ov101_021D38E4 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0 = 0, v1 = 0; + + do { + if (param0->unk_7C[v0] != 1) { + v1++; + } + + v0++; + } while (v0 < 3); + + return v1; +} + +static int ov101_021D38FC (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1) +{ + switch (param0->unk_10) { + case 0: + if ((param1->unk_7C[1] != 1) || (param1->unk_7C[2] != 1)) { + return 0; + } + + break; + case 1: + if ((param1->unk_7C[0] != 1) || (param1->unk_7C[2] != 1)) { + return 0; + } + + break; + case 2: + if ((param1->unk_7C[0] != 1) || (param1->unk_7C[1] != 1)) { + return 0; + } + + break; + } + + return 1; +} + +static int ov101_021D394C (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int * param2, int * param3, int * param4) +{ + UnkEnum_ov101_021D394C v0 = param1->unk_7C[0]; + UnkEnum_ov101_021D394C v1 = param1->unk_7C[1]; + UnkEnum_ov101_021D394C v2 = param1->unk_7C[2]; + UnkStruct_ov101_021D2D88 * v3 = ¶m1->unk_B4[0]; + UnkStruct_ov101_021D2D88 * v4 = ¶m1->unk_B4[1]; + UnkStruct_ov101_021D2D88 * v5 = ¶m1->unk_B4[2]; + int v6 = v3->unk_14; + int v7 = v4->unk_14; + int v8 = v5->unk_14; + + *param2 = 0; + *param3 = 0; + *param4 = 0; + + switch (param0->unk_10) { + case 0: + if ((v1 != 1) && (v2 != 1)) { + if (v7 == v8) { + *param2 = v7; + return 1; + } + + if (v8 == 1) { + *param2 = 3; + return 1; + } + + *param2 = 1; + return 1; + } + + if (v1 != 1) { + if (v7 == 2) { + *param2 = 1; + *param3 = 2; + *param4 = 3; + return 1; + } + + *param2 = v7; + return 1; + } + + if (v8 == 2) { + *param2 = v8; + return 1; + } + + *param2 = 1; + *param3 = 3; + return 1; + case 1: + if ((v0 != 1) && (v2 != 1)) { + if (v6 == v8) { + *param2 = v6; + return 1; + } + + *param2 = 2; + return 1; + } + + if (v0 != 1) { + if (v6 == 2) { + *param2 = 2; + return 1; + } + + if (v6 == 1) { + *param2 = 1; + *param3 = 2; + return 1; + } + + *param2 = 2; + *param3 = 3; + return 1; + } + + if (v8 == 2) { + *param2 = 2; + return 1; + } + + if (v8 == 1) { + *param2 = 1; + *param3 = 2; + return 1; + } + + *param2 = 2; + *param3 = 3; + return 1; + case 2: + if ((v0 != 1) && (v1 != 1)) { + if (v6 == v7) { + *param2 = v6; + return 1; + } + + if (v6 == 1) { + *param2 = 3; + } else { + *param2 = 1; + } + + return 1; + } + + if (v0 != 1) { + if (v6 == 2) { + *param2 = 2; + return 1; + } + + *param2 = 1; + *param3 = 3; + return 1; + } + + if (v7 == 2) { + *param2 = 1; + *param3 = 2; + *param4 = 3; + return 1; + } + + *param2 = v7; + return 1; + } + + GF_ASSERT(FALSE); + return 0; +} + +static int ov101_021D3AF0 (UnkStruct_ov101_021D13C8 * param0, int param1) +{ + u32 v0; + + v0 = ov101_021D55D4(param0, 0, 1 - param1); + + if (v0 == 3) { + return 1; + } + + v0 = ov101_021D55D4(param0, 0, 2 - param1); + + if (v0 == 3) { + return 1; + } + + v0 = ov101_021D55D4(param0, 0, 3 - param1); + + if (v0 == 3) { + return 1; + } + + return 0; +} + +static int ov101_021D3B34 (UnkStruct_ov101_021D13C8 * param0, int param1, UnkEnum_ov101_021D9688 param2) +{ + if (param2 == 3) { + return 1; + } + + if (ov101_021D3AF0(param0, param1) == 0) { + return 1; + } + + return 0; +} + +static int ov101_021D3B50 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2) +{ + u32 v0, v1, v2; + int v3 = param1->unk_B4[1].unk_18; + int v4 = param1->unk_B4[2].unk_18; + + v0 = ov101_021D55D4(param1, 0, 1 - param2); + v1 = ov101_021D55D4(param1, 1, 1 - v3); + v2 = ov101_021D55D4(param1, 2, 1 - v4); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 2 - param2); + v1 = ov101_021D55D4(param1, 1, 2 - v3); + v2 = ov101_021D55D4(param1, 2, 2 - v4); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 3 - param2); + v1 = ov101_021D55D4(param1, 1, 3 - v3); + v2 = ov101_021D55D4(param1, 2, 3 - v4); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 1 - param2); + v1 = ov101_021D55D4(param1, 1, 2 - v3); + v2 = ov101_021D55D4(param1, 2, 3 - v4); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 3 - param2); + v1 = ov101_021D55D4(param1, 1, 2 - v3); + v2 = ov101_021D55D4(param1, 2, 1 - v4); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return 1; + } + + return 0; +} + +static int ov101_021D3C9C (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2) +{ + u32 v0, v1, v2; + int v3 = param1->unk_B4[0].unk_18; + int v4 = param1->unk_B4[2].unk_18; + + v0 = ov101_021D55D4(param1, 0, 1 - v3); + v1 = ov101_021D55D4(param1, 1, 1 - param2); + v2 = ov101_021D55D4(param1, 2, 1 - v4); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 2 - v3); + v1 = ov101_021D55D4(param1, 1, 2 - param2); + v2 = ov101_021D55D4(param1, 2, 2 - v4); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 3 - v3); + v1 = ov101_021D55D4(param1, 1, 3 - param2); + v2 = ov101_021D55D4(param1, 2, 3 - v4); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 1 - v3); + v1 = ov101_021D55D4(param1, 1, 2 - param2); + v2 = ov101_021D55D4(param1, 2, 3 - v4); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 3 - v3); + v1 = ov101_021D55D4(param1, 1, 2 - param2); + v2 = ov101_021D55D4(param1, 2, 1 - v4); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + return 0; +} + +static int ov101_021D3DD4 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2) +{ + u32 v0, v1, v2; + int v3 = param1->unk_B4[0].unk_18; + int v4 = param1->unk_B4[1].unk_18; + + v0 = ov101_021D55D4(param1, 0, 1 - v3); + v1 = ov101_021D55D4(param1, 1, 1 - v4); + v2 = ov101_021D55D4(param1, 2, 1 - param2); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 2 - v3); + v1 = ov101_021D55D4(param1, 1, 2 - v4); + v2 = ov101_021D55D4(param1, 2, 2 - param2); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 3 - v3); + v1 = ov101_021D55D4(param1, 1, 3 - v4); + v2 = ov101_021D55D4(param1, 2, 3 - param2); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 1 - v3); + v1 = ov101_021D55D4(param1, 1, 2 - v4); + v2 = ov101_021D55D4(param1, 2, 3 - param2); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + v0 = ov101_021D55D4(param1, 0, 3 - v3); + v1 = ov101_021D55D4(param1, 1, 2 - v4); + v2 = ov101_021D55D4(param1, 2, 1 - param2); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + return 0; +} + +static int ov101_021D3F0C (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2) +{ + u32 v0, v1, v2; + int v3 = param1->unk_B4[1].unk_18; + int v4 = param1->unk_B4[2].unk_18; + + v0 = ov101_021D55D4(param1, 0, 2 - param2); + v1 = ov101_021D55D4(param1, 1, 2 - v3); + v2 = ov101_021D55D4(param1, 2, 2 - v4); + + if ((v0 == 3) || (v0 == v1) && (v0 == v2)) { + return 1; + } + + return 0; +} + +static int ov101_021D3F58 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2) +{ + u32 v0, v1, v2; + int v3 = param1->unk_B4[0].unk_18; + int v4 = param1->unk_B4[2].unk_18; + + v0 = ov101_021D55D4(param1, 0, 2 - v3); + v1 = ov101_021D55D4(param1, 1, 2 - param2); + v2 = ov101_021D55D4(param1, 2, 2 - v4); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + return 0; +} + +static int ov101_021D3FA0 (UnkStruct_ov101_021D2D88 * param0, UnkStruct_ov101_021D13C8 * param1, int param2) +{ + u32 v0, v1, v2; + int v3 = param1->unk_B4[0].unk_18; + int v4 = param1->unk_B4[1].unk_18; + + v0 = ov101_021D55D4(param1, 0, 2 - v3); + v1 = ov101_021D55D4(param1, 1, 2 - v4); + v2 = ov101_021D55D4(param1, 2, 2 - param2); + + if ((v0 == v1) && (v0 == v2)) { + return 1; + } + + return 0; +} + +static void ov101_021D3FE8 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1, fx32 param2) +{ + param0->unk_90[param1] += param2; + param0->unk_90[param1] %= (FX32_ONE * ((21 * 32))); + param0->unk_A8[param1] = 21 - ((((param0->unk_90[param1]) / FX32_ONE)) / 32); +} + +static fx32 ov101_021D4024 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1, fx32 param2) +{ + fx32 v0; + + v0 = param0->unk_90[param1] % (FX32_ONE * 32); + + if (v0) { + if (v0 < param2) { + param2 = v0; + } + + ov101_021D3FE8(param0, param1, param2); + v0 = param0->unk_90[param1] % (FX32_ONE * 32); + } + + return v0; +} + +static u32 ov101_021D405C (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = ((u32)sub_0201D2E8()) % 100; + return v0; +} + +static int ov101_021D406C (u32 param0, u32 * param1) +{ + u32 v0 = *param1; + + (*param1) -= param0; + + if ((int)(*param1) < 0) { + (*param1) = 0; + } + + if (v0 < param0) { + return 1; + } + + return 0; +} + +static int ov101_021D4084 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = ov101_021D405C(param0); + u32 v1 = Unk_ov101_021D9520[param0->unk_88]; + + if (v1 > v0) { + return 1; + } + + return 0; +} + +static int ov101_021D40A8 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_74 = 0; + + if (ov101_021D4084(param0) == 1) { + u32 v0 = ov101_021D405C(param0); + const UnkStruct_ov101_021D95C8 * v1 = &Unk_ov101_021D95C8[param0->unk_88]; + + param0->unk_470++; + + if (ov101_021D406C(v1->unk_00.unk_00, &v0)) { + param0->unk_74 |= (1 << 3); + param0->unk_4A0++; + return 1; + } + + if (ov101_021D406C(v1->unk_00.unk_02, &v0)) { + param0->unk_74 |= (1 << 2); + param0->unk_49C++; + return 1; + } + + if (ov101_021D406C(v1->unk_04.unk_00, &v0)) { + param0->unk_74 |= (1 << 7); + param0->unk_4B0++; + return 1; + } + + if (ov101_021D406C(v1->unk_04.unk_02, &v0)) { + param0->unk_74 |= (1 << 6); + param0->unk_4AC++; + return 1; + } + + if (ov101_021D406C(v1->unk_08.unk_00, &v0)) { + param0->unk_74 |= (1 << 5); + param0->unk_4A8++; + return 1; + } + + if (ov101_021D406C(v1->unk_08.unk_02, &v0)) { + param0->unk_74 |= (1 << 4); + param0->unk_4A4++; + return 1; + } + + if (ov101_021D406C(v1->unk_0C.unk_00, &v0)) { + param0->unk_74 |= (1 << 1); + param0->unk_498++; + return 1; + } + + param0->unk_74 |= (1 << 0); + param0->unk_494++; + + return 1; + } + + return 0; +} + +static int ov101_021D41EC (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = ov101_021D405C(param0); + u32 v1 = Unk_ov101_021D94D8[param0->unk_88]; + + if (v0 < v1) { + return 1; + } + + return 0; +} + +static void ov101_021D4210 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0; + u32 v1 = ov101_021D405C(param0); + const UnkStruct_ov101_021D9934 * v2 = Unk_ov101_021D9934[param0->unk_88]; + + for (v0 = 0; v0 < UnkEnum_ov101_021D9934_06; v0++) { + if (ov101_021D406C(v2[v0].unk_00, &v1) == 1) { + param0->unk_50 = v2[v0].unk_04; + param0->unk_4C = v2[v0].unk_08; + param0->unk_18 = Unk_ov101_021D9568[param0->unk_50]; + + switch (param0->unk_4C) { + case UnkEnum_ov101_021D9934_1_00: + param0->unk_478++; + break; + case UnkEnum_ov101_021D9934_1_01: + param0->unk_47C++; + break; + case UnkEnum_ov101_021D9934_1_02: + param0->unk_480++; + break; + } + + return; + } + } + + v0--; + + param0->unk_50 = v2[v0].unk_04; + param0->unk_4C = v2[v0].unk_08; + param0->unk_18 = Unk_ov101_021D9568[param0->unk_50]; + + GF_ASSERT(FALSE); +} + +static void ov101_021D42D0 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = 0, v1 = ov101_021D405C(param0); + const UnkStruct_ov101_021D9784 * v2 = Unk_ov101_021D9784[param0->unk_88][param0->unk_4C]; + + do { + if (ov101_021D406C(v2[v0].unk_00, &v1) == 1) { + param0->unk_13C.unk_1C = v2[v0].unk_04; + + switch (param0->unk_13C.unk_1C) { + case UnkEnum_ov101_021D6764_00: + param0->unk_488++; + break; + case UnkEnum_ov101_021D6764_01: + param0->unk_484++; + break; + case UnkEnum_ov101_021D6764_02: + param0->unk_48C++; + break; + } + + return; + } + + v0++; + } while (v0 < UnkEnum_ov101_021D6764_03); + + param0->unk_13C.unk_1C = UnkEnum_ov101_021D6764_01; + GF_ASSERT(FALSE); +} + +static int ov101_021D4370 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = Unk_ov101_021D9538[param0->unk_88]; + u32 v1 = ov101_021D405C(param0); + + if (v1 < v0) { + return 1; + } + + return 0; +} + +static void ov101_021D4394 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0; + const u32 * v1 = Unk_ov101_021D9628[param0->unk_88]; + u32 v2 = ov101_021D405C(param0); + + param0->unk_74 = 0; + + if (ov101_021D4370(param0) == 0) { + param0->unk_474++; + + switch (param0->unk_50) { + case UnkEnum_ov101_021D9934_00: + case UnkEnum_ov101_021D9934_01: + case UnkEnum_ov101_021D9934_02: + param0->unk_74 |= (1 << 9); + param0->unk_4B8++; + return; + case UnkEnum_ov101_021D9934_03: + case UnkEnum_ov101_021D9934_04: + case UnkEnum_ov101_021D9934_05: + param0->unk_74 |= (1 << 8); + param0->unk_4B4++; + return; + } + + GF_ASSERT(FALSE); + param0->unk_74 |= (1 << 9); + return; + } + + if (ov101_021D406C(v1[0], &v2) == 1) { + param0->unk_74 |= (1 << 2); + param0->unk_49C++; + return; + } + + if (ov101_021D406C(v1[1], &v2) == 1) { + param0->unk_74 |= (1 << 6); + param0->unk_4AC++; + return; + } + + if (ov101_021D406C(v1[1], &v2) == 1) { + param0->unk_74 |= (1 << 4); + param0->unk_4A4++; + return; + } + + param0->unk_74 = (1 << 0); + param0->unk_494++; +} + +static int ov101_021D44A0 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = ov101_021D405C(param0); + u32 v1 = Unk_ov101_021D9580[param0->unk_88]; + + if (v0 < v1) { + return 1; + } + + return 0; +} + +static int ov101_021D44C4 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = ov101_021D405C(param0); + u32 v1 = Unk_ov101_021D9508[param0->unk_88]; + + if (v0 < v1) { + return 1; + } + + return 0; +} + +static int ov101_021D44E8 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = param0->unk_18; + u32 v1 = ov101_021D405C(param0); + + if (v1 < v0) { + return 1; + } + + return 0; +} + +static void ov101_021D44FC (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0 = param0->unk_18; + u32 v1 = ov101_021D405C(param0); + const u32 * v2 = Unk_ov101_021D9598[param0->unk_88]; + + if (param0->unk_28 == 2) { + v0 -= 10; + } else { + if (ov101_021D406C(v2[0], &v1) == 1) { + v0 -= 10; + } else if (ov101_021D406C(v2[1], &v1) == 1) { + v0 -= 5; + } + } + + if ((int)v0 < 0) { + v0 = 0; + } + + param0->unk_18 = v0; +} + +static UnkEnum_ov101_021D4550 ov101_021D4550 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0; + u32 v1 = param0->unk_18; + u32 v2 = ov101_021D405C(param0); + const UnkStruct_ov101_021D9AE4 * v3 = Unk_ov101_021D9AE4[param0->unk_88]; + + for (v0 = 0; v0 < UnkEnum_ov101_021D9AE4_09; v0++) { + if (v1 >= v3[v0].unk_00) { + if (ov101_021D406C(v3[v0].unk_04, &v2) == 1) { + return UnkEnum_ov101_021D4550_01; + } + + if (ov101_021D406C(v3[v0].unk_08, &v2) == 1) { + return UnkEnum_ov101_021D4550_00; + } + + return UnkEnum_ov101_021D4550_02; + } + } + + GF_ASSERT(FALSE); + return UnkEnum_ov101_021D4550_00; +} + +static void ov101_021D45B0 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_34 = sub_0201D2E8() % 6; +} + +static void ov101_021D45C4 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D4714 * v0 = ¶m0->unk_120; + + v0->unk_00 = 0; + v0->unk_04 = 0; + v0->unk_0C = param0; + v0->unk_10 = sub_0200D9E8(ov101_021D4614, v0, 138); +} + +static void ov101_021D45E8 (UnkStruct_ov101_021D13C8 * param0) +{ + sub_0200DA58(param0->unk_120.unk_10); +} + +static void ov101_021D45F8 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_120.unk_04 = 0; + param0->unk_120.unk_08 = 0; + param0->unk_120.unk_00 = 1; +} + +static int ov101_021D460C (UnkStruct_ov101_021D13C8 * param0) +{ + return param0->unk_120.unk_04; +} + +static void ov101_021D4614 (UnkStruct_0201CD38 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D4714 * v1 = param1; + UnkStruct_ov101_021D13C8 * v2 = v1->unk_0C; + + switch (v1->unk_00) { + case 0: + break; + case 1: + ov101_021D4714(v1); + v1->unk_00++; + break; + case 2: + if (((v1->unk_14 != NULL) && (ov101_021D505C(v1->unk_14) != 1)) || ((v1->unk_18 != NULL) && (ov101_021D505C(v1->unk_18) != 1))) { + break; + } + + v1->unk_00++; + case 3: + if (ov101_021D55F8(PAD_BUTTON_X) || (v2->unk_64 == 0)) { + sub_02005748(1581); + v2->unk_60 += v2->unk_64; + + if (v2->unk_60 >= 50000) { + v2->unk_60 = 50000; + } + + if (v2->unk_08 == 1) { + v2->unk_14 += v2->unk_64; + } + + v2->unk_64 = 0; + + if (v1->unk_14 != NULL) { + sub_0207136C(v1->unk_14); + v1->unk_14 = NULL; + } + + if (v1->unk_18 != NULL) { + sub_0207136C(v1->unk_18); + v1->unk_18 = NULL; + } + + v1->unk_04 = 1; + v1->unk_00 = 0; + + return; + } + + v0 = 0x3; + + if (Unk_021BF67C.unk_44 & (PAD_BUTTON_A | PAD_BUTTON_B | PAD_BUTTON_X | PAD_BUTTON_Y)) { + v0 = 0x1; + } + + v1->unk_08++; + + if ((v1->unk_08 & v0) == 0) { + v2->unk_64--; + v2->unk_60++; + + if (v2->unk_60 >= 50000) { + v2->unk_60 = 50000; + } + + sub_02005748(1581); + + if (v2->unk_08 == 1) { + v2->unk_14++; + } + } + } +} + +static void ov101_021D4714 (UnkStruct_ov101_021D4714 * param0) +{ + int v0; + UnkStruct_ov101_021D13C8 * v1 = param0->unk_0C; + u32 v2 = v1->unk_48; + + GF_ASSERT(v2 != 0); + + for (v0 = 0; v0 < UnkEnum_ov101_021D4F58_05; v0++, v2 >>= 1) { + if ((v2 & 0x1)) { + if (param0->unk_14 == NULL) { + param0->unk_14 = ov101_021D5028(v1, v0, v1->unk_64); + } else if (param0->unk_18 == NULL) { + param0->unk_18 = ov101_021D5028(v1, v0, v1->unk_64); + } else { + GF_ASSERT(FALSE); + } + } + } +} + +static void ov101_021D4764 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D4764 * v0 = ¶m0->unk_13C; + + v0->unk_00 = 0; + v0->unk_04 = 0; + v0->unk_20 = param0; + v0->unk_24 = sub_0200D9E8(ov101_021D4824, v0, 132); +} + +static void ov101_021D4788 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D4764 * v0 = ¶m0->unk_13C; + sub_0200DA58(v0->unk_24); +} + +static void ov101_021D4798 (UnkStruct_ov101_021D13C8 * param0, u32 param1) +{ + UnkStruct_ov101_021D4764 * v0 = ¶m0->unk_13C; + + v0->unk_00 = param1; + v0->unk_04 = 0; + v0->unk_08 = 0; + v0->unk_10 = 0; +} + +static int ov101_021D47AC (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D4764 * v0 = ¶m0->unk_13C; + return v0->unk_08; +} + +static void ov101_021D47B4 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_13C.unk_0C = 0; + param0->unk_13C.unk_38 = ov101_021D7228(param0); + param0->unk_13C.unk_3C = ov101_021D73B4(param0); + param0->unk_13C.unk_40 = ov101_021D7550(param0); + param0->unk_13C.unk_44 = ov101_021D76B4(param0); +} + +static void ov101_021D47F0 (UnkStruct_ov101_021D13C8 * param0) +{ + param0->unk_13C.unk_0C = 1; + + sub_0207136C(param0->unk_13C.unk_38); + sub_0207136C(param0->unk_13C.unk_3C); + sub_0207136C(param0->unk_13C.unk_40); + sub_0207136C(param0->unk_13C.unk_44); +} + +static void ov101_021D4824 (UnkStruct_0201CD38 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D4764 * v1 = param1; + + int(*const * v2)(UnkStruct_ov101_021D4764 *); + + do { + v2 = Unk_ov101_021D8774[v1->unk_00]; + v0 = v2[v1->unk_04](v1); + } while (v0 == 1); +} + +static int ov101_021D4844 (UnkStruct_ov101_021D4764 * param0) +{ + param0->unk_28 = ov101_021D5D58(param0->unk_20, param0->unk_18); + param0->unk_04++; + + return 0; +} + +static int ov101_021D485C (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D5DC4(param0->unk_28) == 0) { + return 0; + } + + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_01); + param0->unk_04++; + + return 0; +} + +static int ov101_021D4880 (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D5DC4(param0->unk_28) == 0) { + return 0; + } + + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_05); + param0->unk_08 = 1; + param0->unk_04++; + + return 0; +} + +static int ov101_021D48A8 (UnkStruct_ov101_021D4764 * param0) +{ + return 0; +} + +static int(*const Unk_ov101_021D8648[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D48A8, +}; + +static int(*const Unk_ov101_021D8690[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4844, + ov101_021D485C, + ov101_021D4880, + ov101_021D48A8, +}; + +static int ov101_021D48AC (UnkStruct_ov101_021D4764 * param0) +{ + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_04); + param0->unk_04++; + return 0; +} + +static int ov101_021D48C4 (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D5DC4(param0->unk_28) == 1) { + sub_0207136C(param0->unk_28); + param0->unk_08 = 1; + param0->unk_04++; + } + + return 0; +} + +static int(*const Unk_ov101_021D8678[])(UnkStruct_ov101_021D4764 * work) = { + ov101_021D48AC, + ov101_021D48C4, + ov101_021D48A8, +}; + +static int ov101_021D48E8 (UnkStruct_ov101_021D4764 * param0) +{ + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_02); + param0->unk_04++; + return 0; +} + +static int ov101_021D4900 (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D5DC4(param0->unk_28) == 1) { + param0->unk_2C = ov101_021D6484(param0->unk_20); + param0->unk_30 = ov101_021D6764(param0->unk_20, param0->unk_1C); + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D492C (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D67B0(param0->unk_30) == 1) { + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_01); + ov101_021D5DA4(param0->unk_28, 1); + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D4954 (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D67B0(param0->unk_30) == 1) { + sub_0207136C(param0->unk_2C); + param0->unk_08 = 1; + param0->unk_04++; + } + + return 0; +} + +static int(*const Unk_ov101_021D8714[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D48E8, + ov101_021D4900, + ov101_021D492C, + ov101_021D4954, + ov101_021D48A8, +}; + +static int ov101_021D4978 (UnkStruct_ov101_021D4764 * param0) +{ + param0->unk_2C = ov101_021D6484(param0->unk_20); + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_02); + param0->unk_04++; + return 0; +} + +static int ov101_021D4998 (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D67B0(param0->unk_30) == 1) { + sub_0207136C(param0->unk_30); + sub_0207136C(param0->unk_2C); + ov101_021D5DA4(param0->unk_28, 0); + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_03); + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D49CC (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D5DC4(param0->unk_28) == 1) { + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_04); + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D49EC (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D5DC4(param0->unk_28) == 1) { + sub_0207136C(param0->unk_28); + param0->unk_08 = 1; + param0->unk_04++; + } + + return 0; +} + +static int(*const Unk_ov101_021D86EC[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4978, + ov101_021D4998, + ov101_021D49CC, + ov101_021D49EC, + ov101_021D48A8, +}; + +static int ov101_021D4A10 (UnkStruct_ov101_021D4764 * param0) +{ + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_03); + param0->unk_34 = ov101_021D6DF0(param0->unk_20); + param0->unk_10 = 0; + param0->unk_04++; + return 0; +} + +static int ov101_021D4A30 (UnkStruct_ov101_021D4764 * param0) +{ + param0->unk_10++; + + if (param0->unk_10 >= 48) { + param0->unk_10 = 0; + param0->unk_04++; + sub_02005844(35, 0); + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_04); + } + + return 0; +} + +static int ov101_021D4A5C (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D6E1C(param0->unk_34) == 1) { + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_03); + sub_0207136C(param0->unk_34); + param0->unk_04++; + param0->unk_10 = 0; + param0->unk_08 = 1; + } + + return 0; +} + +static int(*const Unk_ov101_021D86A0[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4A10, + ov101_021D4A30, + ov101_021D4A5C, + ov101_021D48A8, +}; + +static int ov101_021D4A8C (UnkStruct_ov101_021D4764 * param0) +{ + const UnkStruct_ov101_021D87A8 * v0 = &Unk_ov101_021D87A8[param0->unk_20->unk_34]; + + param0->unk_04++; + param0->unk_14 = 0; + + ov101_021D679C(param0->unk_30, v0->unk_0C[param0->unk_14]); + + return 0; +} + +static int ov101_021D4AB8 (UnkStruct_ov101_021D4764 * param0) +{ + int v0, v1 = 0; + + for (v0 = 0; v0 < 3; v0++) { + if (param0->unk_20->unk_7C[v0] != 1) { + v1++; + } + } + + if ((param0->unk_14 < 2) && (param0->unk_14 != v1)) { + const UnkStruct_ov101_021D87A8 * v2 = &Unk_ov101_021D87A8[param0->unk_20->unk_34]; + + param0->unk_14 = v1; + ov101_021D679C(param0->unk_30, v2->unk_0C[param0->unk_14]); + } + + return 0; +} + +static int(*const Unk_ov101_021D8684[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4A8C, + ov101_021D4AB8, + ov101_021D48A8, +}; + +static int ov101_021D4AFC (UnkStruct_ov101_021D4764 * param0) +{ + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_03); + param0->unk_04++; + return 0; +} + +static int(*const Unk_ov101_021D8654[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4AFC, + ov101_021D48A8 +}; + +static int ov101_021D4B14 (UnkStruct_ov101_021D4764 * param0) +{ + ov101_021D47F0(param0->unk_20); + param0->unk_2C = ov101_021D6484(param0->unk_20); + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_02); + param0->unk_04++; + return 0; +} + +static int ov101_021D4B38 (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D67B0(param0->unk_30) == 1) { + sub_0207136C(param0->unk_30); + sub_0207136C(param0->unk_2C); + ov101_021D5DA4(param0->unk_28, 0); + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_03); + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D4B6C (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D5DC4(param0->unk_28) == 1) { + ov101_021D72D4(param0->unk_20); + ov101_021D7460(param0->unk_20); + ov101_021D77E4(param0->unk_20, UnkEnum_ov101_021D77E4_00); + ov101_021D77E4(param0->unk_20, UnkEnum_ov101_021D77E4_01); + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D4BA0 (UnkStruct_ov101_021D4764 * param0) +{ + param0->unk_10++; + + if (param0->unk_10 >= 45) { + param0->unk_10 = 0; + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_04); + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D4BC4 (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D5DC4(param0->unk_28) == 1) { + sub_0207136C(param0->unk_28); + param0->unk_08 = 1; + param0->unk_04++; + } + + return 0; +} + +static int(*const Unk_ov101_021D8728[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4B14, + ov101_021D4B38, + ov101_021D4B6C, + ov101_021D4BA0, + ov101_021D4BC4, + ov101_021D48A8, +}; + +static int ov101_021D4BE8 (UnkStruct_ov101_021D4764 * param0) +{ + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_04); + param0->unk_08 = 1; + param0->unk_04++; + return 0; +} + +static int(*const Unk_ov101_021D8664[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4BE8, + ov101_021D48A8 +}; + +static int ov101_021D4C04 (UnkStruct_ov101_021D4764 * param0) +{ + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_08); + param0->unk_08 = 1; + param0->unk_04++; + return 0; +} + +static int(*const Unk_ov101_021D865C[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4C04, ov101_021D48A8, +}; + +static int ov101_021D4C20 (UnkStruct_ov101_021D4764 * param0) +{ + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_06); + param0->unk_04++; + param0->unk_08 = 1; + return 0; +} + +static int(*const Unk_ov101_021D864C[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4C20, + ov101_021D48A8 +}; + +static int ov101_021D4C3C (UnkStruct_ov101_021D4764 * param0) +{ + param0->unk_2C = ov101_021D6484(param0->unk_20); + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_02); + param0->unk_0C = 1; + param0->unk_04++; + return 0; +} + +static int ov101_021D4C60 (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D67B0(param0->unk_30) == 1) { + sub_0207136C(param0->unk_2C); + sub_0207136C(param0->unk_30); + ov101_021D5DA4(param0->unk_28, 0); + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_03); + param0->unk_10 = 0; + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D4C98 (UnkStruct_ov101_021D4764 * param0) +{ + param0->unk_10++; + + if (param0->unk_10 >= 30) { + param0->unk_10 = 0; + param0->unk_04++; + ov101_021D5D90(param0->unk_28, UnkEnum_ov101_021D5D90_02); + } + + return 0; +} + +static int ov101_021D4CBC (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D5DC4(param0->unk_28) == 1) { + param0->unk_2C = ov101_021D6484(param0->unk_20); + param0->unk_30 = ov101_021D6764(param0->unk_20, param0->unk_1C); + param0->unk_0C = 0; + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D4CEC (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D67B0(param0->unk_30) == 1) { + ov101_021D679C(param0->unk_30, UnkEnum_ov101_021D679C_01); + ov101_021D5DA4(param0->unk_28, 1); + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D4D14 (UnkStruct_ov101_021D4764 * param0) +{ + if (ov101_021D67B0(param0->unk_30) == 1) { + sub_0207136C(param0->unk_2C); + param0->unk_08 = 1; + param0->unk_04++; + } + + return 0; +} + +static int(*const Unk_ov101_021D8758[])(UnkStruct_ov101_021D4764 *) = { + ov101_021D4C3C, + ov101_021D4C60, + ov101_021D4C98, + ov101_021D4CBC, + ov101_021D4CEC, + ov101_021D4D14, + ov101_021D48A8 +}; + +static int(*const * const Unk_ov101_021D8774[13])(UnkStruct_ov101_021D4764 *) = { + Unk_ov101_021D8648, + Unk_ov101_021D8690, + Unk_ov101_021D8678, + Unk_ov101_021D8714, + Unk_ov101_021D86EC, + Unk_ov101_021D86A0, + Unk_ov101_021D8684, + Unk_ov101_021D8654, + Unk_ov101_021D8728, + Unk_ov101_021D8664, + Unk_ov101_021D865C, + Unk_ov101_021D864C, + Unk_ov101_021D8758, +}; + +static void ov101_021D4D38 (UnkStruct_ov101_021D13C8 * param0) +{ + void * v0; + NNSG2dPaletteData * v1; + UnkStruct_ov101_021D4F58 * v2 = ¶m0->unk_184; + + v2->unk_00 = param0; + v0 = ov101_021D19E4(param0, 3, 0); + + NNS_G2dGetUnpackedPaletteData(v0, &v1); + + ov101_021D4EA8(v1, 0x1, v2->unk_04); + ov101_021D4EA8(v1, 0x2, v2->unk_A4[UnkEnum_ov101_021D4F58_00]); + ov101_021D4EA8(v1, 0x3, v2->unk_A4[UnkEnum_ov101_021D4F58_01]); + ov101_021D4EA8(v1, 0x3, v2->unk_A4[UnkEnum_ov101_021D4F58_02]); + ov101_021D4EA8(v1, 0x4, v2->unk_A4[UnkEnum_ov101_021D4F58_03]); + ov101_021D4EA8(v1, 0x4, v2->unk_A4[UnkEnum_ov101_021D4F58_04]); + + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 5, 0); + NNS_G2dGetUnpackedPaletteData(v0, &v1); + ov101_021D4EA8(v1, 0, v2->unk_24); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 6, 0); + NNS_G2dGetUnpackedPaletteData(v0, &v1); + ov101_021D4EA8(v1, 0, v2->unk_44); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 7, 0); + NNS_G2dGetUnpackedPaletteData(v0, &v1); + ov101_021D4EA8(v1, 0, v2->unk_64); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 74, 0); + NNS_G2dGetUnpackedPaletteData(v0, &v1); + ov101_021D4EA8(v1, 0, v2->unk_144[UnkEnum_ov101_021D4F58_00]); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 75, 0); + NNS_G2dGetUnpackedPaletteData(v0, &v1); + ov101_021D4EA8(v1, 0, v2->unk_144[UnkEnum_ov101_021D4F58_01]); + ov101_021D4EA8(v1, 0, v2->unk_144[UnkEnum_ov101_021D4F58_02]); + sub_020181C4(v0); + + v0 = ov101_021D19E4(param0, 76, 0); + NNS_G2dGetUnpackedPaletteData(v0, &v1); + ov101_021D4EA8(v1, 0, v2->unk_144[UnkEnum_ov101_021D4F58_03]); + ov101_021D4EA8(v1, 0, v2->unk_144[UnkEnum_ov101_021D4F58_04]); + sub_020181C4(v0); +} + +static void ov101_021D4EA4 (UnkStruct_ov101_021D13C8 * param0) +{ + return; +} + +static void ov101_021D4EA8 (NNSG2dPaletteData * param0, int param1, u16 * param2) +{ + int v0; + u16 * v1 = param0->pRawData; + + v1 = &v1[param1 * 16]; + + for (v0 = 0; v0 < 16; v0++) { + param2[v0] = v1[v0]; + } +} + +static void ov101_021D4EC0 (u16 param0, u16 param1, u16 param2, u16 * param3) +{ + const UnkStruct_ov101_021D4EC0 * v0 = (UnkStruct_ov101_021D4EC0 *)¶m0; + const UnkStruct_ov101_021D4EC0 * v1 = (UnkStruct_ov101_021D4EC0 *)¶m1; + + if (param2 > 16) { + param2 = 16; + } + + (*param3) = (v0->unk_00_0 + ((v1->unk_00_0 - v0->unk_00_0) * param2 >> 4)) | ((v0->unk_00_5 + ((v1->unk_00_5 - v0->unk_00_5) * param2 >> 4)) << 5) | ((v0->unk_00_10 + ((v1->unk_00_10 - v0->unk_00_10) * param2 >> 4)) << 10); +} + +static void ov101_021D4F18 (const u16 * param0, const u16 * param1, u16 param2, u16 * param3) +{ + int v0 = 0; + + do { + ov101_021D4EC0(param0[v0], param1[v0], param2, ¶m3[v0]); v0++; + } while (v0 < 16); +} + +static void ov101_021D4F40 (UnkStruct_ov101_021D13C8 * param0, u32 param1, int param2, u16 * param3) +{ + sub_0201972C(param1, param3, 32, 32 * param2); +} + +static int Unk_ov101_021D9E60[UnkEnum_ov101_021D4F58_05] = { + 0x2, 0x3, 0xc, 0x4, 0xb, +}; + +static void ov101_021D4F58 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D4F58 param1) +{ + UnkStruct_ov101_021D4F58 * v0 = ¶m0->unk_184; + int v1 = Unk_ov101_021D9E60[param1]; + + ov101_021D4F40(param0, 1, v1, v0->unk_A4[param1]); +} + +static void ov101_021D4F78 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D4F58 param1) +{ + UnkStruct_ov101_021D4F58 * v0 = ¶m0->unk_184; + int v1 = Unk_ov101_021D9E60[param1]; + const u16 * v2 = v0->unk_A4[param1]; + const u16 * v3 = v0->unk_144[param1]; + u16 * v4 = v0->unk_1E4[param1]; + + ov101_021D4F18(v2, v3, 10, v4); + ov101_021D4F40(param0, 1, v1, v4); +} + +static void ov101_021D4FB8 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D4F58 param1) +{ + UnkStruct_ov101_021D4F58 * v0 = ¶m0->unk_184; + int v1 = Unk_ov101_021D9E60[param1]; + const u16 * v2 = v0->unk_A4[param1]; + const u16 * v3 = v0->unk_144[param1]; + u16 * v4 = v0->unk_1E4[param1]; + + ov101_021D4F18(v2, v3, 12, v4); + ov101_021D4F40(param0, 1, v1, v4); +} + +static void ov101_021D4FF8 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0 = UnkEnum_ov101_021D4F58_00; + + do { + ov101_021D4F58(param0, v0); v0++; + } while (v0 < UnkEnum_ov101_021D4F58_05); +} + +static void ov101_021D5010 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0 = UnkEnum_ov101_021D4F58_00; + + do { + ov101_021D4F78(param0, v0); v0++; + } while (v0 < UnkEnum_ov101_021D4F58_05); +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D86B0; + +static UnkStruct_ov101_021D5D90 * ov101_021D5028 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D4F58 param1, u32 param2) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {0, 0, 0}; + UnkStruct_ov101_021D5068 v2; + + v2.unk_00 = param1; + v2.unk_04 = param2; + v2.unk_08 = param0; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D86B0, &v1, 0, &v2, 143); + + return v0; +} + +static int ov101_021D505C (UnkStruct_ov101_021D5D90 * param0) +{ + UnkStruct_ov101_021D505C * v0 = sub_02071598(param0); + return v0->unk_0C; +} + +static int ov101_021D5068 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + const UnkStruct_ov101_021D5068 * v0; + UnkStruct_ov101_021D505C * v1 = param1; + + v0 = (const UnkStruct_ov101_021D5068 *)sub_020715BC(param0); + v1->unk_1C = v0->unk_08; + v1->unk_10 = v0->unk_00; + v1->unk_14 = v0->unk_04; + v1->unk_20 = &v1->unk_1C->unk_184; + + return 1; +} + +static void ov101_021D508C (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D505C * v0 = param1; + ov101_021D4F58(v0->unk_1C, v0->unk_10); +} + +static void ov101_021D5098 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D505C * v1 = param1; + int v2 = Unk_ov101_021D9E60[v1->unk_10]; + u16 * v3 = v1->unk_20->unk_1E4[v1->unk_10]; + const u16 * v4 = v1->unk_20->unk_A4[v1->unk_10]; + const u16 * v5 = v1->unk_20->unk_144[v1->unk_10]; + + switch (v1->unk_00) { + case 0: + v1->unk_18 += 0x4000; + + if (v1->unk_18 > (FX32_ONE * 16)) { + v1->unk_18 = (FX32_ONE * 16); + } + + v0 = ((v1->unk_18) / FX32_ONE); + + if (v0 == 16) { + v1->unk_00++; + } + + ov101_021D4F18(v4, v5, v0, v3); + ov101_021D4F40(v1->unk_1C, 1, v2, v3); + break; + case 1: + v1->unk_18 -= 0x4000; + + if (v1->unk_18 < (FX32_ONE * 0)) { + v1->unk_18 = (FX32_ONE * 0); + } + + v0 = ((v1->unk_18) / FX32_ONE); + + if (v0 == 0) { + v1->unk_04++; + + if (v1->unk_04 >= 4) { + if (v1->unk_14) { + v1->unk_00++; + v1->unk_0C = 1; + } else { + v1->unk_00 = 4; + v1->unk_0C = 1; + } + } else { + v1->unk_00--; + } + } + + ov101_021D4F18(v4, v5, v0, v3); + ov101_021D4F40(v1->unk_1C, 1, v2, v3); + break; + case 2: + v1->unk_18 += 0x8000; + + if (v1->unk_18 > (FX32_ONE * 16)) { + v1->unk_18 = (FX32_ONE * 16); + } + + v0 = ((v1->unk_18) / FX32_ONE); + + if (v0 == 16) { + v1->unk_00++; + } + + ov101_021D4F18(v4, v5, v0, v3); + ov101_021D4F40(v1->unk_1C, 1, v2, v3); + break; + case 3: + v1->unk_18 -= 0x8000; + + if (v1->unk_18 < (FX32_ONE * 0)) { + v1->unk_18 = (FX32_ONE * 0); + } + + v0 = ((v1->unk_18) / FX32_ONE); + + if (v0 == 0) { + v1->unk_00--; + } + + ov101_021D4F18(v4, v5, v0, v3); + ov101_021D4F40(v1->unk_1C, 1, v2, v3); + break; + case 4: + break; + } +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D86B0 = { + sizeof(UnkStruct_ov101_021D505C), + ov101_021D5068, ov101_021D508C, + ov101_021D5098, + sub_020715FC +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D8700; + +static void ov101_021D5200 (UnkStruct_ov101_021D13C8 * param0) +{ + VecFx32 v0 = {0, 0, 0}; + + GF_ASSERT(param0->unk_120.unk_14 == NULL); + param0->unk_120.unk_14 = sub_02071330(param0->unk_44C, &Unk_ov101_021D8700, &v0, 0, param0, 143); +} + +static void ov101_021D5244 (UnkStruct_ov101_021D13C8 * param0) +{ + if (param0->unk_120.unk_14 != NULL) { + sub_0207136C(param0->unk_120.unk_14); + param0->unk_120.unk_14 = NULL; + } + + ov101_021D4FF8(param0); +} + +#define LB_WAIT_DATA(wait) (1 << 5), (FX32_ONE * (wait)), 0, 0 + +static const UnkStruct_ov101_021D8938 Unk_ov101_021D8938[] = { + {LB_WAIT_DATA(30)}, {(1 << 0), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 0), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(8)}, {(1 << 1) | (1 << 2), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 1) | (1 << 2), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(8)}, {(1 << 3) | (1 << 4), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 3) | (1 << 4), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(16)}, {(1 << 3) | (1 << 4), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 3) | (1 << 4), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(8)}, {(1 << 1) | (1 << 2), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 1) | (1 << 2), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(8)}, {(1 << 0), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 0), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(16)}, {(1 << 1), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 1), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(8)}, {(1 << 4), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 4), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(8)}, {(1 << 2), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 2), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(8)}, {(1 << 3), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 3), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(8)}, {(1 << 0), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 0), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(16)}, {(1 << 3), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(1)}, {(1 << 3), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 1), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(1)}, {(1 << 1), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 0), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(1)}, {(1 << 0), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 2), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(1)}, {(1 << 2), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 4), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(1)}, {(1 << 4), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(8)}, {(1 << 2), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(1)}, {(1 << 2), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 0), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(1)}, {(1 << 0), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 1), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(1)}, {(1 << 1), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(2)}, {(1 << 3), (FX32_ONE * 0), (FX32_ONE * 14), 0x4000}, {LB_WAIT_DATA(1)}, {(1 << 3), (FX32_ONE * 14), (FX32_ONE * 0), 0x4000}, {LB_WAIT_DATA(16)}, {(1 << 6), 1, 0, 0}, +}; + +static void ov101_021D5268 (UnkStruct_ov101_021D5388 * param0) +{ + u32 v0; + int v1, v2, v3; + u16 * v4; + const u16 * v5, * v6; + const UnkStruct_ov101_021D8938 * v7 = &Unk_ov101_021D8938[param0->unk_04]; + + for (v1 = 0, v2 = 1, v0 = (1 << 0); v0 <= (1 << 4); v1++, v0 <<= 1) { + if ((v7->unk_00 & v0)) { + if (param0->unk_08 == 0) { + param0->unk_14[v1] = v7->unk_04; + v2 = 0; + } else { + if (v7->unk_04 < v7->unk_08) { + param0->unk_14[v1] += v7->unk_0C; + + if (param0->unk_14[v1] >= v7->unk_08) { + param0->unk_14[v1] = v7->unk_08; + } else { + v2 = 0; + } + } else { + param0->unk_14[v1] -= v7->unk_0C; + + if (param0->unk_14[v1] <= v7->unk_08) { + param0->unk_14[v1] = v7->unk_08; + } else { + v2 = 0; + } + } + } + + v3 = Unk_ov101_021D9E60[v1]; + v5 = param0->unk_2C->unk_A4[v1]; + v6 = param0->unk_2C->unk_144[v1]; + v4 = param0->unk_2C->unk_1E4[v1]; + + ov101_021D4F18(v5, v6, ((param0->unk_14[v1]) / FX32_ONE), v4); + ov101_021D4F40(param0->unk_28, 1, v3, v4); + } + } + + for ( ; v0 <= (1 << 5); v0 <<= 1) { + if ((v7->unk_00 & (1 << 5))) { + param0->unk_0C += FX32_ONE; + + if (param0->unk_0C >= v7->unk_04) { + param0->unk_0C = 0; + } else { + v2 = 0; + } + } + } + + param0->unk_08 = 1; + + if (v2 == 1) { + param0->unk_08 = 0; + param0->unk_04++; + v7 = &Unk_ov101_021D8938[param0->unk_04]; + + if (v7->unk_00 == (1 << 6)) { + param0->unk_04 = (int)v7->unk_04; + param0->unk_04 = 0; + } + } +} + +static int ov101_021D5388 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D5388 * v0 = param1; + + v0->unk_28 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + v0->unk_2C = &v0->unk_28->unk_184; + + return 1; +} + +static void ov101_021D53A0 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + return; +} + +static void ov101_021D53A4 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D5388 * v0 = param1; + ov101_021D5268(v0); +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D8700 = { + sizeof(UnkStruct_ov101_021D5388), + ov101_021D5388, ov101_021D53A0, + ov101_021D53A4, + sub_020715FC +}; + +static void ov101_021D53B0 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D53B0 * v0 = sub_02018184(79, sizeof(UnkStruct_ov101_021D53B0)); + + v0->unk_00 = 0; + v0->unk_04 = 0; + v0->unk_0C = param0; + + sub_0200D9E8(ov101_021D542C, v0, 143); +} + +static void ov101_021D53D4 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D53B0 * v0 = sub_02018184(79, sizeof(UnkStruct_ov101_021D53B0)); + + v0->unk_00 = 0; + v0->unk_04 = 0; + v0->unk_0C = param0; + + sub_0200D9E8(ov101_021D548C, v0, 143); +} + +static void ov101_021D53F8 (UnkStruct_ov101_021D13C8 * param0, int param1) +{ + UnkStruct_ov101_021D53B0 * v0 = sub_02018184(79, sizeof(UnkStruct_ov101_021D53B0)); + + v0->unk_00 = 0; + v0->unk_08 = param1; + v0->unk_04 = (FX32_ONE * 8); + v0->unk_0C = param0; + + sub_0200D9E8(ov101_021D54EC, v0, 143); + sub_02005748(1520); +} + +static void ov101_021D542C (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D53B0 * v0 = param1; + UnkStruct_ov101_021D4F58 * v1 = &v0->unk_0C->unk_184; + const u16 * v2 = v1->unk_04; + const u16 * v3 = v1->unk_24; + u16 * v4 = v1->unk_84; + u16 v5; + + v0->unk_04 += 0x800; + v5 = ((v0->unk_04) / FX32_ONE); + + if (v5 > 16) { + v5 = 16; + } + + ov101_021D4F18(v2, v3, v5, v4); + ov101_021D4F40(v0->unk_0C, 7, 0x1, v4); + + if ((v5 == 16) || (v0->unk_0C->unk_00 == 63)) { + sub_020181C4(v0); + sub_0200DA58(param0); + } +} + +static void ov101_021D548C (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D53B0 * v0 = param1; + UnkStruct_ov101_021D4F58 * v1 = &v0->unk_0C->unk_184; + const u16 * v2 = v1->unk_24; + const u16 * v3 = v1->unk_04; + u16 * v4 = v1->unk_84; + u16 v5; + + v0->unk_04 += 0x800; + v5 = ((v0->unk_04) / FX32_ONE); + + if (v5 > 16) { + v5 = 16; + } + + ov101_021D4F18(v2, v3, v5, v4); + ov101_021D4F40(v0->unk_0C, 7, 0x1, v4); + + if ((v5 == 16) || (v0->unk_0C->unk_00 == 63)) { + sub_020181C4(v0); + sub_0200DA58(param0); + } +} + +static void ov101_021D54EC (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D53B0 * v0 = param1; + UnkStruct_ov101_021D4F58 * v1 = &v0->unk_0C->unk_184; + const u16 * v2, * v3 = v1->unk_24; + u16 * v4 = v1->unk_84; + int v5; + + if (v0->unk_0C->unk_00 == 63) { + sub_020181C4(v0); + sub_0200DA58(param0); + return; + } + + if (v0->unk_08 == 0) { + v2 = v1->unk_44; + } else { + v2 = v1->unk_64; + } + + switch (v0->unk_00) { + case 0: + v0->unk_04 += 0x1000; + v5 = ((v0->unk_04) / FX32_ONE); + + if (v5 > 16) { + v5 = 16; + v0->unk_00++; + } + + ov101_021D4F18(v3, v2, v5, v4); + ov101_021D4F40(v0->unk_0C, 7, 0x1, v4); + break; + case 1: + v0->unk_04 -= 0x400; + v5 = ((v0->unk_04) / FX32_ONE); + + if (v5 < 0) { + v5 = 0; + } + + ov101_021D4F18(v3, v2, v5, v4); + ov101_021D4F40(v0->unk_0C, 7, 0x1, v4); + + if (v5 == 0) { + sub_020181C4(v0); + sub_0200DA58(param0); + } + } +} + +UnkEnum_ov101_021D9688 ov101_021D55A4 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1, int param2) +{ + int v0 = (param0->unk_A8[param1] + param2) % 21; + + if (v0 < 0) { + v0 = 21 + v0; + } + + return Unk_ov101_021D9688[param1][v0]; +} + +UnkEnum_ov101_021D9688 ov101_021D55D4 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1, int param2) +{ + int v0 = 0; + + if ((param0->unk_90[param1] % (FX32_ONE * 32))) { + v0--; + } + + return ov101_021D55A4(param0, param1, param2 + v0); +} + +static int ov101_021D55F8 (u32 param0) +{ + u32 v0 = Unk_021BF67C.unk_48 & param0; + + if (v0 == param0) { + return 2; + } + + if ((v0 & param0)) { + return 1; + } + + return 0; +} + +static UnkEnum_ov101_021D9688 ov101_021D5618 (u32 param0) +{ + if (param0 & ((1 << 0) | (1 << 1))) { + return 2; + } + + if (param0 & ((1 << 2) | (1 << 3))) { + return 3; + } + + if (param0 & ((1 << 4) | (1 << 5))) { + return 4; + } + + if (param0 & ((1 << 6) | (1 << 7))) { + return 5; + } + + if (param0 & ((1 << 8))) { + return 1; + } + + if (param0 & ((1 << 9))) { + return 0; + } + + return 6; +} + +static UnkEnum_ov101_021D9688 ov101_021D5660 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0, v1, v2; + + v0 = ov101_021D55D4(param0, 0, 1); + v1 = ov101_021D55D4(param0, 1, 1); + v2 = ov101_021D55D4(param0, 2, 1); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return v0; + } + + return 6; +} + +static UnkEnum_ov101_021D9688 ov101_021D5698 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0, v1, v2; + + v0 = ov101_021D55D4(param0, 0, 2); + v1 = ov101_021D55D4(param0, 1, 2); + v2 = ov101_021D55D4(param0, 2, 2); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return v0; + } + + return 6; +} + +static UnkEnum_ov101_021D9688 ov101_021D56D0 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0, v1, v2; + + v0 = ov101_021D55D4(param0, 0, 3); + v1 = ov101_021D55D4(param0, 1, 3); + v2 = ov101_021D55D4(param0, 2, 3); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return v0; + } + + return 6; +} + +static UnkEnum_ov101_021D9688 ov101_021D5708 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0, v1, v2; + + v0 = ov101_021D55D4(param0, 0, 1); + v1 = ov101_021D55D4(param0, 1, 2); + v2 = ov101_021D55D4(param0, 2, 3); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return v0; + } + + return 6; +} + +static UnkEnum_ov101_021D9688 ov101_021D5740 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0, v1, v2; + + v0 = ov101_021D55D4(param0, 0, 3); + v1 = ov101_021D55D4(param0, 1, 2); + v2 = ov101_021D55D4(param0, 2, 1); + + if ((v0 == 3) || ((v0 == v1) && (v0 == v2))) { + return v0; + } + + return 6; +} + +static UnkEnum_ov101_021D9688 ov101_021D5778 (UnkStruct_ov101_021D13C8 * param0, u32 param1, u32 * param2) +{ + u32 v0, v1; + + *param2 = 0; + + v1 = 6; + v0 = ov101_021D5660(param0); + + if (v0 != 6) { + v1 = v0; *param2 |= (1 << 1); + } + + v0 = ov101_021D5698(param0); + + if (v0 != 6) { + v1 = v0; *param2 |= (1 << 0); + } + + v0 = ov101_021D56D0(param0); + + if (v0 != 6) { + v1 = v0; *param2 |= (1 << 2); + } + + v0 = ov101_021D5708(param0); + + if (v0 != 6) { + v1 = v0; *param2 |= (1 << 3); + } + + v0 = ov101_021D5740(param0); + + if (v0 != 6) { + v1 = v0; *param2 |= (1 << 4); + } + + return v1; +} + +static UnkEnum_ov101_021D9688 ov101_021D57EC (UnkStruct_ov101_021D13C8 * param0, u32 param1, u32 * param2) +{ + u32 v0; + + *param2 = 0; + v0 = ov101_021D5698(param0); + + if (v0 != 6) { + GF_ASSERT(v0 == 2); + *param2 |= (1 << 0); + } + + return v0; +} + +static UnkEnum_ov101_021D5814 ov101_021D5814 (u32 param0) +{ + if (param0 & ((1 << 0) | (1 << 1))) { + return UnkEnum_ov101_021D5814_01; + } + + if (param0 & ((1 << 2) | (1 << 3))) { + return UnkEnum_ov101_021D5814_00; + } + + if (param0 & ((1 << 4) | (1 << 5))) { + return UnkEnum_ov101_021D5814_02; + } + + if (param0 & ((1 << 6) | (1 << 7))) { + return UnkEnum_ov101_021D5814_03; + } + + GF_ASSERT(FALSE); + return UnkEnum_ov101_021D5814_04; +} + +static void ov101_021D5848 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0 = 0; + + do { + param0->unk_54[v0] = 0; v0++; + } while (v0 < 3); +} + +static void ov101_021D5858 (UnkStruct_ov101_021D13C8 * param0, u32 param1) +{ + int v0 = 0; + + do { + if (param0->unk_54[v0] == 0) { + break; + } + + v0++; + } while (v0 < 3); + + GF_ASSERT(v0 < 3); + param0->unk_54[v0] = param1; +} + +static int ov101_021D5880 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0 = 0; + u32 v1[3] = {PAD_BUTTON_Y, PAD_BUTTON_B, PAD_BUTTON_A}; + + do { + if ((param0->unk_54[v0] != 0) && (param0->unk_54[v0] != v1[v0])) { + return 0; + } + + v0++; + } while (v0 < 3); + + return 1; +} + +static int ov101_021D58C0 (UnkStruct_ov101_021D13C8 * param0) +{ + int v0 = 0; + const UnkStruct_ov101_021D87A8 * v1 = &Unk_ov101_021D87A8[param0->unk_34]; + + do { + if ((param0->unk_54[v0] != 0) && (param0->unk_54[v0] != v1->unk_00[v0])) { + return 0; + } + + v0++; + } while (v0 < 3); + + return 1; +} + +static void ov101_021D58F4 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1) +{ + const int * v0 = Unk_ov101_021D8740[param1]; + + sub_02019E2C(param0->unk_43C, 1, v0[0], v0[1], 3, 2, 6); + sub_0201C3C0(param0->unk_43C, 1); +} + +static void ov101_021D5938 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D2BDC param1) +{ + const int * v0 = Unk_ov101_021D8740[param1]; + + sub_02019E2C(param0->unk_43C, 1, v0[0], v0[1], 3, 2, 5); + sub_0201C3C0(param0->unk_43C, 1); +} + +static u32 ov101_021D597C (UnkStruct_ov101_021D13C8 * param0) +{ + int v0, v1; + UnkEnum_ov101_021D9688 v2 = param0->unk_44; + u32 v3 = param0->unk_48; + + GF_ASSERT(v2 != 6); + + for (v0 = 0, v1 = 0; v0 < UnkEnum_ov101_021D4F58_05; v0++, v3 >>= 1) { + if ((v3 & 0x1)) { + v1 += Unk_ov101_021D9550[v2]; + } + } + + return v1; +} + +static const UnkStruct_ov101_021D87A8 Unk_ov101_021D87A8[6] = { + { + {PAD_BUTTON_Y, PAD_BUTTON_B, PAD_BUTTON_A}, + {UnkEnum_ov101_021D679C_06, UnkEnum_ov101_021D679C_05, UnkEnum_ov101_021D679C_07} + }, + { + {PAD_BUTTON_Y, PAD_BUTTON_A, PAD_BUTTON_B}, + {UnkEnum_ov101_021D679C_06, UnkEnum_ov101_021D679C_07, UnkEnum_ov101_021D679C_05} + }, + { + {PAD_BUTTON_B, PAD_BUTTON_Y, PAD_BUTTON_A}, + {UnkEnum_ov101_021D679C_05, UnkEnum_ov101_021D679C_06, UnkEnum_ov101_021D679C_07} + }, + { + {PAD_BUTTON_B, PAD_BUTTON_A, PAD_BUTTON_Y}, + {UnkEnum_ov101_021D679C_05, UnkEnum_ov101_021D679C_07, UnkEnum_ov101_021D679C_06} + }, + { + {PAD_BUTTON_A, PAD_BUTTON_Y, PAD_BUTTON_B}, + {UnkEnum_ov101_021D679C_07, UnkEnum_ov101_021D679C_06, UnkEnum_ov101_021D679C_05} + }, + { + {PAD_BUTTON_A, PAD_BUTTON_B, PAD_BUTTON_Y}, + {UnkEnum_ov101_021D679C_07, UnkEnum_ov101_021D679C_05, UnkEnum_ov101_021D679C_06} + } +}; + +static const int Unk_ov101_021D8740[3][2] = { + {0x7, 0x11}, + {0xf, 0x11}, + {0x16, 0x11}, +}; diff --git a/src/overlay101/ov101_021D59AC.c b/src/overlay101/ov101_021D59AC.c new file mode 100644 index 0000000000..780cc91cb1 --- /dev/null +++ b/src/overlay101/ov101_021D59AC.c @@ -0,0 +1,2526 @@ +#include "enums.h" + +#include +#include + +#include "struct_decls/struct_0201CD38_decl.h" +#include "struct_decls/struct_02022550_decl.h" +#include "overlay101/struct_ov101_021D5D90_decl.h" + +#include "overlay101/struct_ov101_021D13C8.h" +#include "overlay101/struct_ov101_021D4764.h" +#include "overlay101/struct_ov101_021D8544.h" +#include "overlay101/struct_ov101_021D86B0.h" +#include "overlay101/struct_ov101_021D93D4.h" + +#include "unk_02005474.h" +#include "unk_0200D9E8.h" +#include "unk_0201D15C.h" +#include "unk_020218BC.h" +#include "unk_020711EC.h" +#include "overlay101/ov101_021D1A28.h" +#include "overlay101/ov101_021D59AC.h" +#include "overlay101/ov101_021D7E48.h" + +typedef struct { + UnkEnum_ov101_021D5D90 unk_00; + u32 unk_04; + u32 unk_08; + vu32 unk_0C; + UnkEnum_ov101_021D5814 unk_10; + VecFx32 unk_14; + VecFx32 unk_20; + u32 unk_2C; + u32 unk_30; + int unk_34; + UnkStruct_ov101_021D13C8 * unk_38; + UnkStruct_ov101_021D8544 unk_3C; +} UnkStruct_ov101_021D630C; + +typedef struct { + UnkStruct_ov101_021D13C8 * unk_00; + fx32 unk_04; + UnkEnum_ov101_021D2BDC unk_08; +} UnkStruct_ov101_021D5A0C; + +typedef struct { + UnkStruct_ov101_021D5A0C unk_00; + UnkStruct_ov101_021D8544 unk_0C; +} UnkStruct_ov101_021D5A64; + +typedef struct { + UnkStruct_ov101_021D13C8 * unk_00; + u32 unk_04; + u32 unk_08; + UnkStruct_ov101_021D8544 unk_0C; +} UnkStruct_ov101_021D5B9C; + +typedef struct { + UnkStruct_ov101_021D13C8 * unk_00; + u32 unk_04; + u32 unk_08; + UnkStruct_ov101_021D8544 unk_0C; +} UnkStruct_ov101_021D5CD4; + +typedef struct { + u32 unk_00; + u32 unk_04; + u32 unk_08; + vu32 unk_0C; + UnkStruct_ov101_021D13C8 * unk_10; + UnkStruct_ov101_021D8544 unk_14; +} UnkStruct_ov101_021D65F4; + +typedef struct { + u32 unk_00; + UnkEnum_ov101_021D679C unk_04; + u32 unk_08; + u32 unk_0C; + u32 unk_10; + int unk_14; + UnkEnum_ov101_021D6764 unk_18; + void * unk_1C; + UnkStruct_ov101_021D13C8 * unk_20; + UnkStruct_ov101_021D8544 unk_24; +} UnkStruct_ov101_021D66D0; + +typedef struct { + u32 unk_00; + u32 unk_04; + u32 unk_08; + u32 unk_0C; + vu32 unk_10; + VecFx32 unk_14; + VecFx32 unk_20; + UnkStruct_ov101_021D13C8 * unk_2C; + UnkStruct_ov101_021D8544 unk_30; + UnkStruct_ov101_021D8544 unk_3C; +} UnkStruct_ov101_021D6D10; + +typedef struct { + UnkStruct_ov101_021D13C8 * unk_00; + UnkStruct_ov101_021D8544 unk_04; +} UnkStruct_ov101_021D72AC; + +typedef struct { + int unk_00; + UnkStruct_ov101_021D13C8 * unk_04; + UnkStruct_ov101_021D8544 unk_08; +} UnkStruct_ov101_021D7394; + +typedef struct { + UnkStruct_ov101_021D13C8 * unk_00; + UnkStruct_ov101_021D8544 unk_04; +} UnkStruct_ov101_021D7438; + +typedef struct { + int unk_00; + UnkStruct_ov101_021D13C8 * unk_04; + UnkStruct_ov101_021D8544 unk_08; +} UnkStruct_ov101_021D7530; + +typedef struct { + UnkStruct_ov101_021D13C8 * unk_00; + UnkStruct_ov101_021D8544 unk_04[2]; +} UnkStruct_ov101_021D75F0; + +typedef struct { + UnkStruct_ov101_021D13C8 * unk_00; + UnkStruct_ov101_021D8544 unk_04[5]; +} UnkStruct_ov101_021D7754; + +typedef struct { + UnkEnum_ov101_021D77E4 unk_00; + u32 unk_04; + u32 unk_08; + int unk_0C; + int unk_10; + UnkStruct_ov101_021D13C8 * unk_14; + UnkStruct_ov101_021D8544 unk_18[5]; +} UnkStruct_ov101_021D7984; + +typedef struct { + int unk_00; + int unk_04; + UnkStruct_ov101_021D13C8 * unk_08; + UnkStruct_ov101_021D8544 unk_0C[3]; +} UnkStruct_ov101_021D7A00; + +typedef struct { + int unk_00; + int unk_04; + int unk_08; + int unk_0C; + int unk_10; + int unk_14; + UnkEnum_ov101_021D9688 unk_18; + UnkEnum_ov101_021D4F58 unk_1C; + UnkStruct_ov101_021D8544 unk_20[3]; + UnkStruct_ov101_021D13C8 * unk_44; +} UnkStruct_ov101_021D7D94; + +static void ov101_021D630C(UnkStruct_ov101_021D630C * param0, UnkEnum_ov101_021D5814 param1); +static void ov101_021D63A4(UnkStruct_ov101_021D13C8 * param0); +static void ov101_021D63BC(UnkStruct_0201CD38 * param0, void * param1); +static void ov101_021D63E8(UnkStruct_0201CD38 * param0, void * param1); +static void ov101_021D6410(UnkStruct_ov101_021D13C8 * param0, UnkStruct_ov101_021D8544 * param1, const VecFx32 * param2); +static void ov101_021D65F4(UnkStruct_ov101_021D65F4 * param0); +static void ov101_021D7D94(UnkStruct_ov101_021D7D94 * param0); + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91DC; +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91F0; +static const int Unk_ov101_021D927C[6]; +static const fx32 Unk_ov101_021D937C[10]; +static const fx32 Unk_ov101_021D9354[10]; +static const UnkStruct_ov101_021D93D4 Unk_ov101_021D93D4[UnkEnum_ov101_021D5814_05]; +static const UnkStruct_ov101_021D93D4 Unk_ov101_021D93A4[UnkEnum_ov101_021D6764_03]; + +void ov101_021D59AC (UnkStruct_ov101_021D13C8 * param0) +{ + UnkEnum_ov101_021D2BDC v0; + fx32 v1, v2; + UnkStruct_ov101_021D5D90 * v3; + UnkStruct_ov101_021D5A0C v4; + VecFx32 v5 = {0, 0, 0}; + + v4.unk_00 = param0; + + for (v0 = 0, v1 = (FX32_ONE * (40 + 28)); v0 < 3; v0++, v1 += (FX32_ONE * 60)) { + for (v2 = 0; v2 < (FX32_ONE * 160); v2 += (FX32_ONE * 32)) { + v5.x = v1; + v4.unk_08 = v0; + v4.unk_04 = v2; + v3 = sub_02071330(param0->unk_44C, &Unk_ov101_021D91DC, &v5, 0, &v4, 139); + } + } +} + +static int ov101_021D5A0C (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + VecFx32 v0; + UnkStruct_ov101_021D5A64 * v1 = param1; + const UnkStruct_ov101_021D5A0C * v2 = sub_020715BC(param0); + + v1->unk_00 = *v2; + + sub_020715E4(param0, &v0); + ov101_021D84A4(v1->unk_00.unk_00->unk_450, &v1->unk_0C, &v0, (NNS_G2D_VRAM_TYPE_2DMAIN), 0, 0, 0, 0, 0, 3, 2); + sub_02021CC8(v1->unk_0C.unk_04, 1); + + return 1; +} + +static void ov101_021D5A64 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D5A64 * v0 = param1; + ov101_021D8544(&v0->unk_0C); +} + +static void ov101_021D5A70 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + u32 v1; + fx32 v2; + VecFx32 v3; + UnkStruct_ov101_021D5A64 * v4 = param1; + + v0 = v4->unk_00.unk_08; + v2 = v4->unk_00.unk_00->unk_90[v0] + v4->unk_00.unk_04; + v2 %= (FX32_ONE * 160); + + sub_020715E4(param0, &v3); + v3.y = v2 + (FX32_ONE * 16) + v4->unk_00.unk_00->unk_9C[v0]; + sub_02021C50(v4->unk_0C.unk_04, &v3); + + v2 = ((v2) / 32); + v1 = Unk_ov101_021D927C[ov101_021D55A4(v4->unk_00.unk_00, v0, ((v2) / FX32_ONE))]; + + if (v1 != sub_02021E24(v4->unk_0C.unk_04)) { + sub_02021D6C(v4->unk_0C.unk_04, v1); + sub_02021E50(v4->unk_0C.unk_04, 0); + } +} + +static void ov101_021D5AEC (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D5A64 * v0 = param1; +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91DC = { + sizeof(UnkStruct_ov101_021D5A64), + ov101_021D5A0C, + ov101_021D5A64, + ov101_021D5A70, + ov101_021D5AEC +}; + +void ov101_021D5AF0 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0; + VecFx32 v1 = {(FX32_ONE * 108), (FX32_ONE * 180), 0}; + + for (v0 = 1; v0 < 100000; v0 *= 10, v1.x -= (FX32_ONE * 8)) { + sub_02071330(param0->unk_44C, &Unk_ov101_021D91F0, &v1, v0, param0, 141); + } +} + +static int ov101_021D5B44 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + VecFx32 v0; + UnkStruct_ov101_021D5B9C * v1 = param1; + + v1->unk_04 = sub_020715B4(param0); + v1->unk_08 = v1->unk_04 * 10; + v1->unk_00 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + + sub_020715E4(param0, &v0); + ov101_021D84A4(v1->unk_00->unk_450, &v1->unk_0C, &v0, (NNS_G2D_VRAM_TYPE_2DMAIN), 0, 1, 1, 1, 1, 1, 1); + sub_02021CC8(v1->unk_0C.unk_04, 1); + + return 1; +} + +static void ov101_021D5B9C (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D5B9C * v0 = param1; + ov101_021D8544(&v0->unk_0C); +} + +static void ov101_021D5BA8 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + VecFx32 v0; + UnkStruct_ov101_021D5B9C * v1 = param1; + u32 v2 = v1->unk_00->unk_60; + + if ((v1->unk_04 > 1) && (v2 < v1->unk_04)) { + sub_02021CAC(v1->unk_0C.unk_04, 0); + return; + } + + sub_02021CAC(v1->unk_0C.unk_04, 1); + + v2 %= v1->unk_08; + v2 /= v1->unk_04; + + if (v2 != sub_02021E24(v1->unk_0C.unk_04)) { + sub_02021D6C(v1->unk_0C.unk_04, v2); + sub_02021DE0(v1->unk_0C.unk_04); + } + + sub_020715E4(param0, &v0); + v0.x += Unk_ov101_021D937C[v2]; + sub_02021C50(v1->unk_0C.unk_04, &v0); +} + +static void ov101_021D5C24 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D5B9C * v0 = param1; +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91F0 = { + sizeof(UnkStruct_ov101_021D5B9C), + ov101_021D5B44, + ov101_021D5B9C, + ov101_021D5BA8, + ov101_021D5C24 +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9204; + +void ov101_021D5C28 (UnkStruct_ov101_021D13C8 * param0) +{ + u32 v0; + VecFx32 v1 = {(FX32_ONE * 180), (FX32_ONE * 180), 0}; + + for (v0 = 1; v0 < 100000; v0 *= 10, v1.x -= (FX32_ONE * 8)) { + sub_02071330(param0->unk_44C, &Unk_ov101_021D9204, &v1, v0, param0, 141); + } +} + +static int ov101_021D5C7C (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + VecFx32 v0; + UnkStruct_ov101_021D5CD4 * v1 = param1; + + v1->unk_04 = sub_020715B4(param0); + v1->unk_08 = v1->unk_04 * 10; + v1->unk_00 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + + sub_020715E4(param0, &v0); + ov101_021D84A4(v1->unk_00->unk_450, &v1->unk_0C, &v0, (NNS_G2D_VRAM_TYPE_2DMAIN), 0, 1, 1, 1, 1, 1, 1); + sub_02021CC8(v1->unk_0C.unk_04, 1); + + return 1; +} + +static void ov101_021D5CD4 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D5CD4 * v0 = param1; + ov101_021D8544(&v0->unk_0C); +} + +static void ov101_021D5CE0 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + VecFx32 v0; + UnkStruct_ov101_021D5CD4 * v1 = param1; + u32 v2 = v1->unk_00->unk_64; + + if (v2 < v1->unk_04) { + sub_02021CAC(v1->unk_0C.unk_04, 0); + return; + } + + sub_02021CAC(v1->unk_0C.unk_04, 1); + + v2 %= v1->unk_08; + v2 /= v1->unk_04; + + if (v2 != sub_02021E24(v1->unk_0C.unk_04)) { + sub_02021D6C(v1->unk_0C.unk_04, v2); + sub_02021DE0(v1->unk_0C.unk_04); + } + + sub_020715E4(param0, &v0); + v0.x += Unk_ov101_021D9354[v2]; + sub_02021C50(v1->unk_0C.unk_04, &v0); +} + +static void ov101_021D5D54 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D5B9C * v0 = param1; +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9204 = { + sizeof(UnkStruct_ov101_021D5CD4), + ov101_021D5C7C, + ov101_021D5CD4, + ov101_021D5CE0, + ov101_021D5D54 +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9218; +static int(*const * const Unk_ov101_021D9294[UnkEnum_ov101_021D5D90_07])(UnkStruct_ov101_021D630C *); + +UnkStruct_ov101_021D5D90 * ov101_021D5D58 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D5814 param1) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {(FX32_ONE * 0), (FX32_ONE * 400), 0}; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D9218, &v1, param1, param0, 134); + return v0; +} + +void ov101_021D5D90 (UnkStruct_ov101_021D5D90 * param0, UnkEnum_ov101_021D5D90 param1) +{ + UnkStruct_ov101_021D630C * v0 = sub_02071598(param0); + + v0->unk_00 = param1; + v0->unk_04 = 0; + v0->unk_08 = 0; + v0->unk_30 = 0; +} + +void ov101_021D5DA4 (UnkStruct_ov101_021D5D90 * param0, int param1) +{ + UnkStruct_ov101_021D630C * v0 = sub_02071598(param0); + + if (param1 == 1) { + sub_02021CAC(v0->unk_3C.unk_04, 0); + } else { + sub_02021CAC(v0->unk_3C.unk_04, 1); + } +} + +int ov101_021D5DC4 (UnkStruct_ov101_021D5D90 * param0) +{ + UnkStruct_ov101_021D630C * v0 = sub_02071598(param0); + return v0->unk_08; +} + +static int ov101_021D5DD0 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D630C * v0 = param1; + + v0->unk_38 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + v0->unk_10 = sub_020715B4(param0); + + return 1; +} + +static void ov101_021D5DE8 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D630C * v0 = param1; + + if (v0->unk_3C.unk_04 != NULL) { + ov101_021D63A4(v0->unk_38); + ov101_021D8544(&v0->unk_3C); + } +} + +static void ov101_021D5E04 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D630C * v1 = param1; + + int(*const * v2)(UnkStruct_ov101_021D630C *); + + do { + v2 = Unk_ov101_021D9294[v1->unk_00]; + v0 = v2[v1->unk_04](v1); + } while (v0 == 1); +} + +static void ov101_021D5E24 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D630C * v0 = param1; +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9218 = { + sizeof(UnkStruct_ov101_021D630C), + ov101_021D5DD0, + ov101_021D5DE8, + ov101_021D5E04, + ov101_021D5E24 +}; + +static int ov101_021D5E28 (UnkStruct_ov101_021D630C * param0) +{ + ov101_021D630C(param0, param0->unk_10); + param0->unk_04++; + return 0; +} + +static int ov101_021D5E3C (UnkStruct_ov101_021D630C * param0) +{ + if (param0->unk_0C == 2) { + param0->unk_04++; + } + + return 0; +} + +static int ov101_021D5E4C (UnkStruct_ov101_021D630C * param0) +{ + VecFx32 v0 = {(FX32_ONE * 0), (FX32_ONE * (192 + 224)), 0}; + + ov101_021D6410(param0->unk_38, ¶m0->unk_3C, &v0); + + param0->unk_08 = 1; + param0->unk_04++; + + return 0; +} + +static int ov101_021D5E80 (UnkStruct_ov101_021D630C * param0) +{ + return 0; +} + +static int(*const Unk_ov101_021D911C[])(UnkStruct_ov101_021D630C * work) = { + ov101_021D5E28, ov101_021D5E3C, ov101_021D5E4C, ov101_021D5E80, +}; + +static int ov101_021D5E84 (UnkStruct_ov101_021D630C * param0) +{ + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * 192)), 0}; + VecFx32 v1 = {0x2000, 0x2000, 0}; + + sub_02021C70(param0->unk_3C.unk_04, &v1); + sub_02021C94(param0->unk_3C.unk_04, 0); + sub_02021C50(param0->unk_3C.unk_04, &v0); + sub_02021D6C(param0->unk_3C.unk_04, 0); + sub_02021E50(param0->unk_3C.unk_04, 0); + sub_02005748(1572); + + param0->unk_04++; + return 0; +} + +static int ov101_021D5EEC (UnkStruct_ov101_021D630C * param0) +{ + VecFx32 v0, v1; + + ov101_021D8560(param0->unk_3C.unk_04, &v0); + ov101_021D8574(param0->unk_3C.unk_04, &v1); + + v0.y -= (FX32_ONE * 3) + (FX32_ONE / 1); + v1.x -= 0x1c7; + v1.y -= 0x1c7; + + param0->unk_30++; + + if (param0->unk_30 >= 9) { + v0.y = ((FX32_ONE * 192) + (FX32_ONE * 160)); + v1.x = 0x1000; + v1.y = 0x1000; + param0->unk_30 = 0; + param0->unk_04++; + } + + sub_02021C50(param0->unk_3C.unk_04, &v0); + sub_02021C70(param0->unk_3C.unk_04, &v1); + + return 0; +} + +static int ov101_021D5F54 (UnkStruct_ov101_021D630C * param0) +{ + param0->unk_30++; + + if (param0->unk_30 >= 3) { + param0->unk_30 = 0; + param0->unk_08 = 1; + param0->unk_04++; + } + + return 0; +} + +static int(*const Unk_ov101_021D912C[])(UnkStruct_ov101_021D630C *) = { + ov101_021D5E84, ov101_021D5EEC, ov101_021D5F54, ov101_021D5E80 +}; + +static int ov101_021D5F70 (UnkStruct_ov101_021D630C * param0) +{ + sub_02021D6C(param0->unk_3C.unk_04, 1); + sub_02021DE0(param0->unk_3C.unk_04); + sub_02021CC8(param0->unk_3C.unk_04, 1); + + sub_02005748(1744); + param0->unk_04++; + + return 0; +} + +static int ov101_021D5F9C (UnkStruct_ov101_021D630C * param0) +{ + param0->unk_30++; + + if (param0->unk_30 >= 4) { + param0->unk_30 = 0; + param0->unk_08 = 1; + param0->unk_04++; + } + + return 0; +} + +static int(*const Unk_ov101_021D9028[])(UnkStruct_ov101_021D630C *) = { + ov101_021D5F70, ov101_021D5F9C, ov101_021D5E80 +}; + +static int ov101_021D5FB8 (UnkStruct_ov101_021D630C * param0) +{ + VecFx32 v0 = {0x1000, 0x1000, 0}; + VecFx32 v1 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * 160)), 0}; + + param0->unk_14 = v1; + + sub_02021C50(param0->unk_3C.unk_04, &v1); + sub_02021C70(param0->unk_3C.unk_04, &v0); + sub_02021C94(param0->unk_3C.unk_04, 0); + sub_02021D6C(param0->unk_3C.unk_04, 3); + sub_02021DE0(param0->unk_3C.unk_04); + + param0->unk_04++; + return 1; +} + +static int ov101_021D6020 (UnkStruct_ov101_021D630C * param0) +{ + VecFx32 v0; + fx32 v1[8] = {(FX32_ONE * -8), (FX32_ONE * 0), (FX32_ONE * -6), (FX32_ONE * 0), (FX32_ONE * -4), (FX32_ONE * 0), (FX32_ONE * -2), (FX32_ONE * 0)}; + + v0 = param0->unk_14; + v0.y += v1[param0->unk_30 / 2]; + + sub_02021C50(param0->unk_3C.unk_04, &v0); + + param0->unk_30++; + + if (param0->unk_30 >= 16) { + param0->unk_30 = 0; + param0->unk_08 = 1; + param0->unk_04++; + } + + return 0; +} + +static int(*const Unk_ov101_021D8F38[])(UnkStruct_ov101_021D630C *) = { + ov101_021D5FB8, ov101_021D6020, ov101_021D5E80 +}; + +static int ov101_021D6084 (UnkStruct_ov101_021D630C * param0) +{ + VecFx32 v0 = {0x1000, 0x1000, 0}; + VecFx32 v1 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * 160)), 0}; + + param0->unk_14 = v1; + + sub_02021C50(param0->unk_3C.unk_04, &v1); + sub_02021C70(param0->unk_3C.unk_04, &v0); + sub_02021C94(param0->unk_3C.unk_04, 0); + sub_02021D6C(param0->unk_3C.unk_04, 4); + sub_02021DE0(param0->unk_3C.unk_04); + + param0->unk_04++; + return 1; +} + +static int ov101_021D60EC (UnkStruct_ov101_021D630C * param0) +{ + fx32 v0; + VecFx32 v1, v2; + + ov101_021D8560(param0->unk_3C.unk_04, &v1); + ov101_021D8574(param0->unk_3C.unk_04, &v2); + + v1.y += (FX32_ONE * 4); + v2.x += 0x1c7; + v2.y += 0x1c7; + + param0->unk_30++; + + if (param0->unk_30 >= 10) { + v1.y = ((FX32_ONE * 192) + (FX32_ONE * 256)); + v2.x = 0x1000; + v2.y = 0x1000; + param0->unk_30 = 0; + param0->unk_08 = 1; + param0->unk_04++; + } + + sub_02021C50(param0->unk_3C.unk_04, &v1); + sub_02021C70(param0->unk_3C.unk_04, &v2); + + return 0; +} + +static int(*const Unk_ov101_021D8FA4[])(UnkStruct_ov101_021D630C *) = { + ov101_021D6084, ov101_021D60EC, ov101_021D5E80 +}; + +static int ov101_021D6158 (UnkStruct_ov101_021D630C * param0) +{ + VecFx32 v0 = {0x1000, 0x1000, 0}; + VecFx32 v1 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * 160)), 0}; + VecFx32 v2 = {0, 0, 0}; + + param0->unk_14 = v1; + param0->unk_20 = v2; + param0->unk_30 = 0; + param0->unk_34 = 0; + param0->unk_2C = 0; + param0->unk_08 = 1; + + sub_02021C50(param0->unk_3C.unk_04, &v1); + sub_02021C70(param0->unk_3C.unk_04, &v0); + sub_02021C94(param0->unk_3C.unk_04, 0); + sub_02021D6C(param0->unk_3C.unk_04, 2); + sub_02021DE0(param0->unk_3C.unk_04); + + param0->unk_04++; + return 1; +} + +static int ov101_021D61E0 (UnkStruct_ov101_021D630C * param0) +{ + u32 v0[8] = {-16, 0, 16, 0, 16, 0, -16, 0}; + fx32 v1[8] = {(FX32_ONE * -2), 0, (FX32_ONE * 2), 0, (FX32_ONE * 2), 0, (FX32_ONE * -2), 0}; + u32 v2[8] = {4, 1, 4, 8, 4, 1, 4, 8}; + + param0->unk_2C += v0[param0->unk_34]; + param0->unk_14.x += v1[param0->unk_34]; + param0->unk_30++; + + if (param0->unk_30 >= v2[param0->unk_34]) { + param0->unk_34++; + + if (param0->unk_34 >= 8) { + param0->unk_34 = 0; + } + + param0->unk_30 = 0; + } + + sub_02021C50(param0->unk_3C.unk_04, ¶m0->unk_14); + sub_02021C94(param0->unk_3C.unk_04, param0->unk_2C); + + return 0; +} + +static int(*const Unk_ov101_021D8E90[])(UnkStruct_ov101_021D630C *) = { + ov101_021D6158, ov101_021D61E0, ov101_021D5E80 +}; + +static int ov101_021D6288 (UnkStruct_ov101_021D630C * param0) +{ + VecFx32 v0 = {0x1000, 0x1000, 0}; + VecFx32 v1 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * 160)), 0}; + VecFx32 v2 = {0, 0, 0}; + + param0->unk_14 = v1; + param0->unk_20 = v2; + param0->unk_08 = 1; + + sub_02021C50(param0->unk_3C.unk_04, &v1); + sub_02021C70(param0->unk_3C.unk_04, &v0); + sub_02021C94(param0->unk_3C.unk_04, 0); + sub_02021D6C(param0->unk_3C.unk_04, 2); + sub_02021DE0(param0->unk_3C.unk_04); + + param0->unk_04++; + + return 1; +} + +static int(*const Unk_ov101_021D8E68[])(UnkStruct_ov101_021D630C *) = { + ov101_021D6288, ov101_021D5E80 +}; + +static int(*const * const Unk_ov101_021D9294[UnkEnum_ov101_021D5D90_07])(UnkStruct_ov101_021D630C *) = { + Unk_ov101_021D911C, Unk_ov101_021D912C, Unk_ov101_021D9028, Unk_ov101_021D8F38, Unk_ov101_021D8FA4, Unk_ov101_021D8E90, Unk_ov101_021D8E68 +}; + +static void ov101_021D630C (UnkStruct_ov101_021D630C * param0, UnkEnum_ov101_021D5814 param1) +{ + UnkStruct_0201CD38 * v0; + UnkStruct_ov101_021D13C8 * v1 = param0->unk_38; + const UnkStruct_ov101_021D93D4 * v2; + + GF_ASSERT(param1 < UnkEnum_ov101_021D5814_05); + v2 = &Unk_ov101_021D93D4[param1]; + + ov101_021D80E4(v1->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), v1->unk_438, v2->unk_00, 2); + ov101_021D81B4(v1->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), v1->unk_438, v2->unk_04, 2); + ov101_021D8288(v1->unk_450, v1->unk_438, v2->unk_08, 2); + ov101_021D82F0(v1->unk_450, v1->unk_438, v2->unk_0C, 2); + + v0 = sub_0200DA04(ov101_021D63BC, param0, 257); + GF_ASSERT(v0 != NULL); + + v0 = sub_0200DA3C(ov101_021D63E8, param0, 257); + GF_ASSERT(v0 != NULL); +} + +static void ov101_021D63A4 (UnkStruct_ov101_021D13C8 * param0) +{ + ov101_021D8358(param0->unk_450, 2, 2, 2, 2); +} + +static void ov101_021D63BC (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D630C * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_38; + + ov101_021D814C(v1->unk_450, 2); + ov101_021D8220(v1->unk_450, 2); + + v0->unk_0C = 1; + + sub_0200DA58(param0); +} + +static void ov101_021D63E8 (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D630C * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_38; + + if (v0->unk_0C == 1) { + ov101_021D8254(v1->unk_450, 2); + v0->unk_0C = 2; + sub_0200DA58(param0); + } +} + +static void ov101_021D6410 (UnkStruct_ov101_021D13C8 * param0, UnkStruct_ov101_021D8544 * param1, const VecFx32 * param2) +{ + VecFx32 v0 = {0, 0, 0}; + VecFx32 v1 = {0x1000, 0x1000, 0}; + + ov101_021D84A4(param0->unk_450, param1, param2, (NNS_G2D_VRAM_TYPE_2DSUB), 1, 2, 2, 2, 2, 2, 7); + + sub_02021CF8(param1->unk_04, 2); + sub_02021C60(param1->unk_04, &v0); + sub_02021C70(param1->unk_04, &v1); + sub_02021C94(param1->unk_04, sub_0201D2A4(0)); + sub_02021CC8(param1->unk_04, 1); +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9150; + +UnkStruct_ov101_021D5D90 * ov101_021D6484 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * (160 - 16))), 0}; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D9150, &v1, 0, param0, 135); + return v0; +} + +static int ov101_021D64BC (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D65F4 * v0 = param1; + + v0->unk_10 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + ov101_021D65F4(v0); + + return 1; +} + +static void ov101_021D64D0 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D65F4 * v0 = param1; + + if (v0->unk_14.unk_04 != NULL) { + ov101_021D8358(v0->unk_10->unk_450, 3, 3, 3, 3); + ov101_021D8544(&v0->unk_14); + } +} + +static void ov101_021D64FC (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D65F4 * v0 = param1; + + switch (v0->unk_00) { + case 0: + if (v0->unk_0C != 2) { + return; + } + + { + VecFx32 v1; + + sub_020715E4(param0, &v1); + ov101_021D84A4(v0->unk_10->unk_450, &v0->unk_14, &v1, (NNS_G2D_VRAM_TYPE_2DSUB), 1, 3, 3, 3, 3, 2, 5); + sub_02021CC8(v0->unk_14.unk_04, 1); + + v0->unk_00++; + } + case 1: + v0->unk_08++; + + if (v0->unk_08 < 15) { + return; + } + + v0->unk_00++; + v0->unk_04 = 1; + break; + case 2: + ov101_021D8358(v0->unk_10->unk_450, 3, 3, 3, 3); + ov101_021D8544(&v0->unk_14); + v0->unk_00++; + case 3: + break; + } +} + +static void ov101_021D659C (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D65F4 * v0 = param1; +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9150 = { + sizeof(UnkStruct_ov101_021D65F4), + ov101_021D64BC, + ov101_021D64D0, + ov101_021D64FC, + ov101_021D659C +}; + +static void ov101_021D65A0 (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D65F4 * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_10; + + ov101_021D814C(v1->unk_450, 3); + ov101_021D8220(v1->unk_450, 3); + + v0->unk_0C = 1; + + sub_0200DA58(param0); +} + +static void ov101_021D65CC (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D65F4 * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_10; + + if (v0->unk_0C == 1) { + ov101_021D8254(v1->unk_450, 3); + v0->unk_0C = 2; + sub_0200DA58(param0); + } +} + +static void ov101_021D65F4 (UnkStruct_ov101_021D65F4 * param0) +{ + UnkStruct_0201CD38 * v0; + UnkStruct_ov101_021D13C8 * v1 = param0->unk_10; + + ov101_021D80E4(v1->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), v1->unk_438, 44, 3); + ov101_021D81B4(v1->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), v1->unk_438, 47, 3); + ov101_021D8288(v1->unk_450, v1->unk_438, 45, 3); + ov101_021D82F0(v1->unk_450, v1->unk_438, 46, 3); + + v0 = sub_0200DA04(ov101_021D65A0, param0, 257); + GF_ASSERT(v0 != NULL); + + v0 = sub_0200DA3C(ov101_021D65CC, param0, 257); + GF_ASSERT(v0 != NULL); +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9164; +static int(*const * const Unk_ov101_021D9330[UnkEnum_ov101_021D679C_09])(UnkStruct_ov101_021D66D0 *); + +static void ov101_021D667C (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D66D0 * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_20; + + ov101_021D814C(v1->unk_450, 4); + ov101_021D8220(v1->unk_450, 4); + + v0->unk_10 = 1; + sub_0200DA58(param0); +} + +static void ov101_021D66A8 (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D66D0 * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_20; + + if (v0->unk_10 == 1) { + ov101_021D8254(v1->unk_450, 4); + + v0->unk_10 = 2; + sub_0200DA58(param0); + } +} + +static void ov101_021D66D0 (UnkStruct_ov101_021D66D0 * param0) +{ + UnkStruct_0201CD38 * v0; + UnkStruct_ov101_021D13C8 * v1 = param0->unk_20; + const UnkStruct_ov101_021D93D4 * v2 = &Unk_ov101_021D93A4[param0->unk_18]; + + ov101_021D80E4(v1->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), v1->unk_438, v2->unk_00, 4); + ov101_021D81B4(v1->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), v1->unk_438, v2->unk_04, 4); + ov101_021D8288(v1->unk_450, v1->unk_438, v2->unk_08, 4); + ov101_021D82F0(v1->unk_450, v1->unk_438, v2->unk_0C, 4); + + v0 = sub_0200DA04(ov101_021D667C, param0, 257); + GF_ASSERT(v0 != NULL); + + v0 = sub_0200DA3C(ov101_021D66A8, param0, 257); + GF_ASSERT(v0 != NULL); +} + +UnkStruct_ov101_021D5D90 * ov101_021D6764 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D6764 param1) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {(FX32_ONE * 128), (FX32_ONE * 160), 0}; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D9164, &v1, param1, param0, 137); + + return v0; +} + +void ov101_021D679C (UnkStruct_ov101_021D5D90 * param0, UnkEnum_ov101_021D679C param1) +{ + UnkStruct_ov101_021D66D0 * v0 = sub_02071598(param0); + + v0->unk_04 = param1; + v0->unk_08 = 0; + v0->unk_0C = 0; + v0->unk_14 = 0; +} + +int ov101_021D67B0 (UnkStruct_ov101_021D5D90 * param0) +{ + UnkStruct_ov101_021D66D0 * v0 = sub_02071598(param0); + return v0->unk_0C; +} + +static int ov101_021D67BC (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D66D0 * v0 = param1; + + v0->unk_20 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + v0->unk_18 = sub_020715B4(param0); + + ov101_021D66D0(v0); + + return 1; +} + +static void ov101_021D67DC (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D66D0 * v0 = param1; + + if (v0->unk_24.unk_04 != NULL) { + UnkStruct_ov101_021D13C8 * v1 = v0->unk_20; + + ov101_021D8358(v1->unk_450, 4, 4, 4, 4); + ov101_021D8544(&v0->unk_24); + } +} + +static void ov101_021D6808 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D66D0 * v1 = param1; + + int(*const * v2)(UnkStruct_ov101_021D66D0 *); + + do { + v2 = Unk_ov101_021D9330[v1->unk_04]; + v0 = v2[v1->unk_08](v1); + } while (v0 == 1); +} + +static void ov101_021D6828 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D66D0 * v0 = param1; +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9164 = { + sizeof(UnkStruct_ov101_021D66D0), + ov101_021D67BC, + ov101_021D67DC, + ov101_021D6808, + ov101_021D6828 +}; + +static int ov101_021D682C (UnkStruct_ov101_021D66D0 * param0) +{ + if (param0->unk_10 == 2) { + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * 256)), 0}; + VecFx32 v1 = {0, 0, 0}; + VecFx32 v2 = {0x1000, 0x1000, 0}; + + ov101_021D84A4(param0->unk_20->unk_450, ¶m0->unk_24, &v0, (NNS_G2D_VRAM_TYPE_2DSUB), 1, 4, 4, 4, 4, 2, 6); + sub_02021CF8(param0->unk_24.unk_04, 2); + sub_02021C60(param0->unk_24.unk_04, &v1); + sub_02021C94(param0->unk_24.unk_04, sub_0201D2A4(0)); + + param0->unk_0C = 1; + param0->unk_08++; + } + + return 0; +} + +static int ov101_021D68A8 (UnkStruct_ov101_021D66D0 * param0) +{ + return 0; +} + +static int(*const Unk_ov101_021D8E80[])(UnkStruct_ov101_021D66D0 *) = { + ov101_021D682C, ov101_021D68A8, +}; + +static int ov101_021D68AC (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * (160 - 32))), 0}; + VecFx32 v1 = {0x400, 0x400, 0}; + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + sub_02021D6C(param0->unk_24.unk_04, 1); + sub_02021CE4(param0->unk_24.unk_04, 0); + sub_02021CC8(param0->unk_24.unk_04, 0); + + param0->unk_08++; + return 0; +} + +static int ov101_021D6908 (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0, v1; + + ov101_021D8560(param0->unk_24.unk_04, &v0); + ov101_021D8574(param0->unk_24.unk_04, &v1); + + v1.x += 0xc0; + v1.y += 0xc0; + + param0->unk_14++; + + if (param0->unk_14 >= 16) { + v0.y = ((FX32_ONE * 192) + (FX32_ONE * (160 - 32))); + v1.x = 0x1000; + v1.y = 0x1000; + param0->unk_14 = 0; + param0->unk_08++; + + sub_02005844(35, 0); + } + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + return 0; +} + +static int ov101_021D6968 (UnkStruct_ov101_021D66D0 * param0) +{ + sub_02021E2C(param0->unk_24.unk_04, (FX32_ONE * 1)); + param0->unk_14++; + + if (param0->unk_14 >= 9) { + param0->unk_14 = 0; + param0->unk_08++; + param0->unk_0C = 1; + } + + return 0; +} + +static int(*const Unk_ov101_021D910C[])(UnkStruct_ov101_021D66D0 *) = { + ov101_021D68AC, ov101_021D6908, ov101_021D6968, ov101_021D68A8 +}; + +static int ov101_021D6994 (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * (160 - 32))), 0}; + VecFx32 v1 = {0x1000, 0x1000, 0}; + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + sub_02021D6C(param0->unk_24.unk_04, 1); + sub_02021CE4(param0->unk_24.unk_04, 0); + sub_02021CC8(param0->unk_24.unk_04, 0); + sub_02005748(1745); + + param0->unk_08++; + return 0; +} + +static int ov101_021D69FC (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0, v1; + + ov101_021D8560(param0->unk_24.unk_04, &v0); + ov101_021D8574(param0->unk_24.unk_04, &v1); + + v1.x -= 0x180; + v1.y -= 0x180; + + param0->unk_14++; + + if (param0->unk_14 >= 8) { + v0.y = ((FX32_ONE * 192) + (FX32_ONE * 272)); + v1.x = 0x1000; + v1.y = 0x1000; + param0->unk_14 = 0; + param0->unk_08++; + param0->unk_0C = 1; + } + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + + return 0; +} + +static int(*const Unk_ov101_021D9064[])(UnkStruct_ov101_021D66D0 *) = { + ov101_021D6994, ov101_021D69FC, ov101_021D68A8 +}; + +static int ov101_021D6A60 (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * (160 - 32))), 0}; + VecFx32 v1 = {0x1000, 0x1000, 0}; + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + sub_02021D6C(param0->unk_24.unk_04, 0); + sub_02021CC8(param0->unk_24.unk_04, 0); + sub_02021CE4(param0->unk_24.unk_04, 0); + sub_02021DE0(param0->unk_24.unk_04); + + param0->unk_0C = 1; + param0->unk_08++; + + return 0; +} + +static int(*const Unk_ov101_021D8E58[])(UnkStruct_ov101_021D66D0 *) = { + ov101_021D6A60, ov101_021D68A8 +}; + +static int ov101_021D6AC8 (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * (160 - 32))), 0}; + VecFx32 v1 = {0x1000, 0x1000, 0}; + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + sub_02021CC8(param0->unk_24.unk_04, 1); + sub_02021CE4(param0->unk_24.unk_04, FX32_ONE / 2); + + if (sub_02021E24(param0->unk_24.unk_04) != 2) { + sub_02021D6C(param0->unk_24.unk_04, 2); + sub_02021DE0(param0->unk_24.unk_04); + } + + param0->unk_0C = 1; + param0->unk_08++; + + return 0; +} + +static int(*const Unk_ov101_021D8E88[])(UnkStruct_ov101_021D66D0 *) = { + ov101_021D6AC8, ov101_021D68A8 +}; + +static int ov101_021D6B3C (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * (160 - 32))), 0}; + VecFx32 v1 = {0x1000, 0x1000, 0}; + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + sub_02021D6C(param0->unk_24.unk_04, 5); + sub_02021CC8(param0->unk_24.unk_04, 1); + sub_02021CE4(param0->unk_24.unk_04, FX32_ONE); + sub_02021DE0(param0->unk_24.unk_04); + + param0->unk_0C = 1; + param0->unk_08++; + + return 0; +} + +static int(*const Unk_ov101_021D8E78[])(UnkStruct_ov101_021D66D0 *) = { + ov101_021D6B3C, ov101_021D68A8 +}; + +static int ov101_021D6BA4 (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * (160 - 32))), 0}; + VecFx32 v1 = {0x1000, 0x1000, 0}; + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + sub_02021D6C(param0->unk_24.unk_04, 4); + sub_02021CC8(param0->unk_24.unk_04, 1); + sub_02021CE4(param0->unk_24.unk_04, FX32_ONE); + sub_02021DE0(param0->unk_24.unk_04); + + param0->unk_0C = 1; + param0->unk_08++; + + return 0; +} + +static int(*const Unk_ov101_021D8E70[])(UnkStruct_ov101_021D66D0 *) = { + ov101_021D6BA4, ov101_021D68A8 +}; + +static int ov101_021D6C0C (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * (160 - 32))), 0}; + VecFx32 v1 = {0x1000, 0x1000, 0}; + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + sub_02021D6C(param0->unk_24.unk_04, 3); + sub_02021CC8(param0->unk_24.unk_04, 1); + sub_02021CE4(param0->unk_24.unk_04, FX32_ONE); + sub_02021DE0(param0->unk_24.unk_04); + + param0->unk_0C = 1; + param0->unk_08++; + + return 0; +} + +static int(*const Unk_ov101_021D8E60[])(UnkStruct_ov101_021D66D0 *) = { + ov101_021D6C0C, ov101_021D68A8 +}; + +static int ov101_021D6C74 (UnkStruct_ov101_021D66D0 * param0) +{ + VecFx32 v0 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * (160 - 32))), 0}; + VecFx32 v1 = {0x1000, 0x1000, 0}; + + sub_02021C70(param0->unk_24.unk_04, &v1); + sub_02021C50(param0->unk_24.unk_04, &v0); + sub_02021CC8(param0->unk_24.unk_04, 0); + sub_02021CE4(param0->unk_24.unk_04, FX32_ONE); + + sub_02021D6C(param0->unk_24.unk_04, 5); + sub_02021DE0(param0->unk_24.unk_04); + + param0->unk_14 = 0; + param0->unk_0C = 1; + param0->unk_08++; + + return 0; +} + +static int ov101_021D6CE0 (UnkStruct_ov101_021D66D0 * param0) +{ + sub_02021E2C(param0->unk_24.unk_04, FX32_ONE); + + if (sub_02021FD0(param0->unk_24.unk_04) == 0) { + param0->unk_14++; + + if (param0->unk_14 >= 8) { + param0->unk_14 = 0; + sub_02021DE0(param0->unk_24.unk_04); + } + } + + return 0; +} + +static int(*const Unk_ov101_021D8ED8[])(UnkStruct_ov101_021D66D0 *) = { + ov101_021D6C74, ov101_021D6CE0, ov101_021D68A8 +}; + +static int(*const * const Unk_ov101_021D9330[UnkEnum_ov101_021D679C_09])(UnkStruct_ov101_021D66D0 *) = { + Unk_ov101_021D8E80, Unk_ov101_021D910C, Unk_ov101_021D9064, Unk_ov101_021D8E58, Unk_ov101_021D8E88, Unk_ov101_021D8E78, Unk_ov101_021D8E70, Unk_ov101_021D8E60, Unk_ov101_021D8ED8 +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9178; + +static void ov101_021D6D10 (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D6D10 * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_2C; + + ov101_021D814C(v1->unk_450, 5); + ov101_021D8220(v1->unk_450, 5); + + v0->unk_10 = 1; + + sub_0200DA58(param0); +} + +static void ov101_021D6D3C (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D6D10 * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_2C; + + if (v0->unk_10 = 1) { + ov101_021D8254(v1->unk_450, 5); + v0->unk_10 = 2; + sub_0200DA58(param0); + } +} + +static void ov101_021D6D68 (UnkStruct_ov101_021D6D10 * param0) +{ + UnkStruct_0201CD38 * v0; + UnkStruct_ov101_021D13C8 * v1 = param0->unk_2C; + + ov101_021D80E4(v1->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), v1->unk_438, 56, 5); + ov101_021D81B4(v1->unk_450, (NNS_G2D_VRAM_TYPE_2DSUB), v1->unk_438, 59, 5); + ov101_021D8288(v1->unk_450, v1->unk_438, 57, 5); + ov101_021D82F0(v1->unk_450, v1->unk_438, 58, 5); + + v0 = sub_0200DA04(ov101_021D6D10, param0, 257); + GF_ASSERT(v0 != NULL); + v0 = sub_0200DA3C(ov101_021D6D3C, param0, 257); + GF_ASSERT(v0 != NULL); +} + +UnkStruct_ov101_021D5D90 * ov101_021D6DF0 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {0, 0, 0}; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D9178, &v1, 0, param0, 136); + return v0; +} + +int ov101_021D6E1C (UnkStruct_ov101_021D5D90 * param0) +{ + UnkStruct_ov101_021D6D10 * v0 = sub_02071598(param0); + + return v0->unk_04; +} + +static int ov101_021D6E28 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D6D10 * v0 = param1; + + v0->unk_2C = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + ov101_021D6D68(v0); + return 1; +} + +static void ov101_021D6E3C (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D6D10 * v0 = param1; + + if (v0->unk_30.unk_04 != NULL) { + ov101_021D8358(v0->unk_2C->unk_450, 5, 5, 5, 5); + ov101_021D8544(&v0->unk_30); + + if (v0->unk_3C.unk_04 != NULL) { + ov101_021D8544(&v0->unk_3C); + } + } +} + +static void ov101_021D6E78 (UnkStruct_ov101_021D5D90 * param0, fx32 param1, fx32 param2, fx32 param3, fx32 param4, UnkStruct_02022550 * param5, int param6) +{ + VecFx32 v0, v1; + + sub_020715E4(param0, &v0); + v0.x += param3; + v0.y += param4; + sub_020715D4(param0, &v0); + + if (param6 == 0) { + v1.x = param1 + v0.x; + } else { + v1.x = param1 - v0.x; + } + + v1.y = param2 - v0.y; + sub_02021C50(param5, &v1); +} + +static void ov101_021D6EC8 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D6D10 * v0 = param1; + + switch (v0->unk_00) { + case 0: + if (v0->unk_10 != 2) { + return; + } + + { + VecFx32 v1 = {0, ((FX32_ONE * 192) + (FX32_ONE * 256)), 0}; + + ov101_021D84A4(v0->unk_2C->unk_450, &v0->unk_30, &v1, (NNS_G2D_VRAM_TYPE_2DSUB), 1, 5, 5, 5, 5, 2, 4); + ov101_021D84A4(v0->unk_2C->unk_450, &v0->unk_3C, &v1, (NNS_G2D_VRAM_TYPE_2DSUB), 1, 5, 5, 5, 5, 2, 4); + sub_02021D0C(v0->unk_3C.unk_04, 1); + v0->unk_00++; + } + case 1: + { + int v2 = 0; + VecFx32 v3, v4; + + sub_020715E4(param0, &v3); + + v3.x += (FX32_ONE * 8); + v3.y += (FX32_ONE * 8); + + if (v3.x >= (FX32_ONE * 64)) { + v3.x = (FX32_ONE * 64); + v2++; + } + + if (v3.y >= (FX32_ONE * 56)) { + v3.y = (FX32_ONE * 64); + v2++; + } + + sub_020715D4(param0, &v3); + + v4.x = (FX32_ONE * -32) + v3.x; + v4.y = ((FX32_ONE * 192) + (FX32_ONE * 228)) - v3.y; + + sub_02021C50(v0->unk_30.unk_04, &v4); + + v4.x = (FX32_ONE * 288) - v3.x; + v4.y = ((FX32_ONE * 192) + (FX32_ONE * 228)) - v3.y; + + sub_02021C50(v0->unk_3C.unk_04, &v4); + + if (v2 == 2) { + v0->unk_00++; + } + } + break; + case 2: + v0->unk_08++; + + if (v0->unk_08 < 8) { + break; + } + + v0->unk_08 = 0; + v0->unk_00++; + case 3: + ov101_021D6E78(param0, (FX32_ONE * -32), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * -2), (FX32_ONE * -4), v0->unk_30.unk_04, 0); + + v0->unk_08++; + + if (v0->unk_08 >= 4) { + v0->unk_08 = 0; + v0->unk_00++; + } + break; + case 4: + ov101_021D6E78(param0, (FX32_ONE * -32), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * 2), (FX32_ONE * 4), v0->unk_30.unk_04, 0); + + v0->unk_08++; + + if (v0->unk_08 >= 4) { + v0->unk_08 = 0; + v0->unk_00++; + } + break; + case 5: + ov101_021D6E78(param0, (FX32_ONE * 288), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * -2), (FX32_ONE * -4), v0->unk_3C.unk_04, 1); + + v0->unk_08++; + + if (v0->unk_08 >= 4) { + v0->unk_08 = 0; + v0->unk_00++; + } + break; + case 6: + ov101_021D6E78(param0, (FX32_ONE * 288), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * 2), (FX32_ONE * 4), v0->unk_3C.unk_04, 1); + + v0->unk_08++; + + if (v0->unk_08 >= 4) { + v0->unk_08 = 0; + + v0->unk_0C++; + + if (v0->unk_0C < 2) { + v0->unk_00 = 3; + } else { + v0->unk_0C = 0; + v0->unk_00++; + } + } + break; + case 7: + v0->unk_08++; + + if (v0->unk_08 < 8) { + break; + } + + v0->unk_08 = 0; + v0->unk_00++; + case 8: + ov101_021D6E78(param0, (FX32_ONE * -32), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * -2), (FX32_ONE * -4), v0->unk_30.unk_04, 0); + ov101_021D6E78(param0, (FX32_ONE * 288), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * 0), (FX32_ONE * 0), v0->unk_3C.unk_04, 1); + + v0->unk_08++; + + if (v0->unk_08 >= 4) { + v0->unk_08 = 0; + v0->unk_00++; + } + break; + case 9: + ov101_021D6E78(param0, (FX32_ONE * -32), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * 2), (FX32_ONE * 4), v0->unk_30.unk_04, 0); + ov101_021D6E78(param0, (FX32_ONE * 288), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * 0), (FX32_ONE * 0), v0->unk_3C.unk_04, 1); + + v0->unk_08++; + + if (v0->unk_08 >= 4) { + v0->unk_08 = 0; + + v0->unk_0C++; + + if (v0->unk_0C < 2) { + v0->unk_00 = 8; + } else { + v0->unk_0C = 0; + v0->unk_00++; + } + } + break; + case 10: + ov101_021D6E78(param0, (FX32_ONE * -32), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * -8), (FX32_ONE * -8), v0->unk_30.unk_04, 0); + ov101_021D6E78(param0, (FX32_ONE * 288), ((FX32_ONE * 192) + (FX32_ONE * 228)), (FX32_ONE * 0), (FX32_ONE * 0), v0->unk_3C.unk_04, 1); + + v0->unk_08++; + + if (v0->unk_08 >= 4) { + ov101_021D8544(&v0->unk_30); + ov101_021D8544(&v0->unk_3C); + ov101_021D8358(v0->unk_2C->unk_450, 5, 5, 5, 5); + } + + v0->unk_00++; + v0->unk_04 = 1; + } +} + +static void ov101_021D7224 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D6D10 * v0 = param1; +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9178 = { + sizeof(UnkStruct_ov101_021D6D10), + ov101_021D6E28, + ov101_021D6E3C, + ov101_021D6EC8, + ov101_021D7224 +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D918C; + +UnkStruct_ov101_021D5D90 * ov101_021D7228 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {(FX32_ONE * 24), ((FX32_ONE * 192) + (FX32_ONE * 8)), 0}; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D918C, &v1, 0, param0, 142); + return v0; +} + +static int ov101_021D7260 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + VecFx32 v0; + UnkStruct_ov101_021D72AC * v1 = param1; + + v1->unk_00 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + + sub_020715E4(param0, &v0); + ov101_021D84A4(v1->unk_00->unk_450, &v1->unk_04, &v0, (NNS_G2D_VRAM_TYPE_2DSUB), 0, 6, 6, 6, 6, 2, 3); + sub_02021CC8(v1->unk_04.unk_04, 1); + + return 1; +} + +static void ov101_021D72AC (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D72AC * v0 = param1; + ov101_021D8544(&v0->unk_04); +} + +static void ov101_021D72B8 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0 = 1; + UnkStruct_ov101_021D72AC * v1 = param1; + UnkStruct_ov101_021D4764 * v2 = &v1->unk_00->unk_13C; + + if (v2->unk_0C == 1) { + v0 = 0; + } + + sub_02021CAC(v1->unk_04.unk_04, v0); +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D918C = { + sizeof(UnkStruct_ov101_021D72AC), + ov101_021D7260, + ov101_021D72AC, + ov101_021D72B8, + sub_020715FC +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91C8; + +UnkStruct_ov101_021D5D90 * ov101_021D72D4 (UnkStruct_ov101_021D13C8 * param0) +{ + VecFx32 v0; + UnkStruct_ov101_021D5D90 * v1; + + v0.x = (FX32_ONE * (128 - (((6 + 5) * 8) / 2))); + v0.y = ((FX32_ONE * 192) + (FX32_ONE * (96 + 16))); + v1 = sub_02071330(param0->unk_44C, &Unk_ov101_021D91C8, &v0, 0, param0, 142); + + return v1; +} + +static int ov101_021D7304 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + VecFx32 v0; + VecFx32 v1 = {0, 0, 0}; + VecFx32 v2 = {0x2000, 0x2000, 0}; + UnkStruct_ov101_021D7394 * v3 = param1; + + v3->unk_04 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + + sub_020715E4(param0, &v0); + ov101_021D84A4(v3->unk_04->unk_450, &v3->unk_08, &v0, (NNS_G2D_VRAM_TYPE_2DSUB), 0, 6, 6, 6, 6, 2, 3); + + sub_02021CF8(v3->unk_08.unk_04, 2); + sub_02021C60(v3->unk_08.unk_04, &v1); + sub_02021C70(v3->unk_08.unk_04, &v2); + sub_02021C94(v3->unk_08.unk_04, sub_0201D2A4(0)); + sub_02021CC8(v3->unk_08.unk_04, 1); + + return 1; +} + +static void ov101_021D7394 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D7394 * v0 = param1; + ov101_021D8544(&v0->unk_08); +} + +static void ov101_021D73A0 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0 = 1; + UnkStruct_ov101_021D7394 * v1 = param1; + + v1->unk_00++; + + if (v1->unk_00 >= 45) { + sub_0207136C(param0); + } +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91C8 = { + sizeof(UnkStruct_ov101_021D7394), + ov101_021D7304, + ov101_021D7394, + ov101_021D73A0, + sub_020715FC +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D922C; + +UnkStruct_ov101_021D5D90 * ov101_021D73B4 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {(FX32_ONE * 200), ((FX32_ONE * 192) + (FX32_ONE * 184)), 0}; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D922C, &v1, 0, param0, 142); + return v0; +} + +static int ov101_021D73EC (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + VecFx32 v0; + UnkStruct_ov101_021D72AC * v1 = param1; + + v1->unk_00 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + + sub_020715E4(param0, &v0); + ov101_021D84A4(v1->unk_00->unk_450, &v1->unk_04, &v0, (NNS_G2D_VRAM_TYPE_2DSUB), 0, 7, 6, 7, 7, 2, 3); + sub_02021CC8(v1->unk_04.unk_04, 1); + + return 1; +} + +static void ov101_021D7438 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D7438 * v0 = param1; + ov101_021D8544(&v0->unk_04); +} + +static void ov101_021D7444 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0 = 1; + UnkStruct_ov101_021D7438 * v1 = param1; + UnkStruct_ov101_021D4764 * v2 = &v1->unk_00->unk_13C; + + if (v2->unk_0C == 1) { + v0 = 0; + } + + sub_02021CAC(v1->unk_04.unk_04, v0); +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D922C = { + sizeof(UnkStruct_ov101_021D7438), + ov101_021D73EC, + ov101_021D7438, + ov101_021D7444, + sub_020715FC +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9254; + +UnkStruct_ov101_021D5D90 * ov101_021D7460 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {(FX32_ONE * 200), ((FX32_ONE * 192) + (FX32_ONE * 184)), 0}; + + v1.x = (FX32_ONE * (128 - (((10 + 5) * 8) / 2))); + v1.y = ((FX32_ONE * 192) + (FX32_ONE * (96 - 16))); + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D9254, &v1, 0, param0, 142); + + return v0; +} + +static int ov101_021D74A0 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + VecFx32 v0; + VecFx32 v1 = {0, 0, 0}; + VecFx32 v2 = {0x2000, 0x2000, 0}; + UnkStruct_ov101_021D7530 * v3 = param1; + + v3->unk_04 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + + sub_020715E4(param0, &v0); + ov101_021D84A4(v3->unk_04->unk_450, &v3->unk_08, &v0, (NNS_G2D_VRAM_TYPE_2DSUB), 0, 7, 6, 7, 7, 2, 3); + + sub_02021CF8(v3->unk_08.unk_04, 2); + sub_02021C60(v3->unk_08.unk_04, &v1); + sub_02021C70(v3->unk_08.unk_04, &v2); + sub_02021C94(v3->unk_08.unk_04, sub_0201D2A4(0)); + sub_02021CC8(v3->unk_08.unk_04, 1); + + return 1; +} + +static void ov101_021D7530 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D7530 * v0 = param1; + ov101_021D8544(&v0->unk_08); +} + +static void ov101_021D753C (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0 = 1; + UnkStruct_ov101_021D7530 * v1 = param1; + + v1->unk_00++; + + if (v1->unk_00 >= 45) { + sub_0207136C(param0); + } +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9254 = { + sizeof(UnkStruct_ov101_021D7530), + ov101_021D74A0, + ov101_021D7530, + ov101_021D753C, + sub_020715FC +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D913C; + +UnkStruct_ov101_021D5D90 * ov101_021D7550 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {(FX32_ONE * 14), ((FX32_ONE * 192) + (FX32_ONE * 8)), 0}; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D913C, &v1, 0, param0, 142); + return v0; +} + +static int ov101_021D7588 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + VecFx32 v1; + UnkStruct_ov101_021D75F0 * v2 = param1; + + v2->unk_00 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + sub_020715E4(param0, &v1); + + for (v0 = 0; v0 < 2; v0++) { + ov101_021D84A4(v2->unk_00->unk_450, &v2->unk_04[v0], &v1, (NNS_G2D_VRAM_TYPE_2DSUB), 0, 8, 6, 8, 8, 2, 3); + sub_02021CAC(v2->unk_04[v0].unk_04, 0); + sub_02021CC8(v2->unk_04[v0].unk_04, 1); + } + + return 1; +} + +static void ov101_021D75F0 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D75F0 * v0 = param1; + + ov101_021D8544(&v0->unk_04[0]); + ov101_021D8544(&v0->unk_04[1]); +} + +static void ov101_021D7604 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D75F0 * v0 = param1; + UnkStruct_ov101_021D4764 * v1 = &v0->unk_00->unk_13C; + + sub_02021CAC(v0->unk_04[0].unk_04, 0); + sub_02021CAC(v0->unk_04[1].unk_04, 0); + + if (v1->unk_0C == 1) { + return; + } + + { + VecFx32 v2 = {(FX32_ONE * 52), ((FX32_ONE * 192) + (FX32_ONE * 8)), 0}; + u32 v3 = 0, v4, v5; + + v5 = v0->unk_00->unk_10; + + if (v5 > 99) { + v5 = 99; + } + + v4 = (v5 % 100) / 10; + + if (v4) { + sub_02021C50(v0->unk_04[v3].unk_04, &v2); + sub_02021D6C(v0->unk_04[v3].unk_04, v4); + sub_02021DE0(v0->unk_04[v3].unk_04); + sub_02021CAC(v0->unk_04[v3].unk_04, 1); + v2.x += (FX32_ONE * 8); + v3++; + } + + v4 = (v5 % 10); + + sub_02021C50(v0->unk_04[v3].unk_04, &v2); + sub_02021D6C(v0->unk_04[v3].unk_04, v4); + sub_02021DE0(v0->unk_04[v3].unk_04); + sub_02021CAC(v0->unk_04[v3].unk_04, 1); + } +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D913C = { + sizeof(UnkStruct_ov101_021D5B9C), + ov101_021D7588, + ov101_021D75F0, + ov101_021D7604, + sub_020715FC +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91A0; + +UnkStruct_ov101_021D5D90 * ov101_021D76B4 (UnkStruct_ov101_021D13C8 * param0) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {(FX32_ONE * 14), ((FX32_ONE * 192) + (FX32_ONE * 8)), 0}; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D91A0, &v1, 0, param0, 142); + return v0; +} + +static int ov101_021D76EC (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + VecFx32 v1 = {(FX32_ONE * 220), ((FX32_ONE * 192) + (FX32_ONE * 184)), 0}; + UnkStruct_ov101_021D7754 * v2 = param1; + + v2->unk_00 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + + for (v0 = 0; v0 < 5; v0++, v1.x += (FX32_ONE * 8)) { + ov101_021D84A4(v2->unk_00->unk_450, &v2->unk_04[v0], &v1, (NNS_G2D_VRAM_TYPE_2DSUB), 0, 8, 6, 8, 8, 2, 3); + } + + return 1; +} + +static void ov101_021D7754 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D7754 * v0 = param1; + int v1; + + for (v1 = 0; v1 < 5; v1++) { + ov101_021D8544(&v0->unk_04[v1]); + } +} + +static void ov101_021D776C (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D7754 * v1 = param1; + UnkStruct_ov101_021D4764 * v2 = &v1->unk_00->unk_13C; + + { + int v3 = 1; + + if (v2->unk_0C == 1) { + v3 = 0; + } + + for (v0 = 0; v0 < 5; sub_02021CAC(v1->unk_04[v0].unk_04, v3), v0++) { + (void)0; + } + + if (v3 == 0) { + return; + } + } + + { + int v4; + int v5 = 0, v6, v7; + + v7 = v1->unk_00->unk_14; + + if (v7 > 50000) { + v7 = 50000; + } + + for (v4 = 10000; v4 >= 1; v4 /= 10, v5++) { + v6 = (v7 % (v4 * 10)) / v4; + sub_02021D6C(v1->unk_04[v5].unk_04, v6); + sub_02021DE0(v1->unk_04[v5].unk_04); + } + } +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91A0 = { + sizeof(UnkStruct_ov101_021D7754), + ov101_021D76EC, + ov101_021D7754, + ov101_021D776C, + sub_020715FC +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9240; + +UnkStruct_ov101_021D5D90 * ov101_021D77E4 (UnkStruct_ov101_021D13C8 * param0, UnkEnum_ov101_021D77E4 param1) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {0, 0, 0}; + u32 v2; + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D9240, &v1, param1, param0, 142); + + return v0; +} + +static int ov101_021D7810 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0, v1, v2; + VecFx32 v3; + VecFx32 v4 = {0, 0, 0}; + VecFx32 v5 = {0x2000, 0x2000, 0}; + UnkStruct_ov101_021D7984 * v6 = param1; + UnkStruct_ov101_021D13C8 * v7 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + + v6->unk_00 = sub_020715B4(param0); + v6->unk_14 = v7; + + if (v6->unk_00 == UnkEnum_ov101_021D77E4_00) { + v6->unk_04 = v7->unk_1C; + + if (v6->unk_04 > 999) { + v6->unk_04 = 999; + } + + if (v6->unk_04 >= 100) { + v6->unk_08 = 3; + } else if (v6->unk_04 >= 10) { + v6->unk_08 = 2; + } else { + v6->unk_08 = 1; + } + + v3.x = (FX32_ONE * (128 + (((4 + 5) * 16) / 2))); + v3.y = ((FX32_ONE * 192) + (FX32_ONE * (96 + 16))); + } else { + v6->unk_04 = v7->unk_14; + + if (v6->unk_04 > 99999) { + v6->unk_04 = 99999; + } + + if (v6->unk_04 >= 10000) { + v6->unk_08 = 5; + } else if (v6->unk_04 >= 1000) { + v6->unk_08 = 4; + } else if (v6->unk_04 >= 100) { + v6->unk_08 = 3; + } else if (v6->unk_04 >= 10) { + v6->unk_08 = 2; + } else { + v6->unk_08 = 1; + } + + v3.x = (FX32_ONE * (128 + (((4 + 5) * 16) / 2))); + v3.y = ((FX32_ONE * 192) + (FX32_ONE * (96 - 16))); + } + + for (v0 = 0, v1 = 1; v0 < v6->unk_08; v0++, v1 *= 10, v3.x -= (FX32_ONE * 16)) { + ov101_021D84A4(v6->unk_14->unk_450, &v6->unk_18[v0], &v3, (NNS_G2D_VRAM_TYPE_2DSUB), 0, 8, 6, 8, 8, 2, 3); + + sub_02021CF8(v6->unk_18[v0].unk_04, 2); + sub_02021C60(v6->unk_18[v0].unk_04, &v4); + sub_02021C70(v6->unk_18[v0].unk_04, &v5); + sub_02021C94(v6->unk_18[v0].unk_04, sub_0201D2A4(0)); + + v2 = (v6->unk_04 % (v1 * 10)) / v1; + + sub_02021D6C(v6->unk_18[v0].unk_04, v2); + sub_02021DE0(v6->unk_18[v0].unk_04); + } + + v6->unk_10 = v0; + return 1; +} + +static void ov101_021D7984 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D7984 * v1 = param1; + + for (v0 = 0; v0 < v1->unk_10; v0++) { + ov101_021D8544(&v1->unk_18[v0]); + } +} + +static void ov101_021D79A8 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D7984 * v1 = param1; + + v1->unk_0C++; + + if (v1->unk_0C >= 45) { + sub_0207136C(param0); + } +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9240 = { + sizeof(UnkStruct_ov101_021D7984), + ov101_021D7810, + ov101_021D7984, + ov101_021D79A8, + sub_020715FC +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9268; + +UnkStruct_ov101_021D5D90 * ov101_021D79BC (UnkStruct_ov101_021D13C8 * param0, u32 param1) +{ + UnkStruct_ov101_021D5D90 * v0; + VecFx32 v1 = {(FX32_ONE * 128), ((FX32_ONE * 192) + (FX32_ONE * 32)), 0}; + + if (param1 > 999) { + param1 = 999; + } + + v0 = sub_02071330(param0->unk_44C, &Unk_ov101_021D9268, &v1, param1, param0, 142); + return v0; +} + +static int ov101_021D7A00 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + u32 v1, v2, v3; + VecFx32 v4; + UnkStruct_ov101_021D7A00 * v5 = param1; + + v5->unk_08 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + v1 = sub_020715B4(param0); + + sub_020715E4(param0, &v4); + + if (v1 >= 100) { + v2 = 100; + v5->unk_04 = 3; + v4.x -= (FX32_ONE * 16); + } else if (v1 >= 10) { + v2 = 10; + v5->unk_04 = 2; + v4.x -= (FX32_ONE * 8); + } else { + v2 = 1; + v5->unk_04 = 1; + } + + for (v0 = 0; v0 < v5->unk_04; v0++, v4.x += (FX32_ONE * 16), v2 /= 10) { + ov101_021D84A4(v5->unk_08->unk_450, &v5->unk_0C[v0], &v4, (NNS_G2D_VRAM_TYPE_2DSUB), 0, 9, 7, 9, 9, 2, 3); + + v3 = (v1 % (v2 * 10)) / v2; + sub_02021D6C(v5->unk_0C[v0].unk_04, v3); + } + + return 1; +} + +static void ov101_021D7AD0 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + UnkStruct_ov101_021D7A00 * v0 = param1; + int v1; + + for (v1 = 0; v1 < v0->unk_04; v1++) { + ov101_021D8544(&v0->unk_0C[v1]); + } +} + +static void ov101_021D7AF4 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D7A00 * v1 = param1; + + v1->unk_00++; + + if (v1->unk_00 >= 60) { + sub_0207136C(param0); + } +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D9268 = { + sizeof(UnkStruct_ov101_021D7A00), + ov101_021D7A00, + ov101_021D7AD0, + ov101_021D7AF4, + sub_020715FC +}; + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91B4; + +UnkStruct_ov101_021D5D90 * ov101_021D7B08 (UnkStruct_ov101_021D13C8 * param0) +{ + VecFx32 v0 = {0, 0, 0}; + UnkStruct_ov101_021D5D90 * v1 = sub_02071330(param0->unk_44C, &Unk_ov101_021D91B4, &v0, 0, param0, 140); + + return v1; +} + +static const VecFx32 Unk_ov101_021D9424[UnkEnum_ov101_021D4F58_05][3] = { + { + {(FX32_ONE * 68), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 2)))), 0x0}, + {(FX32_ONE * 128), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 2)))), 0x0}, + {(FX32_ONE * 188), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 2)))), 0x0} + }, + { + {(FX32_ONE * 68), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 1)))), 0x0}, + {(FX32_ONE * 128), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 1)))), 0x0}, + {(FX32_ONE * 188), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 1)))), 0x0} + }, + { + {(FX32_ONE * 68), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 3)))), 0x0}, + {(FX32_ONE * 128), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 3)))), 0x0}, + {(FX32_ONE * 188), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 3)))), 0x0} + }, + { + {(FX32_ONE * 68), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 1)))), 0x0}, + {(FX32_ONE * 128), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 2)))), 0x0}, + {(FX32_ONE * 188), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 3)))), 0x0} + }, + { + {(FX32_ONE * 68), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 3)))), 0x0}, + {(FX32_ONE * 128), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 2)))), 0x0}, + {(FX32_ONE * 188), ((FX32_ONE * 16) + ((FX32_ONE * (32 * 1)))), 0x0} + } +}; + +static int ov101_021D7B34 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + u32 v0; + UnkStruct_ov101_021D7D94 * v1 = param1; + + v1->unk_44 = (UnkStruct_ov101_021D13C8 *)sub_020715BC(param0); + v1->unk_18 = v1->unk_44->unk_44; + + v0 = v1->unk_44->unk_48; + + do { + if ((v0 & 0x1)) { + break; + } + + v0 >>= 1; + v1->unk_1C++; + } while (v1->unk_1C < UnkEnum_ov101_021D4F58_05); + + GF_ASSERT(v1->unk_1C < UnkEnum_ov101_021D4F58_05); + + ov101_021D7D94(v1); + return 1; +} + +static void ov101_021D7B74 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0; + UnkStruct_ov101_021D7D94 * v1 = param1; + + if (v1->unk_14 == 0) { + for (v0 = 0; v0 < 3; v0++) { + if (v1->unk_20[v0].unk_04 != NULL) { + ov101_021D8544(&v1->unk_20[v0]); + } + } + + ov101_021D8358(v1->unk_44->unk_450, 10, 8, 10, 10); + } +} + +static void ov101_021D7BB4 (UnkStruct_ov101_021D5D90 * param0, void * param1) +{ + int v0, v1; + VecFx32 v2; + UnkStruct_ov101_021D7D94 * v3 = param1; + + switch (v3->unk_00) { + case 0: + if (v3->unk_08 != 2) { + break; + } + + for (v0 = 0; v0 < 3; v0++) { + v2 = Unk_ov101_021D9424[v3->unk_1C][v0]; + ov101_021D84A4(v3->unk_44->unk_450, &v3->unk_20[v0], &v2, (NNS_G2D_VRAM_TYPE_MAX), 0, 10, 0, 10, 10, 1, 0); + sub_02021CC8(v3->unk_20[v0].unk_04, 1); + } + + v3->unk_00++; + break; + case 1: + for (v0 = 0, v1 = 0; v0 < 3; v0++) { + ov101_021D8560(v3->unk_20[v0].unk_04, &v2); + v2.y += (FX32_ONE * 4); + + if (v2.y >= ((FX32_ONE * 192) + (FX32_ONE * 48))) { + v2.y = ((FX32_ONE * 192) + (FX32_ONE * 48)); + } else { + v1 = 1; + } + + sub_02021C50(v3->unk_20[v0].unk_04, &v2); + } + + if (v1 == 0) { + v3->unk_00++; + } + break; + case 2: + v3->unk_0C++; + + if (v3->unk_0C >= 30) { + v3->unk_0C = 0; + v3->unk_00++; + } + break; + case 3: + v3->unk_0C++; + + if (v3->unk_0C < 12) { + v1 = 0; + } else { + v1 = 1; + } + + for (v0 = 0; v0 < 3; v0++) { + sub_02021CAC(v3->unk_20[v0].unk_04, v1); + } + + if (v3->unk_0C >= 30) { + v3->unk_0C = 0; + v3->unk_10++; + + if (v3->unk_10 >= 3) { + v3->unk_10 = 0; + v3->unk_00++; + } + } + break; + case 4: + v3->unk_0C++; + + if (v3->unk_0C >= 30) { + v3->unk_0C = 0; + v3->unk_00++; + } + break; + case 5: + for (v0 = 0; v0 < 3; v0++) { + ov101_021D8544(&v3->unk_20[v0]); + } + + ov101_021D8358(v3->unk_44->unk_450, 10, 8, 10, 10); + + v3->unk_00++; + v3->unk_04 = 1; + v3->unk_14 = 1; + } +} + +static const UnkStruct_ov101_021D86B0 Unk_ov101_021D91B4 = { + sizeof(UnkStruct_ov101_021D7D94), + ov101_021D7B34, + ov101_021D7B74, + ov101_021D7BB4, + sub_020715FC +}; + +static void ov101_021D7D4C (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D7D94 * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_44; + + ov101_021D814C(v1->unk_450, 10); + v0->unk_08 = 1; + sub_0200DA58(param0); +} + +static void ov101_021D7D6C (UnkStruct_0201CD38 * param0, void * param1) +{ + UnkStruct_ov101_021D7D94 * v0 = param1; + UnkStruct_ov101_021D13C8 * v1 = v0->unk_44; + + if (v0->unk_08 == 1) { + ov101_021D8180(v1->unk_450, 10); + v0->unk_08 = 2; + sub_0200DA58(param0); + } +} + +static void ov101_021D7D94 (UnkStruct_ov101_021D7D94 * param0) +{ + UnkStruct_0201CD38 * v0; + UnkStruct_ov101_021D13C8 * v1 = param0->unk_44; + + if (param0->unk_18 == 0) { + ov101_021D80E4(v1->unk_450, (NNS_G2D_VRAM_TYPE_MAX), v1->unk_438, 14, 10); + ov101_021D8288(v1->unk_450, v1->unk_438, 15, 10); + ov101_021D82F0(v1->unk_450, v1->unk_438, 16, 10); + } else { + ov101_021D80E4(v1->unk_450, (NNS_G2D_VRAM_TYPE_MAX), v1->unk_438, 17, 10); + ov101_021D8288(v1->unk_450, v1->unk_438, 18, 10); + ov101_021D82F0(v1->unk_450, v1->unk_438, 19, 10); + } + + v0 = sub_0200DA04(ov101_021D7D4C, param0, 257); + GF_ASSERT(v0 != NULL); + v0 = sub_0200DA3C(ov101_021D7D6C, param0, 257); + GF_ASSERT(v0 != NULL); +} + +static const int Unk_ov101_021D927C[6] = { + 0x0, + 0x1, + 0x2, + 0x3, + 0x4, + 0x5 +}; + +static const fx32 Unk_ov101_021D937C[10] = { + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0) +}; + +static const fx32 Unk_ov101_021D9354[10] = { + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0), + (FX32_ONE * 0) +}; + +static const UnkStruct_ov101_021D93D4 Unk_ov101_021D93D4[UnkEnum_ov101_021D5814_05] = { + {0x18, 0x1B, 0x19, 0x1A}, + {0x1C, 0x1F, 0x1D, 0x1E}, + {0x20, 0x23, 0x21, 0x22}, + {0x24, 0x27, 0x25, 0x26}, + {0x28, 0x2B, 0x29, 0x2A} +}; + +static const UnkStruct_ov101_021D93D4 Unk_ov101_021D93A4[UnkEnum_ov101_021D6764_03] = { + {0x30, 0x33, 0x31, 0x32}, + {0x34, 0x33, 0x35, 0x36}, + {0x30, 0x37, 0x31, 0x32} +}; diff --git a/src/overlay101/ov101_021D7E48.c b/src/overlay101/ov101_021D7E48.c new file mode 100644 index 0000000000..7e9c1b33fb --- /dev/null +++ b/src/overlay101/ov101_021D7E48.c @@ -0,0 +1,375 @@ +#include +#include + +#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_020218BC_decl.h" +#include "struct_decls/struct_02022550_decl.h" + +#include "struct_defs/struct_0200C738.h" +#include "overlay019/struct_ov19_021DA864.h" +#include "overlay083/struct_ov83_0223D9A8.h" +#include "overlay101/struct_ov101_021D8544.h" + +#include "unk_020093B4.h" +#include "unk_02009714.h" +#include "unk_0200A328.h" +#include "unk_02017E74.h" +#include "unk_0201DBEC.h" +#include "unk_020218BC.h" +#include "overlay101/ov101_021D7E48.h" + +typedef struct { + u16 unk_00; + u16 unk_02; + UnkStruct_02009DC8 * unk_04; +} UnkStruct_ov101_021D7E48_sub1; + +typedef struct UnkStruct_ov101_021D7E48_t { + u32 unk_00; + u8 unk_04; + u8 unk_05; + u8 unk_06; + u8 unk_07; + u8 unk_08; + u8 unk_09; + u8 unk_0A; + u8 unk_0B; + UnkStruct_020218BC * unk_0C; + UnkStruct_0200C738 unk_10; + NNSG2dCellTransferState * unk_19C; + UnkStruct_02009714 * unk_1A0; + UnkStruct_02009714 * unk_1A4; + UnkStruct_02009714 * unk_1A8; + UnkStruct_02009714 * unk_1AC; + UnkStruct_ov101_021D7E48_sub1 * unk_1B0; + UnkStruct_ov101_021D7E48_sub1 * unk_1B4; + UnkStruct_ov101_021D7E48_sub1 * unk_1B8; + UnkStruct_ov101_021D7E48_sub1 * unk_1BC; +} UnkStruct_ov101_021D7E48; + +UnkStruct_ov101_021D7E48 * ov101_021D7E48 (u32 param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, u32 param6, u32 param7, u32 param8, u32 param9, u32 param10) +{ + UnkStruct_ov101_021D7E48 * v0 = sub_02018144(param0, (sizeof(UnkStruct_ov101_021D7E48))); + + GF_ASSERT(v0 != NULL); + + v0->unk_00 = param0; + v0->unk_04 = param3; + v0->unk_05 = param4; + v0->unk_06 = param5; + v0->unk_07 = param6; + v0->unk_08 = param7; + v0->unk_09 = param8; + v0->unk_0A = param9; + v0->unk_0B = param10; + v0->unk_0C = sub_020095C4(param1, &v0->unk_10, param0); + v0->unk_19C = sub_0201DCC8(param2, param0); + + sub_0201DBEC(param2, param0); + + v0->unk_1A0 = sub_02009714(param3, 0, param0); + v0->unk_1A4 = sub_02009714(param4, 1, param0); + v0->unk_1A8 = sub_02009714(param5, 2, param0); + v0->unk_1AC = sub_02009714(param6, 3, param0); + v0->unk_1B0 = sub_02018144(param0, (sizeof(UnkStruct_ov101_021D7E48_sub1)) * param3); + v0->unk_1B4 = sub_02018144(param0, (sizeof(UnkStruct_ov101_021D7E48_sub1)) * param4); + v0->unk_1B8 = sub_02018144(param0, (sizeof(UnkStruct_ov101_021D7E48_sub1)) * param5); + v0->unk_1BC = sub_02018144(param0, (sizeof(UnkStruct_ov101_021D7E48_sub1)) * param6); + + { + u32 v1; + + for (v1 = 0; v1 < param3; v0->unk_1B0[v1].unk_00 = param7, v1++) { + (void)0; + } + + for (v1 = 0; v1 < param4; v0->unk_1B4[v1].unk_00 = param8, v1++) { + (void)0; + } + + for (v1 = 0; v1 < param5; v0->unk_1B8[v1].unk_00 = param9, v1++) { + (void)0; + } + + for (v1 = 0; v1 < param6; v0->unk_1BC[v1].unk_00 = param10, v1++) { + (void)0; + } + } + + return v0; +} + +void ov101_021D7FB4 (UnkStruct_ov101_021D7E48 * param0) +{ + u32 v0; + + for (v0 = 0; v0 < param0->unk_04; v0++) { + if (param0->unk_1B0[v0].unk_00 != param0->unk_08) { + sub_0200A4E4(param0->unk_1B0[v0].unk_04); + } + } + + for (v0 = 0; v0 < param0->unk_05; v0++) { + if (param0->unk_1B4[v0].unk_00 != param0->unk_09) { + sub_0200A6DC(param0->unk_1B4[v0].unk_04); + } + } + + for (v0 = 0; v0 < param0->unk_06; v0++) { + if (param0->unk_1B8[v0].unk_00 != param0->unk_0A) { + sub_02009D4C(param0->unk_1B8[v0].unk_04); + } + } + + for (v0 = 0; v0 < param0->unk_07; v0++) { + if (param0->unk_1BC[v0].unk_00 != param0->unk_0B) { + sub_02009D4C(param0->unk_1BC[v0].unk_04); + } + } + + sub_02009754(param0->unk_1A0); + sub_02009754(param0->unk_1A4); + sub_02009754(param0->unk_1A8); + sub_02009754(param0->unk_1AC); + sub_020181C4(param0->unk_1B0); + sub_020181C4(param0->unk_1B4); + sub_020181C4(param0->unk_1B8); + sub_020181C4(param0->unk_1BC); + sub_0201DC3C(); + sub_0201DCF0(param0->unk_19C); + sub_020219C0(param0->unk_0C); + sub_02021964(param0->unk_0C); + sub_020181C4(param0); +} + +void ov101_021D80D4 (UnkStruct_ov101_021D7E48 * param0) +{ + sub_020219F8(param0->unk_0C); + sub_0201DCE8(); +} + +void ov101_021D80E4 (UnkStruct_ov101_021D7E48 * param0, u32 param1, UnkStruct_02006C24 * param2, u32 param3, u32 param4) +{ + u32 v0; + + for (v0 = 0; v0 < param0->unk_04; v0++) { + if (param0->unk_1B0[v0].unk_00 == param0->unk_08) { + param0->unk_1B0[v0].unk_00 = param4; + param0->unk_1B0[v0].unk_02 = 0; + param0->unk_1B0[v0].unk_04 = sub_02009A4C( + param0->unk_1A0, param2, param3, 0, param4, param1, param0->unk_00); + return; + } + } + + GF_ASSERT(FALSE); +} + +void ov101_021D814C (UnkStruct_ov101_021D7E48 * param0, u32 param1) +{ + u32 v0; + + for (v0 = 0; v0 < param0->unk_04; v0++) { + if (param0->unk_1B0[v0].unk_00 == param1) { + sub_0200A3DC(param0->unk_1B0[v0].unk_04); + return; + } + } + + GF_ASSERT(FALSE); +} + +void ov101_021D8180 (UnkStruct_ov101_021D7E48 * param0, u32 param1) +{ + u32 v0; + + for (v0 = 0; v0 < param0->unk_04; v0++) { + if (param0->unk_1B0[v0].unk_00 == param1) { + sub_02009D4C(param0->unk_1B0[v0].unk_04); + return; + } + } + + GF_ASSERT(FALSE); +} + +void ov101_021D81B4 (UnkStruct_ov101_021D7E48 * param0, u32 param1, UnkStruct_02006C24 * param2, u32 param3, u32 param4) +{ + u32 v0; + + for (v0 = 0; v0 < param0->unk_04; v0++) { + if (param0->unk_1B4[v0].unk_00 == param0->unk_09) { + param0->unk_1B4[v0].unk_00 = param4; + param0->unk_1B4[v0].unk_02 = 0; + param0->unk_1B4[v0].unk_04 = sub_02009B04(param0->unk_1A4, param2, param3, 0, param4, param1, 1, param0->unk_00); + return; + } + } + + GF_ASSERT(FALSE); +} + +void ov101_021D8220 (UnkStruct_ov101_021D7E48 * param0, u32 param1) +{ + u32 v0; + + for (v0 = 0; v0 < param0->unk_05; v0++) { + if (param0->unk_1B4[v0].unk_00 == param1) { + sub_0200A640(param0->unk_1B4[v0].unk_04); + return; + } + } + + GF_ASSERT(FALSE); +} + +void ov101_021D8254 (UnkStruct_ov101_021D7E48 * param0, u32 param1) +{ + u32 v0; + + for (v0 = 0; v0 < param0->unk_05; v0++) { + if (param0->unk_1B4[v0].unk_00 == param1) { + sub_02009D4C(param0->unk_1B4[v0].unk_04); + return; + } + } + + GF_ASSERT(FALSE); +} + +void ov101_021D8288 (UnkStruct_ov101_021D7E48 * param0, UnkStruct_02006C24 * param1, u32 param2, u32 param3) +{ + u32 v0; + + for (v0 = 0; v0 < param0->unk_04; v0++) { + if (param0->unk_1B8[v0].unk_00 == param0->unk_0A) { + param0->unk_1B8[v0].unk_00 = param3; + param0->unk_1B8[v0].unk_02 = 0; + param0->unk_1B8[v0].unk_04 = sub_02009BC4(param0->unk_1A8, param1, param2, 0, param3, 2, param0->unk_00); + return; + } + } + + GF_ASSERT(FALSE); +} + +void ov101_021D82F0 (UnkStruct_ov101_021D7E48 * param0, UnkStruct_02006C24 * param1, u32 param2, u32 param3) +{ + u32 v0; + + for (v0 = 0; v0 < param0->unk_04; v0++) { + if (param0->unk_1BC[v0].unk_00 == param0->unk_0B) { + param0->unk_1BC[v0].unk_00 = param3; + param0->unk_1BC[v0].unk_02 = 0; + param0->unk_1BC[v0].unk_04 = sub_02009BC4( + param0->unk_1AC, param1, param2, 0, param3, 3, param0->unk_00); + return; + } + } + + GF_ASSERT(FALSE); +} + +void ov101_021D8358 (UnkStruct_ov101_021D7E48 * param0, u32 param1, u32 param2, u32 param3, u32 param4) +{ + u32 v0; + + if (param1 != param0->unk_08) { + for (v0 = 0; v0 < param0->unk_04; v0++) { + if (param0->unk_1B0[v0].unk_00 == param1) { + sub_0200A4E4(param0->unk_1B0[v0].unk_04); + sub_02009D68(param0->unk_1A0, param0->unk_1B0[v0].unk_04); + param0->unk_1B0[v0].unk_00 = param0->unk_08; + break; + } + } + } + + if (param2 != param0->unk_09) { + for (v0 = 0; v0 < param0->unk_05; v0++) { + if (param0->unk_1B4[v0].unk_00 == param2) { + sub_0200A6DC(param0->unk_1B4[v0].unk_04); + sub_02009D68(param0->unk_1A4, param0->unk_1B4[v0].unk_04); + param0->unk_1B4[v0].unk_00 = param0->unk_09; + break; + } + } + } + + if (param3 != param0->unk_0A) { + for (v0 = 0; v0 < param0->unk_06; v0++) { + if (param0->unk_1B8[v0].unk_00 == param3) { + sub_02009D4C(param0->unk_1B8[v0].unk_04); + sub_02009D68(param0->unk_1A8, param0->unk_1B8[v0].unk_04); + param0->unk_1B8[v0].unk_00 = param0->unk_0A; + break; + } + } + } + + if (param4 != param0->unk_0B) { + for (v0 = 0; v0 < param0->unk_07; v0++) { + if (param0->unk_1BC[v0].unk_00 == param4) { + sub_02009D4C(param0->unk_1BC[v0].unk_04); + sub_02009D68(param0->unk_1AC, param0->unk_1BC[v0].unk_04); + param0->unk_1BC[v0].unk_00 = param0->unk_0B; + break; + } + } + } +} + +void ov101_021D84A4 (UnkStruct_ov101_021D7E48 * param0, UnkStruct_ov101_021D8544 * param1, const VecFx32 * param2, u32 param3, int param4, u32 param5, u32 param6, u32 param7, u32 param8, int param9, int param10) +{ + UnkStruct_ov19_021DA864 v0; + UnkStruct_ov83_0223D9A8 v1; + UnkStruct_02022550 * v2; + + if (param8 == param0->unk_0B) { + param8 = 0xffffffff; + } + + sub_020093B4( + &v0, param5, param6, param7, param8, 0xffffffff, 0xffffffff, param4, param9, param0->unk_1A0, param0->unk_1A4, param0->unk_1A8, param0->unk_1AC, NULL, NULL); + + if (param4 == 1) { + param1->unk_08 = v0.unk_00; + param1->unk_00 = 1; + } else { + param1->unk_00 = 0; + } + + v1.unk_00 = param0->unk_0C; + v1.unk_04 = &v0; + v1.unk_08 = *param2; + v1.unk_14 = param10; + v1.unk_18 = param3; + v1.unk_1C = param0->unk_00; + + param1->unk_04 = sub_02021B90(&v1); + GF_ASSERT(param1->unk_04 != NULL); +} + +void ov101_021D8544 (UnkStruct_ov101_021D8544 * param0) +{ + if (param0->unk_00 == 1) { + sub_0200A5B4(param0->unk_08); + } + + sub_02021BD4(param0->unk_04); + param0->unk_04 = NULL; +} + +void ov101_021D8560 (UnkStruct_02022550 * param0, VecFx32 * param1) +{ + const VecFx32 * v0 = sub_02021D28(param0); + *param1 = *v0; +} + +void ov101_021D8574 (UnkStruct_02022550 * param0, VecFx32 * param1) +{ + const VecFx32 * v0 = sub_02021D2C(param0); + *param1 = *v0; +} diff --git a/src/overlay101/ov101_021D94D8.c b/src/overlay101/ov101_021D94D8.c new file mode 100644 index 0000000000..36e4d0eb25 --- /dev/null +++ b/src/overlay101/ov101_021D94D8.c @@ -0,0 +1,450 @@ +#include "enums.h" + +#include +#include + +#include "overlay101/const_ov101_021D9580.h" +#include "overlay101/const_ov101_021D9628.h" +#include "overlay101/const_ov101_021D9AE4.h" +#include "overlay101/const_ov101_021D94F0.h" +#include "overlay101/const_ov101_021D9934.h" +#include "overlay101/const_ov101_021D94D8.h" +#include "overlay101/const_ov101_021D9538.h" +#include "overlay101/const_ov101_021D9784.h" +#include "overlay101/const_ov101_021D95C8.h" +#include "overlay101/const_ov101_021D9520.h" +#include "overlay101/const_ov101_021D9550.h" +#include "overlay101/const_ov101_021D9508.h" +#include "overlay101/const_ov101_021D9598.h" +#include "overlay101/const_ov101_021D9568.h" +#include "overlay101/const_ov101_021D9688.h" + +#include "overlay101/struct_ov101_021D95C8.h" +#include "overlay101/struct_ov101_021D9784.h" +#include "overlay101/struct_ov101_021D9934.h" +#include "overlay101/struct_ov101_021D9AE4.h" + +const UnkEnum_ov101_021D9688 Unk_ov101_021D9688[3][21] = { + { + 0x5, + 0x3, + 0x1, + 0x0, + 0x2, + 0x4, + 0x5, + 0x3, + 0x1, + 0x2, + 0x4, + 0x5, + 0x3, + 0x1, + 0x2, + 0x4, + 0x5, + 0x2, + 0x0, + 0x2, + 0x4 }, + { + 0x3, + 0x0, + 0x1, + 0x5, + 0x4, + 0x2, + 0x3, + 0x0, + 0x5, + 0x4, + 0x2, + 0x3, + 0x0, + 0x5, + 0x4, + 0x2, + 0x3, + 0x1, + 0x5, + 0x4, + 0x2 }, + { + 0x4, + 0x2, + 0x1, + 0x0, + 0x2, + 0x5, + 0x4, + 0x2, + 0x1, + 0x3, + 0x5, + 0x4, + 0x2, + 0x1, + 0x3, + 0x5, + 0x4, + 0x2, + 0x0, + 0x3, + 0x5 } +}; + +const int Unk_ov101_021D9550[6] = { + 0x64, + 0x64, + 0x0, + 0x2, + 0xA, + 0xF +}; + +const int Unk_ov101_021D94F0[6] = { + 0x64, + 0x64, + 0xF, + 0x2, + 0xA, + 0xF +}; + +const u32 Unk_ov101_021D9520[6] = { + 0x19, + 0x19, + 0x1E, + 0x1E, + 0x23, + 0x23 +}; + +const UnkStruct_ov101_021D95C8 Unk_ov101_021D95C8[6] = { + { + { 0x1, 0x4 }, + { 0x2, 0xD }, + { 0x1, 0x27 }, + { 0x1, 0x27 } + }, + { + { 0x1, 0x4 }, + { 0x2, 0xD }, + { 0x1, 0x27 }, + { 0x1, 0x27 } + }, + { + { 0x2, 0x3 }, + { 0x4, 0xB }, + { 0x2, 0x26 }, + { 0x2, 0x26 } + }, + { + { 0x3, 0x2 }, + { 0x4, 0xB }, + { 0x2, 0x26 }, + { 0x2, 0x26 } + }, + { + { 0x4, 0x1 }, + { 0x6, 0x9 }, + { 0x3, 0x25 }, + { 0x3, 0x25 } + }, + { + { 0x4, 0x1 }, + { 0x6, 0x9 }, + { 0x3, 0x25 }, + { 0x3, 0x25 } + } +}; + + +const u32 Unk_ov101_021D94D8[6] = { + 0x50, + 0x50, + 0x50, + 0x50, + 0x50, + 0x46 +}; + + +const UnkStruct_ov101_021D9934 Unk_ov101_021D9934[6][UnkEnum_ov101_021D9934_06] = { + { + { 0x5, UnkEnum_ov101_021D9934_03, UnkEnum_ov101_021D9934_1_00 }, + { 0xA, UnkEnum_ov101_021D9934_01, UnkEnum_ov101_021D9934_1_01 }, + { 0xA, UnkEnum_ov101_021D9934_05, UnkEnum_ov101_021D9934_1_02 }, + { 0xA, UnkEnum_ov101_021D9934_02, UnkEnum_ov101_021D9934_1_02 }, + { 0xF, UnkEnum_ov101_021D9934_04, UnkEnum_ov101_021D9934_1_01 }, + { 0x32, UnkEnum_ov101_021D9934_00, UnkEnum_ov101_021D9934_1_00 } + }, + { + { 0x5, UnkEnum_ov101_021D9934_03, UnkEnum_ov101_021D9934_1_00 }, + { 0xA, UnkEnum_ov101_021D9934_01, UnkEnum_ov101_021D9934_1_01 }, + { 0xA, UnkEnum_ov101_021D9934_05, UnkEnum_ov101_021D9934_1_02 }, + { 0xA, UnkEnum_ov101_021D9934_02, UnkEnum_ov101_021D9934_1_02 }, + { 0xF, UnkEnum_ov101_021D9934_04, UnkEnum_ov101_021D9934_1_01 }, + { 0x32, UnkEnum_ov101_021D9934_00, UnkEnum_ov101_021D9934_1_00 } + }, + { + { 0x5, UnkEnum_ov101_021D9934_03, UnkEnum_ov101_021D9934_1_00 }, + { 0xF, UnkEnum_ov101_021D9934_01, UnkEnum_ov101_021D9934_1_01 }, + { 0xA, UnkEnum_ov101_021D9934_05, UnkEnum_ov101_021D9934_1_02 }, + { 0xF, UnkEnum_ov101_021D9934_02, UnkEnum_ov101_021D9934_1_02 }, + { 0xF, UnkEnum_ov101_021D9934_04, UnkEnum_ov101_021D9934_1_01 }, + { 0x28, UnkEnum_ov101_021D9934_00, UnkEnum_ov101_021D9934_1_00 } + }, + { + { 0x5, UnkEnum_ov101_021D9934_03, UnkEnum_ov101_021D9934_1_00 }, + { 0xF, UnkEnum_ov101_021D9934_01, UnkEnum_ov101_021D9934_1_01 }, + { 0xF, UnkEnum_ov101_021D9934_05, UnkEnum_ov101_021D9934_1_02 }, + { 0xF, UnkEnum_ov101_021D9934_02, UnkEnum_ov101_021D9934_1_02 }, + { 0xA, UnkEnum_ov101_021D9934_04, UnkEnum_ov101_021D9934_1_01 }, + { 0x28, UnkEnum_ov101_021D9934_00, UnkEnum_ov101_021D9934_1_00 } + }, + { + { 0x5, UnkEnum_ov101_021D9934_03, UnkEnum_ov101_021D9934_1_00 }, + { 0x14, UnkEnum_ov101_021D9934_01, UnkEnum_ov101_021D9934_1_01 }, + { 0xF, UnkEnum_ov101_021D9934_05, UnkEnum_ov101_021D9934_1_02 }, + { 0x14, UnkEnum_ov101_021D9934_02, UnkEnum_ov101_021D9934_1_02 }, + { 0xA, UnkEnum_ov101_021D9934_04, UnkEnum_ov101_021D9934_1_01 }, + { 0x1E, UnkEnum_ov101_021D9934_00, UnkEnum_ov101_021D9934_1_00 } + }, + { + { 0x5, UnkEnum_ov101_021D9934_03, UnkEnum_ov101_021D9934_1_00 }, + { 0x14, UnkEnum_ov101_021D9934_01, UnkEnum_ov101_021D9934_1_01 }, + { 0xF, UnkEnum_ov101_021D9934_05, UnkEnum_ov101_021D9934_1_02 }, + { 0x14, UnkEnum_ov101_021D9934_02, UnkEnum_ov101_021D9934_1_02 }, + { 0xA, UnkEnum_ov101_021D9934_04, UnkEnum_ov101_021D9934_1_01 }, + { 0x1E, UnkEnum_ov101_021D9934_00, UnkEnum_ov101_021D9934_1_00 } + } +}; + +const u32 Unk_ov101_021D9568[UnkEnum_ov101_021D9934_06] = { + 0x32, + 0x46, + 0x5A, + 0x32, + 0x46, + 0x5A +}; + +const UnkStruct_ov101_021D9784 Unk_ov101_021D9784[6][UnkEnum_ov101_021D9934_1_03][UnkEnum_ov101_021D6764_03] = { + { + { + { 0x5, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x4B, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x14, UnkEnum_ov101_021D6764_02 }, + { 0x3C, UnkEnum_ov101_021D6764_00 }, + { 0x14, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x4B, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x5, UnkEnum_ov101_021D6764_01 } + } + }, + { + { + { 0x5, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x4B, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x14, UnkEnum_ov101_021D6764_02 }, + { 0x3C, UnkEnum_ov101_021D6764_00 }, + { 0x14, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x4B, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x5, UnkEnum_ov101_021D6764_01 } + } + }, + { + { + { 0x5, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x4B, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x14, UnkEnum_ov101_021D6764_02 }, + { 0x3C, UnkEnum_ov101_021D6764_00 }, + { 0x14, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x4B, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x5, UnkEnum_ov101_021D6764_01 } + } + }, + { + { + { 0x5, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x4B, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x14, UnkEnum_ov101_021D6764_02 }, + { 0x3C, UnkEnum_ov101_021D6764_00 }, + { 0x14, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x4B, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x5, UnkEnum_ov101_021D6764_01 } + } + }, + { + { + { 0x5, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x4B, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x14, UnkEnum_ov101_021D6764_02 }, + { 0x3C, UnkEnum_ov101_021D6764_00 }, + { 0x14, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x4B, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x5, UnkEnum_ov101_021D6764_01 } + } + }, + { + { + { 0x5, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x4B, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x14, UnkEnum_ov101_021D6764_02 }, + { 0x3C, UnkEnum_ov101_021D6764_00 }, + { 0x14, UnkEnum_ov101_021D6764_01 } + }, + { + { 0x4B, UnkEnum_ov101_021D6764_02 }, + { 0x14, UnkEnum_ov101_021D6764_00 }, + { 0x5, UnkEnum_ov101_021D6764_01 } + } + } +}; + +const u32 Unk_ov101_021D9538[6] = { + 0x19, + 0x19, + 0x1E, + 0x1E, + 0x23, + 0x23 +}; + +const u32 Unk_ov101_021D9628[6][4] = { + { 0x5, 0xF, 0x1E, 0x32 }, + { 0x5, 0xF, 0x1E, 0x32 }, + { 0x5, 0xF, 0x1E, 0x32 }, + { 0x5, 0xF, 0x1E, 0x32 }, + { 0x5, 0xF, 0x1E, 0x32 }, + { 0x5, 0xF, 0x1E, 0x32 } +}; + +const u32 Unk_ov101_021D9580[6] = { + 0x1, + 0x1, + 0x3, + 0x3, + 0x5, + 0x5 +}; + +const u32 Unk_ov101_021D9508[6] = { + 0x3, + 0x3, + 0x5, + 0x5, + 0x7, + 0x7 +}; + +const u32 Unk_ov101_021D9598[6][2] = { + { 0x19, 0x14 }, + { 0x14, 0xF }, + { 0xF, 0xF }, + { 0xF, 0xF }, + { 0xA, 0xF }, + { 0x5, 0xA } +}; + +const UnkStruct_ov101_021D9AE4 Unk_ov101_021D9AE4[6][UnkEnum_ov101_021D9AE4_09] = { + { + { UnkEnum_ov101_021D9AE4_08, 0xA, 0xA, 0x50 }, + { UnkEnum_ov101_021D9AE4_07, 0xA, 0x1E, 0x3C }, + { UnkEnum_ov101_021D9AE4_06, 0xA, 0x28, 0x32 }, + { UnkEnum_ov101_021D9AE4_05, 0x14, 0x32, 0x1E }, + { UnkEnum_ov101_021D9AE4_04, 0x1E, 0x32, 0x14 }, + { UnkEnum_ov101_021D9AE4_03, 0x32, 0x28, 0xA }, + { UnkEnum_ov101_021D9AE4_02, 0x3C, 0x1E, 0xA }, + { UnkEnum_ov101_021D9AE4_01, 0x50, 0xA, 0xA }, + { UnkEnum_ov101_021D9AE4_00, 0x5A, 0x5, 0x5 } + }, + { + { UnkEnum_ov101_021D9AE4_08, 0xA, 0xA, 0x50 }, + { UnkEnum_ov101_021D9AE4_07, 0xA, 0x1E, 0x3C }, + { UnkEnum_ov101_021D9AE4_06, 0xA, 0x28, 0x32 }, + { UnkEnum_ov101_021D9AE4_05, 0x14, 0x32, 0x1E }, + { UnkEnum_ov101_021D9AE4_04, 0x1E, 0x32, 0x14 }, + { UnkEnum_ov101_021D9AE4_03, 0x32, 0x28, 0xA }, + { UnkEnum_ov101_021D9AE4_02, 0x3C, 0x1E, 0xA }, + { UnkEnum_ov101_021D9AE4_01, 0x50, 0xA, 0xA }, + { UnkEnum_ov101_021D9AE4_00, 0x5A, 0x5, 0x5 } + }, + { + { UnkEnum_ov101_021D9AE4_08, 0xA, 0xA, 0x50 }, + { UnkEnum_ov101_021D9AE4_07, 0xA, 0x1E, 0x3C }, + { UnkEnum_ov101_021D9AE4_06, 0xA, 0x28, 0x32 }, + { UnkEnum_ov101_021D9AE4_05, 0x14, 0x32, 0x1E }, + { UnkEnum_ov101_021D9AE4_04, 0x1E, 0x32, 0x14 }, + { UnkEnum_ov101_021D9AE4_03, 0x32, 0x28, 0xA }, + { UnkEnum_ov101_021D9AE4_02, 0x3C, 0x1E, 0xA }, + { UnkEnum_ov101_021D9AE4_01, 0x50, 0xA, 0xA }, + { UnkEnum_ov101_021D9AE4_00, 0x5A, 0x5, 0x5 } + }, + { + { UnkEnum_ov101_021D9AE4_08, 0xA, 0xA, 0x50 }, + { UnkEnum_ov101_021D9AE4_07, 0xA, 0x1E, 0x3C }, + { UnkEnum_ov101_021D9AE4_06, 0xA, 0x28, 0x32 }, + { UnkEnum_ov101_021D9AE4_05, 0x14, 0x32, 0x1E }, + { UnkEnum_ov101_021D9AE4_04, 0x1E, 0x32, 0x14 }, + { UnkEnum_ov101_021D9AE4_03, 0x32, 0x28, 0xA }, + { UnkEnum_ov101_021D9AE4_02, 0x3C, 0x1E, 0xA }, + { UnkEnum_ov101_021D9AE4_01, 0x50, 0xA, 0xA }, + { UnkEnum_ov101_021D9AE4_00, 0x5A, 0x5, 0x5 } + }, + { + { UnkEnum_ov101_021D9AE4_08, 0xA, 0xA, 0x50 }, + { UnkEnum_ov101_021D9AE4_07, 0xA, 0x1E, 0x3C }, + { UnkEnum_ov101_021D9AE4_06, 0xA, 0x28, 0x32 }, + { UnkEnum_ov101_021D9AE4_05, 0x14, 0x32, 0x1E }, + { UnkEnum_ov101_021D9AE4_04, 0x1E, 0x32, 0x14 }, + { UnkEnum_ov101_021D9AE4_03, 0x32, 0x28, 0xA }, + { UnkEnum_ov101_021D9AE4_02, 0x3C, 0x1E, 0xA }, + { UnkEnum_ov101_021D9AE4_01, 0x50, 0xA, 0xA }, + { UnkEnum_ov101_021D9AE4_00, 0x5A, 0x5, 0x5 } + }, + { + { UnkEnum_ov101_021D9AE4_08, 0xA, 0xA, 0x50 }, + { UnkEnum_ov101_021D9AE4_07, 0xA, 0x1E, 0x3C }, + { UnkEnum_ov101_021D9AE4_06, 0xA, 0x28, 0x32 }, + { UnkEnum_ov101_021D9AE4_05, 0x14, 0x32, 0x1E }, + { UnkEnum_ov101_021D9AE4_04, 0x1E, 0x32, 0x14 }, + { UnkEnum_ov101_021D9AE4_03, 0x32, 0x28, 0xA }, + { UnkEnum_ov101_021D9AE4_02, 0x3C, 0x1E, 0xA }, + { UnkEnum_ov101_021D9AE4_01, 0x50, 0xA, 0xA }, + { UnkEnum_ov101_021D9AE4_00, 0x5A, 0x5, 0x5 } + } +}; diff --git a/src/overlay102/ov102_021D0D80.c b/src/overlay102/ov102_021D0D80.c new file mode 100644 index 0000000000..d0f28b7ac3 --- /dev/null +++ b/src/overlay102/ov102_021D0D80.c @@ -0,0 +1,433 @@ +#include +#include + +#include "data_021BF67C.h" + +#include "struct_decls/struct_020067E8_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_02023790_decl.h" +#include "struct_decls/struct_02025E6C_decl.h" +#include "struct_decls/struct_021C0794_decl.h" + +#include "struct_defs/struct_0203E53C.h" +#include "struct_defs/struct_0205AA50.h" +#include "struct_defs/struct_0208BE5C.h" +#include "struct_defs/struct_02099F80.h" +#include "overlay061/struct_ov61_0222C884.h" +#include "overlay084/struct_ov84_0223BA5C.h" +#include "overlay097/struct_ov97_0222DB78.h" + +#include "unk_02000C88.h" +#include "unk_02002B7C.h" +#include "unk_020067E8.h" +#include "unk_02006E3C.h" +#include "unk_0200AC5C.h" +#include "unk_0200B358.h" +#include "unk_0200F174.h" +#include "unk_02017728.h" +#include "unk_02017E74.h" +#include "unk_02018340.h" +#include "unk_0201D670.h" +#include "unk_0201FE94.h" +#include "unk_02023790.h" +#include "unk_02025E08.h" +#include "overlay102/ov102_021D0D80.h" + +typedef struct { + int unk_00; + int unk_04; + UnkStruct_021C0794 * unk_08; + UnkStruct_02025E6C * unk_0C; + UnkStruct_02018340 * unk_10; + UnkStruct_0205AA50 unk_14; + UnkStruct_0205AA50 unk_24; + UnkStruct_0200B144 * unk_34; + UnkStruct_0200B358 * unk_38; + s16 unk_3C; + int unk_40; +} UnkStruct_ov102_021D0F8C; + +void sub_02000EC4(FSOverlayID param0, const UnkStruct_0208BE5C * param1); +int ov102_021D0D80(UnkStruct_020067E8 * param0, int * param1); +int ov102_021D0E2C(UnkStruct_020067E8 * param0, int * param1); +int ov102_021D0F50(UnkStruct_020067E8 * param0, int * param1); +static void ov102_021D0F80(void * param0); +static void ov102_021D0F8C(UnkStruct_ov102_021D0F8C * param0); +static void ov102_021D10F8(UnkStruct_ov102_021D0F8C * param0); +static void ov102_021D1174(UnkStruct_ov102_021D0F8C * param0); +static void ov102_021D1204(UnkStruct_ov102_021D0F8C * param0); +static void ov102_021D1224(UnkStruct_ov102_021D0F8C * param0); +static void ov102_021D1230(UnkStruct_ov102_021D0F8C * param0); +static void ov102_021D1274(UnkStruct_ov102_021D0F8C * param0); +static void ov102_021D1420(UnkStruct_ov102_021D0F8C * param0); + +int ov102_021D0D80 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov102_021D0F8C * v0; + int v1 = 84; + + sub_02017FC8(3, v1, 0x20000); + + v0 = sub_0200681C(param0, sizeof(UnkStruct_ov102_021D0F8C), v1); + memset(v0, 0, sizeof(UnkStruct_ov102_021D0F8C)); + v0->unk_00 = v1; + + { + UnkStruct_0203E53C * v2 = (UnkStruct_0203E53C *)sub_02006840(param0); + + v0->unk_08 = v2->unk_00; + v0->unk_04 = v2->unk_04; + v0->unk_0C = sub_02025E38(v0->unk_08); + } + + sub_0200F344(0, 0x0); + sub_0200F344(1, 0x0); + sub_02017798(NULL, NULL); + sub_020177BC(NULL, NULL); + sub_0201FF00(); + sub_0201FF68(); + + GX_SetVisiblePlane(0); + GXS_SetVisiblePlane(0); + + sub_02017DD4(4, 8); + + ov102_021D0F8C(v0); + ov102_021D1174(v0); + + sub_02017798(ov102_021D0F80, (void *)v0); + sub_0201FFD0(); + + return 1; +} + +int ov102_021D0E2C (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov102_021D0F8C * v0 = sub_0200682C(param0); + int v1 = 0; + + switch (*param1) { + case 0: + ov102_021D1224(v0); + ov102_021D1274(v0); + ov102_021D1420(v0); + + sub_02019120(0, 1);; + sub_02019120(1, 1);; + sub_02019120(3, 1);; + sub_02019120(4, 1);; + sub_02019120(5, 1);; + sub_02019120(7, 1);; + sub_0200F174(0, 1, 1, 0x0, 6, 1, v0->unk_00); + *param1 = 1; + break; + case 1: + if (sub_0200F2AC() == 1) { + v0->unk_40 = 0; + *param1 = 2; + } + break; + case 2: + if (v0->unk_40 < 60) { + v0->unk_40++; + } else { + *param1 = 3; + } + break; + case 3: + if ((v0->unk_3C > -8 * 24)) { + v0->unk_3C -= 4; + ov102_021D1230(v0); + } else { + v0->unk_3C = -8 * 24; + ov102_021D1230(v0); + *param1 = 4; + } + break; + case 4: + if ((((Unk_021BF67C.unk_48 & PAD_BUTTON_A) == PAD_BUTTON_A)) || (((Unk_021BF67C.unk_48 & PAD_BUTTON_B) == PAD_BUTTON_B)) || (Unk_021BF67C.unk_60)) { + sub_0200F174(0, 0, 0, 0x0, 6, 1, v0->unk_00); + *param1 = 5; + } + break; + case 5: + if (sub_0200F2AC() == 1) { + v1 = 1; + } + break; + } + + return v1; +} + +int ov102_021D0F50 (UnkStruct_020067E8 * param0, int * param1) +{ + UnkStruct_ov102_021D0F8C * v0 = sub_0200682C(param0); + int v1 = v0->unk_00; + + ov102_021D1204(v0); + ov102_021D10F8(v0); + + sub_02017798(NULL, NULL); + sub_02006830(param0); + sub_0201807C(v1); + + return 1; +} + +static void ov102_021D0F80 (void * param0) +{ + UnkStruct_ov102_021D0F8C * v0 = param0; + + sub_0201C2B8(v0->unk_10); +} + +#define BGCONTSET(frame, scr, cgx, scrsiz, bufsiz){ \ + v2.unk_12 = scr; \ + v2.unk_13 = cgx; \ + v2.unk_08 = bufsiz; \ + v2.unk_10 = scrsiz; \ + sub_020183C4(param0->unk_10, frame, &v2, 0); \ + sub_02019EBC(param0->unk_10, frame); \ +} + +static void ov102_021D0F8C (UnkStruct_ov102_021D0F8C * param0) +{ + { + UnkStruct_02099F80 v0 = { + GX_VRAM_BG_128_B, GX_VRAM_BGEXTPLTT_NONE, GX_VRAM_SUB_BG_128_C, GX_VRAM_SUB_BGEXTPLTT_NONE, GX_VRAM_OBJ_NONE, GX_VRAM_OBJEXTPLTT_NONE, GX_VRAM_SUB_OBJ_NONE, GX_VRAM_SUB_OBJEXTPLTT_NONE, GX_VRAM_TEX_NONE, GX_VRAM_TEXPLTT_NONE + }; + + sub_0201FE94(&v0); + } + + { + param0->unk_10 = sub_02018340(param0->unk_00); + } + + { + UnkStruct_ov84_0223BA5C v1 = { + GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BGMODE_0, GX_BG0_AS_2D + }; + + sub_02018368(&v1); + } + { + UnkStruct_ov97_0222DB78 v2 = { + 0, + 0, + 0, + 0, + 1, + GX_BG_COLORMODE_16, + 0, + 0, + GX_BG_EXTPLTT_01, + 0, + 0, + 0, + 0 + }; + + v2.unk_12 = GX_BG_SCRBASE_0x0000; + v2.unk_13 = GX_BG_CHARBASE_0x10000; + v2.unk_08 = 0x1000; v2.unk_10 = 2; + + sub_020183C4(param0->unk_10, 0, &v2, 0); + sub_02019EBC(param0->unk_10, 0); + + v2.unk_12 = GX_BG_SCRBASE_0x1000; + v2.unk_13 = GX_BG_CHARBASE_0x08000; + v2.unk_08 = 0x1000; + v2.unk_10 = 2; + + sub_020183C4(param0->unk_10, 1, &v2, 0); + sub_02019EBC(param0->unk_10, 1); + + v2.unk_12 = GX_BG_SCRBASE_0x2000; + v2.unk_13 = GX_BG_CHARBASE_0x04000; + v2.unk_08 = 0x800; + v2.unk_10 = 1; + + sub_020183C4(param0->unk_10, 3, &v2, 0); + sub_02019EBC(param0->unk_10, 3); + + v2.unk_12 = GX_BG_SCRBASE_0x0000; + v2.unk_13 = GX_BG_CHARBASE_0x10000; + v2.unk_08 = 0x1000; + v2.unk_10 = 2; + + sub_020183C4(param0->unk_10, 4, &v2, 0); + sub_02019EBC(param0->unk_10, 4); + + v2.unk_12 = GX_BG_SCRBASE_0x1000; + v2.unk_13 = GX_BG_CHARBASE_0x08000; + v2.unk_08 = 0x1000; + v2.unk_10 = 2; + + sub_020183C4(param0->unk_10, 5, &v2, 0); + sub_02019EBC(param0->unk_10, 5); + + v2.unk_12 = GX_BG_SCRBASE_0x2000; + v2.unk_13 = GX_BG_CHARBASE_0x04000; + v2.unk_08 = 0x800; + v2.unk_10 = 1; + + sub_020183C4(param0->unk_10, 7, &v2, 0); + sub_02019EBC(param0->unk_10, 7); + } + + sub_02019120(0, 0); + sub_02019120(1, 0); + sub_02019120(2, 0); + sub_02019120(3, 0); + sub_02019120(4, 0); + sub_02019120(5, 0); + sub_02019120(6, 0); + sub_02019120(7, 0); +} + +static void ov102_021D10F8 (UnkStruct_ov102_021D0F8C * param0) +{ + sub_02019120(0, 0); + sub_02019120(1, 0); + sub_02019120(2, 0); + sub_02019120(3, 0); + sub_02019120(4, 0); + sub_02019120(5, 0); + sub_02019120(6, 0); + sub_02019120(7, 0); + + sub_02019044(param0->unk_10, 0); + sub_02019044(param0->unk_10, 1); + sub_02019044(param0->unk_10, 3); + sub_02019044(param0->unk_10, 4); + sub_02019044(param0->unk_10, 5); + sub_02019044(param0->unk_10, 7); + sub_020181C4(param0->unk_10); +} + +static void ov102_021D1174 (UnkStruct_ov102_021D0F8C * param0) +{ + UnkStruct_ov61_0222C884 v0 = {0, 0, 0, 32, 24, 2, 1}; + + sub_0201D710(); + + param0->unk_34 = sub_0200B144(1, 26, 1, param0->unk_00); + param0->unk_38 = sub_0200B358(param0->unk_00); + + v0.unk_00 = 0; + + sub_0201A8D4(param0->unk_10, ¶m0->unk_14, &v0); + sub_0201AE78(¶m0->unk_14, 0, 0, 0, 32 * 8, 24 * 8); + + v0.unk_00 = 4; + + sub_0201A8D4(param0->unk_10, ¶m0->unk_24, &v0); + sub_0201AE78(¶m0->unk_24, 0, 0, 0, 32 * 8, 24 * 8); +} + +static void ov102_021D1204 (UnkStruct_ov102_021D0F8C * param0) +{ + sub_0201A8FC(¶m0->unk_24); + sub_0201A8FC(¶m0->unk_14); + sub_0200B3F0(param0->unk_38); + sub_0200B190(param0->unk_34); +} + +static void ov102_021D1224 (UnkStruct_ov102_021D0F8C * param0) +{ + param0->unk_3C = 0; + ov102_021D1230(param0); +} + +static void ov102_021D1230 (UnkStruct_ov102_021D0F8C * param0) +{ + sub_02019184(param0->unk_10, 1, 3, param0->unk_3C); + sub_02019184(param0->unk_10, 5, 3, param0->unk_3C + (8 * 24)); + sub_02019184(param0->unk_10, 0, 3, param0->unk_3C); + sub_02019184(param0->unk_10, 4, 3, param0->unk_3C + (8 * 24)); +} + +static void ov102_021D1274 (UnkStruct_ov102_021D0F8C * param0) +{ + int v0, v1, v2; + int v3, v4, v5; + + if (param0->unk_04 == 0) { + v0 = 10; + v1 = 2; + v2 = 6; + v3 = 8; + v4 = 0; + v5 = 4; + } else { + v0 = 11; + v1 = 3; + v2 = 7; + v3 = 9; + v4 = 1; + v5 = 5; + } + + sub_02006E60(132, v0, param0->unk_10, 3, 0, 0, 0, param0->unk_00); + sub_02006E3C(132, v1, param0->unk_10, 3, 0, 0, 0, param0->unk_00); + sub_02006E84(132, v2, 0, 0 * (2 * 16), (2 * 16), param0->unk_00); + sub_02006E60(132, v0, param0->unk_10, 7, 0, 0, 0, param0->unk_00); + sub_02006E3C(132, v1, param0->unk_10, 7, 0, 0, 0, param0->unk_00); + sub_02006E84(132, v2, 4, 0 * (2 * 16), (2 * 16), param0->unk_00); + + sub_02006E60(132, v3, param0->unk_10, 1, 0, 0, 0, param0->unk_00); + sub_02019E2C(param0->unk_10, 1, 0, 0, 32, 24, 1); + sub_02019448(param0->unk_10, 1); + sub_02006E3C(132, v4, param0->unk_10, 1, 0, 0, 0, param0->unk_00); + sub_02006E84(132, v5, 0, 1 * (2 * 16), (2 * 16), param0->unk_00); + sub_02006E60(132, v3, param0->unk_10, 5, 0, 0, 0, param0->unk_00); + sub_02019E2C(param0->unk_10, 5, 0, 0, 32, 24, 1); + sub_02019448(param0->unk_10, 5); + sub_02006E3C(132, v4, param0->unk_10, 5, 0, 0, 0, param0->unk_00); + sub_02006E84(132, v5, 4, 1 * (2 * 16), (2 * 16), param0->unk_00); + + sub_02019690(0, 32, 0, param0->unk_00); + sub_02019690(4, 32, 0, param0->unk_00); + sub_02002E7C(0, 2 * (2 * 16), param0->unk_00); + sub_02002E7C(4, 2 * (2 * 16), param0->unk_00); +} + +static void ov102_021D1420 (UnkStruct_ov102_021D0F8C * param0) +{ + UnkStruct_02023790 * v0 = sub_02023790(0x200, param0->unk_00); + + { + UnkStruct_02023790 * v1 = sub_02023790(0x200, param0->unk_00); + + sub_0200B1B8(param0->unk_34, 0, v1); + sub_0200B498(param0->unk_38, 0, param0->unk_0C); + sub_0200C388(param0->unk_38, v0, v1); + sub_0201D78C(¶m0->unk_14, 0, v0, 48, 32, 0, (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((0 & 0xff) << 0)), NULL); + sub_0201D78C(¶m0->unk_24, 0, v0, 48, 32, 0, (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((0 & 0xff) << 0)), NULL); + sub_020237BC(v1); + } + { + int v2; + + if (param0->unk_04 == 0) { + v2 = 1; + } else { + v2 = 2; + } + + sub_0200B1B8(param0->unk_34, v2, v0); + sub_0201D78C(¶m0->unk_14, 0, v0, 64, 64, 0, (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((0 & 0xff) << 0)), NULL); + sub_0201D78C(¶m0->unk_24, 0, v0, 64, 64, 0, (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((0 & 0xff) << 0)), NULL); + } + { + sub_0200B1B8(param0->unk_34, 3, v0); + sub_0201D78C(¶m0->unk_14, 0, v0, 138, 144, 0, (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((0 & 0xff) << 0)), NULL); + sub_0201D78C(¶m0->unk_24, 0, v0, 138, 144, 0, (u32)(((1 & 0xff) << 16) | ((2 & 0xff) << 8) | ((0 & 0xff) << 0)), NULL); + } + + sub_020237BC(v0); +}