diff options
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/global.inc | 27 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DC0B8.s | 10781 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 10772 |
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 |