diff options
-rw-r--r-- | arm9/arm9.lcf | 50 | ||||
-rw-r--r-- | arm9/global.inc | 13 | ||||
-rw-r--r-- | arm9/modules/70/asm/module_70.s | 1702 | ||||
-rw-r--r-- | arm9/modules/71/asm/module_71.s | 7155 |
4 files changed, 8914 insertions, 6 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 851d2493..7a14e351 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -2748,7 +2748,17 @@ SECTIONS { SDK_OVERLAY_MODULE_70_ID = 70; SDK_OVERLAY.MODULE_70.ID = 70; SDK_OVERLAY.MODULE_70.START = .; - FILE_2C4C00.o (.text) /* 0x2C0C00 */ + module_70.o (.text) + module_70.o (.rodata) + module_70.o (.init) + SDK_OVERLAY.MODULE_70.SINIT_START = .; + module_70.o (.ctor) + module_70.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_70.SINIT_END = .; + . = ALIGN(32); + module_70.o (.sdata) + module_70.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_70.END = .; SDK_OVERLAY.MODULE_70.SIZE = SDK_OVERLAY.MODULE_70.END - SDK_OVERLAY.MODULE_70.START; @@ -2758,7 +2768,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_70.BSS_START = .; - FILE_2C4C00.o (.bss) + module_70.o (.bss) + module_70.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_70.BSS_END = .; SDK_OVERLAY.MODULE_70.BSS_SIZE = SDK_OVERLAY.MODULE_70.BSS_END - SDK_OVERLAY.MODULE_70.BSS_START; @@ -2769,7 +2780,17 @@ SECTIONS { SDK_OVERLAY_MODULE_71_ID = 71; SDK_OVERLAY.MODULE_71.ID = 71; SDK_OVERLAY.MODULE_71.START = .; - FILE_2C5C00.o (.text) /* 0x2C1C00 */ + module_71.o (.text) + module_71.o (.rodata) + module_71.o (.init) + SDK_OVERLAY.MODULE_71.SINIT_START = .; + module_71.o (.ctor) + module_71.o (.sinit) + WRITEW 0; + SDK_OVERLAY.MODULE_71.SINIT_END = .; + . = ALIGN(32); + module_71.o (.sdata) + module_71.o (.data) . = ALIGN(32); SDK_OVERLAY.MODULE_71.END = .; SDK_OVERLAY.MODULE_71.SIZE = SDK_OVERLAY.MODULE_71.END - SDK_OVERLAY.MODULE_71.START; @@ -2779,7 +2800,8 @@ SECTIONS { { ALIGNALL(4); . = ALIGN(32); SDK_OVERLAY.MODULE_71.BSS_START = .; - FILE_2C5C00.o (.bss) + module_71.o (.bss) + module_71.o (.sbss) . = ALIGN(32); SDK_OVERLAY.MODULE_71.BSS_END = .; SDK_OVERLAY.MODULE_71.BSS_SIZE = SDK_OVERLAY.MODULE_71.BSS_END - SDK_OVERLAY.MODULE_71.BSS_START; @@ -3855,8 +3877,24 @@ SECTIONS { WRITEW 69; WRITEW 0; - OVERLAY_TABLE(MODULE_70, 70) - OVERLAY_TABLE(MODULE_71, 71) + WRITEW 70; + WRITEW ADDR(.MODULE_70); + WRITEW SDK_OVERLAY.MODULE_70.SIZE; + WRITEW SDK_OVERLAY.MODULE_70.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_70.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_70.SINIT_END; + WRITEW 70; + WRITEW 0; + + WRITEW 71; + WRITEW ADDR(.MODULE_71); + WRITEW SDK_OVERLAY.MODULE_71.SIZE; + WRITEW SDK_OVERLAY.MODULE_71.BSS_SIZE; + WRITEW SDK_OVERLAY.MODULE_71.SINIT_START; + WRITEW SDK_OVERLAY.MODULE_71.SINIT_END; + WRITEW 71; + WRITEW 0; + OVERLAY_TABLE(MODULE_72, 72) OVERLAY_TABLE(MODULE_73, 73) OVERLAY_TABLE(MODULE_74, 74) diff --git a/arm9/global.inc b/arm9/global.inc index 117dbdb2..7fd83449 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5743,6 +5743,19 @@ .extern FUN_02085410
.extern FUN_02085414
.extern FUN_02087A38
+.extern FUN_0202B1F0
+.extern FUN_0202B250
+.extern FUN_0202B29C
+.extern FUN_0202B31C
+.extern FUN_020124B4
+.extern FUN_020166A8
+.extern FUN_020166B8
+.extern FUN_0202945C
+.extern FUN_0202E288
+.extern FUN_0206AA84
+.extern FUN_0206B8A4
+.extern FUN_02083B84
+.extern FUN_02083D10
.extern MOD05_021F54E0
.extern MOD06_0224C24C
.extern MOD12_0223D1CC
diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s new file mode 100644 index 00000000..dd072eaa --- /dev/null +++ b/arm9/modules/70/asm/module_70.s @@ -0,0 +1,1702 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD70_021D74E0 +MOD70_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x3c + lsl r2, r2, #0xe + bl FUN_0201681C + mov r2, #7 + mov r0, #3 + mov r1, #0x3d + lsl r2, r2, #0xe + bl FUN_0201681C + add r0, r5, #0 + mov r1, #0xdc + mov r2, #0x3c + bl FUN_02006268 + add r4, r0, #0 + beq _021D7558 + add r0, r5, #0 + bl FUN_0200628C + add r1, r4, #0 + add r1, #0xcc + str r0, [r1] + add r0, r4, #0 + mov r1, #0 + add r0, #0xd4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xcc + ldr r0, [r0] + bl FUN_0202B1F0 + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + add r1, r4, #0 + add r1, #0xcc + ldr r1, [r1] + add r0, r4, #0 + bl MOD70_021D7724 + add r0, r4, #0 + add r1, r4, #0 + bl MOD70_021D77CC + add r1, r4, #0 + add r1, #0xc8 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + bl MOD70_021D7930 + add r4, #0xd8 + str r0, [r4] +_021D7558: + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD70_021D74E0 + + thumb_func_start MOD70_021D755C +MOD70_021D755C: ; 0x021D755C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + bl MOD70_021D78A0 + add r0, r4, #0 + bl MOD70_021D7760 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0x3d + bl FUN_020168D0 + mov r0, #0x3c + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD70_021D755C + + thumb_func_start MOD70_021D758C +MOD70_021D758C: ; 0x021D758C + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + beq _021D75B8 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + bl MOD70_021D7958 + cmp r0, #0 + bne _021D75B0 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D75B0: + add r0, r4, #0 + mov r1, #0 + add r0, #0xd8 + str r1, [r0] +_021D75B8: + ldr r0, [r5] + cmp r0, #0 + beq _021D75C4 + cmp r0, #1 + beq _021D768A + b _021D768E +_021D75C4: + ldr r0, _021D7694 ; =0x021C48B8 + mov r1, #2 + ldr r0, [r0, #0x48] + add r2, r0, #0 + tst r2, r1 + beq _021D75E0 + add r0, r4, #0 + mov r1, #1 + bl MOD70_021D7698 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D768E +_021D75E0: + mov r2, #1 + add r3, r0, #0 + tst r3, r2 + beq _021D75F8 + ldr r0, [r4, #0x1c] + mov r1, #4 + eor r0, r2 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD70_021D7698 + b _021D768E +_021D75F8: + mov r2, #0x20 + tst r2, r0 + beq _021D7612 + add r0, r4, #0 + bl MOD70_021D76AC + cmp r0, #0 + beq _021D768E + add r0, r4, #0 + mov r1, #3 + bl MOD70_021D7698 + b _021D768E +_021D7612: + mov r2, #0x10 + tst r2, r0 + beq _021D762C + add r0, r4, #0 + bl MOD70_021D76E8 + cmp r0, #0 + beq _021D768E + add r0, r4, #0 + mov r1, #3 + bl MOD70_021D7698 + b _021D768E +_021D762C: + mov r2, #0x40 + tst r2, r0 + beq _021D765C + ldr r0, [r4, #0x18] + sub r0, r0, #1 + str r0, [r4, #0x18] + bpl _021D7654 + add r0, r4, #0 + bl MOD70_021D76AC + cmp r0, #0 + beq _021D768E + ldr r0, [r4, #0x14] + mov r1, #3 + sub r0, r0, #1 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD70_021D7698 + b _021D768E +_021D7654: + add r0, r4, #0 + bl MOD70_021D7698 + b _021D768E +_021D765C: + mov r2, #0x80 + tst r0, r2 + beq _021D768E + ldr r0, [r4, #0x18] + add r2, r0, #1 + str r2, [r4, #0x18] + ldr r0, [r4, #0x14] + cmp r2, r0 + blt _021D7682 + add r0, r4, #0 + bl MOD70_021D76E8 + cmp r0, #0 + beq _021D768E + add r0, r4, #0 + mov r1, #3 + bl MOD70_021D7698 + b _021D768E +_021D7682: + add r0, r4, #0 + bl MOD70_021D7698 + b _021D768E +_021D768A: + mov r0, #1 + pop {r3, r4, r5, pc} +_021D768E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D7694: .word 0x021C48B8 + thumb_func_end MOD70_021D758C + + thumb_func_start MOD70_021D7698 +MOD70_021D7698: ; 0x021D7698 + push {r4, lr} + add r4, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + bl MOD70_021D7930 + add r4, #0xd8 + str r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD70_021D7698 + + thumb_func_start MOD70_021D76AC +MOD70_021D76AC: ; 0x021D76AC + push {r3, lr} + add r1, r0, #0 + add r1, #0xd4 + ldr r1, [r1] + add r2, r1, #1 + add r1, r0, #0 + add r1, #0xd4 + str r2, [r1] + add r1, r0, #0 + add r1, #0xd4 + ldr r2, [r1] + add r1, r0, #0 + add r1, #0xd0 + ldr r1, [r1] + cmp r2, r1 + blt _021D76D4 + add r1, r0, #0 + mov r2, #0 + add r1, #0xd4 + str r2, [r1] +_021D76D4: + add r1, r0, #0 + add r2, r0, #0 + add r1, #0xcc + add r2, #0xd4 + ldr r1, [r1] + ldr r2, [r2] + bl MOD70_021D777C + mov r0, #1 + pop {r3, pc} + thumb_func_end MOD70_021D76AC + + thumb_func_start MOD70_021D76E8 +MOD70_021D76E8: ; 0x021D76E8 + push {r3, lr} + add r1, r0, #0 + add r1, #0xd4 + ldr r1, [r1] + sub r2, r1, #1 + add r1, r0, #0 + add r1, #0xd4 + str r2, [r1] + add r1, r0, #0 + add r1, #0xd4 + ldr r1, [r1] + cmp r1, #0 + bge _021D7710 + add r1, r0, #0 + add r1, #0xd0 + ldr r1, [r1] + sub r2, r1, #1 + add r1, r0, #0 + add r1, #0xd4 + str r2, [r1] +_021D7710: + add r1, r0, #0 + add r2, r0, #0 + add r1, #0xcc + add r2, #0xd4 + ldr r1, [r1] + ldr r2, [r2] + bl MOD70_021D777C + mov r0, #1 + pop {r3, pc} + thumb_func_end MOD70_021D76E8 + + thumb_func_start MOD70_021D7724 +MOD70_021D7724: ; 0x021D7724 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + str r1, [sp, #4] + mov r4, #0 + add r5, r0, #0 + mov r6, #0xc + mov r7, #0x3c +_021D7734: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_020219F4 + str r0, [r5, #0x20] + mov r0, #8 + mov r1, #0x3c + bl FUN_020219F4 + str r0, [r5, #0x24] + add r4, r4, #1 + add r5, #0x1c + cmp r4, #6 + blt _021D7734 + ldr r0, [sp] + mov r2, #0 + ldr r1, [sp, #4] + str r2, [r0, #0x1c] + bl MOD70_021D777C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_021D7724 + + thumb_func_start MOD70_021D7760 +MOD70_021D7760: ; 0x021D7760 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021D7766: + ldr r0, [r5, #0x20] + bl FUN_02021A20 + ldr r0, [r5, #0x24] + bl FUN_02021A20 + add r4, r4, #1 + add r5, #0x1c + cmp r4, #6 + blt _021D7766 + pop {r3, r4, r5, pc} + thumb_func_end MOD70_021D7760 + + thumb_func_start MOD70_021D777C +MOD70_021D777C: ; 0x021D777C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + str r2, [sp] + add r0, r7, #0 + add r1, r2, #0 + bl FUN_0202B21C + str r0, [r6] + ldr r1, [sp] + add r0, r7, #0 + bl FUN_0202B250 + str r0, [r6, #0x14] + ldr r1, [sp] + add r0, r7, #0 + add r2, r6, #4 + bl FUN_0202B31C + ldr r0, [r6, #0x14] + mov r4, #0 + cmp r0, #0 + ble _021D77C4 + add r5, r6, #0 + add r5, #0x20 +_021D77AE: + ldr r1, [sp] + add r0, r7, #0 + add r2, r4, #0 + add r3, r5, #0 + bl FUN_0202B29C + ldr r0, [r6, #0x14] + add r4, r4, #1 + add r5, #0x1c + cmp r4, r0 + blt _021D77AE +_021D77C4: + mov r0, #0 + str r0, [r6, #0x18] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD70_021D777C + + thumb_func_start MOD70_021D77CC +MOD70_021D77CC: ; 0x021D77CC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + add r5, r0, #0 + ldr r1, _021D7894 ; =0x00000E1C + mov r0, #0x3d + bl FUN_02016998 + add r4, r0, #0 + beq _021D788C + str r5, [r4] + str r6, [r4, #4] + mov r0, #0x3d + bl FUN_02016B94 + str r0, [r4, #0x10] + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x3d + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x40 + add r1, #0x38 + mov r2, #0x3d + bl FUN_02008C9C + str r0, [r4, #0x34] + ldr r2, _021D7898 ; =0x00000139 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x3d + bl FUN_0200A86C + mov r2, #6 + lsl r2, r2, #6 + str r0, [r4, r2] + mov r0, #1 + mov r1, #0x1a + sub r2, #0x16 + mov r3, #0x3d + bl FUN_0200A86C + mov r2, #0x61 + lsl r2, r2, #2 + str r0, [r4, r2] + mov r0, #1 + mov r1, #0x1a + add r2, #0xc8 + mov r3, #0x3d + bl FUN_0200A86C + mov r1, #0x62 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x3d + bl FUN_0200AA80 + mov r1, #0x63 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x8c + add r0, r1, #0 + mov r1, #0x3d + bl FUN_020219F4 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r4, r1] + sub r1, #0x90 + add r0, r1, #0 + mov r1, #0x3d + bl FUN_020219F4 + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x3d + bl FUN_020669C0 + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, _021D789C ; =MOD70_021D790C + add r1, r4, #0 + bl FUN_02015F10 +_021D788C: + add r0, r4, #0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021D7894: .word 0x00000E1C +_021D7898: .word 0x00000139 +_021D789C: .word MOD70_021D790C + thumb_func_end MOD70_021D77CC + + thumb_func_start MOD70_021D78A0 +MOD70_021D78A0: ; 0x021D78A0 + push {r4, lr} + add r4, r0, #0 + beq _021D790A + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200AB18 + mov r0, #0x62 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, [r4, #0x34] + bl FUN_0201FD58 + bl FUN_02009FA0 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 +_021D790A: + pop {r4, pc} + thumb_func_end MOD70_021D78A0 + + thumb_func_start MOD70_021D790C +MOD70_021D790C: ; 0x021D790C + push {r3, lr} + ldr r0, [r0, #0x34] + bl FUN_0201FDEC + bl FUN_02009F80 + ldr r3, _021D7928 ; =0x027E0000 + ldr r1, _021D792C ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + nop +_021D7928: .word 0x027E0000 +_021D792C: .word 0x00003FF8 + thumb_func_end MOD70_021D790C + + thumb_func_start MOD70_021D7930 +MOD70_021D7930: ; 0x021D7930 + push {r3, lr} + add r2, r1, #0 + str r2, [r0, #0xc] + mov r1, #0 + lsl r3, r2, #2 + str r1, [r0, #8] + ldr r2, _021D7954 ; =0x021D82E0 + add r1, r0, #0 + ldr r2, [r2, r3] + add r1, #8 + blx r2 + cmp r0, #0 + bne _021D794E + mov r0, #1 + pop {r3, pc} +_021D794E: + mov r0, #0 + pop {r3, pc} + nop +_021D7954: .word 0x021D82E0 + thumb_func_end MOD70_021D7930 + + thumb_func_start MOD70_021D7958 +MOD70_021D7958: ; 0x021D7958 + push {r3, lr} + ldr r2, [r0, #0xc] + add r1, r0, #0 + lsl r3, r2, #2 + ldr r2, _021D796C ; =0x021D82E0 + add r1, #8 + ldr r2, [r2, r3] + blx r2 + pop {r3, pc} + nop +_021D796C: .word 0x021D82E0 + thumb_func_end MOD70_021D7958 + + thumb_func_start MOD70_021D7970 +MOD70_021D7970: ; 0x021D7970 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D7984 + cmp r1, #1 + beq _021D79AC + b _021D79BA +_021D7984: + bl MOD70_021D7AF4 + add r0, r5, #0 + bl MOD70_021D7F70 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3d + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D79BA +_021D79AC: + bl FUN_0200E308 + cmp r0, #0 + beq _021D79BA + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D79BA: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD70_021D7970 + + thumb_func_start MOD70_021D79C0 +MOD70_021D79C0: ; 0x021D79C0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D79D4 + cmp r0, #1 + beq _021D79FA + b _021D7A14 +_021D79D4: + ldr r0, _021D7A1C ; =0x0000060E + bl FUN_020054C8 + mov r1, #0 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3d + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7A14 +_021D79FA: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7A14 + add r0, r5, #0 + bl MOD70_021D7FC4 + add r0, r5, #0 + bl MOD70_021D7C10 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D7A14: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021D7A1C: .word 0x0000060E + thumb_func_end MOD70_021D79C0 + + thumb_func_start MOD70_021D7A20 +MOD70_021D7A20: ; 0x021D7A20 + push {r3, r4, r5, r6, r7, lr} + ldr r7, [r0, #4] + str r0, [sp] + ldr r0, [r7, #0x14] + mov r4, #0 + cmp r0, #0 + ble _021D7A82 + ldr r5, [sp] + add r6, r7, #0 +_021D7A32: + ldr r0, [r7, #0x18] + cmp r4, r0 + bne _021D7A5E + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02020398 + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02020310 + mov r0, #1 + bl FUN_02005E80 + ldrh r0, [r6, #0x30] + bl FUN_02005578 + b _021D7A76 +_021D7A5E: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020398 + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #1 + bl FUN_02020310 +_021D7A76: + ldr r0, [r7, #0x14] + add r4, r4, #1 + add r5, r5, #4 + add r6, #0x1c + cmp r4, r0 + blt _021D7A32 +_021D7A82: + ldr r0, [sp] + bl MOD70_021D7D98 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_021D7A20 + + thumb_func_start MOD70_021D7A8C +MOD70_021D7A8C: ; 0x021D7A8C + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _021D7AD6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7AA2: ; jump table + .short _021D7AAA - _021D7AA2 - 2 ; case 0 + .short _021D7AB6 - _021D7AA2 - 2 ; case 1 + .short _021D7AC2 - _021D7AA2 - 2 ; case 2 + .short _021D7ACE - _021D7AA2 - 2 ; case 3 +_021D7AAA: + bl MOD70_021D7CC0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7AD6 +_021D7AB6: + bl MOD70_021D820C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7AD6 +_021D7AC2: + bl MOD70_021D80C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7AD6 +_021D7ACE: + bl MOD70_021D7CB0 + mov r0, #1 + pop {r4, pc} +_021D7AD6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD70_021D7A8C + + thumb_func_start MOD70_021D7ADC +MOD70_021D7ADC: ; 0x021D7ADC + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D7AF0 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + bl MOD70_021D7D98 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D7AF0: .word 0x000005DC + thumb_func_end MOD70_021D7ADC + + thumb_func_start MOD70_021D7AF4 +MOD70_021D7AF4: ; 0x021D7AF4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _021D7BF8 ; =0x021D8284 + bl FUN_0201E66C + ldr r2, _021D7BFC ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + ldr r0, _021D7C00 ; =0x021D823C + bl FUN_02016BBC + ldr r0, [r5, #0x10] + ldr r2, _021D7C04 ; =0x021D8268 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #0x10] + ldr r2, _021D7C08 ; =0x021D824C + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x3d + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x65 + mov r3, #2 + bl FUN_0200687C + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3d + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x65 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0x40 + str r0, [sp] + mov r0, #0x3d + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x65 + mov r1, #2 + add r3, r2, #0 + bl FUN_02006930 + mov r2, #0 + str r2, [sp] + mov r1, #1 + ldr r0, [r5, #0x10] + add r3, r1, #0 + bl FUN_02017F48 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r2, [sp, #0xc] + ldr r0, [r5, #0x10] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + add r0, r5, #0 + mov r1, #1 + bl MOD70_021D7C2C + add r4, r0, #0 + add r0, r5, #0 + bl MOD70_021D7CB0 + mov r0, #0 + str r0, [sp] + mov r0, #0x3d + str r0, [sp, #4] + lsl r2, r4, #0x10 + ldr r0, [r5, #0x10] + mov r1, #1 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_0200CB00 + add r0, r5, #0 + lsl r2, r4, #0x10 + add r0, #0x14 + mov r1, #0 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_0200CCA4 + add r0, r5, #0 + lsl r2, r4, #0x10 + add r0, #0x24 + mov r1, #0 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_0200CCA4 + ldr r0, [r5, #0x10] + mov r1, #1 + bl FUN_02017CD0 + mov r3, #8 + ldr r0, _021D7C0C ; =0x04000050 + mov r1, #0 + mov r2, #6 + str r3, [sp] + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7BF8: .word 0x021D8284 +_021D7BFC: .word 0x04000304 +_021D7C00: .word 0x021D823C +_021D7C04: .word 0x021D8268 +_021D7C08: .word 0x021D824C +_021D7C0C: .word 0x04000050 + thumb_func_end MOD70_021D7AF4 + + thumb_func_start MOD70_021D7C10 +MOD70_021D7C10: ; 0x021D7C10 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x10] + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD70_021D7C98 + pop {r4, pc} + thumb_func_end MOD70_021D7C10 + + thumb_func_start MOD70_021D7C2C +MOD70_021D7C2C: ; 0x021D7C2C + push {r4, r5, lr} + sub sp, #0x14 + mov r2, #1 + add r5, r0, #0 + str r2, [sp] + mov r0, #0x1e + str r0, [sp, #4] + mov r0, #2 + add r4, r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r1, r5, #0 + ldr r0, [r5, #0x10] + add r1, #0x14 + add r3, r2, #0 + bl FUN_02019064 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1e + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x3c + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r1, r5, #0 + mov r2, #1 + ldr r0, [r5, #0x10] + add r1, #0x24 + add r3, r2, #0 + bl FUN_02019064 + add r0, r5, #0 + add r0, #0x14 + bl FUN_02019270 + add r5, #0x24 + add r0, r5, #0 + bl FUN_02019270 + add r4, #0xb4 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD70_021D7C2C + + thumb_func_start MOD70_021D7C98 +MOD70_021D7C98: ; 0x021D7C98 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x14 +_021D7CA0: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #2 + blt _021D7CA0 + pop {r3, r4, r5, pc} + thumb_func_end MOD70_021D7C98 + + thumb_func_start MOD70_021D7CB0 +MOD70_021D7CB0: ; 0x021D7CB0 + push {r4, lr} + add r4, r0, #0 + bl MOD70_021D7CE8 + add r0, r4, #0 + bl MOD70_021D7D98 + pop {r4, pc} + thumb_func_end MOD70_021D7CB0 + + thumb_func_start MOD70_021D7CC0 +MOD70_021D7CC0: ; 0x021D7CC0 + push {r4, lr} + add r4, r0, #0 + add r0, #0x14 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x24 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x14 + bl FUN_02019548 + add r4, #0x24 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + thumb_func_end MOD70_021D7CC0 + + thumb_func_start MOD70_021D7CE8 +MOD70_021D7CE8: ; 0x021D7CE8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r4, [r5, #4] + mov r1, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x63 + lsl r0, r0, #2 + add r6, r5, #0 + ldr r0, [r5, r0] + ldr r2, [r4] + mov r3, #4 + add r6, #0x14 + bl FUN_0200AD38 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x63 + lsl r0, r0, #2 + mov r2, #0x7d + ldr r3, [r4, #4] + lsl r2, r2, #4 + add r2, r3, r2 + ldr r0, [r5, r0] + mov r3, #4 + bl FUN_0200AD38 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, [r4, #8] + mov r1, #2 + bl FUN_0200B764 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, [r4, #0xc] + mov r1, #3 + mov r3, #2 + bl FUN_0200AD38 + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #0 + bl FUN_0200A8E0 + mov r2, #0x63 + lsl r2, r2, #2 + add r1, r2, #0 + ldr r0, [r5, r2] + add r1, #8 + add r2, r2, #4 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + add r0, r6, #0 + mov r1, #0xf + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x95 + ldr r2, [r5, r2] + add r0, r6, #0 + add r3, r1, #0 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02019548 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD70_021D7CE8 + + thumb_func_start MOD70_021D7D98 +MOD70_021D7D98: ; 0x021D7D98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r0, #0x1c + ldr r1, [r4, #0x18] + add r2, r4, #0 + mul r0, r1 + add r2, #0x20 + add r7, r2, r0 + add r0, r5, #0 + str r0, [sp, #0xc] + add r0, #0x24 + mov r1, #0xf + str r0, [sp, #0xc] + bl FUN_02019620 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _021D7DC8 + cmp r0, #1 + bne _021D7DC6 + b _021D7F1C +_021D7DC6: + b _021D7F66 +_021D7DC8: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [sp, #0xc] + ldr r2, [r7] + add r3, r1, #0 + bl FUN_0201BD84 + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #5 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x91 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r3, #0x48 + bl FUN_0201BD84 + mov r2, #0x61 + lsl r2, r2, #2 + ldr r0, [r5, r2] + add r2, #0xc + ldrh r1, [r7, #0x10] + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x91 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r3, #0x5e + bl FUN_0201BD84 + ldrh r0, [r7, #0x10] + ldr r1, [r7, #8] + bl FUN_02068A20 + cmp r0, #0 + beq _021D7E3A + cmp r0, #1 + beq _021D7E4C + b _021D7E5E +_021D7E3A: + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #3 + bl FUN_0200A8E0 + b _021D7E68 +_021D7E4C: + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #4 + bl FUN_0200A8E0 + b _021D7E68 +_021D7E5E: + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02021A4C +_021D7E68: + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x91 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r3, #0xae + bl FUN_0201BD84 + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #1 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x63 + lsl r0, r0, #2 + ldrb r2, [r7, #0x12] + ldr r0, [r5, r0] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + mov r2, #0x63 + lsl r2, r2, #2 + add r1, r2, #0 + ldr r0, [r5, r2] + add r1, #8 + add r2, r2, #4 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x95 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r3, #0xc2 + bl FUN_0201BD84 + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #2 + bl FUN_0200A8E0 + mov r0, #0x10 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + add r2, #0x91 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + add r3, r1, #0 + bl FUN_0201BD84 + mov r1, #0x19 + lsl r1, r1, #4 + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r0, [sp, #0xc] + ldr r2, [r7, #4] + bl FUN_0201BD84 + b _021D7F66 +_021D7F1C: + mov r4, #0 +_021D7F1E: + ldrh r1, [r7, #0x14] + cmp r1, #0 + beq _021D7F66 + mov r0, #0x62 + mov r2, #0x19 + lsl r0, r0, #2 + lsl r2, r2, #4 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + bl FUN_0200A8E0 + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r0, r0, #1 + lsl r0, r0, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + mov r2, #0x19 + str r0, [sp, #8] + lsl r2, r2, #4 + mov r3, #1 + add r6, r4, #0 + and r6, r3 + mov r3, #0x60 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r1, #0 + mul r3, r6 + bl FUN_0201BD84 + add r4, r4, #1 + add r7, r7, #2 + cmp r4, #4 + blt _021D7F1E +_021D7F66: + ldr r0, [sp, #0xc] + bl FUN_02019548 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_021D7D98 + + thumb_func_start MOD70_021D7F70 +MOD70_021D7F70: ; 0x021D7F70 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x3d + str r0, [sp] + mov r0, #0x1b + mov r1, #0x29 + mov r2, #0 + add r3, sp, #8 + bl FUN_02006C30 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x3d + str r0, [sp] + mov r0, #0x1b + mov r1, #0x2a + mov r2, #0 + add r3, sp, #4 + bl FUN_02006C5C + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r4, r1] + add r1, #0x20 + mov r2, #0x32 + mov r0, #0 + add r1, r4, r1 + lsl r2, r2, #6 + bl MIi_CpuClearFast + ldr r1, [sp, #8] + ldr r2, [sp, #4] + add r0, r4, #0 + bl MOD70_021D7FF8 + add r0, r4, #0 + bl MOD70_021D80C8 + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD70_021D7F70 + + thumb_func_start MOD70_021D7FC4 +MOD70_021D7FC4: ; 0x021D7FC4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0x16 + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #4 +_021D7FD0: + ldr r0, [r5, r6] + cmp r0, #0 + beq _021D7FDA + bl FUN_0201FFC8 +_021D7FDA: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D7FD0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_02016A18 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_021D7FC4 + + thumb_func_start MOD70_021D7FF8 +MOD70_021D7FF8: ; 0x021D7FF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x94 + mov r3, #0 + add r5, r0, #0 + str r1, [sp, #0x7c] + str r2, [sp, #0x80] + str r3, [sp, #0x74] + str r3, [sp, #0x84] + str r3, [sp, #0x88] + str r3, [sp, #0x8c] + add r0, sp, #0x90 + strb r3, [r0] + add r0, sp, #0x2c + str r0, [sp, #0x70] + add r0, sp, #0x18 + str r0, [sp, #0x78] + ldr r0, [r5, #0x34] + mov r1, #0x28 + str r0, [sp, #0x50] + add r0, sp, #0x70 + str r0, [sp, #0x54] + mov r0, #1 + str r0, [sp, #0x68] + mov r0, #0x3d + str r3, [sp, #0x60] + str r0, [sp, #0x6c] + str r0, [sp] + add r2, r3, #0 + mov r0, #0x1b + add r3, sp, #0x14 + bl FUN_02006BB0 + str r0, [sp, #0xc] + mov r0, #0x1b + mov r1, #0x27 + add r2, sp, #0x10 + mov r3, #0x3d + bl FUN_02006C08 + mov r4, #0 + ldr r6, _021D80C4 ; =0x021D82AC + str r0, [sp, #8] + str r4, [sp, #4] + add r7, r4, #0 +_021D8050: + add r0, sp, #0x2c + bl FUN_020B1A24 + add r0, sp, #0x18 + bl FUN_020B19DC + ldr r0, [sp, #0x14] + add r1, r4, #0 + mov r2, #1 + add r3, sp, #0x2c + bl FUN_020B1768 + ldr r0, [sp, #0x10] + add r1, r7, #0 + mov r2, #1 + add r3, sp, #0x18 + bl FUN_020B1240 + ldr r0, [r6] + lsl r0, r0, #0xc + str r0, [sp, #0x58] + ldr r0, [r6, #4] + lsl r0, r0, #0xc + str r0, [sp, #0x5c] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #0x64] + add r0, sp, #0x50 + bl FUN_0201FF84 + mov r1, #0x16 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x32 + lsl r0, r0, #6 + add r4, r4, r0 + ldr r0, [sp, #4] + add r7, #0x20 + add r0, r0, #1 + add r6, #8 + add r5, r5, #4 + str r0, [sp, #4] + cmp r0, #6 + blt _021D8050 + ldr r0, [sp, #8] + bl FUN_02016A18 + ldr r0, [sp, #0xc] + bl FUN_02016A18 + add sp, #0x94 + pop {r4, r5, r6, r7, pc} + nop +_021D80C4: .word 0x021D82AC + thumb_func_end MOD70_021D7FF8 + + thumb_func_start MOD70_021D80C8 +MOD70_021D80C8: ; 0x021D80C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r7, r0, #0 + ldr r0, [r7, #4] + mov r4, #0 + str r0, [sp, #0x20] + ldr r0, [r0, #0x14] + cmp r0, #0 + bgt _021D80DC + b _021D81E4 +_021D80DC: + ldr r5, [sp, #0x20] + str r4, [sp, #0x18] + add r0, r5, #0 + str r0, [sp, #0x1c] + add r0, #0x33 + str r0, [sp, #0x1c] + mov r0, #0x67 + lsl r0, r0, #2 + add r0, r7, r0 + str r4, [sp, #0x14] + add r6, r7, #0 + str r0, [sp, #0x24] +_021D80F4: + mov r0, #1 + str r0, [sp] + ldr r0, [r5, #0x28] + add r2, r5, #0 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r5, #0x2c] + add r2, #0x32 + str r0, [sp, #0xc] + mov r0, #0x66 + lsl r0, r0, #2 + ldrh r1, [r5, #0x30] + ldrb r2, [r2] + ldr r0, [r7, r0] + mov r3, #0x20 + bl FUN_02066ACC + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r7, r0] + ldr r2, [sp, #0x1c] + mov r1, #0x70 + bl FUN_02067830 + mov r1, #0x66 + lsl r1, r1, #2 + ldr r1, [r7, r1] + add r0, sp, #0x28 + mov r2, #2 + bl FUN_02068B68 + ldr r0, [sp, #0x24] + add r1, sp, #0x28 + str r0, [sp] + ldr r0, [r5, #0x28] + ldr r3, _021D8208 ; =0x021D822C + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + ldrh r0, [r5, #0x30] + mov r2, #0x3d + str r0, [sp, #0x10] + add r0, sp, #0x28 + ldrh r0, [r0] + ldrh r1, [r1, #2] + bl FUN_02012530 + mov r1, #0x32 + ldr r0, [sp, #0x24] + lsl r1, r1, #6 + bl DC_FlushRange + mov r2, #0x32 + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x18] + lsl r2, r2, #6 + bl GX_LoadOBJ + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3d + str r0, [sp, #4] + add r0, sp, #0x28 + add r1, sp, #0x28 + ldrh r0, [r0] + ldrh r1, [r1, #4] + ldr r3, [sp, #0x14] + mov r2, #1 + bl FUN_02006930 + ldr r0, [sp, #0x20] + ldr r0, [r0, #0x18] + cmp r4, r0 + bne _021D81A8 + mov r0, #1 + bl FUN_02005E80 + ldrh r0, [r5, #0x30] + bl FUN_02005578 + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_02020398 + b _021D81B4 +_021D81A8: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #1 + bl FUN_02020398 +_021D81B4: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r0, #0x1c + str r0, [sp, #0x1c] + mov r0, #0x32 + lsl r0, r0, #6 + add r0, r1, r0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r4, r4, #1 + add r0, #0x20 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + add r5, #0x1c + ldr r0, [r0, #0x14] + add r6, r6, #4 + cmp r4, r0 + blt _021D80F4 +_021D81E4: + cmp r4, #6 + bge _021D8202 + lsl r0, r4, #2 + mov r6, #0x16 + add r5, r7, r0 + mov r7, #0 + lsl r6, r6, #4 +_021D81F2: + ldr r0, [r5, r6] + add r1, r7, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D81F2 +_021D8202: + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8208: .word 0x021D822C + thumb_func_end MOD70_021D80C8 + + thumb_func_start MOD70_021D820C +MOD70_021D820C: ; 0x021D820C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r6, #0x16 + add r5, r0, #0 + add r7, r4, #0 + lsl r6, r6, #4 +_021D8218: + ldr r0, [r5, r6] + add r1, r7, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D8218 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD70_021D820C + + .section .rodata + ; 0x021D822C + .incbin "baserom.nds", 0x2C594C, 0xB0 + + .section .data + ; 0x021D82E0 + .incbin "baserom.nds", 0x2C5A00, 0x20 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s new file mode 100644 index 00000000..b0d7af7e --- /dev/null +++ b/arm9/modules/71/asm/module_71.s @@ -0,0 +1,7155 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD71_0222D5C0 +MOD71_0222D5C0: ; 0x0222D5C0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _0222D72C ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _0222D730 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + ldr r2, _0222D734 ; =0x000707D0 + mov r0, #3 + mov r1, #0x1a + bl FUN_0201681C + ldr r1, _0222D738 ; =0x000036B4 + add r0, r5, #0 + mov r2, #0x1a + bl FUN_02006268 + add r4, r0, #0 + ldr r2, _0222D738 ; =0x000036B4 + mov r0, #0 + add r1, r4, #0 + bl MIi_CpuClearFast + mov r0, #0x1a + bl FUN_02016B94 + mov r1, #0x5d + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xc + mov r1, #0x16 + mov r2, #0x1a + bl FUN_0200AA90 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x1a + bl FUN_0200AA80 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x1a + bl FUN_0200AA80 + mov r2, #6 + lsl r2, r2, #6 + str r0, [r4, r2] + mov r1, #0x1a + mov r0, #0 + sub r2, #0x44 + add r3, r1, #0 + bl FUN_0200A86C + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0 + str r0, [r4, #0x40] + add r0, r4, #0 + add r1, r5, #0 + bl MOD70_0222E76C + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + bl MOD70_0222E558 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD70_0222E578 + mov r0, #0x10 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x1a + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add r0, r4, #0 + bl MOD70_0222E900 + ldr r0, _0222D73C ; =MOD70_0222E4DC + add r1, r4, #0 + bl FUN_02015F10 + bl MOD70_0222EA38 + add r0, r4, #0 + bl MOD70_0222EA68 + add r0, r4, #0 + bl MOD70_0222EF90 + mov r0, #0x5d + ldr r2, [r4, #8] + lsl r0, r0, #2 + ldr r1, _0222D740 ; =0x00000438 + ldr r0, [r4, r0] + ldr r2, [r2, #0x18] + add r1, r4, r1 + bl MOD70_02230C48 + ldr r0, [r4, #8] + add r1, r4, #0 + ldr r0, [r0] + str r0, [r4] + bl FUN_02083D10 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222D744 ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x14 + mov r2, #1 + bl MOD70_02230F40 + ldr r0, [r4] + bl FUN_02083B84 + mov r0, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r1, #0x5d + lsl r1, r1, #2 + ldr r1, [r4, r1] + mov r0, #0x1a + bl FUN_020335F0 + bl FUN_02033E74 + bl FUN_0201277C + cmp r0, #0 + bne _0222D71A + ldr r1, _0222D748 ; =0x0000043D + mov r0, #4 + mov r2, #1 + bl FUN_0200433C + b _0222D724 +_0222D71A: + ldr r1, _0222D74C ; =0x0000043E + mov r0, #4 + mov r2, #1 + bl FUN_0200433C +_0222D724: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_0222D72C: .word 0xFFFFE0FF +_0222D730: .word 0x04001000 +_0222D734: .word 0x000707D0 +_0222D738: .word 0x000036B4 +_0222D73C: .word MOD70_0222E4DC +_0222D740: .word 0x00000438 +_0222D744: .word 0x000005A8 +_0222D748: .word 0x0000043D +_0222D74C: .word 0x0000043E + thumb_func_end MOD71_0222D5C0 + + thumb_func_start MOD70_0222D750 +MOD70_0222D750: ; 0x0222D750 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r1, [sp, #0x10] + add r4, r2, #0 + lsl r1, r1, #4 + add r1, #0x92 + mov r2, #2 + ldr r0, [r0, #0x14] + add r6, r3, #0 + lsl r1, r1, #5 + lsl r2, r2, #8 + bl GX_LoadOBJ + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0206B7BC + add r1, r0, #0 + ldr r0, [sp, #0x14] + add r1, #0xa + bl FUN_020202A8 + pop {r4, r5, r6, pc} + thumb_func_end MOD70_0222D750 + + thumb_func_start MOD70_0222D780 +MOD70_0222D780: ; 0x0222D780 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + bl FUN_02031190 + bl FUN_0202DFA4 + add r4, r0, #0 + bl FUN_02031190 + mov r1, #1 + eor r0, r1 + bl FUN_0202DFA4 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0x1a + bl FUN_020239A0 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0x1a + bl FUN_020239A0 + add r6, r0, #0 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x30 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0222D814 ; =0x00000438 + add r1, r4, #0 + add r0, r5, r0 + mov r2, #0xa + mov r3, #0 + bl MOD70_02230EFC + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0222D818 ; =0x00000448 + add r1, r6, #0 + add r0, r5, r0 + mov r2, #0xa + mov r3, #0 + bl MOD70_02230EFC + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, _0222D81C ; =0x00000498 + add r1, r7, #0 + add r0, r5, r0 + mov r2, #5 + mov r3, #0 + bl MOD70_02230EFC + add r0, r7, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222D814: .word 0x00000438 +_0222D818: .word 0x00000448 +_0222D81C: .word 0x00000498 + thumb_func_end MOD70_0222D780 + + thumb_func_start MOD70_0222D820 +MOD70_0222D820: ; 0x0222D820 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + bl MOD70_0222E558 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD70_0222E578 + add r0, r4, #0 + bl MOD70_0222E900 + add r0, r4, #0 + bl MOD70_0222D93C + add r0, r4, #0 + bl MOD70_0222D780 + ldr r0, [r4, #8] + ldr r0, [r0, #0x18] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r2, #0x5d + str r0, [sp] + mov r0, #0x1a + lsl r2, r2, #2 + str r0, [sp, #4] + ldr r0, [r4, r2] + mov r1, #0 + add r2, #0x65 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + mov r2, #0x5d + str r1, [sp] + mov r0, #0x1a + lsl r2, r2, #2 + str r0, [sp, #4] + ldr r0, [r4, r2] + add r2, #0x83 + mov r3, #0xb + bl FUN_0200CB00 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222D92C ; =0x00000588 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0xf + mov r2, #1 + bl MOD70_02230F40 + mov r0, #4 + mov r1, #1 + bl FUN_0201797C + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + mov r0, #0 + mov r1, #1 + bl FUN_0201797C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + bl MOD70_0222EA38 + add r0, r4, #0 + bl MOD70_0222EA68 + add r0, r4, #0 + bl MOD70_0222EF90 + ldr r0, _0222D930 ; =0x00002218 + mov r1, #0 + ldr r0, [r4, r0] + add r2, r4, #0 + bl MOD70_0222DBEC + ldr r0, _0222D934 ; =0x0000221C + mov r1, #6 + ldr r0, [r4, r0] + add r2, r4, #0 + bl MOD70_0222DBEC + mov r0, #0xce + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _0222D938 ; =MOD70_0222E4DC + add r1, r4, #0 + bl FUN_02015F10 + add sp, #8 + pop {r4, pc} + nop +_0222D92C: .word 0x00000588 +_0222D930: .word 0x00002218 +_0222D934: .word 0x0000221C +_0222D938: .word MOD70_0222E4DC + thumb_func_end MOD70_0222D820 + + thumb_func_start MOD70_0222D93C +MOD70_0222D93C: ; 0x0222D93C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + ldr r1, _0222D9B8 ; =0x00002218 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + mov r2, #0 + bl MOD70_0222DB5C + mov r0, #0x5e + ldr r1, _0222D9BC ; =0x0000221C + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + mov r2, #6 + bl MOD70_0222DB5C + mov r0, #0 + mov r2, #0x5e + str r0, [sp] + lsl r2, r2, #2 + ldr r3, _0222D9B8 ; =0x00002218 + ldr r0, _0222D9C0 ; =0x000004A8 + ldr r1, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + ldr r3, [r5, r3] + add r0, r5, r0 + bl MOD70_0222DB94 + mov r0, #6 + mov r2, #0x5e + str r0, [sp] + lsl r2, r2, #2 + ldr r3, _0222D9BC ; =0x0000221C + ldr r0, _0222D9C4 ; =0x00000508 + ldr r1, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + ldr r3, [r5, r3] + add r0, r5, r0 + bl MOD70_0222DB94 + ldr r0, _0222D9B8 ; =0x00002218 + ldr r0, [r5, r0] + bl FUN_0206B9AC + add r4, r0, #0 + ldr r0, _0222D9BC ; =0x0000221C + ldr r0, [r5, r0] + bl FUN_0206B9AC + add r2, r0, #0 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl MOD70_0222E8DC + pop {r3, r4, r5, pc} + nop +_0222D9B8: .word 0x00002218 +_0222D9BC: .word 0x0000221C +_0222D9C0: .word 0x000004A8 +_0222D9C4: .word 0x00000508 + thumb_func_end MOD70_0222D93C + + thumb_func_start MOD70_0222D9C8 +MOD70_0222D9C8: ; 0x0222D9C8 + 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, #0 + beq _0222D9E8 + cmp r1, #1 + beq _0222D9FC + cmp r1, #2 + bne _0222D9E6 + b _0222DB28 +_0222D9E6: + b _0222DB32 +_0222D9E8: + bl FUN_0200E308 + cmp r0, #0 + beq _0222DA02 + mov r0, #1 + str r0, [r5] + add r0, r4, #0 + bl MOD70_0222D780 + b _0222DB32 +_0222D9FC: + ldr r1, [r4, #0x48] + cmp r1, #7 + bls _0222DA04 +_0222DA02: + b _0222DB32 +_0222DA04: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222DA10: ; jump table + .short _0222DA20 - _0222DA10 - 2 ; case 0 + .short _0222DA28 - _0222DA10 - 2 ; case 1 + .short _0222DA36 - _0222DA10 - 2 ; case 2 + .short _0222DA54 - _0222DA10 - 2 ; case 3 + .short _0222DA72 - _0222DA10 - 2 ; case 4 + .short _0222DAAE - _0222DA10 - 2 ; case 5 + .short _0222DAFE - _0222DA10 - 2 ; case 6 + .short _0222DB1A - _0222DA10 - 2 ; case 7 +_0222DA20: + bl MOD70_0222DD60 + str r0, [r4, #0x48] + b _0222DB32 +_0222DA28: + bl MOD70_0222E2D4 + str r0, [r4, #0x48] + add r0, r4, #0 + bl MOD70_0222F264 + b _0222DB32 +_0222DA36: + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1a + str r0, [sp, #8] + add r0, r6, #0 + add r1, r6, #0 + add r2, r6, #0 + add r3, r6, #0 + bl FUN_0200E1D0 + mov r0, #2 + str r0, [r5] + b _0222DB32 +_0222DA54: + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1a + str r0, [sp, #8] + add r0, r6, #0 + add r1, r6, #0 + add r2, r6, #0 + add r3, r6, #0 + bl FUN_0200E1D0 + mov r0, #4 + str r0, [r4, #0x48] + b _0222DB32 +_0222DA72: + bl FUN_0200E308 + cmp r0, #0 + beq _0222DB32 + add r0, r4, #0 + bl MOD70_0222E3D4 + add r0, r4, #0 + bl MOD70_0222E378 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD70_0222E848 + mov r0, #1 + str r0, [r4, #0x44] + mov r0, #5 + str r0, [r4, #0x48] + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #6 + bl _s32_div_f + add r1, r0, #0 + add r0, r4, #0 + bl MOD70_0222F59C + b _0222DB32 +_0222DAAE: + ldr r0, [r4, #0x40] + bl FUN_02006290 + cmp r0, #0 + beq _0222DB32 + ldr r0, [r4, #0x40] + bl FUN_02006260 + add r0, r4, #0 + bl MOD70_0222D820 + add r0, r6, #0 + str r0, [r4, #0x44] + add r0, r4, #0 + add r0, #0x20 + ldrb r2, [r0] + ldr r1, [r4, #0x3c] + mov r0, #6 + mul r0, r1 + add r1, r2, r0 + add r0, r4, #0 + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + bl MOD70_0222E224 + add r0, r4, #0 + mov r1, #0xce + add r0, #0x88 + lsl r1, r1, #2 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, r6, #0 + bl MOD70_0222F350 + bl FUN_02033E74 + mov r0, #6 + str r0, [r4, #0x48] + b _0222DB32 +_0222DAFE: + mov r0, #8 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x1a + str r0, [sp, #8] + add r0, r6, #0 + add r2, r1, #0 + add r3, r6, #0 + bl FUN_0200E1D0 + mov r0, #7 + str r0, [r4, #0x48] + b _0222DB32 +_0222DB1A: + bl FUN_0200E308 + cmp r0, #0 + beq _0222DB32 + mov r0, #1 + str r0, [r4, #0x48] + b _0222DB32 +_0222DB28: + bl FUN_0200E308 + cmp r0, #0 + beq _0222DB32 + mov r6, #1 +_0222DB32: + ldr r0, [r4, #0x44] + cmp r0, #0 + bne _0222DB48 + add r0, r4, #0 + bl MOD70_02230B3C + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FDEC +_0222DB48: + mov r1, #0x5d + lsl r1, r1, #2 + ldr r1, [r4, r1] + mov r0, #0x1a + bl FUN_020335F0 + add r0, r6, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD70_0222D9C8 + + thumb_func_start MOD70_0222DB5C +MOD70_0222DB5C: ; 0x0222DB5C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + add r6, r2, #0 + mov r4, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222DB92 +_0222DB70: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + bl FUN_020690E4 + add r2, r0, #0 + add r0, r7, #0 + add r1, r4, r6 + bl FUN_0200ACF8 + add r0, r5, #0 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _0222DB70 +_0222DB92: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_0222DB5C + + thumb_func_start MOD70_0222DB94 +MOD70_0222DB94: ; 0x0222DB94 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r0, r3, #0 + str r1, [sp, #8] + str r2, [sp, #0xc] + str r3, [sp, #0x10] + ldr r6, [sp, #0x28] + mov r4, #0 + bl FUN_0206B9AC + cmp r0, #0 + ble _0222DBE6 + add r7, r6, #1 +_0222DBB0: + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + add r2, r7, r4 + mov r3, #0x1a + bl FUN_0200A9C4 + add r6, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #8 + mov r3, #0 + bl MOD70_02230EFC + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x10] + add r5, #0x10 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _0222DBB0 +_0222DBE6: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD70_0222DB94 + + thumb_func_start MOD70_0222DBEC +MOD70_0222DBEC: ; 0x0222DBEC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r2, [sp, #0x20] + mov r7, #0 + bl FUN_0206B9AC + cmp r0, #0 + bgt _0222DC02 + b _0222DD10 +_0222DC02: + mov r1, #0x1f + ldr r0, [sp, #0x20] + lsl r1, r1, #6 + add r0, r0, r1 + str r0, [sp, #0x1c] +_0222DC0C: + ldr r0, [sp, #0xc] + ldr r2, _0222DD50 ; =0x00000696 + add r0, r7, r0 + str r0, [sp, #0x10] + lsl r0, r0, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #0x10] + lsl r1, r0, #4 + ldr r0, [sp, #0x20] + add r4, r0, r1 + ldr r1, [sp, #0x18] + ldrb r2, [r4, r2] + add r5, r0, r1 + mov r0, #0x69 + ldr r1, _0222DD54 ; =0x00000695 + lsl r0, r0, #4 + ldrh r0, [r4, r0] + ldrb r1, [r4, r1] + bl FUN_0206B6D4 + add r1, r0, #0 + mov r0, #0x1a + str r0, [sp] + ldr r6, [sp, #0x1c] + ldr r3, [sp, #0x18] + mov r0, #0x13 + mov r2, #0 + add r3, r6, r3 + bl FUN_02006BB0 + mov r1, #0x79 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + add r0, #0x30 + ldr r0, [r5, r0] + mov r1, #2 + ldr r0, [r0, #0x14] + lsl r1, r1, #8 + bl DC_FlushRange + ldr r0, [sp, #0x10] + mov r1, #0x69 + str r0, [sp] + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r2, _0222DD50 ; =0x00000696 + str r0, [sp, #4] + ldr r3, _0222DD54 ; =0x00000695 + mov r0, #0x1f + lsl r1, r1, #4 + lsl r0, r0, #6 + ldrh r1, [r4, r1] + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + ldr r0, [r5, r0] + bl MOD70_0222D750 + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _0222DD58 ; =0x00000692 + ldrh r0, [r4, r0] + cmp r0, #0 + bne _0222DCA4 + mov r0, #0x3a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + b _0222DCCC +_0222DCA4: + ldr r0, [sp, #0x10] + lsl r1, r0, #2 + ldr r0, [sp, #0x20] + add r1, r0, r1 + mov r0, #0x3a + lsl r0, r0, #4 + ldr r0, [r1, r0] + str r1, [sp, #0x14] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x3a + ldr r1, [sp, #0x14] + lsl r0, r0, #4 + ldr r0, [r1, r0] + ldr r1, _0222DD58 ; =0x00000692 + ldrh r1, [r4, r1] + add r1, r1, #2 + bl FUN_02020130 +_0222DCCC: + ldr r0, _0222DD5C ; =0x0000069C + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222DCE2 + mov r0, #0x3d + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + b _0222DD02 +_0222DCE2: + ldr r0, [sp, #0x10] + lsl r1, r0, #2 + ldr r0, [sp, #0x20] + add r4, r0, r1 + mov r0, #0x3d + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x3d + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0x15 + bl FUN_02020130 +_0222DD02: + ldr r0, [sp, #8] + add r7, r7, #1 + bl FUN_0206B9AC + cmp r7, r0 + bge _0222DD10 + b _0222DC0C +_0222DD10: + cmp r7, #6 + bge _0222DD4C + ldr r0, [sp, #0xc] + mov r6, #0x3a + lsl r1, r0, #2 + ldr r0, [sp, #0x20] + lsl r6, r6, #4 + add r1, r0, r1 + lsl r0, r7, #2 + add r5, r6, #0 + add r4, r1, r0 + add r5, #0x30 +_0222DD28: + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, r6] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, r5] + mov r1, #0 + bl FUN_020200A0 + add r7, r7, #1 + add r4, r4, #4 + cmp r7, #6 + blt _0222DD28 +_0222DD4C: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222DD50: .word 0x00000696 +_0222DD54: .word 0x00000695 +_0222DD58: .word 0x00000692 +_0222DD5C: .word 0x0000069C + thumb_func_end MOD70_0222DBEC + + thumb_func_start MOD70_0222DD60 +MOD70_0222DD60: ; 0x0222DD60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + bl MOD70_02230C1C + ldr r0, [r4, #0x4c] + cmp r0, #0x13 + bls _0222DD72 + b _0222E0E8 +_0222DD72: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0222DD7E: ; jump table + .short _0222DDA6 - _0222DD7E - 2 ; case 0 + .short _0222DDC0 - _0222DD7E - 2 ; case 1 + .short _0222DE12 - _0222DD7E - 2 ; case 2 + .short _0222DE22 - _0222DD7E - 2 ; case 3 + .short _0222DE38 - _0222DD7E - 2 ; case 4 + .short _0222DE48 - _0222DD7E - 2 ; case 5 + .short _0222DE60 - _0222DD7E - 2 ; case 6 + .short _0222DE74 - _0222DD7E - 2 ; case 7 + .short _0222DE86 - _0222DD7E - 2 ; case 8 + .short _0222DEB2 - _0222DD7E - 2 ; case 9 + .short _0222DEC0 - _0222DD7E - 2 ; case 10 + .short _0222DECC - _0222DD7E - 2 ; case 11 + .short _0222DF58 - _0222DD7E - 2 ; case 12 + .short _0222DF74 - _0222DD7E - 2 ; case 13 + .short _0222DF80 - _0222DD7E - 2 ; case 14 + .short _0222DF92 - _0222DD7E - 2 ; case 15 + .short _0222DFD6 - _0222DD7E - 2 ; case 16 + .short _0222E010 - _0222DD7E - 2 ; case 17 + .short _0222E054 - _0222DD7E - 2 ; case 18 + .short _0222E094 - _0222DD7E - 2 ; case 19 +_0222DDA6: + mov r0, #0x50 + bl FUN_02031588 + mov r0, #2 + bl FUN_020166A8 + add r0, r4, #0 + bl MOD70_02230B88 + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DDC0: + mov r0, #0x50 + bl FUN_020315D8 + cmp r0, #0 + beq _0222DEB8 + ldr r0, [r4, #8] + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _0222DDD6 + mov r0, #6 + b _0222DDD8 +_0222DDD6: + mov r0, #2 +_0222DDD8: + str r0, [r4, #0x4c] + bl FUN_02031190 + cmp r0, #0 + bne _0222DE04 + bl FUN_0201B9EC + ldr r1, _0222E0F0 ; =0x00000445 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x3c + blo _0222DDF8 + bl ErrorHandling +_0222DDF8: + bl FUN_02031190 + mov r1, #0x1f + add r2, r5, #3 + bl MOD70_0222F42C +_0222DE04: + ldr r0, [r4, #4] + bl MOD70_0222F4A8 + add r0, r4, #0 + bl MOD70_02230C08 + b _0222E0E8 +_0222DE12: + mov r1, #0x8b + lsl r1, r1, #6 + ldr r1, [r4, r1] + cmp r1, #0 + beq _0222DEB8 + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DE22: + mov r0, #0x8b + lsl r0, r0, #6 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222DEB8 + mov r0, #4 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DE38: + ldr r0, _0222E0F4 ; =0x0000369C + add r0, r4, r0 + bl FUN_020336C0 + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DE48: + ldr r2, _0222E0F4 ; =0x0000369C + ldr r0, [r4, #4] + mov r1, #2 + add r2, r4, r2 + bl FUN_020336C8 + cmp r0, #0 + beq _0222DEB8 + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DE60: + mov r0, #1 + bl FUN_02031400 + mov r0, #0x51 + bl FUN_02031588 + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DE74: + mov r0, #0x51 + bl FUN_020315D8 + cmp r0, #0 + beq _0222DEB8 + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DE86: + mov r0, #0 + str r0, [r4, #0x50] + str r0, [r4, #0x54] + str r0, [r4, #0x58] + bl FUN_02031190 + cmp r0, #1 + bne _0222DEAA + bl FUN_02031190 + ldr r1, _0222E0F8 ; =0x00002218 + ldr r2, [r4, #0x50] + ldr r1, [r4, r1] + bl MOD70_0222F480 + ldr r0, [r4, #0x50] + add r0, r0, #1 + str r0, [r4, #0x50] +_0222DEAA: + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DEB2: + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _0222DEBA +_0222DEB8: + b _0222E0E8 +_0222DEBA: + mov r0, #0xa + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DEC0: + add r0, r0, #1 + str r0, [r4, #0x4c] + add r0, r4, #0 + bl MOD70_0222D93C + b _0222E0E8 +_0222DECC: + mov r1, #0 + mov r0, #0x69 + add r2, r4, #0 + add r5, r1, #0 + lsl r0, r0, #4 +_0222DED6: + add r1, r1, #1 + strh r5, [r2, r0] + add r2, #0x10 + cmp r1, #0xd + blt _0222DED6 + ldr r0, _0222E0F8 ; =0x00002218 + ldr r0, [r4, r0] + bl FUN_0206B9AC + cmp r0, #0 + ble _0222DF12 + mov r0, #0x69 + lsl r0, r0, #4 + ldr r7, _0222E0F8 ; =0x00002218 + add r6, r4, r0 +_0222DEF4: + ldr r0, _0222E0F8 ; =0x00002218 + add r1, r5, #0 + ldr r0, [r4, r0] + bl FUN_0206B9B0 + add r1, r6, #0 + bl MOD70_0222E118 + ldr r0, [r4, r7] + add r6, #0x10 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222DEF4 +_0222DF12: + ldr r0, _0222E0FC ; =0x0000221C + mov r5, #0 + ldr r0, [r4, r0] + bl FUN_0206B9AC + cmp r0, #0 + ble _0222DF48 + mov r0, #0x69 + lsl r0, r0, #4 + ldr r7, _0222E0FC ; =0x0000221C + add r6, r4, r0 +_0222DF28: + ldr r0, _0222E0FC ; =0x0000221C + add r1, r5, #0 + ldr r0, [r4, r0] + bl FUN_0206B9B0 + add r1, r5, #6 + lsl r1, r1, #4 + add r1, r6, r1 + bl MOD70_0222E118 + ldr r0, [r4, r7] + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222DF28 +_0222DF48: + mov r0, #0x75 + mov r1, #1 + lsl r0, r0, #4 + strh r1, [r4, r0] + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DF58: + bl FUN_02031190 + bl FUN_0202DFA4 + ldr r2, _0222E100 ; =0x00002224 + ldr r1, [r4, r2] + add r2, r2, #4 + add r2, r4, r2 + bl MOD70_0222F4BC + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DF74: + ldr r1, [r4, #0x54] + cmp r1, #3 + bne _0222DFD4 + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DF80: + ldr r0, [r4, #4] + bl FUN_02029EF8 + bl MOD70_0222F528 + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222DF92: + ldr r1, [r4, #0x54] + cmp r1, #4 + bne _0222DFD4 + add r0, r0, #1 + str r0, [r4, #0x4c] + mov r0, #0x10 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, _0222E0F8 ; =0x00002218 + mov r1, #0 + ldr r0, [r4, r0] + add r2, r4, #0 + bl MOD70_0222DBEC + ldr r0, _0222E0FC ; =0x0000221C + mov r1, #6 + ldr r0, [r4, r0] + add r2, r4, #0 + bl MOD70_0222DBEC + mov r6, #0xce + mov r5, #0 + mov r7, #1 + lsl r6, r6, #2 +_0222DFC4: + ldr r0, [r4, r6] + add r1, r7, #0 + bl FUN_020200A0 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #2 + blt _0222DFC4 +_0222DFD4: + b _0222E0E8 +_0222DFD6: + mov r1, #0 + mov r0, #1 + add r2, r1, #0 + str r0, [sp] + mov r0, #8 + sub r2, #0x10 + mov r3, #0x1e + bl FUN_0200A208 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201797C + mov r0, #2 + mov r1, #1 + bl FUN_0201797C + mov r0, #3 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222E010: + mov r0, #1 + bl FUN_0200A344 + cmp r0, #0 + beq _0222E0E8 + ldr r0, _0222E0F8 ; =0x00002218 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_0206B9B0 + mov r2, #0x7f + ldr r3, _0222E104 ; =0x000020F0 + lsl r2, r2, #4 + add r1, r0, #0 + mov r0, #0 + add r2, r4, r2 + add r3, r4, r3 + bl MOD70_0222EBFC + ldr r1, _0222E108 ; =0x00002110 + ldr r2, _0222E0F8 ; =0x00002218 + str r0, [r4, r1] + str r4, [sp] + ldr r0, _0222E10C ; =0x00000438 + mov r1, #0 + ldr r2, [r4, r2] + add r0, r4, r0 + add r3, r1, #0 + bl MOD70_0222ECD4 + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + b _0222E0E8 +_0222E054: + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #8 + sub r2, #0x10 + mov r3, #0x17 + bl FUN_0200A208 + mov r0, #4 + mov r1, #1 + bl FUN_0201797C + mov r0, #5 + mov r1, #1 + bl FUN_0201797C + mov r0, #6 + mov r1, #1 + bl FUN_0201797C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r0, [r4, #0x4c] + add r0, r0, #1 + str r0, [r4, #0x4c] + add r0, r4, #0 + bl MOD70_02230BA8 + b _0222E0E8 +_0222E094: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _0222E0E8 + ldr r0, _0222E110 ; =0x000005A8 + mov r1, #0 + add r0, r4, r0 + bl FUN_0200D0E0 + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222E114 ; =0x00000588 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0xf + mov r2, #1 + bl MOD70_02230F40 + mov r0, #2 + bl FUN_020166B8 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0222E0E8: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0222E0F0: .word 0x00000445 +_0222E0F4: .word 0x0000369C +_0222E0F8: .word 0x00002218 +_0222E0FC: .word 0x0000221C +_0222E100: .word 0x00002224 +_0222E104: .word 0x000020F0 +_0222E108: .word 0x00002110 +_0222E10C: .word 0x00000438 +_0222E110: .word 0x000005A8 +_0222E114: .word 0x00000588 + thumb_func_end MOD70_0222DD60 + + thumb_func_start MOD70_0222E118 +MOD70_0222E118: ; 0x0222E118 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_020669D4 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0x9a + mov r2, #0 + bl FUN_020671BC + strb r0, [r4, #4] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4] + add r0, r5, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + strb r0, [r4, #6] + add r0, r5, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + strb r0, [r4, #5] + add r0, r5, #0 + mov r1, #0x6f + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, #8] + add r0, r5, #0 + mov r1, #0xa1 + mov r2, #0 + bl FUN_020671BC + str r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r6, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02066A20 + ldrh r0, [r4] + cmp r0, #0 + beq _0222E18E + mov r1, #0x1c + bl FUN_02068678 + strh r0, [r4, #0xa] +_0222E18E: + cmp r6, #0 + beq _0222E19E + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + add r0, r0, #1 + strh r0, [r4, #2] +_0222E19E: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_0222E118 + + thumb_func_start MOD70_0222E1A0 +MOD70_0222E1A0: ; 0x0222E1A0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + ldr r0, _0222E20C ; =0x0000221C + add r7, r1, #0 + ldr r0, [r5, r0] + bl FUN_0206B9B0 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #6 + bl _s32_div_f + add r1, r6, #0 + mov r2, #0x7f + mov r6, #0x32 + add r3, r0, #0 + lsl r2, r2, #4 + lsl r6, r6, #6 + mul r6, r3 + add r2, r5, r2 + add r2, r2, r6 + ldr r6, _0222E210 ; =0x000020F0 + lsl r3, r3, #4 + add r6, r5, r6 + mov r0, #1 + add r3, r6, r3 + bl MOD70_0222EBFC + ldr r1, _0222E214 ; =0x00002110 + ldr r2, _0222E20C ; =0x0000221C + str r0, [r5, r1] + str r5, [sp] + ldr r0, _0222E218 ; =0x00000438 + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + add r3, r7, #0 + bl MOD70_0222ECD4 + lsl r1, r4, #4 + add r2, r5, r1 + ldr r1, _0222E21C ; =0x00000694 + ldr r0, _0222E220 ; =0x0000040C + ldrb r1, [r2, r1] + ldr r0, [r5, r0] + add r1, r1, #5 + bl FUN_02020130 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E20C: .word 0x0000221C +_0222E210: .word 0x000020F0 +_0222E214: .word 0x00002110 +_0222E218: .word 0x00000438 +_0222E21C: .word 0x00000694 +_0222E220: .word 0x0000040C + thumb_func_end MOD70_0222E1A0 + + thumb_func_start MOD70_0222E224 +MOD70_0222E224: ; 0x0222E224 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r1, r5, #0 + add r1, #0x88 + ldr r1, [r1] + cmp r1, #0xc + beq _0222E2B8 + cmp r1, #6 + bge _0222E29E + ldr r0, _0222E2BC ; =0x00002218 + ldr r0, [r5, r0] + bl FUN_0206B9B0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #6 + bl _s32_div_f + mov r2, #0x7f + add r3, r0, #0 + lsl r2, r2, #4 + add r1, r4, #0 + add r4, r5, r2 + mov r2, #0x32 + lsl r2, r2, #6 + mul r2, r3 + add r2, r4, r2 + ldr r4, _0222E2C0 ; =0x000020F0 + lsl r3, r3, #4 + add r4, r5, r4 + mov r0, #0 + add r3, r4, r3 + bl MOD70_0222EBFC + ldr r1, _0222E2C4 ; =0x00002110 + add r3, r5, #0 + str r0, [r5, r1] + ldr r0, _0222E2C8 ; =0x00000438 + ldr r2, _0222E2BC ; =0x00002218 + str r5, [sp] + add r3, #0x88 + ldr r2, [r5, r2] + ldr r3, [r3] + add r0, r5, r0 + mov r1, #0 + bl MOD70_0222ECD4 + ldr r0, _0222E2C8 ; =0x00000438 + mov r1, #1 + add r0, r5, r0 + add r2, r5, #0 + bl MOD70_0222EF24 + ldr r0, _0222E2CC ; =0x0000040C + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_0222E29E: + bl MOD70_0222E1A0 + ldr r0, _0222E2C8 ; =0x00000438 + mov r1, #0 + add r0, r5, r0 + add r2, r5, #0 + bl MOD70_0222EF24 + ldr r0, _0222E2D0 ; =0x00000408 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020200A0 +_0222E2B8: + pop {r3, r4, r5, pc} + nop +_0222E2BC: .word 0x00002218 +_0222E2C0: .word 0x000020F0 +_0222E2C4: .word 0x00002110 +_0222E2C8: .word 0x00000438 +_0222E2CC: .word 0x0000040C +_0222E2D0: .word 0x00000408 + thumb_func_end MOD70_0222E224 + + thumb_func_start MOD70_0222E2D4 +MOD70_0222E2D4: ; 0x0222E2D4 + push {r3, r4, lr} + sub sp, #4 + ldr r1, _0222E374 ; =0x00002214 + add r4, r0, #0 + ldr r1, [r4, r1] + cmp r1, #0 + beq _0222E2EA + blx r1 + mov r1, #5 + lsl r1, r1, #6 + str r0, [r4, r1] +_0222E2EA: + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #3 + bhi _0222E314 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0222E300: ; jump table + .short _0222E314 - _0222E300 - 2 ; case 0 + .short _0222E314 - _0222E300 - 2 ; case 1 + .short _0222E308 - _0222E300 - 2 ; case 2 + .short _0222E30E - _0222E300 - 2 ; case 3 +_0222E308: + add sp, #4 + mov r0, #2 + pop {r3, r4, pc} +_0222E30E: + add sp, #4 + mov r0, #3 + pop {r3, r4, pc} +_0222E314: + mov r0, #0 + mov r2, #0xce + str r0, [sp] + mov r0, #0x53 + lsl r2, r2, #2 + mov r3, #0x69 + lsl r0, r0, #2 + add r1, r4, #0 + lsl r3, r3, #4 + ldr r2, [r4, r2] + add r0, r4, r0 + add r1, #0x88 + add r3, r4, r3 + bl MOD70_0222F3DC + cmp r0, #0 + beq _0222E33C + add r0, r4, #0 + bl MOD70_0222E224 +_0222E33C: + mov r0, #1 + mov r2, #0xcf + str r0, [sp] + mov r0, #0x15 + lsl r2, r2, #2 + mov r3, #0x69 + lsl r0, r0, #4 + add r1, r4, #0 + lsl r3, r3, #4 + ldr r2, [r4, r2] + add r0, r4, r0 + add r1, #0x8c + add r3, r4, r3 + bl MOD70_0222F3DC + add r0, r4, #0 + add r0, #0x90 + bl MOD70_0222F2D8 + add r0, r4, #0 + add r4, #0x88 + ldr r2, [r4] + mov r1, #0x17 + bl MOD70_0222F440 + mov r0, #1 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222E374: .word 0x00002214 + thumb_func_end MOD70_0222E2D4 + + thumb_func_start MOD70_0222E378 +MOD70_0222E378: ; 0x0222E378 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x2d + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0x2e + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0xb5 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009E04 + mov r0, #0xb9 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009E04 + mov r7, #0xb + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #6 +_0222E3AC: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0222E3AC + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD70_0222E378 + + thumb_func_start MOD70_0222E3D4 +MOD70_0222E3D4: ; 0x0222E3D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _0222E42C ; =0x00002218 + mov r4, #0 + ldr r0, [r6, r0] + bl FUN_0206B9AC + cmp r0, #0 + ble _0222E402 + ldr r7, _0222E42C ; =0x00002218 + add r5, r6, #0 +_0222E3EA: + mov r0, #0x79 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, [r6, r7] + add r5, r5, #4 + add r4, r4, #1 + bl FUN_0206B9AC + cmp r4, r0 + blt _0222E3EA +_0222E402: + ldr r0, _0222E430 ; =0x0000221C + mov r5, #0 + ldr r0, [r6, r0] + bl FUN_0206B9AC + cmp r0, #0 + ble _0222E42A + ldr r7, _0222E430 ; =0x0000221C + add r4, r6, #0 +_0222E414: + ldr r0, _0222E434 ; =0x000007A8 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, [r6, r7] + add r4, r4, #4 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blt _0222E414 +_0222E42A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222E42C: .word 0x00002218 +_0222E430: .word 0x0000221C +_0222E434: .word 0x000007A8 + thumb_func_end MOD70_0222E3D4 + + thumb_func_start MOD70_0222E438 +MOD70_0222E438: ; 0x0222E438 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200628C + ldr r1, [r4, #0x5c] + str r1, [r0, #0x28] + add r0, r4, #0 + bl MOD70_0222E3D4 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0222E4D4 ; =0x0000221C + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + bl MOD70_0222E378 + ldr r0, _0222E4D8 ; =0x00000438 + add r0, r4, r0 + bl MOD70_02230E88 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD70_0222E848 + mov r1, #0x5d + lsl r1, r1, #2 + ldr r1, [r4, r1] + mov r0, #0x1a + bl FUN_02016A8C + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0200AB18 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200AB18 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200AB18 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x1a + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0222E4D4: .word 0x0000221C +_0222E4D8: .word 0x00000438 + thumb_func_end MOD70_0222E438 + + thumb_func_start MOD70_0222E4DC +MOD70_0222E4DC: ; 0x0222E4DC + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0201AB60 + ldr r0, _0222E548 ; =0x00002110 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0222E52E + sub r4, r0, #1 + mov r0, #0x7f + mov r2, #0x32 + lsl r0, r0, #4 + lsl r2, r2, #6 + add r1, r4, #0 + add r0, r5, r0 + mul r1, r2 + add r0, r0, r1 + bl GXS_LoadOBJ + lsl r1, r4, #4 + mov r0, #0x20 + add r2, r5, r1 + str r0, [sp] + mov r0, #0x1a + add r3, r4, #2 + ldr r1, _0222E54C ; =0x000020F0 + str r0, [sp, #4] + ldrh r0, [r2, r1] + add r1, r1, #4 + ldrh r1, [r2, r1] + mov r2, #5 + lsl r3, r3, #5 + bl FUN_02006930 + ldr r0, _0222E548 ; =0x00002110 + mov r1, #0 + str r1, [r5, r0] +_0222E52E: + bl FUN_0201C30C + bl FUN_02009F80 + ldr r3, _0222E550 ; =0x027E0000 + ldr r1, _0222E554 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0222E548: .word 0x00002110 +_0222E54C: .word 0x000020F0 +_0222E550: .word 0x027E0000 +_0222E554: .word 0x00003FF8 + thumb_func_end MOD70_0222E4DC + + thumb_func_start MOD70_0222E558 +MOD70_0222E558: ; 0x0222E558 + push {r4, lr} + sub sp, #0x28 + ldr r4, _0222E574 ; =0x022311B0 + add r3, sp, #0 + mov r2, #5 +_0222E562: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0222E562 + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_0222E574: .word 0x022311B0 + thumb_func_end MOD70_0222E558 + + thumb_func_start MOD70_0222E578 +MOD70_0222E578: ; 0x0222E578 + push {r4, r5, r6, r7, lr} + sub sp, #0xd4 + ldr r4, _0222E748 ; =0x022310B4 + add r3, sp, #0xc4 + add r5, r0, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r4, _0222E74C ; =0x0223115C + add r3, sp, #0xa8 + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r4] + mov r1, #0 + str r0, [r3] + add r0, r5, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r5, #0 + mov r1, #0 + bl FUN_02018744 + ldr r4, _0222E750 ; =0x02231124 + add r3, sp, #0x8c + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r4] + mov r1, #1 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r5, #0 + mov r1, #1 + bl FUN_02018744 + ldr r4, _0222E754 ; =0x02231178 + add r3, sp, #0x70 + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r4] + mov r1, #2 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r5, #0 + mov r1, #2 + bl FUN_02018744 + ldr r4, _0222E758 ; =0x02231194 + add r3, sp, #0x54 + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r4] + mov r1, #3 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r4, _0222E75C ; =0x022310EC + add r3, sp, #0x38 + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + add r0, r5, #0 + mov r1, #4 + mov r3, #0 + bl FUN_02016C18 + add r0, r5, #0 + mov r1, #4 + bl FUN_02018744 + ldr r4, _0222E760 ; =0x02231108 + add r3, sp, #0x1c + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r4] + mov r1, #5 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r4, _0222E764 ; =0x02231140 + add r3, sp, #0 + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r4] + mov r1, #6 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x1a + bl FUN_02017F18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1a + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1a + bl FUN_02017F18 + mov r4, #0 + mov r6, #3 + add r7, r4, #0 +_0222E6BC: + lsl r1, r4, #0x18 + mov r2, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, r6, #0 + add r3, r7, #0 + bl FUN_020179E0 + add r1, r4, #4 + lsl r1, r1, #0x18 + mov r2, #0 + add r0, r5, #0 + lsr r1, r1, #0x18 + add r3, r2, #0 + bl FUN_020179E0 + add r1, r4, #4 + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #3 + mov r3, #0 + bl FUN_020179E0 + add r4, r4, #1 + cmp r4, #4 + blt _0222E6BC + 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 r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _0222E768 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + add sp, #0xd4 + pop {r4, r5, r6, r7, pc} + nop +_0222E748: .word 0x022310B4 +_0222E74C: .word 0x0223115C +_0222E750: .word 0x02231124 +_0222E754: .word 0x02231178 +_0222E758: .word 0x02231194 +_0222E75C: .word 0x022310EC +_0222E760: .word 0x02231108 +_0222E764: .word 0x02231140 +_0222E768: .word 0xFFFF1FFF + thumb_func_end MOD70_0222E578 + + thumb_func_start MOD70_0222E76C +MOD70_0222E76C: ; 0x0222E76C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + bl FUN_0200628C + add r4, r0, #0 + mov r2, #6 + ldr r0, _0222E830 ; =0x00000668 + str r4, [r5, #8] + mov r1, #4 + str r1, [r5, r0] + mov r3, #0 + str r3, [r5, #0x44] + sub r0, r0, #4 + str r3, [r5, r0] + mov r0, #0x5b + lsl r0, r0, #2 + str r2, [r5, r0] + add r1, r0, #4 + str r2, [r5, r1] + add r1, r5, #0 + add r1, #0x88 + str r3, [r1] + add r1, r5, #0 + add r1, #0x8c + str r2, [r1] + sub r0, #0x2c + str r3, [r5, r0] + str r3, [r5, #0x48] + ldr r0, _0222E834 ; =MOD70_0222F538 + ldr r1, _0222E838 ; =0x00002214 + str r3, [r5, #0x4c] + str r0, [r5, r1] + str r3, [r5, #0x60] + str r3, [r5, #0x64] + ldr r0, _0222E83C ; =0x00002110 + str r3, [r5, #0x5c] + str r3, [r5, r0] + ldr r0, _0222E840 ; =0x000036A0 + sub r6, r2, #7 + str r6, [r5, r0] + add r2, r0, #4 + str r6, [r5, r2] + add r2, r1, #0 + add r2, #0xac + str r3, [r5, r2] + add r2, r0, #0 + add r2, #0xc + str r3, [r5, r2] + add r0, #0x10 + str r3, [r5, r0] + add r0, r1, #4 + ldr r2, [r4, #8] + add r1, #0x10 + str r2, [r5, r0] + ldr r0, [r4, #0xc] + str r0, [r5, r1] + ldr r0, [r4, #0x10] + str r0, [r5, #4] + bl FUN_0206B8A4 + add r1, r0, #0 + mov r0, #0x1a + bl FUN_02016998 + ldr r1, _0222E844 ; =0x0000221C + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #6 + bl FUN_0206B8CC + bl FUN_0206B8A4 + add r2, r0, #0 + ldr r0, _0222E844 ; =0x0000221C + mov r1, #0xff + ldr r0, [r5, r0] + bl Call_FillMemWithValue + ldr r0, [r4, #4] + mov r1, #0x1a + bl FUN_020239A0 + mov r1, #0x63 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #8 + ldr r0, [r5, r1] + mov r1, #0x28 + bl FUN_0200A914 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r4, #0x14] + bl FUN_02033778 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222E830: .word 0x00000668 +_0222E834: .word MOD70_0222F538 +_0222E838: .word 0x00002214 +_0222E83C: .word 0x00002110 +_0222E840: .word 0x000036A0 +_0222E844: .word 0x0000221C + thumb_func_end MOD70_0222E76C + + thumb_func_start MOD70_0222E848 +MOD70_0222E848: ; 0x0222E848 + push {r4, lr} + add r4, r0, #0 + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD70_0222E848 + + thumb_func_start MOD70_0222E884 +MOD70_0222E884: ; 0x0222E884 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r2, #0 + mov r2, #1 + add r4, r3, #0 + str r2, [sp] + ldr r2, [sp, #0x20] + ldr r3, [sp, #0x24] + bl FUN_02006C98 + add r6, r0, #0 + beq _0222E8D6 + add r1, sp, #4 + bl FUN_020B0180 + cmp r0, #0 + beq _0222E8D0 + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _0222E8B2 + ldr r0, [sp, #4] + ldr r0, [r0, #8] + str r0, [sp, #0x1c] +_0222E8B2: + lsl r1, r4, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + bl FUN_0201886C + cmp r0, #0 + beq _0222E8D0 + ldr r2, [sp, #4] + lsl r1, r4, #0x18 + ldr r3, [sp, #0x1c] + add r0, r5, #0 + lsr r1, r1, #0x18 + add r2, #0xc + bl FUN_02017DFC +_0222E8D0: + add r0, r6, #0 + bl FUN_02016A18 +_0222E8D6: + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD70_0222E884 + + thumb_func_start MOD70_0222E8DC +MOD70_0222E8DC: ; 0x0222E8DC + push {r3, r4, lr} + sub sp, #4 + mov r1, #2 + add r4, r0, #0 + bl FUN_0201886C + add r2, r0, #0 + mov r0, #0 + mov r3, #6 + str r0, [sp] + add r0, r4, #0 + mov r1, #2 + lsl r3, r3, #8 + bl FUN_02017CE8 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD70_0222E8DC + + thumb_func_start MOD70_0222E900 +MOD70_0222E900: ; 0x0222E900 + push {r4, lr} + sub sp, #0x10 + mov r1, #0x5d + lsl r1, r1, #2 + ldr r4, [r0, r1] + sub r1, #0x54 + str r1, [sp] + mov r0, #0x1a + mov r1, #0 + str r0, [sp, #4] + mov r0, #0x36 + mov r2, #4 + add r3, r1, #0 + bl FUN_02006930 + mov r1, #0 + mov r0, #0x12 + lsl r0, r0, #4 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #0x36 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02006930 + mov r0, #0 + add r1, r0, #0 + bl FUN_02017FE4 + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x1a + bl FUN_02002EEC + mov r0, #0 + str r0, [sp] + mov r0, #9 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x1a + str r0, [sp, #0xc] + mov r0, #0x36 + add r2, r4, #0 + mov r3, #2 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x1a + str r0, [sp, #0xc] + mov r0, #0x36 + mov r1, #3 + add r2, r4, #0 + mov r3, #2 + bl MOD70_0222E884 + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x1a + str r0, [sp, #0xc] + mov r0, #0x36 + mov r1, #4 + add r2, r4, #0 + mov r3, #3 + bl FUN_020068C8 + mov r0, #0 + mov r1, #0x40 + mov r2, #0x1a + bl FUN_02002EEC + mov r0, #0 + mov r1, #0x60 + mov r2, #0x1a + bl FUN_02002ED0 + mov r0, #0 + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0xa + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x1a + str r0, [sp, #0xc] + mov r0, #0x36 + mov r1, #2 + add r2, r4, #0 + mov r3, #5 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x1a + mov r1, #5 + str r0, [sp, #0xc] + mov r0, #0x36 + add r2, r4, #0 + add r3, r1, #0 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x1a + mov r1, #6 + str r0, [sp, #0xc] + mov r0, #0x36 + add r2, r4, #0 + add r3, r1, #0 + bl FUN_020068C8 + mov r0, #4 + mov r1, #0x40 + mov r2, #0x1a + bl FUN_02002EEC + mov r0, #4 + mov r1, #0x60 + mov r2, #0x1a + bl FUN_02002ED0 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD70_0222E900 + + thumb_func_start MOD70_0222EA38 +MOD70_0222EA38: ; 0x0222EA38 + push {r4, lr} + sub sp, #0x10 + ldr r4, _0222EA64 ; =0x022310C4 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #0x14 + mov r1, #0x1a + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0222EA64: .word 0x022310C4 + thumb_func_end MOD70_0222EA38 + + thumb_func_start MOD70_0222EA68 +MOD70_0222EA68: ; 0x0222EA68 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7f + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x1a + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + mov r1, #0x66 + lsl r1, r1, #2 + mov r0, #0x2d + add r1, r5, r1 + mov r2, #0x1a + bl FUN_02008C9C + mov r1, #0x65 + lsl r1, r1, #2 + mov r7, #0xb + str r0, [r5, r1] + mov r6, #0 + add r4, r5, #0 + lsl r7, r7, #6 +_0222EAA6: + mov r0, #2 + add r1, r6, #0 + mov r2, #0x1a + bl FUN_02008DEC + str r0, [r4, r7] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0222EAA6 + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + mov r0, #0x1a + str r0, [sp, #8] + mov r0, #0xb + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #0x36 + mov r2, #7 + bl FUN_02008F34 + mov r1, #0x2d + lsl r1, r1, #4 + str r0, [r5, r1] + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #9 + str r0, [sp, #8] + mov r0, #0x1a + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x36 + add r3, r2, #0 + bl FUN_02008FEC + mov r1, #0xb5 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x1a + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x36 + mov r2, #8 + mov r3, #1 + bl FUN_020090AC + mov r1, #0xb6 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x1a + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x36 + mov r2, #9 + mov r3, #1 + bl FUN_020090AC + mov r1, #0xb7 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #1 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x1a + sub r1, #0x1c + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x36 + mov r2, #0xa + bl FUN_02008F34 + mov r1, #0x2e + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0x1a + mov r2, #0 + sub r1, #0x1c + str r0, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x36 + add r3, r2, #0 + bl FUN_02008FEC + mov r1, #0xb9 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #1 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x1a + sub r1, #0x1c + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x36 + mov r2, #0xb + bl FUN_020090AC + mov r1, #0xba + lsl r1, r1, #2 + str r0, [r5, r1] + mov r3, #1 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x1a + sub r1, #0x1c + str r0, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x36 + mov r2, #0xc + bl FUN_020090AC + mov r1, #0xbb + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x1c + ldr r0, [r5, r1] + bl FUN_02009A50 + mov r0, #0x2e + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02009A50 + mov r0, #0xb5 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009CF0 + mov r0, #0xb9 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009CF0 + bl FUN_0206B888 + mov r3, #0x80 + add r1, r0, #0 + str r3, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #0x13 + mov r2, #1 + add r3, #0xc0 + bl FUN_02006930 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD70_0222EA68 + + thumb_func_start MOD70_0222EBFC +MOD70_0222EBFC: ; 0x0222EBFC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r4, r2, #0 + add r0, r3, #0 + mov r2, #2 + add r6, r1, #0 + str r3, [sp, #0x20] + bl FUN_02068B68 + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + bl FUN_020671BC + add r7, r0, #0 + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + mov r3, #0 + str r3, [sp] + mov r1, #0xa + str r1, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r7, [sp, #0x10] + str r3, [sp, #0x14] + mov r1, #2 + str r1, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x20] + ldrh r0, [r0] + ldrh r1, [r1, #2] + mov r2, #0x1a + bl FUN_020124B4 + mov r1, #0x32 + add r0, r4, #0 + lsl r1, r1, #6 + bl DC_FlushRange + add r0, r5, #1 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD70_0222EBFC + + thumb_func_start MOD70_0222EC5C +MOD70_0222EC5C: ; 0x0222EC5C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + mov r0, #0x14 + mov r1, #0x1a + str r3, [sp, #8] + bl FUN_020219F4 + add r4, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0206B9B0 + mov r1, #0x76 + add r2, r4, #0 + bl FUN_020671BC + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + ldr r0, [sp, #0x20] + ldr r2, [sp, #8] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #0 + bl MOD70_02230EFC + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD70_0222EC5C + + thumb_func_start MOD70_0222ECA8 +MOD70_0222ECA8: ; 0x0222ECA8 + push {r4, lr} + ldrh r0, [r0] + add r4, r3, #0 + cmp r0, #0x1d + beq _0222ECB6 + cmp r0, #0x20 + bne _0222ECCE +_0222ECB6: + add r0, r1, #0 + add r1, r2, #0 + bl FUN_0206B9B0 + mov r1, #0x4d + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0222ECCE + mov r0, #2 + pop {r4, pc} +_0222ECCE: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD70_0222ECA8 + + thumb_func_start MOD70_0222ECD4 +MOD70_0222ECD4: ; 0x0222ECD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r6, r0, #0 + add r5, r1, #0 + add r0, r2, #0 + add r1, r3, #0 + str r2, [sp, #8] + str r3, [sp, #0xc] + ldr r4, [sp, #0x50] + bl FUN_0206B9B0 + mov r1, #2 + bl FUN_02068E14 + str r0, [sp, #0x10] + mov r0, #1 + lsl r0, r0, #0xa + add r7, r4, r0 + lsl r0, r5, #2 + str r0, [sp, #0x14] + ldr r0, [r7, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xc + add r3, r5, #0 + mul r3, r0 + ldr r1, _0222EF10 ; =0x022311D8 + ldr r0, [sp, #0x14] + ldr r2, _0222EF14 ; =0x022311DC + ldr r1, [r1, r3] + ldr r3, [r2, r3] + ldr r2, [sp, #0x10] + ldr r0, [r7, r0] + add r2, r2, r3 + add r2, #0xc0 + bl MOD70_02230B70 + cmp r5, #0 + bne _0222ED36 + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + lsl r1, r1, #4 + add r2, r4, r1 + ldr r1, _0222EF18 ; =0x0000069A + ldr r0, [r7, r0] + ldrh r1, [r2, r1] + bl FUN_02020100 +_0222ED36: + ldr r1, [sp, #0xc] + mov r0, #1 + lsl r1, r1, #4 + add r2, r4, r1 + ldr r1, _0222EF1C ; =0x00000694 + lsl r0, r0, #0xa + add r7, r4, r0 + add r0, r5, #2 + ldrb r1, [r2, r1] + lsl r0, r0, #2 + str r0, [sp, #0x18] + ldr r0, [r7, r0] + add r1, r1, #5 + bl FUN_02020130 + ldr r0, [sp, #0x18] + mov r1, #1 + ldr r0, [r7, r0] + bl FUN_020200A0 + mov r0, #6 + str r0, [sp] + add r0, r5, #0 + add r0, #0x1a + lsl r0, r0, #4 + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r6, r0 + mov r3, #9 + bl MOD70_0222EC5C + mov r7, #0x69 + mov r0, #6 + add r1, r5, #0 + mul r1, r0 + ldr r0, [sp, #0xc] + lsl r7, r7, #4 + add r0, r0, r1 + lsl r0, r0, #4 + str r0, [sp, #0x34] + add r1, r4, r7 + ldr r3, [sp, #0x34] + add r0, r1, r0 + add r3, r4, r3 + add r7, #8 + ldrh r3, [r3, r7] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + bl MOD70_0222ECA8 + ldr r1, _0222EF20 ; =0x00000695 + add r2, r4, r1 + ldr r1, [sp, #0x34] + str r2, [sp, #0x1c] + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0222EDAA + mov r0, #2 +_0222EDAA: + cmp r0, #0 + beq _0222EDCA + cmp r0, #1 + beq _0222EDF0 + cmp r0, #2 + bne _0222EE14 + add r0, r5, #4 + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #1 + lsl r0, r0, #0xa + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + b _0222EE14 +_0222EDCA: + mov r0, #1 + lsl r0, r0, #0xa + add r0, r4, r0 + str r0, [sp, #0x20] + add r0, r5, #4 + lsl r0, r0, #2 + ldr r1, [sp, #0x20] + str r0, [sp, #0x24] + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x24] + ldr r0, [r1, r0] + mov r1, #0x17 + bl FUN_02020130 + b _0222EE14 +_0222EDF0: + mov r0, #1 + lsl r0, r0, #0xa + add r0, r4, r0 + str r0, [sp, #0x28] + add r0, r5, #4 + lsl r0, r0, #2 + ldr r1, [sp, #0x28] + str r0, [sp, #0x2c] + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x2c] + ldr r0, [r1, r0] + mov r1, #0x16 + bl FUN_02020130 +_0222EE14: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x34] + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0222EE9A + mov r0, #0xa + mov r1, #0x1a + bl FUN_020219F4 + add r7, r0, #0 + add r0, r5, #0 + add r0, #0x1c + lsl r0, r0, #4 + str r0, [sp, #0x30] + add r0, r6, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x27 + add r2, r7, #0 + bl FUN_0200A8E0 + mov r0, #6 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x30] + add r1, r7, #0 + add r0, r6, r0 + mov r2, #9 + mov r3, #0xff + bl MOD70_02230EFC + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + bl FUN_0206B9B0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + mov r0, #1 + str r0, [sp] + add r0, r7, #0 + mov r2, #3 + mov r3, #0 + bl FUN_02021B04 + mov r0, #0x1e + str r0, [sp] + ldr r0, [sp, #0x30] + mov r3, #0 + add r0, r6, r0 + add r1, r7, #0 + mov r2, #9 + str r3, [sp, #4] + bl MOD70_02230EFC + add r0, r7, #0 + bl FUN_02021A20 + b _0222EEA6 +_0222EE9A: + add r0, r5, #0 + add r0, #0x1c + lsl r0, r0, #4 + add r0, r6, r0 + bl FUN_02019570 +_0222EEA6: + mov r0, #3 + str r0, [sp] + mov r3, #0 + add r0, r5, #0 + mov r1, #0x19 + add r0, #0x1e + lsl r0, r0, #4 + str r3, [sp, #4] + lsl r1, r1, #4 + ldr r1, [r4, r1] + add r0, r6, r0 + mov r2, #7 + bl MOD70_02230EFC + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + bl FUN_0206B9B0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + add r5, #0x20 + lsl r0, r0, #0x10 + lsl r4, r5, #4 + lsr r7, r0, #0x10 + add r0, r6, r4 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x14 + mov r1, #0x1a + bl FUN_020219F4 + add r1, r7, #0 + mov r2, #0x1a + add r5, r0, #0 + bl FUN_0206E768 + mov r0, #3 + str r0, [sp] + mov r3, #0 + add r0, r6, r4 + add r1, r5, #0 + mov r2, #9 + str r3, [sp, #4] + bl MOD70_02230EFC + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222EF10: .word 0x022311D8 +_0222EF14: .word 0x022311DC +_0222EF18: .word 0x0000069A +_0222EF1C: .word 0x00000694 +_0222EF20: .word 0x00000695 + thumb_func_end MOD70_0222ECD4 + + thumb_func_start MOD70_0222EF24 +MOD70_0222EF24: ; 0x0222EF24 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + lsl r0, r4, #2 + add r1, r6, r0 + mov r0, #1 + lsl r0, r0, #0xa + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #2 + lsl r0, r0, #2 + add r1, r6, r0 + mov r0, #1 + lsl r0, r0, #0xa + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #4 + lsl r0, r0, #2 + add r1, r6, r0 + mov r0, #1 + lsl r0, r0, #0xa + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #0 + add r0, #0x1a + lsl r0, r0, #4 + add r0, r5, r0 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x1c + lsl r0, r0, #4 + add r0, r5, r0 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x1e + lsl r0, r0, #4 + add r0, r5, r0 + bl FUN_02019570 + add r4, #0x20 + lsl r0, r4, #4 + add r0, r5, r0 + bl FUN_02019570 + pop {r4, r5, r6, pc} + thumb_func_end MOD70_0222EF24 + + thumb_func_start MOD70_0222EF90 +MOD70_0222EF90: ; 0x0222EF90 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + mov r1, #0 + add r5, r0, #0 + str r1, [sp] + sub r0, r1, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #0xb + str r1, [sp, #0xc] + mov r0, #2 + lsl r2, r2, #6 + str r0, [sp, #0x10] + ldr r0, [r5, r2] + add r3, r1, #0 + str r0, [sp, #0x14] + add r0, r2, #4 + ldr r0, [r5, r0] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #8 + ldr r0, [r5, r0] + str r0, [sp, #0x1c] + add r0, r2, #0 + add r0, #0xc + ldr r0, [r5, r0] + add r2, #0x30 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r5, r2 + add r2, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + mov r1, #1 + mov r3, #0xb + str r1, [sp] + sub r0, r1, #2 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r3, r3, #6 + ldr r2, [r5, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r5, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r5, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r5, r2] + add r3, #0x54 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r5, r3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02008AA4 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + str r0, [sp, #0x2c] + mov r0, #0x2f + lsl r0, r0, #4 + add r0, r5, r0 + str r0, [sp, #0x30] + mov r0, #6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r1, #5 + mov r7, #0 + str r1, [sp, #0x34] + str r7, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r7, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #0x1a + ldr r6, _0222F218 ; =0x02231220 + str r7, [sp, #0x50] + str r0, [sp, #0x58] + add r4, r5, #0 +_0222F04C: + ldr r0, [r6] + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldr r0, [r6, #4] + lsl r0, r0, #0xc + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #0xce + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + add r0, r4, #0 + mov r1, #0xce + add r0, #0x88 + lsl r1, r1, #2 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, r7, #0 + bl MOD70_0222F350 + mov r0, #0xce + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x64 + bl FUN_02020310 + mov r0, #0xce + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add r7, r7, #1 + add r6, #8 + add r4, r4, #4 + cmp r7, #2 + blt _0222F04C + ldr r6, _0222F218 ; =0x02231220 + mov r7, #0 + add r4, r5, #0 +_0222F0A8: + ldr r0, [r6] + add r0, #0x10 + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldr r0, [r6, #4] + sub r0, r0, #6 + lsl r0, r0, #0xc + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #0x37 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, r7, #5 + bl FUN_02020130 + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_02020310 + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add r7, r7, #1 + add r6, #8 + add r4, r4, #4 + cmp r7, #0xc + blt _0222F0A8 + ldr r6, _0222F218 ; =0x02231220 + mov r7, #0 + add r4, r5, #0 +_0222F102: + ldr r0, [r6] + add r0, #0x24 + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldr r0, [r6, #4] + add r0, #0x10 + lsl r0, r0, #0xc + str r0, [sp, #0x38] + mov r0, #0 + str r0, [sp, #0x50] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #0x3a + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #3 + bl FUN_02020310 + mov r0, #0x3a + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add r7, r7, #1 + add r6, #8 + add r4, r4, #4 + cmp r7, #0xc + blt _0222F102 + ldr r6, _0222F218 ; =0x02231220 + mov r7, #0 + add r4, r5, #0 +_0222F148: + ldr r0, [r6] + add r0, #0x2d + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldr r0, [r6, #4] + add r0, #0x10 + lsl r0, r0, #0xc + str r0, [sp, #0x38] + mov r0, #0 + str r0, [sp, #0x50] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #0x3d + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r0, [r4, r0] + mov r1, #3 + bl FUN_02020310 + mov r0, #0x3d + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add r7, r7, #1 + add r6, #8 + add r4, r4, #4 + cmp r7, #0xc + blt _0222F148 + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x34] + mov r0, #0x42 + lsl r0, r0, #0xc + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + ldr r1, _0222F21C ; =0x00000418 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #1 + bl FUN_020200BC + ldr r0, _0222F21C ; =0x00000418 + mov r1, #0x14 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _0222F21C ; =0x00000418 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_020200A0 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r4, _0222F220 ; =0x022311D8 + mov r6, #0 + add r7, r5, r0 +_0222F1C4: + ldr r0, [r4] + str r7, [sp, #0x30] + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldr r0, [r4, #4] + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0x38] + mov r0, #2 + str r0, [sp, #0x54] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #1 + lsl r1, r1, #0xa + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #1 + lsl r0, r0, #0xa + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200BC + mov r0, #1 + lsl r0, r0, #0xa + ldr r0, [r5, r0] + ldr r1, [r4, #8] + bl FUN_02020130 + add r6, r6, #1 + add r4, #0xc + add r5, r5, #4 + cmp r6, #6 + blt _0222F1C4 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0222F218: .word 0x02231220 +_0222F21C: .word 0x00000418 +_0222F220: .word 0x022311D8 + thumb_func_end MOD70_0222EF90 + + thumb_func_start MOD70_0222F224 +MOD70_0222F224: ; 0x0222F224 + push {r3, r4} + ldr r3, _0222F260 ; =0x021C48B8 + mov r1, #0 + ldr r3, [r3, #0x4c] + mov r4, #0x40 + add r2, r1, #0 + tst r4, r3 + beq _0222F238 + mov r2, #1 + add r1, r1, #1 +_0222F238: + mov r4, #0x80 + tst r4, r3 + beq _0222F242 + mov r2, #2 + add r1, r1, #1 +_0222F242: + mov r4, #0x20 + tst r4, r3 + beq _0222F24C + mov r2, #3 + add r1, r1, #1 +_0222F24C: + mov r4, #0x10 + tst r3, r4 + beq _0222F256 + mov r2, #4 + add r1, r1, #1 +_0222F256: + cmp r1, #0 + beq _0222F25C + str r2, [r0] +_0222F25C: + pop {r3, r4} + bx lr + .align 2, 0 +_0222F260: .word 0x021C48B8 + thumb_func_end MOD70_0222F224 + + thumb_func_start MOD70_0222F264 +MOD70_0222F264: ; 0x0222F264 + push {r4, r5, r6, lr} + add r4, r0, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #6 + bge _0222F2CA + ldr r0, _0222F2CC ; =0x022310AC + bl FUN_02020988 + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0222F2CA + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + lsl r0, r0, #4 + add r2, r4, r0 + ldr r0, _0222F2D0 ; =0x00000695 + ldrb r1, [r2, r0] + cmp r1, #0 + bne _0222F2CA + sub r0, r0, #5 + ldrh r0, [r2, r0] + ldr r1, _0222F2D4 ; =0x000001B9 + cmp r0, r1 + bne _0222F2AE + ldr r0, [r4, #4] + bl FUN_02029EF8 + mov r1, #0 + mov r2, #0x64 + add r3, r1, #0 + bl FUN_02005E90 + b _0222F2B2 +_0222F2AE: + bl FUN_02005578 +_0222F2B2: + mov r0, #1 + lsl r0, r0, #0xa + add r4, r4, r0 + lsl r6, r5, #2 + ldr r0, [r4, r6] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4, r6] + add r1, r5, #4 + bl FUN_02020130 +_0222F2CA: + pop {r4, r5, r6, pc} + .align 2, 0 +_0222F2CC: .word 0x022310AC +_0222F2D0: .word 0x00000695 +_0222F2D4: .word 0x000001B9 + thumb_func_end MOD70_0222F264 + + thumb_func_start MOD70_0222F2D8 +MOD70_0222F2D8: ; 0x0222F2D8 + push {r3, lr} + ldrh r1, [r0] + add r1, #0x14 + strh r1, [r0] + ldrh r2, [r0] + mov r1, #0x5a + lsl r1, r1, #2 + cmp r2, r1 + bls _0222F2EE + mov r1, #0 + strh r1, [r0] +_0222F2EE: + ldrh r0, [r0] + bl FUN_0201B970 + mov r1, #0xa + mul r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + add r0, #0xf + lsl r1, r0, #5 + mov r0, #0x1d + orr r1, r0 + add r0, sp, #0 + strh r1, [r0] + add r0, sp, #0 + mov r1, #0x3a + mov r2, #2 + bl GX_LoadOBJPltt + pop {r3, pc} + thumb_func_end MOD70_0222F2D8 + + thumb_func_start MOD70_0222F318 +MOD70_0222F318: ; 0x0222F318 + push {r3, r4, r5, r6} + mov r5, #0x18 + mul r5, r0 + ldr r6, _0222F34C ; =0x02231288 + mov r0, #6 + mov r4, #0 + add r5, r6, r5 + mul r0, r1 + add r5, r5, r0 + add r3, r4, #0 + add r1, r5, #0 +_0222F32E: + ldrb r0, [r1] + lsl r0, r0, #4 + ldrh r0, [r2, r0] + cmp r0, #0 + beq _0222F33C + ldrb r4, [r5, r3] + b _0222F344 +_0222F33C: + add r3, r3, #1 + add r1, r1, #1 + cmp r3, #6 + blt _0222F32E +_0222F344: + add r0, r4, #0 + pop {r3, r4, r5, r6} + bx lr + nop +_0222F34C: .word 0x02231288 + thumb_func_end MOD70_0222F318 + + thumb_func_start MOD70_0222F350 +MOD70_0222F350: ; 0x0222F350 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + cmp r5, #0xd + blt _0222F362 + bl ErrorHandling +_0222F362: + ldr r1, _0222F3C8 ; =0x02231220 + lsl r0, r5, #3 + ldr r1, [r1, r0] + lsl r1, r1, #0xc + str r1, [sp] + ldr r1, _0222F3CC ; =0x02231224 + ldr r0, [r1, r0] + add r1, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + cmp r5, #0xc + bne _0222F394 + add r0, r6, #0 + bl FUN_02020044 + mov r1, #0xc + add r2, r4, #0 + mul r2, r1 + ldr r1, _0222F3D0 ; =0x022310DC + add r0, r6, #0 + ldr r1, [r1, r2] + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0222F394: + add r0, r6, #0 + bl FUN_02020044 + cmp r5, #6 + bge _0222F3B2 + mov r1, #0xc + add r2, r4, #0 + mul r2, r1 + ldr r1, _0222F3D4 ; =0x022310D4 + add r0, r6, #0 + ldr r1, [r1, r2] + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0222F3B2: + mov r1, #0xc + add r2, r4, #0 + mul r2, r1 + ldr r1, _0222F3D8 ; =0x022310D8 + add r0, r6, #0 + ldr r1, [r1, r2] + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0222F3C8: .word 0x02231220 +_0222F3CC: .word 0x02231224 +_0222F3D0: .word 0x022310DC +_0222F3D4: .word 0x022310D4 +_0222F3D8: .word 0x022310D8 + thumb_func_end MOD70_0222F350 + + thumb_func_start MOD70_0222F3DC +MOD70_0222F3DC: ; 0x0222F3DC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r2, [sp] + ldr r0, [r5] + add r4, r1, #0 + ldr r2, [sp, #0x18] + sub r1, r0, #1 + mov r7, #0 + cmp r2, #0 + bne _0222F41C + cmp r0, #0 + beq _0222F416 + ldr r0, [r4] + add r2, r3, #0 + bl MOD70_0222F318 + ldr r1, [sp] + ldr r2, [sp, #0x18] + add r6, r0, #0 + bl MOD70_0222F350 + ldr r0, [r4] + cmp r0, r6 + beq _0222F416 + ldr r0, _0222F428 ; =0x000005DC + bl FUN_020054C8 + str r6, [r4] + mov r7, #1 +_0222F416: + mov r0, #0 + str r0, [r5] + b _0222F424 +_0222F41C: + ldr r0, [r4] + ldr r1, [sp] + bl MOD70_0222F350 +_0222F424: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222F428: .word 0x000005DC + thumb_func_end MOD70_0222F3DC + + thumb_func_start MOD70_0222F42C +MOD70_0222F42C: ; 0x0222F42C + push {r3, lr} + add r0, sp, #0 + strb r2, [r0] + add r0, r1, #0 + add r1, sp, #0 + mov r2, #1 + bl FUN_02030ADC + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD70_0222F42C + + thumb_func_start MOD70_0222F440 +MOD70_0222F440: ; 0x0222F440 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0222F470 ; =0x000036A0 + add r4, r1, #0 + ldr r1, [r5, r0] + add r6, r2, #0 + cmp r6, r1 + bne _0222F458 + add r0, r0, #4 + ldr r0, [r5, r0] + cmp r4, r0 + beq _0222F46C +_0222F458: + bl FUN_02031190 + add r1, r4, #0 + add r2, r6, #0 + bl MOD70_0222F42C + ldr r0, _0222F470 ; =0x000036A0 + str r6, [r5, r0] + add r0, r0, #4 + str r4, [r5, r0] +_0222F46C: + pop {r4, r5, r6, pc} + nop +_0222F470: .word 0x000036A0 + thumb_func_end MOD70_0222F440 + + thumb_func_start MOD70_0222F474 +MOD70_0222F474: ; 0x0222F474 + mov r2, #0x59 + lsl r2, r2, #4 + mul r2, r1 + add r0, r0, r2 + bx lr + .align 2, 0 + thumb_func_end MOD70_0222F474 + + thumb_func_start MOD70_0222F480 +MOD70_0222F480: ; 0x0222F480 + push {r3, r4, r5, lr} + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r1, #0 + add r4, r2, #0 + bl FUN_02030E7C + cmp r0, #0 + beq _0222F4A6 + add r0, r5, #0 + add r1, r4, #0 + bl MOD70_0222F474 + mov r2, #0x59 + add r1, r0, #0 + mov r0, #0x16 + lsl r2, r2, #4 + bl FUN_02030A78 +_0222F4A6: + pop {r3, r4, r5, pc} + thumb_func_end MOD70_0222F480 + + thumb_func_start MOD70_0222F4A8 +MOD70_0222F4A8: ; 0x0222F4A8 + push {r3, lr} + bl FUN_0202A918 + add r1, r0, #0 + mov r0, #0x20 + mov r2, #0xe + bl FUN_02030ADC + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD70_0222F4A8 + + thumb_func_start MOD70_0222F4BC +MOD70_0222F4BC: ; 0x0222F4BC + push {r4, r5, r6, lr} + add r4, r2, #0 + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0202398C + add r1, r0, #0 + add r0, r4, #0 + bl StringCopy + add r0, r6, #0 + bl FUN_020239BC + str r0, [r4, #0x10] + add r0, r6, #0 + bl FUN_02023A70 + strb r0, [r4, #0x14] + add r0, r6, #0 + bl FUN_02023A68 + strb r0, [r4, #0x15] + add r0, r6, #0 + bl FUN_020239CC + strb r0, [r4, #0x16] + mov r0, #0 + add r1, r4, #0 +_0222F4F4: + ldr r2, [r5, #0x10] + str r2, [r1, #0x18] + ldrb r3, [r5, #0x15] + add r2, r4, r0 + add r2, #0x58 + strb r3, [r2] + add r2, r4, r0 + ldrb r3, [r5, #0x14] + add r2, #0x68 + add r1, r1, #4 + strb r3, [r2] + add r2, r4, r0 + ldrb r3, [r5, #0x16] + add r2, #0x78 + add r0, r0, #1 + add r5, #0x88 + strb r3, [r2] + cmp r0, #0x10 + blt _0222F4F4 + mov r0, #0x1c + add r1, r4, #0 + mov r2, #0x88 + bl FUN_02030A78 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD70_0222F4BC + + thumb_func_start MOD70_0222F528 +MOD70_0222F528: ; 0x0222F528 + ldr r3, _0222F534 ; =0x02030A79 + mov r2, #0xfa + add r1, r0, #0 + mov r0, #0x1d + lsl r2, r2, #2 + bx r3 + .align 2, 0 +_0222F534: .word 0x02030A79 + thumb_func_end MOD70_0222F528 + + thumb_func_start MOD70_0222F538 +MOD70_0222F538: ; 0x0222F538 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x53 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD70_0222F224 + ldr r0, _0222F588 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0222F584 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0222F584 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r0, #0xc + bne _0222F56C + ldr r1, _0222F58C ; =MOD70_0222F674 + ldr r0, _0222F590 ; =0x00002214 + str r1, [r4, r0] + b _0222F584 +_0222F56C: + cmp r0, #6 + bge _0222F578 + ldr r1, _0222F594 ; =MOD70_0222FDD8 + ldr r0, _0222F590 ; =0x00002214 + str r1, [r4, r0] + b _0222F584 +_0222F578: + blt _0222F584 + cmp r0, #0xc + bge _0222F584 + ldr r1, _0222F598 ; =MOD70_02230810 + ldr r0, _0222F590 ; =0x00002214 + str r1, [r4, r0] +_0222F584: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0222F588: .word 0x021C48B8 +_0222F58C: .word MOD70_0222F674 +_0222F590: .word 0x00002214 +_0222F594: .word MOD70_0222FDD8 +_0222F598: .word MOD70_02230810 + thumb_func_end MOD70_0222F538 + + thumb_func_start MOD70_0222F59C +MOD70_0222F59C: ; 0x0222F59C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bne _0222F5CC + ldr r0, _0222F660 ; =0x00002218 + ldr r0, [r5, r0] + str r0, [r5, #0xc] + ldr r0, [r5, #8] + ldr r0, [r0, #8] + bl FUN_0206B9AC + strb r0, [r5, #0x1f] + mov r0, #0 + str r0, [r5, #0x34] + bl FUN_02031190 + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + add r0, #0xc + bl FUN_0207C2A4 + b _0222F606 +_0222F5CC: + ldr r0, _0222F664 ; =0x0000221C + ldr r1, [r5, r0] + str r1, [r5, #0xc] + ldr r0, [r5, r0] + bl FUN_0206B9AC + strb r0, [r5, #0x1f] + bl FUN_02031190 + mov r2, #1 + ldr r1, _0222F668 ; =0x00002E14 + eor r2, r0 + mov r0, #0xfb + lsl r0, r0, #2 + add r1, r5, r1 + mul r0, r2 + add r0, r1, r0 + str r0, [r5, #0x34] + bl FUN_02031190 + mov r1, #1 + eor r0, r1 + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + add r0, #0xc + bl FUN_0207C2A4 +_0222F606: + mov r0, #1 + strb r0, [r5, #0x1d] + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #6 + bl _s32_div_f + add r0, r5, #0 + add r0, #0x20 + strb r1, [r0] + mov r0, #1 + strb r0, [r5, #0x1e] + mov r0, #0 + strh r0, [r5, #0x24] + ldr r0, [r5, #8] + ldr r0, [r0, #0x10] + bl FUN_02079C70 + str r0, [r5, #0x38] + ldr r0, [r5, #8] + ldr r0, [r0, #0x30] + str r0, [r5, #0x28] + ldr r0, [r5, #8] + ldr r0, [r0, #0x18] + str r0, [r5, #0x10] + ldr r0, [r5, #8] + ldr r0, [r0, #0x10] + bl FUN_0202A918 + str r0, [r5, #0x2c] + add r0, r5, #0 + ldr r1, _0222F66C ; =0x022313C0 + add r0, #0xc + bl FUN_0207B000 + add r1, r5, #0 + ldr r0, _0222F670 ; =0x020FA6E8 + add r1, #0xc + mov r2, #0x1a + bl FUN_02006234 + str r0, [r5, #0x40] + str r4, [r5, #0x3c] + pop {r3, r4, r5, pc} + .align 2, 0 +_0222F660: .word 0x00002218 +_0222F664: .word 0x0000221C +_0222F668: .word 0x00002E14 +_0222F66C: .word 0x022313C0 +_0222F670: .word 0x020FA6E8 + thumb_func_end MOD70_0222F59C + + thumb_func_start MOD70_0222F674 +MOD70_0222F674: ; 0x0222F674 + push {r4, lr} + sub sp, #0x10 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222F6BC ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x19 + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _0222F6C0 ; =MOD70_0222F6C8 + ldr r0, _0222F6C4 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + nop +_0222F6BC: .word 0x000005A8 +_0222F6C0: .word MOD70_0222F6C8 +_0222F6C4: .word 0x00002214 + thumb_func_end MOD70_0222F674 + + thumb_func_start MOD70_0222F6C8 +MOD70_0222F6C8: ; 0x0222F6C8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x5d + ldr r2, _0222F778 ; =0x00000658 + lsl r0, r0, #2 + add r1, r4, r2 + add r2, #0xc + ldr r0, [r4, r0] + add r2, r4, r2 + bl MOD70_02230FB0 + cmp r0, #0 + beq _0222F6EE + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0222F738 + b _0222F772 +_0222F6EE: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222F77C ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x1c + mov r2, #1 + bl MOD70_02230F40 + add r0, r4, #0 + mov r1, #0x18 + mov r2, #1 + bl MOD70_0222F440 + ldr r1, _0222F780 ; =MOD70_0222FD9C + ldr r0, _0222F784 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0 + str r0, [r4, #0x5c] + b _0222F772 +_0222F738: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222F788 ; =0x00000588 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0xf + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _0222F78C ; =MOD70_0222F538 + ldr r0, _0222F784 ; =0x00002214 + str r1, [r4, r0] +_0222F772: + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0222F778: .word 0x00000658 +_0222F77C: .word 0x000005A8 +_0222F780: .word MOD70_0222FD9C +_0222F784: .word 0x00002214 +_0222F788: .word 0x00000588 +_0222F78C: .word MOD70_0222F538 + thumb_func_end MOD70_0222F6C8 + + thumb_func_start MOD70_0222F790 +MOD70_0222F790: ; 0x0222F790 + push {r4, lr} + sub sp, #0x10 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222F7D8 ; =0x000005A8 + ldr r1, [r4, #0x68] + ldr r3, [r4, r3] + add r0, r4, r0 + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _0222F7DC ; =MOD70_0222F7E4 + ldr r0, _0222F7E0 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + nop +_0222F7D8: .word 0x000005A8 +_0222F7DC: .word MOD70_0222F7E4 +_0222F7E0: .word 0x00002214 + thumb_func_end MOD70_0222F790 + + thumb_func_start MOD70_0222F7E4 +MOD70_0222F7E4: ; 0x0222F7E4 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, _0222F83C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0222F834 + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222F840 ; =0x00000588 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0xf + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _0222F844 ; =MOD70_0222F538 + ldr r0, _0222F848 ; =0x00002214 + str r1, [r4, r0] + add r0, r4, #0 + bl MOD70_02230390 +_0222F834: + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + nop +_0222F83C: .word 0x021C48B8 +_0222F840: .word 0x00000588 +_0222F844: .word MOD70_0222F538 +_0222F848: .word 0x00002214 + thumb_func_end MOD70_0222F7E4 + + thumb_func_start MOD70_0222F84C +MOD70_0222F84C: ; 0x0222F84C + push {r3, r4, lr} + sub sp, #4 + ldr r4, _0222F86C ; =0x00003674 + add r3, r0, #0 + ldr r0, [r3, r4] + add r4, r4, #4 + str r0, [sp] + ldr r0, _0222F870 ; =0x000005A8 + mov r2, #1 + add r0, r3, r0 + ldr r3, [r3, r4] + bl MOD70_02230F40 + add sp, #4 + pop {r3, r4, pc} + nop +_0222F86C: .word 0x00003674 +_0222F870: .word 0x000005A8 + thumb_func_end MOD70_0222F84C + + thumb_func_start MOD70_0222F874 +MOD70_0222F874: ; 0x0222F874 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5d + ldr r2, _0222F8B4 ; =0x00000658 + lsl r0, r0, #2 + add r1, r4, r2 + add r2, #0xc + ldr r0, [r4, r0] + add r2, r4, r2 + bl MOD70_02230FB0 + cmp r0, #0 + beq _0222F898 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0222F8A0 + b _0222F8AE +_0222F898: + ldr r1, _0222F8B8 ; =MOD70_0222FBF0 + ldr r0, _0222F8BC ; =0x00002214 + str r1, [r4, r0] + b _0222F8AE +_0222F8A0: + add r0, r4, #0 + mov r1, #0x22 + bl MOD70_0222F84C + ldr r1, _0222F8C0 ; =MOD70_0222FADC + ldr r0, _0222F8BC ; =0x00002214 + str r1, [r4, r0] +_0222F8AE: + mov r0, #0 + pop {r4, pc} + nop +_0222F8B4: .word 0x00000658 +_0222F8B8: .word MOD70_0222FBF0 +_0222F8BC: .word 0x00002214 +_0222F8C0: .word MOD70_0222FADC + thumb_func_end MOD70_0222F874 + + thumb_func_start MOD70_0222F8C4 +MOD70_0222F8C4: ; 0x0222F8C4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x5d + ldr r2, _0222F938 ; =0x00000658 + lsl r0, r0, #2 + add r1, r4, r2 + add r2, #0xc + ldr r0, [r4, r0] + add r2, r4, r2 + bl MOD70_02230FB0 + cmp r0, #0 + beq _0222F8EA + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0222F910 + b _0222F932 +_0222F8EA: + ldr r1, _0222F93C ; =0x00003694 + ldr r0, [r4, r1] + sub r1, #0x24 + ldr r1, [r4, r1] + bl FUN_02028468 + mov r0, #0 + str r0, [sp] + ldr r1, _0222F940 ; =0x0000366C + ldr r0, [r4, #4] + ldr r1, [r4, r1] + mov r2, #0x1f + mov r3, #0x1a + bl FUN_02033A70 + ldr r1, _0222F944 ; =MOD70_0222FBF0 + ldr r0, _0222F948 ; =0x00002214 + str r1, [r4, r0] + b _0222F932 +_0222F910: + ldr r0, _0222F940 ; =0x0000366C + ldr r0, [r4, r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, _0222F94C ; =0x00003674 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_0200ABC0 + add r0, r4, #0 + mov r1, #0x23 + bl MOD70_0222F84C + ldr r1, _0222F950 ; =MOD70_0222F874 + ldr r0, _0222F948 ; =0x00002214 + str r1, [r4, r0] +_0222F932: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222F938: .word 0x00000658 +_0222F93C: .word 0x00003694 +_0222F940: .word 0x0000366C +_0222F944: .word MOD70_0222FBF0 +_0222F948: .word 0x00002214 +_0222F94C: .word 0x00003674 +_0222F950: .word MOD70_0222F874 + thumb_func_end MOD70_0222F8C4 + + thumb_func_start MOD70_0222F954 +MOD70_0222F954: ; 0x0222F954 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0xda + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl FUN_02001204 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0222F976 + add r0, r0, #1 + cmp r4, r0 + bne _0222F9A0 + mov r0, #0 + pop {r4, r5, r6, pc} +_0222F976: + ldr r0, _0222FA10 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0222FA14 ; =0x0000366C + ldr r0, [r5, r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, _0222FA18 ; =0x00003674 + mov r1, #0 + ldr r0, [r5, r0] + bl FUN_0200ABC0 + add r0, r5, #0 + mov r1, #0x23 + bl MOD70_0222F84C + ldr r1, _0222FA1C ; =MOD70_0222F874 + ldr r0, _0222FA20 ; =0x00002214 + str r1, [r5, r0] + b _0222F9E4 +_0222F9A0: + ldr r0, _0222FA10 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0222FA24 ; =0x00003670 + str r4, [r5, r0] + mov r0, #0x1a + bl FUN_02023928 + add r6, r0, #0 + ldr r0, _0222FA28 ; =0x00003694 + add r1, r4, #0 + ldr r0, [r5, r0] + bl FUN_020283A4 + add r1, r0, #0 + add r0, r6, #0 + bl FUN_0202395C + ldr r0, _0222FA18 ; =0x00003674 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r6, #0 + bl FUN_0200ABC0 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0x24 + bl MOD70_0222F84C + ldr r1, _0222FA2C ; =MOD70_0222F8C4 + ldr r0, _0222FA20 ; =0x00002214 + str r1, [r5, r0] +_0222F9E4: + ldr r0, _0222FA30 ; =0x00003684 + mov r1, #0 + add r0, r5, r0 + bl FUN_0200CCF8 + ldr r0, _0222FA30 ; =0x00003684 + add r0, r5, r0 + bl FUN_02019178 + mov r0, #0xda + lsl r0, r0, #6 + mov r1, #0 + ldr r0, [r5, r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, _0222FA34 ; =0x0000367C + ldr r0, [r5, r0] + bl FUN_02012870 + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0222FA10: .word 0x000005DC +_0222FA14: .word 0x0000366C +_0222FA18: .word 0x00003674 +_0222FA1C: .word MOD70_0222F874 +_0222FA20: .word 0x00002214 +_0222FA24: .word 0x00003670 +_0222FA28: .word 0x00003694 +_0222FA2C: .word MOD70_0222F8C4 +_0222FA30: .word 0x00003684 +_0222FA34: .word 0x0000367C + thumb_func_end MOD70_0222F954 + + thumb_func_start MOD70_0222FA38 +MOD70_0222FA38: ; 0x0222FA38 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _0222FACC ; =0x00003694 + ldr r0, [r5, r0] + bl FUN_02028448 + str r0, [sp] + add r0, r0, #1 + mov r1, #0x1a + bl FUN_02012838 + ldr r1, _0222FAD0 ; =0x0000367C + str r0, [r5, r1] + mov r0, #0x64 + mov r1, #0x1a + bl FUN_020219F4 + ldr r7, _0222FACC ; =0x00003694 + add r6, r0, #0 + mov r4, #0 +_0222FA60: + ldr r0, [r5, r7] + add r1, r4, #0 + bl FUN_0202842C + cmp r0, #0 + beq _0222FA8A + ldr r0, _0222FACC ; =0x00003694 + add r1, r4, #0 + ldr r0, [r5, r0] + bl FUN_020283A4 + add r1, r0, #0 + add r0, r6, #0 + bl FUN_02021E28 + ldr r0, _0222FAD0 ; =0x0000367C + add r1, r6, #0 + ldr r0, [r5, r0] + add r2, r4, #0 + bl FUN_020128A0 +_0222FA8A: + add r4, r4, #1 + cmp r4, #0x20 + blt _0222FA60 + ldr r1, _0222FAD0 ; =0x0000367C + mov r2, #0xb + ldr r0, [r5, r1] + sub r1, r1, #4 + add r3, r2, #0 + ldr r1, [r5, r1] + sub r3, #0xd + bl FUN_02012880 + add r0, r6, #0 + bl FUN_02021A20 + ldr r2, _0222FAD0 ; =0x0000367C + mov r3, #0x5d + lsl r3, r3, #2 + ldr r0, [r5, r2] + add r2, #8 + ldr r1, [sp] + ldr r3, [r5, r3] + add r2, r5, r2 + bl MOD70_02231018 + mov r1, #0xda + lsl r1, r1, #6 + str r0, [r5, r1] + ldr r1, _0222FAD4 ; =MOD70_0222F954 + ldr r0, _0222FAD8 ; =0x00002214 + str r1, [r5, r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222FACC: .word 0x00003694 +_0222FAD0: .word 0x0000367C +_0222FAD4: .word MOD70_0222F954 +_0222FAD8: .word 0x00002214 + thumb_func_end MOD70_0222FA38 + + thumb_func_start MOD70_0222FADC +MOD70_0222FADC: ; 0x0222FADC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5d + ldr r2, _0222FB30 ; =0x00000658 + lsl r0, r0, #2 + add r1, r4, r2 + add r2, #0xc + ldr r0, [r4, r0] + add r2, r4, r2 + bl MOD70_02230FB0 + cmp r0, #0 + beq _0222FB00 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0222FB08 + b _0222FB2A +_0222FB00: + ldr r1, _0222FB34 ; =MOD70_0222FA38 + ldr r0, _0222FB38 ; =0x00002214 + str r1, [r4, r0] + b _0222FB2A +_0222FB08: + ldr r0, _0222FB3C ; =0x0000366C + ldr r0, [r4, r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, _0222FB40 ; =0x00003674 + mov r1, #0 + ldr r0, [r4, r0] + bl FUN_0200ABC0 + add r0, r4, #0 + mov r1, #0x23 + bl MOD70_0222F84C + ldr r1, _0222FB44 ; =MOD70_0222F874 + ldr r0, _0222FB38 ; =0x00002214 + str r1, [r4, r0] +_0222FB2A: + mov r0, #0 + pop {r4, pc} + nop +_0222FB30: .word 0x00000658 +_0222FB34: .word MOD70_0222FA38 +_0222FB38: .word 0x00002214 +_0222FB3C: .word 0x0000366C +_0222FB40: .word 0x00003674 +_0222FB44: .word MOD70_0222F874 + thumb_func_end MOD70_0222FADC + + thumb_func_start MOD70_0222FB48 +MOD70_0222FB48: ; 0x0222FB48 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #0x5d + ldr r2, _0222FBC4 ; =0x00000658 + lsl r0, r0, #2 + add r1, r5, r2 + add r2, #0xc + ldr r0, [r5, r0] + add r2, r5, r2 + bl MOD70_02230FB0 + cmp r0, #0 + beq _0222FB6E + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0222FBB6 + b _0222FBBC +_0222FB6E: + ldr r1, _0222FBC8 ; =MOD70_0222FBF0 + ldr r0, _0222FBCC ; =0x00002214 + ldr r6, _0222FBD0 ; =0x00003694 + str r1, [r5, r0] + mov r4, #0 +_0222FB78: + ldr r0, [r5, r6] + add r1, r4, #0 + bl FUN_0202842C + cmp r0, #0 + bne _0222FB98 + mov r0, #0 + str r0, [sp] + ldr r1, _0222FBD4 ; =0x0000366C + ldr r0, [r5, #4] + ldr r1, [r5, r1] + add r2, r4, #0 + mov r3, #0x1a + bl FUN_02033A70 + b _0222FB9E +_0222FB98: + add r4, r4, #1 + cmp r4, #0x20 + blt _0222FB78 +_0222FB9E: + cmp r4, #0x20 + bne _0222FBBC + add r0, r5, #0 + mov r1, #0x22 + bl MOD70_0222F84C + ldr r1, _0222FBD8 ; =MOD70_0222FADC + ldr r0, _0222FBCC ; =0x00002214 + add sp, #4 + str r1, [r5, r0] + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_0222FBB6: + ldr r1, _0222FBC8 ; =MOD70_0222FBF0 + ldr r0, _0222FBCC ; =0x00002214 + str r1, [r5, r0] +_0222FBBC: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0222FBC4: .word 0x00000658 +_0222FBC8: .word MOD70_0222FBF0 +_0222FBCC: .word 0x00002214 +_0222FBD0: .word 0x00003694 +_0222FBD4: .word 0x0000366C +_0222FBD8: .word MOD70_0222FADC + thumb_func_end MOD70_0222FB48 + + thumb_func_start MOD70_0222FBDC +MOD70_0222FBDC: ; 0x0222FBDC + push {r3, lr} + mov r0, #0x13 + bl FUN_020315D8 + cmp r0, #0 + beq _0222FBEC + mov r0, #2 + pop {r3, pc} +_0222FBEC: + mov r0, #0 + pop {r3, pc} + thumb_func_end MOD70_0222FBDC + + thumb_func_start MOD70_0222FBF0 +MOD70_0222FBF0: ; 0x0222FBF0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r1, #0 + ldr r0, _0222FCE4 ; =0x0000366C + mvn r1, r1 + str r1, [r6, r0] + mov r4, #0 + bl FUN_02030F20 + cmp r0, #0 + ble _0222FC2C + ldr r7, _0222FCE8 ; =0x000035EC + add r5, r6, #0 +_0222FC0A: + ldr r0, [r5, r7] + cmp r0, #2 + bne _0222FC20 + ldr r0, _0222FCE4 ; =0x0000366C + lsl r1, r4, #2 + str r4, [r6, r0] + mov r2, #0 + add r1, r6, r1 + sub r0, #0x80 + str r2, [r1, r0] + b _0222FC2C +_0222FC20: + add r5, r5, #4 + add r4, r4, #1 + bl FUN_02030F20 + cmp r4, r0 + blt _0222FC0A +_0222FC2C: + ldr r0, _0222FCE4 ; =0x0000366C + mov r1, #0 + ldr r2, [r6, r0] + mvn r1, r1 + cmp r2, r1 + bne _0222FC70 + add r0, #0xc + ldr r0, [r6, r0] + bl FUN_0200A8B8 + ldr r0, _0222FCEC ; =0x00003674 + ldr r0, [r6, r0] + bl FUN_0200AB18 + mov r0, #0x13 + bl FUN_02031588 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r6, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222FCF0 ; =0x000005A8 + ldr r3, [r6, r3] + add r0, r6, r0 + mov r1, #0x1c + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _0222FCF4 ; =MOD70_0222FBDC + ldr r0, _0222FCF8 ; =0x00002214 + str r1, [r6, r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0222FC70: + ldr r0, [r6, #4] + bl FUN_0206F158 + ldr r1, _0222FCFC ; =0x000001B5 + mov r2, #1 + mov r3, #0x1a + bl FUN_0206EE50 + cmp r0, #1 + bne _0222FCAA + ldr r0, _0222FCE4 ; =0x0000366C + ldr r0, [r6, r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, _0222FCEC ; =0x00003674 + mov r1, #0 + ldr r0, [r6, r0] + bl FUN_0200ABC0 + add r0, r6, #0 + mov r1, #0x21 + bl MOD70_0222F84C + ldr r1, _0222FD00 ; =MOD70_0222FB48 + ldr r0, _0222FCF8 ; =0x00002214 + str r1, [r6, r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0222FCAA: + ldr r0, [r6, #4] + bl FUN_020286EC + add r5, r0, #0 + mov r4, #0 +_0222FCB4: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202842C + cmp r0, #0 + bne _0222FCD4 + mov r0, #0 + str r0, [sp] + ldr r1, _0222FCE4 ; =0x0000366C + ldr r0, [r6, #4] + ldr r1, [r6, r1] + add r2, r4, #0 + mov r3, #0x1a + bl FUN_02033A70 + b _0222FCDA +_0222FCD4: + add r4, r4, #1 + cmp r4, #0x20 + blt _0222FCB4 +_0222FCDA: + ldr r1, _0222FD04 ; =MOD70_0222FBF0 + ldr r0, _0222FCF8 ; =0x00002214 + str r1, [r6, r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0222FCE4: .word 0x0000366C +_0222FCE8: .word 0x000035EC +_0222FCEC: .word 0x00003674 +_0222FCF0: .word 0x000005A8 +_0222FCF4: .word MOD70_0222FBDC +_0222FCF8: .word 0x00002214 +_0222FCFC: .word 0x000001B5 +_0222FD00: .word MOD70_0222FB48 +_0222FD04: .word MOD70_0222FBF0 + thumb_func_end MOD70_0222FBF0 + + thumb_func_start MOD70_0222FD08 +MOD70_0222FD08: ; 0x0222FD08 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r1, _0222FD78 ; =0x000035EC + ldr r0, [r4, #4] + add r1, r4, r1 + mov r2, #0x1a + bl FUN_020339B4 + cmp r0, #0 + bne _0222FD48 + mov r0, #0x13 + bl FUN_02031588 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _0222FD7C ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x1c + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _0222FD80 ; =MOD70_0222FBDC + ldr r0, _0222FD84 ; =0x00002214 + add sp, #4 + str r1, [r4, r0] + mov r0, #0 + pop {r3, r4, pc} +_0222FD48: + mov r0, #0x1a + bl FUN_0200AA80 + ldr r1, _0222FD88 ; =0x00003674 + ldr r2, _0222FD8C ; =0x00000251 + str r0, [r4, r1] + mov r1, #0x1a + mov r0, #0 + add r3, r1, #0 + bl FUN_0200A86C + ldr r1, _0222FD90 ; =0x00003678 + str r0, [r4, r1] + ldr r0, [r4, #4] + bl FUN_020286EC + ldr r1, _0222FD94 ; =0x00003694 + str r0, [r4, r1] + ldr r1, _0222FD98 ; =MOD70_0222FBF0 + ldr r0, _0222FD84 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0222FD78: .word 0x000035EC +_0222FD7C: .word 0x000005A8 +_0222FD80: .word MOD70_0222FBDC +_0222FD84: .word 0x00002214 +_0222FD88: .word 0x00003674 +_0222FD8C: .word 0x00000251 +_0222FD90: .word 0x00003678 +_0222FD94: .word 0x00003694 +_0222FD98: .word MOD70_0222FBF0 + thumb_func_end MOD70_0222FD08 + + thumb_func_start MOD70_0222FD9C +MOD70_0222FD9C: ; 0x0222FD9C + ldr r2, [r0, #0x60] + cmp r2, #0 + beq _0222FDC8 + ldr r1, [r0, #0x64] + cmp r1, #0 + beq _0222FDC8 + cmp r2, #1 + bne _0222FDB8 + cmp r1, #1 + bne _0222FDB8 + ldr r2, _0222FDCC ; =MOD70_0222FD08 + ldr r1, _0222FDD0 ; =0x00002214 + str r2, [r0, r1] + b _0222FDBE +_0222FDB8: + ldr r2, _0222FDD4 ; =MOD70_0222F790 + ldr r1, _0222FDD0 ; =0x00002214 + str r2, [r0, r1] +_0222FDBE: + mov r1, #0 + str r1, [r0, #0x60] + str r1, [r0, #0x64] + mov r1, #0x1d + str r1, [r0, #0x68] +_0222FDC8: + mov r0, #0 + bx lr + .align 2, 0 +_0222FDCC: .word MOD70_0222FD08 +_0222FDD0: .word 0x00002214 +_0222FDD4: .word MOD70_0222F790 + thumb_func_end MOD70_0222FD9C + + thumb_func_start MOD70_0222FDD8 +MOD70_0222FDD8: ; 0x0222FDD8 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + mov r0, #0 + add r1, sp, #0x10 + strb r0, [r1, #8] + mov r0, #1 + strb r0, [r1, #9] + mov r0, #3 + strb r0, [r1, #0xa] + ldrb r2, [r1, #0xb] + mov r0, #0xf + bic r2, r0 + strb r2, [r1, #0xb] + ldrb r2, [r1, #0xb] + mov r0, #0x30 + bic r2, r0 + strb r2, [r1, #0xb] + ldrb r2, [r1, #0xb] + mov r0, #0xc0 + bic r2, r0 + strb r2, [r1, #0xb] + ldr r0, _0222FED0 ; =0x00002218 + add r1, r4, #0 + add r1, #0x88 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_0206B9B0 + bl FUN_020690E4 + add r2, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5f + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #8 + str r0, [sp] + ldr r0, _0222FED4 ; =0x00000598 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x10 + mov r2, #1 + bl MOD70_02230F40 + mov r0, #3 + mov r1, #0x1a + bl FUN_02012838 + ldr r1, _0222FED8 ; =0x0000065C + mov r2, #0x11 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0x61 + lsl r1, r1, #2 + ldr r1, [r4, r1] + mov r3, #0 + bl FUN_02012880 + ldr r0, _0222FED8 ; =0x0000065C + mov r1, #0x61 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + mov r2, #0x12 + mov r3, #1 + bl FUN_02012880 + ldr r0, _0222FED8 ; =0x0000065C + mov r1, #0x61 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + mov r2, #0x13 + mov r3, #2 + bl FUN_02012880 + ldr r0, _0222FED8 ; =0x0000065C + ldr r1, [r4, r0] + str r1, [sp, #0x10] + sub r0, #0xa4 + add r0, r4, r0 + str r0, [sp, #0x14] + bl MOD70_02231004 + mov r0, #0x1a + str r0, [sp] + mov r0, #2 + mov r2, #0 + str r0, [sp, #4] + add r0, sp, #0x10 + mov r1, #8 + add r3, r2, #0 + bl FUN_02001C14 + mov r1, #0x66 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r1, _0222FEDC ; =MOD70_0222FEE4 + ldr r0, _0222FEE0 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0 + add sp, #0x1c + pop {r3, r4, pc} + nop +_0222FED0: .word 0x00002218 +_0222FED4: .word 0x00000598 +_0222FED8: .word 0x0000065C +_0222FEDC: .word MOD70_0222FEE4 +_0222FEE0: .word 0x00002214 + thumb_func_end MOD70_0222FDD8 + + thumb_func_start MOD70_0222FEE4 +MOD70_0222FEE4: ; 0x0222FEE4 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x66 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02001C78 + cmp r0, #2 + bhi _0222FF06 + cmp r0, #0 + beq _0222FF10 + cmp r0, #1 + beq _0222FF64 + cmp r0, #2 + beq _0222FFB4 + b _02230002 +_0222FF06: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0222FFB4 + b _02230002 +_0222FF10: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _02230008 ; =0x00000588 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0xf + mov r2, #1 + bl MOD70_02230F40 + mov r0, #0x66 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _0223000C ; =0x0000065C + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r1, _02230010 ; =MOD70_0222F538 + ldr r0, _02230014 ; =0x00002214 + add sp, #0x10 + str r1, [r4, r0] + mov r0, #3 + pop {r4, pc} +_0222FF64: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _02230018 ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x14 + mov r2, #1 + bl MOD70_02230F40 + mov r0, #0x66 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _0223000C ; =0x0000065C + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r1, _0223001C ; =MOD70_02230020 + ldr r0, _02230014 ; =0x00002214 + str r1, [r4, r0] + b _02230002 +_0222FFB4: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _02230008 ; =0x00000588 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0xf + mov r2, #1 + bl MOD70_02230F40 + mov r0, #0x66 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _0223000C ; =0x0000065C + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r1, _02230010 ; =MOD70_0222F538 + ldr r0, _02230014 ; =0x00002214 + str r1, [r4, r0] +_02230002: + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02230008: .word 0x00000588 +_0223000C: .word 0x0000065C +_02230010: .word MOD70_0222F538 +_02230014: .word 0x00002214 +_02230018: .word 0x000005A8 +_0223001C: .word MOD70_02230020 + thumb_func_end MOD70_0222FEE4 + + thumb_func_start MOD70_02230020 +MOD70_02230020: ; 0x02230020 + push {r4, lr} + sub sp, #0x10 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _02230070 ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x14 + mov r2, #1 + bl MOD70_02230F40 + add r0, r4, #0 + mov r1, #0x18 + mov r2, #2 + bl MOD70_0222F440 + ldr r1, _02230074 ; =MOD70_0223007C + ldr r0, _02230078 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02230070: .word 0x000005A8 +_02230074: .word MOD70_0223007C +_02230078: .word 0x00002214 + thumb_func_end MOD70_02230020 + + thumb_func_start MOD70_0223007C +MOD70_0223007C: ; 0x0223007C + ldr r2, [r0, #0x60] + cmp r2, #0 + beq _022300A8 + ldr r1, [r0, #0x64] + cmp r1, #0 + beq _022300A8 + cmp r2, #2 + bne _02230098 + cmp r1, #2 + bne _02230098 + ldr r2, _022300AC ; =MOD70_022300B8 + ldr r1, _022300B0 ; =0x00002214 + str r2, [r0, r1] + b _0223009E +_02230098: + ldr r2, _022300B4 ; =MOD70_0222F790 + ldr r1, _022300B0 ; =0x00002214 + str r2, [r0, r1] +_0223009E: + mov r1, #0x18 + str r1, [r0, #0x68] + mov r1, #0 + str r1, [r0, #0x60] + str r1, [r0, #0x64] +_022300A8: + mov r0, #0 + bx lr + .align 2, 0 +_022300AC: .word MOD70_022300B8 +_022300B0: .word 0x00002214 +_022300B4: .word MOD70_0222F790 + thumb_func_end MOD70_0223007C + + thumb_func_start MOD70_022300B8 +MOD70_022300B8: ; 0x022300B8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + ldr r0, _022301D8 ; =0x00000438 + mov r6, #0 + add r0, r7, r0 + add r4, r7, #0 + add r5, r7, #0 + str r0, [sp, #4] +_022300CA: + add r0, r7, #0 + add r0, #0x88 + ldr r0, [r0] + cmp r6, r0 + beq _02230108 + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, _022301DC ; =0x00000692 + ldrh r0, [r5, r0] + cmp r0, #0 + beq _022300F4 + mov r0, #0x3a + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 +_022300F4: + ldr r0, _022301E0 ; =0x0000069C + ldr r0, [r5, r0] + cmp r0, #0 + beq _02230108 + mov r0, #0x3d + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 +_02230108: + add r0, r6, #7 + lsl r1, r0, #4 + ldr r0, [sp, #4] + add r0, r0, r1 + bl FUN_0201958C + add r0, r7, #0 + add r0, #0x8c + ldr r0, [r0] + sub r0, r0, #6 + cmp r6, r0 + beq _02230154 + mov r0, #0xe2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, _022301E4 ; =0x000006F2 + ldrh r0, [r5, r0] + cmp r0, #0 + beq _02230140 + mov r0, #0xee + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 +_02230140: + ldr r0, _022301E8 ; =0x000006FC + ldr r0, [r5, r0] + cmp r0, #0 + beq _02230154 + mov r0, #0xfa + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 +_02230154: + add r0, r6, #0 + add r0, #0xd + lsl r1, r0, #4 + ldr r0, [sp, #4] + add r0, r0, r1 + bl FUN_0201958C + add r6, r6, #1 + add r4, r4, #4 + add r5, #0x10 + cmp r6, #6 + blt _022300CA + mov r0, #0xce + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r0, [r7, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r7, #0 + add r0, #0x88 + ldr r0, [r0] + mov r3, #0x30 + lsl r2, r0, #3 + ldr r1, _022301EC ; =0x02231220 + ldr r0, _022301F0 ; =0x000022C4 + ldr r1, [r1, r2] + ldr r4, _022301F4 ; =0x02231224 + add r0, r7, r0 + ldr r2, [r4, r2] + add r1, #0x10 + sub r2, r2, #6 + str r3, [sp] + bl MOD70_02230204 + add r0, r7, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, _022301EC ; =0x02231220 + lsl r2, r0, #3 + mov r0, #0x30 + str r0, [sp] + ldr r0, _022301F8 ; =0x000022DC + ldr r1, [r1, r2] + add r3, r4, #0 + ldr r2, [r3, r2] + add r0, r7, r0 + add r1, #0x10 + sub r2, r2, #6 + mov r3, #0xb0 + bl MOD70_02230204 + ldr r1, _022301FC ; =0x000022BC + mov r0, #0 + str r0, [r7, r1] + ldr r2, _02230200 ; =MOD70_0223029C + sub r1, #0xa8 + str r2, [r7, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_022301D8: .word 0x00000438 +_022301DC: .word 0x00000692 +_022301E0: .word 0x0000069C +_022301E4: .word 0x000006F2 +_022301E8: .word 0x000006FC +_022301EC: .word 0x02231220 +_022301F0: .word 0x000022C4 +_022301F4: .word 0x02231224 +_022301F8: .word 0x000022DC +_022301FC: .word 0x000022BC +_02230200: .word MOD70_0223029C + thumb_func_end MOD70_022300B8 + + thumb_func_start MOD70_02230204 +MOD70_02230204: ; 0x02230204 + lsl r1, r1, #0xc + str r1, [r0] + lsl r1, r2, #0xc + str r1, [r0, #4] + lsl r1, r3, #0xc + str r1, [r0, #0xc] + ldr r1, [sp] + lsl r1, r1, #0xc + str r1, [r0, #0x10] + bx lr + thumb_func_end MOD70_02230204 + + thumb_func_start MOD70_02230218 +MOD70_02230218: ; 0x02230218 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r7, [sp, #0x48] + str r0, [sp] + ldr r4, [r7] + ldr r0, [r7, #0xc] + str r1, [sp, #4] + add r6, r3, #0 + sub r0, r0, r4 + mov r1, #0x14 + str r2, [sp, #8] + ldr r5, [sp, #0x4c] + bl _s32_div_f + mul r0, r6 + add r0, r4, r0 + str r0, [sp, #0x24] + ldr r4, [r7, #4] + ldr r0, [r7, #0x10] + mov r1, #0x14 + sub r0, r0, r4 + bl _s32_div_f + mul r0, r6 + add r0, r4, r0 + str r0, [sp, #0x28] + ldr r0, [sp] + add r1, sp, #0x24 + bl FUN_02020044 + ldrh r0, [r5, #2] + cmp r0, #0 + beq _02230276 + mov r0, #5 + ldr r1, [sp, #0x24] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x18] + mov r0, #0x16 + ldr r1, [sp, #0x28] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x1c] + ldr r0, [sp, #4] + add r1, sp, #0x18 + bl FUN_02020044 +_02230276: + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _02230298 + mov r0, #7 + ldr r1, [sp, #0x24] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0xc] + mov r0, #0x16 + ldr r1, [sp, #0x28] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [sp, #8] + add r1, sp, #0xc + bl FUN_02020044 +_02230298: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_02230218 + + thumb_func_start MOD70_0223029C +MOD70_0223029C: ; 0x0223029C + push {r3, r4, r5, lr} + sub sp, #8 + ldr r3, _02230370 ; =0x000022BC + add r4, r0, #0 + ldr r0, [r4, r3] + add r2, r3, #0 + add r0, r0, #1 + str r0, [r4, r3] + add r0, r4, #0 + add r0, #0x88 + ldr r1, [r0] + add r2, #8 + add r2, r4, r2 + lsl r0, r1, #2 + str r2, [sp] + mov r2, #0x69 + lsl r2, r2, #4 + add r2, r4, r2 + lsl r1, r1, #4 + add r1, r2, r1 + mov r2, #0x37 + str r1, [sp, #4] + lsl r2, r2, #4 + add r5, r4, r0 + add r1, r2, #0 + ldr r0, [r5, r2] + add r1, #0x30 + add r2, #0x60 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + ldr r3, [r4, r3] + bl MOD70_02230218 + add r0, r4, #0 + add r0, #0x8c + ldr r3, _02230374 ; =0x000022DC + ldr r5, [r0] + add r1, r4, r3 + str r1, [sp] + mov r1, #0x69 + lsl r1, r1, #4 + add r2, r4, r1 + lsl r1, r5, #4 + add r1, r2, r1 + mov r2, #0x37 + lsl r0, r5, #2 + lsl r2, r2, #4 + str r1, [sp, #4] + add r5, r4, r0 + add r1, r2, #0 + ldr r0, [r5, r2] + add r1, #0x30 + add r2, #0x60 + sub r3, #0x20 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + ldr r3, [r4, r3] + bl MOD70_02230218 + ldr r1, _02230370 ; =0x000022BC + ldr r0, [r4, r1] + cmp r0, #0x15 + bne _02230368 + mov r0, #1 + add r2, r4, #0 + str r0, [sp] + ldr r0, _02230378 ; =0x00000568 + sub r1, #0xa4 + add r2, #0x88 + ldr r1, [r4, r1] + ldr r2, [r2] + add r0, r4, r0 + mov r3, #8 + bl MOD70_0222EC5C + mov r0, #1 + add r2, r4, #0 + str r0, [sp] + ldr r1, _0223037C ; =0x0000221C + add r2, #0x8c + ldr r0, _02230380 ; =0x00000578 + ldr r2, [r2] + ldr r1, [r4, r1] + add r0, r4, r0 + sub r2, r2, #6 + mov r3, #8 + bl MOD70_0222EC5C + add r1, r4, #0 + add r1, #0x8c + ldr r1, [r1] + add r0, r4, #0 + bl MOD70_0222E1A0 + ldr r1, _02230384 ; =MOD70_022304AC + ldr r0, _02230388 ; =0x00002214 + str r1, [r4, r0] + ldr r0, _0223038C ; =0x00000418 + mov r1, #1 + ldr r0, [r4, r0] + bl FUN_020200A0 +_02230368: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02230370: .word 0x000022BC +_02230374: .word 0x000022DC +_02230378: .word 0x00000568 +_0223037C: .word 0x0000221C +_02230380: .word 0x00000578 +_02230384: .word MOD70_022304AC +_02230388: .word 0x00002214 +_0223038C: .word 0x00000418 + thumb_func_end MOD70_0223029C + + thumb_func_start MOD70_02230390 +MOD70_02230390: ; 0x02230390 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _0223048C ; =0x00000568 + str r0, [sp] + add r0, r0, r1 + bl FUN_0201958C + ldr r1, _02230490 ; =0x00000578 + ldr r0, [sp] + add r0, r0, r1 + bl FUN_0201958C + ldr r6, [sp] + ldr r1, _02230494 ; =0x00000438 + add r0, r6, #0 + add r0, r0, r1 + ldr r4, _02230498 ; =0x02231220 + mov r7, #0 + add r5, r6, #0 + str r0, [sp, #4] +_022303B8: + mov r0, #0x69 + lsl r0, r0, #4 + ldrh r0, [r6, r0] + cmp r0, #0 + beq _02230438 + mov r0, #0x37 + lsl r0, r0, #4 + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r0, [r5, r0] + add r1, #0x10 + sub r2, r2, #6 + bl MOD70_02230B70 + mov r0, #0x37 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _0223049C ; =0x00000692 + ldrh r0, [r6, r0] + cmp r0, #0 + beq _02230406 + mov r0, #0x3a + lsl r0, r0, #4 + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r0, [r5, r0] + add r1, #0x24 + add r2, #0x10 + bl MOD70_02230B70 + mov r0, #0x3a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 +_02230406: + ldr r0, _022304A0 ; =0x0000069C + ldr r0, [r6, r0] + cmp r0, #0 + beq _0223042C + mov r0, #0x3d + lsl r0, r0, #4 + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r0, [r5, r0] + add r1, #0x2c + add r2, #0x10 + bl MOD70_02230B70 + mov r0, #0x3d + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 +_0223042C: + add r0, r7, #7 + lsl r1, r0, #4 + ldr r0, [sp, #4] + add r0, r0, r1 + bl FUN_02019220 +_02230438: + add r7, r7, #1 + add r6, #0x10 + add r4, #8 + add r5, r5, #4 + cmp r7, #0xc + blt _022303B8 + mov r1, #0xce + ldr r0, [sp] + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #1 + bl FUN_020200A0 + mov r1, #0xcf + ldr r0, [sp] + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #1 + bl FUN_020200A0 + ldr r1, _02230494 ; =0x00000438 + ldr r0, [sp] + ldr r2, [sp] + add r0, r0, r1 + mov r1, #1 + bl MOD70_0222EF24 + ldr r1, _022304A4 ; =0x0000040C + ldr r0, [sp] + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_020200A0 + ldr r1, _022304A8 ; =0x00000418 + ldr r0, [sp] + ldr r0, [r0, r1] + mov r1, #0 + bl FUN_020200A0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223048C: .word 0x00000568 +_02230490: .word 0x00000578 +_02230494: .word 0x00000438 +_02230498: .word 0x02231220 +_0223049C: .word 0x00000692 +_022304A0: .word 0x0000069C +_022304A4: .word 0x0000040C +_022304A8: .word 0x00000418 + thumb_func_end MOD70_02230390 + + thumb_func_start MOD70_022304AC +MOD70_022304AC: ; 0x022304AC + push {r4, lr} + sub sp, #0x10 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + ldr r0, _02230534 ; =0x00002218 + add r1, r4, #0 + add r1, #0x88 + ldr r0, [r4, r0] + ldr r1, [r1] + bl FUN_0206B9B0 + bl FUN_020690E4 + add r2, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + add r1, r4, #0 + ldr r0, _02230538 ; =0x0000221C + add r1, #0x8c + ldr r1, [r1] + ldr r0, [r4, r0] + sub r1, r1, #6 + bl FUN_0206B9B0 + bl FUN_020690E4 + add r2, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_0200ACF8 + mov r3, #0x5f + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #8 + str r0, [sp] + ldr r0, _0223053C ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x15 + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _02230540 ; =MOD70_02230548 + ldr r0, _02230544 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02230534: .word 0x00002218 +_02230538: .word 0x0000221C +_0223053C: .word 0x000005A8 +_02230540: .word MOD70_02230548 +_02230544: .word 0x00002214 + thumb_func_end MOD70_022304AC + + thumb_func_start MOD70_02230548 +MOD70_02230548: ; 0x02230548 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x5d + ldr r2, _02230638 ; =0x00000658 + lsl r0, r0, #2 + add r1, r4, r2 + add r2, #0xc + ldr r0, [r4, r0] + add r2, r4, r2 + bl MOD70_02230FB0 + cmp r0, #0 + beq _0223056E + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _022305EE + b _02230632 +_0223056E: + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + lsl r0, r0, #4 + add r1, r4, r0 + ldr r0, _0223063C ; =0x0000069C + ldr r0, [r1, r0] + cmp r0, #0 + bne _022305E6 + add r0, r4, #0 + bl MOD70_02230BC4 + cmp r0, #0 + beq _022305D4 + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _02230640 ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x14 + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _02230644 ; =MOD70_02230770 + ldr r0, _02230648 ; =0x00002214 + mov r2, #3 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #0x18 + bl MOD70_0222F440 + mov r0, #1 + str r0, [r4, #0x5c] + b _02230632 +_022305D4: + ldr r1, _02230644 ; =MOD70_02230770 + ldr r0, _02230648 ; =0x00002214 + mov r2, #4 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #0x18 + bl MOD70_0222F440 + b _02230632 +_022305E6: + ldr r1, _0223064C ; =MOD70_02230650 + ldr r0, _02230648 ; =0x00002214 + str r1, [r4, r0] + b _02230632 +_022305EE: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _02230640 ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x14 + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _02230644 ; =MOD70_02230770 + ldr r0, _02230648 ; =0x00002214 + mov r2, #4 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #0x18 + bl MOD70_0222F440 +_02230632: + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02230638: .word 0x00000658 +_0223063C: .word 0x0000069C +_02230640: .word 0x000005A8 +_02230644: .word MOD70_02230770 +_02230648: .word 0x00002214 +_0223064C: .word MOD70_02230650 + thumb_func_end MOD70_02230548 + + thumb_func_start MOD70_02230650 +MOD70_02230650: ; 0x02230650 + push {r4, lr} + sub sp, #0x10 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5f + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #8 + str r0, [sp] + ldr r0, _02230698 ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x24 + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _0223069C ; =MOD70_022306A4 + ldr r0, _022306A0 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + nop +_02230698: .word 0x000005A8 +_0223069C: .word MOD70_022306A4 +_022306A0: .word 0x00002214 + thumb_func_end MOD70_02230650 + + thumb_func_start MOD70_022306A4 +MOD70_022306A4: ; 0x022306A4 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x5d + ldr r2, _02230760 ; =0x00000658 + lsl r0, r0, #2 + add r1, r4, r2 + add r2, #0xc + ldr r0, [r4, r0] + add r2, r4, r2 + bl MOD70_02230FB0 + cmp r0, #0 + beq _022306CA + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _02230714 + b _02230758 +_022306CA: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _02230764 ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x14 + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _02230768 ; =MOD70_02230770 + ldr r0, _0223076C ; =0x00002214 + mov r2, #3 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #0x18 + bl MOD70_0222F440 + mov r0, #1 + str r0, [r4, #0x5c] + b _02230758 +_02230714: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _02230764 ; =0x000005A8 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x14 + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _02230768 ; =MOD70_02230770 + ldr r0, _0223076C ; =0x00002214 + mov r2, #4 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #0x18 + bl MOD70_0222F440 +_02230758: + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + nop +_02230760: .word 0x00000658 +_02230764: .word 0x000005A8 +_02230768: .word MOD70_02230770 +_0223076C: .word 0x00002214 + thumb_func_end MOD70_022306A4 + + thumb_func_start MOD70_02230770 +MOD70_02230770: ; 0x02230770 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x60] + cmp r1, #0 + beq _022307B8 + ldr r0, [r4, #0x64] + cmp r0, #0 + beq _022307B8 + cmp r1, #3 + bne _02230798 + cmp r0, #3 + bne _02230798 + ldr r0, _022307BC ; =0x00003698 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, _022307C0 ; =MOD70_022307CC + ldr r0, _022307C4 ; =0x00002214 + str r1, [r4, r0] + b _0223079E +_02230798: + ldr r1, _022307C8 ; =MOD70_0222F790 + ldr r0, _022307C4 ; =0x00002214 + str r1, [r4, r0] +_0223079E: + mov r0, #0 + str r0, [r4, #0x60] + str r0, [r4, #0x64] + add r0, r4, #0 + bl MOD70_02230BC4 + cmp r0, #0 + beq _022307B4 + mov r0, #0x18 + str r0, [r4, #0x68] + b _022307B8 +_022307B4: + mov r0, #0x22 + str r0, [r4, #0x68] +_022307B8: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_022307BC: .word 0x00003698 +_022307C0: .word MOD70_022307CC +_022307C4: .word 0x00002214 +_022307C8: .word MOD70_0222F790 + thumb_func_end MOD70_02230770 + + thumb_func_start MOD70_022307CC +MOD70_022307CC: ; 0x022307CC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_0202E288 + ldr r0, [r4, #8] + add r3, r4, #0 + add r2, r4, #0 + ldr r1, _02230804 ; =0x00002218 + str r0, [sp] + add r3, #0x8c + ldr r0, [r4, r1] + add r1, r1, #4 + add r2, #0x88 + ldr r3, [r3] + ldr r1, [r4, r1] + ldr r2, [r2] + sub r3, r3, #6 + bl MOD70_022309E8 + ldr r1, _02230808 ; =MOD70_0222F790 + ldr r0, _0223080C ; =0x00002214 + str r1, [r4, r0] + mov r0, #2 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02230804: .word 0x00002218 +_02230808: .word MOD70_0222F790 +_0223080C: .word 0x00002214 + thumb_func_end MOD70_022307CC + + thumb_func_start MOD70_02230810 +MOD70_02230810: ; 0x02230810 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + mov r0, #0 + add r1, sp, #0x10 + strb r0, [r1, #8] + mov r0, #1 + strb r0, [r1, #9] + mov r0, #2 + strb r0, [r1, #0xa] + ldrb r2, [r1, #0xb] + mov r0, #0xf + bic r2, r0 + strb r2, [r1, #0xb] + ldrb r2, [r1, #0xb] + mov r0, #0x30 + bic r2, r0 + strb r2, [r1, #0xb] + ldrb r2, [r1, #0xb] + mov r0, #0xc0 + bic r2, r0 + strb r2, [r1, #0xb] + add r1, r4, #0 + ldr r0, _022308F8 ; =0x0000221C + add r1, #0x88 + ldr r1, [r1] + ldr r0, [r4, r0] + sub r1, r1, #6 + bl FUN_0206B9B0 + bl FUN_020690E4 + add r2, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_0200ACF8 + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5f + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #8 + str r0, [sp] + ldr r0, _022308FC ; =0x00000598 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0x10 + mov r2, #1 + bl MOD70_02230F40 + mov r0, #2 + mov r1, #0x1a + bl FUN_02012838 + ldr r1, _02230900 ; =0x0000065C + mov r2, #0x11 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0x61 + lsl r1, r1, #2 + ldr r1, [r4, r1] + mov r3, #0 + bl FUN_02012880 + ldr r0, _02230900 ; =0x0000065C + mov r1, #0x61 + lsl r1, r1, #2 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + mov r2, #0x13 + mov r3, #1 + bl FUN_02012880 + ldr r0, _02230900 ; =0x0000065C + ldr r1, [r4, r0] + sub r0, #0x94 + add r0, r4, r0 + str r1, [sp, #0x10] + str r0, [sp, #0x14] + bl MOD70_02231004 + mov r0, #0x1a + str r0, [sp] + mov r0, #2 + mov r2, #0 + str r0, [sp, #4] + add r0, sp, #0x10 + mov r1, #8 + add r3, r2, #0 + bl FUN_02001C14 + mov r1, #0x66 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r1, _02230904 ; =MOD70_0223090C + ldr r0, _02230908 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0 + add sp, #0x1c + pop {r3, r4, pc} + nop +_022308F8: .word 0x0000221C +_022308FC: .word 0x00000598 +_02230900: .word 0x0000065C +_02230904: .word MOD70_0223090C +_02230908: .word 0x00002214 + thumb_func_end MOD70_02230810 + + thumb_func_start MOD70_0223090C +MOD70_0223090C: ; 0x0223090C + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x66 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02001C78 + cmp r0, #0 + beq _0223092E + cmp r0, #1 + beq _02230982 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _02230982 + b _022309D0 +_0223092E: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _022309D8 ; =0x00000588 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0xf + mov r2, #1 + bl MOD70_02230F40 + ldr r1, _022309DC ; =MOD70_0222F538 + ldr r0, _022309E0 ; =0x00002214 + str r1, [r4, r0] + mov r0, #0x66 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _022309E4 ; =0x0000065C + ldr r0, [r4, r0] + bl FUN_02012870 + add sp, #0x10 + mov r0, #3 + pop {r4, pc} +_02230982: + mov r1, #0 + str r1, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + mov r0, #0x5d + str r1, [sp, #0xc] + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02018540 + mov r3, #0x5e + lsl r3, r3, #2 + ldr r0, [r4, r3] + add r3, #0xc + str r0, [sp] + ldr r0, _022309D8 ; =0x00000588 + ldr r3, [r4, r3] + add r0, r4, r0 + mov r1, #0xf + mov r2, #1 + bl MOD70_02230F40 + mov r0, #0x66 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02001C5C + ldr r0, _022309E4 ; =0x0000065C + ldr r0, [r4, r0] + bl FUN_02012870 + ldr r1, _022309DC ; =MOD70_0222F538 + ldr r0, _022309E0 ; =0x00002214 + str r1, [r4, r0] +_022309D0: + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + nop +_022309D8: .word 0x00000588 +_022309DC: .word MOD70_0222F538 +_022309E0: .word 0x00002214 +_022309E4: .word 0x0000065C + thumb_func_end MOD70_0223090C + + thumb_func_start MOD70_022309E8 +MOD70_022309E8: ; 0x022309E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp, #4] + mov r0, #0x1a + str r1, [sp, #8] + add r6, r2, #0 + str r3, [sp, #0xc] + ldr r5, [sp, #0x28] + bl FUN_020669C0 + add r7, r0, #0 + mov r0, #0x1a + bl FUN_020669C0 + add r4, r0, #0 + ldr r0, [sp, #4] + add r1, r6, #0 + bl FUN_0206B9B0 + add r1, r7, #0 + bl FUN_02069B88 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + bl FUN_0206B9B0 + add r1, r4, #0 + bl FUN_02069B88 + add r0, r4, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _02230A40 + mov r1, #0x46 + add r0, sp, #0x10 + strb r1, [r0] + add r0, r4, #0 + mov r1, #9 + add r2, sp, #0x10 + bl FUN_02067830 +_02230A40: + bl FUN_02031190 + bl FUN_0202DFA4 + add r1, r0, #0 + mov r0, #0xb + str r0, [sp] + add r0, r4, #0 + mov r2, #5 + mov r3, #0 + bl FUN_0208089C + add r0, r4, #0 + bl FUN_0206AA84 + ldr r1, [r5, #0x3c] + add r0, r7, #0 + bl FUN_02069B88 + ldr r1, [r5, #0x40] + add r0, r4, #0 + bl FUN_02069B88 + bl FUN_02031190 + mov r1, #1 + eor r0, r1 + bl FUN_0202DFA4 + ldr r1, [r5, #0x38] + bl FUN_0202393C + ldr r0, [sp, #4] + ldr r1, _02230AE0 ; =0x000001B9 + str r6, [r5, #0x2c] + bl FUN_0206BAE4 + cmp r0, #0 + bne _02230A98 + ldr r0, [r5, #0x10] + bl FUN_02029EF8 + bl FUN_02029F08 +_02230A98: + ldr r0, [r5, #0x10] + add r1, r4, #0 + bl FUN_0202C144 + ldr r0, [sp, #4] + add r1, r6, #0 + bl FUN_0206B9B0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02069B88 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + bl FUN_0206B9B0 + add r1, r0, #0 + add r0, r7, #0 + bl FUN_02069B88 + ldr r0, [r5, #0x1c] + add r1, r4, #0 + bl MOD70_02230AE4 + ldr r0, [r5, #0x20] + mov r1, #0x13 + bl FUN_0202A0E8 + add r0, r7, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02230AE0: .word 0x000001B9 + thumb_func_end MOD70_022309E8 + + thumb_func_start MOD70_02230AE4 +MOD70_02230AE4: ; 0x02230AE4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + mov r1, #1 + eor r0, r1 + bl FUN_0202DFA4 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x74 + add r2, sp, #4 + bl FUN_020671BC + add r0, r5, #0 + bl FUN_0202398C + add r7, r0, #0 + add r0, r5, #0 + bl FUN_020239CC + add r5, r0, #0 + add r0, r4, #0 + bl FUN_020689E0 + add r3, r0, #0 + mov r0, #0x1a + lsl r1, r5, #0x18 + str r0, [sp] + add r0, r7, #0 + lsr r1, r1, #0x18 + add r2, sp, #4 + bl FUN_0202945C + add r1, r0, #0 + add r0, r6, #0 + mov r2, #4 + bl FUN_02028AD4 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD70_02230AE4 + + thumb_func_start MOD70_02230B3C +MOD70_02230B3C: ; 0x02230B3C + push {r4, lr} + ldr r3, _02230B6C ; =0x000022B8 + add r4, r0, #0 + ldr r0, [r4, r3] + mov r1, #6 + add r0, r0, #2 + str r0, [r4, r3] + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r3, [r4, r3] + mov r2, #0 + bl FUN_020179E0 + mov r0, #0x5d + ldr r3, _02230B6C ; =0x000022B8 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r3, [r4, r3] + mov r1, #3 + mov r2, #0 + bl FUN_020179E0 + pop {r4, pc} + .align 2, 0 +_02230B6C: .word 0x000022B8 + thumb_func_end MOD70_02230B3C + + thumb_func_start MOD70_02230B70 +MOD70_02230B70: ; 0x02230B70 + push {lr} + sub sp, #0xc + lsl r1, r1, #0xc + str r1, [sp] + lsl r1, r2, #0xc + str r1, [sp, #4] + add r1, sp, #0 + bl FUN_02020044 + add sp, #0xc + pop {pc} + .align 2, 0 + thumb_func_end MOD70_02230B70 + + thumb_func_start MOD70_02230B88 +MOD70_02230B88: ; 0x02230B88 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02230B9C ; =0x000005A8 + ldr r1, _02230BA0 ; =0x000001D9 + add r0, r4, r0 + bl FUN_0200D858 + ldr r1, _02230BA4 ; =0x000036A8 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_02230B9C: .word 0x000005A8 +_02230BA0: .word 0x000001D9 +_02230BA4: .word 0x000036A8 + thumb_func_end MOD70_02230B88 + + thumb_func_start MOD70_02230BA8 +MOD70_02230BA8: ; 0x02230BA8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02230BC0 ; =0x000036A8 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02230BBE + bl FUN_0200DBFC + ldr r0, _02230BC0 ; =0x000036A8 + mov r1, #0 + str r1, [r4, r0] +_02230BBE: + pop {r4, pc} + .align 2, 0 +_02230BC0: .word 0x000036A8 + thumb_func_end MOD70_02230BA8 + + thumb_func_start MOD70_02230BC4 +MOD70_02230BC4: ; 0x02230BC4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _02230C00 ; =0x00002218 + mov r4, #0 + ldr r0, [r5, r0] + bl FUN_0206B9AC + add r3, r4, #0 + cmp r0, #0 + ble _02230BF0 + add r1, r5, #0 + add r1, #0x88 + ldr r6, [r1] + ldr r1, _02230C04 ; =0x00000695 +_02230BE0: + cmp r3, r6 + beq _02230BE8 + ldrb r2, [r5, r1] + add r4, r4, r2 +_02230BE8: + add r3, r3, #1 + add r5, #0x10 + cmp r3, r0 + blt _02230BE0 +_02230BF0: + sub r0, r0, #1 + cmp r4, r0 + bne _02230BFA + mov r0, #0 + pop {r4, r5, r6, pc} +_02230BFA: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_02230C00: .word 0x00002218 +_02230C04: .word 0x00000695 + thumb_func_end MOD70_02230BC4 + + thumb_func_start MOD70_02230C08 +MOD70_02230C08: ; 0x02230C08 + ldr r1, _02230C18 ; =0x000036AC + mov r2, #1 + str r2, [r0, r1] + mov r2, #0 + add r1, r1, #4 + str r2, [r0, r1] + bx lr + nop +_02230C18: .word 0x000036AC + thumb_func_end MOD70_02230C08 + + thumb_func_start MOD70_02230C1C +MOD70_02230C1C: ; 0x02230C1C + push {r3, lr} + ldr r2, _02230C40 ; =0x000036AC + ldr r1, [r0, r2] + cmp r1, #0 + beq _02230C3E + add r1, r2, #4 + ldr r1, [r0, r1] + add r3, r1, #1 + add r1, r2, #4 + str r3, [r0, r1] + ldr r1, [r0, r1] + ldr r0, _02230C44 ; =0x00000708 + cmp r1, r0 + ble _02230C3E + mov r0, #4 + bl FUN_020336A0 +_02230C3E: + pop {r3, pc} + .align 2, 0 +_02230C40: .word 0x000036AC +_02230C44: .word 0x00000708 + thumb_func_end MOD70_02230C1C + + thumb_func_start MOD70_02230C48 +MOD70_02230C48: ; 0x02230C48 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r2, #0 + mov r2, #1 + str r2, [sp] + mov r3, #0xa + str r3, [sp, #4] + mov r3, #2 + str r3, [sp, #8] + mov r6, #8 + str r6, [sp, #0xc] + add r5, r1, #0 + str r0, [sp, #0x14] + str r2, [sp, #0x10] + bl FUN_02019064 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + mov r2, #1 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + add r0, r6, #0 + str r0, [sp, #0xc] + mov r0, #0x15 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r1, #0x10 + mov r3, #0x14 + bl FUN_02019064 + add r0, r5, #0 + add r0, #0x10 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x15 + str r0, [sp] + mov r0, #5 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + add r0, r6, #0 + str r0, [sp, #0xc] + mov r0, #0x29 + str r0, [sp, #0x10] + add r1, r5, #0 + ldr r0, [sp, #0x14] + add r1, #0x60 + mov r2, #1 + mov r3, #0x1a + bl FUN_02019064 + add r0, r5, #0 + add r0, #0x60 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + ldr r0, [sp, #0x14] + ldr r2, _02230E78 ; =0x000001D9 + mov r1, #0 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x1a + str r0, [sp, #4] + ldr r0, [sp, #0x14] + ldr r2, _02230E7C ; =0x000001F7 + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0x15 + str r1, [sp] + mov r0, #0x14 + str r0, [sp, #4] + mov r3, #2 + lsl r1, r1, #4 + str r3, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r1, r5, r1 + mov r2, #0 + bl FUN_02019064 + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x13 + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + mov r1, #0x16 + str r0, [sp, #0x10] + lsl r1, r1, #4 + ldr r0, [sp, #0x14] + add r1, r5, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + mov r0, #0x16 + lsl r0, r0, #4 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x38 + mov r1, #0x17 + str r0, [sp, #0x10] + lsl r1, r1, #4 + ldr r0, [sp, #0x14] + add r1, r5, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + mov r0, #0x17 + lsl r0, r0, #4 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x11 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r1, #0xa4 + str r1, [sp, #0x10] + add r1, #0xdc + ldr r0, [sp, #0x14] + add r1, r5, r1 + mov r2, #0 + mov r3, #0x14 + bl FUN_02019064 + mov r0, #6 + lsl r0, r0, #6 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x13 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r1, #0xe6 + str r1, [sp, #0x10] + add r1, #0xaa + ldr r0, [sp, #0x14] + add r1, r5, r1 + mov r2, #0 + mov r3, #0x14 + bl FUN_02019064 + mov r0, #0x19 + lsl r0, r0, #4 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + ldr r4, _02230E80 ; =0x022313F4 + mov r7, #0 + mov r6, #0x33 +_02230DE2: + add r0, r7, #7 + lsl r0, r0, #4 + str r0, [sp, #0x18] + ldrh r0, [r4, #2] + ldr r1, [sp, #0x18] + mov r2, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldrh r3, [r4] + ldr r0, [sp, #0x14] + add r1, r5, r1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 + ldr r0, [sp, #0x18] + mov r1, #0 + add r0, r5, r0 + bl FUN_02019620 + add r7, r7, #1 + add r6, #0x10 + add r4, r4, #4 + cmp r7, #0xe + blt _02230DE2 + ldr r4, _02230E84 ; =0x0223142C + mov r6, #0 +_02230E2C: + add r0, r6, #0 + add r0, #0x1a + lsl r7, r0, #4 + ldrh r0, [r4, #2] + add r1, r5, r7 + mov r2, #4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldrh r0, [r4, #4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldrh r0, [r4, #6] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + ldrh r0, [r4, #8] + str r0, [sp, #0x10] + ldrh r3, [r4] + ldr r0, [sp, #0x14] + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r5, r7 + mov r1, #0 + bl FUN_02019620 + add r6, r6, #1 + add r4, #0xa + cmp r6, #8 + blt _02230E2C + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_02230E78: .word 0x000001D9 +_02230E7C: .word 0x000001F7 +_02230E80: .word 0x022313F4 +_02230E84: .word 0x0223142C + thumb_func_end MOD70_02230C48 + + thumb_func_start MOD70_02230E88 +MOD70_02230E88: ; 0x02230E88 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r5, #0 +_02230E8E: + add r0, r5, #7 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + add r5, r5, #1 + cmp r5, #0xe + blt _02230E8E + mov r5, #0 +_02230EA0: + add r0, r5, #0 + add r0, #0x1a + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + add r5, r5, #1 + cmp r5, #8 + blt _02230EA0 + add r0, r4, #0 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x60 + bl FUN_02019178 + mov r0, #0x15 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0x16 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0x17 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #6 + lsl r0, r0, #6 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0x19 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + pop {r3, r4, r5, pc} + thumb_func_end MOD70_02230E88 + + thumb_func_start MOD70_02230EFC +MOD70_02230EFC: ; 0x02230EFC + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r3, #0 + ldr r3, [sp, #0x20] + add r5, r0, #0 + add r6, r1, #0 + cmp r3, #1 + bne _02230F20 + mov r0, #0 + add r2, r0, #0 + bl FUN_02002E14 + ldrb r1, [r5, #7] + lsl r1, r1, #3 + sub r1, r1, r0 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r3, r0, #1 +_02230F20: + ldr r0, [sp, #0x24] + mov r1, #0 + str r0, [sp] + ldr r0, _02230F3C ; =0x000B0C00 + str r4, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r2, r6, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02230F3C: .word 0x000B0C00 + thumb_func_end MOD70_02230EFC + + thumb_func_start MOD70_02230F40 +MOD70_02230F40: ; 0x02230F40 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r1, r3, #0 + ldr r0, [sp, #0x20] + add r2, r6, #0 + mov r3, #0x1a + bl FUN_0200A9C4 + add r6, r0, #0 + cmp r4, #1 + bne _02230F6A + ldr r2, _02230FA4 ; =0x000001D9 + add r0, r5, #0 + mov r1, #0 + mov r3, #0xa + bl FUN_0200D0BC + b _02230F76 +_02230F6A: + ldr r2, _02230FA8 ; =0x000001F7 + add r0, r5, #0 + mov r1, #0 + mov r3, #0xb + bl FUN_0200CCA4 +_02230F76: + add r0, r5, #0 + mov r1, #0xf + bl FUN_02019620 + mov r3, #0 + str r3, [sp] + ldr r0, _02230FAC ; =0x0001020F + str r3, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02230FA4: .word 0x000001D9 +_02230FA8: .word 0x000001F7 +_02230FAC: .word 0x0001020F + thumb_func_end MOD70_02230F40 + + thumb_func_start MOD70_02230FB0 +MOD70_02230FB0: ; 0x02230FB0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r2, #0 + add r5, r1, #0 + mov r6, #0 + ldr r1, [r4] + mvn r6, r6 + cmp r1, #0 + beq _02230FC8 + cmp r1, #1 + beq _02230FE0 + b _02230FF6 +_02230FC8: + mov r1, #0x1a + str r1, [sp] + ldr r1, _02230FFC ; =0x022313CC + ldr r2, _02231000 ; =0x000001F7 + mov r3, #0xb + bl FUN_02002198 + str r0, [r5] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02230FF6 +_02230FE0: + ldr r0, [r5] + mov r1, #0x1a + bl FUN_020021AC + add r6, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _02230FF6 + mov r0, #0 + str r0, [r4] +_02230FF6: + add r0, r6, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02230FFC: .word 0x022313CC +_02231000: .word 0x000001F7 + thumb_func_end MOD70_02230FB0 + + thumb_func_start MOD70_02231004 +MOD70_02231004: ; 0x02231004 + push {r3, lr} + ldr r2, _02231014 ; =0x000001F7 + mov r1, #0 + mov r3, #0xb + bl FUN_0200CCA4 + pop {r3, pc} + nop +_02231014: .word 0x000001F7 + thumb_func_end MOD70_02231004 + + thumb_func_start MOD70_02231018 +MOD70_02231018: ; 0x02231018 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #1 + str r0, [sp] + mov r0, #0xc + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02231088 ; =0x0000014D + add r4, r2, #0 + add r6, r1, #0 + str r0, [sp, #0x10] + add r0, r3, #0 + add r1, r4, #0 + mov r2, #0 + mov r3, #0x13 + bl FUN_02019064 + ldr r2, _0223108C ; =0x000001F7 + add r0, r4, #0 + mov r1, #0 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r3, _02231090 ; =0x022313D4 + add r2, sp, #0x14 + add r7, r2, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r1, r6, #1 + add r0, sp, #0x14 + strh r1, [r0, #0x10] + mov r1, #5 + strh r1, [r0, #0x12] + ldr r0, _02231094 ; =MOD70_02231098 + mov r1, #0 + str r0, [sp, #0x18] + add r0, r7, #0 + add r2, r1, #0 + mov r3, #0x1a + str r5, [sp, #0x14] + str r4, [sp, #0x20] + bl FUN_020010A8 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_02231088: .word 0x0000014D +_0223108C: .word 0x000001F7 +_02231090: .word 0x022313D4 +_02231094: .word MOD70_02231098 + thumb_func_end MOD70_02231018 + + thumb_func_start MOD70_02231098 +MOD70_02231098: ; 0x02231098 + push {r3, lr} + cmp r2, #0 + bne _022310A4 + ldr r0, _022310A8 ; =0x000005DC + bl FUN_020054C8 +_022310A4: + pop {r3, pc} + nop +_022310A8: .word 0x000005DC + thumb_func_end MOD70_02231098 + + .section .rodata + ; 0x022310AC + .incbin "baserom.nds", 0x2C96EC, 0x3D0 |