summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf1
-rw-r--r--arm9/global.inc27
-rw-r--r--arm9/modules/05/asm/mod05_021DC0B8.s10781
-rw-r--r--arm9/modules/05/asm/module_05.s10772
4 files changed, 10809 insertions, 10772 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 5d85672b..9e7d2218 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -529,6 +529,7 @@ Overlay MODULE_05
Object mod05_021DBD84.o
Object mod05_021DBE04.o
Object mod05_021DBEF4.o
+ Object mod05_021DC0B8.o
Object module_05.o
}
diff --git a/arm9/global.inc b/arm9/global.inc
index a93057d1..c750a6c5 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -6331,7 +6331,32 @@
.extern MOD05_021DC0F8
.extern MOD05_021DC124
.extern MOD05_021DC174
+.extern MOD05_021DC1D0
.extern MOD05_021DD60C
+.extern MOD05_021DD71C
+.extern MOD05_021DD770
+.extern MOD05_021DDB14
+.extern MOD05_021DDF78
+.extern MOD05_021E00A4
+.extern MOD05_021DE360
+.extern MOD05_021DE5F8
+.extern MOD05_021DE75C
+.extern MOD05_021DE8C0
+.extern MOD05_021DEA6C
+.extern MOD05_021DEE2C
+.extern MOD05_021DF11C
+.extern MOD05_021DF588
+.extern MOD05_021DF90C
+.extern MOD05_021DFD44
+.extern MOD05_021DFE30
+.extern MOD05_021E0000
+.extern MOD05_021E05A8
+.extern MOD05_021E0700
+.extern MOD05_021E09D8
+.extern MOD05_021E0AC8
+.extern MOD05_021E0B98
+.extern MOD05_021E0D20
+.extern MOD05_021E0EAC
.extern MOD05_021E1374
.extern MOD05_021E1654
.extern MOD05_021E1858
@@ -6546,6 +6571,8 @@
.extern MOD05_021F45C8
.extern MOD05_021F45E8
.extern MOD05_021F4608
+.extern MOD05_021F4624
+.extern MOD05_021F4648
.extern MOD05_021F46C8
.extern MOD05_021F4704
.extern MOD05_021F4724
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
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 64e26e0b..3aba12d9 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -3,10641 +3,6 @@
.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
-
thumb_func_start MOD05_021E1374
MOD05_021E1374: ; 0x021E1374
push {r3, r4, r5, r6, r7, lr}
@@ -54163,54 +43528,6 @@ _021F6428: .word MOD05_021F57F0
.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
-
.global UNK05_021F6908
UNK05_021F6908: ; 0x021F6908
.word 0x0001004B, 0x000000FE
@@ -57140,95 +46457,6 @@ UNK05_021FD1B8: ; 0x021FD1B8
.section .data
.balign 4
- .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
.global UNK05_021FD610
UNK05_021FD610: ; 0x021FD610