summaryrefslogtreecommitdiff
path: root/arm9/modules
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/modules')
-rw-r--r--arm9/modules/52/asm/module_52.s2
-rw-r--r--arm9/modules/57/asm/module_57.s4303
2 files changed, 4305 insertions, 0 deletions
diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s
index b40034fb..24ecbec1 100644
--- a/arm9/modules/52/asm/module_52.s
+++ b/arm9/modules/52/asm/module_52.s
@@ -245,4 +245,6 @@ _021D76C4: .word 0x00000BB8
.section .rodata
; 0x021D76C8
+ .global MOD52_UNK_021D76C8
+MOD52_UNK_021D76C8: ; 0x021D76C8
.incbin "baserom.nds", 0x299BE8, 0x208
diff --git a/arm9/modules/57/asm/module_57.s b/arm9/modules/57/asm/module_57.s
new file mode 100644
index 00000000..01b106a0
--- /dev/null
+++ b/arm9/modules/57/asm/module_57.s
@@ -0,0 +1,4303 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD57_021D74E0
+MOD57_021D74E0: ; 0x021D74E0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r5, r0, #0
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F34
+ bl FUN_0201E6D8
+ bl FUN_0201E740
+ mov r2, #1
+ lsl r2, r2, #0x1a
+ ldr r1, [r2]
+ ldr r0, _021D76E8 ; =0xFFFFE0FF
+ and r1, r0
+ str r1, [r2]
+ ldr r2, _021D76EC ; =0x04001000
+ ldr r1, [r2]
+ and r0, r1
+ str r0, [r2]
+ mov r0, #4
+ mov r1, #8
+ bl FUN_0201669C
+ mov r2, #0xa
+ mov r0, #3
+ mov r1, #0x19
+ lsl r2, r2, #0xe
+ bl FUN_0201681C
+ ldr r1, _021D76F0 ; =0x00003320
+ add r0, r5, #0
+ mov r2, #0x19
+ bl FUN_02006268
+ ldr r2, _021D76F0 ; =0x00003320
+ mov r1, #0
+ add r4, r0, #0
+ blx Call_FillMemWithValue
+ add r0, r5, #0
+ bl FUN_0200628C
+ add r1, r4, #0
+ add r1, #0xb4
+ str r0, [r1]
+ mov r0, #0x19
+ bl FUN_02016B94
+ str r0, [r4]
+ add r0, r4, #0
+ bl MOD57_021D79AC
+ bl MOD57_021D7A14
+ ldr r0, [r4]
+ bl MOD57_021D7B94
+ add r0, r4, #0
+ bl MOD57_021D7CA4
+ bl FUN_0201CC08
+ mov r0, #4
+ bl FUN_0201CC24
+ mov r1, #0
+ mov r0, #0x38
+ add r2, r1, #0
+ bl FUN_0200433C
+ ldr r0, _021D76F4 ; =0x000032F0
+ add r0, r4, r0
+ bl MOD57_021D95A8
+ ldr r0, _021D76F8 ; =0x00000695
+ bl FUN_020054C8
+ ldr r0, _021D76FC ; =0x000030E4
+ add r0, r4, r0
+ bl MOD57_021D9184
+ mov r0, #0
+ add r1, r0, #0
+ add r2, sp, #0xc
+ add r5, r0, #0
+ mov r6, #1
+_021D7598:
+ add r3, r4, #0
+ add r3, #0xb4
+ ldr r3, [r3]
+ add r3, r3, r1
+ ldr r3, [r3, #0x48]
+ lsl r3, r3, #0x1f
+ asr r3, r3, #0x1f
+ beq _021D75AC
+ strb r6, [r2]
+ b _021D75AE
+_021D75AC:
+ strb r5, [r2]
+_021D75AE:
+ add r0, r0, #1
+ add r1, r1, #4
+ add r2, r2, #1
+ cmp r0, #8
+ blt _021D7598
+ ldr r0, _021D76FC ; =0x000030E4
+ add r1, sp, #0xc
+ add r0, r4, r0
+ bl MOD57_021D92F4
+ ldr r0, [r4]
+ add r1, r4, #4
+ bl MOD57_021D899C
+ mov r5, #0
+ mov r6, #1
+_021D75CE:
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0, #2]
+ asr r0, r5
+ tst r0, r6
+ beq _021D75E4
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD57_021D8428
+_021D75E4:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #8
+ blo _021D75CE
+ ldr r0, [r4]
+ mov r1, #3
+ bl FUN_02017CD0
+ add r1, r4, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ add r0, r4, #4
+ bl MOD57_021D89F0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0, #4]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ beq _021D761E
+ ldr r2, _021D7700 ; =0x0000330C
+ add r0, r4, #0
+ ldr r2, [r4, r2]
+ add r0, #0x54
+ mov r1, #1
+ bl MOD57_021D9144
+_021D761E:
+ mov r1, #0xc3
+ mov r5, #0
+ lsl r1, r1, #6
+ str r5, [r4, r1]
+ ldr r0, _021D7704 ; =0x00003318
+ sub r2, r5, #1
+ strb r5, [r4, r0]
+ add r1, #0x14
+ str r2, [r4, r1]
+ add r1, r0, #0
+ sub r1, #0x2c
+ str r5, [r4, r1]
+ add r0, r0, #5
+ ldr r7, _021D76FC ; =0x000030E4
+ strb r5, [r4, r0]
+_021D763C:
+ ldr r0, _021D7708 ; =0x00003310
+ add r2, r4, r5
+ mov r1, #0
+ strb r1, [r2, r0]
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r1, [r0]
+ lsl r0, r5, #2
+ add r1, #0x48
+ ldr r0, [r1, r0]
+ lsl r1, r0, #0x1f
+ asr r1, r1, #0x1f
+ beq _021D76A8
+ asr r0, r0, #1
+ bl MOD57_021D870C
+ add r6, r0, #0
+ cmp r6, #4
+ bhi _021D7680
+ bne _021D7670
+ add r0, r4, r7
+ add r1, r5, #0
+ mov r2, #0
+ bl MOD57_021D951C
+ b _021D7680
+_021D7670:
+ mov r2, #3
+ sub r2, r2, r6
+ lsl r2, r2, #0x18
+ add r0, r4, r7
+ add r1, r5, #0
+ lsr r2, r2, #0x18
+ bl MOD57_021D951C
+_021D7680:
+ cmp r6, #3
+ bne _021D7694
+ lsl r0, r5, #2
+ add r1, r4, r0
+ ldr r0, _021D770C ; =0x00003260
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ b _021D76A8
+_021D7694:
+ cmp r6, #4
+ bne _021D76A8
+ lsl r0, r5, #2
+ add r1, r4, r0
+ mov r0, #0xca
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D76A8:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #8
+ blo _021D763C
+ bl MOD57_021D8588
+ ldr r0, _021D7710 ; =MOD57_021D848C
+ mov r1, #0
+ bl FUN_02015F10
+ bl FUN_02033F20
+ mov r0, #1
+ mov r1, #0x2a
+ bl FUN_020051EC
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r0, #0x19
+ mov r1, #3
+ str r0, [sp, #8]
+ mov r0, #2
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #1
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D76E8: .word 0xFFFFE0FF
+_021D76EC: .word 0x04001000
+_021D76F0: .word 0x00003320
+_021D76F4: .word 0x000032F0
+_021D76F8: .word 0x00000695
+_021D76FC: .word 0x000030E4
+_021D7700: .word 0x0000330C
+_021D7704: .word 0x00003318
+_021D7708: .word 0x00003310
+_021D770C: .word 0x00003260
+_021D7710: .word MOD57_021D848C
+ thumb_func_end MOD57_021D74E0
+
+ thumb_func_start MOD57_021D7714
+MOD57_021D7714: ; 0x021D7714
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0xc
+ add r5, r1, #0
+ bl FUN_02006278
+ ldr r1, [r5]
+ add r4, r0, #0
+ cmp r1, #4
+ bhi _021D7744
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D7732: ; jump table
+ .short _021D773C - _021D7732 - 2 ; case 0
+ .short _021D774C - _021D7732 - 2 ; case 1
+ .short _021D786A - _021D7732 - 2 ; case 2
+ .short _021D7878 - _021D7732 - 2 ; case 3
+ .short _021D7886 - _021D7732 - 2 ; case 4
+_021D773C:
+ bl FUN_0200E308
+ cmp r0, #0
+ bne _021D7746
+_021D7744:
+ b _021D790C
+_021D7746:
+ mov r0, #1
+ str r0, [r5]
+ b _021D790C
+_021D774C:
+ bl MOD57_021D81F8
+ add r6, r0, #0
+ cmp r6, #1
+ bne _021D77CA
+ ldr r0, _021D7920 ; =0x000030D4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D779E
+ ldr r2, _021D7924 ; =0x000032EC
+ mov r1, #1
+ add r0, r2, #0
+ str r1, [r4, r2]
+ add r0, #0x31
+ sub r2, #0x4c
+ strb r1, [r4, r0]
+ ldr r0, [r4, r2]
+ bl FUN_020200A0
+ ldr r0, _021D7928 ; =0x000032A0
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl FUN_020200BC
+ ldr r0, _021D7928 ; =0x000032A0
+ mov r1, #0xa
+ ldr r0, [r4, r0]
+ bl FUN_02020130
+ ldr r0, _021D792C ; =0x0000331A
+ mov r2, #0
+ strb r2, [r4, r0]
+ add r1, r0, #2
+ strb r2, [r4, r1]
+ add r0, r0, #1
+ strb r2, [r4, r0]
+ ldr r0, _021D7930 ; =0x000030D8
+ str r2, [r4, r0]
+ mov r0, #4
+ str r0, [r5]
+ b _021D7856
+_021D779E:
+ sub r0, r0, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r1, [r0]
+ lsl r0, r5, #2
+ add r1, #0x48
+ ldr r0, [r1, r0]
+ lsl r1, r0, #0x1f
+ asr r1, r1, #0x1f
+ beq _021D7856
+ asr r0, r0, #1
+ bl MOD57_021D870C
+ add r2, r0, #0
+ ldr r0, _021D7934 ; =0x000032F0
+ add r1, r5, #0
+ add r0, r4, r0
+ bl MOD57_021D95BC
+ b _021D7856
+_021D77CA:
+ cmp r6, #2
+ ldr r1, _021D7924 ; =0x000032EC
+ bne _021D77F0
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ beq _021D77E8
+ ldr r0, _021D7920 ; =0x000030D4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D77E8
+ mov r0, #0
+ str r0, [r4, r1]
+ mov r0, #2
+ add r1, #0x31
+ strb r0, [r4, r1]
+_021D77E8:
+ add r0, r4, #0
+ bl MOD57_021D82BC
+ b _021D7856
+_021D77F0:
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ beq _021D780A
+ add r0, r1, #0
+ add r0, #0x31
+ ldrb r0, [r4, r0]
+ cmp r0, #0
+ bne _021D780A
+ mov r0, #0
+ str r0, [r4, r1]
+ mov r0, #2
+ add r1, #0x31
+ strb r0, [r4, r1]
+_021D780A:
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0, #4]
+ lsl r0, r0, #0x1f
+ lsr r0, r0, #0x1f
+ beq _021D7822
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r4, r0
+ bl MOD57_021D874C
+_021D7822:
+ cmp r6, #3
+ bne _021D7832
+ ldr r0, _021D792C ; =0x0000331A
+ mov r1, #0
+ strb r1, [r4, r0]
+ mov r0, #3
+ str r0, [r5]
+ b _021D7856
+_021D7832:
+ cmp r6, #4
+ bne _021D7856
+ ldr r0, _021D7938 ; =0x000005DC
+ bl FUN_020054C8
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ mov r1, #0x19
+ str r1, [sp, #8]
+ mov r1, #4
+ add r2, r1, #0
+ mov r3, #0
+ bl FUN_0200E1D0
+ mov r0, #2
+ str r0, [r5]
+_021D7856:
+ add r1, r4, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ add r0, r4, #0
+ ldrb r1, [r1, #4]
+ lsl r1, r1, #0x1e
+ lsr r1, r1, #0x1f
+ bl MOD57_021D88A4
+ b _021D790C
+_021D786A:
+ bl FUN_0200E308
+ cmp r0, #0
+ beq _021D790C
+ add sp, #0xc
+ mov r0, #1
+ pop {r3, r4, r5, r6, pc}
+_021D7878:
+ bl MOD57_021D7F20
+ cmp r0, #0
+ beq _021D790C
+ mov r0, #1
+ str r0, [r5]
+ b _021D790C
+_021D7886:
+ ldr r1, _021D793C ; =0x0000331D
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ bne _021D78EA
+ bl MOD57_021D81F8
+ cmp r0, #1
+ bne _021D78B8
+ ldr r0, _021D7920 ; =0x000030D4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D78EA
+ ldr r1, _021D7924 ; =0x000032EC
+ mov r2, #1
+ add r0, r1, #0
+ str r2, [r4, r1]
+ add r0, #0x31
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ add r0, #0x30
+ strb r2, [r4, r0]
+ add r1, #0x2f
+ strb r2, [r4, r1]
+ b _021D78EA
+_021D78B8:
+ cmp r0, #2
+ bne _021D78D8
+ ldr r1, _021D7924 ; =0x000032EC
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ beq _021D78EA
+ ldr r0, _021D7920 ; =0x000030D4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _021D78EA
+ mov r0, #0
+ str r0, [r4, r1]
+ mov r0, #2
+ add r1, #0x31
+ strb r0, [r4, r1]
+ b _021D78EA
+_021D78D8:
+ ldr r0, _021D7924 ; =0x000032EC
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D78EA
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r1, #2
+ add r0, #0x31
+ strb r1, [r4, r0]
+_021D78EA:
+ ldr r0, _021D7930 ; =0x000030D8
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D78FC
+ add r0, r4, #0
+ bl MOD57_021D80F8
+ ldr r1, _021D7930 ; =0x000030D8
+ str r0, [r4, r1]
+_021D78FC:
+ ldr r0, _021D7930 ; =0x000030D8
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ beq _021D790C
+ mov r1, #0
+ str r1, [r4, r0]
+ mov r0, #1
+ str r0, [r5]
+_021D790C:
+ add r0, r4, #0
+ bl MOD57_021D85F4
+ ldr r0, _021D7940 ; =0x000030E4
+ ldr r0, [r4, r0]
+ bl FUN_0201FDEC
+ mov r0, #0
+ add sp, #0xc
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_021D7920: .word 0x000030D4
+_021D7924: .word 0x000032EC
+_021D7928: .word 0x000032A0
+_021D792C: .word 0x0000331A
+_021D7930: .word 0x000030D8
+_021D7934: .word 0x000032F0
+_021D7938: .word 0x000005DC
+_021D793C: .word 0x0000331D
+_021D7940: .word 0x000030E4
+ thumb_func_end MOD57_021D7714
+
+ thumb_func_start MOD57_021D7944
+MOD57_021D7944: ; 0x021D7944
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl FUN_02006278
+ add r4, r0, #0
+ bl MOD57_021D8588
+ add r0, r4, #0
+ bl MOD57_021D79F4
+ ldr r0, _021D79A0 ; =0x000030E4
+ add r0, r4, r0
+ bl MOD57_021D94BC
+ ldr r0, _021D79A4 ; =0x000030B8
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ ldr r0, _021D79A8 ; =0x000032F8
+ ldr r0, [r4, r0]
+ bl FUN_02016A18
+ add r0, r4, #4
+ bl MOD57_021D89D4
+ ldr r0, [r4]
+ bl MOD57_021D7EDC
+ bl FUN_0201CD04
+ add r0, r5, #0
+ bl FUN_0200627C
+ mov r0, #0
+ add r1, r0, #0
+ bl FUN_02015F10
+ mov r0, #0x19
+ bl FUN_020168D0
+ mov r0, #1
+ mov r1, #0x7f
+ bl FUN_020051EC
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D79A0: .word 0x000030E4
+_021D79A4: .word 0x000030B8
+_021D79A8: .word 0x000032F8
+ thumb_func_end MOD57_021D7944
+
+ thumb_func_start MOD57_021D79AC
+MOD57_021D79AC: ; 0x021D79AC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #4
+ mov r1, #0x19
+ bl FUN_020219F4
+ ldr r1, _021D79E8 ; =0x00003308
+ str r0, [r5, r1]
+ mov r0, #5
+ mov r1, #0x19
+ bl FUN_020219F4
+ ldr r1, _021D79EC ; =0x0000330C
+ ldr r2, _021D79F0 ; =0x0000022D
+ str r0, [r5, r1]
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x19
+ bl FUN_0200A86C
+ ldr r2, _021D79EC ; =0x0000330C
+ add r4, r0, #0
+ ldr r2, [r5, r2]
+ mov r1, #0xb
+ bl FUN_0200A8E0
+ add r0, r4, #0
+ bl FUN_0200A8B8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D79E8: .word 0x00003308
+_021D79EC: .word 0x0000330C
+_021D79F0: .word 0x0000022D
+ thumb_func_end MOD57_021D79AC
+
+ thumb_func_start MOD57_021D79F4
+MOD57_021D79F4: ; 0x021D79F4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021D7A0C ; =0x00003308
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ ldr r0, _021D7A10 ; =0x0000330C
+ ldr r0, [r4, r0]
+ bl FUN_02021A20
+ pop {r4, pc}
+ nop
+_021D7A0C: .word 0x00003308
+_021D7A10: .word 0x0000330C
+ thumb_func_end MOD57_021D79F4
+
+ thumb_func_start MOD57_021D7A14
+MOD57_021D7A14: ; 0x021D7A14
+ push {r4, lr}
+ sub sp, #0x28
+ ldr r4, _021D7A30 ; =0x021D9800
+ add r3, sp, #0
+ mov r2, #5
+_021D7A1E:
+ ldmia r4!, {r0, r1}
+ stmia r3!, {r0, r1}
+ sub r2, r2, #1
+ bne _021D7A1E
+ add r0, sp, #0
+ bl FUN_0201E66C
+ add sp, #0x28
+ pop {r4, pc}
+ .align 2, 0
+_021D7A30: .word 0x021D9800
+ thumb_func_end MOD57_021D7A14
+
+ thumb_func_start MOD57_021D7A34
+MOD57_021D7A34: ; 0x021D7A34
+ push {r3, r4, r5, lr}
+ cmp r1, #0
+ beq _021D7AB6
+ cmp r0, #5
+ bhi _021D7AC4
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7A4A: ; jump table
+ .short _021D7A56 - _021D7A4A - 2 ; case 0
+ .short _021D7A66 - _021D7A4A - 2 ; case 1
+ .short _021D7A76 - _021D7A4A - 2 ; case 2
+ .short _021D7A86 - _021D7A4A - 2 ; case 3
+ .short _021D7A96 - _021D7A4A - 2 ; case 4
+ .short _021D7AA6 - _021D7A4A - 2 ; case 5
+_021D7A56:
+ mov r0, #0x33
+ mov r1, #0
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7A66:
+ mov r0, #0x33
+ mov r1, #1
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7A76:
+ mov r0, #0x33
+ mov r1, #2
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7A86:
+ mov r0, #0x33
+ mov r1, #3
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7A96:
+ mov r0, #0x33
+ mov r1, #4
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7AA6:
+ mov r0, #0x33
+ mov r1, #5
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7AC4
+_021D7AB6:
+ mov r0, #0x33
+ mov r1, #6
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+_021D7AC4:
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #8
+ blx DC_FlushRange
+ ldr r0, [sp]
+ mov r1, #0x20
+ ldr r5, [r0, #0xc]
+ mov r2, #0x60
+ add r0, r5, #0
+ add r0, #0x20
+ blx GXS_LoadBGPltt
+ mov r1, #0x1e
+ lsl r1, r1, #4
+ add r0, r5, r1
+ mov r2, #0x20
+ blx GXS_LoadBGPltt
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD57_021D7A34
+
+ thumb_func_start MOD57_021D7AF4
+MOD57_021D7AF4: ; 0x021D7AF4
+ push {r3, r4, lr}
+ sub sp, #4
+ cmp r0, #0xa
+ beq _021D7B02
+ cmp r0, #0xb
+ beq _021D7B12
+ b _021D7B22
+_021D7B02:
+ mov r0, #0x33
+ mov r1, #7
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7B30
+_021D7B12:
+ mov r0, #0x33
+ mov r1, #8
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+ b _021D7B30
+_021D7B22:
+ mov r0, #0x33
+ mov r1, #9
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r4, r0, #0
+_021D7B30:
+ ldr r0, [sp]
+ mov r1, #0x20
+ ldr r0, [r0, #0xc]
+ blx DC_FlushRange
+ ldr r0, [sp]
+ mov r1, #0
+ ldr r0, [r0, #0xc]
+ mov r2, #0x20
+ blx GX_LoadBGPltt
+ ldr r0, [sp]
+ mov r1, #0
+ ldr r0, [r0, #0xc]
+ mov r2, #0x20
+ blx GXS_LoadBGPltt
+ add r0, r4, #0
+ bl FUN_02016A18
+ add sp, #4
+ pop {r3, r4, pc}
+ thumb_func_end MOD57_021D7AF4
+
+ thumb_func_start MOD57_021D7B5C
+MOD57_021D7B5C: ; 0x021D7B5C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ mov r0, #0x33
+ mov r1, #0x29
+ add r2, sp, #0
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r6, r0, #0
+ ldr r0, [sp]
+ lsl r4, r4, #5
+ ldr r5, [r0, #0xc]
+ mov r1, #0x20
+ add r0, r5, r4
+ blx DC_FlushRange
+ add r0, r5, r4
+ mov r1, #0x80
+ mov r2, #0x20
+ blx GXS_LoadBGPltt
+ add r0, r6, #0
+ bl FUN_02016A18
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D7B5C
+
+ thumb_func_start MOD57_021D7B94
+MOD57_021D7B94: ; 0x021D7B94
+ push {r4, r5, lr}
+ sub sp, #0x9c
+ ldr r2, _021D7C84 ; =0x04000304
+ add r4, r0, #0
+ ldrh r1, [r2]
+ ldr r0, _021D7C88 ; =0xFFFF7FFF
+ ldr r5, _021D7C8C ; =0x021D9764
+ and r0, r1
+ strh r0, [r2]
+ add r3, sp, #0x8c
+ 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, _021D7C90 ; =0x021D9774
+ add r3, sp, #0x70
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #7
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #2
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_02018744
+ ldr r5, _021D7C94 ; =0x021D9790
+ add r3, sp, #0x54
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #5
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_02018744
+ ldr r5, _021D7C98 ; =0x021D97C8
+ add r3, sp, #0x38
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #6
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #1
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_02018744
+ ldr r5, _021D7C9C ; =0x021D97E4
+ add r3, sp, #0x1c
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #2
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #0
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_02018744
+ ldr r5, _021D7CA0 ; =0x021D97AC
+ add r3, sp, #0
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldmia r5!, {r0, r1}
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r1, #3
+ str r0, [r3]
+ add r0, r4, #0
+ mov r3, #1
+ bl FUN_02016C18
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_02018744
+ add sp, #0x9c
+ pop {r4, r5, pc}
+ .align 2, 0
+_021D7C84: .word 0x04000304
+_021D7C88: .word 0xFFFF7FFF
+_021D7C8C: .word 0x021D9764
+_021D7C90: .word 0x021D9774
+_021D7C94: .word 0x021D9790
+_021D7C98: .word 0x021D97C8
+_021D7C9C: .word 0x021D97E4
+_021D7CA0: .word 0x021D97AC
+ thumb_func_end MOD57_021D7B94
+
+ thumb_func_start MOD57_021D7CA4
+MOD57_021D7CA4: ; 0x021D7CA4
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ mov r0, #0x33
+ mov r1, #0
+ add r2, sp, #0x14
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r5, r0, #0
+ ldr r0, [sp, #0x14]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #8
+ blx DC_FlushRange
+ ldr r0, [sp, #0x14]
+ mov r2, #2
+ ldr r0, [r0, #0xc]
+ mov r1, #0
+ lsl r2, r2, #8
+ blx GXS_LoadBGPltt
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r1, [r0]
+ ldrb r0, [r1, #3]
+ ldrb r1, [r1, #4]
+ lsl r1, r1, #0x1c
+ lsr r1, r1, #0x1f
+ bl MOD57_021D7A34
+ mov r0, #0x33
+ mov r1, #0xa
+ add r2, sp, #0x10
+ mov r3, #0x19
+ bl FUN_02006C08
+ add r5, r0, #0
+ ldr r0, [sp, #0x10]
+ mov r1, #2
+ ldr r0, [r0, #0xc]
+ lsl r1, r1, #8
+ blx DC_FlushRange
+ ldr r0, [sp, #0x10]
+ mov r2, #2
+ ldr r0, [r0, #0xc]
+ mov r1, #0
+ lsl r2, r2, #8
+ blx GX_LoadBGPltt
+ add r0, r5, #0
+ bl FUN_02016A18
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ bl MOD57_021D7AF4
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r1, [r0, #5]
+ cmp r1, #0xff
+ bne _021D7D9C
+ mov r2, #0
+ mov r0, #0x33
+ mov r1, #0x1b
+ mov r3, #0x19
+ str r2, [sp]
+ bl FUN_02006C98
+ ldr r1, _021D7ECC ; =0x000030B8
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021D7D4C
+ bl ErrorHandling
+_021D7D4C:
+ ldr r1, _021D7ECC ; =0x000030B8
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ add r1, r4, r1
+ blx FUN_020B0030
+ cmp r0, #0
+ bne _021D7D60
+ bl ErrorHandling
+_021D7D60:
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldr r3, _021D7ED0 ; =0x000032FC
+ ldrb r0, [r0, #4]
+ lsl r0, r0, #0x1d
+ lsr r0, r0, #0x1f
+ bne _021D7D86
+ mov r0, #0x19
+ str r0, [sp]
+ mov r0, #0x33
+ mov r1, #0x23
+ mov r2, #0
+ add r3, r4, r3
+ bl FUN_02006BDC
+ ldr r1, _021D7ED4 ; =0x000032F8
+ str r0, [r4, r1]
+ b _021D7DF2
+_021D7D86:
+ mov r0, #0x19
+ str r0, [sp]
+ mov r0, #0x33
+ mov r1, #0x24
+ mov r2, #0
+ add r3, r4, r3
+ bl FUN_02006BDC
+ ldr r1, _021D7ED4 ; =0x000032F8
+ str r0, [r4, r1]
+ b _021D7DF2
+_021D7D9C:
+ lsl r3, r1, #2
+ ldr r1, _021D7ED8 ; =0x021D9888
+ mov r2, #0
+ ldr r1, [r1, r3]
+ mov r0, #0x33
+ mov r3, #0x19
+ str r2, [sp]
+ bl FUN_02006C98
+ ldr r1, _021D7ECC ; =0x000030B8
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bne _021D7DBC
+ bl ErrorHandling
+_021D7DBC:
+ ldr r1, _021D7ECC ; =0x000030B8
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ add r1, r4, r1
+ blx FUN_020B0030
+ cmp r0, #0
+ bne _021D7DD0
+ bl ErrorHandling
+_021D7DD0:
+ ldr r3, _021D7ED0 ; =0x000032FC
+ mov r0, #0x19
+ str r0, [sp]
+ mov r0, #0x33
+ mov r1, #0x2a
+ mov r2, #0
+ add r3, r4, r3
+ bl FUN_02006BDC
+ ldr r1, _021D7ED4 ; =0x000032F8
+ str r0, [r4, r1]
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ ldrb r0, [r0, #5]
+ bl MOD57_021D7B5C
+_021D7DF2:
+ add r0, r4, #0
+ bl MOD57_021D8690
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x17
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x1e
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x18
+ mov r3, #5
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x20
+ mov r3, #5
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #0x19
+ str r1, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r3, #2
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x21
+ mov r3, #2
+ bl FUN_020068C8
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x1a
+ mov r3, #3
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x22
+ mov r3, #3
+ bl FUN_020068C8
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb8
+ add r0, #0x68
+ add r1, r4, #0
+ bl MOD57_021D87DC
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_021D7ECC: .word 0x000030B8
+_021D7ED0: .word 0x000032FC
+_021D7ED4: .word 0x000032F8
+_021D7ED8: .word 0x021D9888
+ thumb_func_end MOD57_021D7CA4
+
+ thumb_func_start MOD57_021D7EDC
+MOD57_021D7EDC: ; 0x021D7EDC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0x1f
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r0, #0x13
+ mov r1, #0
+ bl FUN_0201E74C
+ add r0, r4, #0
+ mov r1, #7
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #5
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #2
+ bl FUN_020178A0
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD57_021D7EDC
+
+ thumb_func_start MOD57_021D7F20
+MOD57_021D7F20: ; 0x021D7F20
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r2, _021D80DC ; =0x0000331A
+ add r4, r0, #0
+ ldrb r0, [r4, r2]
+ mov r5, #0
+ cmp r0, #3
+ bls _021D7F32
+ b _021D8092
+_021D7F32:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021D7F3E: ; jump table
+ .short _021D7F46 - _021D7F3E - 2 ; case 0
+ .short _021D7F74 - _021D7F3E - 2 ; case 1
+ .short _021D7FB0 - _021D7F3E - 2 ; case 2
+ .short _021D804C - _021D7F3E - 2 ; case 3
+_021D7F46:
+ mov r0, #8
+ sub r2, #0x36
+ str r0, [r4, r2]
+ ldr r1, _021D80E0 ; =0x000030C8
+ lsl r2, r0, #9
+ str r2, [r4, r1]
+ add r0, r1, #4
+ str r2, [r4, r0]
+ ldr r0, [r4, r1]
+ add r0, #0x80
+ str r0, [r4, r1]
+ add r0, r1, #4
+ ldr r2, [r4, r0]
+ add r2, #0x80
+ str r2, [r4, r0]
+ ldr r0, _021D80E4 ; =0x00000696
+ bl FUN_020054C8
+ ldr r0, _021D80DC ; =0x0000331A
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ b _021D8092
+_021D7F74:
+ add r0, r2, #0
+ sub r0, #0x36
+ ldr r3, [r4, r0]
+ ldr r1, _021D80E0 ; =0x000030C8
+ mov r0, #0xc
+ mov r7, #2
+ sub r0, r0, r3
+ add r3, r7, #0
+ ldr r6, [r4, r1]
+ lsl r3, r0
+ sub r0, r6, r3
+ str r0, [r4, r1]
+ ldr r0, [r4, r1]
+ cmp r0, #0
+ bgt _021D7F9C
+ mov r0, #0x24
+ str r0, [r4, r1]
+ ldrb r0, [r4, r2]
+ add r0, r0, #1
+ strb r0, [r4, r2]
+_021D7F9C:
+ ldr r0, _021D80E8 ; =0x000032E4
+ ldr r1, [r4, r0]
+ sub r1, r1, #1
+ str r1, [r4, r0]
+ ldr r1, [r4, r0]
+ cmp r1, #1
+ bgt _021D8092
+ mov r1, #1
+ str r1, [r4, r0]
+ b _021D8092
+_021D7FB0:
+ mov r0, #0xc3
+ lsl r0, r0, #6
+ ldr r1, [r4, r0]
+ cmp r1, #0
+ bne _021D8006
+ mov r1, #1
+ str r1, [r4, r0]
+ str r5, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x1f
+ mov r3, #6
+ bl FUN_020068C8
+ add r0, r4, #4
+ add r1, r5, #0
+ mov r2, #6
+ bl MOD57_021D8FB8
+ add r0, r4, #0
+ bl MOD57_021D86E8
+ ldr r0, [r4]
+ mov r1, #7
+ bl FUN_02018744
+ add r1, r4, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ add r0, r4, #4
+ bl MOD57_021D8CF8
+ add r2, r4, #0
+ ldr r0, [r4]
+ mov r1, #7
+ add r2, #0xb8
+ bl MOD57_021D8830
+ b _021D8042
+_021D8006:
+ str r5, [r4, r0]
+ str r5, [sp]
+ str r5, [sp, #4]
+ str r5, [sp, #8]
+ mov r0, #0x19
+ str r0, [sp, #0xc]
+ ldr r2, [r4]
+ mov r0, #0x33
+ mov r1, #0x1e
+ mov r3, #6
+ bl FUN_020068C8
+ add r0, r4, #4
+ mov r1, #7
+ mov r2, #0xa
+ bl MOD57_021D8FB8
+ ldr r0, [r4]
+ mov r1, #7
+ bl FUN_02018744
+ add r0, r4, #0
+ bl MOD57_021D8690
+ add r1, r4, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ add r0, r4, #4
+ bl MOD57_021D89F0
+_021D8042:
+ ldr r0, _021D80DC ; =0x0000331A
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ b _021D8092
+_021D804C:
+ add r0, r2, #0
+ sub r0, #0x36
+ ldr r0, [r4, r0]
+ add r1, r0, #1
+ add r0, r2, #0
+ sub r0, #0x36
+ str r1, [r4, r0]
+ add r0, r2, #0
+ sub r0, #0x36
+ ldr r0, [r4, r0]
+ cmp r0, #8
+ ble _021D806A
+ mov r0, #8
+ sub r2, #0x36
+ str r0, [r4, r2]
+_021D806A:
+ ldr r2, _021D80E8 ; =0x000032E4
+ ldr r3, _021D80E0 ; =0x000030C8
+ ldr r6, [r4, r2]
+ mov r2, #0xc
+ mov r0, #2
+ sub r2, r2, r6
+ add r6, r0, #0
+ ldr r1, [r4, r3]
+ lsl r6, r2
+ add r1, r1, r6
+ str r1, [r4, r3]
+ ldr r2, [r4, r3]
+ lsl r1, r0, #0xb
+ cmp r2, r1
+ blt _021D8092
+ str r1, [r4, r3]
+ str r1, [r4, r3]
+ add r0, r3, #4
+ str r1, [r4, r0]
+ mov r5, #1
+_021D8092:
+ ldr r0, _021D80E0 ; =0x000030C8
+ ldr r0, [r4, r0]
+ blx FX_Inv
+ add r6, r0, #0
+ ldr r0, _021D80EC ; =0x000030CC
+ ldr r0, [r4, r0]
+ blx FX_Inv
+ mov r1, #0
+ str r6, [sp, #0x10]
+ str r1, [sp, #0x14]
+ str r1, [sp, #0x18]
+ str r0, [sp, #0x1c]
+ blx OS_WaitVBlankIntr
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D80F0 ; =0x04001020
+ add r1, sp, #0x10
+ mov r2, #0x80
+ mov r3, #0x60
+ blx G2x_SetBGyAffine_
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D80F4 ; =0x04001030
+ add r1, sp, #0x10
+ mov r2, #0x80
+ mov r3, #0x60
+ blx G2x_SetBGyAffine_
+ add r0, r5, #0
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D80DC: .word 0x0000331A
+_021D80E0: .word 0x000030C8
+_021D80E4: .word 0x00000696
+_021D80E8: .word 0x000032E4
+_021D80EC: .word 0x000030CC
+_021D80F0: .word 0x04001020
+_021D80F4: .word 0x04001030
+ thumb_func_end MOD57_021D7F20
+
+ thumb_func_start MOD57_021D80F8
+MOD57_021D80F8: ; 0x021D80F8
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r4, r0, #0
+ ldr r0, _021D81E4 ; =0x0000331A
+ ldrb r1, [r4, r0]
+ cmp r1, #3
+ bhi _021D81AE
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021D8112: ; jump table
+ .short _021D811A - _021D8112 - 2 ; case 0
+ .short _021D8142 - _021D8112 - 2 ; case 1
+ .short _021D8170 - _021D8112 - 2 ; case 2
+ .short _021D81A8 - _021D8112 - 2 ; case 3
+_021D811A:
+ mov r2, #0
+ sub r1, r0, #1
+ strb r2, [r4, r1]
+ sub r1, r0, #2
+ ldrb r1, [r4, r1]
+ cmp r1, #0
+ bne _021D8134
+ mov r2, #1
+ ldr r1, _021D81E8 ; =0x000030D0
+ lsl r2, r2, #0xc
+ str r2, [r4, r1]
+ mov r1, #1
+ b _021D8136
+_021D8134:
+ mov r1, #2
+_021D8136:
+ strb r1, [r4, r0]
+ ldr r0, _021D81EC ; =0x00003318
+ ldrb r0, [r4, r0]
+ bl MOD57_021D8894
+ b _021D81AE
+_021D8142:
+ sub r1, r0, #1
+ ldrb r2, [r4, r1]
+ add r1, r2, #0
+ add r3, r1, #1
+ sub r1, r0, #1
+ strb r3, [r4, r1]
+ ldr r3, _021D81E8 ; =0x000030D0
+ lsl r5, r2, #2
+ ldr r2, _021D81F0 ; =0x021D9850
+ ldr r1, [r4, r3]
+ ldr r2, [r2, r5]
+ sub r1, r1, r2
+ str r1, [r4, r3]
+ sub r1, r0, #1
+ ldrb r1, [r4, r1]
+ cmp r1, #0xe
+ bne _021D81AE
+ mov r2, #1
+ sub r1, r0, #2
+ strb r2, [r4, r1]
+ mov r1, #3
+ strb r1, [r4, r0]
+ b _021D81AE
+_021D8170:
+ sub r1, r0, #1
+ ldrb r2, [r4, r1]
+ ldr r5, _021D81E8 ; =0x000030D0
+ add r1, r2, #0
+ add r3, r1, #1
+ sub r1, r0, #1
+ strb r3, [r4, r1]
+ mov r3, #0xd
+ sub r2, r3, r2
+ lsl r3, r2, #2
+ ldr r2, _021D81F0 ; =0x021D9850
+ ldr r1, [r4, r5]
+ ldr r2, [r2, r3]
+ add r1, r1, r2
+ str r1, [r4, r5]
+ sub r1, r0, #1
+ ldrb r1, [r4, r1]
+ cmp r1, #0xe
+ bne _021D81AE
+ mov r2, #0
+ sub r1, r0, #2
+ strb r2, [r4, r1]
+ mov r1, #1
+ lsl r1, r1, #0xc
+ str r1, [r4, r5]
+ mov r1, #3
+ strb r1, [r4, r0]
+ b _021D81AE
+_021D81A8:
+ add sp, #0x18
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021D81AE:
+ mov r0, #1
+ lsl r0, r0, #0xc
+ blx FX_Inv
+ add r5, r0, #0
+ ldr r0, _021D81E8 ; =0x000030D0
+ ldr r0, [r4, r0]
+ blx FX_Inv
+ mov r1, #0
+ str r5, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ blx OS_WaitVBlankIntr
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D81F4 ; =0x04000030
+ add r1, sp, #8
+ mov r2, #0x80
+ str r3, [sp, #4]
+ blx G2x_SetBGyAffine_
+ mov r0, #0
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D81E4: .word 0x0000331A
+_021D81E8: .word 0x000030D0
+_021D81EC: .word 0x00003318
+_021D81F0: .word 0x021D9850
+_021D81F4: .word 0x04000030
+ thumb_func_end MOD57_021D80F8
+
+ thumb_func_start MOD57_021D81F8
+MOD57_021D81F8: ; 0x021D81F8
+ push {r4, r5, r6, lr}
+ mov r6, #0
+ add r5, r0, #0
+ ldr r0, _021D82A8 ; =0x000030D4
+ sub r1, r6, #1
+ str r1, [r5, r0]
+ ldr r1, _021D82AC ; =0x021C48F8
+ add r4, r6, #0
+ ldrh r1, [r1, #0x20]
+ cmp r1, #0
+ beq _021D8214
+ mov r1, #1
+ sub r0, #0x10
+ str r1, [r5, r0]
+_021D8214:
+ add r1, r5, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ ldr r2, _021D82B0 ; =0x021D9754
+ ldrb r1, [r1, #4]
+ ldr r0, [r5]
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1f
+ lsl r3, r1, #3
+ ldr r1, _021D82B4 ; =0x00003318
+ add r2, r2, r3
+ ldrb r1, [r5, r1]
+ lsl r1, r1, #2
+ ldr r1, [r1, r2]
+ bl MOD57_021D890C
+ ldr r1, _021D82A8 ; =0x000030D4
+ str r0, [r5, r1]
+ mov r0, #0
+ ldr r2, [r5, r1]
+ mvn r0, r0
+ cmp r2, r0
+ beq _021D8248
+ mov r6, #1
+ add r4, r6, #0
+ b _021D8288
+_021D8248:
+ ldr r0, _021D82AC ; =0x021C48F8
+ ldrh r0, [r0, #0x22]
+ cmp r0, #0
+ beq _021D8282
+ add r1, r5, #0
+ add r1, #0xb4
+ ldr r1, [r1]
+ ldr r2, _021D82B0 ; =0x021D9754
+ ldrb r1, [r1, #4]
+ ldr r0, [r5]
+ lsl r1, r1, #0x1f
+ lsr r1, r1, #0x1f
+ lsl r3, r1, #3
+ ldr r1, _021D82B4 ; =0x00003318
+ add r2, r2, r3
+ ldrb r1, [r5, r1]
+ lsl r1, r1, #2
+ ldr r1, [r1, r2]
+ bl MOD57_021D8954
+ ldr r1, _021D82A8 ; =0x000030D4
+ str r0, [r5, r1]
+ sub r1, #0x10
+ ldr r0, [r5, r1]
+ cmp r0, #0
+ beq _021D8288
+ mov r6, #1
+ mov r4, #2
+ b _021D8288
+_021D8282:
+ mov r0, #0
+ sub r1, #0x10
+ str r0, [r5, r1]
+_021D8288:
+ cmp r6, #0
+ bne _021D82A2
+ ldr r0, _021D82B8 ; =0x021C48B8
+ ldr r1, [r0, #0x48]
+ mov r0, #1
+ tst r0, r1
+ beq _021D829A
+ mov r4, #3
+ b _021D82A2
+_021D829A:
+ mov r0, #2
+ tst r0, r1
+ beq _021D82A2
+ mov r4, #4
+_021D82A2:
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021D82A8: .word 0x000030D4
+_021D82AC: .word 0x021C48F8
+_021D82B0: .word 0x021D9754
+_021D82B4: .word 0x00003318
+_021D82B8: .word 0x021C48B8
+ thumb_func_end MOD57_021D81F8
+
+ thumb_func_start MOD57_021D82BC
+MOD57_021D82BC: ; 0x021D82BC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, _021D83BC ; =0x021C48F8
+ ldr r6, _021D83C0 ; =0x0000FFFF
+ ldrh r3, [r0, #0x1c]
+ mov r4, #0
+ cmp r3, r6
+ beq _021D83AC
+ ldrh r0, [r0, #0x1e]
+ cmp r0, r6
+ beq _021D83AC
+ ldr r1, _021D83C4 ; =0x000030DC
+ ldr r2, [r5, r1]
+ cmp r2, r6
+ beq _021D83AC
+ add r0, r1, #4
+ ldr r0, [r5, r0]
+ cmp r0, r6
+ beq _021D83AC
+ sub r1, #8
+ ldr r1, [r5, r1]
+ sub r0, r4, #1
+ cmp r1, r0
+ beq _021D83AC
+ cmp r1, #0
+ beq _021D83AC
+ add r0, r5, #0
+ add r0, #0xb4
+ sub r1, r1, #1
+ ldr r0, [r0]
+ lsl r1, r1, #2
+ add r0, r0, r1
+ ldr r0, [r0, #0x48]
+ lsl r0, r0, #0x1f
+ asr r0, r0, #0x1f
+ beq _021D83AC
+ cmp r2, r3
+ ble _021D830E
+ sub r2, r2, r3
+ sub r1, r4, #1
+ b _021D8312
+_021D830E:
+ sub r2, r3, r2
+ mov r1, #1
+_021D8312:
+ ldr r0, _021D83C8 ; =0x00003302
+ cmp r2, #3
+ strb r1, [r5, r0]
+ blt _021D8358
+ cmp r2, #0x28
+ bgt _021D8358
+ ldr r0, _021D83BC ; =0x021C48F8
+ ldrh r1, [r0, #0x1e]
+ ldr r0, _021D83CC ; =0x000030E0
+ ldr r0, [r5, r0]
+ cmp r0, r1
+ ble _021D8332
+ sub r2, r0, r1
+ mov r1, #0
+ mvn r1, r1
+ b _021D8336
+_021D8332:
+ sub r2, r1, r0
+ mov r1, #1
+_021D8336:
+ ldr r0, _021D83D0 ; =0x00003303
+ cmp r2, #0x28
+ strb r1, [r5, r0]
+ bgt _021D834C
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r5, r0
+ mov r4, #1
+ bl MOD57_021D875C
+ b _021D8398
+_021D834C:
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r5, r0
+ bl MOD57_021D8744
+ b _021D8398
+_021D8358:
+ cmp r2, #0x28
+ bgt _021D8398
+ ldr r0, _021D83BC ; =0x021C48F8
+ ldrh r1, [r0, #0x1e]
+ ldr r0, _021D83CC ; =0x000030E0
+ ldr r0, [r5, r0]
+ cmp r0, r1
+ ble _021D8370
+ sub r2, r0, r1
+ mov r1, #0
+ mvn r1, r1
+ b _021D8374
+_021D8370:
+ sub r2, r1, r0
+ mov r1, #1
+_021D8374:
+ ldr r0, _021D83D0 ; =0x00003303
+ cmp r2, #3
+ strb r1, [r5, r0]
+ blt _021D838E
+ cmp r2, #0x28
+ bgt _021D838E
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r5, r0
+ mov r4, #1
+ bl MOD57_021D875C
+ b _021D8398
+_021D838E:
+ mov r0, #0x33
+ lsl r0, r0, #8
+ add r0, r5, r0
+ bl MOD57_021D8744
+_021D8398:
+ cmp r4, #0
+ beq _021D83AC
+ ldr r1, _021D83D4 ; =0x000030D4
+ add r0, r5, #0
+ ldr r1, [r5, r1]
+ sub r1, r1, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl MOD57_021D84AC
+_021D83AC:
+ ldr r1, _021D83BC ; =0x021C48F8
+ ldr r0, _021D83C4 ; =0x000030DC
+ ldrh r2, [r1, #0x1c]
+ str r2, [r5, r0]
+ ldrh r1, [r1, #0x1e]
+ add r0, r0, #4
+ str r1, [r5, r0]
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D83BC: .word 0x021C48F8
+_021D83C0: .word 0x0000FFFF
+_021D83C4: .word 0x000030DC
+_021D83C8: .word 0x00003302
+_021D83CC: .word 0x000030E0
+_021D83D0: .word 0x00003303
+_021D83D4: .word 0x000030D4
+ thumb_func_end MOD57_021D82BC
+
+ thumb_func_start MOD57_021D83D8
+MOD57_021D83D8: ; 0x021D83D8
+ push {r3, r4, r5, r6, r7, lr}
+ str r0, [sp]
+ add r4, r1, #0
+ ldr r0, [r0]
+ mov r1, #2
+ bl FUN_0201886C
+ add r7, r0, #0
+ lsl r0, r4, #2
+ add r0, #0x80
+ lsl r0, r0, #0x10
+ mov r2, #0
+ lsr r3, r0, #0x10
+_021D83F2:
+ lsl r0, r2, #5
+ add r4, r3, r0
+ add r0, r2, #0
+ add r0, #0x13
+ lsl r0, r0, #6
+ mov r1, #0
+ add r5, r7, r0
+_021D8400:
+ lsl r6, r1, #1
+ add r0, r1, r4
+ add r6, r5, r6
+ strh r0, [r6, #0x1c]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #4
+ blo _021D8400
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #4
+ blo _021D83F2
+ ldr r0, [sp]
+ mov r1, #2
+ ldr r0, [r0]
+ bl FUN_02017CD0
+ pop {r3, r4, r5, r6, r7, pc}
+ thumb_func_end MOD57_021D83D8
+
+ thumb_func_start MOD57_021D8428
+MOD57_021D8428: ; 0x021D8428
+ push {r3, r4, r5, r6, r7, lr}
+ lsr r5, r1, #0x1f
+ lsl r4, r1, #0x1e
+ sub r4, r4, r5
+ mov r2, #0x1e
+ ror r4, r2
+ add r2, r5, r4
+ lsl r2, r2, #0x18
+ lsr r4, r2, #0x18
+ lsl r1, r1, #0x16
+ mov r2, #7
+ add r5, r4, #0
+ lsr r1, r1, #0x18
+ mul r5, r2
+ mov r6, #3
+ add r4, r6, r5
+ lsl r4, r4, #0x18
+ mov r3, #4
+ mul r2, r1
+ add r1, r3, r2
+ lsl r1, r1, #0x18
+ lsr r5, r1, #0x18
+ ldr r0, [r0]
+ add r1, r6, #0
+ lsr r4, r4, #0x18
+ bl FUN_0201886C
+ mov r2, #0
+ add r3, r0, r4
+ add r0, r2, #0
+_021D8464:
+ add r6, r2, r5
+ lsl r4, r2, #4
+ lsl r6, r6, #5
+ add r1, r0, #0
+ add r4, #0xba
+ add r6, r3, r6
+_021D8470:
+ add r7, r1, r4
+ strb r7, [r6, r1]
+ add r1, r1, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ cmp r1, #5
+ blo _021D8470
+ add r1, r2, #1
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ cmp r2, #5
+ blo _021D8464
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D8428
+
+ thumb_func_start MOD57_021D848C
+MOD57_021D848C: ; 0x021D848C
+ push {r3, lr}
+ bl FUN_0201C30C
+ bl FUN_02009F80
+ ldr r3, _021D84A4 ; =0x027E0000
+ ldr r1, _021D84A8 ; =0x00003FF8
+ mov r0, #1
+ ldr r2, [r3, r1]
+ orr r0, r2
+ str r0, [r3, r1]
+ pop {r3, pc}
+ .align 2, 0
+_021D84A4: .word 0x027E0000
+_021D84A8: .word 0x00003FF8
+ thumb_func_end MOD57_021D848C
+
+ thumb_func_start MOD57_021D84AC
+MOD57_021D84AC: ; 0x021D84AC
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r0, #0xb4
+ add r4, r1, #0
+ ldr r0, [r0]
+ lsl r6, r4, #2
+ add r0, r0, r6
+ ldr r0, [r0, #0x48]
+ asr r0, r0, #1
+ add r1, r0, #1
+ str r1, [sp]
+ cmp r1, #0xc8
+ bge _021D8578
+ bl MOD57_021D870C
+ add r7, r0, #0
+ ldr r0, _021D857C ; =0x00003310
+ ldr r2, _021D8580 ; =0x021D9734
+ add r1, r5, r0
+ ldrb r0, [r1, r4]
+ ldrb r2, [r2, r7]
+ add r0, r0, #1
+ strb r0, [r1, r4]
+ ldrb r0, [r1, r4]
+ cmp r0, r2
+ blo _021D8578
+ mov r0, #0
+ strb r0, [r1, r4]
+ add r0, r5, #0
+ add r0, #0xb4
+ ldr r2, [r0]
+ mov r1, #1
+ add r2, #0x48
+ ldr r0, [r2, r6]
+ and r1, r0
+ asr r0, r0, #1
+ add r0, r0, #1
+ lsl r0, r0, #1
+ orr r0, r1
+ str r0, [r2, r6]
+ ldr r0, [sp]
+ bl MOD57_021D870C
+ add r6, r0, #0
+ cmp r7, r6
+ bls _021D850C
+ bl ErrorHandling
+_021D850C:
+ cmp r7, r6
+ bhs _021D8578
+ cmp r6, #4
+ bhi _021D8536
+ cmp r6, #4
+ ldr r0, _021D8584 ; =0x000030E4
+ bne _021D8526
+ add r0, r5, r0
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD57_021D951C
+ b _021D8536
+_021D8526:
+ mov r2, #3
+ sub r2, r2, r6
+ lsl r2, r2, #0x18
+ add r0, r5, r0
+ add r1, r4, #0
+ lsr r2, r2, #0x18
+ bl MOD57_021D951C
+_021D8536:
+ cmp r6, #3
+ bne _021D854E
+ add r4, #8
+ lsl r0, r4, #2
+ add r1, r5, r0
+ mov r0, #0xc9
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+ pop {r3, r4, r5, r6, r7, pc}
+_021D854E:
+ cmp r6, #4
+ bne _021D8578
+ add r0, r4, #0
+ add r0, #8
+ lsl r0, r0, #2
+ add r1, r5, r0
+ mov r0, #0xc9
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r4, #0x10
+ lsl r0, r4, #2
+ add r1, r5, r0
+ mov r0, #0xc9
+ lsl r0, r0, #6
+ ldr r0, [r1, r0]
+ mov r1, #1
+ bl FUN_020200A0
+_021D8578:
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D857C: .word 0x00003310
+_021D8580: .word 0x021D9734
+_021D8584: .word 0x000030E4
+ thumb_func_end MOD57_021D84AC
+
+ thumb_func_start MOD57_021D8588
+MOD57_021D8588: ; 0x021D8588
+ push {r4, lr}
+ sub sp, #0x18
+ mov r0, #1
+ lsl r0, r0, #0xc
+ blx FX_Inv
+ add r4, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0xc
+ blx FX_Inv
+ mov r1, #0
+ str r4, [sp, #8]
+ str r1, [sp, #0xc]
+ str r1, [sp, #0x10]
+ str r0, [sp, #0x14]
+ blx OS_WaitVBlankIntr
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D85E8 ; =0x04001020
+ add r1, sp, #8
+ mov r2, #0x80
+ mov r3, #0x60
+ blx G2x_SetBGyAffine_
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D85EC ; =0x04001030
+ add r1, sp, #8
+ mov r2, #0x80
+ mov r3, #0x60
+ blx G2x_SetBGyAffine_
+ blx OS_WaitVBlankIntr
+ mov r3, #0
+ str r3, [sp]
+ ldr r0, _021D85F0 ; =0x04000030
+ add r1, sp, #8
+ mov r2, #0x80
+ str r3, [sp, #4]
+ blx G2x_SetBGyAffine_
+ add sp, #0x18
+ pop {r4, pc}
+ .align 2, 0
+_021D85E8: .word 0x04001020
+_021D85EC: .word 0x04001030
+_021D85F0: .word 0x04000030
+ thumb_func_end MOD57_021D8588
+
+ thumb_func_start MOD57_021D85F4
+MOD57_021D85F4: ; 0x021D85F4
+ push {r4, lr}
+ ldr r1, _021D862C ; =0x0000331D
+ add r4, r0, #0
+ ldrb r1, [r4, r1]
+ cmp r1, #1
+ bne _021D8614
+ ldr r1, _021D8630 ; =0x021D973C
+ ldr r1, [r1, #0x10]
+ bl MOD57_021D8634
+ cmp r0, #0
+ beq _021D862A
+ ldr r0, _021D862C ; =0x0000331D
+ mov r1, #0
+ strb r1, [r4, r0]
+ pop {r4, pc}
+_021D8614:
+ cmp r1, #2
+ bne _021D862A
+ ldr r1, _021D8630 ; =0x021D973C
+ ldr r1, [r1, #0x14]
+ bl MOD57_021D8634
+ cmp r0, #0
+ beq _021D862A
+ ldr r0, _021D862C ; =0x0000331D
+ mov r1, #0
+ strb r1, [r4, r0]
+_021D862A:
+ pop {r4, pc}
+ .align 2, 0
+_021D862C: .word 0x0000331D
+_021D8630: .word 0x021D973C
+ thumb_func_end MOD57_021D85F4
+
+ thumb_func_start MOD57_021D8634
+MOD57_021D8634: ; 0x021D8634
+ push {r4, lr}
+ ldr r2, _021D8688 ; =0x0000331C
+ add r4, r0, #0
+ ldrb r0, [r4, r2]
+ lsl r0, r0, #1
+ ldrb r3, [r1, r0]
+ cmp r3, #0
+ bne _021D8650
+ mov r1, #0
+ sub r0, r2, #1
+ strb r1, [r4, r0]
+ strb r1, [r4, r2]
+ mov r0, #1
+ pop {r4, pc}
+_021D8650:
+ sub r0, r2, #1
+ ldrb r0, [r4, r0]
+ cmp r0, r3
+ blo _021D8664
+ mov r3, #0
+ sub r0, r2, #1
+ strb r3, [r4, r0]
+ ldrb r0, [r4, r2]
+ add r0, r0, #1
+ strb r0, [r4, r2]
+_021D8664:
+ ldr r0, _021D8688 ; =0x0000331C
+ ldrb r2, [r4, r0]
+ sub r0, r0, #1
+ ldrb r0, [r4, r0]
+ lsl r2, r2, #1
+ add r2, r2, #1
+ ldrb r1, [r1, r2]
+ cmp r0, #0
+ bne _021D867C
+ add r0, r4, #0
+ bl MOD57_021D83D8
+_021D867C:
+ ldr r0, _021D868C ; =0x0000331B
+ ldrb r1, [r4, r0]
+ add r1, r1, #1
+ strb r1, [r4, r0]
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_021D8688: .word 0x0000331C
+_021D868C: .word 0x0000331B
+ thumb_func_end MOD57_021D8634
+
+ thumb_func_start MOD57_021D8690
+MOD57_021D8690: ; 0x021D8690
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021D86E0 ; =0x000032FC
+ mov r1, #7
+ ldr r0, [r5, r0]
+ ldr r4, [r0, #8]
+ ldr r0, _021D86E4 ; =0x000030BC
+ ldr r3, [r5, r0]
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r5]
+ ldr r3, [r3, #0x10]
+ bl FUN_02017E14
+ ldr r0, [r5]
+ mov r1, #7
+ bl FUN_0201886C
+ cmp r0, #0
+ beq _021D86CA
+ ldr r2, _021D86E0 ; =0x000032FC
+ ldr r0, [r5]
+ ldr r2, [r5, r2]
+ mov r1, #7
+ add r2, #0xc
+ add r3, r4, #0
+ bl FUN_02017DFC
+_021D86CA:
+ mov r0, #0
+ str r0, [sp]
+ ldr r2, _021D86E0 ; =0x000032FC
+ ldr r0, [r5]
+ ldr r2, [r5, r2]
+ mov r1, #7
+ add r2, #0xc
+ add r3, r4, #0
+ bl FUN_02017CE8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D86E0: .word 0x000032FC
+_021D86E4: .word 0x000030BC
+ thumb_func_end MOD57_021D8690
+
+ thumb_func_start MOD57_021D86E8
+MOD57_021D86E8: ; 0x021D86E8
+ push {r3, lr}
+ sub sp, #0x10
+ mov r1, #6
+ str r1, [sp]
+ str r1, [sp, #4]
+ mov r1, #9
+ str r1, [sp, #8]
+ mov r1, #0x10
+ str r1, [sp, #0xc]
+ ldr r0, [r0]
+ mov r1, #7
+ mov r2, #0
+ mov r3, #0x14
+ bl FUN_02018540
+ add sp, #0x10
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D86E8
+
+ thumb_func_start MOD57_021D870C
+MOD57_021D870C: ; 0x021D870C
+ push {r3, lr}
+ cmp r0, #0
+ blt _021D871A
+ cmp r0, #0x64
+ bge _021D871A
+ mov r0, #0
+ pop {r3, pc}
+_021D871A:
+ cmp r0, #0x8c
+ bge _021D8722
+ mov r0, #1
+ pop {r3, pc}
+_021D8722:
+ cmp r0, #0xaa
+ bge _021D872A
+ mov r0, #2
+ pop {r3, pc}
+_021D872A:
+ cmp r0, #0xbe
+ bge _021D8732
+ mov r0, #3
+ pop {r3, pc}
+_021D8732:
+ cmp r0, #0xc8
+ bge _021D873A
+ mov r0, #4
+ pop {r3, pc}
+_021D873A:
+ bl ErrorHandling
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D870C
+
+ thumb_func_start MOD57_021D8744
+MOD57_021D8744: ; 0x021D8744
+ mov r1, #0
+ strb r1, [r0, #2]
+ strb r1, [r0, #3]
+ bx lr
+ thumb_func_end MOD57_021D8744
+
+ thumb_func_start MOD57_021D874C
+MOD57_021D874C: ; 0x021D874C
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ strb r1, [r0, #2]
+ strb r1, [r0, #3]
+ strb r1, [r0, #4]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D874C
+
+ thumb_func_start MOD57_021D875C
+MOD57_021D875C: ; 0x021D875C
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, _021D87D4 ; =0x021D973C
+ ldr r1, [r0]
+ ldr r0, [r0, #4]
+ str r1, [sp]
+ str r0, [sp, #4]
+ mov r0, #0
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bne _021D8782
+ mov r0, #1
+ ldrsb r0, [r4, r0]
+ cmp r0, #0
+ bne _021D8782
+ ldr r0, _021D87D8 ; =0x00000692
+ bl FUN_020054C8
+_021D8782:
+ mov r0, #0
+ ldrsb r1, [r4, r0]
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ mul r0, r1
+ bmi _021D879A
+ mov r0, #1
+ ldrsb r1, [r4, r0]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ mul r0, r1
+ bpl _021D87BC
+_021D879A:
+ ldrb r0, [r4, #4]
+ add r0, r0, #1
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ strb r0, [r4, #4]
+ ldrb r0, [r4, #4]
+ lsl r1, r0, #2
+ add r0, sp, #0
+ ldr r0, [r0, r1]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FUN_020054C8
+_021D87BC:
+ mov r0, #2
+ ldrsb r0, [r4, r0]
+ strb r0, [r4]
+ mov r0, #3
+ ldrsb r0, [r4, r0]
+ strb r0, [r4, #1]
+ mov r0, #0
+ strb r0, [r4, #2]
+ strb r0, [r4, #3]
+ add sp, #8
+ pop {r4, pc}
+ nop
+_021D87D4: .word 0x021D973C
+_021D87D8: .word 0x00000692
+ thumb_func_end MOD57_021D875C
+
+ thumb_func_start MOD57_021D87DC
+MOD57_021D87DC: ; 0x021D87DC
+ push {r4, r5, r6, r7}
+ mov r2, #3
+ mov r4, #0
+ lsl r2, r2, #0xc
+_021D87E4:
+ asr r3, r4, #2
+ lsr r3, r3, #0x1d
+ add r3, r4, r3
+ asr r3, r3, #3
+ lsr r6, r3, #0x1f
+ lsl r5, r3, #0x1d
+ sub r5, r5, r6
+ mov r3, #0x1d
+ ror r5, r3
+ add r3, r6, r5
+ asr r5, r4, #5
+ lsr r5, r5, #0x1a
+ lsl r3, r3, #0x18
+ add r5, r4, r5
+ lsr r3, r3, #0x18
+ asr r5, r5, #6
+ lsl r5, r5, #3
+ add r3, r0, r3
+ ldrb r3, [r5, r3]
+ lsr r7, r4, #0x1f
+ lsl r6, r4, #0x1d
+ sub r6, r6, r7
+ mov r5, #0x1d
+ ror r6, r5
+ add r5, r7, r6
+ lsl r5, r5, #0x18
+ add r6, r3, #0
+ lsr r5, r5, #0x18
+ asr r6, r5
+ mov r3, #1
+ and r3, r6
+ strb r3, [r1, r4]
+ add r4, r4, #1
+ cmp r4, r2
+ blt _021D87E4
+ pop {r4, r5, r6, r7}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D87DC
+
+ thumb_func_start MOD57_021D8830
+MOD57_021D8830: ; 0x021D8830
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r7, r1, #0
+ mov r1, #1
+ str r1, [sp]
+ lsl r1, r7, #0x18
+ mov r3, #3
+ str r0, [sp, #4]
+ lsr r1, r1, #0x18
+ lsl r3, r3, #0xc
+ bl FUN_02017E14
+ lsl r1, r7, #0x18
+ ldr r0, [sp, #4]
+ lsr r1, r1, #0x18
+ bl FUN_0201886C
+ mov r4, #0
+ add r1, r0, #0
+ add r3, r4, #0
+ add r0, r4, #0
+_021D885A:
+ add r5, r3, #0
+ add r5, #0xe
+ lsl r5, r5, #6
+ add r2, r0, #0
+ add r5, r1, r5
+_021D8864:
+ lsl r6, r2, #1
+ add r4, r4, #1
+ add r2, r2, #1
+ lsl r4, r4, #0x10
+ lsl r2, r2, #0x18
+ lsr r4, r4, #0x10
+ add r6, r5, r6
+ lsr r2, r2, #0x18
+ strh r4, [r6, #8]
+ cmp r2, #0x18
+ blo _021D8864
+ add r2, r3, #1
+ lsl r2, r2, #0x18
+ lsr r3, r2, #0x18
+ cmp r3, #8
+ blo _021D885A
+ lsl r1, r7, #0x18
+ ldr r0, [sp, #4]
+ lsr r1, r1, #0x18
+ bl FUN_02017CD0
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D8830
+
+ thumb_func_start MOD57_021D8894
+MOD57_021D8894: ; 0x021D8894
+ ldr r3, _021D889C ; =0x020054C9
+ ldr r0, _021D88A0 ; =0x00000699
+ bx r3
+ nop
+_021D889C: .word 0x020054C9
+_021D88A0: .word 0x00000699
+ thumb_func_end MOD57_021D8894
+
+ thumb_func_start MOD57_021D88A4
+MOD57_021D88A4: ; 0x021D88A4
+ push {r4, lr}
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021D8900
+ mov r0, #0xc3
+ lsl r0, r0, #6
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ bne _021D88F0
+ ldr r2, _021D8904 ; =0x0000331E
+ ldrb r0, [r4, r2]
+ cmp r0, #0xf
+ bne _021D88DE
+ add r1, r4, #0
+ add r1, #0xb4
+ sub r2, #0x16
+ ldr r1, [r1]
+ ldr r2, [r4, r2]
+ add r0, r4, #4
+ bl MOD57_021D905C
+ ldr r2, _021D8908 ; =0x0000330C
+ add r0, r4, #0
+ ldr r2, [r4, r2]
+ add r0, #0x54
+ mov r1, #1
+ bl MOD57_021D9144
+ b _021D88F0
+_021D88DE:
+ cmp r0, #0
+ bne _021D88F0
+ sub r2, #0x12
+ add r0, r4, #0
+ ldr r2, [r4, r2]
+ add r0, #0x54
+ mov r1, #0
+ bl MOD57_021D9144
+_021D88F0:
+ ldr r0, _021D8904 ; =0x0000331E
+ mov r1, #0x1e
+ ldrb r0, [r4, r0]
+ add r0, r0, #1
+ blx _s32_div_f
+ ldr r0, _021D8904 ; =0x0000331E
+ strb r1, [r4, r0]
+_021D8900:
+ pop {r4, pc}
+ nop
+_021D8904: .word 0x0000331E
+_021D8908: .word 0x0000330C
+ thumb_func_end MOD57_021D88A4
+
+ thumb_func_start MOD57_021D890C
+MOD57_021D890C: ; 0x021D890C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, r1, #0
+ bl FUN_02020988
+ mov r1, #0
+ add r4, r0, #0
+ mvn r1, r1
+ cmp r4, r1
+ beq _021D894A
+ cmp r4, #0
+ beq _021D894C
+ mov r1, #0x40
+ add r0, sp, #4
+ strh r1, [r0]
+ add r0, sp, #4
+ str r0, [sp]
+ ldr r3, _021D8950 ; =0x021C48F8
+ add r0, r5, #0
+ ldrh r2, [r3, #0x1c]
+ ldrh r3, [r3, #0x1e]
+ mov r1, #2
+ bl FUN_0201AFBC
+ cmp r0, #0
+ bne _021D894A
+ mov r0, #0
+ add sp, #8
+ mvn r0, r0
+ pop {r3, r4, r5, pc}
+_021D894A:
+ add r0, r4, #0
+_021D894C:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8950: .word 0x021C48F8
+ thumb_func_end MOD57_021D890C
+
+ thumb_func_start MOD57_021D8954
+MOD57_021D8954: ; 0x021D8954
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r0, r1, #0
+ bl FUN_02020968
+ mov r1, #0
+ add r4, r0, #0
+ mvn r1, r1
+ cmp r4, r1
+ beq _021D8992
+ cmp r4, #0
+ beq _021D8994
+ mov r1, #0x40
+ add r0, sp, #4
+ strh r1, [r0]
+ add r0, sp, #4
+ str r0, [sp]
+ ldr r3, _021D8998 ; =0x021C48F8
+ add r0, r5, #0
+ ldrh r2, [r3, #0x1c]
+ ldrh r3, [r3, #0x1e]
+ mov r1, #2
+ bl FUN_0201AFBC
+ cmp r0, #0
+ bne _021D8992
+ mov r0, #0
+ add sp, #8
+ mvn r0, r0
+ pop {r3, r4, r5, pc}
+_021D8992:
+ add r0, r4, #0
+_021D8994:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_021D8998: .word 0x021C48F8
+ thumb_func_end MOD57_021D8954
+
+ thumb_func_start MOD57_021D899C
+MOD57_021D899C: ; 0x021D899C
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r7, _021D89D0 ; =0x021D98F4
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r4, #0
+_021D89A6:
+ lsl r1, r4, #4
+ lsl r2, r4, #3
+ add r0, r5, #0
+ add r1, r6, r1
+ add r2, r7, r2
+ bl FUN_02019150
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xb
+ blo _021D89A6
+ mov r2, #0
+ add r0, r5, #0
+ mov r1, #7
+ mov r3, #1
+ str r2, [sp]
+ bl FUN_02017F48
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D89D0: .word 0x021D98F4
+ thumb_func_end MOD57_021D899C
+
+ thumb_func_start MOD57_021D89D4
+MOD57_021D89D4: ; 0x021D89D4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r4, #0
+_021D89DA:
+ lsl r0, r4, #4
+ add r0, r5, r0
+ bl FUN_02019178
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0xb
+ blo _021D89DA
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D89D4
+
+ thumb_func_start MOD57_021D89F0
+MOD57_021D89F0: ; 0x021D89F0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r1, #0
+ mov r1, #0x88
+ str r1, [sp]
+ mov r1, #0x10
+ str r1, [sp, #4]
+ mov r1, #0
+ add r2, r1, #0
+ add r3, r1, #0
+ add r7, r0, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0x88
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x10
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0x88
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x20
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0x88
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x30
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0x88
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x40
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x50
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ add r0, #0x60
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ ldr r2, _021D8CEC ; =0x0000022D
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x19
+ bl FUN_0200A86C
+ str r0, [sp, #0x14]
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ add r5, r0, #0
+ mov r4, #0
+_021D8AA8:
+ cmp r4, #3
+ bne _021D8AB6
+ bne _021D8AE0
+ ldrb r0, [r6, #4]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ beq _021D8AE0
+_021D8AB6:
+ ldr r1, _021D8CF0 ; =0x021D98C8
+ lsl r2, r4, #2
+ ldr r1, [r1, r2]
+ ldr r0, [sp, #0x14]
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D8CF4 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #4
+ add r0, r7, r0
+ add r2, r5, #0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+_021D8AE0:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #7
+ blo _021D8AA8
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ str r0, [sp, #0x10]
+ mov r0, #6
+ mov r1, #0x20
+ mov r2, #0x19
+ bl FUN_0200AA90
+ mov r2, #0
+ str r5, [sp]
+ add r4, r0, #0
+ ldrh r0, [r6, #0x28]
+ mov r1, #0x88
+ add r3, r2, #0
+ str r0, [sp, #4]
+ mov r0, #5
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD57_021D8FD8
+ add r1, r6, #0
+ add r0, r5, #0
+ add r1, #8
+ bl FUN_02021E28
+ add r0, r7, #0
+ mov r2, #0
+ add r0, #0x10
+ mov r1, #0x88
+ add r3, r2, #0
+ str r5, [sp]
+ bl MOD57_021D9024
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r2, [r6, #0x1c]
+ add r0, r4, #0
+ mov r1, #5
+ mov r3, #6
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ mov r1, #0xe
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0x88
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8CF4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r7, #0
+ str r1, [sp, #0xc]
+ add r0, #0x20
+ add r2, r5, #0
+ bl FUN_0201BDE0
+ ldrb r0, [r6, #4]
+ lsl r0, r0, #0x1c
+ lsr r0, r0, #0x1f
+ beq _021D8BA4
+ str r5, [sp]
+ ldr r0, [r6, #0x20]
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #3
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r0, #0x30
+ mov r1, #0x88
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+_021D8BA4:
+ str r5, [sp]
+ ldr r0, [r6, #0x24]
+ mov r2, #0
+ str r0, [sp, #4]
+ mov r0, #9
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r0, #0x40
+ mov r1, #0x88
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+ ldrb r0, [r6, #4]
+ lsl r0, r0, #0x1e
+ lsr r0, r0, #0x1f
+ beq _021D8C02
+ ldr r0, [r6, #0x18]
+ bl FUN_02029EBC
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r1, #0
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, [r6, #0x18]
+ bl FUN_02029EC0
+ mov r3, #2
+ add r2, r0, #0
+ str r3, [sp]
+ mov r1, #1
+ add r0, r4, #0
+ str r1, [sp, #4]
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x10
+ bl FUN_0200A8E0
+ b _021D8C32
+_021D8C02:
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldrh r2, [r6, #0x2a]
+ add r0, r4, #0
+ mov r1, #0
+ mov r3, #3
+ bl FUN_0200AD38
+ mov r3, #2
+ add r2, r6, #0
+ str r3, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ add r2, #0x2e
+ ldrb r2, [r2]
+ add r0, r4, #0
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ mov r1, #0xf
+ bl FUN_0200A8E0
+_021D8C32:
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8CF4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r7, #0
+ add r0, #0x50
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r1, #2
+ add r2, r6, #0
+ str r1, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r2, #0x2f
+ ldrb r2, [r2]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_0200AD38
+ add r2, r6, #0
+ add r2, #0x30
+ ldrb r2, [r2]
+ add r0, r4, #0
+ mov r1, #3
+ bl FUN_0200B764
+ mov r3, #2
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r6, #0x31
+ ldrb r2, [r6]
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x14]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x11
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8CF4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r7, #0x60
+ add r0, r7, #0
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200AB18
+ add r0, r5, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_0200A8B8
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D8CEC: .word 0x0000022D
+_021D8CF0: .word 0x021D98C8
+_021D8CF4: .word 0x00010200
+ thumb_func_end MOD57_021D89F0
+
+ thumb_func_start MOD57_021D8CF8
+MOD57_021D8CF8: ; 0x021D8CF8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x20
+ str r1, [sp, #0x10]
+ mov r1, #0
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0x70
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0x80
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0x90
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ mov r1, #0
+ mov r0, #0xe0
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r6, #0
+ add r0, #0xa0
+ add r2, r1, #0
+ add r3, r1, #0
+ bl FUN_020196F4
+ ldr r2, _021D8FAC ; =0x0000022D
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x19
+ bl FUN_0200A86C
+ add r7, r0, #0
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ add r5, r0, #0
+ mov r4, #7
+_021D8D72:
+ ldr r1, _021D8FB0 ; =0x021D98C8
+ lsl r2, r4, #2
+ ldr r1, [r1, r2]
+ add r0, r7, #0
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r0, _021D8FB4 ; =0x00010200
+ mov r1, #0
+ str r0, [sp, #8]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ lsl r0, r4, #4
+ add r0, r6, r0
+ add r2, r5, #0
+ add r3, r1, #0
+ bl FUN_0201BDE0
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xb
+ blo _021D8D72
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ str r0, [sp, #0x14]
+ mov r0, #5
+ mov r1, #0x20
+ mov r2, #0x19
+ bl FUN_0200AA90
+ ldr r1, [sp, #0x10]
+ add r4, r0, #0
+ add r1, #0x33
+ ldrb r1, [r1]
+ cmp r1, #0
+ beq _021D8E3C
+ mov r1, #2
+ str r1, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ ldr r2, [sp, #0x10]
+ add r3, r1, #0
+ add r2, #0x32
+ ldrb r2, [r2]
+ bl FUN_0200AD38
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ add r2, #0x33
+ ldrb r2, [r2]
+ mov r1, #3
+ bl FUN_0200B764
+ mov r3, #2
+ ldr r2, [sp, #0x10]
+ str r3, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ add r2, #0x34
+ ldrb r2, [r2]
+ add r0, r4, #0
+ mov r1, #4
+ bl FUN_0200AD38
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x10]
+ add r0, r4, #0
+ ldrh r2, [r2, #0x2c]
+ mov r1, #0
+ mov r3, #3
+ bl FUN_0200AD38
+ mov r3, #2
+ ldr r2, [sp, #0x10]
+ str r3, [sp]
+ mov r1, #1
+ str r1, [sp, #4]
+ add r2, #0x35
+ ldrb r2, [r2]
+ add r0, r4, #0
+ bl FUN_0200AD38
+ ldr r2, [sp, #0x14]
+ add r0, r7, #0
+ mov r1, #0x11
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ b _021D8E74
+_021D8E3C:
+ ldr r2, [sp, #0x14]
+ add r0, r7, #0
+ mov r1, #0xc
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ add r3, r1, #0
+ bl FUN_0200ABB4
+ mov r3, #0
+ str r3, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ mov r1, #1
+ bl FUN_0200ABB4
+ add r0, r7, #0
+ mov r1, #0x14
+ add r2, r5, #0
+ bl FUN_0200A8E0
+_021D8E74:
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8FB4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x70
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r2, [sp, #0x14]
+ add r0, r7, #0
+ mov r1, #0xf
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x14]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r5, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r0, #0x10
+ str r0, [sp]
+ mov r1, #0
+ ldr r0, _021D8FB4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x70
+ add r2, r5, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r2, #0
+ ldr r0, [sp, #0x10]
+ str r5, [sp]
+ ldr r0, [r0, #0x38]
+ mov r1, #0xe0
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0x80
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+ add r0, r7, #0
+ mov r1, #0x12
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8FB4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x90
+ add r2, r5, #0
+ mov r3, #0x70
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ mov r2, #0
+ ldr r0, [sp, #0x10]
+ str r5, [sp]
+ ldr r0, [r0, #0x40]
+ mov r1, #0xe0
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0x90
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+ add r0, r7, #0
+ mov r1, #0x13
+ add r2, r5, #0
+ bl FUN_0200A8E0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D8FB4 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r6, #0
+ add r0, #0x90
+ add r2, r5, #0
+ mov r3, #0xb0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ str r5, [sp]
+ ldr r0, [r0, #0x3c]
+ mov r1, #0xe0
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ add r0, #0x90
+ mov r2, #0x40
+ mov r3, #0
+ bl MOD57_021D8FD8
+ mov r2, #0
+ ldr r0, [sp, #0x10]
+ str r5, [sp]
+ ldr r0, [r0, #0x44]
+ add r6, #0xa0
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ mov r0, #1
+ str r0, [sp, #0xc]
+ add r0, r6, #0
+ mov r1, #0xe0
+ add r3, r2, #0
+ bl MOD57_021D8FD8
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r4, #0
+ bl FUN_0200AB18
+ add r0, r5, #0
+ bl FUN_02021A20
+ add r0, r7, #0
+ bl FUN_0200A8B8
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D8FAC: .word 0x0000022D
+_021D8FB0: .word 0x021D98C8
+_021D8FB4: .word 0x00010200
+ thumb_func_end MOD57_021D8CF8
+
+ thumb_func_start MOD57_021D8FB8
+MOD57_021D8FB8: ; 0x021D8FB8
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r6, r2, #0
+ add r5, r0, #0
+ cmp r4, r6
+ bhi _021D8FD6
+_021D8FC4:
+ lsl r0, r4, #4
+ add r0, r5, r0
+ bl FUN_02019570
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, r6
+ bls _021D8FC4
+_021D8FD6:
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD57_021D8FB8
+
+ thumb_func_start MOD57_021D8FD8
+MOD57_021D8FD8: ; 0x021D8FD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ mov r0, #1
+ add r4, r2, #0
+ str r0, [sp]
+ add r2, sp, #0x18
+ add r5, r1, #0
+ add r6, r3, #0
+ ldrb r2, [r2, #0x18]
+ ldr r0, [sp, #0x28]
+ ldr r1, [sp, #0x2c]
+ ldr r3, [sp, #0x34]
+ bl FUN_02021B04
+ mov r0, #0
+ ldr r1, [sp, #0x28]
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ add r3, r3, r4
+ str r6, [sp]
+ mov r1, #0
+ ldr r0, _021D9020 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ ldr r2, [sp, #0x28]
+ add r0, r7, #0
+ sub r3, r5, r3
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D9020: .word 0x00010200
+ thumb_func_end MOD57_021D8FD8
+
+ thumb_func_start MOD57_021D9024
+MOD57_021D9024: ; 0x021D9024
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r0, #0
+ add r5, r1, #0
+ mov r0, #0
+ add r4, r2, #0
+ ldr r1, [sp, #0x28]
+ add r6, r3, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ add r3, r0, #0
+ add r3, r3, r4
+ str r6, [sp]
+ mov r1, #0
+ ldr r0, _021D9058 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ ldr r2, [sp, #0x28]
+ add r0, r7, #0
+ sub r3, r5, r3
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D9058: .word 0x00010200
+ thumb_func_end MOD57_021D9024
+
+ thumb_func_start MOD57_021D905C
+MOD57_021D905C: ; 0x021D905C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r1, #0
+ add r7, r0, #0
+ ldr r0, [r5, #0x18]
+ cmp r0, #0
+ bne _021D906E
+ bl ErrorHandling
+_021D906E:
+ ldr r0, [r5, #0x18]
+ bl FUN_02029EBC
+ mov r0, #0x28
+ str r0, [sp]
+ mov r0, #0x10
+ str r0, [sp, #4]
+ add r0, r7, #0
+ mov r1, #0
+ add r0, #0x50
+ mov r2, #0xb8
+ add r3, r1, #0
+ bl FUN_020196F4
+ ldr r2, _021D913C ; =0x0000022D
+ mov r0, #0
+ mov r1, #0x1a
+ mov r3, #0x19
+ bl FUN_0200A86C
+ str r0, [sp, #0x10]
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ add r4, r0, #0
+ mov r0, #0x20
+ mov r1, #0x19
+ bl FUN_020219F4
+ str r0, [sp, #0x14]
+ mov r0, #2
+ mov r1, #0x20
+ mov r2, #0x19
+ bl FUN_0200AA90
+ add r6, r0, #0
+ ldr r0, [r5, #0x18]
+ bl FUN_02029EBC
+ add r2, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r6, #0
+ mov r1, #0
+ mov r3, #3
+ bl FUN_0200AD38
+ ldr r0, [r5, #0x18]
+ bl FUN_02029EC0
+ mov r3, #2
+ add r2, r0, #0
+ str r3, [sp]
+ mov r1, #1
+ add r0, r6, #0
+ str r1, [sp, #4]
+ bl FUN_0200AD38
+ ldr r0, [sp, #0x10]
+ ldr r2, [sp, #0x14]
+ mov r1, #0x10
+ bl FUN_0200A8E0
+ ldr r2, [sp, #0x14]
+ add r0, r6, #0
+ add r1, r4, #0
+ bl FUN_0200B7B8
+ mov r0, #0
+ add r1, r4, #0
+ add r2, r0, #0
+ bl FUN_02002E14
+ mov r1, #0xe0
+ sub r3, r1, r0
+ mov r1, #0
+ str r1, [sp]
+ ldr r0, _021D9140 ; =0x00010200
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r7, #0x50
+ add r0, r7, #0
+ add r2, r4, #0
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ ldr r0, [sp, #0x10]
+ bl FUN_0200A8B8
+ add r0, r4, #0
+ bl FUN_02021A20
+ ldr r0, [sp, #0x14]
+ bl FUN_02021A20
+ add r0, r6, #0
+ bl FUN_0200AB18
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021D913C: .word 0x0000022D
+_021D9140: .word 0x00010200
+ thumb_func_end MOD57_021D905C
+
+ thumb_func_start MOD57_021D9144
+MOD57_021D9144: ; 0x021D9144
+ push {r4, lr}
+ sub sp, #0x10
+ add r4, r0, #0
+ cmp r1, #0
+ beq _021D9164
+ mov r1, #0
+ str r1, [sp]
+ ldr r3, _021D9180 ; =0x00010200
+ str r1, [sp, #4]
+ str r3, [sp, #8]
+ mov r3, #0xcd
+ str r1, [sp, #0xc]
+ bl FUN_0201BDE0
+ add sp, #0x10
+ pop {r4, pc}
+_021D9164:
+ mov r1, #5
+ str r1, [sp]
+ mov r1, #0x10
+ str r1, [sp, #4]
+ mov r1, #0
+ mov r2, #0xcd
+ add r3, r1, #0
+ bl FUN_020196F4
+ add r0, r4, #0
+ bl FUN_020191D0
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D9180: .word 0x00010200
+ thumb_func_end MOD57_021D9144
+
+ thumb_func_start MOD57_021D9184
+MOD57_021D9184: ; 0x021D9184
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x3c
+ add r7, r0, #0
+ bl MOD57_021D9578
+ blx 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, #0x19
+ str r2, [sp, #0x10]
+ add r2, r0, #0
+ bl FUN_02009EAC
+ mov r0, #0x19
+ add r1, r7, #4
+ add r2, r0, #0
+ bl FUN_02008C9C
+ ldr r4, _021D92EC ; =0x021D994C
+ str r0, [r7]
+ mov r6, #0
+ add r5, r7, #0
+_021D91BC:
+ ldrb r0, [r4]
+ add r1, r6, #0
+ mov r2, #0x19
+ bl FUN_02008DEC
+ mov r1, #0x4b
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r6, r6, #1
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r6, #4
+ blt _021D91BC
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #0x19
+ str r0, [sp, #8]
+ add r0, r1, #0
+ ldr r0, [r7, r0]
+ mov r1, #0x33
+ mov r2, #0x1c
+ mov r3, #0
+ bl FUN_02008F34
+ mov r1, #0x4f
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ mov r0, #1
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #9
+ str r0, [sp, #8]
+ mov r0, #0x19
+ sub r1, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r7, r1]
+ mov r1, #0x33
+ mov r2, #0xb
+ mov r3, #0
+ bl FUN_02008FEC
+ mov r1, #5
+ lsl r1, r1, #6
+ str r0, [r7, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #0x19
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r7, r1]
+ mov r1, #0x33
+ mov r2, #0x25
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x51
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #0x19
+ sub r1, #0xc
+ str r0, [sp, #8]
+ ldr r0, [r7, r1]
+ mov r1, #0x33
+ mov r2, #0x27
+ mov r3, #0
+ bl FUN_020090AC
+ mov r1, #0x52
+ lsl r1, r1, #2
+ str r0, [r7, r1]
+ sub r1, #0xc
+ ldr r0, [r7, r1]
+ bl FUN_02009A50
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r7, r0]
+ bl FUN_02009CF0
+ ldr r3, _021D92F0 ; =0x021D9960
+ add r2, sp, #0x1c
+ 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}
+ mov r0, #0x33
+ mov r1, #0x19
+ bl FUN_02006670
+ str r0, [sp, #0x14]
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ add r0, r7, r0
+ mov r4, #0
+ str r0, [sp, #0x18]
+_021D9290:
+ lsl r6, r4, #2
+ add r1, sp, #0x1c
+ ldr r0, [sp, #0x14]
+ ldr r1, [r1, r6]
+ mov r2, #0x19
+ add r5, r7, r6
+ bl FUN_02006704
+ mov r1, #7
+ lsl r1, r1, #6
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021D92CA
+ ldr r1, [sp, #0x18]
+ add r1, r1, r6
+ blx FUN_020B0138
+ cmp r0, #0
+ bne _021D92CE
+ mov r0, #0x1e
+ lsl r0, r0, #4
+ ldr r0, [r5, r0]
+ bl FUN_02016A18
+ bl ErrorHandling
+ b _021D92CE
+_021D92CA:
+ bl ErrorHandling
+_021D92CE:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #8
+ blo _021D9290
+ ldr r0, [sp, #0x14]
+ bl FUN_020066F4
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add sp, #0x3c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021D92EC: .word 0x021D994C
+_021D92F0: .word 0x021D9960
+ thumb_func_end MOD57_021D9184
+
+ thumb_func_start MOD57_021D92F4
+MOD57_021D92F4: ; 0x021D92F4
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x88
+ add r7, r1, #0
+ mov r1, #1
+ str r0, [sp, #0x2c]
+ str r1, [sp]
+ sub r0, r1, #2
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r2, #0
+ str r2, [sp, #0xc]
+ mov r0, #0x4b
+ lsl r0, r0, #2
+ ldr r3, [sp, #0x2c]
+ str r1, [sp, #0x10]
+ ldr r3, [r3, r0]
+ add r4, r0, #4
+ str r3, [sp, #0x14]
+ ldr r3, [sp, #0x2c]
+ ldr r3, [r3, r4]
+ add r4, r0, #0
+ str r3, [sp, #0x18]
+ ldr r3, [sp, #0x2c]
+ add r4, #8
+ ldr r3, [r3, r4]
+ add r0, #0xc
+ str r3, [sp, #0x1c]
+ ldr r3, [sp, #0x2c]
+ ldr r0, [r3, r0]
+ add r3, r1, #0
+ str r0, [sp, #0x20]
+ str r2, [sp, #0x24]
+ str r2, [sp, #0x28]
+ add r0, sp, #0x64
+ add r2, r1, #0
+ bl FUN_02008AA4
+ ldr r0, [sp, #0x2c]
+ mov r4, #0
+ ldr r0, [r0]
+ ldr r6, _021D94B4 ; =0x021D99C0
+ str r0, [sp, #0x34]
+ add r0, sp, #0x64
+ str r0, [sp, #0x38]
+ mov r0, #1
+ lsl r0, r0, #0xc
+ str r4, [sp, #0x3c]
+ str r4, [sp, #0x40]
+ str r4, [sp, #0x44]
+ str r0, [sp, #0x48]
+ str r0, [sp, #0x4c]
+ str r0, [sp, #0x50]
+ add r0, sp, #0x34
+ strh r4, [r0, #0x20]
+ mov r0, #2
+ str r0, [sp, #0x58]
+ mov r0, #1
+ str r0, [sp, #0x5c]
+ mov r0, #0x19
+ ldr r5, [sp, #0x2c]
+ str r0, [sp, #0x60]
+_021D936E:
+ ldr r0, [r6]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ ldr r0, [r6, #4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200BC
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r1, r4, #0
+ bl FUN_02020130
+ ldrb r0, [r7, r4]
+ cmp r0, #0
+ bne _021D93AE
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+_021D93AE:
+ add r4, r4, #1
+ add r6, #8
+ add r5, r5, #4
+ cmp r4, #8
+ blt _021D936E
+ mov r0, #8
+ ldr r4, _021D94B8 ; =0x021D9980
+ ldr r5, [sp, #0x2c]
+ str r0, [sp, #0x30]
+ mov r6, #0
+ mov r7, #1
+_021D93C4:
+ ldr r0, [r4]
+ str r7, [sp, #0x58]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ ldr r0, [r4, #4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x5f
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #8
+ bl FUN_02020130
+ mov r0, #0x5f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r4, #8
+ add r5, r5, #4
+ cmp r6, #8
+ blt _021D93C4
+ ldr r0, [sp, #0x30]
+ ldr r4, _021D94B8 ; =0x021D9980
+ add r0, #8
+ str r0, [sp, #0x30]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp, #0x30]
+ ldr r0, [sp, #0x30]
+ mov r6, #0
+ lsl r1, r0, #2
+ ldr r0, [sp, #0x2c]
+ mov r7, #1
+ add r5, r0, r1
+_021D9424:
+ ldr r0, [r4]
+ str r7, [sp, #0x58]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x3c]
+ ldr r0, [r4, #4]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x40]
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ mov r1, #0x57
+ lsl r1, r1, #2
+ str r0, [r5, r1]
+ add r0, r1, #0
+ ldr r0, [r5, r0]
+ mov r1, #1
+ bl FUN_020200BC
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #9
+ bl FUN_02020130
+ mov r0, #0x57
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #0
+ bl FUN_020200A0
+ add r6, r6, #1
+ add r4, #8
+ add r5, r5, #4
+ cmp r6, #8
+ blt _021D9424
+ mov r1, #0
+ add r0, sp, #0x84
+ strb r1, [r0]
+ mov r0, #6
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x3c]
+ mov r0, #0x22
+ lsl r0, r0, #0xe
+ str r0, [sp, #0x40]
+ str r1, [sp, #0x58]
+ mov r1, #0x57
+ ldr r0, [sp, #0x2c]
+ lsl r1, r1, #2
+ add r4, r0, r1
+ ldr r0, [sp, #0x30]
+ add r0, #8
+ str r0, [sp, #0x30]
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x16
+ add r0, sp, #0x34
+ bl FUN_0201FE94
+ str r0, [r4, r5]
+ ldr r0, [r4, r5]
+ mov r1, #0
+ bl FUN_020200BC
+ ldr r0, [r4, r5]
+ mov r1, #0xa
+ bl FUN_02020130
+ ldr r0, [r4, r5]
+ mov r1, #0
+ bl FUN_020200A0
+ add sp, #0x88
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_021D94B4: .word 0x021D99C0
+_021D94B8: .word 0x021D9980
+ thumb_func_end MOD57_021D92F4
+
+ thumb_func_start MOD57_021D94BC
+MOD57_021D94BC: ; 0x021D94BC
+ push {r4, r5, r6, lr}
+ mov r6, #7
+ add r5, r0, #0
+ mov r4, #0
+ lsl r6, r6, #6
+_021D94C6:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ bl FUN_02016A18
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #8
+ blo _021D94C6
+ mov r0, #0x4f
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ bl FUN_02009C0C
+ mov r0, #5
+ lsl r0, r0, #6
+ ldr r0, [r5, r0]
+ bl FUN_02009E04
+ mov r6, #0x4b
+ mov r4, #0
+ lsl r6, r6, #2
+_021D94F4:
+ lsl r0, r4, #2
+ add r0, r5, r0
+ ldr r0, [r0, r6]
+ bl FUN_02008E2C
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #4
+ blo _021D94F4
+ ldr r0, [r5]
+ bl FUN_0201FD58
+ bl FUN_02009FA0
+ bl FUN_0201D12C
+ bl FUN_0201E08C
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD57_021D94BC
+
+ thumb_func_start MOD57_021D951C
+MOD57_021D951C: ; 0x021D951C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ add r4, r1, #0
+ add r5, r0, #0
+ add r6, r2, #0
+ cmp r4, #8
+ blo _021D952E
+ bl ErrorHandling
+_021D952E:
+ cmp r6, #3
+ bls _021D9536
+ bl ErrorHandling
+_021D9536:
+ lsl r7, r4, #2
+ mov r0, #0x57
+ add r1, r5, r7
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl FUN_02020354
+ mov r1, #1
+ blx FUN_020B19C4
+ str r0, [sp]
+ lsl r0, r4, #5
+ str r0, [sp, #4]
+ mov r0, #0x1e
+ add r1, r5, r7
+ lsl r0, r0, #4
+ ldr r0, [r1, r0]
+ lsl r5, r6, #5
+ ldr r4, [r0, #0xc]
+ mov r1, #0x20
+ add r0, r4, r5
+ blx DC_FlushRange
+ ldr r2, [sp]
+ ldr r1, [sp, #4]
+ add r0, r4, r5
+ add r1, r2, r1
+ mov r2, #0x20
+ blx GX_LoadOBJPltt
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D951C
+
+ thumb_func_start MOD57_021D9578
+MOD57_021D9578: ; 0x021D9578
+ push {r4, lr}
+ sub sp, #0x10
+ ldr r4, _021D95A4 ; =0x021D9950
+ 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, #2
+ mov r1, #0x19
+ bl FUN_0201E00C
+ bl FUN_0201D168
+ bl FUN_0201E0BC
+ add sp, #0x10
+ pop {r4, pc}
+ .align 2, 0
+_021D95A4: .word 0x021D9950
+ thumb_func_end MOD57_021D9578
+
+ thumb_func_start MOD57_021D95A8
+MOD57_021D95A8: ; 0x021D95A8
+ mov r2, #0
+ mov r1, #0xff
+_021D95AC:
+ strb r2, [r0]
+ strb r1, [r0, #1]
+ add r2, r2, #1
+ add r0, r0, #2
+ cmp r2, #4
+ blt _021D95AC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D95A8
+
+ thumb_func_start MOD57_021D95BC
+MOD57_021D95BC: ; 0x021D95BC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD57_021D95F4
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD57_021D9624
+ cmp r0, #1
+ beq _021D95F0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD57_021D965C
+ cmp r0, #1
+ beq _021D95F0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD57_021D9694
+ cmp r0, #1
+_021D95F0:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D95BC
+
+ thumb_func_start MOD57_021D95F4
+MOD57_021D95F4: ; 0x021D95F4
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r4, #0
+ add r5, r7, #0
+ mov r6, #0xff
+_021D95FE:
+ ldrb r0, [r5, #1]
+ cmp r0, #0xff
+ beq _021D9612
+ ldrb r0, [r5]
+ add r0, r0, #3
+ bl FUN_020048BC
+ cmp r0, #0
+ bne _021D9612
+ strb r6, [r5, #1]
+_021D9612:
+ add r4, r4, #1
+ add r5, r5, #2
+ cmp r4, #4
+ blt _021D95FE
+ add r0, r7, #0
+ bl MOD57_021D96D8
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D95F4
+
+ thumb_func_start MOD57_021D9624
+MOD57_021D9624: ; 0x021D9624
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r4, #0
+ add r1, r6, #0
+_021D962E:
+ ldrb r0, [r1, #1]
+ cmp r5, r0
+ bne _021D964E
+ lsl r7, r4, #1
+ ldrb r0, [r6, r7]
+ add r1, r5, #0
+ bl MOD57_021D96F4
+ ldrb r2, [r6, r7]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r3, r5, #0
+ bl MOD57_021D96B0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D964E:
+ add r4, r4, #1
+ add r1, r1, #2
+ cmp r4, #4
+ blt _021D962E
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D9624
+
+ thumb_func_start MOD57_021D965C
+MOD57_021D965C: ; 0x021D965C
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ mov r4, #0
+ add r1, r5, #0
+_021D9666:
+ ldrb r0, [r1, #1]
+ cmp r0, #0xff
+ bne _021D9686
+ lsl r6, r4, #1
+ ldrb r0, [r5, r6]
+ add r1, r7, #0
+ bl MOD57_021D96F4
+ ldrb r2, [r5, r6]
+ add r0, r5, #0
+ add r1, r4, #0
+ add r3, r7, #0
+ bl MOD57_021D96B0
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_021D9686:
+ add r4, r4, #1
+ add r1, r1, #2
+ cmp r4, #4
+ blt _021D9666
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD57_021D965C
+
+ thumb_func_start MOD57_021D9694
+MOD57_021D9694: ; 0x021D9694
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldrb r0, [r5, #6]
+ add r4, r1, #0
+ bl MOD57_021D96F4
+ ldrb r2, [r5, #6]
+ add r0, r5, #0
+ mov r1, #3
+ add r3, r4, #0
+ bl MOD57_021D96B0
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD57_021D9694
+
+ thumb_func_start MOD57_021D96B0
+MOD57_021D96B0: ; 0x021D96B0
+ push {r4, r5}
+ cmp r1, #0
+ ble _021D96CE
+ lsl r4, r1, #1
+ add r4, r0, r4
+_021D96BA:
+ sub r5, r4, #2
+ ldrb r5, [r5]
+ sub r1, r1, #1
+ strb r5, [r4]
+ sub r5, r4, #1
+ ldrb r5, [r5]
+ strb r5, [r4, #1]
+ sub r4, r4, #2
+ cmp r1, #0
+ bgt _021D96BA
+_021D96CE:
+ strb r2, [r0]
+ strb r3, [r0, #1]
+ pop {r4, r5}
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D96B0
+
+ thumb_func_start MOD57_021D96D8
+MOD57_021D96D8: ; 0x021D96D8
+ mov r3, #0
+ mov r1, #0xff
+_021D96DC:
+ ldrb r2, [r0]
+ cmp r2, #0xff
+ bne _021D96E8
+ ldrb r2, [r0, #2]
+ strb r2, [r0]
+ strb r1, [r0, #2]
+_021D96E8:
+ add r3, r3, #1
+ add r0, r0, #2
+ cmp r3, #4
+ blt _021D96DC
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD57_021D96D8
+
+ thumb_func_start MOD57_021D96F4
+MOD57_021D96F4: ; 0x021D96F4
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r2, #0
+ add r0, r5, #3
+ add r4, r1, #0
+ ldr r2, _021D9720 ; =0x00000694
+ add r1, r0, #0
+ bl FUN_020048A0
+ ldr r2, _021D9724 ; =0x021D9A00
+ lsl r3, r4, #1
+ ldrh r2, [r2, r3]
+ mov r3, #4
+ sub r4, r3, r6
+ mov r3, #0x98
+ mul r3, r4
+ ldr r1, _021D9728 ; =0x0000FFFF
+ add r0, r5, #3
+ sub r2, r2, r3
+ bl FUN_02004D20
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_021D9720: .word 0x00000694
+_021D9724: .word 0x021D9A00
+_021D9728: .word 0x0000FFFF
+ thumb_func_end MOD57_021D96F4
+
+ .section .rodata
+ ; 0x021D972C
+ .incbin "baserom.nds", 0x2A844C, 0x2E4