summaryrefslogtreecommitdiff
path: root/arm9/modules/05/asm/mod05_021DC0B8.s
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-07-16 23:11:33 +0100
committerred031000 <rubenru09@aol.com>2020-07-16 23:11:33 +0100
commit82ee6e25d77af95d173f0aa64194e2013eda5a24 (patch)
tree19b5a59fa2d51bebc1c971ca3df51ae7c86728d3 /arm9/modules/05/asm/mod05_021DC0B8.s
parente0fe1b29c71eb85617647d0a114461039545d696 (diff)
mod05_021DC0B8
Diffstat (limited to 'arm9/modules/05/asm/mod05_021DC0B8.s')
-rw-r--r--arm9/modules/05/asm/mod05_021DC0B8.s10781
1 files changed, 10781 insertions, 0 deletions
diff --git a/arm9/modules/05/asm/mod05_021DC0B8.s b/arm9/modules/05/asm/mod05_021DC0B8.s
new file mode 100644
index 00000000..d660a9a4
--- /dev/null
+++ b/arm9/modules/05/asm/mod05_021DC0B8.s
@@ -0,0 +1,10781 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DC0B8
+MOD05_021DC0B8: ; 0x021DC0B8
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #4
+ mov r1, #0x18
+ bl AllocFromHeap
+ add r4, r0, #0
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021DC0CC:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DC0CC
+ add r0, r5, #0
+ bl MOD05_021DC554
+ str r0, [r4]
+ mov r1, #0
+ str r1, [r4, #4]
+ str r1, [r4, #8]
+ mov r0, #6
+ str r0, [r4, #0xc]
+ str r1, [r4, #0x14]
+ mov r0, #0x17
+ str r0, [r4, #0x10]
+ mov r0, #0x10
+ mov r1, #1
+ bl FUN_0201E6E4
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DC0F8
+MOD05_021DC0F8: ; 0x021DC0F8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x14]
+ cmp r0, #0
+ beq _021DC106
+ bl FUN_0200CAB4
+_021DC106:
+ add r0, r4, #0
+ bl MOD05_021DC594
+ add r2, r4, #0
+ mov r1, #0x18
+ mov r0, #0
+_021DC112:
+ strb r0, [r2]
+ add r2, r2, #1
+ sub r1, r1, #1
+ bne _021DC112
+ add r0, r4, #0
+ bl FreeToHeap
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DC124
+MOD05_021DC124: ; 0x021DC124
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0
+ cmp r0, #6
+ beq _021DC134
+ bl ErrorHandling
+_021DC134:
+ ldr r2, [r5, #4]
+ cmp r2, r4
+ beq _021DC170
+ ldr r0, [r5]
+ mov r1, #8
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC14A
+ bl ErrorHandling
+_021DC14A:
+ ldr r0, [r5]
+ mov r1, #0
+ add r2, r4, #0
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC15C
+ bl ErrorHandling
+_021DC15C:
+ ldr r0, [r5]
+ mov r1, #3
+ add r2, r4, #0
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC16E
+ bl ErrorHandling
+_021DC16E:
+ str r4, [r5, #4]
+_021DC170:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DC174
+MOD05_021DC174: ; 0x021DC174
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0xc]
+ add r4, r1, #0
+ cmp r0, #6
+ beq _021DC186
+ str r4, [r5, #0x10]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DC186:
+ ldr r0, [r5, #4]
+ cmp r0, r4
+ bne _021DC190
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DC190:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ beq _021DC19A
+ bl ErrorHandling
+_021DC19A:
+ str r4, [r5, #8]
+ ldr r0, [r5, #4]
+ add r1, r4, #0
+ bl MOD05_021DC368
+ cmp r0, #0
+ bne _021DC1B6
+ ldr r0, _021DC1C8 ; =MOD05_021DC1D4
+ mov r2, #0
+ add r1, r5, #0
+ str r2, [r5, #0xc]
+ bl FUN_0200CA44
+ b _021DC1C2
+_021DC1B6:
+ ldr r0, _021DC1CC ; =MOD05_021DC2A4
+ mov r2, #0
+ add r1, r5, #0
+ str r2, [r5, #0xc]
+ bl FUN_0200CA44
+_021DC1C2:
+ str r0, [r5, #0x14]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021DC1C8: .word MOD05_021DC1D4
+_021DC1CC: .word MOD05_021DC2A4
+
+ thumb_func_start MOD05_021DC1D0
+MOD05_021DC1D0: ; 0x021DC1D0
+ ldr r0, [r0, #4]
+ bx lr
+
+ thumb_func_start MOD05_021DC1D4
+MOD05_021DC1D4: ; 0x021DC1D4
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ cmp r1, #5
+ bhi _021DC2A2
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DC1EA: ; jump table
+ .short _021DC1F6 - _021DC1EA - 2 ; case 0
+ .short _021DC210 - _021DC1EA - 2 ; case 1
+ .short _021DC236 - _021DC1EA - 2 ; case 2
+ .short _021DC250 - _021DC1EA - 2 ; case 3
+ .short _021DC264 - _021DC1EA - 2 ; case 4
+ .short _021DC286 - _021DC1EA - 2 ; case 5
+_021DC1F6:
+ ldr r0, [r4]
+ ldr r2, [r4, #4]
+ mov r1, #5
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC208
+ bl ErrorHandling
+_021DC208:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+_021DC210:
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ bl MOD05_021DC6C0
+ cmp r0, #3
+ beq _021DC2A2
+ ldr r0, [r4]
+ ldr r2, [r4, #4]
+ mov r1, #8
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC22E
+ bl ErrorHandling
+_021DC22E:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+_021DC236:
+ ldr r0, [r4]
+ ldr r2, [r4, #8]
+ mov r1, #1
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC248
+ bl ErrorHandling
+_021DC248:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+_021DC250:
+ ldr r0, [r4]
+ ldr r1, [r4, #8]
+ bl MOD05_021DC6C0
+ cmp r0, #1
+ beq _021DC2A2
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+_021DC264:
+ ldr r0, [r4]
+ ldr r2, [r4, #8]
+ mov r1, #2
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC276
+ bl ErrorHandling
+_021DC276:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ ldr r0, [r4, #8]
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #8]
+ pop {r4, pc}
+_021DC286:
+ mov r1, #6
+ str r1, [r4, #0xc]
+ mov r1, #0
+ str r1, [r4, #0x14]
+ bl FUN_0200CAB4
+ ldr r1, [r4, #0x10]
+ cmp r1, #0x17
+ beq _021DC2A2
+ add r0, r4, #0
+ bl MOD05_021DC174
+ mov r0, #0x17
+ str r0, [r4, #0x10]
+_021DC2A2:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021DC2A4
+MOD05_021DC2A4: ; 0x021DC2A4
+ push {r4, lr}
+ add r4, r1, #0
+ ldr r1, [r4, #0xc]
+ cmp r1, #4
+ bhi _021DC366
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DC2BA: ; jump table
+ .short _021DC2C4 - _021DC2BA - 2 ; case 0
+ .short _021DC2DE - _021DC2BA - 2 ; case 1
+ .short _021DC2F2 - _021DC2BA - 2 ; case 2
+ .short _021DC31E - _021DC2BA - 2 ; case 3
+ .short _021DC344 - _021DC2BA - 2 ; case 4
+_021DC2C4:
+ ldr r0, [r4]
+ ldr r2, [r4, #8]
+ mov r1, #1
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC2D6
+ bl ErrorHandling
+_021DC2D6:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+_021DC2DE:
+ ldr r0, [r4]
+ ldr r1, [r4, #8]
+ bl MOD05_021DC6C0
+ cmp r0, #1
+ beq _021DC366
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+_021DC2F2:
+ ldr r0, [r4]
+ ldr r2, [r4, #4]
+ mov r1, #7
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC304
+ bl ErrorHandling
+_021DC304:
+ ldr r0, [r4]
+ ldr r2, [r4, #8]
+ mov r1, #4
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC316
+ bl ErrorHandling
+_021DC316:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+_021DC31E:
+ ldr r0, [r4]
+ ldr r1, [r4, #4]
+ bl MOD05_021DC6C0
+ cmp r0, #3
+ beq _021DC366
+ ldr r0, [r4]
+ ldr r2, [r4, #4]
+ mov r1, #8
+ bl MOD05_021DC608
+ cmp r0, #0
+ bne _021DC33C
+ bl ErrorHandling
+_021DC33C:
+ ldr r0, [r4, #0xc]
+ add r0, r0, #1
+ str r0, [r4, #0xc]
+ pop {r4, pc}
+_021DC344:
+ ldr r1, [r4, #8]
+ mov r2, #0
+ str r1, [r4, #4]
+ str r2, [r4, #8]
+ mov r1, #6
+ str r1, [r4, #0xc]
+ str r2, [r4, #0x14]
+ bl FUN_0200CAB4
+ ldr r1, [r4, #0x10]
+ cmp r1, #0x17
+ beq _021DC366
+ add r0, r4, #0
+ bl MOD05_021DC174
+ mov r0, #0x17
+ str r0, [r4, #0x10]
+_021DC366:
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021DC368
+MOD05_021DC368: ; 0x021DC368
+ mov r2, #0
+ cmp r0, #7
+ bgt _021DC37E
+ cmp r0, #5
+ blt _021DC3BC
+ beq _021DC384
+ cmp r0, #6
+ beq _021DC394
+ cmp r0, #7
+ beq _021DC3AE
+ b _021DC3BC
+_021DC37E:
+ cmp r0, #0x15
+ beq _021DC3A4
+ b _021DC3BC
+_021DC384:
+ cmp r1, #6
+ beq _021DC390
+ cmp r1, #0x15
+ beq _021DC390
+ cmp r1, #7
+ bne _021DC3BC
+_021DC390:
+ mov r2, #1
+ b _021DC3BC
+_021DC394:
+ cmp r1, #5
+ beq _021DC3A0
+ cmp r1, #0x15
+ beq _021DC3A0
+ cmp r1, #7
+ bne _021DC3BC
+_021DC3A0:
+ mov r2, #1
+ b _021DC3BC
+_021DC3A4:
+ sub r0, r1, #5
+ cmp r0, #2
+ bhi _021DC3BC
+ mov r2, #1
+ b _021DC3BC
+_021DC3AE:
+ cmp r1, #5
+ beq _021DC3BA
+ cmp r1, #0x15
+ beq _021DC3BA
+ cmp r1, #6
+ bne _021DC3BC
+_021DC3BA:
+ mov r2, #1
+_021DC3BC:
+ add r0, r2, #0
+ bx lr
+
+ thumb_func_start MOD05_021DC3C0
+MOD05_021DC3C0: ; 0x021DC3C0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ ldr r1, _021DC46C ; =0xFFFFF000
+ add r6, r0, #0
+ add r0, #0x14
+ bl FUN_0202134C
+ mov r0, #0
+ add r3, r6, #0
+ str r0, [sp, #0xc]
+ str r0, [sp, #0x10]
+ mov r0, #0xff
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x14]
+ mov r0, #3
+ lsl r0, r0, #0x12
+ str r0, [sp, #0x18]
+ add r0, r6, #0
+ add r0, #0xac
+ add r1, sp, #0xc
+ mov r2, #1
+ add r3, #0x14
+ bl FUN_02009FD8
+ mov r4, #0
+ add r5, r6, #0
+ mov r7, #0x17
+_021DC3F6:
+ add r0, r7, #0
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_02008DEC
+ add r4, r4, #1
+ stmia r5!, {r0}
+ cmp r4, #4
+ blt _021DC3F6
+ bl FUN_0200965C
+ add r1, r0, #0
+ mov r0, #4
+ lsl r1, r1, #2
+ bl AllocFromHeap
+ str r0, [r6, #0x10]
+ mov r1, #0
+ mov r2, #0x39
+ bl MOD05_021DC480
+ ldr r0, [r6, #0x10]
+ mov r1, #1
+ mov r2, #0x3a
+ bl MOD05_021DC480
+ ldr r0, [r6, #0x10]
+ mov r1, #2
+ mov r2, #0x37
+ bl MOD05_021DC480
+ ldr r0, [r6, #0x10]
+ mov r1, #3
+ mov r2, #0x38
+ bl MOD05_021DC480
+ mov r0, #0x40
+ str r0, [sp]
+ add r0, r6, #0
+ add r0, #0x14
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ add r0, sp, #0
+ bl FUN_0201FCB0
+ add r1, r6, #0
+ add r1, #0xf4
+ str r0, [r1]
+ ldr r0, _021DC470 ; =MOD05_021DC474
+ add r1, r6, #0
+ mov r2, #0xa
+ bl FUN_0200CA44
+ add r6, #0xf8
+ str r0, [r6]
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DC46C: .word 0xFFFFF000
+_021DC470: .word MOD05_021DC474
+
+ thumb_func_start MOD05_021DC474
+MOD05_021DC474: ; 0x021DC474
+ ldr r3, _021DC47C ; =FUN_0201FDEC
+ add r1, #0xf4
+ ldr r0, [r1]
+ bx r3
+ .balign 4, 0
+_021DC47C: .word FUN_0201FDEC
+
+ thumb_func_start MOD05_021DC480
+MOD05_021DC480: ; 0x021DC480
+ push {r3, r4, r5, lr}
+ add r5, r2, #0
+ bl FUN_02009660
+ add r4, r0, #0
+ mov r0, #1
+ str r0, [sp]
+ mov r0, #0x41
+ add r1, r5, #0
+ mov r2, #0
+ mov r3, #4
+ bl FUN_02006C98
+ add r5, r0, #0
+ add r1, r4, #0
+ mov r2, #4
+ bl FUN_02009668
+ add r0, r5, #0
+ bl FreeToHeap
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DC4AC
+MOD05_021DC4AC: ; 0x021DC4AC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_021DC4B4:
+ ldr r0, [r6, #0x10]
+ add r1, r4, #0
+ bl FUN_02009660
+ bl FUN_020096B4
+ ldr r0, [r5]
+ bl FUN_02008E2C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _021DC4B4
+ ldr r0, [r6, #0x10]
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [r6, #0x10]
+ add r0, r6, #0
+ add r0, #0xf4
+ ldr r0, [r0]
+ bl FUN_0201FD58
+ add r0, r6, #0
+ mov r1, #0
+ add r0, #0xf4
+ str r1, [r0]
+ add r0, r6, #0
+ add r0, #0xf8
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ mov r0, #0
+ add r6, #0xf8
+ str r0, [r6]
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021DC4FC
+MOD05_021DC4FC: ; 0x021DC4FC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4]
+ ldr r1, _021DC54C ; =0x0013F000
+ cmp r0, r1
+ ble _021DC512
+ bl _s32_div_f
+ str r1, [r4]
+ b _021DC51C
+_021DC512:
+ ldr r2, _021DC550 ; =0xFFFC0000
+ cmp r0, r2
+ bge _021DC51C
+ add r0, r0, r1
+ str r0, [r4]
+_021DC51C:
+ mov r1, #1
+ ldr r3, [r4, #4]
+ lsl r1, r1, #0x14
+ cmp r3, r1
+ ble _021DC536
+ lsr r2, r3, #0x1f
+ lsl r1, r3, #0xc
+ sub r1, r1, r2
+ mov r0, #0xc
+ ror r1, r0
+ add r0, r2, r1
+ str r0, [r4, #4]
+ b _021DC540
+_021DC536:
+ ldr r0, _021DC550 ; =0xFFFC0000
+ cmp r3, r0
+ bge _021DC540
+ add r0, r3, r1
+ str r0, [r4, #4]
+_021DC540:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl FUN_02020044
+ pop {r3, r4, r5, pc}
+ nop
+_021DC54C: .word 0x0013F000
+_021DC550: .word 0xFFFC0000
+
+ thumb_func_start MOD05_021DC554
+MOD05_021DC554: ; 0x021DC554
+ push {r3, r4, r5, lr}
+ mov r1, #0x43
+ add r5, r0, #0
+ mov r0, #4
+ lsl r1, r1, #2
+ bl AllocFromHeap
+ add r4, r0, #0
+ mov r0, #0x41
+ lsl r0, r0, #2
+ str r5, [r4, r0]
+ add r0, r4, #0
+ add r0, #8
+ bl MOD05_021DC3C0
+ ldr r0, _021DC58C ; =UNK05_021FD2D4
+ mov r1, #4
+ str r0, [r4]
+ ldr r0, _021DC590 ; =UNK05_021F689C
+ str r0, [r4, #4]
+ mov r0, #0x41
+ bl NARC_ctor
+ mov r1, #0x42
+ lsl r1, r1, #2
+ str r0, [r4, r1]
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021DC58C: .word UNK05_021FD2D4
+_021DC590: .word UNK05_021F689C
+
+ thumb_func_start MOD05_021DC594
+MOD05_021DC594: ; 0x021DC594
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021DC5FE
+ mov r5, #0
+_021DC5A2:
+ ldr r0, [r4]
+ add r1, r5, #0
+ bl MOD05_021DCA94
+ add r5, r5, #1
+ cmp r5, #0x17
+ blt _021DC5A2
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ mov r0, #0x41
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ mov r1, #1
+ ldr r0, [r0, #0x44]
+ add r3, r2, #0
+ bl MOD05_021DBA40
+ ldr r1, _021DC604 ; =0x04000008
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #1
+ orr r0, r2
+ strh r0, [r1]
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r0, [r4]
+ add r0, #8
+ bl MOD05_021DC4AC
+ mov r0, #0x42
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ bl NARC_dtor
+ ldr r1, [r4]
+ mov r0, #4
+ bl FUN_02016A8C
+ mov r0, #0
+ str r0, [r4]
+_021DC5FE:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_021DC604: .word 0x04000008
+
+ thumb_func_start MOD05_021DC608
+MOD05_021DC608: ; 0x021DC608
+ push {r4, r5, r6, lr}
+ add r4, r2, #0
+ add r6, r0, #0
+ mov r5, #1
+ cmp r4, #0x17
+ ble _021DC618
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021DC618:
+ cmp r1, #8
+ bhi _021DC6BC
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DC628: ; jump table
+ .short _021DC63A - _021DC628 - 2 ; case 0
+ .short _021DC644 - _021DC628 - 2 ; case 1
+ .short _021DC64E - _021DC628 - 2 ; case 2
+ .short _021DC65C - _021DC628 - 2 ; case 3
+ .short _021DC66A - _021DC628 - 2 ; case 4
+ .short _021DC69A - _021DC628 - 2 ; case 5
+ .short _021DC6A4 - _021DC628 - 2 ; case 6
+ .short _021DC6AC - _021DC628 - 2 ; case 7
+ .short _021DC6B6 - _021DC628 - 2 ; case 8
+_021DC63A:
+ add r1, r4, #0
+ bl MOD05_021DC8BC
+ add r5, r0, #0
+ b _021DC6BC
+_021DC644:
+ add r1, r4, #0
+ bl MOD05_021DC90C
+ add r5, r0, #0
+ b _021DC6BC
+_021DC64E:
+ add r1, r4, #0
+ mov r2, #0
+ add r3, r5, #0
+ bl MOD05_021DC948
+ add r5, r0, #0
+ b _021DC6BC
+_021DC65C:
+ add r1, r4, #0
+ mov r2, #2
+ add r3, r5, #0
+ bl MOD05_021DC948
+ add r5, r0, #0
+ b _021DC6BC
+_021DC66A:
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r6, r0]
+ ldr r0, [r0, #0x44]
+ bl MOD05_021DBA30
+ cmp r0, #1
+ bne _021DC68A
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #0
+ mov r3, #2
+ bl MOD05_021DC948
+ add r5, r0, #0
+ b _021DC6BC
+_021DC68A:
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #0
+ add r3, r5, #0
+ bl MOD05_021DC948
+ add r5, r0, #0
+ b _021DC6BC
+_021DC69A:
+ add r1, r4, #0
+ add r2, r5, #0
+ bl MOD05_021DCA44
+ b _021DC6BC
+_021DC6A4:
+ add r1, r4, #0
+ bl MOD05_021DCA6C
+ b _021DC6BC
+_021DC6AC:
+ add r1, r4, #0
+ mov r2, #0
+ bl MOD05_021DCA44
+ b _021DC6BC
+_021DC6B6:
+ add r1, r4, #0
+ bl MOD05_021DCA94
+_021DC6BC:
+ add r0, r5, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021DC6C0
+MOD05_021DC6C0: ; 0x021DC6C0
+ cmp r1, #0x17
+ blt _021DC6C8
+ mov r0, #0
+ bx lr
+_021DC6C8:
+ ldr r2, [r0]
+ mov r0, #0x24
+ mul r0, r1
+ add r0, r2, r0
+ ldr r0, [r0, #0x14]
+ bx lr
+
+ thumb_func_start MOD05_021DC6D4
+MOD05_021DC6D4: ; 0x021DC6D4
+ push {r3, lr}
+ add r3, r0, #0
+ str r1, [sp]
+ ldr r0, _021DC6E8 ; =0x04000050
+ mov r1, #4
+ mov r2, #0x21
+ bl G2x_SetBlendAlpha_
+ pop {r3, pc}
+ nop
+_021DC6E8: .word 0x04000050
+
+ thumb_func_start MOD05_021DC6EC
+MOD05_021DC6EC: ; 0x021DC6EC
+ str r1, [r0]
+ str r1, [r0, #4]
+ sub r1, r2, r1
+ str r1, [r0, #8]
+ str r3, [r0, #0x10]
+ mov r1, #0
+ str r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start MOD05_021DC6FC
+MOD05_021DC6FC: ; 0x021DC6FC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #0xc]
+ mul r0, r1
+ ldr r1, [r4, #0x10]
+ bl _s32_div_f
+ ldr r1, [r4, #4]
+ add r0, r0, r1
+ str r0, [r4]
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021DC722
+ str r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+_021DC722:
+ str r1, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021DC728
+MOD05_021DC728: ; 0x021DC728
+ str r1, [r0]
+ str r1, [r0, #4]
+ sub r1, r2, r1
+ str r1, [r0, #8]
+ strh r3, [r0, #0xe]
+ mov r1, #0
+ strh r1, [r0, #0xc]
+ bx lr
+
+ thumb_func_start MOD05_021DC738
+MOD05_021DC738: ; 0x021DC738
+ push {r4, lr}
+ add r4, r0, #0
+ mov r2, #0xc
+ ldrsh r2, [r4, r2]
+ ldr r0, [r4, #8]
+ asr r1, r0, #0x1f
+ asr r3, r2, #0x1f
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ mov r1, #0xe
+ ldrsh r1, [r4, r1]
+ bl FX_Div
+ ldr r1, [r4, #4]
+ add r0, r0, r1
+ str r0, [r4]
+ mov r0, #0xe
+ ldrsh r1, [r4, r0]
+ mov r0, #0xc
+ ldrsh r0, [r4, r0]
+ add r0, r0, #1
+ cmp r0, r1
+ bgt _021DC77C
+ strh r0, [r4, #0xc]
+ mov r0, #0
+ pop {r4, pc}
+_021DC77C:
+ strh r1, [r4, #0xc]
+ mov r0, #1
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DC784
+MOD05_021DC784: ; 0x021DC784
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r6, r2, #0
+ bl MOD05_021DCDA0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021DCDD0
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021DCE00
+ add r0, r5, #0
+ add r1, r4, #0
+ add r2, r6, #0
+ bl MOD05_021DCE3C
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021DC7B0
+MOD05_021DC7B0: ; 0x021DC7B0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r4, r2, #0
+ add r6, r1, #0
+ add r7, r3, #0
+ ldr r5, [sp, #0x40]
+ bl FUN_02009660
+ str r0, [sp, #0x18]
+ add r1, r4, #0
+ bl FUN_02009710
+ str r0, [sp, #0x1c]
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0
+ bl FUN_0200973C
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0
+ bl FUN_02009768
+ str r0, [sp, #0x24]
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0
+ bl FUN_0200979C
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x18]
+ add r1, r4, #0
+ bl FUN_020096DC
+ cmp r6, #3
+ bhi _021DC87A
+ add r1, r6, r6
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DC800: ; jump table
+ .short _021DC808 - _021DC800 - 2 ; case 0
+ .short _021DC826 - _021DC800 - 2 ; case 1
+ .short _021DC848 - _021DC800 - 2 ; case 2
+ .short _021DC862 - _021DC800 - 2 ; case 3
+_021DC808:
+ str r0, [sp]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x44]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #0xc]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl FUN_0200923C
+ str r0, [sp, #0x14]
+ b _021DC87A
+_021DC826:
+ str r0, [sp]
+ ldr r0, [sp, #0x24]
+ ldr r2, [sp, #0x1c]
+ str r0, [sp, #4]
+ ldr r0, [sp, #0x28]
+ ldr r3, [sp, #0x20]
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x44]
+ add r1, r5, #0
+ str r0, [sp, #0x10]
+ add r0, r7, #0
+ bl FUN_020092F8
+ str r0, [sp, #0x14]
+ b _021DC87A
+_021DC848:
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl FUN_02009358
+ str r0, [sp, #0x14]
+ b _021DC87A
+_021DC862:
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ mov r0, #4
+ str r0, [sp, #8]
+ ldr r2, [sp, #0x1c]
+ ldr r3, [sp, #0x20]
+ add r0, r7, #0
+ add r1, r5, #0
+ bl FUN_02009358
+ str r0, [sp, #0x14]
+_021DC87A:
+ ldr r0, [sp, #0x14]
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021DC880
+MOD05_021DC880: ; 0x021DC880
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ add r4, r2, #0
+ cmp r1, r0
+ beq _021DC8BA
+ ldr r0, [r4]
+ cmp r0, #0
+ beq _021DC898
+ bl FUN_02009C0C
+_021DC898:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021DC8A2
+ bl FUN_02009E04
+_021DC8A2:
+ mov r6, #0
+_021DC8A4:
+ ldr r1, [r4]
+ cmp r1, #0
+ beq _021DC8B0
+ ldr r0, [r5, #8]
+ bl FUN_02009490
+_021DC8B0:
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #4
+ blt _021DC8A4
+_021DC8BA:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021DC8BC
+MOD05_021DC8BC: ; 0x021DC8BC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r2, #0x24
+ ldr r3, [r5]
+ mul r2, r1
+ add r4, r3, r2
+ ldr r1, [r4, #0xc]
+ cmp r1, #0
+ bne _021DC906
+ add r1, r4, #0
+ bl MOD05_021DCD04
+ cmp r0, #0
+ bne _021DC8DC
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021DC8DC:
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021DCBFC
+ cmp r0, #0
+ bne _021DC8F4
+ ldr r0, [r4, #0xc]
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [r4, #0xc]
+ pop {r3, r4, r5, pc}
+_021DC8F4:
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ str r1, [r0, #8]
+ ldr r1, [r4, #4]
+ add r0, r5, #0
+ bl MOD05_021DCBE0
+ mov r0, #2
+ str r0, [r4, #0x14]
+_021DC906:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DC90C
+MOD05_021DC90C: ; 0x021DC90C
+ push {r4, lr}
+ mov r2, #0x24
+ ldr r3, [r0]
+ mul r2, r1
+ add r4, r3, r2
+ ldr r1, [r4, #0xc]
+ cmp r1, #0
+ beq _021DC920
+ mov r0, #1
+ pop {r4, pc}
+_021DC920:
+ add r1, r4, #0
+ bl MOD05_021DCD04
+ cmp r0, #0
+ bne _021DC92E
+ mov r0, #0
+ pop {r4, pc}
+_021DC92E:
+ ldr r0, _021DC944 ; =MOD05_021DCC38
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ str r0, [r4, #0x1c]
+ mov r0, #1
+ str r0, [r4, #0x14]
+ mov r1, #0
+ str r1, [r4, #0x18]
+ pop {r4, pc}
+ .balign 4, 0
+_021DC944: .word MOD05_021DCC38
+
+ thumb_func_start MOD05_021DC948
+MOD05_021DC948: ; 0x021DC948
+ push {r4, r5, r6, lr}
+ add r5, r2, #0
+ add r6, r3, #0
+ ldr r3, [r0]
+ mov r0, #0x24
+ add r2, r1, #0
+ mul r2, r0
+ ldr r1, [r3, r2]
+ sub r0, #0x25
+ add r4, r3, r2
+ cmp r1, r0
+ beq _021DC96A
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ bne _021DC96A
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021DC96A:
+ ldr r1, [r4, #0xc]
+ cmp r1, #0
+ bne _021DC974
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021DC974:
+ ldr r0, [r4, #0x14]
+ cmp r0, #2
+ beq _021DC97E
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021DC97E:
+ ldr r0, [r4, #0x20]
+ mov r2, #4
+ bl FUN_0200CA44
+ ldr r1, [r4, #0xc]
+ ldr r3, _021DCA34 ; =0x00000F48
+ str r0, [r1, r3]
+ ldr r0, [r4, #0xc]
+ ldr r0, [r0, r3]
+ cmp r0, #0
+ bne _021DC998
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+_021DC998:
+ mov r0, #3
+ str r0, [r4, #0x14]
+ add r0, r3, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x1a
+ strh r5, [r1, r0]
+ add r0, r3, #0
+ ldr r1, [r4, #0xc]
+ mov r2, #0
+ add r0, #0x1e
+ strh r2, [r1, r0]
+ ldr r1, [r4, #0xc]
+ add r0, r1, #0
+ add r0, #0xc
+ str r0, [r1, #0x40]
+ ldr r1, [r4, #0xc]
+ add r0, r1, #0
+ add r0, #0xc
+ str r0, [r1, #0x44]
+ add r0, r3, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x1c
+ strh r6, [r1, r0]
+ add r0, r3, #0
+ ldr r1, [r4, #0xc]
+ add r0, #0x14
+ str r2, [r1, r0]
+ ldr r1, [r4, #0xc]
+ add r0, r3, #4
+ ldr r6, _021DCA38 ; =UNK_021CEF70
+ add r5, r1, r0
+ ldmia r6!, {r0, r1}
+ stmia r5!, {r0, r1}
+ ldr r0, [r6]
+ str r0, [r5]
+ ldr r1, [r4, #8]
+ cmp r1, #0
+ ble _021DC9FE
+ mov r0, #4
+ bl AllocFromHeap
+ ldr r2, [r4, #0xc]
+ ldr r1, _021DCA3C ; =0x00000F58
+ str r0, [r2, r1]
+ ldr r0, [r4, #0xc]
+ ldr r2, [r4, #8]
+ ldr r0, [r0, r1]
+ mov r1, #0
+ bl memset
+ b _021DCA04
+_021DC9FE:
+ ldr r0, [r4, #0xc]
+ add r3, #0x10
+ str r2, [r0, r3]
+_021DCA04:
+ mov r0, #0
+ ldr r1, [r4, #4]
+ mvn r0, r0
+ cmp r1, r0
+ beq _021DCA30
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r2, _021DCA40 ; =0x0400000C
+ mov r1, #3
+ ldrh r3, [r2]
+ mov r0, #1
+ bic r3, r1
+ orr r0, r3
+ strh r0, [r2]
+ sub r2, r2, #4
+ ldrh r3, [r2]
+ mov r0, #2
+ bic r3, r1
+ orr r0, r3
+ strh r0, [r2]
+_021DCA30:
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021DCA34: .word 0x00000F48
+_021DCA38: .word UNK_021CEF70
+_021DCA3C: .word 0x00000F58
+_021DCA40: .word 0x0400000C
+
+ thumb_func_start MOD05_021DCA44
+MOD05_021DCA44: ; 0x021DCA44
+ push {r3, r4}
+ ldr r3, [r0]
+ mov r0, #0x24
+ mul r0, r1
+ add r4, r3, r0
+ ldr r0, [r4, #0x14]
+ cmp r0, #3
+ bne _021DCA62
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DCA68 ; =0x00000F66
+ mov r3, #5
+ strh r3, [r1, r0]
+ ldr r1, [r4, #0xc]
+ sub r0, r0, #2
+ strh r2, [r1, r0]
+_021DCA62:
+ pop {r3, r4}
+ bx lr
+ nop
+_021DCA68: .word 0x00000F66
+
+ thumb_func_start MOD05_021DCA6C
+MOD05_021DCA6C: ; 0x021DCA6C
+ push {r4, lr}
+ mov r2, #0x24
+ ldr r3, [r0]
+ mul r2, r1
+ add r4, r3, r2
+ bl MOD05_021DC6C0
+ cmp r0, #3
+ bne _021DCA8E
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DCA90 ; =0x00000F62
+ mov r2, #5
+ strh r2, [r1, r0]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x20]
+ mov r0, #0
+ blx r2
+_021DCA8E:
+ pop {r4, pc}
+ .balign 4, 0
+_021DCA90: .word 0x00000F62
+
+ thumb_func_start MOD05_021DCA94
+MOD05_021DCA94: ; 0x021DCA94
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r3, [r5]
+ mov r0, #0x24
+ add r2, r1, #0
+ mul r2, r0
+ add r4, r3, r2
+ ldr r1, [r4, #4]
+ sub r0, #0x25
+ cmp r1, r0
+ beq _021DCAD2
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r0, _021DCB5C ; =0x0400000C
+ mov r2, #3
+ ldrh r3, [r0]
+ mov r1, #3
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0]
+ sub r3, r0, #4
+ ldrh r6, [r3]
+ mov r1, #1
+ add r0, #0x44
+ bic r6, r2
+ orr r1, r6
+ strh r1, [r3]
+ mov r1, #0
+ strh r1, [r0]
+_021DCAD2:
+ ldr r2, [r4, #0x10]
+ cmp r2, #0
+ beq _021DCAFA
+ ldr r1, [r4]
+ add r0, r5, #0
+ bl MOD05_021DC880
+ ldr r1, [r4, #0x10]
+ mov r0, #4
+ bl FUN_02016A8C
+ mov r0, #0
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _021DCAFA
+ bl FUN_0200CAB4
+ mov r0, #0
+ str r0, [r4, #0x1c]
+_021DCAFA:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021DCB58
+ add r0, #0xc
+ bl MOD05_021DD130
+ ldr r0, [r4, #0xc]
+ ldr r1, _021DCB60 ; =0x00000F5C
+ ldr r1, [r0, r1]
+ cmp r1, #1
+ bne _021DCB14
+ bl MOD05_021E0FD0
+_021DCB14:
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DCB64 ; =0x00000F58
+ ldr r1, [r1, r0]
+ cmp r1, #0
+ beq _021DCB2C
+ mov r0, #4
+ bl FUN_02016A8C
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DCB64 ; =0x00000F58
+ mov r2, #0
+ str r2, [r1, r0]
+_021DCB2C:
+ ldr r0, [r4, #0x14]
+ cmp r0, #1
+ bne _021DCB3E
+ ldr r0, [r4, #0x1c]
+ cmp r0, #0
+ beq _021DCB4C
+ bl FUN_0200CAB4
+ b _021DCB4C
+_021DCB3E:
+ cmp r0, #3
+ bne _021DCB4C
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DCB68 ; =0x00000F48
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+_021DCB4C:
+ ldr r1, [r4, #0xc]
+ mov r0, #4
+ bl FUN_02016A8C
+ mov r0, #0
+ str r0, [r4, #0xc]
+_021DCB58:
+ pop {r4, r5, r6, pc}
+ nop
+_021DCB5C: .word 0x0400000C
+_021DCB60: .word 0x00000F5C
+_021DCB64: .word 0x00000F58
+_021DCB68: .word 0x00000F48
+
+ thumb_func_start MOD05_021DCB6C
+MOD05_021DCB6C: ; 0x021DCB6C
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ mov r0, #0
+ ldr r1, [r4, #4]
+ mvn r0, r0
+ cmp r1, r0
+ beq _021DCBA2
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ ldr r0, _021DCBD4 ; =0x0400000C
+ mov r2, #3
+ ldrh r3, [r0]
+ mov r1, #3
+ bic r3, r2
+ orr r1, r3
+ strh r1, [r0]
+ sub r3, r0, #4
+ ldrh r5, [r3]
+ mov r1, #1
+ add r0, #0x44
+ bic r5, r2
+ orr r1, r5
+ strh r1, [r3]
+ mov r1, #0
+ strh r1, [r0]
+_021DCBA2:
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021DCBD0
+ add r0, #0xc
+ bl MOD05_021DD130
+ ldr r0, [r4, #0xc]
+ ldr r1, _021DCBD8 ; =0x00000F5C
+ ldr r1, [r0, r1]
+ cmp r1, #1
+ bne _021DCBBC
+ bl MOD05_021E0FD0
+_021DCBBC:
+ ldr r0, [r4, #0x14]
+ cmp r0, #3
+ bne _021DCBD0
+ ldr r1, [r4, #0xc]
+ ldr r0, _021DCBDC ; =0x00000F48
+ ldr r0, [r1, r0]
+ bl FUN_0200CAB4
+ mov r0, #2
+ str r0, [r4, #0x14]
+_021DCBD0:
+ pop {r3, r4, r5, pc}
+ nop
+_021DCBD4: .word 0x0400000C
+_021DCBD8: .word 0x00000F5C
+_021DCBDC: .word 0x00000F48
+
+ thumb_func_start MOD05_021DCBE0
+MOD05_021DCBE0: ; 0x021DCBE0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ bl MOD05_021DCECC
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021DCF14
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021DCF68
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DCBFC
+MOD05_021DCBFC: ; 0x021DCBFC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r0, #0
+ ldr r1, [r4]
+ mvn r0, r0
+ cmp r1, r0
+ beq _021DCC32
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ bne _021DCC32
+ add r0, r4, #0
+ bl MOD05_021DCD68
+ cmp r0, #0
+ bne _021DCC20
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021DCC20:
+ ldr r1, [r4]
+ ldr r2, [r4, #0x10]
+ add r0, r5, #0
+ bl MOD05_021DC784
+ add r0, r5, #0
+ add r1, r4, #0
+ bl MOD05_021DCE74
+_021DCC32:
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DCC38
+MOD05_021DCC38: ; 0x021DCC38
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ ldr r2, [r4, #0x18]
+ ldr r0, [r0]
+ cmp r2, #8
+ bhi _021DCD00
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DCC54: ; jump table
+ .short _021DCC66 - _021DCC54 - 2 ; case 0
+ .short _021DCC7C - _021DCC54 - 2 ; case 1
+ .short _021DCC8C - _021DCC54 - 2 ; case 2
+ .short _021DCC9A - _021DCC54 - 2 ; case 3
+ .short _021DCCAA - _021DCC54 - 2 ; case 4
+ .short _021DCCB8 - _021DCC54 - 2 ; case 5
+ .short _021DCCC8 - _021DCC54 - 2 ; case 6
+ .short _021DCCD6 - _021DCC54 - 2 ; case 7
+ .short _021DCCE6 - _021DCC54 - 2 ; case 8
+_021DCC66:
+ add r0, r4, #0
+ bl MOD05_021DCD68
+ cmp r0, #0
+ bne _021DCC74
+ bl ErrorHandling
+_021DCC74:
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r3, r4, r5, pc}
+_021DCC7C:
+ ldr r1, [r4]
+ ldr r2, [r4, #0x10]
+ bl MOD05_021DCDA0
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r3, r4, r5, pc}
+_021DCC8C:
+ ldr r1, [r4, #4]
+ bl MOD05_021DCECC
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r3, r4, r5, pc}
+_021DCC9A:
+ ldr r1, [r4]
+ ldr r2, [r4, #0x10]
+ bl MOD05_021DCDD0
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r3, r4, r5, pc}
+_021DCCAA:
+ ldr r1, [r4, #4]
+ bl MOD05_021DCF14
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r3, r4, r5, pc}
+_021DCCB8:
+ ldr r1, [r4]
+ ldr r2, [r4, #0x10]
+ bl MOD05_021DCE00
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r3, r4, r5, pc}
+_021DCCC8:
+ ldr r1, [r4, #4]
+ bl MOD05_021DCF68
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r3, r4, r5, pc}
+_021DCCD6:
+ ldr r1, [r4]
+ ldr r2, [r4, #0x10]
+ bl MOD05_021DCE3C
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ str r0, [r4, #0x18]
+ pop {r3, r4, r5, pc}
+_021DCCE6:
+ bl MOD05_021DCE74
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0xc]
+ str r1, [r0, #8]
+ mov r0, #2
+ str r0, [r4, #0x14]
+ mov r0, #0
+ str r0, [r4, #0x18]
+ str r0, [r4, #0x1c]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+_021DCD00:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DCD04
+MOD05_021DCD04: ; 0x021DCD04
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021DCD14
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021DCD14:
+ ldr r1, _021DCD60 ; =0x00000F68
+ mov r0, #4
+ bl AllocFromHeap
+ str r0, [r4, #0xc]
+ cmp r0, #0
+ bne _021DCD26
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+_021DCD26:
+ ldr r2, _021DCD60 ; =0x00000F68
+ mov r1, #0
+ bl memset
+ ldr r0, [r4, #0xc]
+ ldr r2, _021DCD64 ; =0x00000F62
+ str r5, [r0]
+ ldr r1, [r4, #0xc]
+ mov r0, #0
+ strh r0, [r1, r2]
+ add r1, r2, #4
+ ldr r3, [r4, #0xc]
+ sub r2, #0xa
+ strh r0, [r3, r1]
+ ldr r3, [r4, #0xc]
+ add r1, r3, #0
+ add r1, #0xc
+ str r1, [r3, #0x40]
+ ldr r3, [r4, #0xc]
+ add r1, r3, #0
+ add r1, #0xc
+ str r1, [r3, #0x44]
+ ldr r1, [r4, #0xc]
+ str r0, [r1, r2]
+ ldr r0, [r4, #0xc]
+ str r4, [r0, #4]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+ nop
+_021DCD60: .word 0x00000F68
+_021DCD64: .word 0x00000F62
+
+ thumb_func_start MOD05_021DCD68
+MOD05_021DCD68: ; 0x021DCD68
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0
+ ldr r1, [r4]
+ mvn r0, r0
+ cmp r1, r0
+ beq _021DCD9A
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ beq _021DCD80
+ mov r0, #1
+ pop {r4, pc}
+_021DCD80:
+ mov r0, #4
+ mov r1, #0x64
+ bl AllocFromHeap
+ str r0, [r4, #0x10]
+ cmp r0, #0
+ bne _021DCD92
+ mov r0, #0
+ pop {r4, pc}
+_021DCD92:
+ mov r1, #0
+ mov r2, #0x64
+ bl memset
+_021DCD9A:
+ mov r0, #1
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DCDA0
+MOD05_021DCDA0: ; 0x021DCDA0
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ add r3, r1, #0
+ mvn r0, r0
+ add r4, r2, #0
+ cmp r3, r0
+ beq _021DCDCC
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r2, r3, #0
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ ldr r3, [r5, #0x10]
+ mov r1, #2
+ bl MOD05_021DC7B0
+ str r0, [r4, #8]
+_021DCDCC:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DCDD0
+MOD05_021DCDD0: ; 0x021DCDD0
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ add r3, r1, #0
+ mvn r0, r0
+ add r4, r2, #0
+ cmp r3, r0
+ beq _021DCDFC
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r2, r3, #0
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ ldr r3, [r5, #0x14]
+ mov r1, #3
+ bl MOD05_021DC7B0
+ str r0, [r4, #0xc]
+_021DCDFC:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DCE00
+MOD05_021DCE00: ; 0x021DCE00
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ add r3, r1, #0
+ mvn r0, r0
+ add r4, r2, #0
+ cmp r3, r0
+ beq _021DCE36
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ add r2, r3, #0
+ str r0, [sp]
+ mov r0, #1
+ str r0, [sp, #4]
+ ldr r0, [r5, #0x18]
+ ldr r3, [r5, #8]
+ mov r1, #0
+ bl MOD05_021DC7B0
+ str r0, [r4]
+ bl FUN_02009B04
+ ldr r0, [r4]
+ bl FUN_02009474
+_021DCE36:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DCE3C
+MOD05_021DCE3C: ; 0x021DCE3C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r5, r0, #0
+ mov r0, #0
+ add r3, r1, #0
+ mvn r0, r0
+ add r4, r2, #0
+ cmp r3, r0
+ beq _021DCE70
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r5, r0]
+ mov r1, #1
+ str r0, [sp]
+ str r1, [sp, #4]
+ add r2, r3, #0
+ ldr r0, [r5, #0x18]
+ ldr r3, [r5, #0xc]
+ bl MOD05_021DC7B0
+ str r0, [r4, #4]
+ bl FUN_02009D68
+ ldr r0, [r4, #4]
+ bl FUN_02009474
+_021DCE70:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DCE74
+MOD05_021DCE74: ; 0x021DCE74
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ mov r0, #0
+ ldr r1, [r4]
+ mvn r0, r0
+ cmp r1, r0
+ beq _021DCEC8
+ ldr r2, [r4, #0x10]
+ mov r0, #1
+ str r0, [sp]
+ add r0, r2, #0
+ add r0, #0x40
+ add r1, r5, #0
+ mov r3, #0
+ bl MOD05_021DD0A4
+ ldr r0, [r4, #0x10]
+ mov r1, #0
+ add r0, #0x10
+ mov r2, #0x30
+ bl memset
+ add r5, #0xfc
+ ldr r1, [r5]
+ ldr r0, [r4, #0x10]
+ str r1, [r0, #0x10]
+ ldr r1, [r4, #0x10]
+ add r0, r1, #0
+ add r0, #0x40
+ str r0, [r1, #0x14]
+ mov r1, #1
+ ldr r0, [r4, #0x10]
+ lsl r1, r1, #0xc
+ str r1, [r0, #0x24]
+ ldr r0, [r4, #0x10]
+ str r1, [r0, #0x28]
+ ldr r0, [r4, #0x10]
+ str r1, [r0, #0x2c]
+ ldr r0, [r4, #0x10]
+ mov r1, #1
+ str r1, [r0, #0x38]
+_021DCEC8:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DCECC
+MOD05_021DCECC: ; 0x021DCECC
+ push {r3, lr}
+ sub sp, #0x18
+ add r2, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ beq _021DCF0E
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r0, [r2, r0]
+ ldr r3, [r2, #4]
+ mov r2, #0xc
+ mul r2, r1
+ ldr r1, [r3, r2]
+ mov r2, #4
+ bl NARC_AllocAndReadWholeMember
+ add r1, sp, #0x14
+ str r0, [sp]
+ bl FUN_020B0138
+ ldr r1, [sp, #0x14]
+ mov r0, #2
+ ldr r1, [r1, #0xc]
+ mov r2, #0x20
+ mov r3, #0xc0
+ bl FUN_02017FB4
+ ldr r0, [sp]
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [sp]
+_021DCF0E:
+ add sp, #0x18
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DCF14
+MOD05_021DCF14: ; 0x021DCF14
+ push {r3, r4, lr}
+ sub sp, #0x1c
+ add r4, r0, #0
+ mov r0, #0
+ mvn r0, r0
+ cmp r1, r0
+ beq _021DCF62
+ mov r2, #0xc
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r3, [r4, #4]
+ mul r2, r1
+ add r1, r3, r2
+ ldr r0, [r4, r0]
+ ldr r1, [r1, #4]
+ mov r2, #4
+ bl NARC_AllocAndReadWholeMember
+ add r1, sp, #0x14
+ str r0, [sp, #8]
+ bl FUN_020B0088
+ ldr r3, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp]
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r2, [r3, #0x14]
+ ldr r0, [r0, #8]
+ ldr r3, [r3, #0x10]
+ mov r1, #2
+ bl FUN_02017E14
+ ldr r0, [sp, #8]
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [sp, #8]
+_021DCF62:
+ add sp, #0x1c
+ pop {r3, r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DCF68
+MOD05_021DCF68: ; 0x021DCF68
+ push {r4, r5, lr}
+ sub sp, #0x24
+ add r4, r0, #0
+ mov r0, #0
+ add r5, r1, #0
+ mvn r0, r0
+ cmp r5, r0
+ beq _021DD00A
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ mov r1, #0xc
+ mov r0, #0x42
+ lsl r0, r0, #2
+ ldr r2, [r4, #4]
+ mul r1, r5
+ add r1, r2, r1
+ ldr r0, [r4, r0]
+ ldr r1, [r1, #8]
+ mov r2, #4
+ bl NARC_AllocAndReadWholeMember
+ str r0, [sp, #0x14]
+ cmp r0, #0
+ bne _021DCFA0
+ bl ErrorHandling
+_021DCFA0:
+ ldr r0, [sp, #0x14]
+ add r1, sp, #0x18
+ bl FUN_020B0180
+ ldr r3, [sp, #0x18]
+ mov r0, #0
+ str r0, [sp]
+ add r2, r3, #0
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ ldr r3, [r3, #8]
+ ldr r0, [r0, #8]
+ mov r1, #2
+ add r2, #0xc
+ bl FUN_02017CE8
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r3, [sp, #0x18]
+ ldr r0, [r4, r0]
+ add r2, r3, #0
+ ldr r0, [r0, #8]
+ ldr r3, [r3, #8]
+ mov r1, #2
+ add r2, #0xc
+ bl FUN_02017DFC
+ mov r0, #0x20
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #6
+ str r0, [sp, #8]
+ add r0, #0xfe
+ ldr r0, [r4, r0]
+ mov r2, #0
+ ldr r0, [r0, #8]
+ mov r1, #2
+ add r3, r2, #0
+ bl FUN_020186B4
+ mov r0, #0x41
+ lsl r0, r0, #2
+ ldr r0, [r4, r0]
+ mov r1, #2
+ ldr r0, [r0, #8]
+ bl FUN_02017CD0
+ ldr r0, [sp, #0x14]
+ bl FreeToHeap
+ mov r0, #0
+ str r0, [sp, #0x14]
+_021DD00A:
+ add sp, #0x24
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD010
+MOD05_021DD010: ; 0x021DD010
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #8]
+ add r4, r1, #0
+ cmp r0, #0
+ beq _021DD020
+ bl ErrorHandling
+_021DD020:
+ cmp r4, #0
+ bgt _021DD028
+ bl ErrorHandling
+_021DD028:
+ cmp r4, #0x28
+ bls _021DD030
+ bl ErrorHandling
+_021DD030:
+ add r0, r5, #0
+ add r0, #0xc
+ str r0, [r5, #8]
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DD038
+MOD05_021DD038: ; 0x021DD038
+ ldr r3, _021DD044 ; =memset
+ mov r1, #0
+ str r1, [r0, #8]
+ add r0, #0xc
+ mov r2, #0x28
+ bx r3
+ .balign 4, 0
+_021DD044: .word memset
+
+ thumb_func_start MOD05_021DD048
+MOD05_021DD048: ; 0x021DD048
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r7, r1, #0
+ ldr r6, [r5]
+ bl MOD05_021DD6FC
+ add r4, r0, #0
+ bne _021DD05C
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD05C:
+ add r0, r5, #0
+ str r6, [r4]
+ add r0, #0xc
+ str r0, [r4, #0x34]
+ ldr r0, [r5, #0x44]
+ str r0, [r4, #0x38]
+ ldr r0, [r5, #0x44]
+ str r4, [r0, #0x34]
+ str r4, [r5, #0x44]
+ ldr r0, [r5, #8]
+ add r0, #0x10
+ bl FUN_0201FE94
+ str r0, [r4, #4]
+ cmp r0, #0
+ bne _021DD086
+ add r0, r4, #0
+ bl MOD05_021DD100
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD086:
+ add r0, r4, #0
+ add r1, r7, #0
+ bl MOD05_021DD010
+ ldr r0, [r4, #8]
+ cmp r0, #0
+ bne _021DD09E
+ add r0, r4, #0
+ bl MOD05_021DD100
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+_021DD09E:
+ add r0, r4, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD0A4
+MOD05_021DD0A4: ; 0x021DD0A4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x44
+ str r0, [sp, #0x2c]
+ add r7, r1, #0
+ add r5, r2, #0
+ str r3, [sp, #0x30]
+ mov r6, #0
+ add r4, sp, #0x34
+_021DD0B4:
+ ldr r0, [r5]
+ bl FUN_02009530
+ add r6, r6, #1
+ add r5, r5, #4
+ stmia r4!, {r0}
+ cmp r6, #4
+ blt _021DD0B4
+ ldr r0, [sp, #0x40]
+ str r0, [sp]
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ ldr r0, [sp, #0x30]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x58]
+ str r0, [sp, #0x10]
+ ldr r0, [r7, #8]
+ str r0, [sp, #0x14]
+ ldr r0, [r7, #0xc]
+ str r0, [sp, #0x18]
+ ldr r0, [r7, #0x10]
+ str r0, [sp, #0x1c]
+ ldr r0, [r7, #0x14]
+ str r0, [sp, #0x20]
+ mov r0, #0
+ str r0, [sp, #0x24]
+ str r0, [sp, #0x28]
+ ldr r0, [sp, #0x2c]
+ ldr r1, [sp, #0x34]
+ ldr r2, [sp, #0x38]
+ ldr r3, [sp, #0x3c]
+ bl FUN_02008AA4
+ add sp, #0x44
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD100
+MOD05_021DD100: ; 0x021DD100
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x34]
+ ldr r0, [r4, #0x38]
+ str r1, [r0, #0x34]
+ ldr r1, [r4, #0x38]
+ ldr r0, [r4, #0x34]
+ str r1, [r0, #0x38]
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021DD11E
+ bl FUN_0201FFC8
+ mov r0, #0
+ str r0, [r4, #4]
+_021DD11E:
+ add r0, r4, #0
+ bl MOD05_021DD038
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x3c
+ bl memset
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021DD130
+MOD05_021DD130: ; 0x021DD130
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x34]
+ cmp r0, r5
+ beq _021DD146
+_021DD13A:
+ ldr r4, [r0, #0x34]
+ bl MOD05_021DD100
+ add r0, r4, #0
+ cmp r4, r5
+ bne _021DD13A
+_021DD146:
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DD148
+MOD05_021DD148: ; 0x021DD148
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ ldr r0, [r5, #0x34]
+ add r6, r1, #0
+ ldr r4, [r0, #0x34]
+ cmp r0, r5
+ beq _021DD160
+_021DD156:
+ blx r6
+ add r0, r4, #0
+ ldr r4, [r4, #0x34]
+ cmp r0, r5
+ bne _021DD156
+_021DD160:
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD164
+MOD05_021DD164: ; 0x021DD164
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD168
+MOD05_021DD168: ; 0x021DD168
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r1, #4]
+ bl FUN_0202011C
+ add r2, r0, #0
+ ldmia r2!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r4]
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD180
+MOD05_021DD180: ; 0x021DD180
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ str r0, [sp, #4]
+ str r1, [sp, #8]
+ mov r0, #1
+ mov r1, #3
+ add r5, r2, #0
+ lsl r0, r0, #0xe
+ lsl r1, r1, #0xc
+ bl FX_Div
+ add r4, r0, #0
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201F008
+ add r6, r0, #0
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r0, [r0, #0x20]
+ bl FUN_0201F010
+ add r1, r0, #0
+ add r0, sp, #0xc
+ str r0, [sp]
+ add r0, r6, #0
+ add r2, r4, #0
+ add r3, sp, #0x10
+ bl FUN_0201CB7C
+ mov r1, #1
+ ldr r0, [sp, #0x10]
+ lsl r1, r1, #0x14
+ bl FX_Div
+ str r0, [sp, #0x10]
+ mov r1, #3
+ ldr r0, [sp, #0xc]
+ lsl r1, r1, #0x12
+ bl FX_Div
+ ldr r3, _021DD2B0 ; =UNK_021CEF70
+ str r0, [sp, #0xc]
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x14
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ ldr r4, _021DD2B4 ; =0x00000F4C
+ str r0, [r2]
+ ldr r1, [sp, #0x14]
+ ldr r0, [r5, r4]
+ ldr r2, [sp, #0x1c]
+ sub r0, r1, r0
+ add r1, r4, #0
+ add r1, #8
+ ldr r1, [r5, r1]
+ add r4, #0xb4
+ sub r7, r2, r1
+ cmp r0, #0
+ bge _021DD21E
+ ldr r4, _021DD2B8 ; =0xFFFFF000
+ asr r1, r0, #0x1f
+ asr r3, r4, #0xc
+ add r2, r4, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r0, r0, r2
+ adc r1, r3
+ lsl r1, r1, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+_021DD21E:
+ ldr r1, [sp, #0x10]
+ bl FX_Div
+ add r6, r0, #0
+ cmp r4, #0
+ bge _021DD244
+ asr r1, r6, #0x1f
+ asr r3, r4, #0x1f
+ add r2, r4, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r6, r2, #0xc
+ orr r6, r0
+_021DD244:
+ mov r4, #1
+ lsl r4, r4, #0xc
+ cmp r7, #0
+ bge _021DD26A
+ ldr r4, _021DD2B8 ; =0xFFFFF000
+ asr r1, r7, #0x1f
+ add r0, r7, #0
+ asr r3, r4, #0xc
+ add r2, r4, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r7, r2, #0xc
+ orr r7, r0
+_021DD26A:
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl FX_Div
+ add r3, r0, #0
+ cmp r4, #0
+ bge _021DD292
+ asr r1, r3, #0x1f
+ asr r3, r4, #0x1f
+ add r2, r4, #0
+ bl _ll_mul
+ mov r2, #2
+ mov r3, #0
+ lsl r2, r2, #0xa
+ add r2, r0, r2
+ adc r1, r3
+ lsl r0, r1, #0x14
+ lsr r3, r2, #0xc
+ orr r3, r0
+_021DD292:
+ add r0, r6, r3
+ beq _021DD2A4
+ ldr r0, _021DD2B4 ; =0x00000F4C
+ add r2, sp, #0x14
+ add r4, r5, r0
+ ldmia r2!, {r0, r1}
+ stmia r4!, {r0, r1}
+ ldr r0, [r2]
+ str r0, [r4]
+_021DD2A4:
+ ldr r0, [sp, #4]
+ str r6, [r0]
+ ldr r0, [sp, #8]
+ str r3, [r0]
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021DD2B0: .word UNK_021CEF70
+_021DD2B4: .word 0x00000F4C
+_021DD2B8: .word 0xFFFFF000
+
+ thumb_func_start MOD05_021DD2BC
+MOD05_021DD2BC: ; 0x021DD2BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r7, r1, #0
+ str r2, [sp]
+ add r0, sp, #8
+ add r1, sp, #4
+ add r2, r5, #0
+ bl MOD05_021DD180
+ ldr r4, [r5, #0x40]
+ add r5, #0xc
+ cmp r4, r5
+ beq _021DD300
+ add r6, sp, #0xc
+_021DD2DA:
+ add r0, r6, #0
+ add r1, r4, #0
+ bl MOD05_021DD168
+ ldr r1, [sp, #0xc]
+ ldr r0, [sp, #8]
+ sub r0, r1, r0
+ str r0, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ ldr r0, [sp, #4]
+ sub r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, r6, #0
+ bl MOD05_021DC4FC
+ ldr r4, [r4, #0x34]
+ cmp r4, r5
+ bne _021DD2DA
+_021DD300:
+ cmp r7, #0
+ beq _021DD310
+ ldr r0, [sp, #8]
+ asr r0, r0, #0xc
+ str r0, [r7]
+ bpl _021DD310
+ add r0, r0, #1
+ str r0, [r7]
+_021DD310:
+ ldr r0, [sp]
+ cmp r0, #0
+ beq _021DD324
+ ldr r0, [sp, #4]
+ asr r1, r0, #0xc
+ ldr r0, [sp]
+ str r1, [r0]
+ bpl _021DD324
+ add r1, r1, #1
+ str r1, [r0]
+_021DD324:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021DD328
+MOD05_021DD328: ; 0x021DD328
+ str r1, [r0]
+ strh r2, [r0, #4]
+ mov r1, #0
+ strh r1, [r0, #6]
+ strh r3, [r0, #8]
+ strh r1, [r0, #0xa]
+ ldr r1, [sp]
+ strh r1, [r0, #0xc]
+ ldr r1, [sp, #4]
+ strh r1, [r0, #0xe]
+ ldr r1, [sp, #8]
+ strh r1, [r0, #0x10]
+ ldr r1, [sp, #0xc]
+ strh r1, [r0, #0x12]
+ ldr r1, [sp, #0x10]
+ str r1, [r0, #0x14]
+ ldr r1, [sp, #0x14]
+ str r1, [r0, #0x18]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD350
+MOD05_021DD350: ; 0x021DD350
+ strh r1, [r0, #0xc]
+ strh r2, [r0, #0xe]
+ ldr r1, [sp]
+ strh r3, [r0, #0x10]
+ str r1, [r0, #0x14]
+ bx lr
+
+ thumb_func_start MOD05_021DD35C
+MOD05_021DD35C: ; 0x021DD35C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #0x10
+ ldrsh r0, [r5, r0]
+ mov r4, #0
+ cmp r0, #0
+ bne _021DD370
+ mov r0, #1
+ orr r4, r0
+ b _021DD396
+_021DD370:
+ bgt _021DD376
+ mov r2, #1
+ b _021DD378
+_021DD376:
+ add r2, r4, #0
+_021DD378:
+ mov r0, #0xe
+ ldrsh r1, [r5, r0]
+ mov r0, #8
+ ldrsh r0, [r5, r0]
+ cmp r0, r1
+ blt _021DD388
+ cmp r2, #0
+ beq _021DD390
+_021DD388:
+ cmp r0, r1
+ bgt _021DD396
+ cmp r2, #1
+ bne _021DD396
+_021DD390:
+ mov r0, #1
+ orr r4, r0
+ strh r1, [r5, #8]
+_021DD396:
+ ldr r0, [r5, #0x14]
+ cmp r0, #0
+ bne _021DD3A2
+ mov r0, #2
+ orr r4, r0
+ b _021DD3C8
+_021DD3A2:
+ bgt _021DD3A8
+ mov r2, #1
+ b _021DD3AA
+_021DD3A8:
+ mov r2, #0
+_021DD3AA:
+ mov r0, #0xc
+ ldrsh r1, [r5, r0]
+ mov r0, #4
+ ldrsh r0, [r5, r0]
+ cmp r0, r1
+ blt _021DD3BA
+ cmp r2, #0
+ beq _021DD3C2
+_021DD3BA:
+ cmp r0, r1
+ bgt _021DD3C8
+ cmp r2, #1
+ bne _021DD3C8
+_021DD3C2:
+ mov r0, #2
+ orr r4, r0
+ strh r1, [r5, #4]
+_021DD3C8:
+ mov r0, #6
+ ldrsh r1, [r5, r0]
+ sub r1, r1, #1
+ strh r1, [r5, #6]
+ ldrsh r0, [r5, r0]
+ cmp r0, #0
+ bgt _021DD41C
+ mov r1, #4
+ ldrsh r1, [r5, r1]
+ ldr r0, [r5]
+ ldr r2, [r5, #0x18]
+ blx r2
+ mov r0, #8
+ ldrsh r1, [r5, r0]
+ strh r1, [r5, #6]
+ mov r1, #1
+ tst r1, r4
+ bne _021DD3F6
+ ldrsh r1, [r5, r0]
+ mov r0, #0x10
+ ldrsh r0, [r5, r0]
+ add r0, r1, r0
+ strh r0, [r5, #8]
+_021DD3F6:
+ mov r0, #2
+ tst r0, r4
+ bne _021DD41C
+ mov r0, #0xa
+ ldrsh r1, [r5, r0]
+ add r1, r1, #1
+ strh r1, [r5, #0xa]
+ ldrsh r1, [r5, r0]
+ mov r0, #0x12
+ ldrsh r0, [r5, r0]
+ cmp r1, r0
+ blt _021DD41C
+ mov r0, #0
+ strh r0, [r5, #0xa]
+ mov r0, #4
+ ldrsh r1, [r5, r0]
+ ldr r0, [r5, #0x14]
+ add r0, r1, r0
+ strh r0, [r5, #4]
+_021DD41C:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DD420
+MOD05_021DD420: ; 0x021DD420
+ push {r4, lr}
+ sub sp, #8
+ add r4, r1, #0
+ ldr r1, [sp, #0x1c]
+ str r2, [r4]
+ cmp r1, #0
+ beq _021DD470
+ cmp r1, #1
+ bne _021DD454
+ add r1, r3, #0
+ add r3, sp, #0
+ add r0, r2, #0
+ ldrh r3, [r3, #0x14]
+ ldr r2, [sp, #0x10]
+ bl MOD05_021DD49C
+ add r0, r4, #0
+ bl MOD05_021DD598
+ ldr r1, [sp, #0x18]
+ add r0, r4, #0
+ mov r2, #1
+ bl MOD05_021DD5B4
+ add sp, #8
+ pop {r4, pc}
+_021DD454:
+ cmp r1, #2
+ bne _021DD470
+ add r1, sp, #0
+ ldrh r1, [r1, #0x14]
+ ldr r4, [sp, #0x18]
+ str r1, [sp]
+ mov r1, #0x7f
+ mul r1, r4
+ str r1, [sp, #4]
+ add r1, r2, #0
+ add r2, r3, #0
+ ldr r3, [sp, #0x10]
+ bl MOD05_021DD4C8
+_021DD470:
+ add sp, #8
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021DD474
+MOD05_021DD474: ; 0x021DD474
+ push {r4, lr}
+ mov r4, #1
+ cmp r2, #0
+ beq _021DD498
+ cmp r2, #1
+ bne _021DD48A
+ add r0, r1, #0
+ bl MOD05_021DD5D0
+ add r4, r0, #0
+ b _021DD498
+_021DD48A:
+ cmp r2, #2
+ bne _021DD498
+ bl MOD05_021DD54C
+ cmp r0, #0
+ bne _021DD498
+ mov r4, #0
+_021DD498:
+ add r0, r4, #0
+ pop {r4, pc}
+
+ thumb_func_start MOD05_021DD49C
+MOD05_021DD49C: ; 0x021DD49C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ str r1, [sp]
+ mov r1, #0
+ add r4, r3, #0
+ str r2, [sp, #4]
+ mvn r1, r1
+ mov r2, #1
+ mov r3, #0
+ add r5, r0, #0
+ bl MOD05_021DBA40
+ mov r1, #0
+ add r0, r5, #0
+ mvn r1, r1
+ add r2, r4, #0
+ mov r3, #0x1f
+ bl MOD05_021DBA78
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD4C8
+MOD05_021DD4C8: ; 0x021DD4C8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ str r2, [sp]
+ str r3, [sp, #4]
+ ldr r6, [sp, #0x2c]
+ bl MOD05_021DBA34
+ str r0, [sp, #8]
+ add r0, r4, #0
+ bl MOD05_021DBA38
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ bl MOD05_021DBA3C
+ add r7, r0, #0
+ ldr r1, [sp, #0xc]
+ ldr r2, [sp, #4]
+ add r0, r5, #4
+ add r3, r6, #0
+ str r4, [r5]
+ bl MOD05_021DC6EC
+ add r0, sp, #0x18
+ ldrh r4, [r0, #0x10]
+ add r0, r5, #0
+ mov r2, #0x1f
+ add r1, r7, #0
+ and r1, r2
+ add r0, #0x18
+ and r2, r4
+ add r3, r6, #0
+ bl MOD05_021DC6EC
+ add r0, r5, #0
+ asr r1, r7, #5
+ mov r3, #0x1f
+ asr r2, r4, #5
+ add r0, #0x2c
+ and r1, r3
+ and r2, r3
+ add r3, r6, #0
+ bl MOD05_021DC6EC
+ add r0, r5, #0
+ asr r1, r7, #0xa
+ mov r2, #0x1f
+ asr r3, r4, #0xa
+ and r1, r2
+ and r2, r3
+ add r0, #0x40
+ add r3, r6, #0
+ bl MOD05_021DC6EC
+ add r5, #0x54
+ ldr r1, [sp, #8]
+ ldr r2, [sp]
+ add r0, r5, #0
+ add r3, r6, #0
+ bl MOD05_021DC6EC
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021DD54C
+MOD05_021DD54C: ; 0x021DD54C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r0, r5, #4
+ bl MOD05_021DC6FC
+ add r4, r0, #0
+ add r0, r5, #0
+ add r0, #0x18
+ bl MOD05_021DC6FC
+ add r0, r5, #0
+ add r0, #0x2c
+ bl MOD05_021DC6FC
+ add r0, r5, #0
+ add r0, #0x40
+ bl MOD05_021DC6FC
+ add r0, r5, #0
+ add r0, #0x54
+ bl MOD05_021DC6FC
+ ldr r3, [r5, #0x40]
+ ldr r0, [r5]
+ lsl r6, r3, #0xa
+ ldr r1, [r5, #0x54]
+ ldr r2, [r5, #4]
+ ldr r3, [r5, #0x18]
+ ldr r5, [r5, #0x2c]
+ lsl r5, r5, #5
+ orr r3, r5
+ orr r3, r6
+ lsl r3, r3, #0x10
+ lsr r3, r3, #0x10
+ bl MOD05_021DD49C
+ add r0, r4, #0
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start MOD05_021DD598
+MOD05_021DD598: ; 0x021DD598
+ mov r2, #0
+ add r3, r0, #0
+ add r1, r2, #0
+_021DD59E:
+ add r0, r3, r2
+ add r2, r2, #1
+ strb r1, [r0, #4]
+ cmp r2, #0x20
+ blt _021DD59E
+ ldr r0, [r3]
+ add r1, r3, #4
+ ldr r3, _021DD5B0 ; =MOD05_021DBAA0
+ bx r3
+ .balign 4, 0
+_021DD5B0: .word MOD05_021DBAA0
+
+ thumb_func_start MOD05_021DD5B4
+MOD05_021DD5B4: ; 0x021DD5B4
+ mov r3, #0x7f
+ str r3, [r0, #0x24]
+ mov r3, #0
+ str r3, [r0, #0x28]
+ strh r1, [r0, #0x2c]
+ cmp r2, #1
+ bne _021DD5C8
+ mov r1, #1
+ strh r1, [r0, #0x2e]
+ bx lr
+_021DD5C8:
+ sub r1, r3, #1
+ strh r1, [r0, #0x2e]
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD5D0
+MOD05_021DD5D0: ; 0x021DD5D0
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ bl MOD05_021DD60C
+ add r4, r0, #0
+ ldr r0, [r5, #0x28]
+ cmp r0, #0
+ bne _021DD5E8
+ ldr r0, [r5]
+ add r1, r5, #4
+ bl MOD05_021DBAA0
+_021DD5E8:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DD5EC
+MOD05_021DD5EC: ; 0x021DD5EC
+ push {r4, lr}
+ add r4, r0, #0
+ mov r2, #1
+ str r2, [r4, #0x24]
+ mov r1, #0
+ str r1, [r4, #0x28]
+ strh r1, [r4, #0x2c]
+ strh r2, [r4, #0x2e]
+ bl MOD05_021DD64C
+ ldr r0, [r4]
+ add r1, r4, #4
+ bl MOD05_021DBAA0
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD60C
+MOD05_021DD60C: ; 0x021DD60C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r1, #0x2e
+ ldrsh r1, [r5, r1]
+ mov r4, #0
+ cmp r1, #0
+ bne _021DD61E
+ mov r4, #1
+ b _021DD648
+_021DD61E:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ bgt _021DD628
+ mov r4, #1
+ b _021DD648
+_021DD628:
+ ldr r1, [r5, #0x28]
+ add r2, r1, #1
+ str r2, [r5, #0x28]
+ mov r1, #0x2c
+ ldrsh r1, [r5, r1]
+ cmp r2, r1
+ blt _021DD648
+ str r4, [r5, #0x28]
+ bl MOD05_021DD64C
+ ldr r0, [r5, #0x24]
+ sub r0, r0, #1
+ str r0, [r5, #0x24]
+ cmp r0, #0
+ bgt _021DD648
+ mov r4, #1
+_021DD648:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DD64C
+MOD05_021DD64C: ; 0x021DD64C
+ push {r3, r4}
+ mov r1, #0x2e
+ ldrsh r1, [r0, r1]
+ ldr r2, [r0, #0x24]
+ cmp r1, #0
+ bge _021DD65E
+ mov r1, #0x7f
+ sub r2, r1, r2
+ b _021DD65E
+_021DD65E:
+ asr r1, r2, #1
+ lsr r1, r1, #0x1e
+ add r1, r2, r1
+ asr r4, r1, #2
+ mov r3, #0x1f
+ cmp r4, #0x1f
+ bge _021DD67A
+_021DD66C:
+ sub r1, r3, r4
+ lsl r2, r1, #2
+ add r1, r0, r3
+ sub r3, r3, #1
+ strb r2, [r1, #4]
+ cmp r3, r4
+ bgt _021DD66C
+_021DD67A:
+ pop {r3, r4}
+ bx lr
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD680
+MOD05_021DD680: ; 0x021DD680
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ ldr r1, [sp, #0x28]
+ str r0, [sp]
+ str r1, [sp, #0x28]
+ add r1, r2, #0
+ str r2, [sp, #4]
+ str r3, [sp, #8]
+ ldr r7, [sp, #0x2c]
+ blx r4
+ ldr r0, [sp]
+ mov r6, #0
+ ldr r5, [r0, #0x40]
+ str r6, [sp, #0x10]
+ ldr r0, [r5, #0x34]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ ble _021DD6F6
+ ldr r0, [sp]
+ add r0, #0xc
+ str r0, [sp]
+_021DD6AE:
+ ldr r0, [sp]
+ cmp r5, r0
+ beq _021DD6F6
+ mov r4, #0
+ cmp r6, #0
+ ble _021DD6CA
+_021DD6BA:
+ add r0, r5, #0
+ blx r7
+ ldr r0, [r5, #8]
+ cmp r0, #0
+ beq _021DD6CA
+ add r4, r4, #1
+ cmp r4, r6
+ blt _021DD6BA
+_021DD6CA:
+ ldr r5, [sp, #0xc]
+ ldr r1, [sp, #0x10]
+ add r0, r5, #0
+ ldr r0, [r0, #0x34]
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #8]
+ cmp r1, r0
+ blt _021DD6EA
+ add r0, r1, #0
+ ldr r1, [sp, #8]
+ bl _s32_div_f
+ cmp r1, #0
+ bne _021DD6EA
+ ldr r0, [sp, #0x28]
+ add r6, r6, r0
+_021DD6EA:
+ ldr r0, [sp, #0x10]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ str r1, [sp, #0x10]
+ cmp r1, r0
+ blt _021DD6AE
+_021DD6F6:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DD6FC
+MOD05_021DD6FC: ; 0x021DD6FC
+ mov r2, #0
+ add r3, r0, #0
+_021DD700:
+ ldr r1, [r3, #0x48]
+ cmp r1, #0
+ bne _021DD710
+ mov r1, #0x3c
+ add r0, #0x48
+ mul r1, r2
+ add r0, r0, r1
+ bx lr
+_021DD710:
+ add r2, r2, #1
+ add r3, #0x3c
+ cmp r2, #0x40
+ blt _021DD700
+ mov r0, #0
+ bx lr
+
+ thumb_func_start MOD05_021DD71C
+MOD05_021DD71C: ; 0x021DD71C
+ push {r3, lr}
+ ldr r0, _021DD76C ; =0x00000F62
+ ldrh r2, [r1, r0]
+ cmp r2, #5
+ bhi _021DD76A
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DD732: ; jump table
+ .short _021DD73E - _021DD732 - 2 ; case 0
+ .short _021DD744 - _021DD732 - 2 ; case 1
+ .short _021DD74A - _021DD732 - 2 ; case 2
+ .short _021DD750 - _021DD732 - 2 ; case 3
+ .short _021DD75E - _021DD732 - 2 ; case 4
+ .short _021DD764 - _021DD732 - 2 ; case 5
+_021DD73E:
+ mov r2, #1
+ strh r2, [r1, r0]
+ pop {r3, pc}
+_021DD744:
+ mov r2, #3
+ strh r2, [r1, r0]
+ pop {r3, pc}
+_021DD74A:
+ mov r2, #3
+ strh r2, [r1, r0]
+ pop {r3, pc}
+_021DD750:
+ add r2, r0, #4
+ ldrh r2, [r1, r2]
+ cmp r2, #5
+ bne _021DD76A
+ mov r2, #4
+ strh r2, [r1, r0]
+ pop {r3, pc}
+_021DD75E:
+ mov r2, #5
+ strh r2, [r1, r0]
+ pop {r3, pc}
+_021DD764:
+ ldr r0, [r1, #4]
+ bl MOD05_021DCB6C
+_021DD76A:
+ pop {r3, pc}
+ .balign 4, 0
+_021DD76C: .word 0x00000F62
+
+ thumb_func_start MOD05_021DD770
+MOD05_021DD770: ; 0x021DD770
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ ldr r0, _021DD998 ; =0x00000F58
+ add r5, r1, #0
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r5, r2]
+ ldr r4, [r5, r0]
+ cmp r2, #5
+ bhi _021DD832
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DD790: ; jump table
+ .short _021DD79C - _021DD790 - 2 ; case 0
+ .short _021DD7FA - _021DD790 - 2 ; case 1
+ .short _021DD83C - _021DD790 - 2 ; case 2
+ .short _021DD8A2 - _021DD790 - 2 ; case 3
+ .short _021DD900 - _021DD790 - 2 ; case 4
+ .short _021DD94E - _021DD790 - 2 ; case 5
+_021DD79C:
+ mov r0, #0x14
+ str r0, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ sub r0, r2, #2
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _021DD99C ; =MOD05_021DD9BC
+ mov r3, #8
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DD9A0 ; =0x0000726F
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021DD9A4 ; =0x00006B5A
+ lsl r2, r2, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021DD9A8 ; =0x00000F64
+ add r1, r4, #0
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ mov r0, #0
+ add r4, #0xb4
+ str r0, [r4]
+ ldr r1, _021DD9AC ; =0x00000639
+ add r0, r5, #0
+ bl MOD05_021E0FA4
+ ldr r0, _021DD9B0 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ b _021DD96C
+_021DD7FA:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DD81A
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DD96C
+_021DD81A:
+ ldr r2, _021DD9A8 ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r4, #0x1c
+ add r0, #0x4c
+ add r1, r4, #0
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DD832
+ cmp r6, #3
+ beq _021DD834
+_021DD832:
+ b _021DD96C
+_021DD834:
+ ldr r0, _021DD9B0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DD96C
+_021DD83C:
+ mov r2, #0x14
+ mov r3, #1
+ str r2, [sp]
+ str r3, [sp, #4]
+ sub r0, r3, #2
+ str r0, [sp, #8]
+ str r3, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _021DD99C ; =MOD05_021DD9BC
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DD9A8 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DD87E
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DD9A0 ; =0x0000726F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DD9A4 ; =0x00006B5A
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD05_021DD5EC
+_021DD87E:
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _021DD9B4 ; =MOD05_021DDA7C
+ ldr r1, _021DD99C ; =MOD05_021DD9BC
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x14
+ mov r3, #0xa
+ bl MOD05_021DD680
+ ldr r1, _021DD9AC ; =0x00000639
+ add r0, r5, #0
+ bl MOD05_021E0FA4
+ ldr r0, _021DD9B0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DD96C
+_021DD8A2:
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r1, #1
+ strh r0, [r4, #6]
+ cmp r1, #0
+ bgt _021DD8BE
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021DD9BC
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021DD8BE:
+ ldr r0, _021DD9B8 ; =0x00000F66
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bne _021DD96C
+ mov r0, #1
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #8
+ mov r3, #1
+ bl MOD05_021DD350
+ ldr r0, _021DD9A8 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DD8EC
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DD8EC:
+ mov r0, #0
+ add r4, #0xb4
+ str r0, [r4]
+ ldr r0, _021DD9B0 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r5, r0]
+ add r0, r5, #0
+ bl MOD05_021E0FD0
+ b _021DD96C
+_021DD900:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DD920
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DD96C
+_021DD920:
+ ldr r0, _021DD9A8 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DD932
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD05_021DD5D0
+ b _021DD934
+_021DD932:
+ mov r0, #1
+_021DD934:
+ cmp r0, #1
+ bne _021DD96C
+ cmp r6, #3
+ bne _021DD96C
+ add r0, r5, #0
+ ldr r1, [r5, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021DD96C
+ ldr r0, _021DD9B0 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ b _021DD96C
+_021DD94E:
+ add r0, #0xc
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DD966
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DD966:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021DD96C:
+ ldr r0, _021DD9B0 ; =0x00000F62
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ beq _021DD992
+ cmp r0, #0
+ beq _021DD992
+ add r0, r5, #0
+ ldr r1, _021DD9B4 ; =MOD05_021DDA7C
+ add r0, #0xc
+ bl MOD05_021DD148
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD05_021DD2BC
+ add r0, r5, #0
+ bl MOD05_021DD164
+_021DD992:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ nop
+_021DD998: .word 0x00000F58
+_021DD99C: .word MOD05_021DD9BC
+_021DD9A0: .word 0x0000726F
+_021DD9A4: .word 0x00006B5A
+_021DD9A8: .word 0x00000F64
+_021DD9AC: .word 0x00000639
+_021DD9B0: .word 0x00000F62
+_021DD9B4: .word MOD05_021DDA7C
+_021DD9B8: .word 0x00000F66
+
+ thumb_func_start MOD05_021DD9BC
+MOD05_021DD9BC: ; 0x021DD9BC
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ add r0, r1, #0
+ mov r7, #0
+ str r1, [sp, #4]
+ cmp r0, #0
+ ble _021DDA70
+_021DD9CC:
+ ldr r0, [sp]
+ mov r1, #0x20
+ bl MOD05_021DD048
+ add r6, r0, #0
+ beq _021DDA70
+ ldr r4, [r6, #8]
+ mov r0, #0
+ str r0, [r4]
+ bl MTRandom
+ mov r1, #3
+ bl _u32_div_f
+ add r5, r1, #0
+ lsl r1, r5, #0x10
+ ldr r0, [r6, #4]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ add r2, r5, #1
+ mov r0, #0xa
+ mul r0, r2
+ add r0, r1, r0
+ str r0, [r4, #8]
+ cmp r5, #2
+ bne _021DDA12
+ ldr r0, [r4, #8]
+ add r0, #0xa
+ str r0, [r4, #8]
+_021DDA12:
+ add r0, r1, #0
+ mov r1, #4
+ mvn r1, r1
+ bl _s32_div_f
+ mov r1, #4
+ add r2, r5, #1
+ mvn r1, r1
+ mul r1, r2
+ add r0, r0, r1
+ str r0, [r4, #0x10]
+ cmp r5, #2
+ bne _021DDA32
+ ldr r0, [r4, #0x10]
+ sub r0, r0, #5
+ str r0, [r4, #0x10]
+_021DDA32:
+ mov r0, #0
+ str r0, [r4, #0xc]
+ bl MTRandom
+ mov r1, #3
+ bl _u32_div_f
+ add r0, r1, #1
+ str r0, [r4, #4]
+ bl MTRandom
+ ldr r1, _021DDA74 ; =0x0000010E
+ bl _u32_div_f
+ mov r0, #0xf
+ mul r0, r5
+ add r0, r0, r1
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, _021DDA78 ; =0xFFFA0000
+ add r1, sp, #8
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [r6, #4]
+ bl MOD05_021DC4FC
+ ldr r0, [sp, #4]
+ add r7, r7, #1
+ cmp r7, r0
+ blt _021DD9CC
+_021DDA70:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021DDA74: .word 0x0000010E
+_021DDA78: .word 0xFFFA0000
+
+ thumb_func_start MOD05_021DDA7C
+MOD05_021DDA7C: ; 0x021DDA7C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ add r6, r0, #0
+ ldr r5, [r6, #8]
+ add r0, sp, #0
+ add r1, r6, #0
+ bl MOD05_021DD168
+ ldr r0, [r5, #0xc]
+ cmp r0, #0
+ beq _021DDA9E
+ cmp r0, #1
+ beq _021DDAF6
+ cmp r0, #2
+ beq _021DDB08
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021DDA9E:
+ mov r4, #0
+ mov r7, #2
+_021DDAA2:
+ ldr r0, [r5, #0x10]
+ ldr r1, [sp]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r5, #8]
+ ldr r1, [sp, #4]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r1, [r5]
+ add r0, r1, #1
+ str r0, [r5]
+ ldr r0, [r5, #4]
+ cmp r1, r0
+ ble _021DDAE4
+ bl MTRandom
+ mov r1, #0xa
+ bl _u32_div_f
+ cmp r1, #7
+ bhs _021DDAD4
+ str r7, [r5, #0xc]
+ b _021DDAE4
+_021DDAD4:
+ mov r0, #1
+ str r0, [r5, #0xc]
+ mov r0, #4
+ str r0, [r5]
+ ldr r0, [r6, #4]
+ mov r1, #3
+ bl FUN_02020208
+_021DDAE4:
+ add r4, r4, #1
+ cmp r4, #2
+ blt _021DDAA2
+ ldr r0, [r6, #4]
+ add r1, sp, #0
+ bl MOD05_021DC4FC
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+_021DDAF6:
+ ldr r1, [r5]
+ sub r0, r1, #1
+ str r0, [r5]
+ cmp r1, #0
+ bgt _021DDB0E
+ mov r0, #2
+ add sp, #0xc
+ str r0, [r5, #0xc]
+ pop {r4, r5, r6, r7, pc}
+_021DDB08:
+ add r0, r6, #0
+ bl MOD05_021DD100
+_021DDB0E:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DDB14
+MOD05_021DDB14: ; 0x021DDB14
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ ldr r0, _021DDD44 ; =0x00000F58
+ add r5, r1, #0
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r5, r2]
+ ldr r4, [r5, r0]
+ cmp r2, #5
+ bhi _021DDBD6
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DDB34: ; jump table
+ .short _021DDB40 - _021DDB34 - 2 ; case 0
+ .short _021DDB9E - _021DDB34 - 2 ; case 1
+ .short _021DDBE0 - _021DDB34 - 2 ; case 2
+ .short _021DDC4E - _021DDB34 - 2 ; case 3
+ .short _021DDCA6 - _021DDB34 - 2 ; case 4
+ .short _021DDCFA - _021DDB34 - 2 ; case 5
+_021DDB40:
+ mov r2, #1
+ str r2, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ sub r0, #0xd
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _021DDD48 ; =MOD05_021DDD64
+ mov r3, #0x14
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ ldr r0, _021DDD4C ; =0x0000726F
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021DDD50 ; =0x00006B5A
+ add r1, r4, #0
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021DDD54 ; =0x00000F64
+ lsl r2, r2, #2
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ mov r0, #0x10
+ add r4, #0xb4
+ str r0, [r4]
+ ldr r0, _021DDD58 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ b _021DDD18
+_021DDB9E:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DDBBE
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DDD18
+_021DDBBE:
+ ldr r2, _021DDD54 ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r4, #0x1c
+ add r0, #0x4c
+ add r1, r4, #0
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DDBD6
+ cmp r6, #3
+ beq _021DDBD8
+_021DDBD6:
+ b _021DDD18
+_021DDBD8:
+ ldr r0, _021DDD58 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DDD18
+_021DDBE0:
+ mov r2, #1
+ mov r3, #8
+ str r2, [sp]
+ add r0, r3, #0
+ str r3, [sp, #4]
+ sub r0, #0xd
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _021DDD48 ; =MOD05_021DDD64
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ ldr r0, _021DDD54 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DDC32
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DDD4C ; =0x0000726F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DDD50 ; =0x00006B5A
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD05_021DD5EC
+_021DDC32:
+ mov r0, #0x18
+ str r0, [sp]
+ ldr r0, _021DDD5C ; =MOD05_021DDF44
+ ldr r1, _021DDD48 ; =MOD05_021DDD64
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x14
+ mov r3, #2
+ bl MOD05_021DD680
+ ldr r0, _021DDD58 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DDD18
+_021DDC4E:
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r1, #1
+ strh r0, [r4, #6]
+ cmp r1, #0
+ bgt _021DDC6A
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021DDD64
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021DDC6A:
+ ldr r0, _021DDD60 ; =0x00000F66
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bne _021DDD18
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x14
+ mov r3, #5
+ bl MOD05_021DD350
+ ldr r0, _021DDD54 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DDC98
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #2
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DDC98:
+ mov r0, #0x20
+ add r4, #0xb4
+ str r0, [r4]
+ ldr r0, _021DDD58 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r5, r0]
+ b _021DDD18
+_021DDCA6:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DDCC6
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DDD18
+_021DDCC6:
+ ldr r0, _021DDD54 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DDCD8
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5D0
+ b _021DDCDA
+_021DDCD8:
+ mov r0, #1
+_021DDCDA:
+ cmp r0, #1
+ bne _021DDD18
+ cmp r6, #3
+ bne _021DDD18
+ mov r0, #1
+ add r4, #0xbc
+ str r0, [r4]
+ add r0, r5, #0
+ ldr r1, [r5, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021DDD18
+ ldr r0, _021DDD58 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ b _021DDD18
+_021DDCFA:
+ add r0, #0xc
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DDD12
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DDD12:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021DDD18:
+ ldr r0, _021DDD58 ; =0x00000F62
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ beq _021DDD3E
+ cmp r0, #0
+ beq _021DDD3E
+ add r0, r5, #0
+ ldr r1, _021DDD5C ; =MOD05_021DDF44
+ add r0, #0xc
+ bl MOD05_021DD148
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD05_021DD2BC
+ add r0, r5, #0
+ bl MOD05_021DD164
+_021DDD3E:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ nop
+_021DDD44: .word 0x00000F58
+_021DDD48: .word MOD05_021DDD64
+_021DDD4C: .word 0x0000726F
+_021DDD50: .word 0x00006B5A
+_021DDD54: .word 0x00000F64
+_021DDD58: .word 0x00000F62
+_021DDD5C: .word MOD05_021DDF44
+_021DDD60: .word 0x00000F66
+
+ thumb_func_start MOD05_021DDD64
+MOD05_021DDD64: ; 0x021DDD64
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ add r7, r1, #0
+ ldr r1, _021DDE70 ; =0x00000F58
+ str r0, [sp]
+ ldr r0, [r0, r1]
+ str r0, [sp, #0x10]
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021DDD7C
+ lsl r7, r7, #1
+_021DDD7C:
+ mov r6, #0
+ cmp r7, #0
+ ble _021DDE6A
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0xc]
+ add r0, #0xb8
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #8]
+ add r0, #0xbc
+ str r0, [sp, #8]
+ lsr r0, r7, #0x1f
+ add r0, r7, r0
+ asr r0, r0, #1
+ str r0, [sp, #4]
+_021DDD9A:
+ ldr r0, [sp]
+ mov r1, #0x28
+ bl MOD05_021DD048
+ add r4, r0, #0
+ beq _021DDE6A
+ ldr r5, [r4, #8]
+ bl MTRandom
+ mov r1, #3
+ and r1, r0
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #4]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ mov r0, #0xa
+ str r0, [r5, #0x10]
+ mov r0, #0
+ str r0, [r5, #0x14]
+ str r0, [r5, #0x18]
+ str r0, [r5, #0x20]
+ bl MTRandom
+ mov r1, #0x3c
+ str r0, [sp, #0x14]
+ bl _s32_div_f
+ add r0, r1, #4
+ str r0, [r5, #0x24]
+ ldr r0, [sp, #0x14]
+ ldr r1, [sp, #0x14]
+ lsr r0, r0, #0x1f
+ lsl r2, r1, #0x1f
+ sub r2, r2, r0
+ mov r1, #0x1f
+ ror r2, r1
+ add r0, r0, r2
+ bne _021DDDEC
+ mov r0, #1
+ b _021DDDF0
+_021DDDEC:
+ add r0, r1, #0
+ sub r0, #0x20
+_021DDDF0:
+ str r0, [r5, #4]
+ bl MTRandom
+ mov r1, #1
+ and r0, r1
+ add r0, r0, #4
+ str r0, [r5, #8]
+ bl MTRandom
+ mov r1, #1
+ and r0, r1
+ add r0, r0, #1
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #0xc]
+ str r0, [r5]
+ ldr r0, [sp, #8]
+ str r0, [r5, #0x1c]
+ bl MTRandom
+ ldr r1, _021DDE74 ; =0x0000019E
+ bl _u32_div_f
+ sub r1, #0x20
+ lsl r0, r1, #0xc
+ str r0, [sp, #0x18]
+ ldr r0, [sp, #0x10]
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021DDE48
+ ldr r0, [sp, #4]
+ cmp r6, r0
+ blt _021DDE48
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ mov r0, #0x27
+ mvn r0, r0
+ sub r0, r0, r1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x1c]
+ b _021DDE5C
+_021DDE48:
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ mov r0, #7
+ mvn r0, r0
+ sub r0, r0, r1
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x1c]
+_021DDE5C:
+ ldr r0, [r4, #4]
+ add r1, sp, #0x18
+ bl MOD05_021DC4FC
+ add r6, r6, #1
+ cmp r6, r7
+ blt _021DDD9A
+_021DDE6A:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DDE70: .word 0x00000F58
+_021DDE74: .word 0x0000019E
+
+ thumb_func_start MOD05_021DDE78
+MOD05_021DDE78: ; 0x021DDE78
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, sp, #0
+ add r1, r5, #0
+ bl MOD05_021DD168
+ ldr r0, [r4, #0x14]
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, [r4, #8]
+ cmp r1, r0
+ blt _021DDECE
+ ldr r0, [r4, #4]
+ ldr r1, [sp]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp]
+ ldr r0, [r4, #0x10]
+ add r0, r0, #1
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #0x14]
+ ldr r0, _021DDF3C ; =0xFFFF0000
+ and r0, r1
+ str r0, [r4, #0x14]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0xa
+ ldr r0, [r4, #8]
+ bge _021DDEB8
+ sub r0, r0, #1
+ b _021DDEBA
+_021DDEB8:
+ add r0, r0, #1
+_021DDEBA:
+ str r0, [r4, #8]
+ ldr r0, [r4, #0x10]
+ cmp r0, #0x14
+ blt _021DDECE
+ mov r0, #0
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #4]
+ sub r0, r0, #1
+ mul r0, r1
+ str r0, [r4, #4]
+_021DDECE:
+ ldr r0, [r4, #0x14]
+ asr r1, r0, #0x10
+ ldr r0, [r4, #0xc]
+ cmp r1, r0
+ blt _021DDEEA
+ mov r0, #1
+ ldr r1, [sp, #4]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x14]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ str r0, [r4, #0x14]
+_021DDEEA:
+ ldr r0, [r5, #4]
+ add r1, sp, #0
+ bl MOD05_021DC4FC
+ ldr r0, [sp]
+ mov r1, #0x64
+ asr r0, r0, #0xc
+ str r0, [sp]
+ ldr r0, [sp, #4]
+ asr r0, r0, #0xc
+ str r0, [sp, #4]
+ ldr r0, [r4, #0x18]
+ add r0, r0, #1
+ bl _s32_div_f
+ str r1, [r4, #0x18]
+ ldr r0, [r4, #0x14]
+ add r1, r0, #1
+ mov r0, #1
+ lsl r0, r0, #0x10
+ add r0, r1, r0
+ str r0, [r4, #0x14]
+ ldr r1, [sp, #4]
+ ldr r0, _021DDF40 ; =0xFFFFFEE4
+ cmp r1, r0
+ bge _021DDF24
+ sub r0, #0xc
+ cmp r1, r0
+ bgt _021DDF2C
+_021DDF24:
+ cmp r1, #0xd4
+ ble _021DDF38
+ cmp r1, #0xe8
+ bge _021DDF38
+_021DDF2C:
+ ldr r0, [r4]
+ mov r1, #1
+ str r1, [r0]
+ add r0, r5, #0
+ bl MOD05_021DD100
+_021DDF38:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+_021DDF3C: .word 0xFFFF0000
+_021DDF40: .word 0xFFFFFEE4
+
+ thumb_func_start MOD05_021DDF44
+MOD05_021DDF44: ; 0x021DDF44
+ push {r3, lr}
+ ldr r1, [r0, #8]
+ ldr r3, [r1, #0x20]
+ ldr r2, [r1, #0x1c]
+ cmp r3, #0
+ beq _021DDF56
+ cmp r3, #1
+ beq _021DDF62
+ b _021DDF70
+_021DDF56:
+ ldr r2, [r2]
+ cmp r2, #1
+ bne _021DDF70
+ add r2, r3, #1
+ str r2, [r1, #0x20]
+ b _021DDF70
+_021DDF62:
+ ldr r2, [r1, #0x24]
+ sub r2, r2, #1
+ str r2, [r1, #0x24]
+ bpl _021DDF70
+ bl MOD05_021DD100
+ pop {r3, pc}
+_021DDF70:
+ bl MOD05_021DDE78
+ pop {r3, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DDF78
+MOD05_021DDF78: ; 0x021DDF78
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ ldr r0, _021DE19C ; =0x00000F58
+ add r5, r1, #0
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r5, r2]
+ ldr r4, [r5, r0]
+ cmp r2, #5
+ bhi _021DE03C
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DDF98: ; jump table
+ .short _021DDFA4 - _021DDF98 - 2 ; case 0
+ .short _021DE004 - _021DDF98 - 2 ; case 1
+ .short _021DE046 - _021DDF98 - 2 ; case 2
+ .short _021DE0AE - _021DDF98 - 2 ; case 3
+ .short _021DE106 - _021DDF98 - 2 ; case 4
+ .short _021DE154 - _021DDF98 - 2 ; case 5
+_021DDFA4:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ sub r0, #8
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r2, #1
+ ldr r0, _021DE1A0 ; =MOD05_021DE1BC
+ str r2, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ mov r3, #0x1e
+ bl MOD05_021DD328
+ ldr r0, _021DE1A4 ; =0x00006D6F
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021DE1A8 ; =0x00006318
+ add r1, r4, #0
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ ldr r0, _021DE1AC ; =0x00000F64
+ lsl r2, r2, #2
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0xb4
+ str r1, [r0]
+ mov r0, #0
+ add r4, #0xb8
+ str r0, [r4]
+ ldr r0, _021DE1B0 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ b _021DE172
+_021DE004:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DE024
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DE172
+_021DE024:
+ ldr r2, _021DE1AC ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r4, #0x1c
+ add r0, #0x4c
+ add r1, r4, #0
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DE03C
+ cmp r6, #3
+ beq _021DE03E
+_021DE03C:
+ b _021DE172
+_021DE03E:
+ ldr r0, _021DE1B0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DE172
+_021DE046:
+ mov r2, #6
+ mov r3, #3
+ str r2, [sp]
+ add r0, r3, #0
+ str r3, [sp, #4]
+ sub r0, #8
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, _021DE1A0 ; =MOD05_021DE1BC
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DE1AC ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DE08C
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DE1A4 ; =0x00006D6F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DE1A8 ; =0x00006318
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5EC
+_021DE08C:
+ mov r0, #0
+ add r4, #0xb8
+ str r0, [r4]
+ mov r0, #3
+ str r0, [sp]
+ ldr r0, _021DE1B4 ; =MOD05_021DE2E0
+ ldr r1, _021DE1A0 ; =MOD05_021DE1BC
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x14
+ mov r3, #2
+ bl MOD05_021DD680
+ ldr r0, _021DE1B0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DE172
+_021DE0AE:
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r1, #1
+ strh r0, [r4, #6]
+ cmp r1, #0
+ bgt _021DE0CA
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021DE1BC
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021DE0CA:
+ ldr r0, _021DE1B8 ; =0x00000F66
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bne _021DE172
+ mov r0, #2
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x1e
+ mov r3, #5
+ bl MOD05_021DD350
+ ldr r0, _021DE1AC ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DE0F8
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DE0F8:
+ mov r0, #0
+ add r4, #0xb4
+ str r0, [r4]
+ ldr r0, _021DE1B0 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r5, r0]
+ b _021DE172
+_021DE106:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DE126
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DE172
+_021DE126:
+ ldr r0, _021DE1AC ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DE138
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD05_021DD5D0
+ b _021DE13A
+_021DE138:
+ mov r0, #1
+_021DE13A:
+ cmp r0, #1
+ bne _021DE172
+ cmp r6, #3
+ bne _021DE172
+ add r0, r5, #0
+ ldr r1, [r5, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021DE172
+ ldr r0, _021DE1B0 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ b _021DE172
+_021DE154:
+ add r0, #0xc
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DE16C
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DE16C:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021DE172:
+ ldr r0, _021DE1B0 ; =0x00000F62
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ beq _021DE198
+ cmp r0, #0
+ beq _021DE198
+ add r0, r5, #0
+ ldr r1, _021DE1B4 ; =MOD05_021DE2E0
+ add r0, #0xc
+ bl MOD05_021DD148
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD05_021DD2BC
+ add r0, r5, #0
+ bl MOD05_021DD164
+_021DE198:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021DE19C: .word 0x00000F58
+_021DE1A0: .word MOD05_021DE1BC
+_021DE1A4: .word 0x00006D6F
+_021DE1A8: .word 0x00006318
+_021DE1AC: .word 0x00000F64
+_021DE1B0: .word 0x00000F62
+_021DE1B4: .word MOD05_021DE2E0
+_021DE1B8: .word 0x00000F66
+
+ thumb_func_start MOD05_021DE1BC
+MOD05_021DE1BC: ; 0x021DE1BC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x58
+ ldr r3, _021DE2D4 ; =UNK05_021F67D8
+ add r2, sp, #0x48
+ str r0, [sp]
+ str r1, [sp, #4]
+ ldmia r3!, {r0, r1}
+ str r2, [sp, #0x10]
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r3, _021DE2D8 ; =UNK05_021F67C8
+ add r2, sp, #0x38
+ str r2, [sp, #0x14]
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldmia r3!, {r0, r1}
+ stmia r2!, {r0, r1}
+ ldr r1, _021DE2DC ; =0x00000F58
+ ldr r0, [sp]
+ ldr r6, [r0, r1]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ ble _021DE2D0
+ add r0, r6, #0
+ str r0, [sp, #0x18]
+ add r0, #0xb8
+ str r0, [sp, #0x18]
+ mov r0, #7
+ mvn r0, r0
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x1c]
+_021DE200:
+ ldr r0, [sp]
+ mov r1, #0x20
+ bl MOD05_021DD048
+ add r4, r0, #0
+ beq _021DE2D0
+ ldr r0, [sp, #0x18]
+ ldr r5, [r4, #8]
+ ldr r0, [r0]
+ add r1, r0, #1
+ ldr r0, [sp, #0x18]
+ str r1, [r0]
+ add r0, r6, #0
+ add r0, #0xb8
+ ldr r1, [r0]
+ mov r0, #0x32
+ lsl r0, r0, #4
+ cmp r1, r0
+ blt _021DE22E
+ add r1, r6, #0
+ add r1, #0xb8
+ mov r0, #0
+ str r0, [r1]
+_021DE22E:
+ add r0, r6, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ mov r1, #0xc8
+ bl _s32_div_f
+ lsl r0, r0, #2
+ ldr r1, [sp, #0x10]
+ str r0, [sp, #8]
+ ldr r0, [r1, r0]
+ str r0, [r5, #0x14]
+ mov r0, #0
+ str r0, [r5]
+ bl MTRandom
+ mov r1, #0x2a
+ bl _u32_div_f
+ add r0, r1, #4
+ str r0, [r5, #4]
+ sub r0, r0, #4
+ mov r1, #0xf
+ bl _s32_div_f
+ add r7, r0, #0
+ lsl r1, r7, #0x10
+ ldr r0, [r4, #4]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ add r0, r7, #1
+ neg r1, r0
+ str r1, [r5, #0x10]
+ ldr r2, [sp, #0x14]
+ ldr r1, [sp, #8]
+ ldr r1, [r2, r1]
+ mul r1, r0
+ str r1, [r5, #8]
+ mov r0, #0
+ str r0, [r5, #0xc]
+ add r0, sp, #0x20
+ add r1, r4, #0
+ bl MOD05_021DD168
+ add r3, sp, #0x20
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x2c
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bl MTRandom
+ mov r1, #0x69
+ lsl r1, r1, #2
+ bl _u32_div_f
+ mov r0, #1
+ sub r2, r0, r7
+ sub r0, #0x15
+ mul r0, r2
+ add r1, r0, r1
+ mov r0, #7
+ mvn r0, r0
+ str r0, [sp, #0x30]
+ mov r0, #0
+ str r0, [sp, #0x34]
+ str r1, [sp, #0x2c]
+ lsl r0, r1, #0xc
+ str r0, [sp, #0x2c]
+ ldr r0, [sp, #0x1c]
+ add r1, sp, #0x2c
+ str r0, [sp, #0x30]
+ ldr r0, [r4, #4]
+ bl MOD05_021DC4FC
+ ldr r0, [sp, #0xc]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ blt _021DE200
+_021DE2D0:
+ add sp, #0x58
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021DE2D4: .word UNK05_021F67D8
+_021DE2D8: .word UNK05_021F67C8
+_021DE2DC: .word 0x00000F58
+
+ thumb_func_start MOD05_021DE2E0
+MOD05_021DE2E0: ; 0x021DE2E0
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r0, sp, #0
+ add r1, r5, #0
+ ldr r4, [r5, #8]
+ bl MOD05_021DD168
+ add r3, sp, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0xc
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021DE30A
+ cmp r0, #1
+ beq _021DE356
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+_021DE30A:
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r1, [r4]
+ add r0, r1, #1
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ cmp r1, r0
+ ble _021DE32E
+ mov r0, #1
+ str r0, [r4, #0xc]
+_021DE32E:
+ ldr r0, [r4]
+ ldr r1, [r4, #0x14]
+ bl _s32_div_f
+ cmp r1, #0
+ bne _021DE34A
+ ldr r0, [r4, #0x10]
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #8]
+ cmp r0, #1
+ ble _021DE34A
+ sub r0, r0, #1
+ str r0, [r4, #8]
+_021DE34A:
+ ldr r0, [r5, #4]
+ add r1, sp, #0xc
+ bl MOD05_021DC4FC
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+_021DE356:
+ add r0, r5, #0
+ bl MOD05_021DD100
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DE360
+MOD05_021DE360: ; 0x021DE360
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ ldr r0, _021DE5D0 ; =0x00000F58
+ add r5, r1, #0
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r5, r2]
+ ldr r4, [r5, r0]
+ cmp r2, #5
+ bhi _021DE42E
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DE380: ; jump table
+ .short _021DE38C - _021DE380 - 2 ; case 0
+ .short _021DE3F4 - _021DE380 - 2 ; case 1
+ .short _021DE438 - _021DE380 - 2 ; case 2
+ .short _021DE4A8 - _021DE380 - 2 ; case 3
+ .short _021DE502 - _021DE380 - 2 ; case 4
+ .short _021DE552 - _021DE380 - 2 ; case 5
+_021DE38C:
+ mov r0, #6
+ str r0, [sp]
+ mov r0, #3
+ str r0, [sp, #4]
+ sub r0, #8
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r2, #1
+ ldr r0, _021DE5D4 ; =MOD05_021DE1BC
+ str r2, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ mov r3, #0x1e
+ bl MOD05_021DD328
+ ldr r0, _021DE5D8 ; =0x00006F6F
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021DE5DC ; =0x00006318
+ add r1, r4, #0
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ ldr r0, _021DE5E0 ; =0x00000F64
+ lsl r2, r2, #2
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ add r0, r4, #0
+ mov r1, #8
+ add r0, #0xb4
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ ldr r0, _021DE5E4 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ b _021DE570
+_021DE3F4:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DE416
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ str r1, [r0]
+ b _021DE570
+_021DE416:
+ ldr r2, _021DE5E0 ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r1, r4, #0
+ add r0, #0x4c
+ add r1, #0x1c
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DE42E
+ cmp r6, #3
+ beq _021DE430
+_021DE42E:
+ b _021DE570
+_021DE430:
+ ldr r0, _021DE5E4 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DE570
+_021DE438:
+ mov r2, #6
+ mov r3, #3
+ str r2, [sp]
+ add r0, r3, #0
+ str r3, [sp, #4]
+ sub r0, #8
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r0, #1
+ str r0, [sp, #0x10]
+ ldr r0, _021DE5D4 ; =MOD05_021DE1BC
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DE5E0 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DE47E
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DE5D8 ; =0x00006F6F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DE5DC ; =0x00006318
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5EC
+_021DE47E:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ mov r0, #3
+ str r0, [sp]
+ ldr r0, _021DE5E8 ; =MOD05_021DE2E0
+ ldr r1, _021DE5D4 ; =MOD05_021DE1BC
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x14
+ mov r3, #2
+ bl MOD05_021DD680
+ ldr r0, _021DE5E4 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DE570
+_021DE4A8:
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r1, #1
+ strh r0, [r4, #6]
+ cmp r1, #0
+ bgt _021DE4C4
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021DE1BC
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021DE4C4:
+ ldr r0, _021DE5EC ; =0x00000F66
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bne _021DE570
+ mov r0, #2
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x1e
+ mov r3, #5
+ bl MOD05_021DD350
+ ldr r0, _021DE5E0 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DE4F2
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DE4F2:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb4
+ str r1, [r0]
+ ldr r0, _021DE5E4 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r5, r0]
+ b _021DE570
+_021DE502:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DE524
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ str r1, [r0]
+ b _021DE570
+_021DE524:
+ ldr r0, _021DE5E0 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DE536
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5D0
+ b _021DE538
+_021DE536:
+ mov r0, #1
+_021DE538:
+ cmp r0, #1
+ bne _021DE570
+ cmp r6, #3
+ bne _021DE570
+ add r0, r5, #0
+ ldr r1, [r5, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021DE570
+ ldr r0, _021DE5E4 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ b _021DE570
+_021DE552:
+ add r0, #0xc
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DE56A
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DE56A:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021DE570:
+ ldr r0, _021DE5E4 ; =0x00000F62
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ beq _021DE5CA
+ cmp r0, #0
+ beq _021DE5CA
+ add r0, r5, #0
+ ldr r1, _021DE5E8 ; =MOD05_021DE2E0
+ add r0, #0xc
+ bl MOD05_021DD148
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD05_021DD2BC
+ add r0, r5, #0
+ bl MOD05_021DD164
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ add r0, r0, #6
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x18
+ sub r1, r1, r2
+ mov r0, #0x18
+ ror r1, r0
+ add r0, r4, #0
+ add r1, r2, r1
+ add r0, #0xbc
+ str r1, [r0]
+ add r4, #0xbc
+ ldr r1, [r4]
+ ldr r0, _021DE5F0 ; =0x000001FF
+ add r2, r1, #0
+ neg r1, r1
+ and r2, r0
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ and r0, r1
+ add r1, r2, #0
+ orr r1, r0
+ ldr r0, _021DE5F4 ; =0x04000018
+ str r1, [r0]
+_021DE5CA:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ nop
+_021DE5D0: .word 0x00000F58
+_021DE5D4: .word MOD05_021DE1BC
+_021DE5D8: .word 0x00006F6F
+_021DE5DC: .word 0x00006318
+_021DE5E0: .word 0x00000F64
+_021DE5E4: .word 0x00000F62
+_021DE5E8: .word MOD05_021DE2E0
+_021DE5EC: .word 0x00000F66
+_021DE5F0: .word 0x000001FF
+_021DE5F4: .word 0x04000018
+
+ thumb_func_start MOD05_021DE5F8
+MOD05_021DE5F8: ; 0x021DE5F8
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ ldr r2, _021DE74C ; =0x00000F58
+ add r4, r1, #0
+ add r0, r2, #0
+ add r0, #0xa
+ ldrh r0, [r4, r0]
+ ldr r5, [r4, r2]
+ cmp r0, #5
+ bls _021DE60E
+ b _021DE746
+_021DE60E:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DE61A: ; jump table
+ .short _021DE626 - _021DE61A - 2 ; case 0
+ .short _021DE65E - _021DE61A - 2 ; case 1
+ .short _021DE694 - _021DE61A - 2 ; case 2
+ .short _021DE6C2 - _021DE61A - 2 ; case 3
+ .short _021DE6EE - _021DE61A - 2 ; case 4
+ .short _021DE728 - _021DE61A - 2 ; case 5
+_021DE626:
+ ldr r0, _021DE750 ; =0x0000716F
+ add r2, #0xc
+ str r0, [sp]
+ ldr r0, _021DE754 ; =0x00006B5A
+ add r1, r5, #0
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ ldrh r0, [r4, r2]
+ mov r2, #0x41
+ lsl r2, r2, #2
+ str r0, [sp, #0xc]
+ ldr r3, [r4]
+ add r0, r5, #0
+ ldr r2, [r3, r2]
+ add r0, #0x30
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ mov r0, #0x10
+ add r5, #0x98
+ str r0, [r5]
+ ldr r0, _021DE758 ; =0x00000F62
+ mov r1, #1
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE65E:
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DE678
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ add r5, #0x98
+ sub r0, r0, #1
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DE678:
+ add r2, #0xc
+ ldrh r2, [r4, r2]
+ add r0, r5, #0
+ add r0, #0x30
+ add r1, r5, #0
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DE746
+ ldr r0, _021DE758 ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE694:
+ add r2, #0xc
+ ldrh r0, [r4, r2]
+ cmp r0, #0
+ beq _021DE6B8
+ mov r0, #0x41
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DE750 ; =0x0000716F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DE754 ; =0x00006B5A
+ mov r1, #3
+ str r0, [r5]
+ bl MOD05_021DD49C
+ add r0, r5, #0
+ bl MOD05_021DD5EC
+_021DE6B8:
+ ldr r0, _021DE758 ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE6C2:
+ add r0, r2, #0
+ add r0, #0xe
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bne _021DE746
+ add r2, #0xc
+ ldrh r0, [r4, r2]
+ cmp r0, #0
+ beq _021DE6DE
+ add r0, r5, #0
+ mov r1, #2
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DE6DE:
+ mov r0, #0x10
+ add r5, #0x98
+ str r0, [r5]
+ ldr r0, _021DE758 ; =0x00000F62
+ mov r1, #4
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE6EE:
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DE708
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ add r5, #0x98
+ sub r0, r0, #1
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DE708:
+ add r2, #0xc
+ ldrh r0, [r4, r2]
+ cmp r0, #0
+ beq _021DE718
+ add r0, r5, #0
+ bl MOD05_021DD5D0
+ b _021DE71A
+_021DE718:
+ mov r0, #1
+_021DE71A:
+ cmp r0, #1
+ bne _021DE746
+ ldr r0, _021DE758 ; =0x00000F62
+ mov r1, #5
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE728:
+ add r2, #0xc
+ ldrh r0, [r4, r2]
+ cmp r0, #0
+ beq _021DE740
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r5]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DE740:
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+_021DE746:
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021DE74C: .word 0x00000F58
+_021DE750: .word 0x0000716F
+_021DE754: .word 0x00006B5A
+_021DE758: .word 0x00000F62
+
+ thumb_func_start MOD05_021DE75C
+MOD05_021DE75C: ; 0x021DE75C
+ push {r3, r4, r5, lr}
+ sub sp, #0x10
+ ldr r2, _021DE8B0 ; =0x00000F58
+ add r4, r1, #0
+ add r0, r2, #0
+ add r0, #0xa
+ ldrh r0, [r4, r0]
+ ldr r5, [r4, r2]
+ cmp r0, #5
+ bls _021DE772
+ b _021DE8AA
+_021DE772:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DE77E: ; jump table
+ .short _021DE78A - _021DE77E - 2 ; case 0
+ .short _021DE7C2 - _021DE77E - 2 ; case 1
+ .short _021DE7F8 - _021DE77E - 2 ; case 2
+ .short _021DE826 - _021DE77E - 2 ; case 3
+ .short _021DE852 - _021DE77E - 2 ; case 4
+ .short _021DE88C - _021DE77E - 2 ; case 5
+_021DE78A:
+ ldr r0, _021DE8B4 ; =0x0000658F
+ add r2, #0xc
+ str r0, [sp]
+ ldr r0, _021DE8B8 ; =0x00006B5A
+ add r1, r5, #0
+ str r0, [sp, #4]
+ mov r0, #2
+ str r0, [sp, #8]
+ ldrh r0, [r4, r2]
+ mov r2, #0x41
+ lsl r2, r2, #2
+ str r0, [sp, #0xc]
+ ldr r3, [r4]
+ add r0, r5, #0
+ ldr r2, [r3, r2]
+ add r0, #0x30
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ mov r0, #0x10
+ add r5, #0x98
+ str r0, [r5]
+ ldr r0, _021DE8BC ; =0x00000F62
+ mov r1, #1
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE7C2:
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DE7DC
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ add r5, #0x98
+ sub r0, r0, #1
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DE7DC:
+ add r2, #0xc
+ ldrh r2, [r4, r2]
+ add r0, r5, #0
+ add r0, #0x30
+ add r1, r5, #0
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DE8AA
+ ldr r0, _021DE8BC ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE7F8:
+ add r2, #0xc
+ ldrh r0, [r4, r2]
+ cmp r0, #0
+ beq _021DE81C
+ mov r0, #0x41
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DE8B4 ; =0x0000658F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DE8B8 ; =0x00006B5A
+ mov r1, #3
+ str r0, [r5]
+ bl MOD05_021DD49C
+ add r0, r5, #0
+ bl MOD05_021DD5EC
+_021DE81C:
+ ldr r0, _021DE8BC ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE826:
+ add r0, r2, #0
+ add r0, #0xe
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bne _021DE8AA
+ add r2, #0xc
+ ldrh r0, [r4, r2]
+ cmp r0, #0
+ beq _021DE842
+ add r0, r5, #0
+ mov r1, #2
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DE842:
+ mov r0, #0x10
+ add r5, #0x98
+ str r0, [r5]
+ ldr r0, _021DE8BC ; =0x00000F62
+ mov r1, #4
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE852:
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DE86C
+ add r0, r5, #0
+ add r0, #0x98
+ ldr r0, [r0]
+ add r5, #0x98
+ sub r0, r0, #1
+ add sp, #0x10
+ str r0, [r5]
+ pop {r3, r4, r5, pc}
+_021DE86C:
+ add r2, #0xc
+ ldrh r0, [r4, r2]
+ cmp r0, #0
+ beq _021DE87C
+ add r0, r5, #0
+ bl MOD05_021DD5D0
+ b _021DE87E
+_021DE87C:
+ mov r0, #1
+_021DE87E:
+ cmp r0, #1
+ bne _021DE8AA
+ ldr r0, _021DE8BC ; =0x00000F62
+ mov r1, #5
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021DE88C:
+ add r2, #0xc
+ ldrh r0, [r4, r2]
+ cmp r0, #0
+ beq _021DE8A4
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r5]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DE8A4:
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+_021DE8AA:
+ add sp, #0x10
+ pop {r3, r4, r5, pc}
+ nop
+_021DE8B0: .word 0x00000F58
+_021DE8B4: .word 0x0000658F
+_021DE8B8: .word 0x00006B5A
+_021DE8BC: .word 0x00000F62
+
+ thumb_func_start MOD05_021DE8C0
+MOD05_021DE8C0: ; 0x021DE8C0
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r0, _021DEA58 ; =0x00000F58
+ add r4, r1, #0
+ add r1, r0, #0
+ add r1, #0xa
+ ldrh r1, [r4, r1]
+ ldr r5, [r4, r0]
+ cmp r1, #5
+ bls _021DE8D6
+ b _021DEA54
+_021DE8D6:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021DE8E2: ; jump table
+ .short _021DE8EE - _021DE8E2 - 2 ; case 0
+ .short _021DE94C - _021DE8E2 - 2 ; case 1
+ .short _021DE97A - _021DE8E2 - 2 ; case 2
+ .short _021DE9C8 - _021DE8E2 - 2 ; case 3
+ .short _021DE9FC - _021DE8E2 - 2 ; case 4
+ .short _021DEA36 - _021DE8E2 - 2 ; case 5
+_021DE8EE:
+ ldr r1, _021DEA5C ; =0x00007A0F
+ mov r2, #0x41
+ str r1, [sp]
+ ldr r1, _021DEA60 ; =0x00007FFF
+ add r0, #0xc
+ str r1, [sp, #4]
+ mov r1, #2
+ str r1, [sp, #8]
+ ldrh r0, [r4, r0]
+ add r1, r5, #0
+ lsl r2, r2, #2
+ str r0, [sp, #0xc]
+ ldr r3, [r4]
+ add r0, r5, #0
+ ldr r2, [r3, r2]
+ add r0, #0x44
+ ldr r2, [r2, #0x44]
+ add r1, #0x14
+ mov r3, #5
+ bl MOD05_021DD420
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #0x1e
+ bl MOD05_021DC6EC
+ mov r0, #0
+ mov r1, #0x10
+ bl MOD05_021DC6D4
+ ldr r1, _021DEA64 ; =0x0400000C
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #3
+ orr r0, r2
+ strh r0, [r1]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021DEA68 ; =0x00000F62
+ mov r1, #1
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DE94C:
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD05_021DD5D0
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r7, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #1
+ bne _021DEA54
+ cmp r7, #1
+ bne _021DEA54
+ ldr r0, _021DEA68 ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DE97A:
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021DE9A0
+ mov r0, #0x41
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DEA5C ; =0x00007A0F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DEA60 ; =0x00007FFF
+ mov r1, #5
+ str r0, [r5, #0x14]
+ bl MOD05_021DD49C
+ add r5, #0x14
+ add r0, r5, #0
+ bl MOD05_021DD5EC
+_021DE9A0:
+ mov r0, #0x10
+ mov r1, #0
+ bl MOD05_021DC6D4
+ ldr r1, _021DEA64 ; =0x0400000C
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #3
+ orr r0, r2
+ strh r0, [r1]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021DEA68 ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DE9C8:
+ add r1, r0, #0
+ add r1, #0xe
+ ldrh r1, [r4, r1]
+ cmp r1, #5
+ bne _021DEA54
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021DE9E6
+ add r0, r5, #0
+ add r0, #0x14
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DE9E6:
+ add r0, r5, #0
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #0x1e
+ bl MOD05_021DC6EC
+ ldr r0, _021DEA68 ; =0x00000F62
+ mov r1, #4
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DE9FC:
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021DEA10
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD05_021DD5D0
+ add r6, r0, #0
+ b _021DEA12
+_021DEA10:
+ mov r6, #1
+_021DEA12:
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r7, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #1
+ bne _021DEA54
+ cmp r7, #1
+ bne _021DEA54
+ ldr r0, _021DEA68 ; =0x00000F62
+ mov r1, #5
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021DEA36:
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021DEA4E
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DEA4E:
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+_021DEA54:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021DEA58: .word 0x00000F58
+_021DEA5C: .word 0x00007A0F
+_021DEA60: .word 0x00007FFF
+_021DEA64: .word 0x0400000C
+_021DEA68: .word 0x00000F62
+
+ thumb_func_start MOD05_021DEA6C
+MOD05_021DEA6C: ; 0x021DEA6C
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ ldr r0, _021DEC8C ; =0x00000F58
+ add r5, r1, #0
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r5, r2]
+ ldr r4, [r5, r0]
+ cmp r2, #5
+ bhi _021DEB2E
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DEA8C: ; jump table
+ .short _021DEA98 - _021DEA8C - 2 ; case 0
+ .short _021DEAF6 - _021DEA8C - 2 ; case 1
+ .short _021DEB38 - _021DEA8C - 2 ; case 2
+ .short _021DEB9C - _021DEA8C - 2 ; case 3
+ .short _021DEBF4 - _021DEA8C - 2 ; case 4
+ .short _021DEC42 - _021DEA8C - 2 ; case 5
+_021DEA98:
+ mov r0, #8
+ str r0, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ sub r0, r2, #3
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _021DEC90 ; =MOD05_021DECAC
+ mov r3, #0xf
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DEC94 ; =0x00006EEF
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021DEC98 ; =0x0000169A
+ lsl r2, r2, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021DEC9C ; =0x00000F64
+ add r1, r4, #0
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb4
+ str r1, [r0]
+ add r4, #0xb8
+ str r1, [r4]
+ ldr r0, _021DECA0 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ b _021DEC60
+_021DEAF6:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DEB16
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DEC60
+_021DEB16:
+ ldr r2, _021DEC9C ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r4, #0x1c
+ add r0, #0x4c
+ add r1, r4, #0
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DEB2E
+ cmp r6, #3
+ beq _021DEB30
+_021DEB2E:
+ b _021DEC60
+_021DEB30:
+ ldr r0, _021DECA0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DEC60
+_021DEB38:
+ mov r2, #8
+ mov r3, #1
+ str r2, [sp]
+ str r3, [sp, #4]
+ sub r0, r3, #3
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _021DEC90 ; =MOD05_021DECAC
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DEC9C ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DEB7C
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DEC94 ; =0x00006EEF
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DEC98 ; =0x0000169A
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5EC
+_021DEB7C:
+ mov r0, #0
+ add r4, #0xb8
+ str r0, [r4]
+ mov r3, #2
+ ldr r0, _021DECA4 ; =MOD05_021DEDB4
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r1, _021DEC90 ; =MOD05_021DECAC
+ add r0, r5, #0
+ mov r2, #0x18
+ bl MOD05_021DD680
+ ldr r0, _021DECA0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DEC60
+_021DEB9C:
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r1, #1
+ strh r0, [r4, #6]
+ cmp r1, #0
+ bgt _021DEBB8
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021DECAC
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021DEBB8:
+ ldr r0, _021DECA8 ; =0x00000F66
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bne _021DEC60
+ mov r0, #2
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0xf
+ mov r3, #2
+ bl MOD05_021DD350
+ ldr r0, _021DEC9C ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DEBE6
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DEBE6:
+ mov r0, #0x1f
+ add r4, #0xb4
+ str r0, [r4]
+ ldr r0, _021DECA0 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r5, r0]
+ b _021DEC60
+_021DEBF4:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DEC14
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DEC60
+_021DEC14:
+ ldr r0, _021DEC9C ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DEC26
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD05_021DD5D0
+ b _021DEC28
+_021DEC26:
+ mov r0, #1
+_021DEC28:
+ cmp r0, #1
+ bne _021DEC60
+ cmp r6, #3
+ bne _021DEC60
+ add r0, r5, #0
+ ldr r1, [r5, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021DEC60
+ ldr r0, _021DECA0 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ b _021DEC60
+_021DEC42:
+ add r0, #0xc
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DEC5A
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DEC5A:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021DEC60:
+ ldr r0, _021DECA0 ; =0x00000F62
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ beq _021DEC86
+ cmp r0, #0
+ beq _021DEC86
+ add r0, r5, #0
+ ldr r1, _021DECA4 ; =MOD05_021DEDB4
+ add r0, #0xc
+ bl MOD05_021DD148
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD05_021DD2BC
+ add r0, r5, #0
+ bl MOD05_021DD164
+_021DEC86:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ nop
+_021DEC8C: .word 0x00000F58
+_021DEC90: .word MOD05_021DECAC
+_021DEC94: .word 0x00006EEF
+_021DEC98: .word 0x0000169A
+_021DEC9C: .word 0x00000F64
+_021DECA0: .word 0x00000F62
+_021DECA4: .word MOD05_021DEDB4
+_021DECA8: .word 0x00000F66
+
+ thumb_func_start MOD05_021DECAC
+MOD05_021DECAC: ; 0x021DECAC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #4]
+ ldr r1, _021DEDA0 ; =0x00000F58
+ str r0, [sp]
+ ldr r4, [r0, r1]
+ mov r1, #5
+ add r0, r4, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ lsl r1, r1, #6
+ add r0, r0, #1
+ bl _s32_div_f
+ add r0, r4, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r4, #0xb8
+ ldr r0, [r4]
+ mov r1, #0x28
+ bl _s32_div_f
+ mov r1, #0
+ str r1, [sp, #8]
+ ldr r1, [sp, #4]
+ cmp r1, #0
+ ble _021DED9A
+ lsl r6, r0, #2
+_021DECE4:
+ ldr r0, [sp]
+ mov r1, #0x20
+ bl MOD05_021DD048
+ add r4, r0, #0
+ beq _021DED9A
+ ldr r5, [r4, #8]
+ mov r0, #0
+ str r0, [r5]
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ add r1, #0xf
+ str r1, [r5, #4]
+ sub r1, #0xf
+ add r0, r1, #0
+ mov r1, #6
+ bl _s32_div_f
+ mov r1, #3
+ sub r7, r1, r0
+ ldr r1, _021DEDA4 ; =UNK05_021F687C
+ add r0, r7, #1
+ ldr r1, [r1, r6]
+ mul r1, r0
+ str r1, [r5, #8]
+ ldr r1, _021DEDA8 ; =UNK05_021F683C
+ ldr r1, [r1, r6]
+ mul r1, r0
+ str r1, [r5, #0x10]
+ mov r0, #0
+ str r0, [r5, #0xc]
+ ldr r0, _021DEDA8 ; =UNK05_021F683C
+ ldr r0, [r0, r6]
+ str r0, [r5, #0x14]
+ bl MTRandom
+ mov r1, #0xfa
+ lsl r1, r1, #2
+ bl _u32_div_f
+ ldr r0, _021DEDAC ; =0x00000309
+ cmp r1, r0
+ bne _021DED4E
+ ldr r1, [r5, #8]
+ mov r7, #4
+ lsr r0, r1, #0x1f
+ add r0, r1, r0
+ asr r0, r0, #1
+ add r0, r1, r0
+ str r0, [r5, #8]
+_021DED4E:
+ lsl r1, r7, #0x10
+ ldr r0, [r4, #4]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ add r0, sp, #0xc
+ add r1, r4, #0
+ bl MOD05_021DD168
+ bl MTRandom
+ mov r1, #0x18
+ bl _u32_div_f
+ ldr r0, _021DEDB0 ; =0x00000106
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ bl MTRandom
+ mov r1, #0xc0
+ bl _u32_div_f
+ sub r1, #0x40
+ str r1, [sp, #0x10]
+ lsl r0, r1, #0xc
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #4]
+ add r1, sp, #0xc
+ bl MOD05_021DC4FC
+ ldr r0, [sp, #8]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ str r1, [sp, #8]
+ cmp r1, r0
+ blt _021DECE4
+_021DED9A:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021DEDA0: .word 0x00000F58
+_021DEDA4: .word UNK05_021F687C
+_021DEDA8: .word UNK05_021F683C
+_021DEDAC: .word 0x00000309
+_021DEDB0: .word 0x00000106
+
+ thumb_func_start MOD05_021DEDB4
+MOD05_021DEDB4: ; 0x021DEDB4
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r0, sp, #0
+ add r1, r5, #0
+ ldr r4, [r5, #8]
+ bl MOD05_021DD168
+ add r3, sp, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0xc
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021DEDDE
+ cmp r0, #1
+ beq _021DEE22
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+_021DEDDE:
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r0, [r4]
+ mov r1, #5
+ bl _s32_div_f
+ cmp r1, #0
+ bne _021DEE06
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+_021DEE06:
+ ldr r1, [r4]
+ add r0, r1, #1
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ cmp r1, r0
+ ble _021DEE16
+ mov r0, #1
+ str r0, [r4, #0xc]
+_021DEE16:
+ ldr r0, [r5, #4]
+ add r1, sp, #0xc
+ bl MOD05_021DC4FC
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+_021DEE22:
+ add r0, r5, #0
+ bl MOD05_021DD100
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021DEE2C
+MOD05_021DEE2C: ; 0x021DEE2C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ ldr r0, _021DF0F0 ; =0x00000F58
+ add r5, r1, #0
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r5, r2]
+ ldr r4, [r5, r0]
+ cmp r2, #5
+ bhi _021DEEFE
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DEE4C: ; jump table
+ .short _021DEE58 - _021DEE4C - 2 ; case 0
+ .short _021DEEC4 - _021DEE4C - 2 ; case 1
+ .short _021DEF10 - _021DEE4C - 2 ; case 2
+ .short _021DEF8A - _021DEE4C - 2 ; case 3
+ .short _021DF01E - _021DEE4C - 2 ; case 4
+ .short _021DF06C - _021DEE4C - 2 ; case 5
+_021DEE58:
+ mov r0, #8
+ str r0, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ sub r0, r2, #3
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _021DF0F4 ; =MOD05_021DECAC
+ mov r3, #0xf
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DF0F8 ; =0x00006EEF
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021DF0FC ; =0x0000169A
+ lsl r2, r2, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021DF100 ; =0x00000F64
+ add r1, r4, #0
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ str r1, [r0]
+ ldr r0, _021DF104 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ b _021DF08A
+_021DEEC4:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DEEE6
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ str r1, [r0]
+ b _021DF08A
+_021DEEE6:
+ ldr r2, _021DF100 ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r1, r4, #0
+ add r0, #0x4c
+ add r1, #0x1c
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DEEFE
+ cmp r6, #3
+ beq _021DEF00
+_021DEEFE:
+ b _021DF08A
+_021DEF00:
+ ldr r0, _021DF104 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ b _021DF08A
+_021DEF10:
+ mov r2, #8
+ mov r3, #1
+ str r2, [sp]
+ str r3, [sp, #4]
+ sub r0, r3, #3
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #2
+ str r0, [sp, #0x10]
+ ldr r0, _021DF0F4 ; =MOD05_021DECAC
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DF100 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DEF54
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DF0F8 ; =0x00006EEF
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DF0FC ; =0x0000169A
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5EC
+_021DEF54:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ str r1, [r0]
+ mov r3, #2
+ ldr r0, _021DF108 ; =MOD05_021DEDB4
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r1, _021DF0F4 ; =MOD05_021DECAC
+ add r0, r5, #0
+ mov r2, #0x18
+ bl MOD05_021DD680
+ ldr r0, _021DF104 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ b _021DF08A
+_021DEF8A:
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r1, #1
+ strh r0, [r4, #6]
+ cmp r1, #0
+ bgt _021DEFDA
+ add r0, r4, #0
+ add r0, #0xb8
+ ldr r0, [r0]
+ mov r1, #0x28
+ bl _s32_div_f
+ lsl r1, r0, #2
+ ldr r0, _021DF10C ; =UNK05_021F681C
+ ldr r1, [r0, r1]
+ add r0, r4, #0
+ add r0, #0xc0
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc0
+ ldr r1, [r0]
+ mov r0, #5
+ mvn r0, r0
+ cmp r1, r0
+ bgt _021DEFCA
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ lsl r1, r1, #1
+ bl MOD05_021DECAC
+ b _021DEFD4
+_021DEFCA:
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021DECAC
+_021DEFD4:
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021DEFDA:
+ ldr r0, _021DF110 ; =0x00000F66
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bne _021DF08A
+ mov r0, #2
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0xf
+ mov r3, #2
+ bl MOD05_021DD350
+ ldr r0, _021DF100 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF008
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DF008:
+ add r0, r4, #0
+ mov r1, #0x1f
+ add r0, #0xb4
+ str r1, [r0]
+ ldr r1, _021DF104 ; =0x00000F62
+ mov r0, #4
+ strh r0, [r5, r1]
+ mov r1, #0
+ bl FUN_0201E6E4
+ b _021DF08A
+_021DF01E:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DF040
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ str r1, [r0]
+ b _021DF08A
+_021DF040:
+ ldr r0, _021DF100 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF052
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5D0
+ add r7, r0, #0
+_021DF052:
+ cmp r7, #1
+ bne _021DF08A
+ cmp r6, #3
+ bne _021DF08A
+ add r0, r5, #0
+ ldr r1, [r5, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021DF08A
+ ldr r0, _021DF104 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ b _021DF08A
+_021DF06C:
+ add r0, #0xc
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF084
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DF084:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021DF08A:
+ ldr r0, _021DF104 ; =0x00000F62
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ beq _021DF0EC
+ cmp r0, #0
+ beq _021DF0EC
+ add r0, r5, #0
+ ldr r1, _021DF108 ; =MOD05_021DEDB4
+ add r0, #0xc
+ bl MOD05_021DD148
+ add r0, r5, #0
+ add r1, sp, #0x1c
+ add r2, sp, #0x18
+ bl MOD05_021DD2BC
+ add r0, r5, #0
+ bl MOD05_021DD164
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ add r0, r0, #6
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x18
+ sub r1, r1, r2
+ mov r0, #0x18
+ ror r1, r0
+ add r0, r4, #0
+ add r1, r2, r1
+ add r0, #0xbc
+ str r1, [r0]
+ add r4, #0xbc
+ ldr r3, [r4]
+ ldr r0, [sp, #0x1c]
+ lsl r1, r3, #1
+ sub r1, r1, r0
+ add r2, r1, #0
+ ldr r1, [sp, #0x18]
+ ldr r0, _021DF114 ; =0x000001FF
+ sub r1, r1, r3
+ and r2, r0
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ and r0, r1
+ add r1, r2, #0
+ orr r1, r0
+ ldr r0, _021DF118 ; =0x04000018
+ str r1, [r0]
+_021DF0EC:
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021DF0F0: .word 0x00000F58
+_021DF0F4: .word MOD05_021DECAC
+_021DF0F8: .word 0x00006EEF
+_021DF0FC: .word 0x0000169A
+_021DF100: .word 0x00000F64
+_021DF104: .word 0x00000F62
+_021DF108: .word MOD05_021DEDB4
+_021DF10C: .word UNK05_021F681C
+_021DF110: .word 0x00000F66
+_021DF114: .word 0x000001FF
+_021DF118: .word 0x04000018
+
+ thumb_func_start MOD05_021DF11C
+MOD05_021DF11C: ; 0x021DF11C
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ ldr r0, _021DF3BC ; =0x00000F58
+ add r5, r1, #0
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r5, r2]
+ ldr r4, [r5, r0]
+ cmp r2, #5
+ bhi _021DF1EA
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DF13C: ; jump table
+ .short _021DF148 - _021DF13C - 2 ; case 0
+ .short _021DF1B0 - _021DF13C - 2 ; case 1
+ .short _021DF1FC - _021DF13C - 2 ; case 2
+ .short _021DF270 - _021DF13C - 2 ; case 3
+ .short _021DF2F8 - _021DF13C - 2 ; case 4
+ .short _021DF348 - _021DF13C - 2 ; case 5
+_021DF148:
+ mov r0, #0xa
+ str r0, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ sub r0, r2, #5
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r0, #3
+ str r0, [sp, #0x10]
+ ldr r0, _021DF3C0 ; =MOD05_021DF3E8
+ mov r3, #0x1e
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DF3C4 ; =0x00006B6F
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021DF3C8 ; =0x00006318
+ lsl r2, r2, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021DF3CC ; =0x00000F64
+ add r1, r4, #0
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ add r0, r4, #0
+ mov r1, #0x10
+ add r0, #0xb4
+ str r1, [r0]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ ldr r0, _021DF3D0 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ b _021DF366
+_021DF1B0:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DF1D2
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ str r1, [r0]
+ b _021DF366
+_021DF1D2:
+ ldr r2, _021DF3CC ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r1, r4, #0
+ add r0, #0x4c
+ add r1, #0x1c
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DF1EA
+ cmp r6, #3
+ beq _021DF1EC
+_021DF1EA:
+ b _021DF366
+_021DF1EC:
+ ldr r0, _021DF3D0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ b _021DF366
+_021DF1FC:
+ mov r2, #0xa
+ mov r3, #1
+ str r2, [sp]
+ str r3, [sp, #4]
+ sub r0, r3, #5
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r0, #3
+ str r0, [sp, #0x10]
+ ldr r0, _021DF3C0 ; =MOD05_021DF3E8
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DF3CC ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF240
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DF3C4 ; =0x00006B6F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DF3C8 ; =0x00006318
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5EC
+_021DF240:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ mov r3, #2
+ ldr r0, _021DF3D4 ; =MOD05_021DF500
+ str r3, [sp]
+ str r0, [sp, #4]
+ ldr r1, _021DF3C0 ; =MOD05_021DF3E8
+ add r0, r5, #0
+ mov r2, #0x14
+ bl MOD05_021DD680
+ ldr r0, _021DF3D0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ b _021DF366
+_021DF270:
+ mov r1, #6
+ ldrsh r2, [r4, r1]
+ sub r0, r2, #1
+ strh r0, [r4, #6]
+ cmp r2, #0
+ bgt _021DF2B4
+ add r0, r4, #0
+ add r0, #0xb8
+ ldr r2, [r0]
+ sub r1, #0xe
+ asr r0, r2, #8
+ lsr r0, r0, #0x17
+ add r0, r2, r0
+ asr r0, r0, #9
+ lsl r2, r0, #2
+ ldr r0, _021DF3D8 ; =UNK05_021F67F8
+ ldr r0, [r0, r2]
+ cmp r0, r1
+ bgt _021DF2A4
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ lsl r1, r1, #1
+ bl MOD05_021DF3E8
+ b _021DF2AE
+_021DF2A4:
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021DF3E8
+_021DF2AE:
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021DF2B4:
+ ldr r0, _021DF3DC ; =0x00000F66
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bne _021DF366
+ mov r0, #3
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0xc
+ mov r3, #4
+ bl MOD05_021DD350
+ ldr r0, _021DF3CC ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF2E2
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DF2E2:
+ add r0, r4, #0
+ mov r1, #0x14
+ add r0, #0xb4
+ str r1, [r0]
+ ldr r1, _021DF3D0 ; =0x00000F62
+ mov r0, #4
+ strh r0, [r5, r1]
+ mov r1, #0
+ bl FUN_0201E6E4
+ b _021DF366
+_021DF2F8:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DF31A
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ str r1, [r0]
+ b _021DF366
+_021DF31A:
+ ldr r0, _021DF3CC ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF32C
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5D0
+ b _021DF32E
+_021DF32C:
+ mov r0, #1
+_021DF32E:
+ cmp r0, #1
+ bne _021DF366
+ cmp r6, #3
+ bne _021DF366
+ add r0, r5, #0
+ ldr r1, [r5, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021DF366
+ ldr r0, _021DF3D0 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ b _021DF366
+_021DF348:
+ add r0, #0xc
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF360
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DF360:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021DF366:
+ ldr r0, _021DF3D0 ; =0x00000F62
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ beq _021DF3B8
+ cmp r0, #0
+ beq _021DF3B8
+ add r0, r5, #0
+ ldr r1, _021DF3D4 ; =MOD05_021DF500
+ add r0, #0xc
+ bl MOD05_021DD148
+ add r0, r5, #0
+ bl MOD05_021DD164
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ add r0, #0xc
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x18
+ sub r1, r1, r2
+ mov r0, #0x18
+ ror r1, r0
+ add r0, r4, #0
+ add r1, r2, r1
+ add r0, #0xbc
+ str r1, [r0]
+ add r4, #0xbc
+ ldr r3, [r4]
+ ldr r0, _021DF3E0 ; =0x000001FF
+ lsl r1, r3, #1
+ add r2, r1, #0
+ neg r1, r3
+ and r2, r0
+ lsl r1, r1, #0x10
+ lsl r0, r0, #0x10
+ and r0, r1
+ add r1, r2, #0
+ orr r1, r0
+ ldr r0, _021DF3E4 ; =0x04000018
+ str r1, [r0]
+_021DF3B8:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021DF3BC: .word 0x00000F58
+_021DF3C0: .word MOD05_021DF3E8
+_021DF3C4: .word 0x00006B6F
+_021DF3C8: .word 0x00006318
+_021DF3CC: .word 0x00000F64
+_021DF3D0: .word 0x00000F62
+_021DF3D4: .word MOD05_021DF500
+_021DF3D8: .word UNK05_021F67F8
+_021DF3DC: .word 0x00000F66
+_021DF3E0: .word 0x000001FF
+_021DF3E4: .word 0x04000018
+
+ thumb_func_start MOD05_021DF3E8
+MOD05_021DF3E8: ; 0x021DF3E8
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ ldr r2, _021DF4F4 ; =0x00000F58
+ str r0, [sp]
+ ldr r0, [r0, r2]
+ add r2, r0, #0
+ add r2, #0xb8
+ ldr r2, [r2]
+ add r3, r2, #1
+ add r2, r0, #0
+ add r2, #0xb8
+ str r3, [r2]
+ add r2, r0, #0
+ add r2, #0xb8
+ ldr r3, [r2]
+ mov r2, #2
+ lsl r2, r2, #0xa
+ cmp r3, r2
+ blt _021DF416
+ add r2, r0, #0
+ mov r3, #0
+ add r2, #0xb8
+ str r3, [r2]
+_021DF416:
+ add r0, #0xb8
+ ldr r2, [r0]
+ asr r0, r2, #8
+ lsr r0, r0, #0x17
+ add r0, r2, r0
+ asr r2, r0, #9
+ mov r0, #0
+ str r0, [sp, #8]
+ lsl r0, r1, #2
+ str r0, [sp, #4]
+ cmp r0, #0
+ ble _021DF4EE
+ lsl r4, r2, #2
+_021DF430:
+ ldr r0, [sp]
+ mov r1, #0x20
+ bl MOD05_021DD048
+ add r6, r0, #0
+ beq _021DF4EE
+ ldr r5, [r6, #8]
+ mov r0, #0
+ str r0, [r5]
+ bl MTRandom
+ mov r1, #6
+ bl _u32_div_f
+ add r1, #0x12
+ str r1, [r5, #4]
+ bl MTRandom
+ add r7, r0, #0
+ mov r1, #3
+ and r7, r1
+ lsl r1, r7, #0x10
+ ldr r0, [r6, #4]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ ldr r1, _021DF4F8 ; =UNK05_021F67F8
+ add r0, r7, #1
+ ldr r1, [r1, r4]
+ mul r1, r0
+ str r1, [r5, #0x10]
+ ldr r1, _021DF4FC ; =UNK05_021F67E8
+ ldr r1, [r1, r4]
+ mul r1, r0
+ mov r0, #0
+ str r1, [r5, #8]
+ str r0, [r5, #0xc]
+ cmp r7, #3
+ bne _021DF492
+ ldr r0, _021DF4F8 ; =UNK05_021F67F8
+ ldr r1, [r5, #0x10]
+ ldr r0, [r0, r4]
+ add r0, r1, r0
+ str r0, [r5, #0x10]
+ ldr r0, _021DF4FC ; =UNK05_021F67E8
+ ldr r1, [r5, #8]
+ ldr r0, [r0, r4]
+ add r0, r1, r0
+ str r0, [r5, #8]
+_021DF492:
+ ldr r0, _021DF4F8 ; =UNK05_021F67F8
+ add r1, r6, #0
+ ldr r0, [r0, r4]
+ str r0, [r5, #0x14]
+ add r0, sp, #0xc
+ bl MOD05_021DD168
+ add r3, sp, #0xc
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x18
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bl MTRandom
+ mov r1, #0x18
+ bl _u32_div_f
+ mov r0, #1
+ lsl r0, r0, #8
+ add r0, r1, r0
+ str r0, [sp, #0x18]
+ bl MTRandom
+ mov r1, #0xa8
+ bl _u32_div_f
+ ldr r0, [sp, #0x18]
+ sub r1, #0x20
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ lsl r0, r1, #0xc
+ str r0, [sp, #0x1c]
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [r6, #4]
+ add r1, sp, #0x18
+ bl MOD05_021DC4FC
+ ldr r0, [sp, #8]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ str r1, [sp, #8]
+ cmp r1, r0
+ blt _021DF430
+_021DF4EE:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DF4F4: .word 0x00000F58
+_021DF4F8: .word UNK05_021F67F8
+_021DF4FC: .word UNK05_021F67E8
+
+ thumb_func_start MOD05_021DF500
+MOD05_021DF500: ; 0x021DF500
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r0, sp, #0
+ add r1, r5, #0
+ ldr r4, [r5, #8]
+ bl MOD05_021DD168
+ add r3, sp, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0xc
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021DF52A
+ cmp r0, #1
+ beq _021DF57C
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+_021DF52A:
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r1, [r4]
+ add r0, r1, #1
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ cmp r1, r0
+ ble _021DF54E
+ mov r0, #1
+ str r0, [r4, #0xc]
+_021DF54E:
+ ldr r0, [r4]
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x1e
+ sub r1, r1, r2
+ mov r0, #0x1e
+ ror r1, r0
+ add r0, r2, r1
+ bne _021DF570
+ ldr r1, [r4, #0x10]
+ ldr r0, [r4, #0x14]
+ add r0, r1, r0
+ str r0, [r4, #0x10]
+ ldr r0, [r4, #8]
+ cmp r0, #1
+ ble _021DF570
+ sub r0, r0, #1
+ str r0, [r4, #8]
+_021DF570:
+ ldr r0, [r5, #4]
+ add r1, sp, #0xc
+ bl MOD05_021DC4FC
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+_021DF57C:
+ add r0, r5, #0
+ bl MOD05_021DD100
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DF588
+MOD05_021DF588: ; 0x021DF588
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ ldr r0, _021DF794 ; =0x00000F58
+ add r5, r1, #0
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r5, r2]
+ ldr r4, [r5, r0]
+ cmp r2, #5
+ bhi _021DF642
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021DF5A8: ; jump table
+ .short _021DF5B4 - _021DF5A8 - 2 ; case 0
+ .short _021DF60A - _021DF5A8 - 2 ; case 1
+ .short _021DF64C - _021DF5A8 - 2 ; case 2
+ .short _021DF6AA - _021DF5A8 - 2 ; case 3
+ .short _021DF702 - _021DF5A8 - 2 ; case 4
+ .short _021DF74C - _021DF5A8 - 2 ; case 5
+_021DF5B4:
+ mov r0, #0x14
+ str r0, [sp]
+ mov r2, #2
+ str r2, [sp, #4]
+ sub r0, r2, #4
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, _021DF798 ; =MOD05_021DF7B4
+ str r2, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ mov r3, #0x10
+ bl MOD05_021DD328
+ ldr r0, _021DF79C ; =0x0000716F
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021DF7A0 ; =0x00006B5A
+ lsl r2, r2, #2
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021DF7A4 ; =0x00000F64
+ add r1, r4, #0
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ mov r0, #0
+ add r4, #0xb4
+ str r0, [r4]
+ ldr r0, _021DF7A8 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ b _021DF76A
+_021DF60A:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DF62A
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DF76A
+_021DF62A:
+ ldr r2, _021DF7A4 ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r4, #0x1c
+ add r0, #0x4c
+ add r1, r4, #0
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DF642
+ cmp r6, #3
+ beq _021DF644
+_021DF642:
+ b _021DF76A
+_021DF644:
+ ldr r0, _021DF7A8 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DF76A
+_021DF64C:
+ mov r2, #0x14
+ mov r3, #2
+ str r2, [sp]
+ str r3, [sp, #4]
+ sub r0, r3, #4
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ ldr r0, _021DF798 ; =MOD05_021DF7B4
+ str r3, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ ldr r0, _021DF7A4 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF68E
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DF79C ; =0x0000716F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DF7A0 ; =0x00006B5A
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD05_021DD5EC
+_021DF68E:
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _021DF7AC ; =MOD05_021DF8E4
+ ldr r1, _021DF798 ; =MOD05_021DF7B4
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x14
+ mov r3, #0xa
+ bl MOD05_021DD680
+ ldr r0, _021DF7A8 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ b _021DF76A
+_021DF6AA:
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r1, #1
+ strh r0, [r4, #6]
+ cmp r1, #0
+ bgt _021DF6C6
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021DF7B4
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021DF6C6:
+ ldr r0, _021DF7B0 ; =0x00000F66
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bne _021DF76A
+ mov r0, #9
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #6
+ bl MOD05_021DD350
+ ldr r0, _021DF7A4 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF6F4
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DF6F4:
+ mov r0, #0x14
+ add r4, #0xb4
+ str r0, [r4]
+ ldr r0, _021DF7A8 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r5, r0]
+ b _021DF76A
+_021DF702:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DF722
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DF76A
+_021DF722:
+ ldr r2, _021DF7A4 ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r4, #0x1c
+ add r0, #0x4c
+ add r1, r4, #0
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DF76A
+ cmp r6, #3
+ bne _021DF76A
+ add r0, r5, #0
+ ldr r1, [r5, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021DF76A
+ ldr r0, _021DF7A8 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ b _021DF76A
+_021DF74C:
+ add r0, #0xc
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DF764
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DF764:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021DF76A:
+ ldr r0, _021DF7A8 ; =0x00000F62
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ beq _021DF790
+ cmp r0, #0
+ beq _021DF790
+ add r0, r5, #0
+ ldr r1, _021DF7AC ; =MOD05_021DF8E4
+ add r0, #0xc
+ bl MOD05_021DD148
+ mov r1, #0
+ add r0, r5, #0
+ add r2, r1, #0
+ bl MOD05_021DD2BC
+ add r0, r5, #0
+ bl MOD05_021DD164
+_021DF790:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021DF794: .word 0x00000F58
+_021DF798: .word MOD05_021DF7B4
+_021DF79C: .word 0x0000716F
+_021DF7A0: .word 0x00006B5A
+_021DF7A4: .word 0x00000F64
+_021DF7A8: .word 0x00000F62
+_021DF7AC: .word MOD05_021DF8E4
+_021DF7B0: .word 0x00000F66
+
+ thumb_func_start MOD05_021DF7B4
+MOD05_021DF7B4: ; 0x021DF7B4
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x1c
+ str r0, [sp]
+ mov r0, #0
+ str r0, [sp, #0xc]
+ add r0, r1, #0
+ str r1, [sp, #4]
+ cmp r0, #0
+ bgt _021DF7C8
+ b _021DF8E0
+_021DF7C8:
+ ldr r0, [sp]
+ mov r1, #0x20
+ bl MOD05_021DD048
+ add r4, r0, #0
+ bne _021DF7D6
+ b _021DF8E0
+_021DF7D6:
+ ldr r5, [r4, #8]
+ mov r0, #0
+ str r0, [r5]
+ bl MTRandom
+ mov r1, #5
+ bl _u32_div_f
+ add r0, r1, #7
+ str r0, [r5, #4]
+ bl MTRandom
+ mov r1, #0xfa
+ lsl r1, r1, #2
+ bl _u32_div_f
+ lsr r2, r1, #0x1f
+ lsl r1, r1, #0x1f
+ sub r1, r1, r2
+ mov r0, #0x1f
+ ror r1, r0
+ add r0, r2, r1
+ bne _021DF808
+ mov r0, #1
+ b _021DF80C
+_021DF808:
+ mov r0, #0
+ mvn r0, r0
+_021DF80C:
+ str r0, [r5, #8]
+ mov r0, #1
+ str r0, [r5, #0xc]
+ bl MTRandom
+ mov r1, #6
+ bl _u32_div_f
+ add r0, r1, #3
+ str r0, [r5, #0x10]
+ bl MTRandom
+ mov r1, #5
+ bl _u32_div_f
+ add r0, r1, #4
+ str r0, [r5, #0x14]
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ str r1, [sp, #8]
+ add r0, sp, #0x10
+ add r1, r4, #0
+ bl MOD05_021DD168
+ bl MTRandom
+ mov r1, #6
+ lsl r1, r1, #6
+ bl _u32_div_f
+ sub r1, #0x40
+ str r1, [sp, #0x10]
+ bl MTRandom
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r0, [sp, #0x10]
+ sub r1, #8
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x10]
+ str r1, [sp, #0x14]
+ lsl r0, r1, #0xc
+ str r0, [sp, #0x14]
+ mov r0, #0
+ str r0, [sp, #0x18]
+ ldr r0, [r4, #4]
+ add r1, sp, #0x10
+ bl MOD05_021DC4FC
+ ldr r1, [sp, #0x14]
+ ldr r0, [sp, #0x10]
+ asr r1, r1, #0xc
+ asr r0, r0, #0xc
+ str r1, [sp, #0x14]
+ mov r1, #3
+ str r0, [sp, #0x10]
+ bl _s32_div_f
+ mov r1, #0x32
+ sub r6, r1, r0
+ mov r1, #0xce
+ sub r7, r1, r0
+ bpl _021DF89E
+ bl MTRandom
+ neg r1, r7
+ bl _u32_div_f
+ sub r1, r6, r1
+ b _021DF8AA
+_021DF89E:
+ bl MTRandom
+ add r1, r7, #0
+ bl _u32_div_f
+ add r1, r6, r1
+_021DF8AA:
+ ldr r0, [sp, #0x14]
+ cmp r6, r0
+ bgt _021DF8BC
+ cmp r1, r0
+ blt _021DF8BC
+ ldr r0, [r5, #4]
+ lsl r0, r0, #1
+ str r0, [r5, #4]
+ b _021DF8C6
+_021DF8BC:
+ bl MTRandom
+ mov r1, #3
+ and r0, r1
+ str r0, [sp, #8]
+_021DF8C6:
+ ldr r1, [sp, #8]
+ ldr r0, [r4, #4]
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ ldr r0, [sp, #0xc]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ str r1, [sp, #0xc]
+ cmp r1, r0
+ bge _021DF8E0
+ b _021DF7C8
+_021DF8E0:
+ add sp, #0x1c
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021DF8E4
+MOD05_021DF8E4: ; 0x021DF8E4
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ ldr r4, [r5, #8]
+ add r0, sp, #0
+ add r1, r5, #0
+ bl MOD05_021DD168
+ ldr r0, [r4]
+ add r1, r0, #1
+ str r1, [r4]
+ ldr r0, [r4, #4]
+ cmp r1, r0
+ blt _021DF906
+ add r0, r5, #0
+ bl MOD05_021DD100
+_021DF906:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DF90C
+MOD05_021DF90C: ; 0x021DF90C
+ push {r3, r4, r5, lr}
+ ldr r0, _021DFA98 ; =0x00000F58
+ add r5, r1, #0
+ ldr r4, [r5, r0]
+ add r0, #0xa
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bhi _021DF978
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DF928: ; jump table
+ .short _021DF934 - _021DF928 - 2 ; case 0
+ .short _021DF958 - _021DF928 - 2 ; case 1
+ .short _021DF9A2 - _021DF928 - 2 ; case 2
+ .short _021DF9E2 - _021DF928 - 2 ; case 3
+ .short _021DFA68 - _021DF928 - 2 ; case 4
+ .short _021DFA90 - _021DF928 - 2 ; case 5
+_021DF934:
+ mov r0, #0
+ str r0, [r4]
+ mov r1, #0x10
+ str r0, [r4, #4]
+ bl MOD05_021DC6D4
+ mov r1, #2
+ ldr r0, _021DFA9C ; =0x04000018
+ lsl r1, r1, #0x14
+ str r1, [r0]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021DFAA0 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_021DF958:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ cmp r0, #0xa
+ blt _021DF978
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ mov r1, #0x10
+ add r0, r0, #1
+ str r0, [r4, #4]
+ bl MOD05_021DC6D4
+ ldr r0, [r4, #4]
+ cmp r0, #0xa
+ bge _021DF97A
+_021DF978:
+ b _021DFA96
+_021DF97A:
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ add r1, #0xa
+ str r1, [r4, #8]
+ bl MTRandom
+ mov r1, #3
+ bl _u32_div_f
+ add r0, r1, #5
+ str r0, [r4, #0xc]
+ mov r0, #1
+ str r0, [r4, #0x10]
+ ldr r0, _021DFAA0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_021DF9A2:
+ mov r0, #0
+ str r0, [r4]
+ mov r0, #0xa
+ str r0, [r4, #4]
+ mov r1, #2
+ ldr r0, _021DFA9C ; =0x04000018
+ lsl r1, r1, #0x14
+ str r1, [r0]
+ ldr r0, [r4, #4]
+ mov r1, #0x10
+ bl MOD05_021DC6D4
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ add r1, #0xa
+ str r1, [r4, #8]
+ bl MTRandom
+ mov r1, #3
+ bl _u32_div_f
+ add r0, r1, #5
+ str r0, [r4, #0xc]
+ mov r0, #1
+ str r0, [r4, #0x10]
+ ldr r0, _021DFAA0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_021DF9E2:
+ ldr r0, [r4]
+ add r1, r0, #1
+ str r1, [r4]
+ ldr r0, [r4, #8]
+ cmp r1, r0
+ blt _021DFA50
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, [r4, #0x10]
+ cmp r0, #1
+ ldr r0, [r4, #4]
+ bne _021DFA26
+ sub r1, r0, #1
+ str r1, [r4, #4]
+ ldr r0, [r4, #0xc]
+ cmp r1, r0
+ bgt _021DFA50
+ bl MTRandom
+ mov r1, #0xf
+ bl _u32_div_f
+ add r1, #0xa
+ str r1, [r4, #8]
+ bl MTRandom
+ mov r1, #3
+ bl _u32_div_f
+ add r0, r1, #7
+ str r0, [r4, #0xc]
+ mov r0, #0
+ str r0, [r4, #0x10]
+ b _021DFA50
+_021DFA26:
+ add r1, r0, #1
+ str r1, [r4, #4]
+ ldr r0, [r4, #0xc]
+ cmp r1, r0
+ blt _021DFA50
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ add r1, #0xa
+ str r1, [r4, #8]
+ bl MTRandom
+ mov r1, #3
+ bl _u32_div_f
+ add r0, r1, #5
+ str r0, [r4, #0xc]
+ mov r0, #1
+ str r0, [r4, #0x10]
+_021DFA50:
+ ldr r0, [r4, #4]
+ mov r1, #0x10
+ bl MOD05_021DC6D4
+ ldr r0, _021DFAA4 ; =0x00000F66
+ ldrh r1, [r5, r0]
+ cmp r1, #5
+ bne _021DFA96
+ mov r1, #4
+ sub r0, r0, #4
+ strh r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_021DFA68:
+ ldr r0, [r4]
+ add r0, r0, #1
+ str r0, [r4]
+ cmp r0, #0xa
+ blt _021DFA96
+ mov r0, #0
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ mov r1, #0x10
+ sub r0, r0, #1
+ str r0, [r4, #4]
+ bl MOD05_021DC6D4
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ bgt _021DFA96
+ ldr r0, _021DFAA0 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ pop {r3, r4, r5, pc}
+_021DFA90:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021DFA96:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021DFA98: .word 0x00000F58
+_021DFA9C: .word 0x04000018
+_021DFAA0: .word 0x00000F62
+_021DFAA4: .word 0x00000F66
+
+ thumb_func_start MOD05_021DFAA8
+MOD05_021DFAA8: ; 0x021DFAA8
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ mov r0, #0x18
+ str r0, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ sub r0, r2, #4
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ ldr r0, _021DFB1C ; =MOD05_021DFEE0
+ add r4, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ add r1, r5, #0
+ mov r3, #0xf
+ bl MOD05_021DD328
+ ldr r0, _021DFB20 ; =0x00006F6F
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021DFB24 ; =0x00006B5A
+ add r1, r4, #0
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021DFB28 ; =0x00000F64
+ lsl r2, r2, #2
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r4, #0xbc
+ str r1, [r4]
+ ldr r1, _021DFB2C ; =0x0000063B
+ add r0, r5, #0
+ bl MOD05_021E0FA4
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_021DFB1C: .word MOD05_021DFEE0
+_021DFB20: .word 0x00006F6F
+_021DFB24: .word 0x00006B5A
+_021DFB28: .word 0x00000F64
+_021DFB2C: .word 0x0000063B
+
+ thumb_func_start MOD05_021DFB30
+MOD05_021DFB30: ; 0x021DFB30
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DFB56
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DFB72
+_021DFB56:
+ ldr r2, _021DFB78 ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r4, #0x1c
+ add r0, #0x4c
+ add r1, r4, #0
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021DFB72
+ cmp r6, #3
+ bne _021DFB72
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021DFB72:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021DFB78: .word 0x00000F64
+
+ thumb_func_start MOD05_021DFB7C
+MOD05_021DFB7C: ; 0x021DFB7C
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ mov r2, #0x18
+ str r2, [sp]
+ mov r3, #1
+ add r5, r0, #0
+ str r3, [sp, #4]
+ sub r0, r3, #4
+ str r0, [sp, #8]
+ mov r0, #2
+ str r0, [sp, #0xc]
+ mov r0, #4
+ str r0, [sp, #0x10]
+ ldr r0, _021DFBF8 ; =MOD05_021DFEE0
+ add r4, r1, #0
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DD328
+ ldr r0, _021DFBFC ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DFBCA
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021DFC00 ; =0x00006F6F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021DFC04 ; =0x00006B5A
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5EC
+_021DFBCA:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r4, #0xbc
+ str r1, [r4]
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _021DFC08 ; =MOD05_021E0000
+ ldr r1, _021DFBF8 ; =MOD05_021DFEE0
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x14
+ mov r3, #5
+ bl MOD05_021DD680
+ ldr r1, _021DFC0C ; =0x0000063B
+ add r0, r5, #0
+ bl MOD05_021E0FA4
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ nop
+_021DFBF8: .word MOD05_021DFEE0
+_021DFBFC: .word 0x00000F64
+_021DFC00: .word 0x00006F6F
+_021DFC04: .word 0x00006B5A
+_021DFC08: .word MOD05_021E0000
+_021DFC0C: .word 0x0000063B
+
+ thumb_func_start MOD05_021DFC10
+MOD05_021DFC10: ; 0x021DFC10
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #0x4b
+ add r0, r0, #1
+ lsl r1, r1, #2
+ bl _s32_div_f
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r1, #1
+ strh r0, [r4, #6]
+ cmp r1, #0
+ bgt _021DFC48
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021DFEE0
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021DFC48:
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021DFC4C
+MOD05_021DFC4C: ; 0x021DFC4C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ mov r0, #9
+ add r4, r1, #0
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0xf
+ mov r3, #3
+ bl MOD05_021DD350
+ ldr r0, _021DFC88 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DFC78
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021DFC78:
+ mov r0, #0
+ add r4, #0xb4
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD05_021E0FD0
+ pop {r3, r4, r5, pc}
+ nop
+_021DFC88: .word 0x00000F64
+
+ thumb_func_start MOD05_021DFC8C
+MOD05_021DFC8C: ; 0x021DFC8C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021DFCB2
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ add r4, #0xb4
+ sub r0, r0, #1
+ str r0, [r4]
+ b _021DFCDA
+_021DFCB2:
+ ldr r0, _021DFCE0 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021DFCC4
+ add r4, #0x1c
+ add r0, r4, #0
+ bl MOD05_021DD5D0
+ b _021DFCC6
+_021DFCC4:
+ mov r0, #1
+_021DFCC6:
+ cmp r0, #1
+ bne _021DFCDA
+ cmp r6, #3
+ bne _021DFCDA
+ ldr r0, [r5, #0x40]
+ add r5, #0xc
+ cmp r0, r5
+ bne _021DFCDA
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_021DFCDA:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_021DFCE0: .word 0x00000F64
+
+ thumb_func_start MOD05_021DFCE4
+MOD05_021DFCE4: ; 0x021DFCE4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, _021DFD0C ; =0x00000F64
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021DFD02
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r1, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021DFD02:
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+ add sp, #8
+ pop {r4, pc}
+ .balign 4, 0
+_021DFD0C: .word 0x00000F64
+
+ thumb_func_start MOD05_021DFD10
+MOD05_021DFD10: ; 0x021DFD10
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _021DFD3C ; =0x00000F62
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ beq _021DFD3A
+ cmp r0, #0
+ beq _021DFD3A
+ add r0, r4, #0
+ ldr r1, _021DFD40 ; =MOD05_021E0000
+ add r0, #0xc
+ bl MOD05_021DD148
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD05_021DD2BC
+ add r0, r4, #0
+ bl MOD05_021DD164
+_021DFD3A:
+ pop {r4, pc}
+ .balign 4, 0
+_021DFD3C: .word 0x00000F62
+_021DFD40: .word MOD05_021E0000
+
+ thumb_func_start MOD05_021DFD44
+MOD05_021DFD44: ; 0x021DFD44
+ push {r3, r4, r5, lr}
+ ldr r0, _021DFE24 ; =0x00000F58
+ add r4, r1, #0
+ ldr r5, [r4, r0]
+ add r0, #0xa
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bhi _021DFE18
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DFD60: ; jump table
+ .short _021DFD6C - _021DFD60 - 2 ; case 0
+ .short _021DFD90 - _021DFD60 - 2 ; case 1
+ .short _021DFDA4 - _021DFD60 - 2 ; case 2
+ .short _021DFDC8 - _021DFD60 - 2 ; case 3
+ .short _021DFDF2 - _021DFD60 - 2 ; case 4
+ .short _021DFE06 - _021DFD60 - 2 ; case 5
+_021DFD6C:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFAA8
+ ldr r0, [r4]
+ mov r1, #0
+ mov r2, #0x11
+ bl MOD05_021DC608
+ ldr r0, [r4]
+ mov r1, #3
+ mov r2, #0x11
+ bl MOD05_021DC608
+ ldr r0, _021DFE28 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r4, r0]
+ b _021DFE18
+_021DFD90:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFB30
+ cmp r0, #0
+ beq _021DFE18
+ ldr r0, _021DFE28 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ b _021DFE18
+_021DFDA4:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFB7C
+ ldr r0, [r4]
+ mov r1, #0
+ mov r2, #0x11
+ bl MOD05_021DC608
+ ldr r0, [r4]
+ mov r1, #3
+ mov r2, #0x11
+ bl MOD05_021DC608
+ ldr r0, _021DFE28 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ b _021DFE18
+_021DFDC8:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFC10
+ ldr r0, _021DFE2C ; =0x00000F66
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bne _021DFE18
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFC4C
+ ldr r0, [r4]
+ mov r1, #5
+ mov r2, #0x11
+ bl MOD05_021DC608
+ ldr r0, _021DFE28 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r4, r0]
+ b _021DFE18
+_021DFDF2:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFC8C
+ cmp r0, #0
+ beq _021DFE18
+ ldr r0, _021DFE28 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r4, r0]
+ b _021DFE18
+_021DFE06:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFCE4
+ ldr r0, [r4]
+ mov r1, #8
+ mov r2, #0x11
+ bl MOD05_021DC608
+_021DFE18:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFD10
+ pop {r3, r4, r5, pc}
+ nop
+_021DFE24: .word 0x00000F58
+_021DFE28: .word 0x00000F62
+_021DFE2C: .word 0x00000F66
+
+ thumb_func_start MOD05_021DFE30
+MOD05_021DFE30: ; 0x021DFE30
+ push {r3, r4, r5, lr}
+ ldr r0, _021DFED4 ; =0x00000F58
+ add r4, r1, #0
+ ldr r5, [r4, r0]
+ add r0, #0xa
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bhi _021DFEC8
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021DFE4C: ; jump table
+ .short _021DFE58 - _021DFE4C - 2 ; case 0
+ .short _021DFE68 - _021DFE4C - 2 ; case 1
+ .short _021DFE7C - _021DFE4C - 2 ; case 2
+ .short _021DFE8C - _021DFE4C - 2 ; case 3
+ .short _021DFEAC - _021DFE4C - 2 ; case 4
+ .short _021DFEC0 - _021DFE4C - 2 ; case 5
+_021DFE58:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFAA8
+ ldr r0, _021DFED8 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r4, r0]
+ b _021DFEC8
+_021DFE68:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFB30
+ cmp r0, #0
+ beq _021DFEC8
+ ldr r0, _021DFED8 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ b _021DFEC8
+_021DFE7C:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFB7C
+ ldr r0, _021DFED8 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ b _021DFEC8
+_021DFE8C:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFC10
+ ldr r0, _021DFEDC ; =0x00000F66
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bne _021DFEC8
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFC4C
+ ldr r0, _021DFED8 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r4, r0]
+ b _021DFEC8
+_021DFEAC:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFC8C
+ cmp r0, #0
+ beq _021DFEC8
+ ldr r0, _021DFED8 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r4, r0]
+ b _021DFEC8
+_021DFEC0:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFCE4
+_021DFEC8:
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD05_021DFD10
+ pop {r3, r4, r5, pc}
+ nop
+_021DFED4: .word 0x00000F58
+_021DFED8: .word 0x00000F62
+_021DFEDC: .word 0x00000F66
+
+ thumb_func_start MOD05_021DFEE0
+MOD05_021DFEE0: ; 0x021DFEE0
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x24
+ str r1, [sp, #4]
+ ldr r1, _021DFFF4 ; =0x00000F58
+ str r0, [sp]
+ ldr r6, [r0, r1]
+ mov r0, #0
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ cmp r0, #0
+ ble _021DFFEE
+_021DFEF6:
+ ldr r0, [sp]
+ mov r1, #0x20
+ bl MOD05_021DD048
+ add r4, r0, #0
+ beq _021DFFEE
+ ldr r5, [r4, #8]
+ mov r0, #0
+ str r0, [r5]
+ bl MTRandom
+ mov r1, #3
+ bl _u32_div_f
+ add r7, r1, #0
+ lsl r1, r7, #0x10
+ ldr r0, [r4, #4]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ mov r0, #0x17
+ add r1, r7, #1
+ mvn r0, r0
+ mul r0, r1
+ str r0, [r5, #0x10]
+ mov r0, #0x18
+ mul r0, r1
+ str r0, [r5, #8]
+ add r0, r6, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #0x3c
+ bl _s32_div_f
+ lsl r2, r0, #2
+ ldr r0, _021DFFF8 ; =UNK05_021F6808
+ ldr r1, [r5, #0x10]
+ ldr r0, [r0, r2]
+ mul r0, r1
+ str r0, [r5, #0x10]
+ add r0, r6, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #0x3c
+ bl _s32_div_f
+ lsl r2, r0, #2
+ ldr r0, _021DFFF8 ; =UNK05_021F6808
+ ldr r1, [r5, #8]
+ ldr r0, [r0, r2]
+ mul r0, r1
+ str r0, [r5, #8]
+ ldr r0, [r5, #0x10]
+ mov r1, #0x64
+ bl _s32_div_f
+ str r0, [r5, #0x10]
+ ldr r0, [r5, #8]
+ mov r1, #0x64
+ bl _s32_div_f
+ str r0, [r5, #8]
+ mov r0, #0
+ str r0, [r5, #0xc]
+ bl MTRandom
+ mov r1, #3
+ and r1, r0
+ mov r0, #0x64
+ mul r0, r1
+ str r0, [r5, #4]
+ add r0, r6, #0
+ add r0, #0xbc
+ ldr r0, [r0]
+ mov r1, #0x3c
+ bl _s32_div_f
+ add r1, r0, #0
+ lsl r2, r1, #2
+ ldr r1, _021DFFF8 ; =UNK05_021F6808
+ ldr r0, [r5, #4]
+ ldr r1, [r1, r2]
+ bl _s32_div_f
+ str r0, [r5, #4]
+ add r0, sp, #0xc
+ add r1, r4, #0
+ bl MOD05_021DD168
+ add r3, sp, #0xc
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x18
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bl MTRandom
+ ldr r1, _021DFFFC ; =0x000001FF
+ and r0, r1
+ str r0, [sp, #0x18]
+ bl MTRandom
+ mov r1, #0x30
+ bl _u32_div_f
+ mov r0, #0
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x18]
+ sub r1, #0x50
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x18]
+ str r1, [sp, #0x1c]
+ lsl r0, r1, #0xc
+ str r0, [sp, #0x1c]
+ ldr r0, [r4, #4]
+ add r1, sp, #0x18
+ bl MOD05_021DC4FC
+ ldr r0, [sp, #8]
+ add r1, r0, #1
+ ldr r0, [sp, #4]
+ str r1, [sp, #8]
+ cmp r1, r0
+ blt _021DFEF6
+_021DFFEE:
+ add sp, #0x24
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021DFFF4: .word 0x00000F58
+_021DFFF8: .word UNK05_021F6808
+_021DFFFC: .word 0x000001FF
+
+ thumb_func_start MOD05_021E0000
+MOD05_021E0000: ; 0x021E0000
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r0, sp, #0
+ add r1, r5, #0
+ ldr r4, [r5, #8]
+ bl MOD05_021DD168
+ add r3, sp, #0
+ add r2, sp, #0xc
+ ldmia r3!, {r0, r1}
+ add r7, r2, #0
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r0, [r4, #0xc]
+ cmp r0, #0
+ beq _021E0030
+ cmp r0, #1
+ beq _021E0088
+ cmp r0, #2
+ beq _021E009A
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0030:
+ mov r6, #0
+_021E0032:
+ ldr r0, [r4, #0x10]
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0xc]
+ ldr r0, [r4, #8]
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ ldr r1, [r4]
+ add r0, r1, #1
+ str r0, [r4]
+ ldr r0, [r4, #4]
+ cmp r1, r0
+ ble _021E0076
+ bl MTRandom
+ mov r1, #0xa
+ bl _u32_div_f
+ cmp r1, #5
+ bhs _021E0066
+ mov r0, #2
+ str r0, [r4, #0xc]
+ b _021E0076
+_021E0066:
+ mov r0, #1
+ str r0, [r4, #0xc]
+ mov r0, #4
+ str r0, [r4]
+ ldr r0, [r5, #4]
+ mov r1, #3
+ bl FUN_02020208
+_021E0076:
+ ldr r0, [r5, #4]
+ add r1, r7, #0
+ bl MOD05_021DC4FC
+ add r6, r6, #1
+ cmp r6, #2
+ blt _021E0032
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0088:
+ ldr r1, [r4]
+ sub r0, r1, #1
+ str r0, [r4]
+ cmp r1, #0
+ bgt _021E00A0
+ mov r0, #2
+ add sp, #0x18
+ str r0, [r4, #0xc]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E009A:
+ add r0, r5, #0
+ bl MOD05_021DD100
+_021E00A0:
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+
+ thumb_func_start MOD05_021E00A4
+MOD05_021E00A4: ; 0x021E00A4
+ push {r4, r5, r6, lr}
+ sub sp, #0x20
+ ldr r0, _021E03D8 ; =0x00000F58
+ add r5, r1, #0
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r5, r2]
+ ldr r4, [r5, r0]
+ cmp r2, #5
+ bhi _021E017E
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021E00C4: ; jump table
+ .short _021E00D0 - _021E00C4 - 2 ; case 0
+ .short _021E0144 - _021E00C4 - 2 ; case 1
+ .short _021E0190 - _021E00C4 - 2 ; case 2
+ .short _021E0212 - _021E00C4 - 2 ; case 3
+ .short _021E027A - _021E00C4 - 2 ; case 4
+ .short _021E02CA - _021E00C4 - 2 ; case 5
+_021E00D0:
+ mov r2, #1
+ str r2, [sp]
+ mov r0, #6
+ str r0, [sp, #4]
+ sub r0, r0, #7
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _021E03DC ; =MOD05_021E0400
+ mov r3, #0xc
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc8
+ str r1, [r0]
+ ldr r0, _021E03E0 ; =0x00006F2F
+ mov r2, #0x41
+ str r0, [sp]
+ ldr r0, _021E03E4 ; =0x00003A94
+ add r1, r4, #0
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ ldr r0, _021E03E8 ; =0x00000F64
+ lsl r2, r2, #2
+ ldrh r0, [r5, r0]
+ add r1, #0x1c
+ str r0, [sp, #0xc]
+ ldr r3, [r5]
+ add r0, r4, #0
+ ldr r2, [r3, r2]
+ add r0, #0x4c
+ ldr r2, [r2, #0x44]
+ mov r3, #3
+ bl MOD05_021DD420
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb4
+ str r1, [r0]
+ ldr r0, _021E03EC ; =0x00000F62
+ mov r1, #1
+ strh r1, [r5, r0]
+ b _021E02E8
+_021E0144:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021E0166
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ str r1, [r0]
+ b _021E02E8
+_021E0166:
+ ldr r2, _021E03E8 ; =0x00000F64
+ add r0, r4, #0
+ ldrh r2, [r5, r2]
+ add r1, r4, #0
+ add r0, #0x4c
+ add r1, #0x1c
+ bl MOD05_021DD474
+ cmp r0, #1
+ bne _021E017E
+ cmp r6, #3
+ beq _021E0180
+_021E017E:
+ b _021E02E8
+_021E0180:
+ ldr r0, _021E03EC ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ b _021E02E8
+_021E0190:
+ mov r2, #1
+ mov r3, #6
+ str r2, [sp]
+ str r3, [sp, #4]
+ sub r0, r3, #7
+ str r0, [sp, #8]
+ mov r0, #4
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, _021E03DC ; =MOD05_021E0400
+ str r0, [sp, #0x14]
+ add r0, r4, #0
+ bl MOD05_021DD328
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0xb8
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc4
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xc8
+ str r1, [r0]
+ ldr r0, _021E03E8 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021E01EE
+ mov r0, #0x41
+ ldr r1, [r5]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021E03E0 ; =0x00006F2F
+ ldr r0, [r0, #0x44]
+ ldr r3, _021E03E4 ; =0x00003A94
+ mov r1, #3
+ str r0, [r4, #0x1c]
+ bl MOD05_021DD49C
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5EC
+_021E01EE:
+ mov r0, #0x10
+ str r0, [sp]
+ ldr r0, _021E03F0 ; =MOD05_021E051C
+ ldr r1, _021E03DC ; =MOD05_021E0400
+ str r0, [sp, #4]
+ add r0, r5, #0
+ mov r2, #0x14
+ mov r3, #2
+ bl MOD05_021DD680
+ ldr r0, _021E03EC ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ b _021E02E8
+_021E0212:
+ mov r0, #6
+ ldrsh r1, [r4, r0]
+ sub r0, r1, #1
+ strh r0, [r4, #6]
+ cmp r1, #0
+ bgt _021E022E
+ mov r1, #4
+ ldrsh r1, [r4, r1]
+ add r0, r5, #0
+ bl MOD05_021E0400
+ mov r0, #8
+ ldrsh r0, [r4, r0]
+ strh r0, [r4, #6]
+_021E022E:
+ ldr r0, _021E03F4 ; =0x00000F66
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ bne _021E02E8
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r4, #0
+ mov r1, #0
+ mov r2, #0xc
+ mov r3, #1
+ bl MOD05_021DD350
+ ldr r0, _021E03E8 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021E025C
+ add r0, r4, #0
+ add r0, #0x1c
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021E025C:
+ add r0, r4, #0
+ mov r1, #9
+ add r0, #0xb4
+ str r1, [r0]
+ ldr r1, _021E03EC ; =0x00000F62
+ mov r0, #4
+ strh r0, [r5, r1]
+ add r1, r4, #0
+ mov r2, #1
+ add r1, #0xc8
+ str r2, [r1]
+ mov r1, #0
+ bl FUN_0201E6E4
+ b _021E02E8
+_021E027A:
+ add r0, r4, #0
+ bl MOD05_021DD35C
+ add r6, r0, #0
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ cmp r0, #0
+ ble _021E029C
+ add r0, r4, #0
+ add r0, #0xb4
+ ldr r0, [r0]
+ sub r1, r0, #1
+ add r0, r4, #0
+ add r0, #0xb4
+ str r1, [r0]
+ b _021E02E8
+_021E029C:
+ ldr r0, _021E03E8 ; =0x00000F64
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021E02AE
+ add r0, r4, #0
+ add r0, #0x1c
+ bl MOD05_021DD5D0
+ b _021E02B0
+_021E02AE:
+ mov r0, #1
+_021E02B0:
+ cmp r0, #1
+ bne _021E02E8
+ cmp r6, #3
+ bne _021E02E8
+ add r0, r5, #0
+ ldr r1, [r5, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021E02E8
+ ldr r0, _021E03EC ; =0x00000F62
+ mov r1, #5
+ strh r1, [r5, r0]
+ b _021E02E8
+_021E02CA:
+ add r0, #0xc
+ ldrh r0, [r5, r0]
+ cmp r0, #0
+ beq _021E02E2
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r4, #0x1c]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021E02E2:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021E02E8:
+ ldr r0, _021E03EC ; =0x00000F62
+ ldrh r0, [r5, r0]
+ cmp r0, #5
+ beq _021E03D4
+ cmp r0, #0
+ beq _021E03D4
+ add r0, r5, #0
+ ldr r1, _021E03F0 ; =MOD05_021E051C
+ add r0, #0xc
+ bl MOD05_021DD148
+ add r0, r5, #0
+ add r1, sp, #0x1c
+ add r2, sp, #0x18
+ bl MOD05_021DD2BC
+ add r0, r5, #0
+ bl MOD05_021DD164
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r1, [r0]
+ asr r0, r1, #0x10
+ lsl r0, r0, #0x10
+ asr r2, r0, #0x10
+ lsl r0, r1, #0x10
+ ldr r1, [sp, #0x1c]
+ asr r0, r0, #0x10
+ add r1, r2, r1
+ lsl r1, r1, #0x10
+ ldr r2, [sp, #0x18]
+ asr r5, r1, #0x10
+ lsl r1, r2, #2
+ add r1, r2, r1
+ sub r0, r0, r1
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ cmp r5, #0
+ bge _021E0342
+ mov r1, #1
+ lsl r1, r1, #8
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ asr r5, r1, #0x10
+ b _021E0350
+_021E0342:
+ mov r1, #1
+ lsl r1, r1, #8
+ cmp r5, r1
+ blt _021E0350
+ sub r1, r5, r1
+ lsl r1, r1, #0x10
+ asr r5, r1, #0x10
+_021E0350:
+ cmp r0, #0
+ bge _021E035E
+ mov r1, #2
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+_021E035E:
+ add r1, r4, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ add r2, r1, #2
+ add r1, r4, #0
+ add r1, #0xc4
+ str r2, [r1]
+ add r1, r4, #0
+ add r1, #0xc4
+ ldr r1, [r1]
+ cmp r1, #0x3c
+ ble _021E0390
+ add r1, r4, #0
+ add r5, #0x20
+ mov r2, #0
+ add r1, #0xc4
+ str r2, [r1]
+ lsr r3, r5, #0x1f
+ lsl r2, r5, #0x18
+ sub r2, r2, r3
+ mov r1, #0x18
+ ror r2, r1
+ add r1, r3, r2
+ lsl r1, r1, #0x10
+ asr r5, r1, #0x10
+_021E0390:
+ add r0, r0, #2
+ lsr r2, r0, #0x1f
+ lsl r1, r0, #0x15
+ sub r1, r1, r2
+ mov r0, #0x15
+ ror r1, r0
+ add r0, r2, r1
+ lsl r0, r0, #0x10
+ asr r6, r0, #0x10
+ neg r0, r6
+ mov r1, #5
+ bl _s32_div_f
+ ldr r2, _021E03F8 ; =0x000001FF
+ add r1, r5, #0
+ lsl r3, r0, #0x10
+ lsl r0, r2, #0x10
+ and r1, r2
+ and r0, r3
+ orr r1, r0
+ ldr r0, _021E03FC ; =0x04000018
+ str r1, [r0]
+ add r0, r4, #0
+ lsl r1, r5, #0x10
+ add r0, #0xbc
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0xbc
+ ldr r1, [r0]
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ orr r0, r1
+ add r4, #0xbc
+ str r0, [r4]
+_021E03D4:
+ add sp, #0x20
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E03D8: .word 0x00000F58
+_021E03DC: .word MOD05_021E0400
+_021E03E0: .word 0x00006F2F
+_021E03E4: .word 0x00003A94
+_021E03E8: .word 0x00000F64
+_021E03EC: .word 0x00000F62
+_021E03F0: .word MOD05_021E051C
+_021E03F4: .word 0x00000F66
+_021E03F8: .word 0x000001FF
+_021E03FC: .word 0x04000018
+
+ thumb_func_start MOD05_021E0400
+MOD05_021E0400: ; 0x021E0400
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x2c
+ add r7, r1, #0
+ ldr r1, _021E0514 ; =0x00000F58
+ str r0, [sp]
+ ldr r0, [r0, r1]
+ str r0, [sp, #0x10]
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021E0418
+ lsl r7, r7, #1
+_021E0418:
+ mov r6, #0
+ cmp r7, #0
+ ble _021E050E
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0xc]
+ add r0, #0xb8
+ str r0, [sp, #0xc]
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #8]
+ add r0, #0xc8
+ str r0, [sp, #8]
+ lsr r0, r7, #0x1f
+ add r0, r7, r0
+ asr r0, r0, #1
+ str r0, [sp, #4]
+_021E0436:
+ ldr r0, [sp]
+ mov r1, #0x20
+ bl MOD05_021DD048
+ add r4, r0, #0
+ beq _021E050E
+ ldr r5, [r4, #8]
+ bl MTRandom
+ mov r1, #3
+ and r1, r0
+ lsl r1, r1, #0x10
+ ldr r0, [r4, #4]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ mov r0, #0xa
+ str r0, [r5, #0x10]
+ mov r0, #0
+ str r0, [r5, #0x14]
+ bl MTRandom
+ lsr r1, r0, #0x1f
+ lsl r2, r0, #0x1f
+ sub r2, r2, r1
+ mov r0, #0x1f
+ ror r2, r0
+ add r0, r1, r2
+ bne _021E0474
+ mov r0, #1
+ b _021E0478
+_021E0474:
+ mov r0, #0
+ mvn r0, r0
+_021E0478:
+ str r0, [r5, #4]
+ bl MTRandom
+ mov r0, #1
+ str r0, [r5, #0xc]
+ ldr r0, [sp, #0xc]
+ str r0, [r5]
+ ldr r0, [sp, #8]
+ str r0, [r5, #0x18]
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ add r1, #0xa
+ str r1, [r5, #0x1c]
+ add r0, sp, #0x14
+ add r1, r4, #0
+ bl MOD05_021DD168
+ add r3, sp, #0x14
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0x20
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ bl MTRandom
+ ldr r1, _021E0518 ; =0x0000019E
+ bl _u32_div_f
+ ldr r0, [sp, #0x10]
+ sub r1, #0x20
+ str r1, [sp, #0x20]
+ add r0, #0xb8
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021E04DE
+ ldr r0, [sp, #4]
+ cmp r6, r0
+ blt _021E04DE
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ mov r0, #0x27
+ mvn r0, r0
+ sub r0, r0, r1
+ str r0, [sp, #0x24]
+ b _021E04F0
+_021E04DE:
+ bl MTRandom
+ mov r1, #0x14
+ bl _u32_div_f
+ mov r0, #7
+ mvn r0, r0
+ sub r0, r0, r1
+ str r0, [sp, #0x24]
+_021E04F0:
+ ldr r0, [sp, #0x20]
+ add r1, sp, #0x20
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x20]
+ ldr r0, [sp, #0x24]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0x24]
+ mov r0, #0
+ str r0, [sp, #0x28]
+ ldr r0, [r4, #4]
+ bl MOD05_021DC4FC
+ add r6, r6, #1
+ cmp r6, r7
+ blt _021E0436
+_021E050E:
+ add sp, #0x2c
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E0514: .word 0x00000F58
+_021E0518: .word 0x0000019E
+
+ thumb_func_start MOD05_021E051C
+MOD05_021E051C: ; 0x021E051C
+ push {r4, r5, r6, lr}
+ sub sp, #0x18
+ add r6, r0, #0
+ add r0, sp, #0
+ add r1, r6, #0
+ ldr r4, [r6, #8]
+ bl MOD05_021DD168
+ add r5, sp, #0
+ add r3, sp, #0xc
+ ldmia r5!, {r0, r1}
+ add r2, r3, #0
+ stmia r3!, {r0, r1}
+ ldr r0, [r5]
+ mov r5, #0
+ str r0, [r3]
+ ldr r1, [r4, #0x14]
+ ldr r0, [r4, #0xc]
+ cmp r1, r0
+ blt _021E0558
+ mov r0, #1
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ add r0, r1, r0
+ str r0, [sp, #0x10]
+ str r5, [r4, #0x14]
+ ldr r0, [r6, #4]
+ add r1, r2, #0
+ bl MOD05_021DC4FC
+_021E0558:
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ ldr r0, [sp, #0x10]
+ asr r0, r0, #0xc
+ str r0, [sp, #0x10]
+ ldr r0, [r4, #0x18]
+ ldr r0, [r0]
+ cmp r0, #1
+ bne _021E0578
+ ldr r0, [r4, #0x1c]
+ sub r0, r0, #1
+ str r0, [r4, #0x1c]
+ cmp r0, #0
+ bgt _021E0578
+ mov r5, #1
+_021E0578:
+ ldr r1, [sp, #0x10]
+ ldr r0, _021E05A4 ; =0xFFFFFEE4
+ cmp r1, r0
+ bge _021E0586
+ sub r0, #0xc
+ cmp r1, r0
+ bgt _021E058E
+_021E0586:
+ cmp r1, #0xd4
+ ble _021E0590
+ cmp r1, #0xe8
+ bge _021E0590
+_021E058E:
+ mov r5, #1
+_021E0590:
+ cmp r5, #1
+ bne _021E05A0
+ ldr r0, [r4]
+ mov r1, #1
+ str r1, [r0]
+ add r0, r6, #0
+ bl MOD05_021DD100
+_021E05A0:
+ add sp, #0x18
+ pop {r4, r5, r6, pc}
+ .balign 4, 0
+_021E05A4: .word 0xFFFFFEE4
+
+ thumb_func_start MOD05_021E05A8
+MOD05_021E05A8: ; 0x021E05A8
+ push {r3, r4, r5, r6, r7, lr}
+ ldr r0, _021E06EC ; =0x00000F58
+ add r5, r1, #0
+ add r1, r0, #0
+ add r1, #0xa
+ ldrh r1, [r5, r1]
+ ldr r4, [r5, r0]
+ cmp r1, #5
+ bls _021E05BC
+ b _021E06EA
+_021E05BC:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E05C8: ; jump table
+ .short _021E05D4 - _021E05C8 - 2 ; case 0
+ .short _021E05D4 - _021E05C8 - 2 ; case 1
+ .short _021E05D4 - _021E05C8 - 2 ; case 2
+ .short _021E05F2 - _021E05C8 - 2 ; case 3
+ .short _021E06DC - _021E05C8 - 2 ; case 4
+ .short _021E06E4 - _021E05C8 - 2 ; case 5
+_021E05D4:
+ mov r0, #0
+ str r0, [r4]
+ str r0, [r4, #0x10]
+ mov r1, #0x1f
+ str r0, [r4, #4]
+ bl MOD05_021DC6D4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E06F0 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E05F2:
+ ldr r0, [r4, #0x10]
+ cmp r0, #0
+ blt _021E05FE
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+ b _021E06CC
+_021E05FE:
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _021E060E
+ cmp r0, #1
+ beq _021E0650
+ cmp r0, #2
+ beq _021E0678
+ b _021E06CC
+_021E060E:
+ mov r0, #1
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #0x14]
+ bl MTRandom
+ mov r1, #0x1e
+ lsl r1, r1, #4
+ bl _u32_div_f
+ add r1, #0xc8
+ str r1, [r4, #0x18]
+ mov r0, #0
+ str r0, [r4, #0x1c]
+ bl MTRandom
+ mov r1, #3
+ bl _u32_div_f
+ cmp r1, #0
+ beq _021E0644
+ mov r0, #0x24
+ str r0, [r4, #8]
+ ldr r0, _021E06F4 ; =0x0000063D
+ bl FUN_020054C8
+ b _021E06CC
+_021E0644:
+ mov r0, #0xc8
+ str r0, [r4, #8]
+ ldr r0, _021E06F8 ; =0x0000063C
+ bl FUN_020054C8
+ b _021E06CC
+_021E0650:
+ ldr r0, [r4, #0x14]
+ add r0, r0, #1
+ str r0, [r4, #0x14]
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r4, #0x18]
+ add r0, r1, r0
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #0x14]
+ cmp r0, #2
+ blt _021E0668
+ mov r0, #2
+ str r0, [r4, #4]
+_021E0668:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x64
+ bl _s32_div_f
+ mov r1, #0x1f
+ bl MOD05_021DC6D4
+ b _021E06CC
+_021E0678:
+ ldr r1, [r4, #0x1c]
+ ldr r0, [r4, #8]
+ sub r0, r1, r0
+ str r0, [r4, #0x1c]
+ cmp r0, #0
+ bgt _021E06BE
+ mov r0, #0
+ str r0, [r4, #4]
+ str r0, [r4, #0x1c]
+ ldr r0, [r4, #8]
+ cmp r0, #0xc8
+ bne _021E069E
+ bl MTRandom
+ mov r1, #0xf
+ bl _u32_div_f
+ str r1, [r4, #0x10]
+ b _021E06BE
+_021E069E:
+ bl MTRandom
+ add r7, r0, #0
+ ldr r1, [r4, #0x18]
+ mov r0, #0x32
+ mul r0, r1
+ mov r1, #0x64
+ bl _s32_div_f
+ add r6, r0, #0
+ add r0, r7, #0
+ mov r1, #0x78
+ bl _u32_div_f
+ add r0, r6, r1
+ str r0, [r4, #0x10]
+_021E06BE:
+ ldr r0, [r4, #0x1c]
+ mov r1, #0x64
+ bl _s32_div_f
+ mov r1, #0x1f
+ bl MOD05_021DC6D4
+_021E06CC:
+ ldr r0, _021E06FC ; =0x00000F66
+ ldrh r1, [r5, r0]
+ cmp r1, #5
+ bne _021E06EA
+ mov r1, #4
+ sub r0, r0, #4
+ strh r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E06DC:
+ mov r1, #5
+ add r0, #0xa
+ strh r1, [r5, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E06E4:
+ ldr r0, [r5, #4]
+ bl MOD05_021DCB6C
+_021E06EA:
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E06EC: .word 0x00000F58
+_021E06F0: .word 0x00000F62
+_021E06F4: .word 0x0000063D
+_021E06F8: .word 0x0000063C
+_021E06FC: .word 0x00000F66
+
+ thumb_func_start MOD05_021E0700
+MOD05_021E0700: ; 0x021E0700
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ ldr r0, _021E0828 ; =0x00000F58
+ add r4, r1, #0
+ ldr r5, [r4, r0]
+ add r0, #0xa
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bhi _021E07FE
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E071E: ; jump table
+ .short _021E072A - _021E071E - 2 ; case 0
+ .short _021E0752 - _021E071E - 2 ; case 1
+ .short _021E0764 - _021E071E - 2 ; case 2
+ .short _021E079E - _021E071E - 2 ; case 3
+ .short _021E07DC - _021E071E - 2 ; case 4
+ .short _021E07F8 - _021E071E - 2 ; case 5
+_021E072A:
+ mov r0, #4
+ str r0, [sp]
+ mov r0, #0xf
+ str r0, [sp, #4]
+ sub r0, #0x11
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ mov r2, #1
+ ldr r0, _021E082C ; =MOD05_021E083C
+ str r2, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ mov r3, #0x23
+ bl MOD05_021DD328
+ ldr r0, _021E0830 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r4, r0]
+ b _021E07FE
+_021E0752:
+ add r0, r5, #0
+ bl MOD05_021DD35C
+ cmp r0, #3
+ bne _021E07FE
+ ldr r0, _021E0830 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ b _021E07FE
+_021E0764:
+ mov r0, #0xf
+ str r0, [sp]
+ str r0, [sp, #4]
+ sub r0, #0x11
+ str r0, [sp, #8]
+ mov r0, #5
+ str r0, [sp, #0xc]
+ mov r2, #1
+ ldr r0, _021E082C ; =MOD05_021E083C
+ str r2, [sp, #0x10]
+ str r0, [sp, #0x14]
+ add r0, r5, #0
+ mov r3, #4
+ bl MOD05_021DD328
+ mov r0, #1
+ str r0, [sp]
+ ldr r0, _021E0834 ; =MOD05_021E093C
+ ldr r1, _021E082C ; =MOD05_021E083C
+ str r0, [sp, #4]
+ add r0, r4, #0
+ mov r2, #0x10
+ mov r3, #2
+ bl MOD05_021DD680
+ ldr r0, _021E0830 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ b _021E07FE
+_021E079E:
+ mov r0, #6
+ ldrsh r1, [r5, r0]
+ sub r0, r1, #1
+ strh r0, [r5, #6]
+ cmp r1, #0
+ bgt _021E07BA
+ mov r1, #4
+ ldrsh r1, [r5, r1]
+ add r0, r4, #0
+ bl MOD05_021E083C
+ mov r0, #8
+ ldrsh r0, [r5, r0]
+ strh r0, [r5, #6]
+_021E07BA:
+ ldr r0, _021E0838 ; =0x00000F66
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bne _021E07FE
+ mov r0, #2
+ mvn r0, r0
+ str r0, [sp]
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0x23
+ mov r3, #2
+ bl MOD05_021DD350
+ ldr r0, _021E0830 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r4, r0]
+ b _021E07FE
+_021E07DC:
+ add r0, r5, #0
+ bl MOD05_021DD35C
+ cmp r0, #3
+ bne _021E07FE
+ add r0, r4, #0
+ ldr r1, [r4, #0x40]
+ add r0, #0xc
+ cmp r1, r0
+ bne _021E07FE
+ ldr r0, _021E0830 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r4, r0]
+ b _021E07FE
+_021E07F8:
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+_021E07FE:
+ ldr r0, _021E0830 ; =0x00000F62
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ beq _021E0824
+ cmp r0, #0
+ beq _021E0824
+ add r0, r4, #0
+ ldr r1, _021E0834 ; =MOD05_021E093C
+ add r0, #0xc
+ bl MOD05_021DD148
+ mov r1, #0
+ add r0, r4, #0
+ add r2, r1, #0
+ bl MOD05_021DD2BC
+ add r0, r4, #0
+ bl MOD05_021DD164
+_021E0824:
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E0828: .word 0x00000F58
+_021E082C: .word MOD05_021E083C
+_021E0830: .word 0x00000F62
+_021E0834: .word MOD05_021E093C
+_021E0838: .word 0x00000F66
+
+ thumb_func_start MOD05_021E083C
+MOD05_021E083C: ; 0x021E083C
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ str r0, [sp]
+ add r0, r1, #0
+ mov r7, #0
+ str r1, [sp, #4]
+ cmp r0, #0
+ ble _021E0932
+_021E084C:
+ ldr r0, [sp]
+ mov r1, #0x20
+ bl MOD05_021DD048
+ add r5, r0, #0
+ beq _021E0932
+ ldr r4, [r5, #8]
+ bl MTRandom
+ mov r1, #0xe
+ bl _u32_div_f
+ add r6, r1, #0
+ lsl r1, r6, #0x10
+ ldr r0, [r5, #4]
+ lsr r1, r1, #0x10
+ bl FUN_02020208
+ asr r0, r6, #1
+ lsr r0, r0, #0x1e
+ add r0, r6, r0
+ asr r6, r0, #2
+ bl MTRandom
+ mov r1, #0x19
+ bl _u32_div_f
+ add r2, r1, #0
+ add r2, #8
+ add r1, r6, #1
+ add r0, r2, #0
+ mul r0, r1
+ str r0, [r4]
+ mov r0, #0x10
+ bl _s32_div_f
+ str r0, [r4, #4]
+ mov r0, #0
+ str r0, [r4, #8]
+ bl MTRandom
+ mov r1, #1
+ and r0, r1
+ str r0, [r4, #0xc]
+ add r0, r1, #0
+ str r0, [r4, #0x10]
+ add r0, r6, #1
+ cmp r0, #4
+ bhi _021E0912
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_021E08BA: ; jump table
+ .short _021E0912 - _021E08BA - 2 ; case 0
+ .short _021E08C4 - _021E08BA - 2 ; case 1
+ .short _021E08C4 - _021E08BA - 2 ; case 2
+ .short _021E08E0 - _021E08BA - 2 ; case 3
+ .short _021E08FA - _021E08BA - 2 ; case 4
+_021E08C4:
+ bl MTRandom
+ ldr r1, _021E0938 ; =0x000001FF
+ and r0, r1
+ sub r0, #0x80
+ str r0, [sp, #8]
+ bl MTRandom
+ mov r1, #0xc0
+ bl _u32_div_f
+ add r1, #8
+ str r1, [sp, #0xc]
+ b _021E0912
+_021E08E0:
+ bl MTRandom
+ ldr r1, _021E0938 ; =0x000001FF
+ and r0, r1
+ sub r0, #0x80
+ str r0, [sp, #8]
+ bl MTRandom
+ mov r1, #0x7f
+ and r0, r1
+ add r0, #0x40
+ str r0, [sp, #0xc]
+ b _021E0912
+_021E08FA:
+ bl MTRandom
+ ldr r1, _021E0938 ; =0x000001FF
+ and r0, r1
+ sub r0, #0x80
+ str r0, [sp, #8]
+ bl MTRandom
+ mov r1, #0x1f
+ and r0, r1
+ add r0, #0xa0
+ str r0, [sp, #0xc]
+_021E0912:
+ mov r0, #0
+ str r0, [sp, #0x10]
+ ldr r0, [sp, #8]
+ add r1, sp, #8
+ lsl r0, r0, #0xc
+ str r0, [sp, #8]
+ ldr r0, [sp, #0xc]
+ lsl r0, r0, #0xc
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #4]
+ bl MOD05_021DC4FC
+ ldr r0, [sp, #4]
+ add r7, r7, #1
+ cmp r7, r0
+ blt _021E084C
+_021E0932:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ nop
+_021E0938: .word 0x000001FF
+
+ thumb_func_start MOD05_021E093C
+MOD05_021E093C: ; 0x021E093C
+ push {r3, r4, r5, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ add r0, sp, #0
+ add r1, r5, #0
+ ldr r4, [r5, #8]
+ bl MOD05_021DD168
+ add r3, sp, #0
+ ldmia r3!, {r0, r1}
+ add r2, sp, #0xc
+ stmia r2!, {r0, r1}
+ ldr r0, [r3]
+ str r0, [r2]
+ ldr r1, [r4, #8]
+ ldr r0, [r4, #4]
+ add r0, r1, r0
+ str r0, [r4, #8]
+ ldr r0, [r4]
+ cmp r0, #0
+ ble _021E097C
+ sub r0, r0, #1
+ str r0, [r4]
+ ldr r0, [r4, #8]
+ mov r1, #0x64
+ bl _s32_div_f
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #0x10]
+ b _021E098C
+_021E097C:
+ ldr r0, [r4, #8]
+ mov r1, #0x32
+ bl _s32_div_f
+ ldr r1, [sp, #0x10]
+ lsl r0, r0, #0xc
+ sub r0, r1, r0
+ str r0, [sp, #0x10]
+_021E098C:
+ ldr r0, [r4, #0x10]
+ sub r0, r0, #1
+ str r0, [r4, #0x10]
+ cmp r0, #0
+ bgt _021E09B8
+ mov r0, #1
+ str r0, [r4, #0x10]
+ ldr r1, [r4, #0xc]
+ cmp r1, #0
+ bne _021E09AC
+ ldr r2, [sp, #0xc]
+ lsl r1, r0, #0xd
+ add r1, r2, r1
+ str r1, [sp, #0xc]
+ str r0, [r4, #0xc]
+ b _021E09B8
+_021E09AC:
+ ldr r1, [sp, #0xc]
+ lsl r0, r0, #0xd
+ sub r0, r1, r0
+ str r0, [sp, #0xc]
+ mov r0, #0
+ str r0, [r4, #0xc]
+_021E09B8:
+ ldr r0, [r5, #4]
+ add r1, sp, #0xc
+ bl MOD05_021DC4FC
+ ldr r0, [sp, #0x10]
+ asr r1, r0, #0xc
+ mov r0, #0xf
+ mvn r0, r0
+ cmp r1, r0
+ bgt _021E09D2
+ add r0, r5, #0
+ bl MOD05_021DD100
+_021E09D2:
+ add sp, #0x18
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E09D8
+MOD05_021E09D8: ; 0x021E09D8
+ push {r4, r5, r6, lr}
+ ldr r0, _021E0ABC ; =0x00000F58
+ add r4, r1, #0
+ add r1, r0, #0
+ add r1, #0xa
+ ldrh r1, [r4, r1]
+ ldr r5, [r4, r0]
+ cmp r1, #5
+ bhi _021E0AB8
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E09F6: ; jump table
+ .short _021E0A02 - _021E09F6 - 2 ; case 0
+ .short _021E0A34 - _021E09F6 - 2 ; case 1
+ .short _021E0A52 - _021E09F6 - 2 ; case 2
+ .short _021E0A78 - _021E09F6 - 2 ; case 3
+ .short _021E0A94 - _021E09F6 - 2 ; case 4
+ .short _021E0AB2 - _021E09F6 - 2 ; case 5
+_021E0A02:
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #0x10
+ mov r3, #8
+ bl MOD05_021DC6EC
+ mov r0, #0
+ mov r1, #0x10
+ bl MOD05_021DC6D4
+ ldr r1, _021E0AC0 ; =0x0400000C
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #3
+ orr r0, r2
+ strh r0, [r1]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E0AC4 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0A34:
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r6, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #1
+ bne _021E0AB8
+ ldr r0, _021E0AC4 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0A52:
+ mov r0, #0x10
+ mov r1, #0
+ bl MOD05_021DC6D4
+ ldr r1, _021E0AC0 ; =0x0400000C
+ mov r0, #3
+ ldrh r2, [r1]
+ bic r2, r0
+ mov r0, #3
+ orr r0, r2
+ strh r0, [r1]
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E0AC4 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0A78:
+ add r0, #0xe
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bne _021E0AB8
+ add r0, r5, #0
+ mov r1, #0x10
+ mov r2, #0
+ mov r3, #8
+ bl MOD05_021DC6EC
+ ldr r0, _021E0AC4 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0A94:
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r6, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #1
+ bne _021E0AB8
+ ldr r0, _021E0AC4 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0AB2:
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+_021E0AB8:
+ pop {r4, r5, r6, pc}
+ nop
+_021E0ABC: .word 0x00000F58
+_021E0AC0: .word 0x0400000C
+_021E0AC4: .word 0x00000F62
+
+ thumb_func_start MOD05_021E0AC8
+MOD05_021E0AC8: ; 0x021E0AC8
+ push {r4, r5, r6, lr}
+ ldr r0, _021E0B90 ; =0x00000F58
+ add r4, r1, #0
+ add r1, r0, #0
+ add r1, #0xa
+ ldrh r1, [r4, r1]
+ ldr r5, [r4, r0]
+ cmp r1, #5
+ bhi _021E0B8C
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E0AE6: ; jump table
+ .short _021E0AF2 - _021E0AE6 - 2 ; case 0
+ .short _021E0B16 - _021E0AE6 - 2 ; case 1
+ .short _021E0B34 - _021E0AE6 - 2 ; case 2
+ .short _021E0B4C - _021E0AE6 - 2 ; case 3
+ .short _021E0B68 - _021E0AE6 - 2 ; case 4
+ .short _021E0B86 - _021E0AE6 - 2 ; case 5
+_021E0AF2:
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #4
+ mov r3, #8
+ bl MOD05_021DC6EC
+ mov r0, #0
+ mov r1, #0x10
+ bl MOD05_021DC6D4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E0B94 ; =0x00000F62
+ mov r1, #1
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0B16:
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r6, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #0
+ beq _021E0B8C
+ ldr r0, _021E0B94 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0B34:
+ mov r0, #4
+ mov r1, #0xc
+ bl MOD05_021DC6D4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E0B94 ; =0x00000F62
+ mov r1, #3
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0B4C:
+ add r0, #0xe
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bne _021E0B8C
+ add r0, r5, #0
+ mov r1, #4
+ mov r2, #0
+ mov r3, #8
+ bl MOD05_021DC6EC
+ ldr r0, _021E0B94 ; =0x00000F62
+ mov r1, #4
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0B68:
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r6, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #0
+ beq _021E0B8C
+ ldr r0, _021E0B94 ; =0x00000F62
+ mov r1, #5
+ strh r1, [r4, r0]
+ pop {r4, r5, r6, pc}
+_021E0B86:
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+_021E0B8C:
+ pop {r4, r5, r6, pc}
+ nop
+_021E0B90: .word 0x00000F58
+_021E0B94: .word 0x00000F62
+
+ thumb_func_start MOD05_021E0B98
+MOD05_021E0B98: ; 0x021E0B98
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r0, _021E0D14 ; =0x00000F58
+ add r4, r1, #0
+ add r1, r0, #0
+ add r1, #0xa
+ ldrh r1, [r4, r1]
+ ldr r5, [r4, r0]
+ cmp r1, #5
+ bls _021E0BAE
+ b _021E0D10
+_021E0BAE:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E0BBA: ; jump table
+ .short _021E0BC6 - _021E0BBA - 2 ; case 0
+ .short _021E0C16 - _021E0BBA - 2 ; case 1
+ .short _021E0C44 - _021E0BBA - 2 ; case 2
+ .short _021E0C84 - _021E0BBA - 2 ; case 3
+ .short _021E0CB8 - _021E0BBA - 2 ; case 4
+ .short _021E0CF2 - _021E0BBA - 2 ; case 5
+_021E0BC6:
+ ldr r1, _021E0D18 ; =0x0000764F
+ mov r2, #0x41
+ str r1, [sp]
+ mov r1, #0
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ add r1, r5, #0
+ lsl r2, r2, #2
+ str r0, [sp, #0xc]
+ ldr r3, [r4]
+ add r0, r5, #0
+ ldr r2, [r3, r2]
+ add r0, #0x44
+ ldr r2, [r2, #0x44]
+ add r1, #0x14
+ mov r3, #7
+ bl MOD05_021DD420
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #9
+ mov r3, #0x1e
+ bl MOD05_021DC6EC
+ mov r0, #0
+ mov r1, #0x10
+ bl MOD05_021DC6D4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E0D1C ; =0x00000F62
+ mov r1, #1
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0C16:
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD05_021DD5D0
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r7, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #1
+ bne _021E0D10
+ cmp r7, #1
+ bne _021E0D10
+ ldr r0, _021E0D1C ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0C44:
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021E0C6A
+ mov r0, #0x41
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021E0D18 ; =0x0000764F
+ ldr r0, [r0, #0x44]
+ mov r1, #7
+ mov r3, #0
+ str r0, [r5, #0x14]
+ bl MOD05_021DD49C
+ add r5, #0x14
+ add r0, r5, #0
+ bl MOD05_021DD5EC
+_021E0C6A:
+ mov r0, #9
+ mov r1, #7
+ bl MOD05_021DC6D4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E0D1C ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0C84:
+ add r1, r0, #0
+ add r1, #0xe
+ ldrh r1, [r4, r1]
+ cmp r1, #5
+ bne _021E0D10
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021E0CA2
+ add r0, r5, #0
+ add r0, #0x14
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021E0CA2:
+ add r0, r5, #0
+ mov r1, #9
+ mov r2, #0
+ mov r3, #0x1e
+ bl MOD05_021DC6EC
+ ldr r0, _021E0D1C ; =0x00000F62
+ mov r1, #4
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0CB8:
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021E0CCC
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD05_021DD5D0
+ add r6, r0, #0
+ b _021E0CCE
+_021E0CCC:
+ mov r6, #1
+_021E0CCE:
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r7, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #1
+ bne _021E0D10
+ cmp r7, #1
+ bne _021E0D10
+ ldr r0, _021E0D1C ; =0x00000F62
+ mov r1, #5
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0CF2:
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021E0D0A
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021E0D0A:
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+_021E0D10:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E0D14: .word 0x00000F58
+_021E0D18: .word 0x0000764F
+_021E0D1C: .word 0x00000F62
+
+ thumb_func_start MOD05_021E0D20
+MOD05_021E0D20: ; 0x021E0D20
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ ldr r0, _021E0E9C ; =0x00000F58
+ add r4, r1, #0
+ add r1, r0, #0
+ add r1, #0xa
+ ldrh r1, [r4, r1]
+ ldr r5, [r4, r0]
+ cmp r1, #5
+ bls _021E0D36
+ b _021E0E98
+_021E0D36:
+ add r1, r1, r1
+ add r1, pc
+ ldrh r1, [r1, #6]
+ lsl r1, r1, #0x10
+ asr r1, r1, #0x10
+ add pc, r1
+_021E0D42: ; jump table
+ .short _021E0D4E - _021E0D42 - 2 ; case 0
+ .short _021E0D9E - _021E0D42 - 2 ; case 1
+ .short _021E0DCC - _021E0D42 - 2 ; case 2
+ .short _021E0E0C - _021E0D42 - 2 ; case 3
+ .short _021E0E40 - _021E0D42 - 2 ; case 4
+ .short _021E0E7A - _021E0D42 - 2 ; case 5
+_021E0D4E:
+ ldr r1, _021E0EA0 ; =0x00007555
+ mov r2, #0x41
+ str r1, [sp]
+ ldr r1, _021E0EA4 ; =0x00007FFF
+ add r0, #0xc
+ str r1, [sp, #4]
+ mov r1, #1
+ str r1, [sp, #8]
+ ldrh r0, [r4, r0]
+ add r1, r5, #0
+ lsl r2, r2, #2
+ str r0, [sp, #0xc]
+ ldr r3, [r4]
+ add r0, r5, #0
+ ldr r2, [r3, r2]
+ add r0, #0x44
+ ldr r2, [r2, #0x44]
+ add r1, #0x14
+ mov r3, #6
+ bl MOD05_021DD420
+ add r0, r5, #0
+ mov r1, #0
+ mov r2, #9
+ mov r3, #0x1e
+ bl MOD05_021DC6EC
+ mov r0, #0
+ mov r1, #0x10
+ bl MOD05_021DC6D4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E0EA8 ; =0x00000F62
+ mov r1, #1
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0D9E:
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD05_021DD5D0
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r7, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #1
+ bne _021E0E98
+ cmp r7, #1
+ bne _021E0E98
+ ldr r0, _021E0EA8 ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0DCC:
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021E0DF2
+ mov r0, #0x41
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r0, [r1, r0]
+ ldr r2, _021E0EA0 ; =0x00007555
+ ldr r0, [r0, #0x44]
+ ldr r3, _021E0EA4 ; =0x00007FFF
+ mov r1, #6
+ str r0, [r5, #0x14]
+ bl MOD05_021DD49C
+ add r5, #0x14
+ add r0, r5, #0
+ bl MOD05_021DD5EC
+_021E0DF2:
+ mov r0, #9
+ mov r1, #7
+ bl MOD05_021DC6D4
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E0EA8 ; =0x00000F62
+ mov r1, #3
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0E0C:
+ add r1, r0, #0
+ add r1, #0xe
+ ldrh r1, [r4, r1]
+ cmp r1, #5
+ bne _021E0E98
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021E0E2A
+ add r0, r5, #0
+ add r0, #0x14
+ mov r1, #1
+ mov r2, #0
+ bl MOD05_021DD5B4
+_021E0E2A:
+ add r0, r5, #0
+ mov r1, #9
+ mov r2, #0
+ mov r3, #0x1e
+ bl MOD05_021DC6EC
+ ldr r0, _021E0EA8 ; =0x00000F62
+ mov r1, #4
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0E40:
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021E0E54
+ add r0, r5, #0
+ add r0, #0x14
+ bl MOD05_021DD5D0
+ add r6, r0, #0
+ b _021E0E56
+_021E0E54:
+ mov r6, #1
+_021E0E56:
+ add r0, r5, #0
+ bl MOD05_021DC6FC
+ add r7, r0, #0
+ ldr r0, [r5]
+ mov r1, #0x10
+ sub r1, r1, r0
+ bl MOD05_021DC6D4
+ cmp r6, #1
+ bne _021E0E98
+ cmp r7, #1
+ bne _021E0E98
+ ldr r0, _021E0EA8 ; =0x00000F62
+ mov r1, #5
+ add sp, #0x10
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, r6, r7, pc}
+_021E0E7A:
+ add r0, #0xc
+ ldrh r0, [r4, r0]
+ cmp r0, #0
+ beq _021E0E92
+ mov r2, #0
+ str r2, [sp]
+ str r2, [sp, #4]
+ ldr r0, [r5, #0x14]
+ mov r1, #1
+ add r3, r2, #0
+ bl MOD05_021DBA40
+_021E0E92:
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+_021E0E98:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E0E9C: .word 0x00000F58
+_021E0EA0: .word 0x00007555
+_021E0EA4: .word 0x00007FFF
+_021E0EA8: .word 0x00000F62
+
+ thumb_func_start MOD05_021E0EAC
+MOD05_021E0EAC: ; 0x021E0EAC
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ add r4, r1, #0
+ mov r0, #0x41
+ ldr r1, [r4]
+ lsl r0, r0, #2
+ ldr r1, [r1, r0]
+ ldr r0, _021E0F9C ; =0x00000F58
+ add r2, r0, #0
+ add r2, #0xa
+ ldrh r2, [r4, r2]
+ ldr r5, [r4, r0]
+ cmp r2, #5
+ bhi _021E0F98
+ add r2, r2, r2
+ add r2, pc
+ ldrh r2, [r2, #6]
+ lsl r2, r2, #0x10
+ asr r2, r2, #0x10
+ add pc, r2
+_021E0ED4: ; jump table
+ .short _021E0EE0 - _021E0ED4 - 2 ; case 0
+ .short _021E0F0A - _021E0ED4 - 2 ; case 1
+ .short _021E0F2C - _021E0ED4 - 2 ; case 2
+ .short _021E0F3E - _021E0ED4 - 2 ; case 3
+ .short _021E0F70 - _021E0ED4 - 2 ; case 4
+ .short _021E0F8C - _021E0ED4 - 2 ; case 5
+_021E0EE0:
+ ldr r1, [r1, #4]
+ add r0, r5, #0
+ ldr r1, [r1, #0x1c]
+ bl MOD05_021E1100
+ mov r0, #0x54
+ mov r1, #1
+ str r0, [sp]
+ mov r0, #0x1e
+ lsl r1, r1, #0x14
+ str r0, [sp, #4]
+ add r0, r5, #0
+ lsr r2, r1, #3
+ mov r3, #0x80
+ bl MOD05_021E11CC
+ ldr r0, _021E0FA0 ; =0x00000F62
+ mov r1, #1
+ add sp, #8
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021E0F0A:
+ add r0, r5, #0
+ bl MOD05_021E11EC
+ cmp r0, #1
+ bne _021E0F98
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ add r0, r5, #0
+ bl MOD05_021E1290
+ ldr r0, _021E0FA0 ; =0x00000F62
+ mov r1, #3
+ add sp, #8
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021E0F2C:
+ mov r0, #4
+ mov r1, #1
+ bl FUN_0201E6E4
+ ldr r0, _021E0FA0 ; =0x00000F62
+ mov r1, #3
+ add sp, #8
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021E0F3E:
+ add r0, #0xe
+ ldrh r0, [r4, r0]
+ cmp r0, #5
+ bne _021E0F98
+ ldr r1, [r1, #4]
+ add r0, r5, #0
+ ldr r1, [r1, #0x1c]
+ bl MOD05_021E1100
+ mov r0, #0x54
+ mov r1, #2
+ str r0, [sp]
+ mov r0, #0x1e
+ lsl r1, r1, #0x10
+ str r0, [sp, #4]
+ add r0, r5, #0
+ lsl r2, r1, #3
+ mov r3, #0x80
+ bl MOD05_021E11CC
+ ldr r0, _021E0FA0 ; =0x00000F62
+ mov r1, #4
+ add sp, #8
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021E0F70:
+ mov r0, #4
+ mov r1, #0
+ bl FUN_0201E6E4
+ add r0, r5, #0
+ bl MOD05_021E11EC
+ cmp r0, #1
+ bne _021E0F98
+ ldr r0, _021E0FA0 ; =0x00000F62
+ mov r1, #5
+ add sp, #8
+ strh r1, [r4, r0]
+ pop {r3, r4, r5, pc}
+_021E0F8C:
+ add r0, r5, #0
+ bl MOD05_021E117C
+ ldr r0, [r4, #4]
+ bl MOD05_021DCB6C
+_021E0F98:
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+_021E0F9C: .word 0x00000F58
+_021E0FA0: .word 0x00000F62
+
+ thumb_func_start MOD05_021E0FA4
+MOD05_021E0FA4: ; 0x021E0FA4
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r0, _021E0FCC ; =0x00000F5C
+ add r4, r1, #0
+ ldr r0, [r5, r0]
+ cmp r0, #0
+ beq _021E0FB6
+ bl ErrorHandling
+_021E0FB6:
+ ldr r1, _021E0FCC ; =0x00000F5C
+ mov r0, #1
+ str r0, [r5, r1]
+ lsl r0, r4, #0x10
+ lsr r0, r0, #0x10
+ add r1, r1, #4
+ strh r0, [r5, r1]
+ bl FUN_020054C8
+ pop {r3, r4, r5, pc}
+ nop
+_021E0FCC: .word 0x00000F5C
+
+ thumb_func_start MOD05_021E0FD0
+MOD05_021E0FD0: ; 0x021E0FD0
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #0xf6
+ lsl r0, r0, #4
+ ldrh r0, [r4, r0]
+ mov r1, #0
+ bl FUN_020054F0
+ ldr r0, _021E0FE8 ; =0x00000F5C
+ mov r1, #0
+ str r1, [r4, r0]
+ pop {r4, pc}
+ .balign 4, 0
+_021E0FE8: .word 0x00000F5C
+
+ thumb_func_start MOD05_021E0FEC
+MOD05_021E0FEC: ; 0x021E0FEC
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ add r5, r0, #0
+ ldr r0, [r5, #0x1c]
+ bl FUN_02012988
+ str r0, [sp, #0xc]
+ ldr r0, [r5, #0x20]
+ bl FUN_02012988
+ ldr r7, [sp, #0xc]
+ str r0, [sp, #8]
+ mov r4, #0
+ add r6, r0, #0
+_021E1008:
+ mov r0, #2
+ ldrsh r2, [r5, r0]
+ cmp r4, r2
+ bgt _021E1026
+ add r0, sp, #0x14
+ str r0, [sp]
+ add r0, sp, #0x10
+ str r0, [sp, #4]
+ mov r1, #0
+ ldrsh r1, [r5, r1]
+ ldr r0, [r5, #4]
+ add r3, r4, #0
+ bl MOD05_021E1074
+ b _021E105C
+_021E1026:
+ lsl r0, r2, #1
+ cmp r4, r0
+ bgt _021E1048
+ sub r0, r0, r4
+ lsl r1, r0, #1
+ ldr r0, [sp, #0xc]
+ ldrh r0, [r0, r1]
+ str r0, [sp, #0x14]
+ mov r0, #2
+ ldrsh r0, [r5, r0]
+ lsl r0, r0, #1
+ sub r0, r0, r4
+ lsl r1, r0, #1
+ ldr r0, [sp, #8]
+ ldrh r0, [r0, r1]
+ str r0, [sp, #0x10]
+ b _021E105C
+_021E1048:
+ add r0, sp, #0x14
+ str r0, [sp]
+ add r0, sp, #0x10
+ str r0, [sp, #4]
+ mov r1, #0
+ ldrsh r1, [r5, r1]
+ ldr r0, [r5, #4]
+ add r3, r4, #0
+ bl MOD05_021E1074
+_021E105C:
+ ldr r0, [sp, #0x14]
+ add r4, r4, #1
+ strh r0, [r7]
+ ldr r0, [sp, #0x10]
+ add r7, r7, #2
+ strh r0, [r6]
+ add r6, r6, #2
+ cmp r4, #0xc0
+ blt _021E1008
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E1074
+MOD05_021E1074: ; 0x021E1074
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0xc
+ str r1, [sp]
+ ldr r5, [sp, #0x20]
+ ldr r4, [sp, #0x24]
+ sub r1, r3, r2
+ bpl _021E1084
+ neg r1, r1
+_021E1084:
+ cmp r1, r0
+ blt _021E1092
+ mov r0, #0
+ str r0, [r5]
+ add sp, #0xc
+ str r0, [r4]
+ pop {r4, r5, r6, r7, pc}
+_021E1092:
+ lsl r1, r1, #0xc
+ str r1, [sp, #4]
+ asr r7, r1, #0x1f
+ asr r1, r0, #0x1f
+ add r2, r0, #0
+ add r3, r1, #0
+ bl _ll_mul
+ str r0, [sp, #8]
+ ldr r0, [sp, #4]
+ add r6, r1, #0
+ add r1, r7, #0
+ add r2, r0, #0
+ add r3, r7, #0
+ bl _ll_mul
+ add r2, r0, #0
+ add r3, r1, #0
+ mov r0, #2
+ ldr r1, [sp, #8]
+ mov r7, #0
+ lsl r0, r0, #0xa
+ add r0, r1, r0
+ adc r6, r7
+ lsl r1, r6, #0x14
+ lsr r0, r0, #0xc
+ orr r0, r1
+ mov r1, #2
+ lsl r1, r1, #0xa
+ add r2, r2, r1
+ adc r3, r7
+ lsl r1, r3, #0x14
+ lsr r2, r2, #0xc
+ orr r2, r1
+ sub r0, r0, r2
+ bl FX_Sqrt
+ asr r2, r0, #0xc
+ ldr r0, [sp]
+ sub r0, r0, r2
+ str r0, [r5]
+ bpl _021E10EA
+ add r0, r7, #0
+ str r0, [r5]
+_021E10EA:
+ ldr r1, [r5]
+ lsl r0, r2, #1
+ add r0, r1, r0
+ str r0, [r4]
+ cmp r0, #0xff
+ ble _021E10FA
+ mov r0, #0xff
+ str r0, [r4]
+_021E10FA:
+ add sp, #0xc
+ pop {r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E1100
+MOD05_021E1100: ; 0x021E1100
+ push {r4, r5, r6, lr}
+ ldr r2, _021E116C ; =0x0000062C
+ add r4, r1, #0
+ mov r1, #0
+ add r5, r0, #0
+ bl memset
+ mov r2, #0x6b
+ add r1, r5, #0
+ lsl r2, r2, #2
+ mov r0, #4
+ add r1, #0x2c
+ add r2, r5, r2
+ bl FUN_02012944
+ mov r1, #0xcb
+ ldr r2, _021E1170 ; =0x000004AC
+ lsl r1, r1, #2
+ str r0, [r5, #0x1c]
+ mov r0, #4
+ add r1, r5, r1
+ add r2, r5, r2
+ bl FUN_02012944
+ str r0, [r5, #0x20]
+ mov r0, #0xcb
+ ldr r1, _021E1170 ; =0x000004AC
+ mov r3, #0
+ add r6, r5, #0
+ mov r2, #0xff
+ lsl r0, r0, #2
+_021E113E:
+ strh r2, [r6, r0]
+ strh r2, [r6, r1]
+ add r3, r3, #1
+ add r6, r6, #2
+ cmp r3, #0xc0
+ blt _021E113E
+ ldr r0, _021E1174 ; =MOD05_021E12E4
+ add r1, r5, #0
+ mov r2, #0x78
+ str r4, [r5, #0x14]
+ bl FUN_0200CA98
+ mov r2, #1
+ ldr r0, _021E1178 ; =MOD05_021E1278
+ add r1, r5, #0
+ lsl r2, r2, #0xa
+ bl FUN_0200CA98
+ str r0, [r5, #0x24]
+ mov r0, #0
+ str r0, [r5, #0x28]
+ pop {r4, r5, r6, pc}
+ nop
+_021E116C: .word 0x0000062C
+_021E1170: .word 0x000004AC
+_021E1174: .word MOD05_021E12E4
+_021E1178: .word MOD05_021E1278
+
+ thumb_func_start MOD05_021E117C
+MOD05_021E117C: ; 0x021E117C
+ push {r4, lr}
+ add r4, r0, #0
+ mov r0, #1
+ lsl r0, r0, #0x1a
+ mov r1, #0xe
+ ldr r2, [r0]
+ lsl r1, r1, #0xc
+ and r1, r2
+ lsr r3, r1, #0xd
+ ldr r2, [r0]
+ ldr r1, _021E11C4 ; =0xFFFF1FFF
+ and r2, r1
+ mov r1, #2
+ bic r3, r1
+ lsl r1, r3, #0xd
+ orr r1, r2
+ str r1, [r0]
+ ldr r0, [r4, #0x18]
+ bl MOD05_021F4648
+ ldr r0, [r4, #0x24]
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x1c]
+ bl FUN_02012974
+ ldr r0, [r4, #0x20]
+ bl FUN_02012974
+ ldr r2, _021E11C8 ; =0x0000062C
+ add r0, r4, #0
+ mov r1, #0
+ bl memset
+ pop {r4, pc}
+ nop
+_021E11C4: .word 0xFFFF1FFF
+_021E11C8: .word 0x0000062C
+
+ thumb_func_start MOD05_021E11CC
+MOD05_021E11CC: ; 0x021E11CC
+ push {r3, r4, r5, lr}
+ add r4, r0, #0
+ add r5, r3, #0
+ ldr r3, [sp, #0x14]
+ add r0, r4, #4
+ bl MOD05_021DC728
+ ldr r0, [sp, #0x10]
+ strh r5, [r4]
+ strh r0, [r4, #2]
+ mov r0, #1
+ str r0, [r4, #0x28]
+ add r0, r4, #0
+ bl MOD05_021E0FEC
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E11EC
+MOD05_021E11EC: ; 0x021E11EC
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ ldr r1, [r5, #0x28]
+ cmp r1, #0
+ bne _021E11FE
+ bl MOD05_021E12B8
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_021E11FE:
+ add r0, r5, #4
+ bl MOD05_021DC738
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD05_021E0FEC
+ cmp r4, #1
+ bne _021E1214
+ mov r0, #0
+ str r0, [r5, #0x28]
+_021E1214:
+ add r0, r4, #0
+ pop {r3, r4, r5, pc}
+
+ thumb_func_start MOD05_021E1218
+MOD05_021E1218: ; 0x021E1218
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #8
+ ldr r0, _021E1270 ; =0x04000006
+ add r5, r1, #0
+ ldrh r7, [r0]
+ mov r6, #0
+ add r4, sp, #0
+_021E1226:
+ ldr r0, [r5, #0x1c]
+ bl FUN_0201299C
+ add r6, r6, #1
+ add r5, r5, #4
+ stmia r4!, {r0}
+ cmp r6, #2
+ blt _021E1226
+ cmp r7, #0xc0
+ bge _021E126C
+ add r7, r7, #1
+ cmp r7, #0xc0
+ blt _021E1242
+ sub r7, #0xc0
+_021E1242:
+ ldr r1, _021E1274 ; =0x04000004
+ mov r0, #2
+ ldrh r2, [r1]
+ tst r0, r2
+ beq _021E126C
+ ldr r2, [sp]
+ lsl r0, r7, #1
+ ldrh r2, [r2, r0]
+ lsl r3, r2, #8
+ mov r2, #0xff
+ lsl r2, r2, #8
+ and r3, r2
+ ldr r2, [sp, #4]
+ ldrh r0, [r2, r0]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ orr r0, r3
+ strh r0, [r1, #0x3e]
+ mov r0, #0xc0
+ add r1, #0x42
+ strh r0, [r1]
+_021E126C:
+ add sp, #8
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+_021E1270: .word 0x04000006
+_021E1274: .word 0x04000004
+
+ thumb_func_start MOD05_021E1278
+MOD05_021E1278: ; 0x021E1278
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ mov r4, #0
+_021E127E:
+ ldr r0, [r5, #0x1c]
+ bl FUN_020129B4
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021E127E
+ pop {r3, r4, r5, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E1290
+MOD05_021E1290: ; 0x021E1290
+ ldr r3, _021E129C ; =FUN_0200CA98
+ add r1, r0, #0
+ ldr r0, _021E12A0 ; =MOD05_021E12A4
+ mov r2, #0x80
+ bx r3
+ nop
+_021E129C: .word FUN_0200CA98
+_021E12A0: .word MOD05_021E12A4
+
+ thumb_func_start MOD05_021E12A4
+MOD05_021E12A4: ; 0x021E12A4
+ push {r4, lr}
+ add r4, r0, #0
+ add r0, r1, #0
+ bl MOD05_021E117C
+ add r0, r4, #0
+ bl FUN_0200CAB4
+ pop {r4, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E12B8
+MOD05_021E12B8: ; 0x021E12B8
+ push {r3, r4, r5, r6, r7, lr}
+ mov r7, #6
+ add r5, r0, #0
+ mov r4, #0
+ lsl r7, r7, #6
+_021E12C2:
+ ldr r0, [r5, #0x1c]
+ bl FUN_0201299C
+ add r6, r0, #0
+ ldr r0, [r5, #0x1c]
+ bl FUN_02012988
+ add r1, r6, #0
+ add r2, r7, #0
+ bl memcpy
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #2
+ blt _021E12C2
+ pop {r3, r4, r5, r6, r7, pc}
+ .balign 4, 0
+
+ thumb_func_start MOD05_021E12E4
+MOD05_021E12E4: ; 0x021E12E4
+ push {r3, r4, r5, r6, r7, lr}
+ add r4, r1, #0
+ ldr r1, _021E1364 ; =0x0400004A
+ add r5, r0, #0
+ ldrb r0, [r1]
+ add r7, sp, #0
+ ldr r3, _021E1368 ; =0xFFFFC0FF
+ strb r0, [r7]
+ add r0, r1, #0
+ sub r0, #0x4a
+ ldr r2, [r0]
+ mov r0, #0xe
+ lsl r0, r0, #0xc
+ and r0, r2
+ lsr r2, r0, #0xd
+ sub r0, r1, #2
+ ldrh r6, [r0]
+ and r6, r3
+ mov r3, #0x3f
+ lsl r3, r3, #8
+ orr r6, r3
+ lsr r3, r1, #0xd
+ orr r3, r6
+ strh r3, [r0]
+ ldrh r1, [r1]
+ mov r0, #0x3f
+ bic r1, r0
+ mov r0, #0x3e
+ orr r0, r1
+ ldrb r1, [r7]
+ lsl r1, r1, #0x1a
+ lsr r1, r1, #0x1f
+ beq _021E132A
+ mov r1, #0x20
+ orr r0, r1
+_021E132A:
+ ldr r1, _021E1364 ; =0x0400004A
+ mov r3, #0xff
+ strh r0, [r1]
+ add r0, r1, #0
+ sub r0, #8
+ strh r3, [r0]
+ sub r0, r1, #4
+ mov r3, #0xc0
+ strh r3, [r0]
+ sub r1, #0x4a
+ ldr r3, [r1]
+ ldr r0, _021E136C ; =0xFFFF1FFF
+ and r0, r3
+ mov r3, #2
+ orr r2, r3
+ lsl r2, r2, #0xd
+ orr r0, r2
+ str r0, [r1]
+ ldr r0, [r4, #0x14]
+ ldr r1, _021E1370 ; =MOD05_021E1218
+ add r2, r4, #0
+ bl MOD05_021F4624
+ str r0, [r4, #0x18]
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_021E1364: .word 0x0400004A
+_021E1368: .word 0xFFFFC0FF
+_021E136C: .word 0xFFFF1FFF
+_021E1370: .word MOD05_021E1218
+
+ .section .rodata
+
+ .global UNK05_021F67C8
+UNK05_021F67C8: ; 0x021F67C8
+ .word 0x00000002, 0x00000002, 0x00000002, 0x00000002
+
+ .global UNK05_021F67D8
+UNK05_021F67D8: ; 0x021F67D8
+ .word 0x00000010, 0x00000020, 0x00000010, 0x0000000A
+
+ .global UNK05_021F67E8
+UNK05_021F67E8: ; 0x021F67E8
+ .word 0x00000002, 0x00000004, 0x00000002, 0x00000004
+
+ .global UNK05_021F67F8
+UNK05_021F67F8: ; 0x021F67F8
+ .word -4, -6, -8, -10
+
+ .global UNK05_021F6808
+UNK05_021F6808: ; 0x021F6808
+ .word 0x00000064, 0x00000064, 0x000000C8, 0x00000064
+ .word 0x0000012C
+
+ .global UNK05_021F681C
+UNK05_021F681C: ; 0x021F681C
+ .word -3, -5, -5, -3
+ .word -5, -6, -10, -6
+
+ .global UNK05_021F683C
+UNK05_021F683C: ; 0x021F683C
+ .word -3, -5, -5, -4
+ .word -5, -6, -10, -6
+ .word 0x00000002, 0x00000002, 0x00000002, 0x00000004
+ .word 0x00000004, 0x00000002, 0x00000002, 0x00000002
+
+ .global UNK05_021F687C
+UNK05_021F687C: ; 0x021F687C
+ .word 0x00000002, 0x00000002, 0x00000002, 0x000000004
+ .word 0x00000004, 0x00000002, 0x00000002, 0x000000002
+
+ .global UNK05_021F689C
+UNK05_021F689C: ; 0x021F689C
+ .word 0x00000015, 0x00000024, 0x00000026, 0x00000025
+ .word 0x00000024, 0x00000026, 0x00000009, 0x00000008
+ .word 0x0000000A, 0x0000002A, 0x0000002C, 0x0000002B
+ .word 0x0000001E, 0x0000001D, 0x0000001F, 0x0000002E
+ .word 0x0000002D, 0x0000002F, 0x00000033, 0x0000002D
+ .word 0x0000002F, 0x00000034, 0x00000035, 0x00000036
+ .word 0x00000031, 0x00000030, 0x00000032
+
+ .section .data
+
+ .global UNK05_021FD2D4
+UNK05_021FD2D4: ; 0x021FD2D4
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DD71C
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00
+ .byte 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021E0AC8
+ .byte 0x00, 0x00, 0x00, 0x00
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DD770
+ .byte 0x05, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DFE30
+ .byte 0x05, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DFD44
+ .byte 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF
+ .byte 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DDB14
+ .byte 0x01, 0x00, 0x00, 0x00
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DDF78
+ .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DF11C
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DE8C0
+ .byte 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
+ .byte 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021E00A4
+ .byte 0x02, 0x00, 0x00, 0x00
+ .byte 0x01, 0x00, 0x00, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DEE2C
+ .byte 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DF588
+ .byte 0x07, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021E0700
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00
+ .byte 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021E09D8
+ .byte 0xFF, 0xFF, 0xFF, 0xFF
+ .byte 0x06, 0x00, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021E0D20
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021E0B98
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021E0EAC
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00
+ .byte 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021E05A8
+ .byte 0xFF, 0xFF, 0xFF, 0xFF
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DE5F8
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DE75C
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DF90C
+ .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DE360
+ .byte 0x02, 0x00, 0x00, 0x00
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .word MOD05_021DEA6C