summaryrefslogtreecommitdiff
path: root/arm9/modules
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules')
-rw-r--r--arm9/modules/61/asm/module_61.s1907
1 files changed, 1907 insertions, 0 deletions
diff --git a/arm9/modules/61/asm/module_61.s b/arm9/modules/61/asm/module_61.s
new file mode 100644
index 00000000..c81d3a4a
--- /dev/null
+++ b/arm9/modules/61/asm/module_61.s
@@ -0,0 +1,1907 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD61_021D74E0
+MOD61_021D74E0: ; 0x021D74E0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ mov r2, #2
+ mov r0, #3
+ mov r1, #0x29
+ lsl r2, r2, #0x10
+ bl FUN_0201681C
+ add r0, r5, #0
+ mov r1, #0xbc
+ mov r2, #0x29
+ bl FUN_02006268
+ mov r1, #0
+ mov r2, #0xbc
+ add r4, r0, #0
+ bl Call_FillMemWithValue
+ mov r0, #0x29
+ str r0, [r4]
+ add r0, r5, #0
+ bl FUN_0200628C
+ str r0, [r4, #0x1c]
+ ldrh r0, [r0]
+ ldr r1, _021D754C ; =0x0000FFFF
+ strb r0, [r4, #0xc]
+ ldrb r0, [r4, #0xc]
+ strb r0, [r4, #0xd]
+ ldr r0, [r4, #0x1c]
+ ldrb r0, [r0, #2]
+ strb r0, [r4, #0x11]
+ ldr r0, [r4, #0x1c]
+ ldrb r0, [r0, #3]
+ strb r0, [r4, #0x12]
+ ldrb r0, [r4, #0x11]
+ strb r0, [r4, #0x16]
+ strb r0, [r4, #0x17]
+ ldr r0, [r4, #0x1c]
+ strh r1, [r0]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #4]
+ bl FUN_02024FF4
+ strb r0, [r4, #0x10]
+ ldr r0, [r4, #0x1c]
+ ldr r0, [r0, #4]
+ bl FUN_02025084
+ strh r0, [r4, #0xa]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D754C: .word 0x0000FFFF
+ thumb_func_end MOD61_021D74E0
+
+ thumb_func_start MOD61_021D7550
+MOD61_021D7550: ; 0x021D7550
+ push {r3, lr}
+ bl FUN_02006278
+ bl MOD61_021D78D4
+ cmp r0, #0
+ beq _021D7562
+ mov r0, #1
+ pop {r3, pc}
+_021D7562:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7550
+
+ thumb_func_start MOD61_021D7568
+MOD61_021D7568: ; 0x021D7568
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ ldr r4, [r0]
+ add r0, r5, #0
+ bl FUN_0200627C
+ add r0, r4, #0
+ bl FUN_020168D0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7568
+
+ thumb_func_start MOD61_021D7584
+MOD61_021D7584: ; 0x021D7584
+ push {r4, r5, r6, lr}
+ mov r4, #0
+ add r6, r0, #0
+ add r5, r4, #0
+_021D758C:
+ ldr r0, [r6, #0x1c]
+ add r0, #0x1a
+ add r0, r0, r5
+ bl FUN_0201385C
+ cmp r0, #0
+ beq _021D759E
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021D759E:
+ add r4, r4, #1
+ add r5, #8
+ cmp r4, #3
+ blt _021D758C
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7584
+
+ thumb_func_start MOD61_021D75AC
+MOD61_021D75AC: ; 0x021D75AC
+ push {r3, lr}
+ ldr r0, _021D75C8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ beq _021D75C2
+ ldr r0, _021D75CC ; =0x000005E3
+ bl FUN_020054C8
+ mov r0, #1
+ pop {r3, pc}
+_021D75C2:
+ mov r0, #0
+ pop {r3, pc}
+ nop
+_021D75C8: .word 0x021C48B8
+_021D75CC: .word 0x000005E3
+ thumb_func_end MOD61_021D75AC
+
+ thumb_func_start MOD61_021D75D0
+MOD61_021D75D0: ; 0x021D75D0
+ push {r3, r4, r5, lr}
+ ldr r1, _021D76E0 ; =0x021C48B8
+ add r4, r0, #0
+ ldr r2, [r1, #0x48]
+ mov r1, #1
+ add r5, r2, #0
+ mov r3, #0
+ tst r5, r1
+ beq _021D7648
+ ldrb r1, [r4, #0x11]
+ cmp r1, #3
+ bne _021D762E
+ ldrb r1, [r4, #0x12]
+ cmp r1, #0
+ bne _021D7612
+ bl MOD61_021D7584
+ cmp r0, #0
+ beq _021D7604
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #2
+ strb r0, [r4, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7604:
+ ldr r0, [r4, #0x1c]
+ mov r1, #3
+ strh r1, [r0]
+ ldr r0, _021D76E8 ; =0x000005E3
+ bl FUN_020054C8
+ b _021D7620
+_021D7612:
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7620:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0
+ strb r1, [r0, #3]
+ ldr r1, [r4, #0x1c]
+ ldrb r0, [r1, #3]
+ strb r0, [r1, #2]
+ b _021D7644
+_021D762E:
+ ldr r0, [r4, #0x1c]
+ strb r1, [r0, #2]
+ ldr r1, [r4, #0x1c]
+ ldrb r0, [r1, #2]
+ strh r0, [r1]
+ ldrb r1, [r4, #0x12]
+ ldr r0, [r4, #0x1c]
+ strb r1, [r0, #3]
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+_021D7644:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D7648:
+ mov r0, #2
+ tst r0, r2
+ beq _021D765C
+ ldr r0, _021D76E4 ; =0x000005DD
+ bl FUN_020054C8
+ mov r0, #3
+ strb r0, [r4, #0xc]
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D765C:
+ mov r0, #8
+ tst r0, r2
+ beq _021D766C
+ mov r0, #3
+ strb r0, [r4, #0x11]
+ strb r3, [r4, #0x12]
+ add r3, r1, #0
+ b _021D76BE
+_021D766C:
+ mov r0, #0x80
+ tst r0, r2
+ beq _021D7688
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #1
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r3
+ mov r0, #0x1e
+ ror r2, r0
+ add r0, r3, r2
+ strb r0, [r4, #0x11]
+ add r3, r1, #0
+ b _021D76BE
+_021D7688:
+ mov r0, #0x40
+ tst r0, r2
+ beq _021D76A4
+ ldrb r0, [r4, #0x11]
+ add r0, r0, #3
+ lsr r3, r0, #0x1f
+ lsl r2, r0, #0x1e
+ sub r2, r2, r3
+ mov r0, #0x1e
+ ror r2, r0
+ add r0, r3, r2
+ strb r0, [r4, #0x11]
+ add r3, r1, #0
+ b _021D76BE
+_021D76A4:
+ mov r0, #0x30
+ tst r0, r2
+ beq _021D76BA
+ ldrb r0, [r4, #0x11]
+ cmp r0, #3
+ bne _021D76BE
+ ldrb r0, [r4, #0x12]
+ add r3, r1, #0
+ eor r0, r1
+ strb r0, [r4, #0x12]
+ b _021D76BE
+_021D76BA:
+ add r0, r3, #0
+ pop {r3, r4, r5, pc}
+_021D76BE:
+ cmp r3, #0
+ bne _021D76C6
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D76C6:
+ ldr r0, _021D76EC ; =0x000005DC
+ bl FUN_020054C8
+ ldrb r1, [r4, #0x11]
+ cmp r1, #3
+ bne _021D76DA
+ ldrb r0, [r4, #0x12]
+ add r0, r1, r0
+ strb r0, [r4, #0x16]
+ b _021D76DC
+_021D76DA:
+ strb r1, [r4, #0x16]
+_021D76DC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D76E0: .word 0x021C48B8
+_021D76E4: .word 0x000005DD
+_021D76E8: .word 0x000005E3
+_021D76EC: .word 0x000005DC
+ thumb_func_end MOD61_021D75D0
+
+ thumb_func_start MOD61_021D76F0
+MOD61_021D76F0: ; 0x021D76F0
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldrh r0, [r5, #8]
+ cmp r0, #0
+ beq _021D7702
+ cmp r0, #1
+ beq _021D774E
+ b _021D777C
+_021D7702:
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ mov r2, #0xa
+ mov r3, #6
+ bl FUN_0200D0BC
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #0xff
+ bl FUN_02019620
+ ldr r1, [r5]
+ mov r0, #0x4c
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #0x20]
+ mov r1, #2
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D7788 ; =0x0001020F
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ add r2, r4, #0
+ str r3, [sp, #0xc]
+ bl FUN_0201BDE0
+ add r0, r4, #0
+ bl FUN_02021A20
+ b _021D777C
+_021D774E:
+ ldr r0, _021D778C ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #3
+ tst r0, r1
+ bne _021D775E
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D775E:
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ add r0, #0x94
+ bl FUN_02019570
+ mov r0, #0
+ strh r0, [r5, #8]
+ ldrb r1, [r5, #0xd]
+ add sp, #0x10
+ strb r1, [r5, #0xc]
+ pop {r3, r4, r5, pc}
+_021D777C:
+ ldrh r0, [r5, #8]
+ add r0, r0, #1
+ strh r0, [r5, #8]
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D7788: .word 0x0001020F
+_021D778C: .word 0x021C48B8
+ thumb_func_end MOD61_021D76F0
+
+ thumb_func_start MOD61_021D7790
+MOD61_021D7790: ; 0x021D7790
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4]
+ ldr r1, _021D77B0 ; =0x021D842C
+ str r0, [sp]
+ ldr r0, [r4, #0x18]
+ mov r2, #1
+ mov r3, #5
+ bl FUN_02002198
+ add r4, #0xa4
+ str r0, [r4]
+ add sp, #4
+ pop {r3, r4, pc}
+ nop
+_021D77B0: .word 0x021D842C
+ thumb_func_end MOD61_021D7790
+
+ thumb_func_start MOD61_021D77B4
+MOD61_021D77B4: ; 0x021D77B4
+ push {r3, lr}
+ add r1, r0, #0
+ add r0, #0xa4
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_020021AC
+ cmp r0, #0
+ beq _021D77D0
+ mov r1, #1
+ mvn r1, r1
+ cmp r0, r1
+ beq _021D77D4
+ b _021D77D8
+_021D77D0:
+ mov r0, #1
+ pop {r3, pc}
+_021D77D4:
+ mov r0, #0
+ pop {r3, pc}
+_021D77D8:
+ add r0, r1, #1
+ pop {r3, pc}
+ thumb_func_end MOD61_021D77B4
+
+ thumb_func_start MOD61_021D77DC
+MOD61_021D77DC: ; 0x021D77DC
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ add r5, r0, #0
+ ldrh r1, [r5, #8]
+ cmp r1, #0
+ beq _021D77F2
+ cmp r1, #1
+ beq _021D7864
+ cmp r1, #2
+ beq _021D787C
+ b _021D78BA
+_021D77F2:
+ mov r1, #1
+ add r0, #0x94
+ mov r2, #0xa
+ mov r3, #6
+ strb r1, [r5, #0x13]
+ bl FUN_0200D0BC
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #0xff
+ bl FUN_02019620
+ ldr r1, [r5]
+ mov r0, #0x4c
+ bl FUN_020219F4
+ add r4, r0, #0
+ ldr r0, [r5, #0x20]
+ mov r1, #3
+ add r2, r4, #0
+ bl FUN_0200A8E0
+ mov r3, #0
+ str r3, [sp]
+ ldrb r0, [r5, #0x10]
+ mov r1, #1
+ add r2, r4, #0
+ str r0, [sp, #4]
+ ldr r0, _021D78C8 ; =0x0001020F
+ str r0, [sp, #8]
+ add r0, r5, #0
+ str r3, [sp, #0xc]
+ add r0, #0x94
+ bl FUN_0201BDE0
+ strb r0, [r5, #0xf]
+ add r0, r4, #0
+ bl FUN_02021A20
+ mov r1, #0
+ ldr r0, _021D78CC ; =0x00007FFF
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldrb r2, [r5, #0x17]
+ ldr r0, [r5, #0x30]
+ mov r3, #1
+ add r2, #0x22
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_020039E8
+ ldrb r0, [r5, #0x16]
+ strb r0, [r5, #0x17]
+ mov r0, #0
+ strb r0, [r5, #0x15]
+ strb r0, [r5, #0x14]
+ b _021D78BA
+_021D7864:
+ ldrb r0, [r5, #0xf]
+ bl FUN_0201BD70
+ cmp r0, #0
+ beq _021D7874
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D7874:
+ add r0, r5, #0
+ bl MOD61_021D7790
+ b _021D78BA
+_021D787C:
+ bl MOD61_021D77B4
+ add r4, r0, #0
+ bpl _021D788A
+ add sp, #0x10
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021D788A:
+ add r0, r5, #0
+ add r0, #0x94
+ mov r1, #1
+ bl FUN_0200D0E0
+ add r0, r5, #0
+ add r0, #0x94
+ bl FUN_02019570
+ mov r0, #0
+ strh r0, [r5, #8]
+ cmp r4, #0
+ beq _021D78B0
+ ldr r1, _021D78D0 ; =0x0000FFFF
+ ldr r0, [r5, #0x1c]
+ add sp, #0x10
+ strh r1, [r0]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D78B0:
+ ldrb r1, [r5, #0xd]
+ add sp, #0x10
+ strb r1, [r5, #0xc]
+ strb r0, [r5, #0x13]
+ pop {r3, r4, r5, pc}
+_021D78BA:
+ ldrh r0, [r5, #8]
+ add r0, r0, #1
+ strh r0, [r5, #8]
+ mov r0, #0
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021D78C8: .word 0x0001020F
+_021D78CC: .word 0x00007FFF
+_021D78D0: .word 0x0000FFFF
+ thumb_func_end MOD61_021D77DC
+
+ thumb_func_start MOD61_021D78D4
+MOD61_021D78D4: ; 0x021D78D4
+ push {r3, r4, lr}
+ sub sp, #0xc
+ add r4, r0, #0
+ ldr r1, [r4, #4]
+ cmp r1, #5
+ bls _021D78E2
+ b _021D7A46
+_021D78E2:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D78EE: ; jump table
+ .short _021D78FA - _021D78EE - 2 ; case 0
+ .short _021D7940 - _021D78EE - 2 ; case 1
+ .short _021D798A - _021D78EE - 2 ; case 2
+ .short _021D79A6 - _021D78EE - 2 ; case 3
+ .short _021D79E0 - _021D78EE - 2 ; case 4
+ .short _021D7A32 - _021D78EE - 2 ; case 5
+_021D78FA:
+ 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, _021D7A54 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7A58 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ bl FUN_0200E388
+ mov r0, #1
+ bl FUN_0200E388
+ b _021D7A46
+_021D7940:
+ bl MOD61_021D7B38
+ cmp r0, #0
+ bne _021D794E
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D794E:
+ ldr r0, _021D7A5C ; =MOD61_021D7A6C
+ add r1, r4, #0
+ bl FUN_02015F10
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ mov r0, #0
+ bl FUN_0200E394
+ mov r1, #4
+ ldr r0, _021D7A60 ; =0x04000050
+ mov r2, #8
+ mov r3, #0x1c
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ mov r0, #0x10
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #5
+ ldr r0, [r4, #0x30]
+ ldr r2, _021D7A64 ; =0x0000FFFF
+ sub r3, r1, #6
+ bl FUN_02003210
+ b _021D7A46
+_021D798A:
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D7996
+ bl FUN_0200BC1C
+_021D7996:
+ ldr r0, [r4, #0x30]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _021D7A46
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D79A6:
+ add r0, #0xac
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D79B2
+ bl FUN_0200BC1C
+_021D79B2:
+ ldrb r1, [r4, #0xc]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _021D7A68 ; =0x021D8444
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ bne _021D79C8
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D79C8:
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r1, #5
+ ldr r0, [r4, #0x30]
+ ldr r2, _021D7A64 ; =0x0000FFFF
+ sub r3, r1, #6
+ bl FUN_02003210
+ b _021D7A46
+_021D79E0:
+ ldr r0, [r4, #0x30]
+ bl FUN_020038E4
+ cmp r0, #0
+ beq _021D79FC
+ add r4, #0xac
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021D79F6
+ bl FUN_0200BC1C
+_021D79F6:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D79FC:
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_0200E3A0
+ mov r0, #1
+ mov r1, #0
+ bl FUN_0200E3A0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D7A54 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D7A58 ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ b _021D7A46
+_021D7A32:
+ bl MOD61_021D7B84
+ cmp r0, #0
+ beq _021D7A40
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, pc}
+_021D7A40:
+ add sp, #0xc
+ mov r0, #0
+ pop {r3, r4, pc}
+_021D7A46:
+ ldr r0, [r4, #4]
+ add r0, r0, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, pc}
+ nop
+_021D7A54: .word 0xFFFFE0FF
+_021D7A58: .word 0x04001000
+_021D7A5C: .word MOD61_021D7A6C
+_021D7A60: .word 0x04000050
+_021D7A64: .word 0x0000FFFF
+_021D7A68: .word 0x021D8444
+ thumb_func_end MOD61_021D78D4
+
+ thumb_func_start MOD61_021D7A6C
+MOD61_021D7A6C: ; 0x021D7A6C
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x30]
+ cmp r0, #0
+ beq _021D7A7A
+ bl FUN_0200372C
+_021D7A7A:
+ add r0, r4, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D7A88
+ bl FUN_0200BC30
+_021D7A88:
+ bl FUN_020AEEB8
+ ldr r0, [r4, #0x18]
+ bl FUN_0201AB60
+ ldr r3, _021D7AA0 ; =0x027E0000
+ ldr r1, _021D7AA4 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r4, pc}
+ .align 2, 0
+_021D7AA0: .word 0x027E0000
+_021D7AA4: .word 0x00003FF8
+ thumb_func_end MOD61_021D7A6C
+
+ thumb_func_start MOD61_021D7AA8
+MOD61_021D7AA8: ; 0x021D7AA8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r2, [r4, #0x30]
+ cmp r2, #0
+ bne _021D7ABC
+ bl FUN_0200CAB4
+ add sp, #8
+ pop {r4, pc}
+_021D7ABC:
+ ldrb r0, [r4, #0x13]
+ cmp r0, #0
+ bne _021D7B30
+ ldrb r3, [r4, #0x17]
+ ldrb r0, [r4, #0x16]
+ cmp r3, r0
+ beq _021D7AEA
+ mov r1, #0
+ ldr r0, _021D7B34 ; =0x00007FFF
+ str r1, [sp]
+ str r0, [sp, #4]
+ add r3, #0x22
+ add r0, r2, #0
+ lsl r2, r3, #0x10
+ lsr r2, r2, #0x10
+ mov r3, #1
+ bl FUN_020039E8
+ ldrb r0, [r4, #0x16]
+ strb r0, [r4, #0x17]
+ mov r0, #0
+ strb r0, [r4, #0x15]
+ strb r0, [r4, #0x14]
+_021D7AEA:
+ ldrb r0, [r4, #0x14]
+ mov r1, #0
+ mov r3, #1
+ str r0, [sp]
+ ldr r0, _021D7B34 ; =0x00007FFF
+ str r0, [sp, #4]
+ ldrb r2, [r4, #0x16]
+ ldr r0, [r4, #0x30]
+ add r2, #0x22
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_020039E8
+ ldrb r0, [r4, #0x15]
+ ldrb r1, [r4, #0x14]
+ cmp r0, #0
+ beq _021D7B20
+ sub r0, r1, #1
+ strb r0, [r4, #0x14]
+ cmp r1, #1
+ bne _021D7B30
+ ldrb r1, [r4, #0x15]
+ mov r0, #1
+ add sp, #8
+ eor r0, r1
+ strb r0, [r4, #0x15]
+ pop {r4, pc}
+_021D7B20:
+ add r0, r1, #1
+ strb r0, [r4, #0x14]
+ cmp r1, #0xc
+ bne _021D7B30
+ ldrb r1, [r4, #0x15]
+ mov r0, #1
+ eor r0, r1
+ strb r0, [r4, #0x15]
+_021D7B30:
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+_021D7B34: .word 0x00007FFF
+ thumb_func_end MOD61_021D7AA8
+
+ thumb_func_start MOD61_021D7B38
+MOD61_021D7B38: ; 0x021D7B38
+ push {r4, lr}
+ add r4, r0, #0
+ ldrh r1, [r4, #8]
+ cmp r1, #3
+ bhi _021D7B7A
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7B4E: ; jump table
+ .short _021D7B56 - _021D7B4E - 2 ; case 0
+ .short _021D7B5C - _021D7B4E - 2 ; case 1
+ .short _021D7B62 - _021D7B4E - 2 ; case 2
+ .short _021D7B6E - _021D7B4E - 2 ; case 3
+_021D7B56:
+ bl MOD61_021D7BD0
+ b _021D7B7A
+_021D7B5C:
+ bl MOD61_021D7CE8
+ b _021D7B7A
+_021D7B62:
+ bl MOD61_021D7FF4
+ add r0, r4, #0
+ bl MOD61_021D8114
+ b _021D7B7A
+_021D7B6E:
+ bl MOD61_021D8228
+ mov r0, #0
+ strh r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_021D7B7A:
+ ldrh r0, [r4, #8]
+ add r0, r0, #1
+ strh r0, [r4, #8]
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD61_021D7B38
+
+ thumb_func_start MOD61_021D7B84
+MOD61_021D7B84: ; 0x021D7B84
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD61_021D83E8
+ add r0, r4, #0
+ add r0, #0x24
+ beq _021D7B98
+ ldr r0, [r4, #0x20]
+ bl FUN_0200A8B8
+_021D7B98:
+ add r0, r4, #0
+ bl MOD61_021D80F4
+ add r0, r4, #0
+ bl MOD61_021D7FB4
+ add r0, r4, #0
+ bl MOD61_021D7CB4
+ mov r0, #1
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D7B84
+
+ thumb_func_start MOD61_021D7BB0
+MOD61_021D7BB0: ; 0x021D7BB0
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7BCC ; =0x021D84A0
+ add r3, sp, #0
+ mov r2, #5
+_021D7BBA:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7BBA
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7BCC: .word 0x021D84A0
+ thumb_func_end MOD61_021D7BB0
+
+ thumb_func_start MOD61_021D7BD0
+MOD61_021D7BD0: ; 0x021D7BD0
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ add r4, r0, #0
+ bl MOD61_021D7BB0
+ ldr r0, [r4]
+ bl FUN_02016B94
+ add r3, sp, #0
+ ldr r5, _021D7CAC ; =0x021D8434
+ str r0, [r4, #0x18]
+ add r2, r3, #0
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ add r0, r2, #0
+ bl FUN_02016BBC
+ ldr r5, _021D7CB0 ; =0x021D84C8
+ add r3, sp, #0x10
+ mov r2, #0x11
+_021D7BFC:
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7BFC
+ ldr r0, [r5]
+ mov r1, #0
+ str r0, [r3]
+ ldr r0, [r4, #0x18]
+ add r2, sp, #0x10
+ add r3, r1, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ add r2, sp, #0x2c
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ add r2, sp, #0x48
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ add r2, sp, #0x64
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ add r2, sp, #0x80
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_02018744
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_02018744
+ mov r0, #0
+ ldr r3, [r4]
+ mov r1, #0x20
+ add r2, r0, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #3
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ ldr r3, [r4]
+ mov r0, #4
+ mov r1, #0x20
+ mov r2, #0
+ bl FUN_02017F18
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D7CAC: .word 0x021D8434
+_021D7CB0: .word 0x021D84C8
+ thumb_func_end MOD61_021D7BD0
+
+ thumb_func_start MOD61_021D7CB4
+MOD61_021D7CB4: ; 0x021D7CB4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x18]
+ mov r1, #4
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #3
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #2
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #1
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ mov r1, #0
+ bl FUN_020178A0
+ ldr r0, [r4, #0x18]
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD61_021D7CB4
+
+ thumb_func_start MOD61_021D7CE8
+MOD61_021D7CE8: ; 0x021D7CE8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ ldr r1, [r5]
+ ldrb r4, [r0, #0xf]
+ str r4, [sp, #0x1c]
+ ldr r0, [sp, #0x1c]
+ add r4, #0xc
+ str r0, [sp, #0x20]
+ add r0, #0x18
+ str r0, [sp, #0x20]
+ mov r0, #0x4f
+ bl FUN_02006670
+ mov r1, #0
+ str r1, [sp]
+ add r6, r0, #0
+ ldr r0, [r5]
+ mov r2, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ mov r3, #5
+ bl FUN_0200CB00
+ ldrh r0, [r5, #0xa]
+ mov r1, #0
+ mov r2, #0xa
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ ldr r0, [r5]
+ mov r3, #6
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ bl FUN_0200CD68
+ mov r0, #0x4f
+ add r1, r4, #0
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r7, r0, #0
+ add r0, r6, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ bl FUN_02006774
+ add r0, r7, #0
+ add r1, sp, #0x28
+ bl FUN_020B0088
+ ldr r3, [sp, #0x28]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x18]
+ ldr r3, [r3, #0x10]
+ mov r1, #1
+ bl FUN_02017E14
+ ldr r3, [sp, #0x28]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5, #0x18]
+ ldr r3, [r3, #0x10]
+ mov r1, #4
+ bl FUN_02017E14
+ add r0, r7, #0
+ bl FUN_02016A18
+ ldr r1, [sp, #0x1c]
+ mov r0, #0x4f
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_020169D8
+ add r4, r0, #0
+ ldr r1, [sp, #0x1c]
+ add r0, r6, #0
+ add r2, r4, #0
+ bl FUN_02006774
+ add r0, r4, #0
+ add r1, sp, #0x24
+ bl FUN_020B0138
+ ldr r2, [sp, #0x24]
+ mov r0, #4
+ ldr r1, [r2, #0xc]
+ ldr r2, [r2, #8]
+ mov r3, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ bl FUN_02017FB4
+ ldr r0, [r5]
+ bl FUN_02002FD0
+ str r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0
+ mov r2, #0xe0
+ bl FUN_02003008
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #2
+ mov r2, #0x60
+ bl FUN_02003008
+ mov r0, #0x60
+ str r0, [sp]
+ ldr r1, [sp, #0x24]
+ mov r2, #0
+ ldr r0, [r5, #0x30]
+ ldr r1, [r1, #0xc]
+ add r3, r2, #0
+ bl FUN_02003054
+ ldrb r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021D7E00
+ mov r0, #0x20
+ str r0, [sp]
+ ldr r1, [sp, #0x24]
+ ldr r0, [r5, #0x30]
+ ldr r1, [r1, #0xc]
+ mov r2, #0
+ add r1, #0x60
+ mov r3, #0x10
+ bl FUN_02003054
+_021D7E00:
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0x60
+ str r0, [sp, #4]
+ mov r2, #0
+ str r2, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0x13
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x30
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0xe
+ mov r2, #6
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x40
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0xe
+ mov r2, #7
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x50
+ str r0, [sp, #8]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0x26
+ mov r2, #0x18
+ bl FUN_020030E8
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x60
+ str r0, [sp, #8]
+ ldrh r2, [r5, #0xa]
+ ldr r0, [r5, #0x30]
+ ldr r3, [r5]
+ mov r1, #0x26
+ add r2, #0x19
+ bl FUN_020030E8
+ mov r0, #0x10
+ mov r1, #0
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldr r0, [r5, #0x30]
+ add r2, r1, #0
+ mov r3, #0x70
+ bl FUN_020039E8
+ mov r0, #0x10
+ str r0, [sp]
+ mov r2, #0
+ str r2, [sp, #4]
+ ldr r0, [r5, #0x30]
+ mov r1, #2
+ mov r3, #0x30
+ bl FUN_020039E8
+ ldr r0, [r5, #0x30]
+ mov r1, #1
+ bl FUN_020038F0
+ ldr r0, [r5, #0x30]
+ bl FUN_0200372C
+ add r0, r4, #0
+ bl FUN_02016A18
+ ldr r1, [sp, #0x20]
+ mov r0, #0x4f
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02016998
+ str r0, [r5, #0x34]
+ ldr r1, [sp, #0x20]
+ ldr r2, [r5, #0x34]
+ add r0, r6, #0
+ bl FUN_02006774
+ add r1, r5, #0
+ ldr r0, [r5, #0x34]
+ add r1, #0x3c
+ bl FUN_020B0180
+ mov r0, #0x4f
+ mov r1, #0x24
+ bl LoadFromNARC_7
+ add r1, r0, #0
+ ldr r0, [r5]
+ bl FUN_02016998
+ str r0, [r5, #0x38]
+ ldr r2, [r5, #0x38]
+ add r0, r6, #0
+ mov r1, #0x24
+ bl FUN_02006774
+ add r1, r5, #0
+ ldr r0, [r5, #0x38]
+ add r1, #0x40
+ bl FUN_020B0180
+ add r0, r6, #0
+ bl FUN_020066F4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x11
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x18]
+ ldr r2, _021D7FAC ; =0x00002001
+ mov r1, #4
+ bl FUN_02018540
+ mov r2, #0
+ ldr r0, [r5, #0x3c]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #3
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x18]
+ bl FUN_02018170
+ ldr r0, [r5, #0x18]
+ mov r1, #3
+ bl FUN_0201AC68
+ ldr r0, [r5, #0x18]
+ mov r1, #4
+ bl FUN_0201AC68
+ ldrb r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021D7FA6
+ ldr r0, [r5, #0x40]
+ mov r1, #0x20
+ str r1, [sp]
+ mov r1, #0x18
+ str r1, [sp, #4]
+ add r1, r0, #0
+ add r1, #0xc
+ mov r2, #0
+ str r1, [sp, #8]
+ str r2, [sp, #0xc]
+ str r2, [sp, #0x10]
+ ldrh r1, [r0]
+ add r3, r2, #0
+ lsl r1, r1, #0x15
+ lsr r1, r1, #0x18
+ str r1, [sp, #0x14]
+ ldrh r0, [r0, #2]
+ mov r1, #2
+ lsl r0, r0, #0x15
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x18]
+ ldr r0, [r5, #0x18]
+ bl FUN_02018170
+ ldr r0, [r5, #0x18]
+ mov r1, #2
+ bl FUN_0201AC68
+ mov r2, #0
+ strb r2, [r5, #0x14]
+ ldr r0, _021D7FB0 ; =MOD61_021D7AA8
+ add r1, r5, #0
+ strb r2, [r5, #0x15]
+ bl FUN_0200CA44
+_021D7FA6:
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D7FAC: .word 0x00002001
+_021D7FB0: .word MOD61_021D7AA8
+ thumb_func_end MOD61_021D7CE8
+
+ thumb_func_start MOD61_021D7FB4
+MOD61_021D7FB4: ; 0x021D7FB4
+ push {r3, r4, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldr r0, [r4, #0x38]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x34]
+ bl FUN_02016A18
+ ldr r0, [r4, #0x30]
+ mov r1, #2
+ bl FUN_02003038
+ ldr r0, [r4, #0x30]
+ mov r1, #0
+ bl FUN_02003038
+ ldr r0, [r4, #0x30]
+ bl FUN_02002FEC
+ mov r1, #0
+ str r1, [r4, #0x30]
+ ldr r0, _021D7FF0 ; =0x04000050
+ add r2, r1, #0
+ mov r3, #0x1f
+ str r1, [sp]
+ bl G2x_SetBlendAlpha_
+ add sp, #4
+ pop {r3, r4, pc}
+ .align 2, 0
+_021D7FF0: .word 0x04000050
+ thumb_func_end MOD61_021D7FB4
+
+ thumb_func_start MOD61_021D7FF4
+MOD61_021D7FF4: ; 0x021D7FF4
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ mov r3, #3
+ add r5, r0, #0
+ str r3, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80DC ; =0x00000397
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x44
+ bl FUN_02019064
+ mov r0, #8
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80E0 ; =0x0000032F
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x54
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0xd
+ str r0, [sp]
+ mov r0, #0x1a
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80E4 ; =0x000002C7
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x64
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80E8 ; =0x000002B7
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x74
+ mov r3, #0x15
+ bl FUN_02019064
+ mov r0, #0x14
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ mov r2, #1
+ add r1, r5, #0
+ ldr r0, _021D80EC ; =0x000002A7
+ str r2, [sp, #0xc]
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x84
+ mov r3, #3
+ bl FUN_02019064
+ mov r0, #0x13
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ str r0, [sp, #0xc]
+ ldr r0, _021D80F0 ; =0x00000297
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r5, #0x18]
+ add r1, #0x94
+ mov r2, #0
+ mov r3, #2
+ bl FUN_02019064
+ mov r4, #0
+ add r5, #0x44
+ add r6, r4, #0
+_021D80BE:
+ add r0, r5, #0
+ add r1, r6, #0
+ bl FUN_02019620
+ cmp r4, #5
+ bge _021D80D0
+ add r0, r5, #0
+ bl FUN_020191D0
+_021D80D0:
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #6
+ blt _021D80BE
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D80DC: .word 0x00000397
+_021D80E0: .word 0x0000032F
+_021D80E4: .word 0x000002C7
+_021D80E8: .word 0x000002B7
+_021D80EC: .word 0x000002A7
+_021D80F0: .word 0x00000297
+ thumb_func_end MOD61_021D7FF4
+
+ thumb_func_start MOD61_021D80F4
+MOD61_021D80F4: ; 0x021D80F4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+ add r5, #0x44
+_021D80FC:
+ add r0, r5, #0
+ bl FUN_02019570
+ add r0, r5, #0
+ bl FUN_02019178
+ add r4, r4, #1
+ add r5, #0x10
+ cmp r4, #6
+ blt _021D80FC
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D80F4
+
+ thumb_func_start MOD61_021D8114
+MOD61_021D8114: ; 0x021D8114
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ mov r7, #0
+ add r6, r4, #0
+ add r5, r7, #0
+ add r6, #0x44
+_021D8122:
+ ldr r0, [r4, #0x1c]
+ add r0, #0x1a
+ add r0, r0, r5
+ bl FUN_0201385C
+ cmp r0, #0
+ beq _021D8164
+ ldr r0, [r4, #0x1c]
+ ldr r1, [r4]
+ add r0, #0x1a
+ add r0, r0, r5
+ bl FUN_020137D4
+ str r0, [sp, #0x10]
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D8220 ; =0x00010200
+ ldr r2, [sp, #0x10]
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ mov r1, #1
+ mov r3, #0
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_020191D0
+_021D8164:
+ add r7, r7, #1
+ add r5, #8
+ add r6, #0x10
+ cmp r7, #3
+ blt _021D8122
+ ldrb r0, [r4, #0xc]
+ cmp r0, #1
+ bne _021D81F8
+ ldr r2, _021D8224 ; =0x00000169
+ ldr r3, [r4]
+ mov r0, #1
+ mov r1, #0x1a
+ bl FUN_0200A86C
+ str r0, [r4, #0x20]
+ ldr r1, [r4]
+ mov r0, #0x10
+ bl FUN_020219F4
+ add r5, r0, #0
+ add r0, r4, #0
+ str r0, [sp, #0x18]
+ add r0, #0x44
+ mov r6, #0
+ str r0, [sp, #0x18]
+_021D8196:
+ add r0, r5, #0
+ bl FUN_02021A4C
+ ldr r0, [r4, #0x20]
+ add r1, r6, #0
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r0, #1
+ add r1, r5, #0
+ mov r2, #0
+ bl FUN_02002E14
+ mov r1, #0x40
+ sub r7, r1, r0
+ add r0, r6, #3
+ lsl r0, r0, #4
+ str r0, [sp, #0x14]
+ mov r0, #2
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, _021D8220 ; =0x00010200
+ lsr r3, r7, #0x1f
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r3, r7, r3
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r2, r5, #0
+ add r0, r0, r1
+ mov r1, #1
+ asr r3, r3, #1
+ bl FUN_0201BDE0
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x18]
+ add r0, r0, r1
+ bl FUN_020191D0
+ add r6, r6, #1
+ cmp r6, #2
+ blt _021D8196
+ add r0, r5, #0
+ bl FUN_02021A20
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+_021D81F8:
+ mov r0, #2
+ str r0, [sp]
+ mov r3, #0
+ ldr r0, _021D8220 ; =0x00010200
+ str r3, [sp, #4]
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ ldr r2, [r4, #0x1c]
+ add r0, r4, #0
+ ldr r2, [r2, #0x10]
+ add r0, #0x74
+ mov r1, #1
+ bl FUN_0201BDE0
+ add r4, #0x74
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8220: .word 0x00010200
+_021D8224: .word 0x00000169
+ thumb_func_end MOD61_021D8114
+
+ thumb_func_start MOD61_021D8228
+MOD61_021D8228: ; 0x021D8228
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x94
+ add r5, r0, #0
+ bl FUN_02033F20
+ ldrb r0, [r5, #0xc]
+ cmp r0, #1
+ bne _021D823A
+ b _021D83D4
+_021D823A:
+ ldr r1, [r5]
+ mov r0, #0x20
+ bl FUN_0201C24C
+ ldr r0, [r5]
+ bl FUN_0200BB14
+ add r1, r5, #0
+ add r1, #0xa8
+ str r0, [r1]
+ add r0, r5, #0
+ add r0, #0xa8
+ ldr r0, [r0]
+ bl FUN_0200BB34
+ add r1, r5, #0
+ add r1, #0xac
+ add r2, sp, #0x40
+ ldr r4, _021D83D8 ; =0x021D8480
+ str r0, [r1]
+ ldmia r4!, {r0, r1}
+ add r3, r2, #0
+ stmia r2!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r4!, {r0, r1}
+ ldr r6, _021D83DC ; =0x021D8454
+ stmia r2!, {r0, r1}
+ add r4, sp, #0x2c
+ ldmia r6!, {r0, r1}
+ add r2, r4, #0
+ stmia r4!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r6]
+ ldr r6, _021D83E0 ; =0x021D8468
+ str r0, [r4]
+ add r4, sp, #0x14
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldmia r6!, {r0, r1}
+ stmia r4!, {r0, r1}
+ add r0, r5, #0
+ add r0, #0xa8
+ add r1, r3, #0
+ ldr r0, [r0]
+ mov r3, #0x20
+ bl FUN_0200BB6C
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #3
+ bl FUN_0200BBF0
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ add r2, sp, #0x14
+ bl FUN_0200BF60
+ ldr r0, [r5]
+ bl FUN_0200A064
+ bl FUN_0206B888
+ mov r1, #0
+ add r3, r0, #0
+ str r1, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ str r1, [sp, #0xc]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C06C
+ bl FUN_0206B88C
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C124
+ bl FUN_0206B898
+ add r3, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ bl FUN_0200C13C
+ mov r6, #0
+ add r4, r6, #0
+ add r7, r6, #0
+ str r5, [sp, #0x10]
+_021D8338:
+ ldr r0, [r5, #0x1c]
+ add r3, r0, r4
+ ldrh r1, [r3, #0x14]
+ ldr r0, _021D83E4 ; =0x0000FFFF
+ cmp r1, r0
+ beq _021D83D4
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ str r6, [sp, #8]
+ ldrh r3, [r3, #0x14]
+ add r0, r5, #0
+ add r1, r5, #0
+ add r0, #0xa8
+ add r1, #0xac
+ lsl r3, r3, #0x14
+ ldr r0, [r0]
+ ldr r1, [r1]
+ mov r2, #0x13
+ lsr r3, r3, #0x14
+ bl FUN_0200C918
+ add r0, sp, #0x60
+ mov r1, #0
+ mov r2, #0x34
+ bl MI_CpuFill8
+ mov r0, #0x80
+ sub r1, r0, r7
+ add r0, sp, #0x60
+ strh r1, [r0]
+ mov r1, #0xa0
+ strh r1, [r0, #2]
+ mov r1, #0
+ strh r1, [r0, #4]
+ strh r1, [r0, #6]
+ mov r0, #2
+ str r0, [sp, #0x8c]
+ ldr r0, [r5, #0x1c]
+ add r2, sp, #0x60
+ add r0, r0, r4
+ ldrh r0, [r0, #0x14]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x1c
+ str r0, [sp, #0x6c]
+ add r0, r1, #0
+ str r0, [sp, #0x90]
+ mov r0, #1
+ str r0, [sp, #0x70]
+ add r0, r1, #0
+ str r0, [sp, #0x78]
+ str r0, [sp, #0x7c]
+ str r0, [sp, #0x80]
+ sub r0, r1, #1
+ str r0, [sp, #0x84]
+ sub r0, r1, #1
+ str r0, [sp, #0x88]
+ add r0, r5, #0
+ add r1, r5, #0
+ str r6, [sp, #0x74]
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C154
+ ldr r1, [sp, #0x10]
+ add r6, r6, #1
+ add r1, #0xb0
+ str r0, [r1]
+ ldr r0, [sp, #0x10]
+ add r4, r4, #2
+ add r0, r0, #4
+ add r7, #0x28
+ str r0, [sp, #0x10]
+ cmp r6, #3
+ blt _021D8338
+_021D83D4:
+ add sp, #0x94
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D83D8: .word 0x021D8480
+_021D83DC: .word 0x021D8454
+_021D83E0: .word 0x021D8468
+_021D83E4: .word 0x0000FFFF
+ thumb_func_end MOD61_021D8228
+
+ thumb_func_start MOD61_021D83E8
+MOD61_021D83E8: ; 0x021D83E8
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldrb r0, [r6, #0xc]
+ cmp r0, #0
+ bne _021D8428
+ mov r4, #0
+ add r5, r6, #0
+_021D83F6:
+ add r0, r5, #0
+ add r0, #0xb0
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021D8404
+ bl FUN_0200C3DC
+_021D8404:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #3
+ blt _021D83F6
+ add r0, r6, #0
+ add r1, r6, #0
+ add r0, #0xa8
+ add r1, #0xac
+ ldr r0, [r0]
+ ldr r1, [r1]
+ bl FUN_0200C398
+ add r6, #0xa8
+ ldr r0, [r6]
+ bl FUN_0200BD04
+ bl FUN_0201C29C
+_021D8428:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD61_021D83E8
+
+ .section .rodata
+ ; 0x021D842C
+ .incbin "baserom.nds", 0x2AE94C, 0x128