diff options
-rw-r--r-- | arm9/arm9.lcf | 28 | ||||
-rw-r--r-- | arm9/global.inc | 2 | ||||
-rw-r--r-- | arm9/modules/59/asm/module_59.s | 5042 |
3 files changed, 5068 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 0c63878e..132e8afa 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -2380,12 +2380,23 @@ SECTIONS { SDK_OVERLAY.MODULE_58.BSS_SIZE = SDK_OVERLAY.MODULE_58.BSS_END - SDK_OVERLAY.MODULE_58.BSS_START; } >> MODULE_58 - .MODULE_59: { + .MODULE_59 : + { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY_MODULE_59_ID = 59; SDK_OVERLAY.MODULE_59.ID = 59; SDK_OVERLAY.MODULE_59.START = .; - FILE_2A9E00.o (.text) /* 0x2A5E00 */ + module_59.o (.text) + module_59.o (.rodata) + module_59.o (.init) + SDK_OVERLAY.MODULE_59.SINIT_START = .; + module_59.o (.ctor) + module_59.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_59.SINIT_END = .; + . = ALIGN(32); + module_59.o (.sdata) + module_59.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_59.END = .; SDK_OVERLAY.MODULE_59.SIZE = SDK_OVERLAY.MODULE_59.END - SDK_OVERLAY.MODULE_59.START; @@ -2395,7 +2406,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_59.BSS_START = .; - FILE_2A9E00.o (.bss) + module_59.o (.bss) + module_59.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_59.BSS_END = .; SDK_OVERLAY.MODULE_59.BSS_SIZE = SDK_OVERLAY.MODULE_59.BSS_END - SDK_OVERLAY.MODULE_59.BSS_START; @@ -3624,7 +3636,15 @@ SECTIONS { WRITEW 58; WRITEW 0; - OVERLAY_TABLE(MODULE_59, 59) + WRITEW 59; + WRITEW ADDR(.MODULE_59); + WRITEW SDK_OVERLAY.MODULE_59.SIZE; + WRITEW SDK_OVERLAY.MODULE_59.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_59.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_59.SINIT_END; + WRITEW 59; + WRITEW 0; + OVERLAY_TABLE(MODULE_60, 60) OVERLAY_TABLE(MODULE_61, 61) OVERLAY_TABLE(MODULE_62, 62) diff --git a/arm9/global.inc b/arm9/global.inc index 4548a270..7708d69f 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5650,6 +5650,8 @@ .extern FUN_02084098
.extern FUN_020048A0
.extern FUN_020048BC
+.extern FUN_02014630
+.extern FUN_02024EF4
.extern SDK_OVERLAY_MODULE_00_ID
.extern SDK_OVERLAY_MODULE_01_ID
.extern SDK_OVERLAY_MODULE_02_ID
diff --git a/arm9/modules/59/asm/module_59.s b/arm9/modules/59/asm/module_59.s new file mode 100644 index 00000000..0809afd7 --- /dev/null +++ b/arm9/modules/59/asm/module_59.s @@ -0,0 +1,5042 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD59_021D74E0 +MOD59_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x52 + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r5, #0 + mov r1, #0xb4 + mov r2, #0x52 + bl FUN_02006268 + mov r1, #0 + mov r2, #0xb4 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x52 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200628C + ldr r0, [r0, #8] + str r0, [r4, #4] + bl LoadPlayerDataAddress + mov r1, #0 + str r0, [r4, #8] + str r1, [r4, #0xc] + str r1, [r4, #0x10] + str r1, [r4, #0x14] + ldr r0, [r4, #8] + add r2, r1, #0 + str r0, [sp] + mov r0, #0x52 + mov r3, #7 + bl FUN_02077A84 + str r0, [r4, #0x70] + ldr r0, [r4, #8] + mov r1, #3 + str r0, [sp] + mov r0, #0x52 + mov r2, #0 + mov r3, #7 + bl FUN_02077A84 + str r0, [r4, #0x74] + add r0, r4, #0 + mov r1, #0 + add r0, #0x88 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8b + strb r1, [r0] + add r4, #0x90 + str r1, [r4] + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD59_021D74E0 + + thumb_func_start MOD59_021D7564 +MOD59_021D7564: ; 0x021D7564 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + mov r6, #0 + cmp r1, #5 + bls _021D757A + b _021D76AC +_021D757A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7586: ; jump table + .short _021D7592 - _021D7586 - 2 ; case 0 + .short _021D75FA - _021D7586 - 2 ; case 1 + .short _021D7642 - _021D7586 - 2 ; case 2 + .short _021D7668 - _021D7586 - 2 ; case 3 + .short _021D7690 - _021D7586 - 2 ; case 4 + .short _021D76AA - _021D7586 - 2 ; case 5 +_021D7592: + add r0, r6, #0 + add r1, r6, #0 + bl FUN_0200E3A0 + mov r0, #1 + add r1, r6, #0 + bl FUN_0200E3A0 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D76B4 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D76B8 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + bl MOD59_021D778C + add r0, r4, #0 + bl MOD59_021D79F8 + add r0, r4, #0 + bl MOD59_021D7A4C + ldr r0, _021D76BC ; =MOD59_021D7724 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_0201E788 + mov r0, #1 + str r0, [r5] + b _021D76AC +_021D75FA: + bl MOD59_021D8920 + cmp r0, #1 + bne _021D761E + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #2 + str r0, [r5] +_021D761E: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021D76AC + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #3 + str r0, [r5] + b _021D76AC +_021D7642: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76AC + add r0, r4, #0 + bl MOD59_021D7A34 + add r0, r4, #0 + bl MOD59_021D796C + add r0, r4, #0 + bl MOD59_021D7A5C + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r6, #1 + b _021D76AC +_021D7668: + bl FUN_0200E308 + cmp r0, #1 + bne _021D76AC + add r0, r4, #0 + bl MOD59_021D7A34 + add r0, r4, #0 + bl MOD59_021D796C + add r0, r4, #0 + bl MOD59_021D7A5C + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #4 + str r0, [r5] + b _021D76AC +_021D7690: + ldr r0, [r4, #0x14] + bl FUN_02006290 + cmp r0, #1 + bne _021D76AC + ldr r0, [r4, #0x14] + bl FUN_02006260 + add r0, r6, #0 + str r0, [r4, #0x14] + mov r0, #5 + str r0, [r5] + b _021D76AC +_021D76AA: + str r6, [r5] +_021D76AC: + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D76B4: .word 0xFFFFE0FF +_021D76B8: .word 0x04001000 +_021D76BC: .word MOD59_021D7724 + thumb_func_end MOD59_021D7564 + + thumb_func_start MOD59_021D76C0 +MOD59_021D76C0: ; 0x021D76C0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r5, [r4] + bl FUN_020238F4 + ldr r1, [r4, #0x70] + ldr r1, [r1, #0x18] + bl FUN_0202397C + ldr r0, [r4, #4] + bl FUN_020238F4 + ldr r1, [r4, #0x70] + ldr r1, [r1, #4] + bl FUN_020239C8 + ldr r0, [r4, #4] + bl FUN_02024EB4 + ldr r1, [r4, #0x74] + ldr r1, [r1, #0x18] + bl FUN_02024EF4 + ldr r0, [r4, #0x70] + bl FUN_02077AC4 + ldr r0, [r4, #0x74] + bl FUN_02077AC4 + add r0, r6, #0 + bl FUN_0200627C + add r0, r5, #0 + bl FUN_020168D0 + ldr r0, _021D771C ; =0x00000034 + ldr r1, _021D7720 ; =0x021D76D8 + bl FUN_02000E7C + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_021D771C: .word 0x00000034 +_021D7720: .word 0x021D76D8 + thumb_func_end MOD59_021D76C0 + + thumb_func_start MOD59_021D7724 +MOD59_021D7724: ; 0x021D7724 + ldr r3, _021D772C ; =0x0201AB61 + ldr r0, [r0, #0x18] + bx r3 + nop +_021D772C: .word 0x0201AB61 + thumb_func_end MOD59_021D7724 + + thumb_func_start MOD59_021D7730 +MOD59_021D7730: ; 0x021D7730 + push {r3, r4} + ldr r2, _021D7788 ; =0x021C48F8 + mov r0, #0 + ldrh r1, [r2, #0x20] + cmp r1, #0 + beq _021D7784 + ldrh r3, [r2, #0x1c] + mov r1, #1 + lsl r1, r1, #8 + cmp r3, r1 + bhs _021D7784 + ldrh r2, [r2, #0x1e] + cmp r2, #0xc0 + bhs _021D7784 + cmp r3, #0x80 + bhs _021D7758 + mov r1, #0x80 + sub r1, r1, r3 + lsl r1, r1, #0x10 + b _021D775C +_021D7758: + sub r3, #0x80 + lsl r1, r3, #0x10 +_021D775C: + lsr r3, r1, #0x10 + cmp r2, #0x64 + bhs _021D776A + mov r1, #0x64 + sub r1, r1, r2 + lsl r1, r1, #0x10 + b _021D776E +_021D776A: + sub r2, #0x64 + lsl r1, r2, #0x10 +_021D776E: + lsr r4, r1, #0x10 + add r2, r3, #0 + add r1, r4, #0 + mul r2, r3 + mul r1, r4 + add r2, r2, r1 + mov r1, #1 + lsl r1, r1, #8 + cmp r2, r1 + bgt _021D7784 + mov r0, #1 +_021D7784: + pop {r3, r4} + bx lr + .align 2, 0 +_021D7788: .word 0x021C48F8 + thumb_func_end MOD59_021D7730 + + thumb_func_start MOD59_021D778C +MOD59_021D778C: ; 0x021D778C + push {r3, r4, r5, lr} + sub sp, #0x78 + ldr r5, _021D7954 ; =0x021D9F18 + add r4, r0, #0 + add r3, sp, #0x50 + mov r2, #5 +_021D7798: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7798 + add r0, sp, #0x50 + bl FUN_0201E66C + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x40 + ldr r5, _021D7958 ; =0x021D9DCC + str r0, [r4, #0x18] + 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 FUN_02016BBC + ldr r5, _021D795C ; =0x021D9EA0 + add r3, sp, #0x24 + 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] + mov r1, #0 + str r0, [r3] + mov r0, #0xf + strb r0, [r2, #0x12] + mov r0, #6 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + mov r0, #0xe + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r0, #5 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_02018744 + mov r0, #0xd + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r0, #4 + strb r0, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02018744 + mov r0, #0xc + add r2, sp, #0x24 + strb r0, [r2, #0x12] + mov r1, #3 + strb r1, [r2, #0x13] + ldr r0, [r4, #0x18] + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_02018744 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _021D7960 ; =0x000003E2 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + mov r3, #4 + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + ldr r0, [r4] + ldr r2, _021D7964 ; =0x000003D9 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + mov r3, #3 + bl FUN_0200CB00 + ldr r2, [r4] + mov r0, #0 + mov r1, #0xa0 + bl FUN_02002ED0 + ldr r2, [r4] + mov r0, #0 + mov r1, #0xc0 + bl FUN_02002EEC + ldr r5, _021D7968 ; =0x021D9EBC + add r3, sp, #8 + 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] + mov r1, #0xf + str r0, [r3] + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #6 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_02018744 + mov r1, #0xe + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #5 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_02018744 + mov r1, #0xd + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #4 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #6 + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #6 + bl FUN_02018744 + mov r1, #0xc + add r0, sp, #8 + strb r1, [r0, #0x12] + mov r1, #3 + strb r1, [r0, #0x13] + ldr r0, [r4, #0x18] + mov r1, #7 + add r2, sp, #8 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #7 + bl FUN_02018744 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + add r0, r4, #0 + bl MOD59_021D8058 + mov r0, #0 + str r0, [r4, #0x78] + add sp, #0x78 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7954: .word 0x021D9F18 +_021D7958: .word 0x021D9DCC +_021D795C: .word 0x021D9EA0 +_021D7960: .word 0x000003E2 +_021D7964: .word 0x000003D9 +_021D7968: .word 0x021D9EBC + thumb_func_end MOD59_021D778C + + thumb_func_start MOD59_021D796C +MOD59_021D796C: ; 0x021D796C + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #6 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD59_021D796C + + thumb_func_start MOD59_021D79F8 +MOD59_021D79F8: ; 0x021D79F8 + push {r4, lr} + add r4, r0, #0 + ldr r2, _021D7A30 ; =0x00000155 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [r4, #0x4c] + bl FUN_0201BD5C + mov r0, #0 + ldr r3, [r4] + add r1, r0, #0 + mov r2, #6 + bl FUN_020142EC + str r0, [r4, #0x60] + ldr r0, [r4] + bl FUN_0200AA80 + str r0, [r4, #0x64] + mov r0, #0 + str r0, [r4, #0x50] + str r0, [r4, #0x54] + str r0, [r4, #0x2c] + pop {r4, pc} + nop +_021D7A30: .word 0x00000155 + thumb_func_end MOD59_021D79F8 + + thumb_func_start MOD59_021D7A34 +MOD59_021D7A34: ; 0x021D7A34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x64] + bl FUN_0200AB18 + ldr r0, [r4, #0x60] + bl FUN_020143D0 + ldr r0, [r4, #0x4c] + bl FUN_0200A8B8 + pop {r4, pc} + thumb_func_end MOD59_021D7A34 + + thumb_func_start MOD59_021D7A4C +MOD59_021D7A4C: ; 0x021D7A4C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02014590 + str r0, [r4, #0x68] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD59_021D7A4C + + thumb_func_start MOD59_021D7A5C +MOD59_021D7A5C: ; 0x021D7A5C + ldr r3, _021D7A64 ; =0x020145A9 + ldr r0, [r0, #0x68] + bx r3 + nop +_021D7A64: .word 0x020145A9 + thumb_func_end MOD59_021D7A5C + + thumb_func_start MOD59_021D7A68 +MOD59_021D7A68: ; 0x021D7A68 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r3, r0, #0 + add r6, r2, #0 + mov r5, #0 + cmp r4, #6 + bhi _021D7A92 + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7A84: ; jump table + .short _021D7A92 - _021D7A84 - 2 ; case 0 + .short _021D7A98 - _021D7A84 - 2 ; case 1 + .short _021D7A9E - _021D7A84 - 2 ; case 2 + .short _021D7A92 - _021D7A84 - 2 ; case 3 + .short _021D7AA4 - _021D7A84 - 2 ; case 4 + .short _021D7AAA - _021D7A84 - 2 ; case 5 + .short _021D7AB0 - _021D7A84 - 2 ; case 6 +_021D7A92: + mov r1, #1 + mov r0, #0 + b _021D7AB4 +_021D7A98: + mov r1, #2 + add r0, r5, #0 + b _021D7AB4 +_021D7A9E: + mov r1, #4 + add r0, r5, #0 + b _021D7AB4 +_021D7AA4: + mov r1, #1 + add r0, r1, #0 + b _021D7AB4 +_021D7AAA: + mov r1, #2 + mov r0, #1 + b _021D7AB4 +_021D7AB0: + mov r1, #4 + mov r0, #1 +_021D7AB4: + ldr r2, [r3, #0x78] + cmp r2, #3 + bls _021D7ABC + b _021D7BDE +_021D7ABC: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021D7AC8: ; jump table + .short _021D7AD0 - _021D7AC8 - 2 ; case 0 + .short _021D7B2C - _021D7AC8 - 2 ; case 1 + .short _021D7B7C - _021D7AC8 - 2 ; case 2 + .short _021D7BD0 - _021D7AC8 - 2 ; case 3 +_021D7AD0: + cmp r6, #0 + bne _021D7B1A + mov r2, #0 + str r2, [r3, #0x7c] + add r2, r3, #0 + mov r6, #0x10 + add r2, #0x80 + str r6, [r2] + mov r2, #1 + str r2, [r3, #0x78] + cmp r0, #0 + bne _021D7AFC + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7B0E +_021D7AFC: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ +_021D7B0E: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #1 + bl FUN_0201797C + b _021D7BDE +_021D7B1A: + mov r0, #0x10 + str r0, [r3, #0x7c] + add r0, r3, #0 + mov r1, #0 + add r0, #0x80 + str r1, [r0] + mov r0, #2 + str r0, [r3, #0x78] + b _021D7BDE +_021D7B2C: + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + cmp r2, #0 + beq _021D7B76 + ldr r2, [r3, #0x7c] + add r2, r2, #1 + str r2, [r3, #0x7c] + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + sub r4, r2, #1 + add r2, r3, #0 + add r2, #0x80 + str r4, [r2] + cmp r0, #0 + bne _021D7B62 + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7B62: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7B76: + mov r0, #3 + str r0, [r3, #0x78] + b _021D7BDE +_021D7B7C: + ldr r2, [r3, #0x7c] + cmp r2, #0 + beq _021D7BC0 + sub r2, r2, #1 + str r2, [r3, #0x7c] + add r2, r3, #0 + add r2, #0x80 + ldr r2, [r2] + add r4, r2, #1 + add r2, r3, #0 + add r2, #0x80 + str r4, [r2] + cmp r0, #0 + bne _021D7BAC + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE4 ; =0x04000050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7BAC: + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + mov r2, #0xe + str r0, [sp] + ldr r0, _021D7BE8 ; =0x04001050 + ldr r3, [r3, #0x7c] + bl G2x_SetBlendAlpha_ + b _021D7BDE +_021D7BC0: + mov r0, #3 + str r0, [r3, #0x78] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #0 + bl FUN_0201797C + b _021D7BDE +_021D7BD0: + ldr r0, _021D7BE4 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _021D7BE8 ; =0x04001050 + mov r5, #1 + strh r1, [r0] + str r1, [r3, #0x78] +_021D7BDE: + add r0, r5, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D7BE4: .word 0x04000050 +_021D7BE8: .word 0x04001050 + thumb_func_end MOD59_021D7A68 + + thumb_func_start MOD59_021D7BEC +MOD59_021D7BEC: ; 0x021D7BEC + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + cmp r2, r1 + bge _021D7C06 + add r1, r0, #0 + add r1, #0x90 + ldr r1, [r1] + add r0, #0x90 + add r1, r1, #1 + str r1, [r0] + mov r0, #0 + bx lr +_021D7C06: + mov r1, #0 + add r0, #0x90 + str r1, [r0] + mov r0, #1 + bx lr + thumb_func_end MOD59_021D7BEC + + thumb_func_start MOD59_021D7C10 +MOD59_021D7C10: ; 0x021D7C10 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + lsl r0, r2, #0x18 + add r4, r1, #0 + lsr r0, r0, #0x18 + str r0, [sp, #8] + lsl r1, r4, #0x18 + mov r2, #0 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020186B4 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + bl FUN_02017CD0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD59_021D7C10 + + thumb_func_start MOD59_021D7C44 +MOD59_021D7C44: ; 0x021D7C44 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r5, #0x50] + add r7, r1, #0 + mov r4, #0 + cmp r0, #0 + beq _021D7C5E + cmp r0, #1 + beq _021D7D1C + cmp r0, #2 + beq _021D7D36 + b _021D7D54 +_021D7C5E: + add r1, r5, #0 + ldr r0, [r5, #0x18] + ldr r2, _021D7D5C ; =0x021D9DB8 + add r1, #0x1c + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, r5, #0 + add r2, r4, #0 + add r0, #0x1c + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + add r0, r5, #0 + ldr r2, _021D7D60 ; =0x000003E2 + add r0, #0x1c + add r1, r4, #0 + mov r3, #4 + bl FUN_0200D0BC + mov r0, #1 + bl FUN_02002B60 + add r0, r4, #0 + bl FUN_02002B7C + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl FUN_020219F4 + add r6, r0, #0 + mov r0, #1 + ldr r1, [r5] + lsl r0, r0, #0xa + bl FUN_020219F4 + str r0, [r5, #0x5c] + ldr r0, [r5, #0x4c] + add r1, r7, #0 + add r2, r6, #0 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [r5, #0x70] + add r3, r5, #0 + add r3, #0x84 + ldr r0, [r5, #0x64] + ldr r2, [r2, #0x18] + ldr r3, [r3] + add r1, r4, #0 + bl FUN_0200ABB4 + mov r1, #1 + str r1, [sp] + mov r0, #2 + str r0, [sp, #4] + ldr r2, [r5, #0x74] + ldr r0, [r5, #0x64] + ldr r2, [r2, #0x18] + add r3, r4, #0 + bl FUN_0200ABB4 + ldr r0, [r5, #0x64] + ldr r1, [r5, #0x5c] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [r5, #8] + bl FUN_02024FF4 + add r3, r4, #0 + str r3, [sp] + str r0, [sp, #4] + str r3, [sp, #8] + add r0, r5, #0 + ldr r2, [r5, #0x5c] + add r0, #0x1c + mov r1, #1 + bl FUN_0201BD84 + str r0, [r5, #0x58] + mov r0, #1 + str r0, [r5, #0x50] + b _021D7D54 +_021D7D1C: + ldr r0, [r5, #0x58] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D7D54 + ldr r0, [r5, #0x5c] + bl FUN_02021A20 + mov r0, #2 + str r0, [r5, #0x50] + b _021D7D54 +_021D7D36: + cmp r2, #0 + bne _021D7D46 + ldr r0, _021D7D64 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + bne _021D7D54 +_021D7D46: + add r0, r5, #0 + add r0, #0x1c + bl FUN_02019178 + mov r0, #0 + str r0, [r5, #0x50] + mov r4, #1 +_021D7D54: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021D7D5C: .word 0x021D9DB8 +_021D7D60: .word 0x000003E2 +_021D7D64: .word 0x021C48B8 + thumb_func_end MOD59_021D7C44 + + thumb_func_start MOD59_021D7D68 +MOD59_021D7D68: ; 0x021D7D68 + push {r3, lr} + cmp r2, #0 + bne _021D7D74 + ldr r0, _021D7D78 ; =0x000005DC + bl FUN_020054C8 +_021D7D74: + pop {r3, pc} + nop +_021D7D78: .word 0x000005DC + thumb_func_end MOD59_021D7D68 + + thumb_func_start MOD59_021D7D7C +MOD59_021D7D7C: ; 0x021D7D7C + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x2c] + add r4, r2, #0 + cmp r0, #0 + beq _021D7D94 + cmp r0, #1 + beq _021D7E4C + b _021D7E96 +_021D7D94: + cmp r1, #0 + beq _021D7DA0 + cmp r1, #1 + beq _021D7DA8 + cmp r1, #2 + beq _021D7DB0 +_021D7DA0: + ldr r2, _021D7E9C ; =0x021D9DA8 + ldr r4, _021D7EA0 ; =0x021D9E0C + mov r6, #2 + b _021D7DC4 +_021D7DA8: + ldr r2, _021D7EA4 ; =0x021D9DB0 + ldr r4, _021D7EA8 ; =0x021D9E58 + mov r6, #3 + b _021D7DC4 +_021D7DB0: + ldr r0, _021D7EAC ; =0x020ECAC0 + ldr r2, _021D7EB0 ; =0x021D9DA0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D7DC0 + ldr r4, _021D7EB4 ; =0x021D9F40 + mov r6, #5 + b _021D7DC4 +_021D7DC0: + ldr r4, _021D7EB8 ; =0x021D9F68 + mov r6, #5 +_021D7DC4: + add r1, r5, #0 + ldr r0, [r5, #0x18] + add r1, #0x30 + bl FUN_02019150 + ldr r1, [r5] + add r0, r6, #0 + bl FUN_02012838 + mov r7, #0 + str r0, [r5, #0x44] + cmp r6, #0 + ble _021D7DF2 +_021D7DDE: + ldr r0, [r5, #0x44] + ldr r1, [r5, #0x4c] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + add r7, r7, #1 + add r4, #8 + cmp r7, r6 + blt _021D7DDE +_021D7DF2: + ldr r4, _021D7EBC ; =0x021D9EF8 + add r3, sp, #4 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x44] + str r0, [sp, #4] + lsl r0, r6, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #4 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, _021D7EC0 ; =MOD59_021D7D68 + mov r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0x30 + str r0, [sp, #0x10] + ldr r3, [r5] + add r0, r2, #0 + lsl r3, r3, #0x18 + add r2, r1, #0 + lsr r3, r3, #0x18 + bl FUN_020010A8 + str r0, [r5, #0x40] + ldr r0, [sp, #0x10] + ldr r2, _021D7EC4 ; =0x000003D9 + mov r1, #1 + mov r3, #3 + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0x30 + bl FUN_020191D0 + mov r0, #1 + str r0, [r5, #0x2c] + b _021D7E96 +_021D7E4C: + ldr r0, [r5, #0x40] + bl FUN_02001204 + mov r1, #0 + mvn r1, r1 + str r0, [r5, #0x48] + cmp r0, r1 + beq _021D7E96 + sub r1, r1, #1 + cmp r0, r1 + bne _021D7E66 + cmp r4, #1 + beq _021D7E96 +_021D7E66: + add r0, r5, #0 + add r0, #0x30 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r5, #0 + add r0, #0x30 + bl FUN_02019178 + mov r1, #0 + ldr r0, [r5, #0x40] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r5, #0x44] + bl FUN_02012870 + ldr r0, _021D7EC8 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0 + str r0, [r5, #0x2c] + mov r0, #1 + str r0, [sp] +_021D7E96: + ldr r0, [sp] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7E9C: .word 0x021D9DA8 +_021D7EA0: .word 0x021D9E0C +_021D7EA4: .word 0x021D9DB0 +_021D7EA8: .word 0x021D9E58 +_021D7EAC: .word 0x020ECAC0 +_021D7EB0: .word 0x021D9DA0 +_021D7EB4: .word 0x021D9F40 +_021D7EB8: .word 0x021D9F68 +_021D7EBC: .word 0x021D9EF8 +_021D7EC0: .word MOD59_021D7D68 +_021D7EC4: .word 0x000003D9 +_021D7EC8: .word 0x000005DC + thumb_func_end MOD59_021D7D7C + + thumb_func_start MOD59_021D7ECC +MOD59_021D7ECC: ; 0x021D7ECC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + str r1, [sp, #0x10] + ldr r1, [r4, #0x54] + add r6, r2, #0 + add r7, r3, #0 + mov r5, #0 + cmp r1, #5 + bls _021D7EE2 + b _021D803C +_021D7EE2: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7EEE: ; jump table + .short _021D7EFA - _021D7EEE - 2 ; case 0 + .short _021D7FD8 - _021D7EEE - 2 ; case 1 + .short _021D7FE4 - _021D7EEE - 2 ; case 2 + .short _021D7FF6 - _021D7EEE - 2 ; case 3 + .short _021D8016 - _021D7EEE - 2 ; case 4 + .short _021D8028 - _021D7EEE - 2 ; case 5 +_021D7EFA: + add r0, r5, #0 + add r1, r5, #0 + bl FUN_0201797C + mov r0, #1 + ldr r1, [r4] + lsl r0, r0, #0xa + bl FUN_020219F4 + str r0, [r4, #0x5c] + ldr r0, [r4, #0x4c] + ldr r1, [sp, #0x10] + ldr r2, [r4, #0x5c] + bl FUN_0200A8E0 + cmp r6, #1 + add r0, sp, #0x14 + bne _021D7F7C + ldr r1, _021D8044 ; =0x021D9D90 + ldrh r2, [r1, #8] + strh r2, [r0] + ldrh r2, [r1, #0xa] + strh r2, [r0, #2] + ldrh r2, [r1, #0xc] + ldrh r1, [r1, #0xe] + strh r2, [r0, #4] + strh r1, [r0, #6] + ldr r0, [r4, #0x5c] + bl FUN_02002F90 + mov r1, #0xc + sub r2, r1, r0 + add r1, sp, #0x14 + strb r2, [r1, #2] + lsl r0, r0, #1 + strb r0, [r1, #4] + add r1, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x1c + add r2, sp, #0x14 + bl FUN_02019150 + add r1, r5, #0 + mov r0, #0xc0 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r1, r5, #0 + str r1, [sp] + ldr r0, _021D8048 ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x1c + add r3, r1, #0 + bl FUN_0201BDE0 + b _021D7FCC +_021D7F7C: + ldr r1, _021D8044 ; =0x021D9D90 + add r2, sp, #0x14 + ldrh r3, [r1] + strh r3, [r0] + ldrh r3, [r1, #2] + strh r3, [r0, #2] + ldrh r3, [r1, #4] + ldrh r1, [r1, #6] + strh r3, [r0, #4] + strh r1, [r0, #6] + ldr r1, [sp, #0x30] + strb r7, [r0, #2] + strb r1, [r0, #4] + add r1, r4, #0 + ldr r0, [r4, #0x18] + add r1, #0x1c + bl FUN_02019150 + add r1, r5, #0 + mov r0, #0xc0 + str r0, [sp] + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r1, r5, #0 + str r1, [sp] + ldr r0, _021D804C ; =0x000F0200 + str r1, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + add r0, r4, #0 + ldr r2, [r4, #0x5c] + add r0, #0x1c + add r3, r1, #0 + bl FUN_0201BDE0 +_021D7FCC: + ldr r0, [r4, #0x5c] + bl FUN_02021A20 + mov r0, #1 + str r0, [r4, #0x54] + b _021D803C +_021D7FD8: + add r0, #0x1c + bl FUN_020191D0 + mov r0, #2 + str r0, [r4, #0x54] + b _021D803C +_021D7FE4: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D803C + mov r0, #3 + str r0, [r4, #0x54] + b _021D803C +_021D7FF6: + ldr r0, _021D8050 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D800A + mov r0, #2 + and r0, r1 + cmp r0, #2 + bne _021D803C +_021D800A: + ldr r0, _021D8054 ; =0x000005DC + bl FUN_020054C8 + mov r0, #4 + str r0, [r4, #0x54] + b _021D803C +_021D8016: + add r1, r5, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D803C + mov r0, #5 + str r0, [r4, #0x54] + b _021D803C +_021D8028: + add r0, #0x1c + bl FUN_02019178 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + add r0, r5, #0 + str r0, [r4, #0x54] + mov r5, #1 +_021D803C: + add r0, r5, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021D8044: .word 0x021D9D90 +_021D8048: .word 0x00010200 +_021D804C: .word 0x000F0200 +_021D8050: .word 0x021C48B8 +_021D8054: .word 0x000005DC + thumb_func_end MOD59_021D7ECC + + thumb_func_start MOD59_021D8058 +MOD59_021D8058: ; 0x021D8058 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r5, r0, #0 + str r1, [sp, #8] + ldr r0, [r5] + mov r3, #3 + str r0, [sp, #0xc] + ldr r2, [r5, #0x18] + mov r0, #0x7d + bl FUN_0200687C + mov r0, #0 + ldr r3, [r5] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5] + mov r1, #0x17 + str r0, [sp, #0xc] + ldr r2, [r5, #0x18] + mov r0, #0x7d + mov r3, #7 + bl FUN_0200687C + ldr r0, _021D80F8 ; =0x020ECAC0 + ldrb r0, [r0] + cmp r0, #0xa + bne _021D80A6 + mov r1, #1 + mov r4, #0x18 + b _021D80AA +_021D80A6: + mov r1, #2 + mov r4, #0x19 +_021D80AA: + mov r0, #0x60 + str r0, [sp] + ldr r0, [r5] + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x7d + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0xa0 + str r0, [sp] + ldr r0, [r5] + add r1, r4, #0 + str r0, [sp, #4] + mov r0, #0x7d + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + add r0, r5, #0 + bl MOD59_021D80FC + add r0, r5, #0 + bl MOD59_021D8140 + add r0, r5, #0 + bl MOD59_021D8234 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_021D80F8: .word 0x020ECAC0 + thumb_func_end MOD59_021D8058 + + thumb_func_start MOD59_021D80FC +MOD59_021D80FC: ; 0x021D80FC + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D813C ; =0x021D9E1C + add r3, r0, #0 + ldmia r5!, {r0, r1} + add r4, sp, #0x10 + add r2, r4, #0 + stmia r4!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + add r0, r3, #0 + add r0, #0x88 + ldrb r1, [r0] + cmp r1, #5 + bhs _021D8138 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r3] + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r1, [r2, r1] + ldr r2, [r3, #0x18] + mov r0, #0x7d + mov r3, #3 + bl FUN_020068C8 +_021D8138: + add sp, #0x24 + pop {r4, r5, pc} + .align 2, 0 +_021D813C: .word 0x021D9E1C + thumb_func_end MOD59_021D80FC + + thumb_func_start MOD59_021D8140 +MOD59_021D8140: ; 0x021D8140 + push {r3, r4, r5, lr} + sub sp, #0x68 + ldr r5, _021D8230 ; =0x021D9F90 + add r4, r0, #0 + add r3, sp, #0x10 + mov r2, #0xb +_021D814C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D814C + add r0, r4, #0 + add r0, #0x89 + ldrb r1, [r0] + cmp r1, #0 + beq _021D81BE + cmp r1, #0xc + bhs _021D81BE + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r2, r1, #3 + str r0, [sp, #0xc] + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x89 + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #0xe0 + lsl r2, r1, #3 + add r1, sp, #0x14 + ldr r1, [r1, r2] + mov r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #1 + mov r2, #7 + bl MOD59_021D7C10 +_021D81BE: + add r0, r4, #0 + add r0, #0x8a + ldrb r1, [r0] + cmp r1, #0 + beq _021D822A + cmp r1, #0xc + bhs _021D822A + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r2, r1, #3 + str r0, [sp, #0xc] + add r1, sp, #0x10 + ldr r1, [r1, r2] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #2 + bl FUN_0200687C + mov r0, #0x20 + str r0, [sp] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x8a + ldrb r1, [r1] + mov r0, #0x7d + add r3, r0, #0 + lsl r2, r1, #3 + add r1, sp, #0x14 + ldr r1, [r1, r2] + mov r2, #0 + add r3, #0x83 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x16 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #2 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #2 + mov r2, #8 + bl MOD59_021D7C10 +_021D822A: + add sp, #0x68 + pop {r3, r4, r5, pc} + nop +_021D8230: .word 0x021D9F90 + thumb_func_end MOD59_021D8140 + + thumb_func_start MOD59_021D8234 +MOD59_021D8234: ; 0x021D8234 + push {r4, r5, lr} + sub sp, #0x24 + ldr r5, _021D829C ; =0x021D9E30 + add r4, r0, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x10 + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + add r0, #0x8b + ldrb r1, [r0] + cmp r1, #5 + bhs _021D8296 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + lsl r1, r1, #2 + str r0, [sp, #0xc] + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #7 + bl FUN_020068C8 + add r0, r4, #0 + add r0, #0x8b + ldrb r0, [r0] + cmp r0, #1 + bne _021D8288 + add r0, r4, #0 + mov r1, #7 + mov r2, #3 + bl MOD59_021D7C10 + add sp, #0x24 + pop {r4, r5, pc} +_021D8288: + cmp r0, #2 + bne _021D8296 + add r0, r4, #0 + mov r1, #7 + mov r2, #2 + bl MOD59_021D7C10 +_021D8296: + add sp, #0x24 + pop {r4, r5, pc} + nop +_021D829C: .word 0x021D9E30 + thumb_func_end MOD59_021D8234 + + thumb_func_start MOD59_021D82A0 +MOD59_021D82A0: ; 0x021D82A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + mov r2, #0 + str r2, [sp] + str r2, [sp, #4] + add r5, r0, #0 + ldr r1, _021D83EC ; =0x000001BE + str r2, [sp, #8] + add r0, sp, #0x10 + mov r3, #2 + bl FUN_02068C00 + ldr r0, [r5] + mov r1, #0xc8 + bl FUN_02016998 + add r7, r0, #0 + ldr r2, _021D83F0 ; =0x021D9FE8 + mov r1, #0 + add r3, r7, #0 +_021D82C8: + ldrb r0, [r2] + add r1, r1, #1 + add r2, r2, #1 + add r0, r0, #1 + strh r0, [r3] + add r3, r3, #2 + cmp r1, #0x64 + blt _021D82C8 + add r1, sp, #0x10 + ldrh r0, [r1] + ldrh r1, [r1, #2] + ldr r2, [r5] + bl FUN_0201244C + add r1, sp, #0x10 + add r4, r0, #0 + ldrh r0, [r1] + ldrh r1, [r1, #4] + ldr r2, [r5] + bl FUN_02012470 + mov r2, #0 + add r6, r0, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #9 + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_02018540 + mov r3, #0xb + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #2 + add r2, r7, #0 + bl FUN_02018148 + add r0, r5, #0 + mov r1, #2 + mov r2, #9 + bl MOD59_021D7C10 + ldr r3, [r5] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #1 + str r0, [sp] + mov r3, #0x32 + ldr r0, [r5, #0x18] + mov r1, #2 + add r2, r4, #0 + lsl r3, r3, #6 + bl FUN_02017E14 + mov r3, #0x20 + add r2, r3, #0 + mov r0, #2 + add r1, r6, #0 + add r3, #0xe0 + bl FUN_02017FB4 + mov r3, #0x12 + ldr r1, _021D83F4 ; =0x021D9ED8 + mov r0, #2 + mov r2, #0x20 + lsl r3, r3, #4 + bl FUN_02017FB4 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + ldr r0, [r5, #0x18] + mov r1, #5 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #7 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #5 + add r2, r7, #0 + mov r3, #0xb + bl FUN_02018148 + add r0, r5, #0 + mov r1, #5 + mov r2, #0xa + bl MOD59_021D7C10 + ldr r3, [r5] + mov r0, #5 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #1 + str r0, [sp] + mov r3, #0x32 + ldr r0, [r5, #0x18] + mov r1, #5 + add r2, r4, #0 + lsl r3, r3, #6 + bl FUN_02017E14 + mov r0, #5 + add r1, r6, #0 + mov r2, #0x20 + lsl r3, r0, #6 + bl FUN_02017FB4 + mov r0, #5 + ldr r1, _021D83F4 ; =0x021D9ED8 + mov r2, #0x20 + lsl r3, r0, #6 + bl FUN_02017FB4 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_02016A18 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D83EC: .word 0x000001BE +_021D83F0: .word 0x021D9FE8 +_021D83F4: .word 0x021D9ED8 + thumb_func_end MOD59_021D82A0 + + thumb_func_start MOD59_021D83F8 +MOD59_021D83F8: ; 0x021D83F8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x26 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #6 + bl FUN_020068C8 + add r0, r4, #0 + mov r1, #6 + mov r2, #9 + bl MOD59_021D7C10 + mov r0, #0x60 + str r0, [sp] + ldr r0, [r4] + mov r1, #0x27 + str r0, [sp, #4] + mov r0, #0x7d + mov r2, #4 + mov r3, #0xe0 + bl FUN_02006930 + ldr r3, [r4] + mov r0, #6 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + mov r0, #0x20 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0x1e + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + mov r3, #6 + bl FUN_0200687C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD59_021D83F8 + + thumb_func_start MOD59_021D8460 +MOD59_021D8460: ; 0x021D8460 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 + cmp r2, #0 + bne _021D849C + ldr r0, [r5, #0x18] + bl FUN_02017B48 + cmp r0, #0 + beq _021D8498 + cmp r0, #0 + ldr r0, [r5, #0x18] + ble _021D848A + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D848A: + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + mov r2, #1 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D8498: + mov r6, #1 + b _021D84E2 +_021D849C: + cmp r2, #1 + bne _021D84C2 + ldr r0, [r5, #0x18] + bl FUN_02017B48 + add r1, r6, #0 + sub r1, #0x30 + cmp r0, r1 + beq _021D84BE + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + mov r2, #2 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D84BE: + mov r6, #1 + b _021D84E2 +_021D84C2: + cmp r2, #2 + bne _021D84E2 + ldr r0, [r5, #0x18] + bl FUN_02017B48 + cmp r0, #0 + beq _021D84E0 + lsl r1, r4, #0x18 + ldr r0, [r5, #0x18] + lsr r1, r1, #0x18 + mov r2, #1 + mov r3, #4 + bl FUN_020179E0 + b _021D84E2 +_021D84E0: + mov r6, #1 +_021D84E2: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD59_021D8460 + + thumb_func_start MOD59_021D84E8 +MOD59_021D84E8: ; 0x021D84E8 + add r1, r0, #0 + mov r2, #0 + add r1, #0x8c + strb r2, [r1] + add r1, r0, #0 + add r1, #0x8d + strb r2, [r1] + add r1, r0, #0 + add r1, #0x8e + strb r2, [r1] + add r0, #0x8f + strb r2, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD59_021D84E8 + + thumb_func_start MOD59_021D8504 +MOD59_021D8504: ; 0x021D8504 + push {r3, r4, r5, lr} + sub sp, #0x30 + add r4, r0, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D858E + add r0, r4, #0 + add r0, #0x8d + ldrb r0, [r0] + cmp r0, #0 + beq _021D8526 + add r0, r4, #0 + add r0, #0x8d + ldrb r0, [r0] + sub r1, r0, #1 + b _021D8546 +_021D8526: + add r0, r4, #0 + add r0, #0x8c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8c + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8c + ldrb r1, [r0] + mov r0, #3 + and r1, r0 + add r0, r4, #0 + add r0, #0x8c + strb r1, [r0] + mov r1, #4 +_021D8546: + add r0, r4, #0 + add r0, #0x8d + strb r1, [r0] + mov r0, #0xa + str r0, [sp] + ldr r0, _021D860C ; =0x04000050 + mov r1, #4 + mov r2, #8 + mov r3, #6 + bl G2x_SetBlendAlpha_ + ldr r5, _021D8610 ; =0x021D9DEC + add r3, sp, #0x20 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #0xc] + add r1, #0x8c + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #1 + lsl r1, r1, #2 + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + bl FUN_0200687C + add sp, #0x30 + pop {r3, r4, r5, pc} +_021D858E: + add r0, r4, #0 + add r0, #0x8f + ldrb r0, [r0] + cmp r0, #0 + beq _021D85A2 + add r0, r4, #0 + add r0, #0x8f + ldrb r0, [r0] + sub r1, r0, #1 + b _021D85C2 +_021D85A2: + add r0, r4, #0 + add r0, #0x8e + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8e + strb r1, [r0] + add r0, r4, #0 + add r0, #0x8e + ldrb r1, [r0] + mov r0, #3 + and r1, r0 + add r0, r4, #0 + add r0, #0x8e + strb r1, [r0] + mov r1, #4 +_021D85C2: + add r0, r4, #0 + add r0, #0x8f + strb r1, [r0] + mov r0, #0xa + str r0, [sp] + ldr r0, _021D860C ; =0x04000050 + mov r1, #2 + mov r2, #8 + mov r3, #6 + bl G2x_SetBlendAlpha_ + ldr r5, _021D8614 ; =0x021D9DFC + add r3, sp, #0x10 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r1, r4, #0 + str r0, [sp, #0xc] + add r1, #0x8e + ldrb r1, [r1] + mov r0, #0x7d + mov r3, #2 + lsl r1, r1, #2 + ldr r1, [r2, r1] + ldr r2, [r4, #0x18] + bl FUN_0200687C + add sp, #0x30 + pop {r3, r4, r5, pc} + nop +_021D860C: .word 0x04000050 +_021D8610: .word 0x021D9DEC +_021D8614: .word 0x021D9DFC + thumb_func_end MOD59_021D8504 + + thumb_func_start MOD59_021D8618 +MOD59_021D8618: ; 0x021D8618 + ldr r0, _021D8620 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_021D8620: .word 0x04000050 + thumb_func_end MOD59_021D8618 + + thumb_func_start MOD59_021D8624 +MOD59_021D8624: ; 0x021D8624 + add r1, r0, #0 + mov r2, #0 + add r1, #0x94 + str r2, [r1] + add r0, #0x98 + str r2, [r0] + bx lr + .align 2, 0 + thumb_func_end MOD59_021D8624 + + thumb_func_start MOD59_021D8634 +MOD59_021D8634: ; 0x021D8634 + push {r4, r5, r6, lr} + sub sp, #0x40 + add r3, r0, #0 + add r0, #0x98 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + beq _021D864E + add r0, r3, #0 + add r0, #0x98 + ldr r0, [r0] + sub r1, r0, #1 + b _021D865E +_021D864E: + add r0, r3, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r3, #0 + add r0, #0x94 + str r1, [r0] + mov r1, #8 +_021D865E: + add r0, r3, #0 + add r0, #0x98 + str r1, [r0] + add r0, r3, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D8674 + ldr r6, _021D86B4 ; =0x021D9E88 + add r5, sp, #0x28 + b _021D8678 +_021D8674: + ldr r6, _021D86B8 ; =0x021D9E70 + add r5, sp, #0x10 +_021D8678: + add r2, r5, #0 + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + add r0, r3, #0 + add r0, #0x94 + ldr r0, [r0] + lsl r0, r0, #2 + ldr r1, [r2, r0] + cmp r1, #0xff + bne _021D8698 + mov r4, #1 + b _021D86AE +_021D8698: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r3] + str r0, [sp, #0xc] + ldr r2, [r3, #0x18] + mov r0, #0x7d + mov r3, #1 + bl FUN_0200687C +_021D86AE: + add r0, r4, #0 + add sp, #0x40 + pop {r4, r5, r6, pc} + .align 2, 0 +_021D86B4: .word 0x021D9E88 +_021D86B8: .word 0x021D9E70 + thumb_func_end MOD59_021D8634 + + thumb_func_start MOD59_021D86BC +MOD59_021D86BC: ; 0x021D86BC + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r0, #0 + ldr r0, [r6] + mov r7, #0 + cmp r0, #5 + bls _021D86CC + b _021D890A +_021D86CC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D86D8: ; jump table + .short _021D86E4 - _021D86D8 - 2 ; case 0 + .short _021D8728 - _021D86D8 - 2 ; case 1 + .short _021D87A6 - _021D86D8 - 2 ; case 2 + .short _021D87E0 - _021D86D8 - 2 ; case 3 + .short _021D887C - _021D86D8 - 2 ; case 4 + .short _021D88F8 - _021D86D8 - 2 ; case 5 +_021D86E4: + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r7, #0 + add r3, r7, #0 + bl FUN_020179E0 + mov r2, #3 + add r3, r2, #0 + ldr r0, [r4, #0x18] + mov r1, #2 + sub r3, #0x6b + bl FUN_020179E0 + mov r0, #2 + add r1, r7, #0 + bl FUN_020178BC + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #8 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #1 + str r0, [r6] + b _021D890A +_021D8728: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #5 + bl FUN_02017B54 + add r1, r4, #0 + add r1, #0xb0 + ldr r3, [r1] + add r1, r4, #0 + add r1, #0xac + ldr r2, [r1] + lsl r1, r2, #3 + add r1, r2, r1 + add r2, r3, #0 + mul r2, r1 + lsl r1, r3, #3 + add r1, r3, r1 + mul r1, r3 + lsr r3, r1, #0x1f + add r3, r1, r3 + asr r1, r3, #1 + sub r5, r2, r1 + cmp r0, #0x58 + bge _021D8792 + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + mov r1, #2 + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #5 + mov r2, #1 + mov r3, #2 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #5 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + b _021D890A +_021D8792: + mov r0, #5 + add r1, r7, #0 + bl FUN_0201797C + mov r0, #0x1e + add r4, #0xb0 + str r0, [r4] + mov r0, #2 + str r0, [r6] + b _021D890A +_021D87A6: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _021D87BE + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + add r4, #0xb0 + sub r0, r0, #1 + str r0, [r4] + b _021D890A +_021D87BE: + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #9 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #3 + str r0, [r6] + b _021D890A +_021D87E0: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B54 + add r0, r4, #0 + add r0, #0xb0 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xac + ldr r2, [r0] + lsl r0, r2, #3 + add r0, r2, r0 + lsl r2, r1, #3 + add r2, r1, r2 + mul r0, r1 + mul r2, r1 + lsr r1, r2, #0x1f + add r1, r2, r1 + sub r0, #0x68 + asr r1, r1, #1 + sub r5, r0, r1 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + ble _021D8846 + cmp r5, #0 + bgt _021D8846 + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r7, #0 + bl FUN_020179E0 + add r0, r4, #0 + add r2, r7, #0 + add r0, #0xa8 + str r2, [r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0xac + str r1, [r0] + add r4, #0xb0 + str r2, [r4] + mov r0, #4 + str r0, [r6] + b _021D890A +_021D8846: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xa8 + str r5, [r0] + ldr r0, [r4, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 + asr r5, r5, #1 + cmp r5, #0x90 + ble _021D886E + mov r5, #0x90 +_021D886E: + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + b _021D890A +_021D887C: + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B48 + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_02017B54 + add r0, r4, #0 + add r0, #0xb0 + ldr r1, [r0] + add r0, r4, #0 + add r0, #0xac + ldr r2, [r0] + lsl r0, r2, #3 + add r0, r2, r0 + lsl r2, r1, #3 + add r2, r1, r2 + mul r2, r1 + mul r0, r1 + lsr r1, r2, #0x1f + add r1, r2, r1 + asr r1, r1, #1 + sub r5, r0, r1 + add r0, r4, #0 + add r0, #0xa8 + ldr r0, [r0] + cmp r0, #0 + ble _021D88CC + cmp r5, #0 + bgt _021D88CC + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r7, #0 + bl FUN_020179E0 + mov r0, #5 + str r0, [r6] + b _021D890A +_021D88CC: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r2, #1 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xb0 + str r1, [r0] + mov r1, #2 + ldr r0, [r4, #0x18] + add r3, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #2 + mov r2, #3 + add r3, r5, #0 + bl FUN_020179E0 + add r4, #0xa8 + str r5, [r4] + b _021D890A +_021D88F8: + ldr r0, _021D8910 ; =0x000001BE + bl FUN_02005578 + add r0, r4, #0 + mov r1, #2 + mov r2, #8 + bl MOD59_021D7C10 + mov r7, #1 +_021D890A: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8910: .word 0x000001BE + thumb_func_end MOD59_021D86BC + + thumb_func_start MOD59_021D8914 +MOD59_021D8914: ; 0x021D8914 + ldr r3, _021D891C ; =0x020178BD + mov r0, #2 + mov r1, #1 + bx r3 + .align 2, 0 +_021D891C: .word 0x020178BD + thumb_func_end MOD59_021D8914 + + thumb_func_start MOD59_021D8920 +MOD59_021D8920: ; 0x021D8920 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r4, r0, #0 + ldr r1, [r4, #0xc] + mov r5, #0 + cmp r1, #0x6d + bls _021D8932 + bl _021D985C +_021D8932: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D893E: ; jump table + .short _021D8A1A - _021D893E - 2 ; case 0 + .short _021D8A5A - _021D893E - 2 ; case 1 + .short _021D8A76 - _021D893E - 2 ; case 2 + .short _021D8A92 - _021D893E - 2 ; case 3 + .short _021D8ADE - _021D893E - 2 ; case 4 + .short _021D8AEE - _021D893E - 2 ; case 5 + .short _021D8B02 - _021D893E - 2 ; case 6 + .short _021D8B16 - _021D893E - 2 ; case 7 + .short _021D8B60 - _021D893E - 2 ; case 8 + .short _021D8B80 - _021D893E - 2 ; case 9 + .short _021D8BA0 - _021D893E - 2 ; case 10 + .short _021D8BD8 - _021D893E - 2 ; case 11 + .short _021D8BE8 - _021D893E - 2 ; case 12 + .short _021D8C02 - _021D893E - 2 ; case 13 + .short _021D8C16 - _021D893E - 2 ; case 14 + .short _021D8C30 - _021D893E - 2 ; case 15 + .short _021D8C44 - _021D893E - 2 ; case 16 + .short _021D8C5E - _021D893E - 2 ; case 17 + .short _021D8C72 - _021D893E - 2 ; case 18 + .short _021D8C98 - _021D893E - 2 ; case 19 + .short _021D8CA8 - _021D893E - 2 ; case 20 + .short _021D8CBC - _021D893E - 2 ; case 21 + .short _021D8CF8 - _021D893E - 2 ; case 22 + .short _021D8D1C - _021D893E - 2 ; case 23 + .short _021D8D3E - _021D893E - 2 ; case 24 + .short _021D8D7C - _021D893E - 2 ; case 25 + .short _021D8D94 - _021D893E - 2 ; case 26 + .short _021D8DD6 - _021D893E - 2 ; case 27 + .short _021D8DEA - _021D893E - 2 ; case 28 + .short _021D8E34 - _021D893E - 2 ; case 29 + .short _021D8E44 - _021D893E - 2 ; case 30 + .short _021D8E58 - _021D893E - 2 ; case 31 + .short _021D8E90 - _021D893E - 2 ; case 32 + .short _021D8EA0 - _021D893E - 2 ; case 33 + .short _021D8EBE - _021D893E - 2 ; case 34 + .short _021D8ED6 - _021D893E - 2 ; case 35 + .short _021D8EF0 - _021D893E - 2 ; case 36 + .short _021D8F0A - _021D893E - 2 ; case 37 + .short _021D8F24 - _021D893E - 2 ; case 38 + .short _021D8F3E - _021D893E - 2 ; case 39 + .short _021D8F5E - _021D893E - 2 ; case 40 + .short _021D8F7E - _021D893E - 2 ; case 41 + .short _021D8F92 - _021D893E - 2 ; case 42 + .short _021D8FA6 - _021D893E - 2 ; case 43 + .short _021D8FC6 - _021D893E - 2 ; case 44 + .short _021D900C - _021D893E - 2 ; case 45 + .short _021D901C - _021D893E - 2 ; case 46 + .short _021D9030 - _021D893E - 2 ; case 47 + .short _021D9062 - _021D893E - 2 ; case 48 + .short _021D90CE - _021D893E - 2 ; case 49 + .short _021D90E2 - _021D893E - 2 ; case 50 + .short _021D9106 - _021D893E - 2 ; case 51 + .short _021D913E - _021D893E - 2 ; case 52 + .short _021D9178 - _021D893E - 2 ; case 53 + .short _021D9192 - _021D893E - 2 ; case 54 + .short _021D91E4 - _021D893E - 2 ; case 55 + .short _021D9208 - _021D893E - 2 ; case 56 + .short _021D921A - _021D893E - 2 ; case 57 + .short _021D922A - _021D893E - 2 ; case 58 + .short _021D9244 - _021D893E - 2 ; case 59 + .short _021D925C - _021D893E - 2 ; case 60 + .short _021D926C - _021D893E - 2 ; case 61 + .short _021D927E - _021D893E - 2 ; case 62 + .short _021D9290 - _021D893E - 2 ; case 63 + .short _021D92CA - _021D893E - 2 ; case 64 + .short _021D92DC - _021D893E - 2 ; case 65 + .short _021D92EE - _021D893E - 2 ; case 66 + .short _021D930A - _021D893E - 2 ; case 67 + .short _021D9384 - _021D893E - 2 ; case 68 + .short _021D9396 - _021D893E - 2 ; case 69 + .short _021D93AE - _021D893E - 2 ; case 70 + .short _021D93C0 - _021D893E - 2 ; case 71 + .short _021D93D8 - _021D893E - 2 ; case 72 + .short _021D93F8 - _021D893E - 2 ; case 73 + .short _021D942A - _021D893E - 2 ; case 74 + .short _021D944A - _021D893E - 2 ; case 75 + .short _021D945C - _021D893E - 2 ; case 76 + .short _021D9476 - _021D893E - 2 ; case 77 + .short _021D94DE - _021D893E - 2 ; case 78 + .short _021D94EC - _021D893E - 2 ; case 79 + .short _021D950C - _021D893E - 2 ; case 80 + .short _021D954E - _021D893E - 2 ; case 81 + .short _021D956E - _021D893E - 2 ; case 82 + .short _021D9586 - _021D893E - 2 ; case 83 + .short _021D9598 - _021D893E - 2 ; case 84 + .short _021D95AA - _021D893E - 2 ; case 85 + .short _021D95BC - _021D893E - 2 ; case 86 + .short _021D95D4 - _021D893E - 2 ; case 87 + .short _021D95E6 - _021D893E - 2 ; case 88 + .short _021D95F8 - _021D893E - 2 ; case 89 + .short _021D960A - _021D893E - 2 ; case 90 + .short _021D9672 - _021D893E - 2 ; case 91 + .short _021D9684 - _021D893E - 2 ; case 92 + .short _021D9696 - _021D893E - 2 ; case 93 + .short _021D96DE - _021D893E - 2 ; case 94 + .short _021D96EC - _021D893E - 2 ; case 95 + .short _021D96FE - _021D893E - 2 ; case 96 + .short _021D9738 - _021D893E - 2 ; case 97 + .short _021D974C - _021D893E - 2 ; case 98 + .short _021D9764 - _021D893E - 2 ; case 99 + .short _021D9788 - _021D893E - 2 ; case 100 + .short _021D9798 - _021D893E - 2 ; case 101 + .short _021D97B2 - _021D893E - 2 ; case 102 + .short _021D97CC - _021D893E - 2 ; case 103 + .short _021D97DC - _021D893E - 2 ; case 104 + .short _021D9812 - _021D893E - 2 ; case 105 + .short _021D982A - _021D893E - 2 ; case 106 + .short _021D983A - _021D893E - 2 ; case 107 + .short _021D9848 - _021D893E - 2 ; case 108 + .short _021D985A - _021D893E - 2 ; case 109 +_021D8A1A: + ldr r1, _021D8D70 ; =0x00000405 + mov r0, #2 + mov r2, #1 + bl FUN_0200433C + ldr r0, _021D8D70 ; =0x00000405 + add r1, r5, #0 + bl FUN_02005350 + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4, #0xc] + bl _021D985C +_021D8A5A: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8B22 + add r0, r4, #0 + mov r1, #0x28 + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D8B22 + mov r0, #2 + str r0, [r4, #0xc] + bl _021D985C +_021D8A76: + add r1, r5, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8B22 + mov r0, #3 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8A92: + ldr r0, _021D8D70 ; =0x00000405 + bl FUN_0200521C + add r0, r4, #0 + mov r1, #1 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8140 + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #0x10 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #1 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #4 + str r0, [r4, #0xc] + bl _021D985C +_021D8ADE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8B22 + mov r0, #5 + str r0, [r4, #0xc] + bl _021D985C +_021D8AEE: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8B22 + mov r0, #6 + str r0, [r4, #0xc] + bl _021D985C +_021D8B02: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D8B22 + mov r0, #7 + str r0, [r4, #0xc] + bl _021D985C +_021D8B16: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7D7C + cmp r0, #1 + beq _021D8B26 +_021D8B22: + bl _021D985C +_021D8B26: + ldr r0, [r4, #0x48] + cmp r0, #1 + beq _021D8B38 + cmp r0, #2 + beq _021D8B44 + cmp r0, #3 + beq _021D8B58 + bl _021D985C +_021D8B38: + mov r0, #0xa + str r0, [r4, #0x10] + mov r0, #8 + str r0, [r4, #0xc] + bl _021D985C +_021D8B44: + mov r0, #0x1f + str r0, [r4, #0x10] + mov r0, #8 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8B58: + mov r0, #0x29 + str r0, [r4, #0xc] + bl _021D985C +_021D8B60: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #9 + str r0, [r4, #0xc] + bl _021D985C +_021D8B80: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8C84 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #1 + add r1, r5, #0 + bl FUN_0201797C + ldr r0, [r4, #0x10] + str r0, [r4, #0xc] + bl _021D985C +_021D8BA0: + add r1, r4, #0 + mov r2, #1 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #1 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0xb + str r0, [r4, #0xc] + bl _021D985C +_021D8BD8: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8C84 + mov r0, #0xc + str r0, [r4, #0xc] + bl _021D985C +_021D8BE8: + mov r1, #0x12 + str r1, [sp] + mov r1, #2 + add r2, r5, #0 + mov r3, #3 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0xd + str r0, [r4, #0xc] + bl _021D985C +_021D8C02: + add r1, r4, #0 + mov r2, #2 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + mov r0, #0xe + str r0, [r4, #0xc] + bl _021D985C +_021D8C16: + mov r1, #0xc + str r1, [sp] + mov r1, #3 + add r2, r5, #0 + mov r3, #7 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0xf + str r0, [r4, #0xc] + bl _021D985C +_021D8C30: + add r1, r4, #0 + mov r2, #3 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + mov r0, #0x10 + str r0, [r4, #0xc] + bl _021D985C +_021D8C44: + mov r1, #0xc + str r1, [sp] + mov r1, #4 + add r2, r5, #0 + add r3, r1, #0 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8C84 + mov r0, #0x11 + str r0, [r4, #0xc] + bl _021D985C +_021D8C5E: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8C84 + mov r0, #0x12 + str r0, [r4, #0xc] + bl _021D985C +_021D8C72: + mov r1, #0xa + str r1, [sp] + mov r1, #5 + add r2, r5, #0 + mov r3, #4 + bl MOD59_021D7ECC + cmp r0, #1 + beq _021D8C88 +_021D8C84: + bl _021D985C +_021D8C88: + mov r0, #0x13 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + bl _021D985C +_021D8C98: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x14 + str r0, [r4, #0xc] + bl _021D985C +_021D8CA8: + mov r1, #7 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8DA0 + mov r0, #0x15 + str r0, [r4, #0xc] + bl _021D985C +_021D8CBC: + ldr r6, _021D8D74 ; =0x021D9E44 + add r3, sp, #0x1c + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + ldr r0, [r4, #0x18] + str r0, [sp, #0x1c] + ldr r0, [r4, #0x68] + bl FUN_020145C8 + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + mov r1, #3 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #0x16 + str r0, [r4, #0xc] + bl _021D985C +_021D8CF8: + ldr r0, _021D8D78 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _021D8D08 + mov r0, #0x1b + str r0, [r4, #0xc] + bl _021D985C +_021D8D08: + ldr r0, [r4, #0x68] + bl FUN_02014630 + sub r0, r0, #3 + cmp r0, #1 + bhi _021D8DA0 + mov r0, #0x17 + str r0, [r4, #0xc] + bl _021D985C +_021D8D1C: + ldr r0, [r4, #0x68] + bl FUN_02014630 + cmp r0, #1 + beq _021D8D2E + cmp r0, #2 + beq _021D8D36 + bl _021D985C +_021D8D2E: + mov r0, #0x18 + str r0, [r4, #0xc] + bl _021D985C +_021D8D36: + mov r0, #0x1a + str r0, [r4, #0xc] + bl _021D985C +_021D8D3E: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D8DA0 + ldr r0, [r4, #0x68] + bl FUN_020146C4 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r5, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x19 + str r0, [r4, #0xc] + bl _021D985C + .align 2, 0 +_021D8D70: .word 0x00000405 +_021D8D74: .word 0x021D9E44 +_021D8D78: .word 0x021C48B8 +_021D8D7C: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8DA0 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x1c + str r0, [r4, #0xc] + bl _021D985C +_021D8D94: + mov r1, #6 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + beq _021D8DA4 +_021D8DA0: + bl _021D985C +_021D8DA4: + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + ldr r0, [r4, #0x68] + bl FUN_020146C4 + add r0, r4, #0 + mov r1, #1 + add r0, #0x88 + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #1 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #0xc + str r0, [r4, #0xc] + bl _021D985C +_021D8DD6: + mov r1, #8 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x16 + str r0, [r4, #0xc] + bl _021D985C +_021D8DEA: + add r1, r4, #0 + add r1, #0x88 + strb r5, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x1d + str r0, [r4, #0xc] + bl _021D985C +_021D8E34: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x1e + str r0, [r4, #0xc] + bl _021D985C +_021D8E44: + mov r1, #9 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8EB2 + mov r0, #6 + str r0, [r4, #0xc] + bl _021D985C +_021D8E58: + add r1, r4, #0 + mov r2, #4 + add r1, #0x88 + strb r2, [r1] + bl MOD59_021D80FC + add r0, r4, #0 + mov r1, #2 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x20 + str r0, [r4, #0xc] + bl _021D985C +_021D8E90: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8EB2 + mov r0, #0x21 + str r0, [r4, #0xc] + bl _021D985C +_021D8EA0: + mov r1, #6 + str r1, [sp] + mov r1, #0xa + mov r2, #1 + mov r3, #9 + bl MOD59_021D7ECC + cmp r0, #1 + beq _021D8EB6 +_021D8EB2: + bl _021D985C +_021D8EB6: + mov r0, #0x22 + str r0, [r4, #0xc] + bl _021D985C +_021D8EBE: + mov r3, #8 + mov r1, #0xb + mov r2, #1 + str r3, [sp] + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x23 + str r0, [r4, #0xc] + bl _021D985C +_021D8ED6: + mov r1, #6 + str r1, [sp] + mov r1, #0xc + mov r2, #1 + mov r3, #9 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x24 + str r0, [r4, #0xc] + bl _021D985C +_021D8EF0: + mov r1, #0xe + str r1, [sp] + mov r1, #0xd + mov r2, #1 + mov r3, #5 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x25 + str r0, [r4, #0xc] + bl _021D985C +_021D8F0A: + mov r1, #4 + str r1, [sp] + mov r1, #0xe + mov r2, #1 + mov r3, #0xa + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x26 + str r0, [r4, #0xc] + bl _021D985C +_021D8F24: + mov r1, #0xc + str r1, [sp] + mov r1, #0xf + mov r2, #1 + mov r3, #6 + bl MOD59_021D7ECC + cmp r0, #1 + bne _021D8FCE + mov r0, #0x27 + str r0, [r4, #0xc] + bl _021D985C +_021D8F3E: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x28 + str r0, [r4, #0xc] + bl _021D985C +_021D8F5E: + bl FUN_0200E308 + cmp r0, #1 + bne _021D8FCE + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x1c + str r0, [r4, #0xc] + bl _021D985C +_021D8F7E: + mov r1, #1 + mov r2, #2 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D8FCE + mov r0, #0x2a + str r0, [r4, #0xc] + bl _021D985C +_021D8F92: + mov r1, #0x10 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D8FCE + mov r0, #0x2b + str r0, [r4, #0xc] + bl _021D985C +_021D8FA6: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r1, r5, #0 + str r0, [sp, #8] + mov r0, #4 + add r2, r5, #0 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x2c + str r0, [r4, #0xc] + bl _021D985C +_021D8FC6: + bl FUN_0200E308 + cmp r0, #1 + beq _021D8FD2 +_021D8FCE: + bl _021D985C +_021D8FD2: + add r0, r4, #0 + bl MOD59_021D83F8 + add r0, r4, #0 + mov r1, #4 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #4 + add r3, r5, #0 + bl FUN_0200E1D0 + mov r0, #0x2d + str r0, [r4, #0xc] + bl _021D985C +_021D900C: + bl FUN_0200E308 + cmp r0, #1 + bne _021D90DA + mov r0, #0x2e + str r0, [r4, #0xc] + bl _021D985C +_021D901C: + mov r1, #0x11 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D90DA + mov r0, #0x2f + str r0, [r4, #0xc] + bl _021D985C +_021D9030: + bl MOD59_021D7730 + cmp r0, #1 + bne _021D9054 + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x94 + str r1, [r0] + add r0, r4, #0 + add r0, #0x98 + str r1, [r0] + ldr r0, [r4, #0x18] + bl FUN_02018744 + mov r0, #0x30 + str r0, [r4, #0xc] + bl _021D985C +_021D9054: + ldr r0, _021D9370 ; =0x021C48B8 + ldr r0, [r0, #0x48] + cmp r0, #0 + beq _021D90DA + mov r0, #0x31 + str r0, [r4, #0xc] + b _021D985C +_021D9062: + add r0, #0x98 + ldr r0, [r0] + cmp r0, #0 + beq _021D9078 + add r0, r4, #0 + add r0, #0x98 + ldr r0, [r0] + add r4, #0x98 + sub r0, r0, #1 + str r0, [r4] + b _021D985C +_021D9078: + ldr r6, _021D9374 ; =0x021D9DC0 + add r3, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + lsl r0, r0, #2 + ldr r1, [r2, r0] + ldr r0, _021D9378 ; =0x0000FFFF + cmp r1, r0 + bne _021D90A2 + ldr r0, _021D937C ; =0x00000706 + bl FUN_020054C8 + mov r0, #0x32 + str r0, [r4, #0xc] + b _021D985C +_021D90A2: + mov r0, #0x20 + str r0, [sp] + str r5, [sp, #4] + str r5, [sp, #8] + ldr r0, [r4] + mov r3, #6 + str r0, [sp, #0xc] + ldr r2, [r4, #0x18] + mov r0, #0x7d + bl FUN_0200687C + add r0, r4, #0 + add r0, #0x94 + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x94 + str r1, [r0] + mov r0, #4 + add r4, #0x98 + str r0, [r4] + b _021D985C +_021D90CE: + mov r1, #0x12 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + beq _021D90DC +_021D90DA: + b _021D985C +_021D90DC: + mov r0, #0x2f + str r0, [r4, #0xc] + b _021D985C +_021D90E2: + mov r0, #1 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xb + str r0, [sp] + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #1 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x33 + str r0, [r4, #0xc] + b _021D985C +_021D9106: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #1 + add r1, r5, #0 + mov r2, #0x10 + mov r3, #0xb + str r0, [sp] + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r5, #0 + mov r2, #0x10 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x34 + str r0, [r4, #0xc] + b _021D985C +_021D913E: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #1 + str r0, [sp] + mov r0, #4 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xb + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #4 + mov r1, #0x10 + add r2, r5, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x35 + str r0, [r4, #0xc] + b _021D985C +_021D9178: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D91F6 + mov r0, #0x36 + str r0, [r4, #0xc] + b _021D985C +_021D9192: + bl MOD59_021D82A0 + mov r0, #6 + add r1, r5, #0 + bl FUN_0201797C + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x94 + str r1, [r0] + add r1, r4, #0 + add r0, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x8b + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8234 + mov r0, #1 + str r0, [sp] + mov r0, #0x10 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0xb + bl FUN_0200A208 + mov r0, #2 + str r0, [sp] + mov r0, #0x10 + add r1, r5, #0 + add r2, r0, #0 + mov r3, #0xd + bl FUN_0200A208 + mov r0, #0x37 + str r0, [r4, #0xc] + b _021D985C +_021D91E4: + add r1, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + mov r0, #1 + bl FUN_0200A344 + cmp r0, #1 + beq _021D91F8 +_021D91F6: + b _021D985C +_021D91F8: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #1 + bne _021D92FA + mov r0, #0x38 + str r0, [r4, #0xc] + b _021D985C +_021D9208: + add r1, r4, #0 + add r1, #0x94 + bl MOD59_021D86BC + cmp r0, #1 + bne _021D92FA + mov r0, #0x39 + str r0, [r4, #0xc] + b _021D985C +_021D921A: + mov r1, #0x28 + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D92FA + mov r0, #0x3a + str r0, [r4, #0xc] + b _021D985C +_021D922A: + mov r1, #0x13 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D92FA + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x3b + str r0, [r4, #0xc] + b _021D985C +_021D9244: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + add r0, r4, #0 + bl MOD59_021D8914 + mov r0, #0x3c + str r0, [r4, #0xc] + b _021D985C +_021D925C: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D92FA + mov r0, #0x3d + str r0, [r4, #0xc] + b _021D985C +_021D926C: + mov r1, #0x14 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D92FA + mov r0, #0x3e + str r0, [r4, #0xc] + b _021D985C +_021D927E: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x3f + str r0, [r4, #0xc] + b _021D985C +_021D9290: + bl MOD59_021D84E8 + add r0, r4, #0 + mov r1, #2 + add r0, #0x89 + strb r1, [r0] + add r0, r4, #0 + mov r1, #6 + add r0, #0x8a + strb r1, [r0] + add r0, r4, #0 + bl MOD59_021D8140 + add r2, r5, #0 + add r3, r2, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + sub r3, #0x30 + bl FUN_020179E0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r2, r5, #0 + mov r3, #0x30 + bl FUN_020179E0 + mov r0, #0x40 + str r0, [r4, #0xc] + b _021D985C +_021D92CA: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x41 + str r0, [r4, #0xc] + b _021D985C +_021D92DC: + mov r1, #2 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D92FA + mov r0, #0x42 + str r0, [r4, #0xc] + b _021D985C +_021D92EE: + mov r1, #0x15 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + beq _021D92FC +_021D92FA: + b _021D985C +_021D92FC: + add r0, r4, #0 + add r1, r5, #0 + add r0, #0x84 + str r1, [r0] + mov r0, #0x43 + str r0, [r4, #0xc] + b _021D985C +_021D930A: + ldr r0, _021D9370 ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + and r1, r0 + cmp r1, #1 + bne _021D933C + mov r0, #6 + str r0, [r4, #0x7c] + add r0, r4, #0 + mov r1, #0xa + add r0, #0x80 + str r1, [r0] + mov r0, #2 + str r0, [r4, #0x78] + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D9336 + mov r0, #0x44 + str r0, [r4, #0xc] + b _021D985C +_021D9336: + mov r0, #0x46 + str r0, [r4, #0xc] + b _021D985C +_021D933C: + mov r1, #0x20 + and r1, r0 + cmp r1, #0x20 + beq _021D934C + mov r1, #0x10 + and r0, r1 + cmp r0, #0x10 + bne _021D9368 +_021D934C: + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D935A + mov r1, #1 + b _021D935C +_021D935A: + mov r1, #0 +_021D935C: + add r0, r4, #0 + add r0, #0x84 + str r1, [r0] + ldr r0, _021D9380 ; =0x000005DC + bl FUN_020054C8 +_021D9368: + add r0, r4, #0 + bl MOD59_021D8504 + b _021D985C + .align 2, 0 +_021D9370: .word 0x021C48B8 +_021D9374: .word 0x021D9DC0 +_021D9378: .word 0x0000FFFF +_021D937C: .word 0x00000706 +_021D9380: .word 0x000005DC +_021D9384: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9414 + mov r0, #0x45 + str r0, [r4, #0xc] + b _021D985C +_021D9396: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9414 + add r0, r4, #0 + bl MOD59_021D8618 + mov r0, #0x48 + str r0, [r4, #0xc] + b _021D985C +_021D93AE: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9414 + mov r0, #0x47 + str r0, [r4, #0xc] + b _021D985C +_021D93C0: + mov r1, #2 + add r2, r5, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9414 + add r0, r4, #0 + bl MOD59_021D8618 + mov r0, #0x48 + str r0, [r4, #0xc] + b _021D985C +_021D93D8: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D93E4 + mov r1, #0x16 + b _021D93E6 +_021D93E4: + mov r1, #0x17 +_021D93E6: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9414 + mov r0, #0x49 + str r0, [r4, #0xc] + b _021D985C +_021D93F8: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D9414 + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D941C + cmp r1, #1 + beq _021D9416 + cmp r1, #2 + beq _021D941C +_021D9414: + b _021D985C +_021D9416: + mov r0, #0x4b + str r0, [r4, #0xc] + b _021D985C +_021D941C: + ldr r0, [r4, #0x18] + mov r1, #0 + bl FUN_02018744 + mov r0, #0x4a + str r0, [r4, #0xc] + b _021D985C +_021D942A: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D9436 + mov r1, #1 + b _021D9438 +_021D9436: + mov r1, #2 +_021D9438: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9530 + mov r0, #0x3f + str r0, [r4, #0xc] + b _021D985C +_021D944A: + mov r1, #0x18 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9530 + mov r0, #0x4c + str r0, [r4, #0xc] + b _021D985C +_021D945C: + add r0, #0x84 + ldr r1, [r0] + ldr r0, [r4, #0x70] + str r1, [r0, #4] + ldr r0, _021D9778 ; =0x020FA5FC + ldr r1, [r4, #0x70] + ldr r2, [r4] + bl FUN_02006234 + str r0, [r4, #0x14] + mov r0, #0x4d + str r0, [r4, #0xc] + b _021D985C +_021D9476: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D94AE + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + b _021D94C2 +_021D94AE: + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #2 + add r3, r2, #0 + bl FUN_020179E0 +_021D94C2: + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x4e + str r0, [r4, #0xc] + b _021D985C +_021D94DE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D9530 + mov r0, #0x4f + str r0, [r4, #0xc] + b _021D985C +_021D94EC: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D94F8 + mov r1, #0x19 + b _021D94FA +_021D94F8: + mov r1, #0x1a +_021D94FA: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9530 + mov r0, #0x50 + str r0, [r4, #0xc] + b _021D985C +_021D950C: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D9530 + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D953C + cmp r1, #1 + beq _021D9532 + cmp r1, #2 + beq _021D953C +_021D9530: + b _021D985C +_021D9532: + mov r0, #0x52 + str r0, [r4, #0x10] + mov r0, #0x51 + str r0, [r4, #0xc] + b _021D985C +_021D953C: + ldr r0, [r4, #0x70] + ldr r0, [r0, #0x18] + bl FUN_02021A4C + mov r0, #0x3f + str r0, [r4, #0x10] + mov r0, #0x51 + str r0, [r4, #0xc] + b _021D985C +_021D954E: + add r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _021D955A + mov r1, #1 + b _021D955C +_021D955A: + mov r1, #2 +_021D955C: + add r0, r4, #0 + mov r2, #1 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + ldr r0, [r4, #0x10] + str r0, [r4, #0xc] + b _021D985C +_021D956E: + add r1, r4, #0 + mov r2, #1 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x53 + str r0, [r4, #0xc] + b _021D985C +_021D9586: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x54 + str r0, [r4, #0xc] + b _021D985C +_021D9598: + mov r1, #0x1b + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9616 + mov r0, #0x55 + str r0, [r4, #0xc] + b _021D985C +_021D95AA: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x56 + str r0, [r4, #0xc] + b _021D985C +_021D95BC: + add r1, r4, #0 + mov r2, #0xa + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x57 + str r0, [r4, #0xc] + b _021D985C +_021D95D4: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D9616 + mov r0, #0x58 + str r0, [r4, #0xc] + b _021D985C +_021D95E6: + mov r1, #0x1c + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D9616 + mov r0, #0x59 + str r0, [r4, #0xc] + b _021D985C +_021D95F8: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D9616 + mov r0, #0x5a + str r0, [r4, #0xc] + b _021D985C +_021D960A: + mov r1, #2 + mov r2, #1 + bl MOD59_021D7D7C + cmp r0, #1 + beq _021D9618 +_021D9616: + b _021D985C +_021D9618: + ldr r0, [r4, #0x48] + cmp r0, #5 + bhi _021D971A + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D962A: ; jump table + .short _021D985C - _021D962A - 2 ; case 0 + .short _021D9636 - _021D962A - 2 ; case 1 + .short _021D963C - _021D962A - 2 ; case 2 + .short _021D963C - _021D962A - 2 ; case 3 + .short _021D963C - _021D962A - 2 ; case 4 + .short _021D963C - _021D962A - 2 ; case 5 +_021D9636: + mov r0, #0x5c + str r0, [r4, #0xc] + b _021D985C +_021D963C: + ldr r1, _021D977C ; =0x020ECAC0 + ldrb r1, [r1] + cmp r1, #0xa + bne _021D964C + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, _021D9780 ; =0x021D9F40 + b _021D9652 +_021D964C: + sub r0, r0, #1 + lsl r1, r0, #3 + ldr r0, _021D9784 ; =0x021D9F68 +_021D9652: + ldr r1, [r0, r1] + ldr r0, [r4, #0x4c] + bl FUN_0200A914 + add r6, r0, #0 + ldr r0, [r4, #0x74] + add r1, r6, #0 + ldr r0, [r0, #0x18] + bl FUN_02021A74 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #0x5b + str r0, [r4, #0xc] + b _021D985C +_021D9672: + mov r1, #1 + mov r2, #2 + bl MOD59_021D8460 + cmp r0, #1 + bne _021D971A + mov r0, #0x5f + str r0, [r4, #0xc] + b _021D985C +_021D9684: + ldr r0, _021D9778 ; =0x020FA5FC + ldr r1, [r4, #0x74] + ldr r2, [r4] + bl FUN_02006234 + str r0, [r4, #0x14] + mov r0, #0x5d + str r0, [r4, #0xc] + b _021D985C +_021D9696: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #7 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + add r2, r5, #0 + ldr r0, [r4, #0x18] + mov r1, #1 + add r3, r2, #0 + bl FUN_020179E0 + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0x5e + str r0, [r4, #0xc] + b _021D985C +_021D96DE: + bl FUN_0200E308 + cmp r0, #1 + bne _021D971A + mov r0, #0x5f + str r0, [r4, #0xc] + b _021D985C +_021D96EC: + mov r1, #0x1d + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D971A + mov r0, #0x60 + str r0, [r4, #0xc] + b _021D985C +_021D96FE: + add r1, r5, #0 + add r2, r5, #0 + bl MOD59_021D7D7C + cmp r0, #1 + bne _021D971A + ldr r1, [r4, #0x48] + sub r0, r5, #2 + cmp r1, r0 + beq _021D972A + cmp r1, #1 + beq _021D971C + cmp r1, #2 + beq _021D972A +_021D971A: + b _021D985C +_021D971C: + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x61 + str r0, [r4, #0xc] + b _021D985C +_021D972A: + ldr r0, [r4, #0x74] + ldr r0, [r0, #0x18] + bl FUN_02021A4C + mov r0, #0x58 + str r0, [r4, #0xc] + b _021D985C +_021D9738: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + beq _021D9746 + b _021D985C +_021D9746: + mov r0, #0x62 + str r0, [r4, #0xc] + b _021D985C +_021D974C: + add r1, r4, #0 + mov r2, #1 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + mov r0, #0x63 + str r0, [r4, #0xc] + b _021D985C +_021D9764: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + mov r0, #0x64 + str r0, [r4, #0xc] + b _021D985C + nop +_021D9778: .word 0x020FA5FC +_021D977C: .word 0x020ECAC0 +_021D9780: .word 0x021D9F40 +_021D9784: .word 0x021D9F68 +_021D9788: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x65 + str r0, [r4, #0xc] + b _021D985C +_021D9798: + mov r1, #0x1e + mov r2, #1 + bl MOD59_021D7C44 + cmp r0, #1 + bne _021D985C + add r0, r5, #0 + mov r1, #0x32 + bl FUN_020053CC + mov r0, #0x66 + str r0, [r4, #0xc] + b _021D985C +_021D97B2: + mov r1, #1 + add r2, r1, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + ldr r0, [r4, #0x18] + add r1, r5, #0 + bl FUN_02018744 + mov r0, #0x67 + str r0, [r4, #0xc] + b _021D985C +_021D97CC: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x68 + str r0, [r4, #0xc] + b _021D985C +_021D97DC: + add r1, r4, #0 + add r1, #0x84 + ldr r1, [r1] + cmp r1, #0 + bne _021D97FA + add r1, r4, #0 + mov r2, #2 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 + b _021D980C +_021D97FA: + add r1, r4, #0 + mov r2, #6 + add r1, #0x89 + strb r2, [r1] + add r1, r4, #0 + add r1, #0x8a + strb r5, [r1] + bl MOD59_021D8140 +_021D980C: + mov r0, #0x69 + str r0, [r4, #0xc] + b _021D985C +_021D9812: + mov r1, #1 + add r2, r5, #0 + bl MOD59_021D7A68 + cmp r0, #1 + bne _021D985C + add r0, r4, #0 + bl MOD59_021D8624 + mov r0, #0x6a + str r0, [r4, #0xc] + b _021D985C +_021D982A: + mov r1, #0x1e + bl MOD59_021D7BEC + cmp r0, #1 + bne _021D985C + mov r0, #0x6b + str r0, [r4, #0xc] + b _021D985C +_021D983A: + bl MOD59_021D8634 + cmp r0, #1 + bne _021D985C + mov r0, #0x6c + str r0, [r4, #0xc] + b _021D985C +_021D9848: + ldr r0, _021D9864 ; =0x021D9DDC + ldr r2, [r4] + add r1, r5, #0 + bl FUN_02006234 + str r0, [r4, #0x14] + mov r0, #0x6d + str r0, [r4, #0xc] + b _021D985C +_021D985A: + mov r5, #1 +_021D985C: + add r0, r5, #0 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_021D9864: .word 0x021D9DDC + thumb_func_end MOD59_021D8920 + + thumb_func_start MOD59_021D9868 +MOD59_021D9868: ; 0x021D9868 + push {r4, lr} + mov r2, #1 + add r4, r0, #0 + mov r0, #3 + mov r1, #0x53 + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r4, #0 + mov r1, #0x28 + mov r2, #0x53 + bl FUN_02006268 + mov r1, #0 + mov r2, #0x28 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x53 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD59_021D9868 + + thumb_func_start MOD59_021D9898 +MOD59_021D9898: ; 0x021D9898 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + mov r6, #0 + cmp r1, #5 + bls _021D98AE + b _021D99E2 +_021D98AE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D98BA: ; jump table + .short _021D98C6 - _021D98BA - 2 ; case 0 + .short _021D992C - _021D98BA - 2 ; case 1 + .short _021D9952 - _021D98BA - 2 ; case 2 + .short _021D997C - _021D98BA - 2 ; case 3 + .short _021D998E - _021D98BA - 2 ; case 4 + .short _021D99C0 - _021D98BA - 2 ; case 5 +_021D98C6: + add r0, r6, #0 + add r1, r6, #0 + bl FUN_0200E3A0 + mov r0, #1 + add r1, r6, #0 + bl FUN_0200E3A0 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D99E8 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D99EC ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + add r0, r4, #0 + bl MOD59_021D9A20 + add r0, r4, #0 + bl MOD59_021D9C48 + ldr r0, _021D99F0 ; =MOD59_021D9A14 + add r1, r4, #0 + bl FUN_02015F10 + bl FUN_0201E788 + mov r0, #0x3c + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r5] + b _021D99E2 +_021D992C: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D9938 + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D99E2 +_021D9938: + ldr r0, _021D99F4 ; =0x00000406 + bl FUN_0200414C + ldr r1, _021D99F4 ; =0x00000406 + mov r0, #4 + mov r2, #1 + bl FUN_0200433C + mov r0, #0x5a + str r0, [r4, #0x24] + mov r0, #2 + str r0, [r5] + b _021D99E2 +_021D9952: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D995E + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D99E2 +_021D995E: + str r6, [r4, #0x24] + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + add r0, r6, #0 + add r3, r6, #0 + bl FUN_0200E1D0 + mov r0, #3 + str r0, [r5] + b _021D99E2 +_021D997C: + bl MOD59_021D9D78 + bl FUN_0200E308 + cmp r0, #1 + bne _021D99E2 + mov r0, #4 + str r0, [r5] + b _021D99E2 +_021D998E: + bl MOD59_021D9D78 + add r0, r4, #0 + add r1, r6, #0 + mov r2, #0x28 + mov r3, #0x30 + bl MOD59_021D9C74 + cmp r0, #1 + bne _021D99E2 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + str r0, [sp, #8] + add r0, r6, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #5 + str r0, [r5] + b _021D99E2 +_021D99C0: + bl MOD59_021D9D78 + bl FUN_0200E308 + cmp r0, #1 + bne _021D99E2 + add r0, r4, #0 + bl MOD59_021D9C68 + add r0, r4, #0 + bl MOD59_021D9BD0 + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r6, #1 +_021D99E2: + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_021D99E8: .word 0xFFFFE0FF +_021D99EC: .word 0x04001000 +_021D99F0: .word MOD59_021D9A14 +_021D99F4: .word 0x00000406 + thumb_func_end MOD59_021D9898 + + thumb_func_start MOD59_021D99F8 +MOD59_021D99F8: ; 0x021D99F8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + ldr r4, [r0] + add r0, r5, #0 + bl FUN_0200627C + add r0, r4, #0 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD59_021D99F8 + + thumb_func_start MOD59_021D9A14 +MOD59_021D9A14: ; 0x021D9A14 + ldr r3, _021D9A1C ; =0x0201AB61 + ldr r0, [r0, #4] + bx r3 + nop +_021D9A1C: .word 0x0201AB61 + thumb_func_end MOD59_021D9A14 + + thumb_func_start MOD59_021D9A20 +MOD59_021D9A20: ; 0x021D9A20 + push {r3, r4, r5, lr} + sub sp, #0xb8 + ldr r5, _021D9BB4 ; =0x021DA0D4 + add r4, r0, #0 + add r3, sp, #0x90 + mov r2, #5 +_021D9A2C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D9A2C + add r0, sp, #0x90 + bl FUN_0201E66C + ldr r0, [r4] + bl FUN_02016B94 + add r3, sp, #0x80 + ldr r5, _021D9BB8 ; =0x021DA054 + str r0, [r4, #4] + 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 FUN_02016BBC + ldr r5, _021D9BBC ; =0x021DA080 + add r3, sp, #0x64 + 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] + mov r1, #2 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + ldr r3, [r4] + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02018744 + ldr r5, _021D9BC0 ; =0x021DA09C + add r3, sp, #0x48 + 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] + mov r1, #0 + str r0, [r3] + ldr r0, [r4, #4] + add r3, r1, #0 + bl FUN_02016C18 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4] + mov r1, #1 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + bl FUN_0200687C + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + ldr r0, [r4] + mov r1, #4 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + bl FUN_020068C8 + ldr r5, _021D9BC4 ; =0x021DA064 + add r3, sp, #0x2c + 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] + mov r1, #1 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #2 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + mov r3, #1 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #5 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + mov r3, #1 + bl FUN_020068C8 + ldr r5, _021D9BC8 ; =0x021DA0B8 + add r3, sp, #0x10 + 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] + mov r1, #3 + str r0, [r3] + ldr r0, [r4, #4] + mov r3, #0 + bl FUN_02016C18 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldr r0, [r4] + mov r3, #3 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #3 + str r0, [sp, #0xc] + ldr r2, [r4, #4] + mov r0, #0x88 + add r3, r1, #0 + bl FUN_020068C8 + mov r2, #0 + str r2, [sp] + ldr r0, [r4] + mov r1, #6 + str r0, [sp, #4] + mov r0, #0x88 + add r3, r2, #0 + bl FUN_02006930 + ldr r2, [r4] + mov r0, #0 + mov r1, #0x20 + bl FUN_02002ED0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + mov r2, #0xc + ldr r0, _021D9BCC ; =0x04000050 + mov r1, #2 + mov r3, #4 + str r2, [sp] + bl G2x_SetBlendAlpha_ + add sp, #0xb8 + pop {r3, r4, r5, pc} + nop +_021D9BB4: .word 0x021DA0D4 +_021D9BB8: .word 0x021DA054 +_021D9BBC: .word 0x021DA080 +_021D9BC0: .word 0x021DA09C +_021D9BC4: .word 0x021DA064 +_021D9BC8: .word 0x021DA0B8 +_021D9BCC: .word 0x04000050 + thumb_func_end MOD59_021D9A20 + + thumb_func_start MOD59_021D9BD0 +MOD59_021D9BD0: ; 0x021D9BD0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #1 + mov r1, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #0 + bl FUN_0201797C + mov r0, #3 + mov r1, #0 + bl FUN_0201797C + mov r0, #4 + mov r1, #0 + bl FUN_0201797C + mov r0, #5 + mov r1, #0 + bl FUN_0201797C + mov r0, #6 + mov r1, #0 + bl FUN_0201797C + mov r0, #7 + mov r1, #0 + bl FUN_0201797C + ldr r0, _021D9C44 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, [r4, #4] + mov r1, #3 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FUN_02016A18 + pop {r4, pc} + nop +_021D9C44: .word 0x04000050 + thumb_func_end MOD59_021D9BD0 + + thumb_func_start MOD59_021D9C48 +MOD59_021D9C48: ; 0x021D9C48 + push {r4, lr} + add r4, r0, #0 + ldr r2, _021D9C64 ; =0x00000225 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [r4, #8] + bl FUN_0201BD5C + mov r0, #0 + str r0, [r4, #0xc] + pop {r4, pc} + .align 2, 0 +_021D9C64: .word 0x00000225 + thumb_func_end MOD59_021D9C48 + + thumb_func_start MOD59_021D9C68 +MOD59_021D9C68: ; 0x021D9C68 + ldr r3, _021D9C70 ; =0x0200A8B9 + ldr r0, [r0, #8] + bx r3 + nop +_021D9C70: .word 0x0200A8B9 + thumb_func_end MOD59_021D9C68 + + thumb_func_start MOD59_021D9C74 +MOD59_021D9C74: ; 0x021D9C74 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #0xc] + str r1, [sp, #0x10] + add r7, r3, #0 + mov r5, #0 + cmp r0, #3 + bhi _021D9D66 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9C92: ; jump table + .short _021D9C9A - _021D9C92 - 2 ; case 0 + .short _021D9D24 - _021D9C92 - 2 ; case 1 + .short _021D9D36 - _021D9C92 - 2 ; case 2 + .short _021D9D50 - _021D9C92 - 2 ; case 3 +_021D9C9A: + mov r0, #2 + add r1, r5, #0 + bl FUN_0201797C + mov r0, #1 + ldr r1, [r4] + lsl r0, r0, #0xa + bl FUN_020219F4 + add r6, r0, #0 + ldr r0, [r4, #8] + ldr r1, [sp, #0x10] + add r2, r6, #0 + bl FUN_0200A8E0 + add r1, r4, #0 + ldr r0, [r4, #4] + ldr r2, _021D9D6C ; =0x021DA04C + add r1, #0x10 + bl FUN_02019150 + add r1, r5, #0 + mov r0, #1 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0xc0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x10 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_020196F4 + add r0, r5, #0 + add r1, r6, #0 + add r2, r0, #0 + bl FUN_02002F08 + mov r1, #1 + lsl r1, r1, #8 + sub r0, r1, r0 + lsr r3, r0, #1 + str r7, [sp] + add r1, r5, #0 + ldr r0, _021D9D70 ; =0x000F0200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x10 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0x10 + bl FUN_020191D0 + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + mov r0, #0xf0 + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r4, #0xc] + b _021D9D66 +_021D9D24: + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021D9D30 + sub r0, r0, #1 + str r0, [r4, #0x24] + b _021D9D66 +_021D9D30: + mov r0, #2 + str r0, [r4, #0xc] + b _021D9D66 +_021D9D36: + ldr r0, _021D9D74 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + and r0, r1 + cmp r0, #1 + beq _021D9D4A + mov r0, #2 + and r0, r1 + cmp r0, #2 + bne _021D9D66 +_021D9D4A: + mov r0, #3 + str r0, [r4, #0xc] + b _021D9D66 +_021D9D50: + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019178 + ldr r0, [r4, #4] + mov r1, #2 + bl FUN_02018744 + add r0, r5, #0 + str r0, [r4, #0xc] + mov r5, #1 +_021D9D66: + add r0, r5, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D9D6C: .word 0x021DA04C +_021D9D70: .word 0x000F0200 +_021D9D74: .word 0x021C48B8 + thumb_func_end MOD59_021D9C74 + + thumb_func_start MOD59_021D9D78 +MOD59_021D9D78: ; 0x021D9D78 + push {r3, lr} + ldr r1, [r0, #0x20] + mov r2, #3 + add r3, r1, #4 + str r3, [r0, #0x20] + ldr r0, [r0, #4] + mov r1, #1 + asr r3, r3, #4 + bl FUN_020179E0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD59_021D9D78 + + .section .rodata + ; 0x021D9D90 + .incbin "baserom.nds", 0x2AC6B0, 0x36C |