summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2021-08-16 21:43:23 +0100
committerred031000 <rubenru09@aol.com>2021-08-16 21:43:23 +0100
commit6d864e78e737cec5387da17e5062b9e64bcec5eb (patch)
tree8eb3e70a0779cc67646fd883cf49f460f7585174
parent93e1e9884e1b857bf32b4db0a718510790840f88 (diff)
another file
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/global.inc81
-rw-r--r--arm9/modules/04/asm/arm_04.s2032
-rw-r--r--arm9/modules/04/asm/mod04_021DEB90.s2044
4 files changed, 2126 insertions, 2032 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index ed1a7956..5b9fee47 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -672,6 +672,7 @@ Overlay MODULE_04
Object mod04_021DDF40.o
Object mod04_021DE2D0.o
Object mod04_021DE89C.o
+ Object mod04_021DEB90.o
Object arm_04.o
}
diff --git a/arm9/global.inc b/arm9/global.inc
index e4276c87..f08623d5 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -6185,8 +6185,20 @@
.extern MOD04_021DE9F4
.extern MOD04_021DEB0C
.extern MOD04_021DEB54
+.extern MOD04_021DF5F0
+.extern MOD04_021DF638
+.extern MOD04_021DF648
+.extern MOD04_021DF6BC
+.extern MOD04_021DF704
+.extern MOD04_021DF748
+.extern MOD04_021DF760
+.extern MOD04_021DF7C4
+.extern MOD04_021DF88C
+.extern MOD04_021DF8A8
+.extern MOD04_021DF8F4
.extern MOD04_021DF95C
.extern MOD04_021DF978
+.extern MOD04_021DF9D4
.extern MOD04_021DFA40
.extern MOD04_021DFAF8
.extern MOD04_021DFB20
@@ -6196,10 +6208,54 @@
.extern MOD04_021DFF74
.extern MOD04_021E0200
.extern MOD04_021E0374
+.extern MOD04_021E0E48
+.extern MOD04_021E0EAC
+.extern MOD04_021E0F1C
+.extern MOD04_021E1034
+.extern MOD04_021E1074
+.extern MOD04_021E1D90
+.extern MOD04_021E1E30
+.extern MOD04_021E1ED4
+.extern MOD04_021E1F18
+.extern MOD04_021E1F84
+.extern MOD04_021E1FE4
+.extern MOD04_021E2068
+.extern MOD04_021E20C8
+.extern MOD04_021E2114
+.extern MOD04_021E2174
+.extern MOD04_021E2228
+.extern MOD04_021E234C
.extern MOD04_021E242C
.extern MOD04_021E2454
.extern MOD04_021E2578
+.extern MOD04_021E852C
+.extern MOD04_021E854C
+.extern MOD04_021E85D4
+.extern MOD04_021E86A4
+.extern MOD04_021E874C
+.extern MOD04_021E8780
+.extern MOD04_021E87D8
+.extern MOD04_021E8804
+.extern MOD04_021E8830
+.extern MOD04_021E8A50
+.extern MOD04_021E8A74
+.extern MOD04_021E8DC0
+.extern MOD04_021E8E08
+.extern MOD04_021E8EF4
+.extern MOD04_021E8F80
+.extern MOD04_021E9204
+.extern MOD04_021E9464
+.extern MOD04_021E9568
+.extern MOD04_021E9FD0
+.extern MOD04_021EA138
+.extern MOD04_021EA368
.extern MOD04_021EA530
+.extern MOD04_021EA9C4
+.extern MOD04_021EA9D8
+.extern MOD04_021EAA64
+.extern MOD04_021EAC1C
+.extern MOD04_021EAC5C
+.extern MOD04_021EACB4
.extern MOD04_021EACF8
.extern MOD04_021EADD8
.extern MOD04_021EADF8
@@ -6220,6 +6276,8 @@
.extern MOD04_021EBB80
.extern MOD04_021EBC60
.extern MOD04_021EE5F4
+.extern MOD04_021EE6A0
+.extern MOD04_021EE898
.extern MOD04_021EEFA8
.extern MOD04_021EEFFC
.extern MOD04_021EF06C
@@ -6241,6 +6299,27 @@
.extern MOD04_021F024C
.extern MOD04_021F0250
.extern MOD04_021F025C
+.extern MOD04_021F05F4
+.extern MOD04_021F0664
+.extern MOD04_021F06E4
+.extern MOD04_021F0EB0
+.extern MOD04_021F0F18
+.extern MOD04_021F0F64
+.extern MOD04_021F0F94
+.extern MOD04_021FBE7C
+.extern MOD04_021FD3C4
+.extern MOD04_021FD434
+.extern MOD04_021FD43C
+.extern MOD04_021FD45C
+.extern MOD04_021FD488
+.extern MOD04_021FD6C8
+.extern MOD04_021FD704
+.extern MOD04_021FD71C
+.extern MOD04_021FFEB0
+.extern MOD04_02200D6C
+.extern MOD04_02202280
+.extern MOD04_02202308
+.extern MOD04_02203E80
.extern MOD04_022069DC
.extern MOD04_02206E6C
.extern MOD04_02206EFC
@@ -8316,6 +8395,8 @@
.extern UNK04_0221048C
.extern UNK04_022104F8
.extern UNK04_022104FC
+.extern UNK04_02210F94
+.extern UNK04_02211094
.extern UNK05_021F64C8
.extern UNK05_021F8B84
.extern UNK05_021F8B88
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index ec23a828..5d87ee03 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -3,2002 +3,6 @@
.section .text
.balign 4, 0
- arm_func_start MOD04_021DEB90
-MOD04_021DEB90: ; 0x021DEB90
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021FD43C
- bl MOD04_021EFB28
- ldr r2, _021DEBCC ; =UNK04_02210540
- ldr r1, _021DEBD0 ; =0xFFFE8515
- str r0, [r2]
- mov r0, #9
- bl MOD04_021DD6B0
- ldr r0, _021DEBD4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DEBCC: .word UNK04_02210540
-_021DEBD0: .word 0xFFFE8515
-_021DEBD4: .word UNK04_0221053C
- arm_func_end MOD04_021DEB90
-
- arm_func_start MOD04_021DEBD8
-MOD04_021DEBD8: ; 0x021DEBD8
- ldr ip, _021DEBE0 ; =MOD04_021EAC1C
- bx ip
- .align 2, 0
-_021DEBE0: .word MOD04_021EAC1C
- arm_func_end MOD04_021DEBD8
-
- arm_func_start MOD04_021DEBE4
-MOD04_021DEBE4: ; 0x021DEBE4
- stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
- sub sp, sp, #0xc
- mov r7, #0
- mov fp, r0
- mov sb, r1
- mov sl, r7
- bl MOD04_021E852C
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp sb, #4
- addls pc, pc, sb, lsl #2
- b _021DEC48
-_021DEC18: ; jump table
- b _021DEC2C ; case 0
- b _021DEC2C ; case 1
- b _021DEC34 ; case 2
- b _021DEC34 ; case 3
- b _021DEC40 ; case 4
-_021DEC2C:
- mov r4, r7
- b _021DEC48
-_021DEC34:
- mov r4, #6
- ldr r6, _021DEF4C ; =0xFFFFE250
- b _021DEC48
-_021DEC40:
- ldr r6, _021DEF50 ; =0xFFFFE24F
- mov r4, #9
-_021DEC48:
- cmp r4, #0
- bne _021DED00
- mov r0, fp
- bl MOD04_021FD3C4
- movs r7, r0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldrb r8, [r7, #1]
- ldr r1, [r0]
- mov r5, #1
- mov r0, r5,lsl r8
- ldr r1, [r1, #0x644]
- ands r0, r1, r0
- mov r0, r8
- moveq r5, #0
- bl MOD04_021EA9D8
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- bne _021DECA8
- cmp sb, #0
- beq _021DECBC
-_021DECA8:
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DECC0
- cmp r8, #0
- bne _021DECC0
-_021DECBC:
- mov sl, #1
-_021DECC0:
- mov r0, r8
- bl MOD04_021DF56C
- ldr r1, _021DEF54 ; =UNK04_0221053C
- ldrb r7, [r7]
- ldr r2, _021DEF58 ; =UNK04_02210544
- mov fp, #0
- ldr r3, [r1]
- str fp, [r2, r7, lsl #2]
- ldrb r2, [r3, #0x361]
- mov r7, r0
- sub r0, r2, #1
- strb r0, [r3, #0x361]
- ldr r1, [r1]
- ldrb r0, [r1, #0x368]
- sub r0, r0, #1
- strb r0, [r1, #0x368]
-_021DED00:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DED58
- ldr r0, [r1, #0x24]
- cmp r0, #6
- bne _021DED58
- cmp r5, #0
- bne _021DED58
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp r4, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_021E85D4
- mov r0, r7
- bl MOD04_021E8A50
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DED58:
- mov r0, r4
- mov r1, r6
- mov r2, r7
- bl MOD04_021E8A74
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- cmp r4, #0
- beq _021DED90
- mov r0, r4
- mov r1, r6
- bl MOD04_021DD6B0
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DED90:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DEE04
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DEDBC
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DEE04
-_021DEDBC:
- ldr r2, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r2]
- ldrb r0, [r1, #0x361]
- add r6, r0, #2
- add r3, r1, r6, lsl #2
- ldr r3, [r3, #0x448]
- cmp r3, #0
- beq _021DEE04
- add r3, r1, r6
- ldrb r3, [r3, #0x624]
- add r0, r0, #1
- add r0, r1, r0
- strb r3, [r0, #0x624]
- ldr r0, [r2]
- ldrb r1, [r0, #0x361]
- add r0, r1, #1
- add r1, r1, #3
- bl MOD04_021E8830
-_021DEE04:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- bne _021DEE4C
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DEE2C
- bl MOD04_021E85D4
- b _021DEE68
-_021DEE2C:
- ldrb r0, [r1, #0x361]
- cmp r0, #0
- bne _021DEE68
- ldr r1, _021DEF5C ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- b _021DEE68
-_021DEE4C:
- ldrb r0, [r1, #0x361]
- cmp r0, #0
- bne _021DEE68
- ldr r1, _021DEF5C ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
-_021DEE68:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #0
- beq _021DEE88
- ldrb r0, [r1, #0x369]
- cmp r0, #1
- bne _021DEEA4
-_021DEE88:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r2, [r0]
- ldrb r1, [r2, #0x368]
- strb r1, [r2, #0x36a]
- ldr r0, [r0]
- ldr r0, [r0, #0x364]
- bl MOD04_02202308
-_021DEEA4:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r6, [r0]
- ldr r0, [r6, #0x90]
- cmp r0, #0
- beq _021DEF00
- cmp r5, #0
- beq _021DEF00
- cmp sb, #0
- moveq r5, #1
- mov r0, r7
- movne r5, #0
- bl MOD04_021E1F18
- str r0, [sp]
- ldr r1, [r6, #0x94]
- ldr r0, _021DEF54 ; =UNK04_0221053C
- str r1, [sp, #4]
- ldr r1, [r0]
- mov r0, r4
- ldr r4, [r1, #0x90]
- mov r1, r5
- mov r2, sl
- mov r3, r8
- blx r4
-_021DEF00:
- ldr r0, _021DEF54 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x2d]
- cmp r0, #0
- bne _021DEF24
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
-_021DEF24:
- ldrb r0, [r1, #0x361]
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- bl MOD04_02200D6C
- bl MOD04_021E8DC0
- mov r0, #3
- bl MOD04_021DF5CC
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
- .align 2, 0
-_021DEF4C: .word 0xFFFFE250
-_021DEF50: .word 0xFFFFE24F
-_021DEF54: .word UNK04_0221053C
-_021DEF58: .word UNK04_02210544
-_021DEF5C: .word UNK04_0220D334
- arm_func_end MOD04_021DEBE4
-
- arm_func_start MOD04_021DEF60
-MOD04_021DEF60: ; 0x021DEF60
- ldr ip, _021DEF68 ; =MOD04_021EAC5C
- bx ip
- .align 2, 0
-_021DEF68: .word MOD04_021EAC5C
- arm_func_end MOD04_021DEF60
-
- arm_func_start MOD04_021DEF6C
-MOD04_021DEF6C: ; 0x021DEF6C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- add r4, sp, #0
- mov r3, #0
- strb r3, [r4]
- strb r3, [r4, #1]
- strb r3, [r4, #2]
- strb r3, [r4, #3]
- strb r3, [r4, #4]
- strb r3, [r4, #5]
- strb r3, [r4, #6]
- strb r3, [r4, #7]
- strb r3, [r4, #8]
- strb r3, [r4, #9]
- strb r3, [r4, #0xa]
- mov r5, r1
- strb r3, [r4, #0xb]
- ldr r4, [r5, #8]
- mov r6, r0
- bl MOD04_021E2068
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0C8 ; =UNK04_0220D338
- bl strlen
- mov r2, r0
- ldr r1, _021DF0C8 ; =UNK04_0220D338
- mov r0, r4
- bl memcmp
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0C8 ; =UNK04_0220D338
- bl strlen
- add r4, r4, r0
- mov r0, r4
- mov r1, #0x76
- bl strchr
- sub r7, r0, r4
- add r0, sp, #0
- mov r1, r4
- mov r2, r7
- bl strncpy
- cmp r7, #0xa
- addhi sp, sp, #0xc
- ldmhiia sp!, {r4, r5, r6, r7, pc}
- add r0, sp, #0
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- cmp r0, #3
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0CC ; =UNK04_0220D340
- add r1, r7, #1
- add r4, r4, r1
- bl strlen
- mov r2, r0
- ldr r1, _021DF0CC ; =UNK04_0220D340
- mov r0, r4
- bl memcmp
- cmp r0, #0
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF0D0 ; =UNK04_0221053C
- ldr r1, [r0]
- ldr r0, [r1, #0x24]
- cmp r0, #5
- beq _021DF0A8
- cmp r0, #6
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DF0A8
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
-_021DF0A8:
- ldr r0, _021DF0CC ; =UNK04_0220D340
- bl strlen
- add r2, r4, r0
- ldr r1, [r5]
- mov r0, r6
- bl MOD04_021E8EF4
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DF0C8: .word UNK04_0220D338
-_021DF0CC: .word UNK04_0220D340
-_021DF0D0: .word UNK04_0221053C
- arm_func_end MOD04_021DEF6C
-
- arm_func_start MOD04_021DF0D4
-MOD04_021DF0D4: ; 0x021DF0D4
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, [r1, #4]
- ldr r0, _021DF120 ; =0x00000603
- cmp r1, r0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DF124 ; =0x00000901
- cmp r1, r0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, _021DF128 ; =0x00000B01
- cmp r1, r0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- mov r0, #3
- bl MOD04_021DF414
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF120: .word 0x00000603
-_021DF124: .word 0x00000901
-_021DF128: .word 0x00000B01
- arm_func_end MOD04_021DF0D4
-
- arm_func_start MOD04_021DF12C
-MOD04_021DF12C: ; 0x021DF12C
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0xc
- movs r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bne _021DF174
- cmp r6, #0
- beq _021DF174
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x4f4]
- cmp r0, #0
- bne _021DF1D8
- bl MOD04_021E8DC0
- mov r0, #3
- bl MOD04_021DF5CC
- b _021DF1D8
-_021DF174:
- cmp r7, #0
- bne _021DF1D8
- mov r0, #6
- bl MOD04_021DF5CC
- ldr r1, _021DF2AC ; =UNK04_0221053C
- mov r0, #0
- ldr r3, [r1]
- ldrb r1, [r3, #0x361]
- cmp r1, #0
- blt _021DF1D8
- ldr r2, [r3, #0x64]
-_021DF1A0:
- add r1, r3, r0, lsl #2
- ldr r1, [r1, #0x448]
- cmp r2, r1
- bne _021DF1C8
- ldr r1, _021DF2AC ; =UNK04_0221053C
- ldr r1, [r1]
- add r0, r1, r0
- ldrb r0, [r0, #0x624]
- strb r0, [r1, #0x2c]
- b _021DF1D8
-_021DF1C8:
- ldrb r1, [r3, #0x361]
- add r0, r0, #1
- cmp r0, r1
- ble _021DF1A0
-_021DF1D8:
- ldr r1, _021DF2AC ; =UNK04_0221053C
- ldr r0, _021DF2B0 ; =0x00000624
- ldr r2, [r1]
- ldrb r1, [r2, #0x361]
- add r0, r2, r0
- add r1, r1, #1
- bl MOD04_021DF530
- ldr r1, _021DF2AC ; =UNK04_0221053C
- ldr r1, [r1]
- str r0, [r1, #0x644]
- bl MOD04_021E8780
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DF224
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DF258
-_021DF224:
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r1, [sp, #0x20]
- ldr r3, [r0]
- mov r0, r7
- str r1, [sp]
- ldr r2, [r3, #0x8c]
- mov r1, r6
- str r2, [sp, #4]
- ldr r6, [r3, #0x88]
- mov r2, r5
- mov r3, r4
- blx r6
- b _021DF26C
-_021DF258:
- ldr r2, [r1, #0x84]
- ldr r3, [r1, #0x80]
- mov r0, r7
- mov r1, r6
- blx r3
-_021DF26C:
- cmp r7, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, _021DF2AC ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #0xc
- ldmeqia sp!, {r4, r5, r6, r7, pc}
- ldr r0, [r0, #0x24]
- cmp r0, #5
- addne sp, sp, #0xc
- ldmneia sp!, {r4, r5, r6, r7, pc}
- mov r0, #3
- bl MOD04_021DF5CC
- add sp, sp, #0xc
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DF2AC: .word UNK04_0221053C
-_021DF2B0: .word 0x00000624
- arm_func_end MOD04_021DF12C
-
- arm_func_start MOD04_021DF2B4
-MOD04_021DF2B4: ; 0x021DF2B4
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- ldr r2, _021DF300 ; =UNK04_0221053C
- mov r5, r0
- ldr r0, [r2]
- mov r4, r1
- ldr r0, [r0, #0x28]
- cmp r0, #4
- beq _021DF2DC
- bl MOD04_021DF5CC
-_021DF2DC:
- ldr r1, _021DF300 ; =UNK04_0221053C
- mov r0, r5
- ldr r3, [r1]
- mov r1, r4
- ldr r2, [r3, #0x7c]
- ldr r3, [r3, #0x78]
- blx r3
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DF300: .word UNK04_0221053C
- arm_func_end MOD04_021DF2B4
-
- arm_func_start MOD04_021DF304
-MOD04_021DF304: ; 0x021DF304
- stmdb sp!, {r4, r5, lr}
- sub sp, sp, #4
- movs r5, r0
- mov r4, r1
- bne _021DF334
- ldr r1, _021DF36C ; =UNK04_0221053C
- mov r0, #3
- ldr r1, [r1]
- str r4, [r1, #0x64]
- bl MOD04_021DF5CC
- bl MOD04_021E1ED4
- b _021DF33C
-_021DF334:
- mov r0, #0
- bl MOD04_021DF5CC
-_021DF33C:
- ldr r0, _021DF36C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r3, [r0, #0x70]
- cmp r3, #0
- addeq sp, sp, #4
- ldmeqia sp!, {r4, r5, pc}
- ldr r2, [r0, #0x74]
- mov r0, r5
- mov r1, r4
- blx r3
- add sp, sp, #4
- ldmia sp!, {r4, r5, pc}
- .align 2, 0
-_021DF36C: .word UNK04_0221053C
- arm_func_end MOD04_021DF304
-
- arm_func_start MOD04_021DF370
-MOD04_021DF370: ; 0x021DF370
- stmdb sp!, {r4, lr}
- movs r4, r0
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- cmp r4, #7
- addls pc, pc, r4, lsl #2
- b _021DF3F4
-_021DF38C: ; jump table
- b _021DF3F4 ; case 0
- b _021DF3AC ; case 1
- b _021DF3B8 ; case 2
- b _021DF3C8 ; case 3
- b _021DF3D4 ; case 4
- b _021DF3B8 ; case 5
- b _021DF3E0 ; case 6
- b _021DF3EC ; case 7
-_021DF3AC:
- mov r0, #9
- mvn r2, #0
- b _021DF3F4
-_021DF3B8:
- mov r0, #0
- mov r2, r0
- mov r4, r0
- b _021DF3F4
-_021DF3C8:
- mov r0, #6
- mvn r2, #9
- b _021DF3F4
-_021DF3D4:
- mov r0, #6
- mvn r2, #0x1d
- b _021DF3F4
-_021DF3E0:
- mov r0, #6
- mvn r2, #0x45
- b _021DF3F4
-_021DF3EC:
- mov r0, #6
- mvn r2, #0x4f
-_021DF3F4:
- cmp r0, #0
- beq _021DF408
- ldr r1, _021DF410 ; =0xFFFEFA48
- add r1, r2, r1
- bl MOD04_021E0EAC
-_021DF408:
- mov r0, r4
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DF410: .word 0xFFFEFA48
- arm_func_end MOD04_021DF370
-
- arm_func_start MOD04_021DF414
-MOD04_021DF414: ; 0x021DF414
- stmdb sp!, {r4, r5, r6, lr}
- movs r6, r0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- cmp r6, #4
- addls pc, pc, r6, lsl #2
- b _021DF470
-_021DF430: ; jump table
- b _021DF470 ; case 0
- b _021DF444 ; case 1
- b _021DF450 ; case 2
- b _021DF45C ; case 3
- b _021DF468 ; case 4
-_021DF444:
- mov r4, #9
- mvn r5, #0
- b _021DF470
-_021DF450:
- mov r4, #9
- mvn r5, #1
- b _021DF470
-_021DF45C:
- mov r4, #6
- mvn r5, #9
- b _021DF470
-_021DF468:
- mov r4, #6
- mvn r5, #0x13
-_021DF470:
- ldr r0, _021DF51C ; =UNK04_0221053C
- ldr r1, [r0]
- ldr r0, [r1, #0x24]
- cmp r0, #5
- addls pc, pc, r0, lsl #2
- b _021DF500
-_021DF488: ; jump table
- b _021DF500 ; case 0
- b _021DF4A0 ; case 1
- b _021DF4B8 ; case 2
- b _021DF500 ; case 3
- b _021DF4F4 ; case 4
- b _021DF4DC ; case 5
-_021DF4A0:
- ldr r1, _021DF520 ; =0xFFFF11B8
- mov r0, r4
- add r5, r5, r1
- mov r1, r5
- bl MOD04_021E0EAC
- b _021DF508
-_021DF4B8:
- ldr r1, [r1, #0x9c]
- ldr r0, _021DF520 ; =0xFFFF11B8
- cmp r1, #1
- add r5, r5, r0
- bge _021DF508
- mov r0, r4
- mov r1, r5
- bl MOD04_021E0EAC
- b _021DF508
-_021DF4DC:
- ldr r1, _021DF524 ; =0xFFFEC398
- mov r0, r4
- add r5, r5, r1
- mov r1, r5
- bl MOD04_021E8E08
- b _021DF508
-_021DF4F4:
- ldr r0, _021DF528 ; =0xFFFEEAA8
- add r5, r5, r0
- b _021DF508
-_021DF500:
- ldr r0, _021DF52C ; =0xFFFE9C88
- add r5, r5, r0
-_021DF508:
- mov r0, r4
- mov r1, r5
- bl MOD04_021E2114
- mov r0, r6
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DF51C: .word UNK04_0221053C
-_021DF520: .word 0xFFFF11B8
-_021DF524: .word 0xFFFEC398
-_021DF528: .word 0xFFFEEAA8
-_021DF52C: .word 0xFFFE9C88
- arm_func_end MOD04_021DF414
-
- arm_func_start MOD04_021DF530
-MOD04_021DF530: ; 0x021DF530
- stmdb sp!, {lr}
- sub sp, sp, #4
- mov lr, #0
- mov ip, lr
- cmp r1, #0
- ble _021DF560
- mov r3, #1
-_021DF54C:
- ldrb r2, [r0, ip]
- add ip, ip, #1
- cmp ip, r1
- orr lr, lr, r3, lsl r2
- blt _021DF54C
-_021DF560:
- mov r0, lr
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DF530
-
- arm_func_start MOD04_021DF56C
-MOD04_021DF56C: ; 0x021DF56C
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- mov r4, r0
- add r0, sp, #0
- bl MOD04_021E874C
- mov r1, r0
- cmp r1, #0
- mov r0, #0
- ble _021DF5B0
- ldr r3, [sp]
-_021DF594:
- ldrb r2, [r3]
- cmp r4, r2
- beq _021DF5B0
- add r0, r0, #1
- cmp r0, r1
- add r3, r3, #1
- blt _021DF594
-_021DF5B0:
- cmp r0, r1
- addeq sp, sp, #8
- moveq r0, #0
- ldmeqia sp!, {r4, pc}
- bl MOD04_021E8830
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- arm_func_end MOD04_021DF56C
-
- arm_func_start MOD04_021DF5CC
-MOD04_021DF5CC: ; 0x021DF5CC
- ldr r1, _021DF5E8 ; =UNK04_0221053C
- ldr r3, [r1]
- ldr r2, [r3, #0x24]
- str r2, [r3, #0x28]
- ldr r1, [r1]
- str r0, [r1, #0x24]
- bx lr
- .align 2, 0
-_021DF5E8: .word UNK04_0221053C
- arm_func_end MOD04_021DF5CC
-
- arm_func_start MOD04_021DF5EC
-MOD04_021DF5EC: ; 0x021DF5EC
- bx lr
- arm_func_end MOD04_021DF5EC
-
- arm_func_start MOD04_021DF5F0
-MOD04_021DF5F0: ; 0x021DF5F0
- stmdb sp!, {r4, r5, r6, lr}
- mov r6, r0
- mov r5, #0
- ldr r4, _021DF634 ; =UNK04_02210544
-_021DF600:
- ldr r0, [r4, r5, lsl #2]
- cmp r0, #0
- beq _021DF620
- bl MOD04_021FD3C4
- ldrb r0, [r0, #1]
- cmp r6, r0
- moveq r0, #1
- ldmeqia sp!, {r4, r5, r6, pc}
-_021DF620:
- add r5, r5, #1
- cmp r5, #0x20
- blt _021DF600
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DF634: .word UNK04_02210544
- arm_func_end MOD04_021DF5F0
-
- arm_func_start MOD04_021DF638
-MOD04_021DF638: ; 0x021DF638
- ldr r1, _021DF644 ; =UNK04_022105C4
- add r0, r1, r0, lsl #3
- bx lr
- .align 2, 0
-_021DF644: .word UNK04_022105C4
- arm_func_end MOD04_021DF638
-
- arm_func_start MOD04_021DF648
-MOD04_021DF648: ; 0x021DF648
- stmdb sp!, {lr}
- sub sp, sp, #4
- cmp r1, #0
- mov ip, #0
- ble _021DF684
- ldr r2, _021DF6B8 ; =UNK04_0221053C
- ldr r3, [r2]
-_021DF664:
- add r2, r3, ip, lsl #2
- ldr r2, [r2, #0x448]
- cmp r0, r2
- beq _021DF684
- add r2, ip, #1
- and ip, r2, #0xff
- cmp ip, r1
- blt _021DF664
-_021DF684:
- cmp ip, r1
- addge sp, sp, #4
- movge r0, #0
- ldmgeia sp!, {pc}
- ldr r0, _021DF6B8 ; =UNK04_0221053C
- ldr r0, [r0]
- add r0, r0, ip
- ldrb r0, [r0, #0x624]
- bl MOD04_021DF760
- bl MOD04_021DF730
- bl MOD04_021DF6BC
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF6B8: .word UNK04_0221053C
- arm_func_end MOD04_021DF648
-
- arm_func_start MOD04_021DF6BC
-MOD04_021DF6BC: ; 0x021DF6BC
- ldr r1, _021DF6C8 ; =UNK04_02210544
- add r0, r1, r0, lsl #2
- bx lr
- .align 2, 0
-_021DF6C8: .word UNK04_02210544
- arm_func_end MOD04_021DF6BC
-
- arm_func_start MOD04_021DF6CC
-MOD04_021DF6CC: ; 0x021DF6CC
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021DF6FC ; =UNK04_02210544
- mov r0, #0
- mov r2, #0x80
- bl MIi_CpuClear32
- ldr r1, _021DF700 ; =UNK04_022105C4
- mov r0, #0
- mov r2, #0x100
- bl MIi_CpuClear32
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF6FC: .word UNK04_02210544
-_021DF700: .word UNK04_022105C4
- arm_func_end MOD04_021DF6CC
-
- arm_func_start MOD04_021DF704
-MOD04_021DF704: ; 0x021DF704
- ldr r2, _021DF72C ; =UNK04_02210544
- mov r0, #0
-_021DF70C:
- ldr r1, [r2, r0, lsl #2]
- cmp r1, #0
- bxeq lr
- add r0, r0, #1
- cmp r0, #0x20
- blt _021DF70C
- mvn r0, #0
- bx lr
- .align 2, 0
-_021DF72C: .word UNK04_02210544
- arm_func_end MOD04_021DF704
-
- arm_func_start MOD04_021DF730
-MOD04_021DF730: ; 0x021DF730
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021FD3C4
- ldrb r0, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DF730
-
- arm_func_start MOD04_021DF748
-MOD04_021DF748: ; 0x021DF748
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021FD3C4
- ldrb r0, [r0, #1]
- add sp, sp, #4
- ldmfd sp!, {pc}
- arm_func_end MOD04_021DF748
-
- arm_func_start MOD04_021DF760
-MOD04_021DF760: ; 0x021DF760
- stmdb sp!, {r4, r5, r6, lr}
- ldr r1, _021DF7BC ; =UNK04_0221053C
- mov r6, r0
- ldr r0, [r1]
- cmp r0, #0
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- ldr r4, _021DF7C0 ; =UNK04_02210544
- mov r5, #0
-_021DF784:
- ldr r0, [r4, r5, lsl #2]
- cmp r0, #0
- beq _021DF7A8
- bl MOD04_021FD3C4
- ldrb r0, [r0, #1]
- cmp r6, r0
- ldreq r0, _021DF7C0 ; =UNK04_02210544
- ldreq r0, [r0, r5, lsl #2]
- ldmeqia sp!, {r4, r5, r6, pc}
-_021DF7A8:
- add r5, r5, #1
- cmp r5, #0x20
- blt _021DF784
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DF7BC: .word UNK04_0221053C
-_021DF7C0: .word UNK04_02210544
- arm_func_end MOD04_021DF760
-
- arm_func_start MOD04_021DF7C4
-MOD04_021DF7C4: ; 0x021DF7C4
- stmdb sp!, {r4, lr}
- sub sp, sp, #8
- ldr r0, _021DF87C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, #0
- addne sp, sp, #8
- movne r0, #0
- ldmneia sp!, {r4, pc}
- mov r0, #0x4000
- bl MOD04_021DE8C8
- add r0, r0, #0xc000
- mov r1, r0, lsl #0x10
- ldr r3, _021DF87C ; =UNK04_0221053C
- mov r0, #0
- mov r2, r0
- mov r1, r1, lsr #0x10
- ldr r4, [r3]
- bl MOD04_021FFEB0
- ldr r1, _021DF880 ; =MOD04_021DEB90
- ldr r2, _021DF87C ; =UNK04_0221053C
- str r1, [sp]
- mov r1, r0
- ldr r0, [r2]
- ldr r2, [r4, #0x14]
- ldr r3, [r4, #0x18]
- bl MOD04_021FD71C
- mov r4, r0
- bl MOD04_021DF370
- cmp r0, #0
- addne sp, sp, #8
- movne r0, r4
- ldmneia sp!, {r4, pc}
- ldr r0, _021DF87C ; =UNK04_0221053C
- ldr r1, _021DF884 ; =MOD04_021E9204
- ldr r0, [r0]
- ldr r0, [r0]
- bl MOD04_021FD6C8
- ldr r0, _021DF87C ; =UNK04_0221053C
- ldr r1, _021DF888 ; =MOD04_021E9464
- ldr r0, [r0]
- ldr r0, [r0]
- bl MOD04_021FD434
- mov r0, r4
- add sp, sp, #8
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DF87C: .word UNK04_0221053C
-_021DF880: .word MOD04_021DEB90
-_021DF884: .word MOD04_021E9204
-_021DF888: .word MOD04_021E9464
- arm_func_end MOD04_021DF7C4
-
- arm_func_start MOD04_021DF88C
-MOD04_021DF88C: ; 0x021DF88C
- ldr r0, _021DF8A4 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- ldrne r0, [r0, #0x24]
- moveq r0, #0
- bx lr
- .align 2, 0
-_021DF8A4: .word UNK04_0221053C
- arm_func_end MOD04_021DF88C
-
- arm_func_start MOD04_021DF8A8
-MOD04_021DF8A8: ; 0x021DF8A8
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r1, _021DF8F0 ; =UNK04_0221053C
- ldr r2, [r1]
- cmp r2, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- mov r1, #1
- mov r1, r1,lsl r0
- ldr r2, [r2, #0x644]
- ands r1, r2, r1
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- bl MOD04_021DF5F0
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF8F0: .word UNK04_0221053C
- arm_func_end MOD04_021DF8A8
-
- arm_func_start MOD04_021DF8F4
-MOD04_021DF8F4: ; 0x021DF8F4
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r2, _021DF954 ; =UNK04_0221053C
- ldr r3, [r2]
- cmp r3, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldr r1, _021DF958 ; =0x00000624
- add r1, r3, r1
- str r1, [r0]
- ldr r2, [r2]
- ldrb r1, [r2, #0x369]
- cmp r1, #2
- beq _021DF93C
- ldrb r1, [r2, #0x369]
- cmp r1, #3
- bne _021DF948
-_021DF93C:
- bl MOD04_021E86A4
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021DF948:
- bl MOD04_021E874C
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF954: .word UNK04_0221053C
-_021DF958: .word 0x00000624
- arm_func_end MOD04_021DF8F4
-
- arm_func_start MOD04_021DF95C
-MOD04_021DF95C: ; 0x021DF95C
- ldr r0, _021DF974 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- ldrneb r0, [r0, #0x2c]
- moveq r0, #0
- bx lr
- .align 2, 0
-_021DF974: .word UNK04_0221053C
- arm_func_end MOD04_021DF95C
-
- arm_func_start MOD04_021DF978
-MOD04_021DF978: ; 0x021DF978
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DF9D0 ; =UNK04_0221053C
- ldr r1, [r0]
- cmp r1, #0
- addeq sp, sp, #4
- moveq r0, #0
- ldmeqia sp!, {pc}
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021DF9B0
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021DF9C0
-_021DF9B0:
- bl MOD04_021E87D8
- add sp, sp, #4
- add r0, r0, #1
- ldmfd sp!, {pc}
-_021DF9C0:
- bl MOD04_021E8804
- add r0, r0, #1
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DF9D0: .word UNK04_0221053C
- arm_func_end MOD04_021DF978
-
- arm_func_start MOD04_021DF9D4
-MOD04_021DF9D4: ; 0x021DF9D4
- stmdb sp!, {r4, lr}
- ldr r1, _021DFA3C ; =UNK04_0221053C
- mov r4, r0
- ldr r0, [r1]
- cmp r0, #0
- beq _021DFA14
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFA14
- ldr r0, _021DFA3C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #5
- beq _021DFA1C
- cmp r0, #6
- beq _021DFA1C
-_021DFA14:
- mvn r0, #0
- ldmia sp!, {r4, pc}
-_021DFA1C:
- mov r0, r4
- bl MOD04_021DF760
- cmp r0, #0
- mvneq r0, #1
- ldmeqia sp!, {r4, pc}
- bl MOD04_021FD488
- mov r0, #0
- ldmia sp!, {r4, pc}
- .align 2, 0
-_021DFA3C: .word UNK04_0221053C
- arm_func_end MOD04_021DF9D4
-
- arm_func_start MOD04_021DFA40
-MOD04_021DFA40: ; 0x021DFA40
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021DFAF0 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- beq _021DFA80
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFA80
- ldr r0, _021DFAF0 ; =UNK04_0221053C
- ldr r2, [r0]
- ldr r0, [r2, #0x24]
- cmp r0, #5
- beq _021DFA8C
- cmp r0, #6
- beq _021DFA8C
-_021DFA80:
- add sp, sp, #4
- mvn r0, #0
- ldmfd sp!, {pc}
-_021DFA8C:
- ldrb r0, [r2, #0x361]
- cmp r0, #0
- bne _021DFAC0
- ldr r1, _021DFAF4 ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
- bl MOD04_02200D6C
- mov r0, #3
- bl MOD04_021DF5CC
- add sp, sp, #4
- mov r0, #1
- ldmfd sp!, {pc}
-_021DFAC0:
- mov r1, #1
- ldr r0, _021DFAF0 ; =UNK04_0221053C
- strb r1, [r2, #0x2d]
- ldr r0, [r0]
- ldr r0, [r0]
- bl MOD04_021FD45C
- ldr r1, _021DFAF0 ; =UNK04_0221053C
- mov r0, #0
- ldr r1, [r1]
- strb r0, [r1, #0x2d]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021DFAF0: .word UNK04_0221053C
-_021DFAF4: .word UNK04_0220D334
- arm_func_end MOD04_021DFA40
-
- arm_func_start MOD04_021DFAF8
-MOD04_021DFAF8: ; 0x021DFAF8
- ldr r2, _021DFB1C ; =UNK04_0221053C
- ldr r3, [r2]
- cmp r3, #0
- moveq r0, #0
- strne r0, [r3, #0x90]
- ldrne r2, [r2]
- movne r0, #1
- strne r1, [r2, #0x94]
- bx lr
- .align 2, 0
-_021DFB1C: .word UNK04_0221053C
- arm_func_end MOD04_021DFAF8
-
- arm_func_start MOD04_021DFB20
-MOD04_021DFB20: ; 0x021DFB20
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #0x224
- mvn ip, #0
- mov r7, r0
- mov r6, r1
- mov r4, r2
- mov r5, r3
- str ip, [sp, #8]
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFB60
- ldr r0, _021DFD04 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #3
- beq _021DFB6C
-_021DFB60:
- add sp, sp, #0x224
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DFB6C:
- bl MOD04_021DF6CC
- ldr r1, _021DFD04 ; =UNK04_0221053C
- mov r0, #5
- ldr r2, [r1]
- str r6, [r2, #0x88]
- ldr r1, [r1]
- str r4, [r1, #0x8c]
- bl MOD04_021DF5CC
- mov r0, r7
- bl MOD04_021E1F84
- movs r4, r0
- beq _021DFBB8
- ldr r0, _021DFD04 ; =UNK04_0221053C
- mov r1, r4
- ldr r0, [r0]
- add r0, r0, #0x1c
- bl MOD04_021F05F4
- cmp r0, #0
- bne _021DFBC0
-_021DFBB8:
- mov r5, #0xb
- b _021DFC8C
-_021DFBC0:
- ldr r0, _021DFD04 ; =UNK04_0221053C
- add r2, sp, #8
- ldr r0, [r0]
- mov r1, r4
- add r0, r0, #0x1c
- bl MOD04_021F0664
- ldr r0, _021DFD04 ; =UNK04_0221053C
- ldr r1, [sp, #8]
- ldr r0, [r0]
- add r2, sp, #0x10
- add r0, r0, #0x1c
- bl MOD04_021F06E4
- ldr r0, [sp, #0x14]
- cmp r0, #6
- movne r5, #0xb
- bne _021DFC8C
- ldr r0, _021DFD08 ; =UNK04_0220D344
- mov r6, #0x30
- add r1, sp, #0xc
- add r2, sp, #0x18
- mov r3, #0x2f
- strb r6, [sp, #0xc]
- bl MOD04_021DE9F4
- add r0, sp, #0xc
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- and r6, r0, #0xff
- ldr r0, _021DFD0C ; =UNK04_0220D348
- add r1, sp, #0xc
- add r2, sp, #0x18
- mov r3, #0x2f
- bl MOD04_021DE9F4
- add r0, sp, #0xc
- mov r1, #0
- mov r2, #0xa
- bl strtoul
- and r0, r0, #0xff
- cmp r0, r6
- moveq r5, #0xd
- beq _021DFC8C
- ldr r6, [sp, #0x238]
- ldr r1, _021DFD10 ; =MOD04_021DF12C
- mov r0, r4
- mov r3, r5
- mov r2, #0
- str r6, [sp]
- bl MOD04_021E9FD0
- add sp, sp, #0x224
- mov r0, #1
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DFC8C:
- mov r0, r5
- mov r1, #0
- bl MOD04_021DD6B0
- ldr r0, _021DFD04 ; =UNK04_0221053C
- mov r1, #0
- ldr r4, [r0]
- mov r0, r5
- str r1, [sp]
- ldr r2, [r4, #0x8c]
- mov r3, r1
- str r2, [sp, #4]
- ldr r4, [r4, #0x88]
- mov r2, #1
- blx r4
- ldr r0, _021DFD04 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- beq _021DFCF8
- ldr r0, [r0, #0x24]
- cmp r0, #5
- bne _021DFCF8
- mov r0, #3
- bl MOD04_021DF5CC
- ldr r1, _021DFD14 ; =UNK04_0220D334
- mov r0, #1
- mov r2, #0
- bl MOD04_021E1E30
-_021DFCF8:
- mov r0, #1
- add sp, sp, #0x224
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DFD04: .word UNK04_0221053C
-_021DFD08: .word UNK04_0220D344
-_021DFD0C: .word UNK04_0220D348
-_021DFD10: .word MOD04_021DF12C
-_021DFD14: .word UNK04_0220D334
- arm_func_end MOD04_021DFB20
-
- arm_func_start MOD04_021DFD18
-MOD04_021DFD18: ; 0x021DFD18
- stmdb sp!, {r4, r5, r6, r7, lr}
- sub sp, sp, #4
- mov r7, r0
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFD50
- ldr r0, _021DFDB4 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #3
- beq _021DFD5C
-_021DFD50:
- add sp, sp, #4
- mov r0, #0
- ldmia sp!, {r4, r5, r6, r7, pc}
-_021DFD5C:
- bl MOD04_021DF6CC
- ldr r1, _021DFDB4 ; =UNK04_0221053C
- mov r2, #0
- ldr r3, [r1]
- mov r0, #5
- str r6, [r3, #0x88]
- ldr r3, [r1]
- str r5, [r3, #0x8c]
- ldr r1, [r1]
- strb r2, [r1, #0x2c]
- bl MOD04_021DF5CC
- sub r0, r7, #1
- ldr r5, [sp, #0x18]
- ldr r1, _021DFDB8 ; =MOD04_021DF12C
- mov r3, r4
- and r0, r0, #0xff
- mov r2, #0
- str r5, [sp]
- bl MOD04_021EA138
- mov r0, #1
- add sp, sp, #4
- ldmia sp!, {r4, r5, r6, r7, pc}
- .align 2, 0
-_021DFDB4: .word UNK04_0221053C
-_021DFDB8: .word MOD04_021DF12C
- arm_func_end MOD04_021DFD18
-
- arm_func_start MOD04_021DFDBC
-MOD04_021DFDBC: ; 0x021DFDBC
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x10
- mov r6, r1
- mov r5, r2
- mov r4, r3
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFDF8
- ldr r0, _021DFE5C ; =UNK04_0221053C
- ldr r2, [r0]
- ldr r1, [r2, #0x24]
- cmp r1, #3
- blt _021DFDF8
- cmp r1, #4
- bne _021DFE04
-_021DFDF8:
- add sp, sp, #0x10
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DFE04:
- str r6, [r2, #0x78]
- ldr r1, [r0]
- mov r0, #4
- str r5, [r1, #0x7c]
- bl MOD04_021DF5CC
- ldr r0, _021DFE5C ; =UNK04_0221053C
- ldr r1, [sp, #0x20]
- ldr r3, [r0]
- ldr r0, [sp, #0x24]
- str r4, [sp]
- str r1, [sp, #4]
- ldr r4, [sp, #0x28]
- str r0, [sp, #8]
- ldr r2, _021DFE60 ; =MOD04_021DF2B4
- add r0, r3, #0xe0
- add r1, r3, #0x1e0
- mov r3, #0
- str r4, [sp, #0xc]
- bl MOD04_021E2174
- mov r0, #1
- add sp, sp, #0x10
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DFE5C: .word UNK04_0221053C
-_021DFE60: .word MOD04_021DF2B4
- arm_func_end MOD04_021DFDBC
-
- arm_func_start MOD04_021DFE64
-MOD04_021DFE64: ; 0x021DFE64
- stmdb sp!, {r4, r5, r6, lr}
- movs r4, r0
- mov r6, r2
- mov r5, r3
- moveq r0, #0
- ldmeqia sp!, {r4, r5, r6, pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- bne _021DFE9C
- ldr r0, _021DFF6C ; =UNK04_0221053C
- ldr r2, [r0]
- ldr r1, [r2, #0x24]
- cmp r1, #0
- beq _021DFEA4
-_021DFE9C:
- mov r0, #0
- ldmia sp!, {r4, r5, r6, pc}
-_021DFEA4:
- str r6, [r2, #0x70]
- ldr r1, [r0]
- cmp r4, #0
- str r5, [r1, #0x74]
- beq _021DFEC4
- ldrh r1, [r4]
- cmp r1, #0
- bne _021DFECC
-_021DFEC4:
- mov r5, #0
- b _021DFF18
-_021DFECC:
- ldr r1, [r0]
- mov r0, #0
- add r1, r1, #0x2e
- mov r2, #0x34
- bl MIi_CpuClear16
- mov r0, r4
- bl MOD04_021DE89C
- cmp r0, #0x19
- movhi r5, #0x19
- bhi _021DFF00
- mov r0, r4
- bl MOD04_021DE89C
- mov r5, r0
-_021DFF00:
- ldr r1, _021DFF6C ; =UNK04_0221053C
- mov r0, r4
- ldr r1, [r1]
- mov r2, r5, lsl #1
- add r1, r1, #0x2e
- bl MIi_CpuCopy16
-_021DFF18:
- ldr r0, _021DFF6C ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- add r0, r0, r5, lsl #1
- strh r1, [r0, #0x2e]
- bl MOD04_021DDC1C
- cmp r0, #4
- beq _021DFF4C
- ldr r1, _021DFF70 ; =0xFFFF1596
- mov r0, #2
- bl MOD04_021E0EAC
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
-_021DFF4C:
- mov r0, #1
- bl MOD04_021DF5CC
- ldr r0, _021DFF6C ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x68]
- bl MOD04_021EE898
- mov r0, #1
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021DFF6C: .word UNK04_0221053C
-_021DFF70: .word 0xFFFF1596
- arm_func_end MOD04_021DFE64
-
- arm_func_start MOD04_021DFF74
-MOD04_021DFF74: ; 0x021DFF74
- stmdb sp!, {lr}
- sub sp, sp, #4
- bl MOD04_021DD984
- cmp r0, #0
- beq _021DFF8C
- bl MOD04_021DF5EC
-_021DFF8C:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x24]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- bl MOD04_021DD6D4
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0, #0x24]
- cmp r0, #6
- addls pc, pc, r0, lsl #2
- b _021E0194
-_021DFFD8: ; jump table
- b _021E0194 ; case 0
- b _021DFFF4 ; case 1
- b _021E0124 ; case 2
- b _021E012C ; case 3
- b _021E012C ; case 4
- b _021E013C ; case 5
- b _021E014C ; case 6
-_021DFFF4:
- bl MOD04_021EE6A0
- cmp r0, #1
- beq _021E0014
- cmp r0, #2
- beq _021E00FC
- cmp r0, #3
- beq _021E0110
- b _021E0194
-_021E0014:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- ldr r1, [r0, #0xa0]
- add r0, r0, #0x1c
- bl MOD04_021F0F94
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- ldr r2, _021E01E8 ; =MOD04_021DF0D4
- mov r3, r1
- add r0, r0, #0x1c
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r2, _021E01EC ; =MOD04_021DEF6C
- ldr r0, [r0]
- mov r1, #3
- add r0, r0, #0x1c
- mov r3, #0
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r2, _021E01F0 ; =MOD04_021E20C8
- ldr r0, [r0]
- mov r1, #1
- add r0, r0, #0x1c
- mov r3, #0
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r2, _021E01F4 ; =MOD04_021E1FE4
- ldr r0, [r0]
- mov r1, #2
- add r0, r0, #0x1c
- mov r3, #0
- bl MOD04_021F0EB0
- bl MOD04_021DF414
- cmp r0, #0
- addne sp, sp, #4
- ldmneia sp!, {pc}
- mov r0, #2
- bl MOD04_021DF5CC
- bl MOD04_021E1034
- b _021E0194
-_021E00FC:
- ldr r1, _021E01F8 ; =0xFFFFB172
- mov r0, #3
- bl MOD04_021E0EAC
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E0110:
- ldr r1, _021E01FC ; =0xFFFFB17B
- mov r0, #4
- bl MOD04_021E0EAC
- add sp, sp, #4
- ldmfd sp!, {pc}
-_021E0124:
- bl MOD04_021E0F1C
- b _021E0194
-_021E012C:
- bl MOD04_021E2228
- mov r0, #0
- bl MOD04_021E9568
- b _021E0194
-_021E013C:
- mov r0, #1
- bl MOD04_021E9568
- bl MOD04_021E2228
- b _021E0194
-_021E014C:
- bl MOD04_021EAA64
- bl MOD04_021E2228
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x369]
- cmp r0, #2
- beq _021E0174
- ldrb r0, [r1, #0x369]
- cmp r0, #3
- bne _021E0180
-_021E0174:
- mov r0, #1
- bl MOD04_021E9568
- b _021E0194
-_021E0180:
- ldr r0, [r1]
- cmp r0, #0
- beq _021E0194
- mov r0, #0
- bl MOD04_021E9568
-_021E0194:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- ldr r1, [r0]
- ldrb r0, [r1, #0x36c]
- cmp r0, #1
- addne sp, sp, #4
- ldmneia sp!, {pc}
- ldr r0, [r1, #0x364]
- cmp r0, #0
- beq _021E01CC
- bl MOD04_02202280
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x364]
-_021E01CC:
- ldr r0, _021E01E4 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- strb r1, [r0, #0x36c]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E01E4: .word UNK04_0221053C
-_021E01E8: .word MOD04_021DF0D4
-_021E01EC: .word MOD04_021DEF6C
-_021E01F0: .word MOD04_021E20C8
-_021E01F4: .word MOD04_021E1FE4
-_021E01F8: .word 0xFFFFB172
-_021E01FC: .word 0xFFFFB17B
- arm_func_end MOD04_021DFF74
-
- arm_func_start MOD04_021E0200
-MOD04_021E0200: ; 0x021E0200
- stmdb sp!, {lr}
- sub sp, sp, #4
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- cmp r0, #0
- addeq sp, sp, #4
- ldmeqia sp!, {pc}
- ldr r0, [r0, #0x364]
- cmp r0, #0
- beq _021E023C
- bl MOD04_02202280
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x364]
-_021E023C:
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r1, [r0]
- strb r2, [r1, #0x36c]
- ldr r0, [r0]
- ldr r0, [r0, #0x438]
- cmp r0, #0
- beq _021E0270
- bl MOD04_02203E80
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0, #0x438]
-_021E0270:
- bl MOD04_02200D6C
- bl MOD04_021FBE7C
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr ip, [r0]
- ldr r0, [ip, #0x1c]
- cmp r0, #0
- beq _021E0324
- mov r1, #0
- mov r2, r1
- mov r3, r1
- add r0, ip, #0x1c
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- mov r3, r2
- add r0, r0, #0x1c
- mov r1, #3
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- mov r3, r2
- add r0, r0, #0x1c
- mov r1, #1
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r2, #0
- ldr r0, [r0]
- mov r1, #2
- add r0, r0, #0x1c
- mov r3, r2
- bl MOD04_021F0EB0
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- add r0, r0, #0x1c
- bl MOD04_021F0F18
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- add r0, r0, #0x1c
- bl MOD04_021F0F64
- mov r1, #0
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- str r1, [r0, #0x1c]
-_021E0324:
- bl MOD04_021E0E48
- bl MOD04_021E1D90
- bl MOD04_021E854C
- bl MOD04_021EA9C4
- ldr r0, _021E0370 ; =UNK04_0221053C
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, #0
- beq _021E035C
- bl MOD04_021FD704
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- ldr r0, [r0]
- str r1, [r0]
-_021E035C:
- ldr r0, _021E0370 ; =UNK04_0221053C
- mov r1, #0
- str r1, [r0]
- add sp, sp, #4
- ldmfd sp!, {pc}
- .align 2, 0
-_021E0370: .word UNK04_0221053C
- arm_func_end MOD04_021E0200
-
- arm_func_start MOD04_021E0374
-MOD04_021E0374: ; 0x021E0374
- stmdb sp!, {r4, r5, r6, lr}
- sub sp, sp, #0x10
- ldr ip, _021E05D8 ; =UNK04_0221053C
- mov r6, r1
- mov r5, r2
- mov r4, r3
- str r0, [ip]
- bl MOD04_021DD6F0
- ldr r0, _021E05D8 ; =UNK04_0221053C
- mov r2, #0
- ldr r1, [r0]
- ldr r3, _021E05DC ; =MOD04_021E8F80
- str r2, [r1]
- ldr r1, [r0]
- ldr r2, _021E05E0 ; =MOD04_021DEF60
- str r3, [r1, #4]
- ldr r1, [r0]
- ldr ip, [sp, #0x24]
- str r2, [r1, #8]
- cmp ip, #0
- ldr r2, [r0]
- ldr r3, _021E05E4 ; =MOD04_021DEBE4
- ldr r1, _021E05E8 ; =MOD04_021DEBD8
- str r3, [r2, #0xc]
- ldr r0, [r0]
- ldr r3, [sp, #0x28]
- str r1, [r0, #0x10]
- ldr r0, _021E05D8 ; =UNK04_0221053C
- moveq ip, #0x2000
- ldr r0, [r0]
- cmp r3, #0
- str ip, [r0, #0x14]
- moveq r3, #0x2000
- ldr r1, _021E05D8 ; =UNK04_0221053C
- mov r0, #0
- ldr r2, [r1]
- ldr ip, _021E05EC ; =UNK04_02210F94
- str r3, [r2, #0x18]
- ldr r2, [r1]
- ldr r3, _021E05F0 ; =UNK04_02211094
- str r0, [r2, #0x1c]
- ldr r2, [r1]
- str r6, [r2, #0x20]
- ldr r2, [r1]
- str r0, [r2, #0x24]
- ldr r2, [r1]
- str r0, [r2, #0x28]
- ldr r2, [r1]
- strb r0, [r2, #0x2c]
- ldr r2, [r1]
- strb r0, [r2, #0x2d]
- ldr r2, [r1]
- str r0, [r2, #0x64]
- ldr r2, [r1]
- str ip, [r2, #0x68]
- ldr r2, [r1]
- str r3, [r2, #0x6c]
- ldr r2, [r1]
- str r0, [r2, #0x70]
- ldr r2, [r1]
- str r0, [r2, #0x74]
- ldr r2, [r1]
- str r0, [r2, #0x78]
- ldr r2, [r1]
- str r0, [r2, #0x7c]
- ldr r2, [r1]
- str r0, [r2, #0x80]
- ldr r2, [r1]
- str r0, [r2, #0x84]
- ldr r2, [r1]
- str r0, [r2, #0x88]
- ldr r2, [r1]
- str r0, [r2, #0x8c]
- ldr r2, [r1]
- str r0, [r2, #0x90]
- ldr r1, [r1]
- str r0, [r1, #0x94]
- bl MOD04_021DF6CC
- ldr r0, _021E05D8 ; =UNK04_0221053C
- mov r3, r5
- ldr r2, [r0]
- ldr r1, [r6, #0x24]
- ldr r0, _021E05F4 ; =MOD04_021DF304
- str r1, [sp]
- add r1, r2, #0x2e
- str r1, [sp, #4]
- str r0, [sp, #8]
- mov r5, #0
- add r0, r2, #0x98
- mov r1, r6
- add r2, r2, #0x1c
- str r5, [sp, #0xc]
- bl MOD04_021E1074
- ldr r0, _021E05D8 ; =UNK04_0221053C
- ldr r2, [sp, #0x30]
- ldr r5, [r0]
- ldr r3, [sp, #0x2c]
- str r2, [sp]
- add r0, r5, #0x2f8
- add r1, r5, #0x1c
- add r2, r5, #0x2e
- bl MOD04_021E234C
- ldr r0, _021E05D8 ; =UNK04_0221053C
- ldr r1, _021E05EC ; =UNK04_02210F94
- ldr r2, [r0]
- ldr r0, _021E05F0 ; =UNK04_02211094
- str r1, [sp]
- str r0, [sp, #4]
- ldr r1, [sp, #0x2c]
- ldr r0, [sp, #0x30]
- str r1, [sp, #8]
- str r0, [sp, #0xc]
- add r0, r2, #0x354
- add r1, r2, #0x1c
- add r3, r2, #4
- bl MOD04_021EA368
- ldr r1, _021E05D8 ; =UNK04_0221053C
- ldr r0, _021E05F8 ; =0x000007D8
- ldr r1, [r1]
- add r0, r1, r0
- bl MOD04_021EACB4
- mov r0, r4
- bl strlen
- cmp r0, #0x100
- movhs r5, #0xff
- bhs _021E0578
- mov r0, r4
- bl strlen
- mov r5, r0
-_021E0578:
- ldr r1, _021E05EC ; =UNK04_02210F94
- mov r0, r4
- mov r2, r5
- bl MI_CpuCopy8
- ldr r0, [sp, #0x20]
- ldr r1, _021E05EC ; =UNK04_02210F94
- mov r2, #0
- strb r2, [r1, r5]
- bl strlen
- cmp r0, #0x100
- movhs r4, #0xff
- bhs _021E05B4
- ldr r0, [sp, #0x20]
- bl strlen
- mov r4, r0
-_021E05B4:
- ldr r0, [sp, #0x20]
- ldr r1, _021E05F0 ; =UNK04_02211094
- mov r2, r4
- bl MI_CpuCopy8
- ldr r0, _021E05F0 ; =UNK04_02211094
- mov r1, #0
- strb r1, [r0, r4]
- add sp, sp, #0x10
- ldmia sp!, {r4, r5, r6, pc}
- .align 2, 0
-_021E05D8: .word UNK04_0221053C
-_021E05DC: .word MOD04_021E8F80
-_021E05E0: .word MOD04_021DEF60
-_021E05E4: .word MOD04_021DEBE4
-_021E05E8: .word MOD04_021DEBD8
-_021E05EC: .word UNK04_02210F94
-_021E05F0: .word UNK04_02211094
-_021E05F4: .word MOD04_021DF304
-_021E05F8: .word 0x000007D8
- arm_func_end MOD04_021E0374
-
arm_func_start MOD04_021E05FC
MOD04_021E05FC: ; 0x021E05FC
ldr r0, _021E0624 ; =UNK04_022106C8
@@ -53310,26 +51314,6 @@ UNK04_0220BE70: ; 0x0220BE70
.section .data
- .global UNK_0220D334
-UNK04_0220D334: ; 0x0220D334
- .byte 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D338
-UNK04_0220D338: ; 0x0220D338
- .byte 0x47, 0x50, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00
-
- .global UNK_0220D340
-UNK04_0220D340: ; 0x0220D340
- .byte 0x4D, 0x41, 0x54, 0x00
-
- .global UNK_0220D344
-UNK04_0220D344: ; 0x0220D344
- .byte 0x53, 0x43, 0x4D, 0x00
-
- .global UNK_0220D348
-UNK04_0220D348: ; 0x0220D348
- .byte 0x53, 0x43, 0x4E, 0x00
-
.global UNK_0220D34C
UNK04_0220D34C: ; 0x0220D34C
.byte 0x00, 0x00, 0x00, 0x00
@@ -55968,22 +53952,6 @@ UNK04_0220FBA4: ; 0x0220FBA4
.section .bss
- .global UNK04_0221053C
-UNK04_0221053C: ; 0x0221053C
- .space 0x4
-
- .global UNK04_02210540
-UNK04_02210540: ; 0x02210540
- .space 0x4
-
- .global UNK04_02210544
-UNK04_02210544: ; 0x02210544
- .space 0x80
-
- .global UNK04_022105C4
-UNK04_022105C4: ; 0x022105C4
- .space 0x100
-
.global UNK04_022106C4
UNK04_022106C4: ; 0x022106C4
.space 0x4
diff --git a/arm9/modules/04/asm/mod04_021DEB90.s b/arm9/modules/04/asm/mod04_021DEB90.s
new file mode 100644
index 00000000..f0917879
--- /dev/null
+++ b/arm9/modules/04/asm/mod04_021DEB90.s
@@ -0,0 +1,2044 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ arm_func_start MOD04_021DEB90
+MOD04_021DEB90: ; 0x021DEB90
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021FD43C
+ bl MOD04_021EFB28
+ ldr r2, _021DEBCC ; =UNK04_02210540
+ ldr r1, _021DEBD0 ; =0xFFFE8515
+ str r0, [r2]
+ mov r0, #9
+ bl MOD04_021DD6B0
+ ldr r0, _021DEBD4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DEBCC: .word UNK04_02210540
+_021DEBD0: .word 0xFFFE8515
+_021DEBD4: .word UNK04_0221053C
+ arm_func_end MOD04_021DEB90
+
+ arm_func_start MOD04_021DEBD8
+MOD04_021DEBD8: ; 0x021DEBD8
+ ldr ip, _021DEBE0 ; =MOD04_021EAC1C
+ bx ip
+ .align 2, 0
+_021DEBE0: .word MOD04_021EAC1C
+ arm_func_end MOD04_021DEBD8
+
+ arm_func_start MOD04_021DEBE4
+MOD04_021DEBE4: ; 0x021DEBE4
+ stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
+ sub sp, sp, #0xc
+ mov r7, #0
+ mov fp, r0
+ mov sb, r1
+ mov sl, r7
+ bl MOD04_021E852C
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp sb, #4
+ addls pc, pc, sb, lsl #2
+ b _021DEC48
+_021DEC18: ; jump table
+ b _021DEC2C ; case 0
+ b _021DEC2C ; case 1
+ b _021DEC34 ; case 2
+ b _021DEC34 ; case 3
+ b _021DEC40 ; case 4
+_021DEC2C:
+ mov r4, r7
+ b _021DEC48
+_021DEC34:
+ mov r4, #6
+ ldr r6, _021DEF4C ; =0xFFFFE250
+ b _021DEC48
+_021DEC40:
+ ldr r6, _021DEF50 ; =0xFFFFE24F
+ mov r4, #9
+_021DEC48:
+ cmp r4, #0
+ bne _021DED00
+ mov r0, fp
+ bl MOD04_021FD3C4
+ movs r7, r0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldrb r8, [r7, #1]
+ ldr r1, [r0]
+ mov r5, #1
+ mov r0, r5,lsl r8
+ ldr r1, [r1, #0x644]
+ ands r0, r1, r0
+ mov r0, r8
+ moveq r5, #0
+ bl MOD04_021EA9D8
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ bne _021DECA8
+ cmp sb, #0
+ beq _021DECBC
+_021DECA8:
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DECC0
+ cmp r8, #0
+ bne _021DECC0
+_021DECBC:
+ mov sl, #1
+_021DECC0:
+ mov r0, r8
+ bl MOD04_021DF56C
+ ldr r1, _021DEF54 ; =UNK04_0221053C
+ ldrb r7, [r7]
+ ldr r2, _021DEF58 ; =UNK04_02210544
+ mov fp, #0
+ ldr r3, [r1]
+ str fp, [r2, r7, lsl #2]
+ ldrb r2, [r3, #0x361]
+ mov r7, r0
+ sub r0, r2, #1
+ strb r0, [r3, #0x361]
+ ldr r1, [r1]
+ ldrb r0, [r1, #0x368]
+ sub r0, r0, #1
+ strb r0, [r1, #0x368]
+_021DED00:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DED58
+ ldr r0, [r1, #0x24]
+ cmp r0, #6
+ bne _021DED58
+ cmp r5, #0
+ bne _021DED58
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp r4, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_021E85D4
+ mov r0, r7
+ bl MOD04_021E8A50
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DED58:
+ mov r0, r4
+ mov r1, r6
+ mov r2, r7
+ bl MOD04_021E8A74
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ cmp r4, #0
+ beq _021DED90
+ mov r0, r4
+ mov r1, r6
+ bl MOD04_021DD6B0
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DED90:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DEE04
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DEDBC
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DEE04
+_021DEDBC:
+ ldr r2, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r2]
+ ldrb r0, [r1, #0x361]
+ add r6, r0, #2
+ add r3, r1, r6, lsl #2
+ ldr r3, [r3, #0x448]
+ cmp r3, #0
+ beq _021DEE04
+ add r3, r1, r6
+ ldrb r3, [r3, #0x624]
+ add r0, r0, #1
+ add r0, r1, r0
+ strb r3, [r0, #0x624]
+ ldr r0, [r2]
+ ldrb r1, [r0, #0x361]
+ add r0, r1, #1
+ add r1, r1, #3
+ bl MOD04_021E8830
+_021DEE04:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ bne _021DEE4C
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DEE2C
+ bl MOD04_021E85D4
+ b _021DEE68
+_021DEE2C:
+ ldrb r0, [r1, #0x361]
+ cmp r0, #0
+ bne _021DEE68
+ ldr r1, _021DEF5C ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ b _021DEE68
+_021DEE4C:
+ ldrb r0, [r1, #0x361]
+ cmp r0, #0
+ bne _021DEE68
+ ldr r1, _021DEF5C ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+_021DEE68:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #0
+ beq _021DEE88
+ ldrb r0, [r1, #0x369]
+ cmp r0, #1
+ bne _021DEEA4
+_021DEE88:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldrb r1, [r2, #0x368]
+ strb r1, [r2, #0x36a]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x364]
+ bl MOD04_02202308
+_021DEEA4:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r6, [r0]
+ ldr r0, [r6, #0x90]
+ cmp r0, #0
+ beq _021DEF00
+ cmp r5, #0
+ beq _021DEF00
+ cmp sb, #0
+ moveq r5, #1
+ mov r0, r7
+ movne r5, #0
+ bl MOD04_021E1F18
+ str r0, [sp]
+ ldr r1, [r6, #0x94]
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ str r1, [sp, #4]
+ ldr r1, [r0]
+ mov r0, r4
+ ldr r4, [r1, #0x90]
+ mov r1, r5
+ mov r2, sl
+ mov r3, r8
+ blx r4
+_021DEF00:
+ ldr r0, _021DEF54 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x2d]
+ cmp r0, #0
+ bne _021DEF24
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+_021DEF24:
+ ldrb r0, [r1, #0x361]
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ bl MOD04_02200D6C
+ bl MOD04_021E8DC0
+ mov r0, #3
+ bl MOD04_021DF5CC
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
+ .align 2, 0
+_021DEF4C: .word 0xFFFFE250
+_021DEF50: .word 0xFFFFE24F
+_021DEF54: .word UNK04_0221053C
+_021DEF58: .word UNK04_02210544
+_021DEF5C: .word UNK04_0220D334
+ arm_func_end MOD04_021DEBE4
+
+ arm_func_start MOD04_021DEF60
+MOD04_021DEF60: ; 0x021DEF60
+ ldr ip, _021DEF68 ; =MOD04_021EAC5C
+ bx ip
+ .align 2, 0
+_021DEF68: .word MOD04_021EAC5C
+ arm_func_end MOD04_021DEF60
+
+ arm_func_start MOD04_021DEF6C
+MOD04_021DEF6C: ; 0x021DEF6C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ add r4, sp, #0
+ mov r3, #0
+ strb r3, [r4]
+ strb r3, [r4, #1]
+ strb r3, [r4, #2]
+ strb r3, [r4, #3]
+ strb r3, [r4, #4]
+ strb r3, [r4, #5]
+ strb r3, [r4, #6]
+ strb r3, [r4, #7]
+ strb r3, [r4, #8]
+ strb r3, [r4, #9]
+ strb r3, [r4, #0xa]
+ mov r5, r1
+ strb r3, [r4, #0xb]
+ ldr r4, [r5, #8]
+ mov r6, r0
+ bl MOD04_021E2068
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0C8 ; =UNK04_0220D338
+ bl strlen
+ mov r2, r0
+ ldr r1, _021DF0C8 ; =UNK04_0220D338
+ mov r0, r4
+ bl memcmp
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0C8 ; =UNK04_0220D338
+ bl strlen
+ add r4, r4, r0
+ mov r0, r4
+ mov r1, #0x76
+ bl strchr
+ sub r7, r0, r4
+ add r0, sp, #0
+ mov r1, r4
+ mov r2, r7
+ bl strncpy
+ cmp r7, #0xa
+ addhi sp, sp, #0xc
+ ldmhiia sp!, {r4, r5, r6, r7, pc}
+ add r0, sp, #0
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ cmp r0, #3
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0CC ; =UNK04_0220D340
+ add r1, r7, #1
+ add r4, r4, r1
+ bl strlen
+ mov r2, r0
+ ldr r1, _021DF0CC ; =UNK04_0220D340
+ mov r0, r4
+ bl memcmp
+ cmp r0, #0
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF0D0 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldr r0, [r1, #0x24]
+ cmp r0, #5
+ beq _021DF0A8
+ cmp r0, #6
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DF0A8
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+_021DF0A8:
+ ldr r0, _021DF0CC ; =UNK04_0220D340
+ bl strlen
+ add r2, r4, r0
+ ldr r1, [r5]
+ mov r0, r6
+ bl MOD04_021E8EF4
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF0C8: .word UNK04_0220D338
+_021DF0CC: .word UNK04_0220D340
+_021DF0D0: .word UNK04_0221053C
+ arm_func_end MOD04_021DEF6C
+
+ arm_func_start MOD04_021DF0D4
+MOD04_021DF0D4: ; 0x021DF0D4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, [r1, #4]
+ ldr r0, _021DF120 ; =0x00000603
+ cmp r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DF124 ; =0x00000901
+ cmp r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, _021DF128 ; =0x00000B01
+ cmp r1, r0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ mov r0, #3
+ bl MOD04_021DF414
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF120: .word 0x00000603
+_021DF124: .word 0x00000901
+_021DF128: .word 0x00000B01
+ arm_func_end MOD04_021DF0D4
+
+ arm_func_start MOD04_021DF12C
+MOD04_021DF12C: ; 0x021DF12C
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0xc
+ movs r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bne _021DF174
+ cmp r6, #0
+ beq _021DF174
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x4f4]
+ cmp r0, #0
+ bne _021DF1D8
+ bl MOD04_021E8DC0
+ mov r0, #3
+ bl MOD04_021DF5CC
+ b _021DF1D8
+_021DF174:
+ cmp r7, #0
+ bne _021DF1D8
+ mov r0, #6
+ bl MOD04_021DF5CC
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ mov r0, #0
+ ldr r3, [r1]
+ ldrb r1, [r3, #0x361]
+ cmp r1, #0
+ blt _021DF1D8
+ ldr r2, [r3, #0x64]
+_021DF1A0:
+ add r1, r3, r0, lsl #2
+ ldr r1, [r1, #0x448]
+ cmp r2, r1
+ bne _021DF1C8
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [r1]
+ add r0, r1, r0
+ ldrb r0, [r0, #0x624]
+ strb r0, [r1, #0x2c]
+ b _021DF1D8
+_021DF1C8:
+ ldrb r1, [r3, #0x361]
+ add r0, r0, #1
+ cmp r0, r1
+ ble _021DF1A0
+_021DF1D8:
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ ldr r0, _021DF2B0 ; =0x00000624
+ ldr r2, [r1]
+ ldrb r1, [r2, #0x361]
+ add r0, r2, r0
+ add r1, r1, #1
+ bl MOD04_021DF530
+ ldr r1, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [r1]
+ str r0, [r1, #0x644]
+ bl MOD04_021E8780
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DF224
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DF258
+_021DF224:
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r1, [sp, #0x20]
+ ldr r3, [r0]
+ mov r0, r7
+ str r1, [sp]
+ ldr r2, [r3, #0x8c]
+ mov r1, r6
+ str r2, [sp, #4]
+ ldr r6, [r3, #0x88]
+ mov r2, r5
+ mov r3, r4
+ blx r6
+ b _021DF26C
+_021DF258:
+ ldr r2, [r1, #0x84]
+ ldr r3, [r1, #0x80]
+ mov r0, r7
+ mov r1, r6
+ blx r3
+_021DF26C:
+ cmp r7, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, _021DF2AC ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #0xc
+ ldmeqia sp!, {r4, r5, r6, r7, pc}
+ ldr r0, [r0, #0x24]
+ cmp r0, #5
+ addne sp, sp, #0xc
+ ldmneia sp!, {r4, r5, r6, r7, pc}
+ mov r0, #3
+ bl MOD04_021DF5CC
+ add sp, sp, #0xc
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DF2AC: .word UNK04_0221053C
+_021DF2B0: .word 0x00000624
+ arm_func_end MOD04_021DF12C
+
+ arm_func_start MOD04_021DF2B4
+MOD04_021DF2B4: ; 0x021DF2B4
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ ldr r2, _021DF300 ; =UNK04_0221053C
+ mov r5, r0
+ ldr r0, [r2]
+ mov r4, r1
+ ldr r0, [r0, #0x28]
+ cmp r0, #4
+ beq _021DF2DC
+ bl MOD04_021DF5CC
+_021DF2DC:
+ ldr r1, _021DF300 ; =UNK04_0221053C
+ mov r0, r5
+ ldr r3, [r1]
+ mov r1, r4
+ ldr r2, [r3, #0x7c]
+ ldr r3, [r3, #0x78]
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DF300: .word UNK04_0221053C
+ arm_func_end MOD04_021DF2B4
+
+ arm_func_start MOD04_021DF304
+MOD04_021DF304: ; 0x021DF304
+ stmdb sp!, {r4, r5, lr}
+ sub sp, sp, #4
+ movs r5, r0
+ mov r4, r1
+ bne _021DF334
+ ldr r1, _021DF36C ; =UNK04_0221053C
+ mov r0, #3
+ ldr r1, [r1]
+ str r4, [r1, #0x64]
+ bl MOD04_021DF5CC
+ bl MOD04_021E1ED4
+ b _021DF33C
+_021DF334:
+ mov r0, #0
+ bl MOD04_021DF5CC
+_021DF33C:
+ ldr r0, _021DF36C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r3, [r0, #0x70]
+ cmp r3, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, pc}
+ ldr r2, [r0, #0x74]
+ mov r0, r5
+ mov r1, r4
+ blx r3
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, pc}
+ .align 2, 0
+_021DF36C: .word UNK04_0221053C
+ arm_func_end MOD04_021DF304
+
+ arm_func_start MOD04_021DF370
+MOD04_021DF370: ; 0x021DF370
+ stmdb sp!, {r4, lr}
+ movs r4, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ cmp r4, #7
+ addls pc, pc, r4, lsl #2
+ b _021DF3F4
+_021DF38C: ; jump table
+ b _021DF3F4 ; case 0
+ b _021DF3AC ; case 1
+ b _021DF3B8 ; case 2
+ b _021DF3C8 ; case 3
+ b _021DF3D4 ; case 4
+ b _021DF3B8 ; case 5
+ b _021DF3E0 ; case 6
+ b _021DF3EC ; case 7
+_021DF3AC:
+ mov r0, #9
+ mvn r2, #0
+ b _021DF3F4
+_021DF3B8:
+ mov r0, #0
+ mov r2, r0
+ mov r4, r0
+ b _021DF3F4
+_021DF3C8:
+ mov r0, #6
+ mvn r2, #9
+ b _021DF3F4
+_021DF3D4:
+ mov r0, #6
+ mvn r2, #0x1d
+ b _021DF3F4
+_021DF3E0:
+ mov r0, #6
+ mvn r2, #0x45
+ b _021DF3F4
+_021DF3EC:
+ mov r0, #6
+ mvn r2, #0x4f
+_021DF3F4:
+ cmp r0, #0
+ beq _021DF408
+ ldr r1, _021DF410 ; =0xFFFEFA48
+ add r1, r2, r1
+ bl MOD04_021E0EAC
+_021DF408:
+ mov r0, r4
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DF410: .word 0xFFFEFA48
+ arm_func_end MOD04_021DF370
+
+ arm_func_start MOD04_021DF414
+MOD04_021DF414: ; 0x021DF414
+ stmdb sp!, {r4, r5, r6, lr}
+ movs r6, r0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ cmp r6, #4
+ addls pc, pc, r6, lsl #2
+ b _021DF470
+_021DF430: ; jump table
+ b _021DF470 ; case 0
+ b _021DF444 ; case 1
+ b _021DF450 ; case 2
+ b _021DF45C ; case 3
+ b _021DF468 ; case 4
+_021DF444:
+ mov r4, #9
+ mvn r5, #0
+ b _021DF470
+_021DF450:
+ mov r4, #9
+ mvn r5, #1
+ b _021DF470
+_021DF45C:
+ mov r4, #6
+ mvn r5, #9
+ b _021DF470
+_021DF468:
+ mov r4, #6
+ mvn r5, #0x13
+_021DF470:
+ ldr r0, _021DF51C ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldr r0, [r1, #0x24]
+ cmp r0, #5
+ addls pc, pc, r0, lsl #2
+ b _021DF500
+_021DF488: ; jump table
+ b _021DF500 ; case 0
+ b _021DF4A0 ; case 1
+ b _021DF4B8 ; case 2
+ b _021DF500 ; case 3
+ b _021DF4F4 ; case 4
+ b _021DF4DC ; case 5
+_021DF4A0:
+ ldr r1, _021DF520 ; =0xFFFF11B8
+ mov r0, r4
+ add r5, r5, r1
+ mov r1, r5
+ bl MOD04_021E0EAC
+ b _021DF508
+_021DF4B8:
+ ldr r1, [r1, #0x9c]
+ ldr r0, _021DF520 ; =0xFFFF11B8
+ cmp r1, #1
+ add r5, r5, r0
+ bge _021DF508
+ mov r0, r4
+ mov r1, r5
+ bl MOD04_021E0EAC
+ b _021DF508
+_021DF4DC:
+ ldr r1, _021DF524 ; =0xFFFEC398
+ mov r0, r4
+ add r5, r5, r1
+ mov r1, r5
+ bl MOD04_021E8E08
+ b _021DF508
+_021DF4F4:
+ ldr r0, _021DF528 ; =0xFFFEEAA8
+ add r5, r5, r0
+ b _021DF508
+_021DF500:
+ ldr r0, _021DF52C ; =0xFFFE9C88
+ add r5, r5, r0
+_021DF508:
+ mov r0, r4
+ mov r1, r5
+ bl MOD04_021E2114
+ mov r0, r6
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DF51C: .word UNK04_0221053C
+_021DF520: .word 0xFFFF11B8
+_021DF524: .word 0xFFFEC398
+_021DF528: .word 0xFFFEEAA8
+_021DF52C: .word 0xFFFE9C88
+ arm_func_end MOD04_021DF414
+
+ arm_func_start MOD04_021DF530
+MOD04_021DF530: ; 0x021DF530
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ mov lr, #0
+ mov ip, lr
+ cmp r1, #0
+ ble _021DF560
+ mov r3, #1
+_021DF54C:
+ ldrb r2, [r0, ip]
+ add ip, ip, #1
+ cmp ip, r1
+ orr lr, lr, r3, lsl r2
+ blt _021DF54C
+_021DF560:
+ mov r0, lr
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DF530
+
+ arm_func_start MOD04_021DF56C
+MOD04_021DF56C: ; 0x021DF56C
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ mov r4, r0
+ add r0, sp, #0
+ bl MOD04_021E874C
+ mov r1, r0
+ cmp r1, #0
+ mov r0, #0
+ ble _021DF5B0
+ ldr r3, [sp]
+_021DF594:
+ ldrb r2, [r3]
+ cmp r4, r2
+ beq _021DF5B0
+ add r0, r0, #1
+ cmp r0, r1
+ add r3, r3, #1
+ blt _021DF594
+_021DF5B0:
+ cmp r0, r1
+ addeq sp, sp, #8
+ moveq r0, #0
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021E8830
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ arm_func_end MOD04_021DF56C
+
+ arm_func_start MOD04_021DF5CC
+MOD04_021DF5CC: ; 0x021DF5CC
+ ldr r1, _021DF5E8 ; =UNK04_0221053C
+ ldr r3, [r1]
+ ldr r2, [r3, #0x24]
+ str r2, [r3, #0x28]
+ ldr r1, [r1]
+ str r0, [r1, #0x24]
+ bx lr
+ .align 2, 0
+_021DF5E8: .word UNK04_0221053C
+ arm_func_end MOD04_021DF5CC
+
+ arm_func_start MOD04_021DF5EC
+MOD04_021DF5EC: ; 0x021DF5EC
+ bx lr
+ arm_func_end MOD04_021DF5EC
+
+ arm_func_start MOD04_021DF5F0
+MOD04_021DF5F0: ; 0x021DF5F0
+ stmdb sp!, {r4, r5, r6, lr}
+ mov r6, r0
+ mov r5, #0
+ ldr r4, _021DF634 ; =UNK04_02210544
+_021DF600:
+ ldr r0, [r4, r5, lsl #2]
+ cmp r0, #0
+ beq _021DF620
+ bl MOD04_021FD3C4
+ ldrb r0, [r0, #1]
+ cmp r6, r0
+ moveq r0, #1
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021DF620:
+ add r5, r5, #1
+ cmp r5, #0x20
+ blt _021DF600
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DF634: .word UNK04_02210544
+ arm_func_end MOD04_021DF5F0
+
+ arm_func_start MOD04_021DF638
+MOD04_021DF638: ; 0x021DF638
+ ldr r1, _021DF644 ; =UNK04_022105C4
+ add r0, r1, r0, lsl #3
+ bx lr
+ .align 2, 0
+_021DF644: .word UNK04_022105C4
+ arm_func_end MOD04_021DF638
+
+ arm_func_start MOD04_021DF648
+MOD04_021DF648: ; 0x021DF648
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ cmp r1, #0
+ mov ip, #0
+ ble _021DF684
+ ldr r2, _021DF6B8 ; =UNK04_0221053C
+ ldr r3, [r2]
+_021DF664:
+ add r2, r3, ip, lsl #2
+ ldr r2, [r2, #0x448]
+ cmp r0, r2
+ beq _021DF684
+ add r2, ip, #1
+ and ip, r2, #0xff
+ cmp ip, r1
+ blt _021DF664
+_021DF684:
+ cmp ip, r1
+ addge sp, sp, #4
+ movge r0, #0
+ ldmgeia sp!, {pc}
+ ldr r0, _021DF6B8 ; =UNK04_0221053C
+ ldr r0, [r0]
+ add r0, r0, ip
+ ldrb r0, [r0, #0x624]
+ bl MOD04_021DF760
+ bl MOD04_021DF730
+ bl MOD04_021DF6BC
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF6B8: .word UNK04_0221053C
+ arm_func_end MOD04_021DF648
+
+ arm_func_start MOD04_021DF6BC
+MOD04_021DF6BC: ; 0x021DF6BC
+ ldr r1, _021DF6C8 ; =UNK04_02210544
+ add r0, r1, r0, lsl #2
+ bx lr
+ .align 2, 0
+_021DF6C8: .word UNK04_02210544
+ arm_func_end MOD04_021DF6BC
+
+ arm_func_start MOD04_021DF6CC
+MOD04_021DF6CC: ; 0x021DF6CC
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021DF6FC ; =UNK04_02210544
+ mov r0, #0
+ mov r2, #0x80
+ bl MIi_CpuClear32
+ ldr r1, _021DF700 ; =UNK04_022105C4
+ mov r0, #0
+ mov r2, #0x100
+ bl MIi_CpuClear32
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF6FC: .word UNK04_02210544
+_021DF700: .word UNK04_022105C4
+ arm_func_end MOD04_021DF6CC
+
+ arm_func_start MOD04_021DF704
+MOD04_021DF704: ; 0x021DF704
+ ldr r2, _021DF72C ; =UNK04_02210544
+ mov r0, #0
+_021DF70C:
+ ldr r1, [r2, r0, lsl #2]
+ cmp r1, #0
+ bxeq lr
+ add r0, r0, #1
+ cmp r0, #0x20
+ blt _021DF70C
+ mvn r0, #0
+ bx lr
+ .align 2, 0
+_021DF72C: .word UNK04_02210544
+ arm_func_end MOD04_021DF704
+
+ arm_func_start MOD04_021DF730
+MOD04_021DF730: ; 0x021DF730
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021FD3C4
+ ldrb r0, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DF730
+
+ arm_func_start MOD04_021DF748
+MOD04_021DF748: ; 0x021DF748
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021FD3C4
+ ldrb r0, [r0, #1]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ arm_func_end MOD04_021DF748
+
+ arm_func_start MOD04_021DF760
+MOD04_021DF760: ; 0x021DF760
+ stmdb sp!, {r4, r5, r6, lr}
+ ldr r1, _021DF7BC ; =UNK04_0221053C
+ mov r6, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ ldr r4, _021DF7C0 ; =UNK04_02210544
+ mov r5, #0
+_021DF784:
+ ldr r0, [r4, r5, lsl #2]
+ cmp r0, #0
+ beq _021DF7A8
+ bl MOD04_021FD3C4
+ ldrb r0, [r0, #1]
+ cmp r6, r0
+ ldreq r0, _021DF7C0 ; =UNK04_02210544
+ ldreq r0, [r0, r5, lsl #2]
+ ldmeqia sp!, {r4, r5, r6, pc}
+_021DF7A8:
+ add r5, r5, #1
+ cmp r5, #0x20
+ blt _021DF784
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DF7BC: .word UNK04_0221053C
+_021DF7C0: .word UNK04_02210544
+ arm_func_end MOD04_021DF760
+
+ arm_func_start MOD04_021DF7C4
+MOD04_021DF7C4: ; 0x021DF7C4
+ stmdb sp!, {r4, lr}
+ sub sp, sp, #8
+ ldr r0, _021DF87C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, #0
+ ldmneia sp!, {r4, pc}
+ mov r0, #0x4000
+ bl MOD04_021DE8C8
+ add r0, r0, #0xc000
+ mov r1, r0, lsl #0x10
+ ldr r3, _021DF87C ; =UNK04_0221053C
+ mov r0, #0
+ mov r2, r0
+ mov r1, r1, lsr #0x10
+ ldr r4, [r3]
+ bl MOD04_021FFEB0
+ ldr r1, _021DF880 ; =MOD04_021DEB90
+ ldr r2, _021DF87C ; =UNK04_0221053C
+ str r1, [sp]
+ mov r1, r0
+ ldr r0, [r2]
+ ldr r2, [r4, #0x14]
+ ldr r3, [r4, #0x18]
+ bl MOD04_021FD71C
+ mov r4, r0
+ bl MOD04_021DF370
+ cmp r0, #0
+ addne sp, sp, #8
+ movne r0, r4
+ ldmneia sp!, {r4, pc}
+ ldr r0, _021DF87C ; =UNK04_0221053C
+ ldr r1, _021DF884 ; =MOD04_021E9204
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD04_021FD6C8
+ ldr r0, _021DF87C ; =UNK04_0221053C
+ ldr r1, _021DF888 ; =MOD04_021E9464
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD04_021FD434
+ mov r0, r4
+ add sp, sp, #8
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DF87C: .word UNK04_0221053C
+_021DF880: .word MOD04_021DEB90
+_021DF884: .word MOD04_021E9204
+_021DF888: .word MOD04_021E9464
+ arm_func_end MOD04_021DF7C4
+
+ arm_func_start MOD04_021DF88C
+MOD04_021DF88C: ; 0x021DF88C
+ ldr r0, _021DF8A4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ ldrne r0, [r0, #0x24]
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021DF8A4: .word UNK04_0221053C
+ arm_func_end MOD04_021DF88C
+
+ arm_func_start MOD04_021DF8A8
+MOD04_021DF8A8: ; 0x021DF8A8
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r1, _021DF8F0 ; =UNK04_0221053C
+ ldr r2, [r1]
+ cmp r2, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ mov r1, #1
+ mov r1, r1,lsl r0
+ ldr r2, [r2, #0x644]
+ ands r1, r2, r1
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ bl MOD04_021DF5F0
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF8F0: .word UNK04_0221053C
+ arm_func_end MOD04_021DF8A8
+
+ arm_func_start MOD04_021DF8F4
+MOD04_021DF8F4: ; 0x021DF8F4
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r2, _021DF954 ; =UNK04_0221053C
+ ldr r3, [r2]
+ cmp r3, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldr r1, _021DF958 ; =0x00000624
+ add r1, r3, r1
+ str r1, [r0]
+ ldr r2, [r2]
+ ldrb r1, [r2, #0x369]
+ cmp r1, #2
+ beq _021DF93C
+ ldrb r1, [r2, #0x369]
+ cmp r1, #3
+ bne _021DF948
+_021DF93C:
+ bl MOD04_021E86A4
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021DF948:
+ bl MOD04_021E874C
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF954: .word UNK04_0221053C
+_021DF958: .word 0x00000624
+ arm_func_end MOD04_021DF8F4
+
+ arm_func_start MOD04_021DF95C
+MOD04_021DF95C: ; 0x021DF95C
+ ldr r0, _021DF974 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ ldrneb r0, [r0, #0x2c]
+ moveq r0, #0
+ bx lr
+ .align 2, 0
+_021DF974: .word UNK04_0221053C
+ arm_func_end MOD04_021DF95C
+
+ arm_func_start MOD04_021DF978
+MOD04_021DF978: ; 0x021DF978
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DF9D0 ; =UNK04_0221053C
+ ldr r1, [r0]
+ cmp r1, #0
+ addeq sp, sp, #4
+ moveq r0, #0
+ ldmeqia sp!, {pc}
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021DF9B0
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021DF9C0
+_021DF9B0:
+ bl MOD04_021E87D8
+ add sp, sp, #4
+ add r0, r0, #1
+ ldmfd sp!, {pc}
+_021DF9C0:
+ bl MOD04_021E8804
+ add r0, r0, #1
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DF9D0: .word UNK04_0221053C
+ arm_func_end MOD04_021DF978
+
+ arm_func_start MOD04_021DF9D4
+MOD04_021DF9D4: ; 0x021DF9D4
+ stmdb sp!, {r4, lr}
+ ldr r1, _021DFA3C ; =UNK04_0221053C
+ mov r4, r0
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021DFA14
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFA14
+ ldr r0, _021DFA3C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #5
+ beq _021DFA1C
+ cmp r0, #6
+ beq _021DFA1C
+_021DFA14:
+ mvn r0, #0
+ ldmia sp!, {r4, pc}
+_021DFA1C:
+ mov r0, r4
+ bl MOD04_021DF760
+ cmp r0, #0
+ mvneq r0, #1
+ ldmeqia sp!, {r4, pc}
+ bl MOD04_021FD488
+ mov r0, #0
+ ldmia sp!, {r4, pc}
+ .align 2, 0
+_021DFA3C: .word UNK04_0221053C
+ arm_func_end MOD04_021DF9D4
+
+ arm_func_start MOD04_021DFA40
+MOD04_021DFA40: ; 0x021DFA40
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021DFAF0 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DFA80
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFA80
+ ldr r0, _021DFAF0 ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldr r0, [r2, #0x24]
+ cmp r0, #5
+ beq _021DFA8C
+ cmp r0, #6
+ beq _021DFA8C
+_021DFA80:
+ add sp, sp, #4
+ mvn r0, #0
+ ldmfd sp!, {pc}
+_021DFA8C:
+ ldrb r0, [r2, #0x361]
+ cmp r0, #0
+ bne _021DFAC0
+ ldr r1, _021DFAF4 ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+ bl MOD04_02200D6C
+ mov r0, #3
+ bl MOD04_021DF5CC
+ add sp, sp, #4
+ mov r0, #1
+ ldmfd sp!, {pc}
+_021DFAC0:
+ mov r1, #1
+ ldr r0, _021DFAF0 ; =UNK04_0221053C
+ strb r1, [r2, #0x2d]
+ ldr r0, [r0]
+ ldr r0, [r0]
+ bl MOD04_021FD45C
+ ldr r1, _021DFAF0 ; =UNK04_0221053C
+ mov r0, #0
+ ldr r1, [r1]
+ strb r0, [r1, #0x2d]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021DFAF0: .word UNK04_0221053C
+_021DFAF4: .word UNK04_0220D334
+ arm_func_end MOD04_021DFA40
+
+ arm_func_start MOD04_021DFAF8
+MOD04_021DFAF8: ; 0x021DFAF8
+ ldr r2, _021DFB1C ; =UNK04_0221053C
+ ldr r3, [r2]
+ cmp r3, #0
+ moveq r0, #0
+ strne r0, [r3, #0x90]
+ ldrne r2, [r2]
+ movne r0, #1
+ strne r1, [r2, #0x94]
+ bx lr
+ .align 2, 0
+_021DFB1C: .word UNK04_0221053C
+ arm_func_end MOD04_021DFAF8
+
+ arm_func_start MOD04_021DFB20
+MOD04_021DFB20: ; 0x021DFB20
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #0x224
+ mvn ip, #0
+ mov r7, r0
+ mov r6, r1
+ mov r4, r2
+ mov r5, r3
+ str ip, [sp, #8]
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFB60
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #3
+ beq _021DFB6C
+_021DFB60:
+ add sp, sp, #0x224
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DFB6C:
+ bl MOD04_021DF6CC
+ ldr r1, _021DFD04 ; =UNK04_0221053C
+ mov r0, #5
+ ldr r2, [r1]
+ str r6, [r2, #0x88]
+ ldr r1, [r1]
+ str r4, [r1, #0x8c]
+ bl MOD04_021DF5CC
+ mov r0, r7
+ bl MOD04_021E1F84
+ movs r4, r0
+ beq _021DFBB8
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ mov r1, r4
+ ldr r0, [r0]
+ add r0, r0, #0x1c
+ bl MOD04_021F05F4
+ cmp r0, #0
+ bne _021DFBC0
+_021DFBB8:
+ mov r5, #0xb
+ b _021DFC8C
+_021DFBC0:
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ add r2, sp, #8
+ ldr r0, [r0]
+ mov r1, r4
+ add r0, r0, #0x1c
+ bl MOD04_021F0664
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ ldr r1, [sp, #8]
+ ldr r0, [r0]
+ add r2, sp, #0x10
+ add r0, r0, #0x1c
+ bl MOD04_021F06E4
+ ldr r0, [sp, #0x14]
+ cmp r0, #6
+ movne r5, #0xb
+ bne _021DFC8C
+ ldr r0, _021DFD08 ; =UNK04_0220D344
+ mov r6, #0x30
+ add r1, sp, #0xc
+ add r2, sp, #0x18
+ mov r3, #0x2f
+ strb r6, [sp, #0xc]
+ bl MOD04_021DE9F4
+ add r0, sp, #0xc
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ and r6, r0, #0xff
+ ldr r0, _021DFD0C ; =UNK04_0220D348
+ add r1, sp, #0xc
+ add r2, sp, #0x18
+ mov r3, #0x2f
+ bl MOD04_021DE9F4
+ add r0, sp, #0xc
+ mov r1, #0
+ mov r2, #0xa
+ bl strtoul
+ and r0, r0, #0xff
+ cmp r0, r6
+ moveq r5, #0xd
+ beq _021DFC8C
+ ldr r6, [sp, #0x238]
+ ldr r1, _021DFD10 ; =MOD04_021DF12C
+ mov r0, r4
+ mov r3, r5
+ mov r2, #0
+ str r6, [sp]
+ bl MOD04_021E9FD0
+ add sp, sp, #0x224
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DFC8C:
+ mov r0, r5
+ mov r1, #0
+ bl MOD04_021DD6B0
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r4, [r0]
+ mov r0, r5
+ str r1, [sp]
+ ldr r2, [r4, #0x8c]
+ mov r3, r1
+ str r2, [sp, #4]
+ ldr r4, [r4, #0x88]
+ mov r2, #1
+ blx r4
+ ldr r0, _021DFD04 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021DFCF8
+ ldr r0, [r0, #0x24]
+ cmp r0, #5
+ bne _021DFCF8
+ mov r0, #3
+ bl MOD04_021DF5CC
+ ldr r1, _021DFD14 ; =UNK04_0220D334
+ mov r0, #1
+ mov r2, #0
+ bl MOD04_021E1E30
+_021DFCF8:
+ mov r0, #1
+ add sp, sp, #0x224
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DFD04: .word UNK04_0221053C
+_021DFD08: .word UNK04_0220D344
+_021DFD0C: .word UNK04_0220D348
+_021DFD10: .word MOD04_021DF12C
+_021DFD14: .word UNK04_0220D334
+ arm_func_end MOD04_021DFB20
+
+ arm_func_start MOD04_021DFD18
+MOD04_021DFD18: ; 0x021DFD18
+ stmdb sp!, {r4, r5, r6, r7, lr}
+ sub sp, sp, #4
+ mov r7, r0
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFD50
+ ldr r0, _021DFDB4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #3
+ beq _021DFD5C
+_021DFD50:
+ add sp, sp, #4
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, r7, pc}
+_021DFD5C:
+ bl MOD04_021DF6CC
+ ldr r1, _021DFDB4 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r3, [r1]
+ mov r0, #5
+ str r6, [r3, #0x88]
+ ldr r3, [r1]
+ str r5, [r3, #0x8c]
+ ldr r1, [r1]
+ strb r2, [r1, #0x2c]
+ bl MOD04_021DF5CC
+ sub r0, r7, #1
+ ldr r5, [sp, #0x18]
+ ldr r1, _021DFDB8 ; =MOD04_021DF12C
+ mov r3, r4
+ and r0, r0, #0xff
+ mov r2, #0
+ str r5, [sp]
+ bl MOD04_021EA138
+ mov r0, #1
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, pc}
+ .align 2, 0
+_021DFDB4: .word UNK04_0221053C
+_021DFDB8: .word MOD04_021DF12C
+ arm_func_end MOD04_021DFD18
+
+ arm_func_start MOD04_021DFDBC
+MOD04_021DFDBC: ; 0x021DFDBC
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFDF8
+ ldr r0, _021DFE5C ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldr r1, [r2, #0x24]
+ cmp r1, #3
+ blt _021DFDF8
+ cmp r1, #4
+ bne _021DFE04
+_021DFDF8:
+ add sp, sp, #0x10
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DFE04:
+ str r6, [r2, #0x78]
+ ldr r1, [r0]
+ mov r0, #4
+ str r5, [r1, #0x7c]
+ bl MOD04_021DF5CC
+ ldr r0, _021DFE5C ; =UNK04_0221053C
+ ldr r1, [sp, #0x20]
+ ldr r3, [r0]
+ ldr r0, [sp, #0x24]
+ str r4, [sp]
+ str r1, [sp, #4]
+ ldr r4, [sp, #0x28]
+ str r0, [sp, #8]
+ ldr r2, _021DFE60 ; =MOD04_021DF2B4
+ add r0, r3, #0xe0
+ add r1, r3, #0x1e0
+ mov r3, #0
+ str r4, [sp, #0xc]
+ bl MOD04_021E2174
+ mov r0, #1
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DFE5C: .word UNK04_0221053C
+_021DFE60: .word MOD04_021DF2B4
+ arm_func_end MOD04_021DFDBC
+
+ arm_func_start MOD04_021DFE64
+MOD04_021DFE64: ; 0x021DFE64
+ stmdb sp!, {r4, r5, r6, lr}
+ movs r4, r0
+ mov r6, r2
+ mov r5, r3
+ moveq r0, #0
+ ldmeqia sp!, {r4, r5, r6, pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ bne _021DFE9C
+ ldr r0, _021DFF6C ; =UNK04_0221053C
+ ldr r2, [r0]
+ ldr r1, [r2, #0x24]
+ cmp r1, #0
+ beq _021DFEA4
+_021DFE9C:
+ mov r0, #0
+ ldmia sp!, {r4, r5, r6, pc}
+_021DFEA4:
+ str r6, [r2, #0x70]
+ ldr r1, [r0]
+ cmp r4, #0
+ str r5, [r1, #0x74]
+ beq _021DFEC4
+ ldrh r1, [r4]
+ cmp r1, #0
+ bne _021DFECC
+_021DFEC4:
+ mov r5, #0
+ b _021DFF18
+_021DFECC:
+ ldr r1, [r0]
+ mov r0, #0
+ add r1, r1, #0x2e
+ mov r2, #0x34
+ bl MIi_CpuClear16
+ mov r0, r4
+ bl MOD04_021DE89C
+ cmp r0, #0x19
+ movhi r5, #0x19
+ bhi _021DFF00
+ mov r0, r4
+ bl MOD04_021DE89C
+ mov r5, r0
+_021DFF00:
+ ldr r1, _021DFF6C ; =UNK04_0221053C
+ mov r0, r4
+ ldr r1, [r1]
+ mov r2, r5, lsl #1
+ add r1, r1, #0x2e
+ bl MIi_CpuCopy16
+_021DFF18:
+ ldr r0, _021DFF6C ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ add r0, r0, r5, lsl #1
+ strh r1, [r0, #0x2e]
+ bl MOD04_021DDC1C
+ cmp r0, #4
+ beq _021DFF4C
+ ldr r1, _021DFF70 ; =0xFFFF1596
+ mov r0, #2
+ bl MOD04_021E0EAC
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+_021DFF4C:
+ mov r0, #1
+ bl MOD04_021DF5CC
+ ldr r0, _021DFF6C ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x68]
+ bl MOD04_021EE898
+ mov r0, #1
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021DFF6C: .word UNK04_0221053C
+_021DFF70: .word 0xFFFF1596
+ arm_func_end MOD04_021DFE64
+
+ arm_func_start MOD04_021DFF74
+MOD04_021DFF74: ; 0x021DFF74
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ bl MOD04_021DD984
+ cmp r0, #0
+ beq _021DFF8C
+ bl MOD04_021DF5EC
+_021DFF8C:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x24]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ bl MOD04_021DD6D4
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0, #0x24]
+ cmp r0, #6
+ addls pc, pc, r0, lsl #2
+ b _021E0194
+_021DFFD8: ; jump table
+ b _021E0194 ; case 0
+ b _021DFFF4 ; case 1
+ b _021E0124 ; case 2
+ b _021E012C ; case 3
+ b _021E012C ; case 4
+ b _021E013C ; case 5
+ b _021E014C ; case 6
+_021DFFF4:
+ bl MOD04_021EE6A0
+ cmp r0, #1
+ beq _021E0014
+ cmp r0, #2
+ beq _021E00FC
+ cmp r0, #3
+ beq _021E0110
+ b _021E0194
+_021E0014:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ ldr r1, [r0, #0xa0]
+ add r0, r0, #0x1c
+ bl MOD04_021F0F94
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ ldr r2, _021E01E8 ; =MOD04_021DF0D4
+ mov r3, r1
+ add r0, r0, #0x1c
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r2, _021E01EC ; =MOD04_021DEF6C
+ ldr r0, [r0]
+ mov r1, #3
+ add r0, r0, #0x1c
+ mov r3, #0
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r2, _021E01F0 ; =MOD04_021E20C8
+ ldr r0, [r0]
+ mov r1, #1
+ add r0, r0, #0x1c
+ mov r3, #0
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r2, _021E01F4 ; =MOD04_021E1FE4
+ ldr r0, [r0]
+ mov r1, #2
+ add r0, r0, #0x1c
+ mov r3, #0
+ bl MOD04_021F0EB0
+ bl MOD04_021DF414
+ cmp r0, #0
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ mov r0, #2
+ bl MOD04_021DF5CC
+ bl MOD04_021E1034
+ b _021E0194
+_021E00FC:
+ ldr r1, _021E01F8 ; =0xFFFFB172
+ mov r0, #3
+ bl MOD04_021E0EAC
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E0110:
+ ldr r1, _021E01FC ; =0xFFFFB17B
+ mov r0, #4
+ bl MOD04_021E0EAC
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+_021E0124:
+ bl MOD04_021E0F1C
+ b _021E0194
+_021E012C:
+ bl MOD04_021E2228
+ mov r0, #0
+ bl MOD04_021E9568
+ b _021E0194
+_021E013C:
+ mov r0, #1
+ bl MOD04_021E9568
+ bl MOD04_021E2228
+ b _021E0194
+_021E014C:
+ bl MOD04_021EAA64
+ bl MOD04_021E2228
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x369]
+ cmp r0, #2
+ beq _021E0174
+ ldrb r0, [r1, #0x369]
+ cmp r0, #3
+ bne _021E0180
+_021E0174:
+ mov r0, #1
+ bl MOD04_021E9568
+ b _021E0194
+_021E0180:
+ ldr r0, [r1]
+ cmp r0, #0
+ beq _021E0194
+ mov r0, #0
+ bl MOD04_021E9568
+_021E0194:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ ldr r1, [r0]
+ ldrb r0, [r1, #0x36c]
+ cmp r0, #1
+ addne sp, sp, #4
+ ldmneia sp!, {pc}
+ ldr r0, [r1, #0x364]
+ cmp r0, #0
+ beq _021E01CC
+ bl MOD04_02202280
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x364]
+_021E01CC:
+ ldr r0, _021E01E4 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ strb r1, [r0, #0x36c]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E01E4: .word UNK04_0221053C
+_021E01E8: .word MOD04_021DF0D4
+_021E01EC: .word MOD04_021DEF6C
+_021E01F0: .word MOD04_021E20C8
+_021E01F4: .word MOD04_021E1FE4
+_021E01F8: .word 0xFFFFB172
+_021E01FC: .word 0xFFFFB17B
+ arm_func_end MOD04_021DFF74
+
+ arm_func_start MOD04_021E0200
+MOD04_021E0200: ; 0x021E0200
+ stmdb sp!, {lr}
+ sub sp, sp, #4
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ cmp r0, #0
+ addeq sp, sp, #4
+ ldmeqia sp!, {pc}
+ ldr r0, [r0, #0x364]
+ cmp r0, #0
+ beq _021E023C
+ bl MOD04_02202280
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x364]
+_021E023C:
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r1, [r0]
+ strb r2, [r1, #0x36c]
+ ldr r0, [r0]
+ ldr r0, [r0, #0x438]
+ cmp r0, #0
+ beq _021E0270
+ bl MOD04_02203E80
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0, #0x438]
+_021E0270:
+ bl MOD04_02200D6C
+ bl MOD04_021FBE7C
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr ip, [r0]
+ ldr r0, [ip, #0x1c]
+ cmp r0, #0
+ beq _021E0324
+ mov r1, #0
+ mov r2, r1
+ mov r3, r1
+ add r0, ip, #0x1c
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ mov r3, r2
+ add r0, r0, #0x1c
+ mov r1, #3
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ mov r3, r2
+ add r0, r0, #0x1c
+ mov r1, #1
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r0, [r0]
+ mov r1, #2
+ add r0, r0, #0x1c
+ mov r3, r2
+ bl MOD04_021F0EB0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ add r0, r0, #0x1c
+ bl MOD04_021F0F18
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ add r0, r0, #0x1c
+ bl MOD04_021F0F64
+ mov r1, #0
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ str r1, [r0, #0x1c]
+_021E0324:
+ bl MOD04_021E0E48
+ bl MOD04_021E1D90
+ bl MOD04_021E854C
+ bl MOD04_021EA9C4
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _021E035C
+ bl MOD04_021FD704
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ ldr r0, [r0]
+ str r1, [r0]
+_021E035C:
+ ldr r0, _021E0370 ; =UNK04_0221053C
+ mov r1, #0
+ str r1, [r0]
+ add sp, sp, #4
+ ldmfd sp!, {pc}
+ .align 2, 0
+_021E0370: .word UNK04_0221053C
+ arm_func_end MOD04_021E0200
+
+ arm_func_start MOD04_021E0374
+MOD04_021E0374: ; 0x021E0374
+ stmdb sp!, {r4, r5, r6, lr}
+ sub sp, sp, #0x10
+ ldr ip, _021E05D8 ; =UNK04_0221053C
+ mov r6, r1
+ mov r5, r2
+ mov r4, r3
+ str r0, [ip]
+ bl MOD04_021DD6F0
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ mov r2, #0
+ ldr r1, [r0]
+ ldr r3, _021E05DC ; =MOD04_021E8F80
+ str r2, [r1]
+ ldr r1, [r0]
+ ldr r2, _021E05E0 ; =MOD04_021DEF60
+ str r3, [r1, #4]
+ ldr r1, [r0]
+ ldr ip, [sp, #0x24]
+ str r2, [r1, #8]
+ cmp ip, #0
+ ldr r2, [r0]
+ ldr r3, _021E05E4 ; =MOD04_021DEBE4
+ ldr r1, _021E05E8 ; =MOD04_021DEBD8
+ str r3, [r2, #0xc]
+ ldr r0, [r0]
+ ldr r3, [sp, #0x28]
+ str r1, [r0, #0x10]
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ moveq ip, #0x2000
+ ldr r0, [r0]
+ cmp r3, #0
+ str ip, [r0, #0x14]
+ moveq r3, #0x2000
+ ldr r1, _021E05D8 ; =UNK04_0221053C
+ mov r0, #0
+ ldr r2, [r1]
+ ldr ip, _021E05EC ; =UNK04_02210F94
+ str r3, [r2, #0x18]
+ ldr r2, [r1]
+ ldr r3, _021E05F0 ; =UNK04_02211094
+ str r0, [r2, #0x1c]
+ ldr r2, [r1]
+ str r6, [r2, #0x20]
+ ldr r2, [r1]
+ str r0, [r2, #0x24]
+ ldr r2, [r1]
+ str r0, [r2, #0x28]
+ ldr r2, [r1]
+ strb r0, [r2, #0x2c]
+ ldr r2, [r1]
+ strb r0, [r2, #0x2d]
+ ldr r2, [r1]
+ str r0, [r2, #0x64]
+ ldr r2, [r1]
+ str ip, [r2, #0x68]
+ ldr r2, [r1]
+ str r3, [r2, #0x6c]
+ ldr r2, [r1]
+ str r0, [r2, #0x70]
+ ldr r2, [r1]
+ str r0, [r2, #0x74]
+ ldr r2, [r1]
+ str r0, [r2, #0x78]
+ ldr r2, [r1]
+ str r0, [r2, #0x7c]
+ ldr r2, [r1]
+ str r0, [r2, #0x80]
+ ldr r2, [r1]
+ str r0, [r2, #0x84]
+ ldr r2, [r1]
+ str r0, [r2, #0x88]
+ ldr r2, [r1]
+ str r0, [r2, #0x8c]
+ ldr r2, [r1]
+ str r0, [r2, #0x90]
+ ldr r1, [r1]
+ str r0, [r1, #0x94]
+ bl MOD04_021DF6CC
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ mov r3, r5
+ ldr r2, [r0]
+ ldr r1, [r6, #0x24]
+ ldr r0, _021E05F4 ; =MOD04_021DF304
+ str r1, [sp]
+ add r1, r2, #0x2e
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ mov r5, #0
+ add r0, r2, #0x98
+ mov r1, r6
+ add r2, r2, #0x1c
+ str r5, [sp, #0xc]
+ bl MOD04_021E1074
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ ldr r2, [sp, #0x30]
+ ldr r5, [r0]
+ ldr r3, [sp, #0x2c]
+ str r2, [sp]
+ add r0, r5, #0x2f8
+ add r1, r5, #0x1c
+ add r2, r5, #0x2e
+ bl MOD04_021E234C
+ ldr r0, _021E05D8 ; =UNK04_0221053C
+ ldr r1, _021E05EC ; =UNK04_02210F94
+ ldr r2, [r0]
+ ldr r0, _021E05F0 ; =UNK04_02211094
+ str r1, [sp]
+ str r0, [sp, #4]
+ ldr r1, [sp, #0x2c]
+ ldr r0, [sp, #0x30]
+ str r1, [sp, #8]
+ str r0, [sp, #0xc]
+ add r0, r2, #0x354
+ add r1, r2, #0x1c
+ add r3, r2, #4
+ bl MOD04_021EA368
+ ldr r1, _021E05D8 ; =UNK04_0221053C
+ ldr r0, _021E05F8 ; =0x000007D8
+ ldr r1, [r1]
+ add r0, r1, r0
+ bl MOD04_021EACB4
+ mov r0, r4
+ bl strlen
+ cmp r0, #0x100
+ movhs r5, #0xff
+ bhs _021E0578
+ mov r0, r4
+ bl strlen
+ mov r5, r0
+_021E0578:
+ ldr r1, _021E05EC ; =UNK04_02210F94
+ mov r0, r4
+ mov r2, r5
+ bl MI_CpuCopy8
+ ldr r0, [sp, #0x20]
+ ldr r1, _021E05EC ; =UNK04_02210F94
+ mov r2, #0
+ strb r2, [r1, r5]
+ bl strlen
+ cmp r0, #0x100
+ movhs r4, #0xff
+ bhs _021E05B4
+ ldr r0, [sp, #0x20]
+ bl strlen
+ mov r4, r0
+_021E05B4:
+ ldr r0, [sp, #0x20]
+ ldr r1, _021E05F0 ; =UNK04_02211094
+ mov r2, r4
+ bl MI_CpuCopy8
+ ldr r0, _021E05F0 ; =UNK04_02211094
+ mov r1, #0
+ strb r1, [r0, r4]
+ add sp, sp, #0x10
+ ldmia sp!, {r4, r5, r6, pc}
+ .align 2, 0
+_021E05D8: .word UNK04_0221053C
+_021E05DC: .word MOD04_021E8F80
+_021E05E0: .word MOD04_021DEF60
+_021E05E4: .word MOD04_021DEBE4
+_021E05E8: .word MOD04_021DEBD8
+_021E05EC: .word UNK04_02210F94
+_021E05F0: .word UNK04_02211094
+_021E05F4: .word MOD04_021DF304
+_021E05F8: .word 0x000007D8
+ arm_func_end MOD04_021E0374
+
+ .section .data
+
+ .global UNK04_0220D334
+UNK04_0220D334: ; 0x0220D334
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .global UNK04_0220D338
+UNK04_0220D338: ; 0x0220D338
+ .asciz "GPCM"
+
+ .balign 4, 0
+ .global UNK04_0220D340
+UNK04_0220D340: ; 0x0220D340
+ .asciz "MAT"
+
+ .balign 4, 0
+ .global UNK04_0220D344
+UNK04_0220D344: ; 0x0220D344
+ .asciz "SCM"
+
+ .balign 4, 0
+ .global UNK04_0220D348
+UNK04_0220D348: ; 0x0220D348
+ .asciz "SCN"
+
+ .balign 4, 0
+ .section .bss
+
+ .global UNK04_0221053C
+UNK04_0221053C: ; 0x0221053C
+ .space 0x4
+
+ .global UNK04_02210540
+UNK04_02210540: ; 0x02210540
+ .space 0x4
+
+ .global UNK04_02210544
+UNK04_02210544: ; 0x02210544
+ .space 0x80
+
+ .global UNK04_022105C4
+UNK04_022105C4: ; 0x022105C4
+ .space 0x100