diff options
author | Cleverking2003 <30466983+Cleverking2003@users.noreply.github.com> | 2020-07-17 12:00:41 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-17 12:00:41 +0300 |
commit | ca9a7a58bceec9afe84138f4c9e8ad5cc782d3a6 (patch) | |
tree | 19b5a59fa2d51bebc1c971ca3df51ae7c86728d3 | |
parent | 0d298c2352cb9a4ceb7d5564fe5239eb49691536 (diff) | |
parent | 82ee6e25d77af95d173f0aa64194e2013eda5a24 (diff) |
Merge pull request #238 from red031000/master
split mod05_021D9320 to mod05_021DC0B8
-rw-r--r-- | arm9/arm9.lsf | 11 | ||||
-rw-r--r-- | arm9/global.inc | 62 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021D9320.s | 920 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021D9A48.s | 1632 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DA5B8.s | 1882 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DB44C.s | 632 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DB900.s | 137 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DBA00.s | 124 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DBABC.s | 400 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DBD84.s | 95 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DBE04.s | 176 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DBEF4.s | 323 | ||||
-rw-r--r-- | arm9/modules/05/asm/mod05_021DC0B8.s | 10781 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 17039 |
14 files changed, 17175 insertions, 17039 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index d59f7e0b..9e7d2218 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -519,6 +519,17 @@ Overlay MODULE_05 Object mod05_021D74E0.o Object mod05_021D7F4C.o Object mod05_021D80E8.o + Object mod05_021D9320.o + Object mod05_021D9A48.o + Object mod05_021DA5B8.o + Object mod05_021DB44C.o + Object mod05_021DB900.o + Object mod05_021DBA00.o + Object mod05_021DBABC.o + 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 1898976b..c750a6c5 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -6231,7 +6231,11 @@ .extern MOD05_021D9820 .extern MOD05_021D99F8 .extern MOD05_021D9B54 +.extern MOD05_021D9CEC +.extern MOD05_021D9DC0 +.extern MOD05_021D9E80 .extern MOD05_021D9F48 +.extern MOD05_021D9FB4 .extern MOD05_021DA018 .extern MOD05_021DA03C .extern MOD05_021DA080 @@ -6245,18 +6249,24 @@ .extern MOD05_021DA1A8 .extern MOD05_021DA1AC .extern MOD05_021DA20C +.extern MOD05_021DA220 +.extern MOD05_021DA230 .extern MOD05_021DA430 .extern MOD05_021DA450 .extern MOD05_021DA464 .extern MOD05_021DA4BC .extern MOD05_021DA4EC +.extern MOD05_021DA514 .extern MOD05_021DA54C .extern MOD05_021DA58C +.extern MOD05_021DA5AC .extern MOD05_021DA5B8 .extern MOD05_021DA5C8 .extern MOD05_021DA5D0 .extern MOD05_021DA5D8 .extern MOD05_021DA7B4 +.extern MOD05_021DA9E8 +.extern MOD05_021DAA2C .extern MOD05_021DAAA4 .extern MOD05_021DAC70 .extern MOD05_021DAE40 @@ -6264,6 +6274,7 @@ .extern MOD05_021DAF28 .extern MOD05_021DAF78 .extern MOD05_021DAF98 +.extern MOD05_021DAFA8 .extern MOD05_021DB030 .extern MOD05_021DB040 .extern MOD05_021DB144 @@ -6275,14 +6286,32 @@ .extern MOD05_021DB4D0 .extern MOD05_021DB52C .extern MOD05_021DB53C +.extern MOD05_021DB5EC +.extern MOD05_021DB900 +.extern MOD05_021DB918 +.extern MOD05_021DB9BC +.extern MOD05_021DB9D4 +.extern MOD05_021DB9E0 +.extern MOD05_021DB9F8 .extern MOD05_021DBA00 .extern MOD05_021DBA1C +.extern MOD05_021DBA30 +.extern MOD05_021DBA34 +.extern MOD05_021DBA38 +.extern MOD05_021DBA3C .extern MOD05_021DBA40 .extern MOD05_021DBA78 .extern MOD05_021DBAA0 .extern MOD05_021DBABC .extern MOD05_021DBAD8 .extern MOD05_021DBAEC +.extern MOD05_021DBB8C +.extern MOD05_021DBC94 +.extern MOD05_021DBCBC +.extern MOD05_021DBCD0 +.extern MOD05_021DBCE4 +.extern MOD05_021DBCF8 +.extern MOD05_021DBD0C .extern MOD05_021DBD20 .extern MOD05_021DBD34 .extern MOD05_021DBD48 @@ -6302,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 @@ -6470,6 +6524,12 @@ .extern MOD05_021EF8DC .extern MOD05_021EF8E8 .extern MOD05_021EFA9C +.extern MOD05_021EFAAC +.extern MOD05_021EFB14 +.extern MOD05_021EFB50 +.extern MOD05_021EFBB4 +.extern MOD05_021EFBCC +.extern MOD05_021EFBD8 .extern MOD05_021F02C4 .extern MOD05_021F0318 .extern MOD05_021F043C @@ -6511,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_021D9320.s b/arm9/modules/05/asm/mod05_021D9320.s new file mode 100644 index 00000000..4d0220e5 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021D9320.s @@ -0,0 +1,920 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021D9320 +MOD05_021D9320: ; 0x021D9320 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + str r1, [sp, #0x10] + add r4, r3, #0 + add r0, r2, #0 + add r1, r5, #4 + add r2, r4, #0 + bl FUN_02008C9C + str r0, [r5] + ldr r1, _021D94B0 ; =0x00000162 + ldr r0, [sp, #0x10] + strh r4, [r5, r1] + ldr r0, [r0, #0x10] + cmp r0, #0 + bne _021D9346 + mov r2, #4 + b _021D9348 +_021D9346: + mov r2, #6 +_021D9348: + sub r0, r1, #2 + strh r2, [r5, r0] + bl FUN_0200965C + mov r1, #0x16 + lsl r1, r1, #4 + ldrh r2, [r5, r1] + add r3, r0, #0 + add r0, r4, #0 + add r1, r2, #0 + mul r1, r3 + bl AllocFromHeap + add r7, r0, #0 + mov r0, #0 + str r0, [sp, #0x1c] + mov r0, #0x16 + lsl r0, r0, #4 + ldrh r0, [r5, r0] + cmp r0, #0 + bls _021D93AA + ldr r6, [sp, #0x10] +_021D9374: + ldr r1, [sp, #0x1c] + add r0, r7, #0 + bl FUN_02009660 + str r0, [sp, #0x20] + ldr r1, [r6] + add r0, r4, #0 + bl FUN_020161A4 + ldr r1, [sp, #0x20] + str r0, [sp, #0x24] + add r2, r4, #0 + bl FUN_02009668 + ldr r0, [sp, #0x24] + bl FreeToHeap + ldr r0, [sp, #0x1c] + add r6, r6, #4 + add r0, r0, #1 + str r0, [sp, #0x1c] + mov r0, #0x16 + lsl r0, r0, #4 + ldrh r0, [r5, r0] + ldr r1, [sp, #0x1c] + cmp r1, r0 + blo _021D9374 +_021D93AA: + mov r6, #0 + cmp r0, #0 + bls _021D93E0 + str r5, [sp, #0x18] +_021D93B2: + add r0, r7, #0 + add r1, r6, #0 + bl FUN_02009660 + bl FUN_020096CC + add r1, r6, #0 + add r2, r4, #0 + bl FUN_02008DEC + mov r1, #0x13 + ldr r2, [sp, #0x18] + lsl r1, r1, #4 + str r0, [r2, r1] + add r0, r2, #0 + add r0, r0, #4 + str r0, [sp, #0x18] + add r0, r1, #0 + add r0, #0x30 + ldrh r0, [r5, r0] + add r6, r6, #1 + cmp r6, r0 + blo _021D93B2 +_021D93E0: + mov r1, #0 + str r1, [sp, #0x14] + cmp r0, #0 + bls _021D942C + add r6, r5, #0 +_021D93EA: + ldr r1, [sp, #0x14] + add r0, r7, #0 + bl FUN_02009660 + str r0, [sp, #0x28] + bl FUN_020096CC + add r1, r4, #0 + bl FUN_02009424 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r6, r1] + add r0, r1, #0 + mov r2, #0x52 + sub r0, #0x18 + lsl r2, r2, #2 + ldr r0, [r6, r0] + ldr r1, [sp, #0x28] + ldr r2, [r6, r2] + add r3, r4, #0 + bl FUN_020093A8 + ldr r0, [sp, #0x14] + add r6, r6, #4 + add r0, r0, #1 + str r0, [sp, #0x14] + mov r0, #0x16 + lsl r0, r0, #4 + ldrh r0, [r5, r0] + ldr r1, [sp, #0x14] + cmp r1, r0 + blo _021D93EA +_021D942C: + mov r6, #0 + cmp r0, #0 + bls _021D944A +_021D9432: + add r0, r7, #0 + add r1, r6, #0 + bl FUN_02009660 + bl FUN_020096B4 + mov r0, #0x16 + lsl r0, r0, #4 + ldrh r0, [r5, r0] + add r6, r6, #1 + cmp r6, r0 + blo _021D9432 +_021D944A: + add r0, r7, #0 + bl FreeToHeap + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009B44 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009DAC + ldr r1, [sp, #0x10] + add r0, r4, #0 + ldr r1, [r1, #0x18] + bl FUN_020161A4 + mov r3, #0x4e + lsl r3, r3, #2 + ldr r1, [r5, r3] + add r2, r3, #0 + str r1, [sp] + add r1, r3, #4 + ldr r1, [r5, r1] + sub r2, #8 + str r1, [sp, #4] + add r1, r3, #0 + add r1, #8 + ldr r1, [r5, r1] + add r6, r0, #0 + str r1, [sp, #8] + add r1, r3, #0 + add r1, #0xc + ldr r1, [r5, r1] + sub r3, r3, #4 + str r1, [sp, #0xc] + ldr r2, [r5, r2] + ldr r3, [r5, r3] + add r1, r4, #0 + bl FUN_02008BE0 + mov r1, #0x4b + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r6, #0 + bl FreeToHeap + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021D94B0: .word 0x00000162 + + thumb_func_start MOD05_021D94B4 +MOD05_021D94B4: ; 0x021D94B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + bl FUN_0201FD58 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008C80 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009C30 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009E28 + mov r0, #0x16 + lsl r0, r0, #4 + ldrh r0, [r5, r0] + mov r6, #0 + cmp r0, #0 + bls _021D950C + mov r7, #0x16 + add r4, r5, #0 + lsl r7, r7, #4 +_021D94EE: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02009448 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02008E2C + ldrh r0, [r5, r7] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, r0 + blo _021D94EE +_021D950C: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9510 +MOD05_021D9510: ; 0x021D9510 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r2, r0, #0 + add r4, r1, #0 + mov r0, #4 + ldrsh r0, [r4, r0] + mov r3, #0x4b + lsl r3, r3, #2 + lsl r0, r0, #0xc + str r0, [sp] + mov r0, #6 + ldrsh r0, [r4, r0] + add r6, sp, #0 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #8 + ldrsh r0, [r4, r0] + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r0, [r2] + str r0, [sp, #0xc] + ldr r0, [r2, r3] + ldr r1, [r4] + ldr r5, [r0] + mov r0, #0x24 + mul r0, r1 + add r0, r5, r0 + str r0, [sp, #0x10] + ldmia r6!, {r0, r1} + add r5, sp, #0x14 + stmia r5!, {r0, r1} + ldr r0, [r6] + ldr r6, _021D9598 ; =UNK05_021F64D8 + str r0, [r5] + ldmia r6!, {r0, r1} + add r5, sp, #0x20 + stmia r5!, {r0, r1} + ldr r0, [r6] + mov r1, #0 + str r0, [r5] + add r0, sp, #0 + strh r1, [r0, #0x2c] + ldr r0, [r4, #0xc] + add r3, #0x36 + str r0, [sp, #0x30] + ldr r0, [r4, #0x14] + str r0, [sp, #0x34] + ldrh r0, [r2, r3] + str r0, [sp, #0x38] + add r0, sp, #0xc + bl FUN_0201FE94 + add r5, r0, #0 + bne _021D9580 + bl ErrorHandling +_021D9580: + ldrh r1, [r4, #0xa] + add r0, r5, #0 + bl FUN_02020130 + ldr r1, [r4, #0x10] + add r0, r5, #0 + bl FUN_0202027C + add r0, r5, #0 + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_021D9598: .word UNK05_021F64D8 + + thumb_func_start MOD05_021D959C +MOD05_021D959C: ; 0x021D959C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + str r1, [sp] + add r0, r2, #0 + str r3, [sp, #4] + add r1, r7, #4 + add r2, r3, #0 + bl FUN_02008C9C + str r0, [r7] + ldr r1, _021D9678 ; =0x00000162 + ldr r0, [sp, #4] + strh r0, [r7, r1] + ldr r0, [sp] + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _021D95C8 + ldr r0, [sp] + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021D95DE +_021D95C8: + mov r1, #0x16 + mov r0, #4 + lsl r1, r1, #4 + strh r0, [r7, r1] + add r0, r1, #0 + mov r2, #0 + sub r0, #0x20 + str r2, [r7, r0] + sub r1, #0x1c + str r2, [r7, r1] + b _021D95E4 +_021D95DE: + mov r2, #6 + sub r0, r1, #2 + strh r2, [r7, r0] +_021D95E4: + mov r0, #0x16 + lsl r0, r0, #4 + ldrh r1, [r7, r0] + mov r4, #0 + cmp r1, #0 + bls _021D9614 + ldr r5, [sp] + add r6, r7, #0 +_021D95F4: + ldr r0, [r5] + ldr r2, [sp, #4] + add r1, r4, #0 + bl FUN_02008DEC + mov r1, #0x13 + lsl r1, r1, #4 + str r0, [r6, r1] + add r0, r1, #0 + add r0, #0x30 + ldrh r1, [r7, r0] + add r4, r4, #1 + add r5, r5, #4 + add r6, r6, #4 + cmp r4, r1 + blo _021D95F4 +_021D9614: + mov r0, #0 + str r0, [sp, #8] + cmp r1, #0 + bls _021D9672 + mov r6, #0x52 + add r5, r7, #0 + add r4, r0, #0 + lsl r6, r6, #2 +_021D9624: + ldr r0, [sp] + ldr r0, [r0] + cmp r0, #0 + beq _021D9658 + ldr r1, [sp, #4] + bl FUN_02009424 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x52 + lsl r0, r0, #2 + ldr r3, [r5, r0] + mov r1, #0 + ldr r0, [r3, #4] + cmp r0, #0 + bls _021D9658 + add r2, r1, #0 +_021D9648: + ldr r0, [r3] + add r1, r1, #1 + str r4, [r0, r2] + ldr r3, [r5, r6] + add r2, r2, #4 + ldr r0, [r3, #4] + cmp r1, r0 + blo _021D9648 +_021D9658: + ldr r0, [sp] + add r5, r5, #4 + add r0, r0, #4 + str r0, [sp] + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + mov r0, #0x16 + lsl r0, r0, #4 + ldrh r1, [r7, r0] + ldr r0, [sp, #8] + cmp r0, r1 + blo _021D9624 +_021D9672: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021D9678: .word 0x00000162 + + thumb_func_start MOD05_021D967C +MOD05_021D967C: ; 0x021D967C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x4d + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + ldr r1, [sp, #0x30] + add r6, r2, #0 + add r7, r3, #0 + bl FUN_0200945C + cmp r0, #0 + bne _021D96A0 + bl ErrorHandling + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D96A0: + ldr r0, [sp, #0x30] + add r2, r6, #0 + str r0, [sp] + ldr r0, [sp, #0x2c] + add r3, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x28] + str r0, [sp, #8] + ldr r0, _021D96F0 ; =0x00000162 + ldrh r1, [r5, r0] + sub r0, #0x2e + str r1, [sp, #0xc] + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02008FEC + add r4, r0, #0 + beq _021D96E8 + bl FUN_02009D68 + cmp r0, #1 + beq _021D96D0 + bl ErrorHandling +_021D96D0: + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl MOD05_021D9780 + ldr r1, [sp, #0x2c] + add r0, r4, #0 + bl FUN_02009E88 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021D96E8: + bl ErrorHandling + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021D96F0: .word 0x00000162 + + thumb_func_start MOD05_021D96F4 +MOD05_021D96F4: ; 0x021D96F4 + push {r4, lr} + sub sp, #8 + mov r4, #2 + str r4, [sp] + ldr r4, [sp, #0x10] + str r4, [sp, #4] + bl MOD05_021D97B4 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD05_021D9708 +MOD05_021D9708: ; 0x021D9708 + push {r4, lr} + sub sp, #8 + mov r4, #3 + str r4, [sp] + ldr r4, [sp, #0x10] + str r4, [sp, #4] + bl MOD05_021D97B4 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD05_021D971C +MOD05_021D971C: ; 0x021D971C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0x13 + lsl r0, r0, #4 + add r4, r1, #0 + ldr r0, [r5, r0] + ldr r1, [sp, #0x24] + add r6, r2, #0 + add r7, r3, #0 + bl FUN_0200945C + cmp r0, #0 + bne _021D9740 + bl ErrorHandling + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_021D9740: + ldr r0, [sp, #0x24] + add r2, r6, #0 + str r0, [sp] + ldr r0, [sp, #0x20] + add r3, r7, #0 + str r0, [sp, #4] + ldr r0, _021D977C ; =0x00000162 + ldrh r1, [r5, r0] + sub r0, #0x32 + str r1, [sp, #8] + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02008F34 + add r4, r0, #0 + beq _021D9774 + bl FUN_02009B04 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl MOD05_021D9780 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_021D9774: + bl ErrorHandling + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021D977C: .word 0x00000162 + + thumb_func_start MOD05_021D9780 +MOD05_021D9780: ; 0x021D9780 + push {r3, r4, r5, r6} + ldr r6, [r0, #4] + mov r3, #0 + cmp r6, #0 + ble _021D97AC + ldr r5, [r0] + add r4, r5, #0 +_021D978E: + ldr r2, [r4] + cmp r2, #0 + bne _021D97A4 + lsl r2, r3, #2 + str r1, [r5, r2] + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_021D97A4: + add r3, r3, #1 + add r4, r4, #4 + cmp r3, r6 + blt _021D978E +_021D97AC: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021D97B4 +MOD05_021D97B4: ; 0x021D97B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [sp, #0x28] + add r7, r1, #0 + lsl r4, r0, #2 + mov r0, #0x13 + lsl r0, r0, #4 + add r6, r5, r0 + ldr r0, [r6, r4] + ldr r1, [sp, #0x2c] + str r2, [sp, #0xc] + str r3, [sp, #0x10] + bl FUN_0200945C + cmp r0, #0 + bne _021D97DE + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021D97DE: + ldr r0, [sp, #0x2c] + ldr r2, [sp, #0xc] + str r0, [sp] + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x10] + str r0, [sp, #4] + ldr r0, _021D981C ; =0x00000162 + add r1, r7, #0 + ldrh r0, [r5, r0] + str r0, [sp, #8] + ldr r0, [r6, r4] + bl FUN_020090AC + add r1, r0, #0 + beq _021D9814 + mov r0, #0x52 + add r2, r5, r4 + lsl r0, r0, #2 + ldr r0, [r2, r0] + bl MOD05_021D9780 + cmp r0, #1 + beq _021D9818 + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021D9814: + bl ErrorHandling +_021D9818: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021D981C: .word 0x00000162 + + thumb_func_start MOD05_021D9820 +MOD05_021D9820: ; 0x021D9820 + push {r3, r4, r5, r6, lr} + sub sp, #0x74 + add r5, r0, #0 + ldr r0, _021D99F4 ; =0x00000162 + add r4, r1, #0 + ldrh r0, [r5, r0] + mov r1, #0x10 + bl AllocFromHeap + add r6, r0, #0 + ldr r0, _021D99F4 ; =0x00000162 + mov r1, #8 + ldrh r0, [r5, r0] + bl AllocFromHeap + str r0, [r6, #8] + ldr r0, _021D99F4 ; =0x00000162 + mov r1, #0x24 + ldrh r0, [r5, r0] + bl AllocFromHeap + ldr r1, [r6, #8] + add r2, r4, #0 + str r0, [r1] + ldr r0, [r6, #8] + mov r1, #0 + ldr r0, [r0] + add r3, sp, #0x2c + str r0, [r6, #4] +_021D985A: + ldr r0, [r2, #0x14] + add r1, r1, #1 + add r2, r2, #4 + stmia r3!, {r0} + cmp r1, #6 + blt _021D985A + mov r1, #5 + lsl r1, r1, #6 + ldr r0, [r5, r1] + cmp r0, #0 + beq _021D9878 + add r1, r1, #4 + ldr r1, [r5, r1] + cmp r1, #0 + bne _021D9882 +_021D9878: + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x3c] + str r0, [sp, #0x40] + b _021D98B8 +_021D9882: + mov r2, #0 + ldr r1, [sp, #0x3c] + mvn r2, r2 + cmp r1, r2 + beq _021D989A + bl FUN_0200945C + cmp r0, #0 + bne _021D989A + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x3c] +_021D989A: + mov r0, #0 + ldr r1, [sp, #0x40] + mvn r0, r0 + cmp r1, r0 + beq _021D98B8 + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200945C + cmp r0, #0 + bne _021D98B8 + mov r0, #0 + mvn r0, r0 + str r0, [sp, #0x40] +_021D98B8: + ldr r0, [sp, #0x38] + str r0, [sp] + ldr r0, [sp, #0x3c] + str r0, [sp, #4] + ldr r0, [sp, #0x40] + str r0, [sp, #8] + ldr r0, [r4, #0x30] + str r0, [sp, #0xc] + ldr r0, [r4, #0x2c] + str r0, [sp, #0x10] + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r5, r0] + str r1, [sp, #0x14] + add r1, r0, #4 + ldr r1, [r5, r1] + str r1, [sp, #0x18] + add r1, r0, #0 + add r1, #8 + ldr r1, [r5, r1] + str r1, [sp, #0x1c] + add r1, r0, #0 + add r1, #0xc + ldr r1, [r5, r1] + str r1, [sp, #0x20] + add r1, r0, #0 + add r1, #0x10 + ldr r1, [r5, r1] + add r0, #0x14 + str r1, [sp, #0x24] + ldr r0, [r5, r0] + str r0, [sp, #0x28] + ldr r0, [r6, #4] + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + ldr r3, [sp, #0x34] + bl FUN_02008AA4 + ldr r0, [r5] + str r0, [sp, #0x44] + ldr r0, [r6, #4] + str r0, [sp, #0x48] + mov r0, #0 + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _021D9926 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9934 +_021D9926: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9934: + bl _ffix + str r0, [sp, #0x4c] + mov r0, #2 + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _021D9954 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9962 +_021D9954: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9962: + bl _ffix + str r0, [sp, #0x50] + mov r0, #4 + ldrsh r0, [r4, r0] + cmp r0, #0 + ble _021D9982 + lsl r0, r0, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _021D9990 +_021D9982: + lsl r0, r0, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_021D9990: + bl _ffix + str r0, [sp, #0x54] + ldr r0, [r4, #0x10] + cmp r0, #2 + bne _021D99A6 + mov r0, #3 + ldr r1, [sp, #0x50] + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0x50] +_021D99A6: + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0x58] + str r0, [sp, #0x5c] + str r0, [sp, #0x60] + mov r1, #0 + add r0, sp, #0x2c + strh r1, [r0, #0x38] + ldr r0, [r4, #8] + str r0, [sp, #0x68] + ldr r0, [r4, #0x10] + str r0, [sp, #0x6c] + ldr r0, _021D99F4 ; =0x00000162 + ldrh r0, [r5, r0] + str r0, [sp, #0x70] + add r0, sp, #0x44 + bl FUN_0201FE94 + str r0, [r6] + cmp r0, #0 + beq _021D99EA + bl FUN_020202A0 + add r5, r0, #0 + ldrh r1, [r4, #6] + ldr r0, [r6] + bl FUN_02020130 + ldr r1, [r4, #0xc] + ldr r0, [r6] + add r1, r5, r1 + bl FUN_02020248 + b _021D99EE +_021D99EA: + bl ErrorHandling +_021D99EE: + add r0, r6, #0 + add sp, #0x74 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021D99F4: .word 0x00000162 + + thumb_func_start MOD05_021D99F8 +MOD05_021D99F8: ; 0x021D99F8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + bl FUN_0201FD58 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009C30 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009E28 + mov r0, #0x16 + lsl r0, r0, #4 + ldrh r0, [r6, r0] + mov r4, #0 + cmp r0, #0 + bls _021D9A46 + mov r7, #0x16 + add r5, r6, #0 + lsl r7, r7, #4 +_021D9A28: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009448 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02008E2C + ldrh r0, [r6, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blo _021D9A28 +_021D9A46: + pop {r3, r4, r5, r6, r7, pc} + + .section .rodata + + .global UNK05_021F64D8 +UNK05_021F64D8: ; 0x021F64D8 + .word 0x00001000, 0x00001000, 0x00001000 diff --git a/arm9/modules/05/asm/mod05_021D9A48.s b/arm9/modules/05/asm/mod05_021D9A48.s new file mode 100644 index 00000000..2e5469f9 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021D9A48.s @@ -0,0 +1,1632 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021D9A48 +MOD05_021D9A48: ; 0x021D9A48 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r6, r0, #0 + add r5, r1, #0 + mov r0, #0 + ldr r1, [r7, #0x18] + mvn r0, r0 + add r4, r3, #0 + cmp r1, r0 + bne _021D9A60 + bl ErrorHandling +_021D9A60: + mov r0, #0 + add r1, r6, #0 +_021D9A64: + ldr r2, [r1] + cmp r2, #0 + beq _021D9A7A + ldr r2, [r1, #0xc] + cmp r4, r2 + bne _021D9A7A + ldr r2, [r1, #4] + cmp r2, r5 + bne _021D9A7A + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9A7A: + add r0, r0, #1 + add r1, #0x10 + cmp r0, #2 + blt _021D9A64 + mov r2, #0 + add r1, r6, #0 +_021D9A86: + ldr r0, [r1] + cmp r0, #0 + bne _021D9A9C + lsl r1, r2, #4 + mov r0, #1 + str r0, [r6, r1] + add r0, r6, r1 + str r4, [r0, #0xc] + str r7, [r0, #8] + str r5, [r0, #4] + b _021D9AA4 +_021D9A9C: + add r2, r2, #1 + add r1, #0x10 + cmp r2, #2 + blt _021D9A86 +_021D9AA4: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021D9AA8 +MOD05_021D9AA8: ; 0x021D9AA8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0 + add r4, r1, #0 + mvn r0, r0 + add r7, r2, #0 + add r5, r3, #0 + cmp r4, r0 + bne _021D9ABE + bl ErrorHandling +_021D9ABE: + add r0, r6, #0 + add r1, r4, #0 + mov r2, #4 + bl NARC_AllocAndReadWholeMember + add r4, r0, #0 + bne _021D9AD0 + bl ErrorHandling +_021D9AD0: + add r0, r4, #0 + mov r1, #0 + bl FUN_020BC4C8 + add r6, r0, #0 + bne _021D9AE0 + bl ErrorHandling +_021D9AE0: + ldr r0, [sp, #0x1c] + add r1, r6, #0 + add r2, r7, #0 + bl FUN_020BB8D0 + str r0, [r5] + cmp r5, #0 + bne _021D9AF4 + bl ErrorHandling +_021D9AF4: + ldr r0, [r5] + ldr r3, [sp, #0x18] + add r1, r6, #0 + add r2, r7, #0 + bl FUN_020B8110 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021D9B04 +MOD05_021D9B04: ; 0x021D9B04 + push {r3, lr} + cmp r1, #0 + bne _021D9B0E + mov r0, #0 + pop {r3, pc} +_021D9B0E: + cmp r0, #0 + bne _021D9B16 + mov r0, #0 + pop {r3, pc} +_021D9B16: + bl FUN_020B7E28 + mov r0, #1 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9B20 +MOD05_021D9B20: ; 0x021D9B20 + push {r4, r5, r6, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r4, #0 +_021D9B28: + ldr r0, [r5] + cmp r0, #0 + beq _021D9B4A + ldr r0, [r5, #8] + bl MOD05_021DA20C + cmp r0, #0 + beq _021D9B4A + ldr r1, [r5, #8] + ldr r0, [r5, #4] + ldr r1, [r1] + bl MOD05_021D9B04 + str r6, [r5] + str r6, [r5, #0xc] + str r6, [r5, #8] + str r6, [r5, #4] +_021D9B4A: + add r4, r4, #1 + add r5, #0x10 + cmp r4, #2 + blt _021D9B28 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021D9B54 +MOD05_021D9B54: ; 0x021D9B54 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0xae + mov r0, #4 + lsl r1, r1, #2 + bl AllocFromHeap + add r7, r0, #0 + mov r1, #0 + add r2, r7, #0 + add r6, r1, #0 + sub r0, r1, #1 +_021D9B6A: + str r6, [r2, #0x14] + str r6, [r2, #0x20] + str r6, [r2, #0x10] + str r6, [r2, #0x18] + str r6, [r2, #0x1c] + str r6, [r2, #0x24] + str r0, [r2, #0x28] + str r6, [r2, #0x2c] + str r6, [r2, #0x30] + str r6, [r2, #0x34] + add r1, r1, #1 + add r2, #0x28 + cmp r1, #0x10 + blt _021D9B6A + mov r0, #0x29 + lsl r0, r0, #4 + add r2, r0, #0 + add r3, r0, #0 + add r5, r7, #0 + mov r4, #0 + add r1, r0, #4 + add r2, #8 + add r3, #0xc +_021D9B98: + str r4, [r5, r0] + str r4, [r5, r1] + str r4, [r5, r2] + str r4, [r5, r3] + add r6, r6, #1 + add r5, #0x10 + cmp r6, #2 + blt _021D9B98 + mov r1, #4 + add r0, r7, #0 + add r2, r1, #0 + bl FUN_02016B20 + mov r0, #0x6e + mov r1, #4 + bl NARC_ctor + mov r1, #0x2b + lsl r1, r1, #4 + str r0, [r7, r1] + mov r0, #0x6f + mov r1, #4 + bl NARC_ctor + mov r1, #0xad + lsl r1, r1, #2 + str r0, [r7, r1] + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9BD4 +MOD05_021D9BD4: ; 0x021D9BD4 + cmp r0, #0 + bne _021D9BDC + mov r0, #0 + bx lr +_021D9BDC: + ldr r0, [r0] + bx lr + + thumb_func_start MOD05_021D9BE0 +MOD05_021D9BE0: ; 0x021D9BE0 + mov r1, #1 + and r0, r1 + cmp r0, #1 + beq _021D9BEA + mov r1, #0 +_021D9BEA: + add r0, r1, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021D9BF0 +MOD05_021D9BF0: ; 0x021D9BF0 + asr r1, r0, #1 + mov r0, #1 + and r1, r0 + cmp r1, #1 + beq _021D9BFC + mov r0, #0 +_021D9BFC: + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021D9C00 +MOD05_021D9C00: ; 0x021D9C00 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #1 + beq _021D9C0E + bl ErrorHandling +_021D9C0E: + ldr r0, [r4, #0x1c] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9C14 +MOD05_021D9C14: ; 0x021D9C14 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r0, #0 + mov r0, #0xad + ldr r7, [sp, #0x4c] + lsl r0, r0, #2 + add r4, r1, #0 + str r2, [sp, #8] + ldr r0, [r7, r0] + add r1, r6, #0 + add r2, sp, #0x10 + add r5, r3, #0 + bl NARC_ReadWholeMember + cmp r4, #4 + blt _021D9C38 + bl ErrorHandling +_021D9C38: + lsl r1, r4, #2 + add r0, sp, #0x14 + ldr r0, [r0, r1] + mov r1, #0 + mvn r1, r1 + str r0, [sp, #0xc] + cmp r0, r1 + bne _021D9C4E + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D9C4E: + add r0, sp, #0x10 + ldrb r0, [r0, #1] + bl MOD05_021D9BE0 + ldr r1, [sp, #0x40] + cmp r1, r0 + beq _021D9C62 + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D9C62: + mov r6, #0 + add r4, r7, #0 +_021D9C66: + cmp r5, #0 + beq _021D9C74 + ldr r0, [r4, #0x34] + cmp r5, r0 + bne _021D9C74 + bl ErrorHandling +_021D9C74: + add r6, r6, #1 + add r4, #0x28 + cmp r6, #0x10 + blt _021D9C66 + mov r2, #0 + add r1, r7, #0 +_021D9C80: + ldr r0, [r1, #0x14] + cmp r0, #0 + bne _021D9CD8 + add r4, r2, #0 + mov r0, #0x28 + mul r4, r0 + mov r1, #1 + add r0, r7, r4 + str r1, [r0, #0x14] + ldr r1, [sp, #0x3c] + add r6, r7, #0 + str r1, [r0, #0x20] + add r6, #0x10 + mov r1, #0 + str r1, [r6, r4] + str r1, [r0, #0x18] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x44] + str r1, [r0, #0x1c] + ldr r1, [sp, #0x38] + add r3, r6, r4 + str r1, [r0, #0x30] + str r5, [r0, #0x34] + ldr r0, [sp, #0x48] + ldr r1, [sp, #0xc] + str r0, [sp] + mov r0, #0x2b + str r7, [sp, #4] + lsl r0, r0, #4 + ldr r0, [r7, r0] + bl MOD05_021D9AA8 + add r1, r7, r4 + str r0, [r1, #0x24] + ldr r0, [sp, #8] + str r0, [r1, #0x28] + mov r0, #1 + str r0, [r1, #0x2c] + add r0, r6, r4 + bl MOD05_021DA118 + add sp, #0x24 + add r0, r6, r4 + pop {r4, r5, r6, r7, pc} +_021D9CD8: + add r2, r2, #1 + add r1, #0x28 + cmp r2, #0x10 + blt _021D9C80 + bl ErrorHandling + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9CEC +MOD05_021D9CEC: ; 0x021D9CEC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r4, r0, #0 + mov r0, #0xad + add r6, r3, #0 + lsl r0, r0, #2 + str r1, [sp, #8] + str r2, [sp, #0xc] + ldr r0, [r6, r0] + add r1, r4, #0 + add r2, sp, #0x20 + bl NARC_ReadWholeMember + add r0, sp, #0x20 + ldrb r0, [r0] + cmp r0, #0 + beq _021D9DBC + mov r0, #0 + str r0, [sp, #0x14] + add r0, sp, #0x20 + str r0, [sp, #0x10] +_021D9D16: + ldr r0, [sp, #0x10] + mov r1, #0 + ldr r0, [r0, #4] + mvn r1, r1 + str r0, [sp, #0x18] + cmp r0, r1 + beq _021D9DBC + add r0, sp, #0x20 + ldrb r0, [r0, #1] + bl MOD05_021D9BE0 + cmp r0, #0 + bne _021D9DBC + mov r4, #0 + add r1, r6, #0 +_021D9D34: + ldr r0, [r1, #0x14] + cmp r0, #0 + bne _021D9D9C + mov r0, #0x28 + add r7, r4, #0 + mul r7, r0 + add r5, r6, r7 + mov r0, #1 + str r0, [r5, #0x14] + mov r1, #0 + str r1, [r5, #0x20] + str r1, [r5, #0x10] + ldr r0, [sp, #0x18] + str r1, [r5, #0x18] + str r0, [r5, #0x1c] + add r0, r6, #0 + str r0, [sp, #0x1c] + add r0, #0x10 + str r0, [sp, #0x1c] + str r1, [r5, #0x30] + str r1, [r5, #0x34] + ldr r0, [sp, #0xc] + ldr r3, [sp, #0x1c] + str r0, [sp] + mov r0, #0x2b + str r6, [sp, #4] + lsl r0, r0, #4 + ldr r0, [r6, r0] + ldr r1, [sp, #0x18] + ldr r2, [sp, #8] + add r3, r3, r7 + bl MOD05_021D9AA8 + str r0, [r5, #0x24] + mov r0, #0 + mvn r0, r0 + str r0, [r5, #0x28] + mov r0, #1 + str r0, [r5, #0x2c] + ldr r0, [sp, #0x1c] + add r0, r0, r7 + bl MOD05_021DA118 + add r0, sp, #0x20 + ldrb r0, [r0, #2] + cmp r0, #0 + beq _021D9DA4 + add r1, r5, #0 + mov r0, #1 + str r0, [r1, #0x20] + str r0, [r1, #0x28] + b _021D9DA4 +_021D9D9C: + add r4, r4, #1 + add r1, #0x28 + cmp r4, #0x10 + blt _021D9D34 +_021D9DA4: + cmp r4, #0x10 + bne _021D9DAC + bl ErrorHandling +_021D9DAC: + ldr r0, [sp, #0x10] + add r0, r0, #4 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #4 + blt _021D9D16 +_021D9DBC: + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021D9DC0 +MOD05_021D9DC0: ; 0x021D9DC0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r6, [sp, #0x30] + add r5, r0, #0 + add r4, r1, #0 + add r7, r2, #0 + str r3, [sp] + cmp r6, #0 + bne _021D9DDC + bl ErrorHandling + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9DDC: + add r0, r6, #0 + bl MOD05_021DA220 + cmp r5, r0 + blt _021D9DEC + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9DEC: + mov r0, #0xad + lsl r0, r0, #2 + ldr r0, [r6, r0] + add r1, r5, #0 + add r2, sp, #4 + bl NARC_ReadWholeMember + cmp r4, #4 + blt _021D9E02 + bl ErrorHandling +_021D9E02: + lsl r1, r4, #2 + add r0, sp, #8 + ldr r5, [r0, r1] + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _021D9E16 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9E16: + add r0, sp, #4 + ldrb r0, [r0, #1] + bl MOD05_021D9BF0 + cmp r7, r0 + beq _021D9E28 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D9E28: + mov r4, #0 + add r1, r6, #0 +_021D9E2C: + ldr r0, [r1, #0x1c] + cmp r5, r0 + bne _021D9E70 + add r0, sp, #4 + ldrb r0, [r0, #2] + cmp r0, #0 + beq _021D9E56 + add r2, r6, #0 + mov r3, #0x28 + mov r0, #0x29 + lsl r0, r0, #4 + add r2, #0x10 + mul r3, r4 + add r2, r2, r3 + lsl r3, r5, #0x18 + ldr r1, [sp] + add r0, r6, r0 + lsr r3, r3, #0x18 + bl MOD05_021D9A48 + b _021D9E58 +_021D9E56: + mov r0, #1 +_021D9E58: + cmp r0, #0 + beq _021D9E6A + mov r1, #0x28 + mul r1, r4 + add r1, r6, r1 + ldr r0, [sp] + ldr r1, [r1, #0x10] + bl FUN_020B7EFC +_021D9E6A: + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D9E70: + add r4, r4, #1 + add r1, #0x28 + cmp r4, #0x10 + blt _021D9E2C + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9E80 +MOD05_021D9E80: ; 0x021D9E80 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r0, _021D9F44 ; =0x00000000 + str r1, [sp, #0xc] + add r4, r2, #0 + str r0, [sp] + bne _021D9E94 + bl ErrorHandling +_021D9E94: + add r0, r4, #0 + bl MOD05_021DA220 + cmp r5, r0 + blt _021D9EA4 + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D9EA4: + mov r0, #0xad + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r5, #0 + add r2, sp, #0x10 + bl NARC_ReadWholeMember + add r0, sp, #0x10 + ldrb r0, [r0, #1] + bl MOD05_021D9BF0 + cmp r0, #0 + beq _021D9EC4 + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021D9EC4: + mov r0, #0 + str r0, [sp, #4] + add r0, r4, #0 + str r0, [sp, #8] + add r0, #0x10 + add r7, sp, #0x10 + str r0, [sp, #8] +_021D9ED2: + mov r0, #0 + ldr r3, [r7, #4] + mvn r0, r0 + cmp r3, r0 + bne _021D9EE2 + ldr r0, [sp] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_021D9EE2: + mov r5, #0 + add r1, r4, #0 +_021D9EE6: + ldr r0, [r1, #0x1c] + cmp r3, r0 + bne _021D9F2A + add r0, sp, #0x10 + ldrb r0, [r0, #2] + cmp r0, #0 + beq _021D9F10 + mov r2, #0x28 + add r6, r5, #0 + mov r0, #0x29 + mul r6, r2 + ldr r2, [sp, #8] + lsl r0, r0, #4 + lsl r3, r3, #0x18 + ldr r1, [sp, #0xc] + add r0, r4, r0 + add r2, r2, r6 + lsr r3, r3, #0x18 + bl MOD05_021D9A48 + b _021D9F12 +_021D9F10: + mov r0, #1 +_021D9F12: + cmp r0, #0 + beq _021D9F32 + mov r1, #0x28 + mul r1, r5 + add r1, r4, r1 + ldr r0, [sp, #0xc] + ldr r1, [r1, #0x10] + bl FUN_020B7EFC + mov r0, #1 + str r0, [sp] + b _021D9F32 +_021D9F2A: + add r5, r5, #1 + add r1, #0x28 + cmp r5, #0x10 + blt _021D9EE6 +_021D9F32: + ldr r0, [sp, #4] + add r7, r7, #4 + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #4 + blt _021D9ED2 + ldr r0, [sp] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021D9F44: .word 0x00000000 + + thumb_func_start MOD05_021D9F48 +MOD05_021D9F48: ; 0x021D9F48 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + beq _021D9F7C + mov r4, #0 + add r5, r6, #0 + add r7, r4, #0 +_021D9F54: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021D9F74 + cmp r0, #1 + bne _021D9F6E + ldr r1, [r5, #0x10] + add r0, r6, #0 + bl thunk_FUN_020ae84c + str r7, [r5, #0x10] + ldr r0, [r5, #0x24] + bl FreeToHeap +_021D9F6E: + mov r0, #0 + str r0, [r5, #0x14] + str r0, [r5, #0x34] +_021D9F74: + add r4, r4, #1 + add r5, #0x28 + cmp r4, #0x10 + blt _021D9F54 +_021D9F7C: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9F80 +MOD05_021D9F80: ; 0x021D9F80 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + beq _021D9FB2 + cmp r5, #0 + bne _021D9F90 + bl ErrorHandling +_021D9F90: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021D9FB2 + cmp r0, #1 + bne _021D9FAC + ldr r1, [r5] + add r0, r4, #0 + bl thunk_FUN_020ae84c + mov r0, #0 + str r0, [r5] + ldr r0, [r5, #0x14] + bl FreeToHeap +_021D9FAC: + mov r0, #0 + str r0, [r5, #4] + str r0, [r5, #0x24] +_021D9FB2: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021D9FB4 +MOD05_021D9FB4: ; 0x021D9FB4 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0xad + lsl r0, r0, #2 + add r6, r1, #0 + add r1, r2, #0 + ldr r0, [r4, r0] + add r2, sp, #0 + add r5, r3, #0 + bl NARC_ReadWholeMember + cmp r5, #4 + blt _021D9FD4 + bl ErrorHandling +_021D9FD4: + lsl r1, r5, #2 + add r0, sp, #4 + ldr r5, [r0, r1] + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _021D9FE6 + bl ErrorHandling +_021D9FE6: + mov r0, #0 + mov r2, #0x28 +_021D9FEA: + add r1, r0, #0 + mul r1, r2 + add r1, r4, r1 + ldr r3, [r1, #0x14] + cmp r3, #1 + bne _021DA008 + ldr r3, [r1, #0x1c] + cmp r5, r3 + bne _021DA008 + ldr r1, [r1, #0x10] + add r0, r6, #0 + bl MOD05_021D9B04 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021DA008: + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x10 + blo _021D9FEA + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA018 +MOD05_021DA018: ; 0x021DA018 + push {r4, lr} + add r4, r0, #0 + beq _021DA038 + mov r0, #0x2b + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl NARC_dtor + mov r0, #0xad + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl NARC_dtor + add r0, r4, #0 + bl FreeToHeap +_021DA038: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA03C +MOD05_021DA03C: ; 0x021DA03C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _021DA04A + bl ErrorHandling +_021DA04A: + mov r6, #0 + add r1, r6, #0 + add r2, r4, #0 +_021DA050: + ldr r0, [r2, #0x34] + cmp r5, r0 + bne _021DA06A + mov r0, #0x28 + add r4, #0x10 + mul r0, r1 + add r6, r4, r0 + ldr r0, [r6, #4] + cmp r0, #0 + bne _021DA072 + bl ErrorHandling + b _021DA072 +_021DA06A: + add r1, r1, #1 + add r2, #0x28 + cmp r1, #0x10 + blt _021DA050 +_021DA072: + cmp r6, #0 + bne _021DA07A + bl ErrorHandling +_021DA07A: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA080 +MOD05_021DA080: ; 0x021DA080 + push {r4, r5, lr} + sub sp, #0x14 + add r3, r0, #0 + mov r0, #0xad + add r5, r2, #0 + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + add r1, r3, #0 + add r2, sp, #0 + bl NARC_ReadWholeMember + cmp r4, #4 + blt _021DA0A0 + bl ErrorHandling +_021DA0A0: + lsl r1, r4, #2 + add r0, sp, #4 + mov r4, #0 + ldr r1, [r0, r1] + add r2, r4, #0 + add r3, r5, #0 +_021DA0AC: + ldr r0, [r3, #0x1c] + cmp r1, r0 + bne _021DA0C6 + mov r0, #0x28 + add r5, #0x10 + mul r0, r2 + add r4, r5, r0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _021DA0CE + bl ErrorHandling + b _021DA0CE +_021DA0C6: + add r2, r2, #1 + add r3, #0x28 + cmp r2, #0x10 + blt _021DA0AC +_021DA0CE: + cmp r4, #0 + bne _021DA0D6 + bl ErrorHandling +_021DA0D6: + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, pc} + + thumb_func_start MOD05_021DA0DC +MOD05_021DA0DC: ; 0x021DA0DC + str r1, [r0, #0x10] + bx lr + + thumb_func_start MOD05_021DA0E0 +MOD05_021DA0E0: ; 0x021DA0E0 + mov r1, #1 + str r1, [r0, #0x1c] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021DA0E8 +MOD05_021DA0E8: ; 0x021DA0E8 + ldr r1, [r0, #0x20] + ldr r0, [r0] + cmp r1, #0 + bne _021DA10A + ldr r2, [r0] + ldr r0, [r0, #8] + ldrh r0, [r0, #4] + lsl r1, r0, #0xc + mov r0, #1 + lsl r0, r0, #0xc + sub r0, r1, r0 + cmp r2, r0 + blt _021DA106 + mov r0, #1 + bx lr +_021DA106: + mov r0, #0 + bx lr +_021DA10A: + ldr r0, [r0] + cmp r0, #0 + bne _021DA114 + mov r0, #1 + bx lr +_021DA114: + mov r0, #0 + bx lr + + thumb_func_start MOD05_021DA118 +MOD05_021DA118: ; 0x021DA118 + ldr r1, [r0, #0x20] + cmp r1, #0 + bne _021DA126 + ldr r0, [r0] + mov r1, #0 + str r1, [r0] + bx lr +_021DA126: + ldr r2, [r0] + ldr r0, [r2, #8] + ldrh r0, [r0, #4] + lsl r1, r0, #0xc + mov r0, #1 + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [r2] + bx lr + + thumb_func_start MOD05_021DA138 +MOD05_021DA138: ; 0x021DA138 + ldr r1, [r0, #0x20] + cmp r1, #0 + bne _021DA150 + ldr r2, [r0] + ldr r0, [r2, #8] + ldrh r0, [r0, #4] + lsl r1, r0, #0xc + mov r0, #1 + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [r2] + bx lr +_021DA150: + ldr r0, [r0] + mov r1, #0 + str r1, [r0] + bx lr + + thumb_func_start MOD05_021DA158 +MOD05_021DA158: ; 0x021DA158 + ldr r1, [r0, #0x20] + cmp r1, #0 + bne _021DA17E + ldr r3, [r0] + mov r1, #1 + ldr r2, [r3] + lsl r1, r1, #0xc + add r1, r2, r1 + str r1, [r3] + ldr r2, [r0] + ldr r0, [r2, #8] + ldr r1, [r2] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + cmp r1, r0 + bne _021DA19E + mov r0, #0 + str r0, [r2] + bx lr +_021DA17E: + ldr r0, [r0] + ldr r2, [r0] + cmp r2, #0 + bgt _021DA196 + ldr r1, [r0, #8] + ldrh r1, [r1, #4] + lsl r2, r1, #0xc + mov r1, #1 + lsl r1, r1, #0xc + sub r1, r2, r1 + str r1, [r0] + bx lr +_021DA196: + mov r1, #1 + lsl r1, r1, #0xc + sub r1, r2, r1 + str r1, [r0] +_021DA19E: + bx lr + + thumb_func_start MOD05_021DA1A0 +MOD05_021DA1A0: ; 0x021DA1A0 + str r1, [r0, #0x20] + bx lr + + thumb_func_start MOD05_021DA1A4 +MOD05_021DA1A4: ; 0x021DA1A4 + str r1, [r0, #0x18] + bx lr + + thumb_func_start MOD05_021DA1A8 +MOD05_021DA1A8: ; 0x021DA1A8 + str r1, [r0, #0x24] + bx lr + + thumb_func_start MOD05_021DA1AC +MOD05_021DA1AC: ; 0x021DA1AC + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + cmp r0, #0 + beq _021DA20A + mov r4, #0 + add r5, r0, #0 + add r5, #0x10 + add r6, r4, #0 + sub r7, r4, #1 +_021DA1BE: + ldr r0, [r5, #4] + cmp r0, #1 + bne _021DA1F6 + ldr r0, [r5, #0x10] + cmp r0, #1 + beq _021DA1F6 + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021DA1F6 + add r0, r5, #0 + bl MOD05_021DA158 + ldr r0, [r5, #0x18] + cmp r0, r7 + beq _021DA1F6 + add r0, r5, #0 + bl MOD05_021DA0E8 + cmp r0, #0 + beq _021DA1F6 + ldr r0, [r5, #8] + add r1, r0, #1 + ldr r0, [r5, #0x18] + cmp r1, r0 + blt _021DA1F4 + str r6, [r5, #0x1c] + b _021DA1F6 +_021DA1F4: + str r1, [r5, #8] +_021DA1F6: + add r4, r4, #1 + add r5, #0x28 + cmp r4, #0x10 + blt _021DA1BE + mov r1, #0x29 + ldr r0, [sp] + lsl r1, r1, #4 + add r0, r0, r1 + bl MOD05_021D9B20 +_021DA20A: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021DA20C +MOD05_021DA20C: ; 0x021DA20C + push {r3, lr} + bl MOD05_021D9C00 + cmp r0, #0 + bne _021DA21A + mov r0, #1 + pop {r3, pc} +_021DA21A: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA220 +MOD05_021DA220: ; 0x021DA220 + mov r1, #0xad + lsl r1, r1, #2 + ldr r3, _021DA22C ; =NARC_GetFileCount + ldr r0, [r0, r1] + bx r3 + nop +_021DA22C: .word NARC_GetFileCount + + thumb_func_start MOD05_021DA230 +MOD05_021DA230: ; 0x021DA230 + push {lr} + sub sp, #0x14 + mov r2, #0xad + lsl r2, r2, #2 + ldr r0, [r0, r2] + add r2, sp, #0 + bl NARC_ReadWholeMember + add r0, sp, #0 + ldrb r0, [r0] + cmp r0, #0 + bne _021DA24E + add sp, #0x14 + mov r0, #0 + pop {pc} +_021DA24E: + mov r0, #0 + add r3, sp, #0 + sub r1, r0, #1 +_021DA254: + lsl r2, r0, #2 + add r2, r3, r2 + ldr r2, [r2, #4] + cmp r2, r1 + beq _021DA268 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #4 + blo _021DA254 +_021DA268: + add sp, #0x14 + pop {pc} + + thumb_func_start MOD05_021DA26C +MOD05_021DA26C: ; 0x021DA26C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bne _021DA278 + bl ErrorHandling +_021DA278: + mov r1, #0x10 + mov r0, #0 + mov r2, #0x38 +_021DA27E: + cmp r1, #0x10 + bne _021DA292 + add r3, r0, #0 + mul r3, r2 + add r3, r5, r3 + add r3, #0x34 + ldrb r3, [r3] + cmp r3, #0 + bne _021DA292 + add r1, r0, #0 +_021DA292: + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x10 + blo _021DA27E + cmp r1, #0x10 + beq _021DA2AE + mov r0, #0x38 + add r2, r1, #0 + mul r2, r0 + add r0, r5, r2 + add r0, #0x34 + strb r4, [r0] + b _021DA2B6 +_021DA2AE: + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} +_021DA2B6: + add r0, r5, r2 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA2BC +MOD05_021DA2BC: ; 0x021DA2BC + add r1, r0, #0 + mov r3, #0 + add r1, #0x34 + strb r3, [r1] + str r3, [r0, #0x30] + str r3, [r0, #0x2c] + add r2, r3, #0 +_021DA2CA: + lsl r1, r3, #2 + add r1, r0, r1 + str r2, [r1, #0x14] + add r1, r3, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #6 + blo _021DA2CA + bx lr + + thumb_func_start MOD05_021DA2DC +MOD05_021DA2DC: ; 0x021DA2DC + push {r4, r5} + mov r4, #0 + add r3, r4, #0 + add r5, r0, #0 +_021DA2E4: + add r2, r5, #0 + add r2, #0x34 + ldrb r2, [r2] + cmp r1, r2 + bne _021DA2F6 + mov r1, #0x38 + mul r1, r3 + add r4, r0, r1 + b _021DA2FE +_021DA2F6: + add r3, r3, #1 + add r5, #0x38 + cmp r3, #0x10 + blt _021DA2E4 +_021DA2FE: + add r0, r4, #0 + pop {r4, r5} + bx lr + + thumb_func_start MOD05_021DA304 +MOD05_021DA304: ; 0x021DA304 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #4 + ble _021DA314 + bl ErrorHandling +_021DA314: + cmp r5, #0 + beq _021DA31A + str r5, [r6, #0x14] +_021DA31A: + str r4, [r6, #0x10] + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA320 +MOD05_021DA320: ; 0x021DA320 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r1, #0 + add r6, r2, #0 + cmp r4, r0 + blt _021DA332 + bl ErrorHandling +_021DA332: + lsl r0, r4, #2 + str r6, [r5, r0] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021DA338 +MOD05_021DA338: ; 0x021DA338 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r1, #0 + cmp r4, r0 + blt _021DA34A + bl ErrorHandling +_021DA34A: + lsl r0, r4, #2 + ldr r0, [r5, r0] + str r0, [sp, #4] + bl MOD05_021D9BD4 + str r0, [sp] + ldr r0, [r5, #0x2c] + bl MOD05_021D9BD4 + add r7, r0, #0 + mov r4, #0 +_021DA360: + lsl r0, r4, #2 + add r6, r5, r0 + ldr r0, [r6, #0x14] + cmp r0, #0 + beq _021DA378 + add r1, r7, #0 + bl MOD05_021D9B04 + ldr r0, [r6, #0x14] + ldr r1, [sp] + bl FUN_020B7EFC +_021DA378: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #6 + blo _021DA360 + ldr r0, [sp, #4] + str r0, [r5, #0x2c] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA38C +MOD05_021DA38C: ; 0x021DA38C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x18] + ldr r0, [sp, #0x40] + str r1, [sp, #0x1c] + str r0, [sp, #0x40] + ldr r0, [sp, #0x4c] + str r2, [sp, #0x20] + str r0, [sp, #0x4c] + add r0, r3, #0 + mov r5, #0 + str r3, [sp, #0x24] + ldr r6, [sp, #0x44] + ldr r7, [sp, #0x48] + cmp r0, #0 + ble _021DA3E4 +_021DA3AC: + str r6, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x40] + str r0, [sp, #0xc] + ldr r0, [sp, #0x20] + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x18] + mov r3, #0 + str r7, [sp, #0x14] + bl MOD05_021D9C14 + add r4, r0, #0 + bne _021DA3D2 + bl ErrorHandling +_021DA3D2: + ldr r0, [sp, #0x4c] + add r1, r5, #0 + add r2, r4, #0 + bl MOD05_021DA320 + ldr r0, [sp, #0x24] + add r5, r5, #1 + cmp r5, r0 + blt _021DA3AC +_021DA3E4: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021DA3E8 +MOD05_021DA3E8: ; 0x021DA3E8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + str r0, [sp] + ldr r0, [r6, #0x2c] + bl MOD05_021D9BD4 + add r7, r0, #0 + mov r4, #0 + add r5, r6, #0 +_021DA3FA: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _021DA406 + add r1, r7, #0 + bl MOD05_021D9B04 +_021DA406: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021DA3FA + ldr r0, [r6, #0x10] + mov r5, #0 + cmp r0, #0 + ble _021DA42C + add r4, r6, #0 + add r7, r5, #0 +_021DA41A: + ldr r0, [r4] + ldr r1, [sp] + bl MOD05_021D9F80 + stmia r4!, {r7} + ldr r0, [r6, #0x10] + add r5, r5, #1 + cmp r5, r0 + blt _021DA41A +_021DA42C: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA430 +MOD05_021DA430: ; 0x021DA430 + push {r4, lr} + mov r1, #0xe + mov r0, #4 + lsl r1, r1, #6 + bl AllocFromHeap + add r4, r0, #0 + mov r2, #0xe + mov r0, #0 + add r1, r4, #0 + lsl r2, r2, #6 + bl MIi_CpuClearFast + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA450 +MOD05_021DA450: ; 0x021DA450 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021DA462 + bl FreeToHeap + mov r0, #0 + str r0, [r4] +_021DA462: + pop {r4, pc} + + thumb_func_start MOD05_021DA464 +MOD05_021DA464: ; 0x021DA464 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + add r0, r1, #0 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + add r6, r3, #0 + bl MOD05_021DA26C + add r5, r0, #0 + bne _021DA482 + bl ErrorHandling + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021DA482: + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x34] + add r2, r5, #0 + bl MOD05_021DA304 + add r0, sp, #0x38 + ldrb r4, [r0] + cmp r4, #0 + bne _021DA498 + bl ErrorHandling +_021DA498: + cmp r4, #0 + bne _021DA49E + mov r4, #1 +_021DA49E: + ldr r0, [sp, #0x3c] + str r4, [sp] + str r0, [sp, #4] + str r7, [sp, #8] + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + ldr r3, [sp, #0x34] + add r0, r6, #0 + str r5, [sp, #0xc] + bl MOD05_021DA38C + str r6, [r5, #0x30] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA4BC +MOD05_021DA4BC: ; 0x021DA4BC + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r5, r0, #0 + add r7, r1, #0 + add r6, r3, #0 + cmp r4, #6 + blo _021DA4CE + bl ErrorHandling +_021DA4CE: + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021DA2DC + add r5, r0, #0 + add r5, #0x14 + lsl r4, r4, #2 + ldr r0, [r5, r4] + cmp r0, #0 + beq _021DA4E6 + bl ErrorHandling +_021DA4E6: + str r6, [r5, r4] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA4EC +MOD05_021DA4EC: ; 0x021DA4EC + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #0 + bne _021DA4FC + bl ErrorHandling +_021DA4FC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021DA2DC + add r1, r6, #0 + bl MOD05_021DA338 + mov r1, #0 + bl MOD05_021DA0DC + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DA514 +MOD05_021DA514: ; 0x021DA514 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r7, r2, #0 + add r4, r3, #0 + cmp r5, #0 + bne _021DA526 + bl ErrorHandling +_021DA526: + add r0, r6, #0 + add r1, r5, #0 + bl MOD05_021DA2DC + add r1, r7, #0 + bl MOD05_021DA338 + add r5, r0, #0 + cmp r4, #0 + beq _021DA542 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_020054C8 +_021DA542: + add r0, r5, #0 + mov r1, #0 + bl MOD05_021DA0DC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021DA54C +MOD05_021DA54C: ; 0x021DA54C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bne _021DA55A + bl ErrorHandling +_021DA55A: + add r0, r4, #0 + add r1, r6, #0 + bl MOD05_021DA2DC + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021DA3E8 + add r0, r4, #0 + bl MOD05_021DA2BC + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021DA574 +MOD05_021DA574: ; 0x021DA574 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bne _021DA580 + bl ErrorHandling +_021DA580: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021DA2DC + ldr r0, [r0, #0x2c] + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021DA58C +MOD05_021DA58C: ; 0x021DA58C + push {r4, lr} + bl MOD05_021DA574 + add r4, r0, #0 + bne _021DA59A + bl ErrorHandling +_021DA59A: + add r0, r4, #0 + bl MOD05_021DA20C + cmp r0, #0 + beq _021DA5A8 + mov r0, #1 + pop {r4, pc} +_021DA5A8: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021DA5AC +MOD05_021DA5AC: ; 0x021DA5AC + push {r3, lr} + bl MOD05_021DA2DC + ldr r0, [r0, #0x30] + pop {r3, pc} + .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021DA5B8.s b/arm9/modules/05/asm/mod05_021DA5B8.s new file mode 100644 index 00000000..e961bb5a --- /dev/null +++ b/arm9/modules/05/asm/mod05_021DA5B8.s @@ -0,0 +1,1882 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021DA5B8 +MOD05_021DA5B8: ; 0x021DA5B8 + push {r3, lr} + mov r0, #4 + mov r1, #0x28 + bl AllocFromHeapAtEnd + mov r1, #0 + str r1, [r0] + pop {r3, pc} + + thumb_func_start MOD05_021DA5C8 +MOD05_021DA5C8: ; 0x021DA5C8 + ldr r3, _021DA5CC ; =FreeToHeap + bx r3 + .balign 4, 0 +_021DA5CC: .word FreeToHeap + + thumb_func_start MOD05_021DA5D0 +MOD05_021DA5D0: ; 0x021DA5D0 + str r0, [r2, #0x14] + str r1, [r2, #0x18] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021DA5D8 +MOD05_021DA5D8: ; 0x021DA5D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #5 + bls _021DA5E8 + b _021DA78E +_021DA5E8: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA5F4: ; jump table + .short _021DA600 - _021DA5F4 - 2 ; case 0 + .short _021DA69A - _021DA5F4 - 2 ; case 1 + .short _021DA6EC - _021DA5F4 - 2 ; case 2 + .short _021DA700 - _021DA5F4 - 2 ; case 3 + .short _021DA714 - _021DA5F4 - 2 ; case 4 + .short _021DA772 - _021DA5F4 - 2 ; case 5 +_021DA600: + ldr r6, _021DA7A4 ; =UNK05_021F650C + add r3, sp, #0x34 + mov r2, #0xa +_021DA606: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021DA606 + mov r0, #0 + str r0, [r4, #0x20] + strb r0, [r4, #0x1d] + mov r0, #3 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + add r0, sp, #0x24 + str r0, [sp, #8] + sub r2, r2, #2 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + add r3, r2, #0 + bl FUN_0204A840 + mov r0, #1 + strb r0, [r4, #0x1c] + add r0, sp, #0x20 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x34 + mov r2, #0x14 + add r3, sp, #0x24 + bl FUN_0204A94C + cmp r0, #0 + beq _021DA688 + ldr r0, [r5, #0x4c] + ldr r1, [sp, #0x1c] + bl MOD05_021DA230 + add r6, r0, #0 + strb r6, [r4, #0x1e] + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r7, r0, #0 + ldr r0, [sp, #0x20] + bl MOD05_021E7EC8 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + bl MOD05_021E7ECC + ldr r1, [sp, #0x18] + mov r2, #1 + str r1, [sp] + str r0, [sp, #4] + str r7, [sp, #8] + str r6, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x1c] + bl MOD05_021DA464 + b _021DA692 +_021DA688: + bl ErrorHandling + add sp, #0x84 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA692: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA69A: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA5AC + add r6, r0, #0 + cmp r6, #0x4b + beq _021DA6B2 + ldr r0, [r5, #0x20] + bl FUN_0201EC88 + mov r0, #1 + str r0, [r4, #0x20] +_021DA6B2: + add r0, r6, #0 + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DA6C0 + ldr r6, _021DA7A8 ; =0x00000608 + b _021DA6C2 +_021DA6C0: + ldr r6, _021DA7AC ; =0x00000605 +_021DA6C2: + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bne _021DA6CC + mov r2, #0 + b _021DA6DA +_021DA6CC: + cmp r0, #4 + bne _021DA6D4 + mov r2, #0 + b _021DA6DA +_021DA6D4: + bl ErrorHandling + mov r2, #0 +_021DA6DA: + ldr r0, [r5, #0x50] + mov r1, #1 + add r3, r6, #0 + bl MOD05_021DA514 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA6EC: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DA78E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA700: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + mov r1, #0xc + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA714: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DA78E + add r0, r6, #0 + bl FUN_0205AE50 + add r0, r6, #0 + mov r1, #1 + bl FUN_0205889C + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA5AC + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DA746 + mov r6, #0 + b _021DA748 +_021DA746: + ldr r6, _021DA7B0 ; =0x00000607 +_021DA748: + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bne _021DA752 + mov r2, #1 + b _021DA760 +_021DA752: + cmp r0, #4 + bne _021DA75A + mov r2, #1 + b _021DA760 +_021DA75A: + bl ErrorHandling + mov r2, #1 +_021DA760: + ldr r0, [r5, #0x50] + mov r1, #1 + add r3, r6, #0 + bl MOD05_021DA514 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA78E +_021DA772: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DA78E + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #1 + bl MOD05_021DA54C + add sp, #0x84 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA78E: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _021DA79E + add r4, #0x1d + ldr r0, [r5, #0x20] + add r1, r4, #0 + bl MOD05_021DA9E8 +_021DA79E: + mov r0, #0 + add sp, #0x84 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021DA7A4: .word UNK05_021F650C +_021DA7A8: .word 0x00000608 +_021DA7AC: .word 0x00000605 +_021DA7B0: .word 0x00000607 + + thumb_func_start MOD05_021DA7B4 +MOD05_021DA7B4: ; 0x021DA7B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #6 + bls _021DA7C4 + b _021DA9BE +_021DA7C4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DA7D0: ; jump table + .short _021DA7DE - _021DA7D0 - 2 ; case 0 + .short _021DA896 - _021DA7D0 - 2 ; case 1 + .short _021DA8F6 - _021DA7D0 - 2 ; case 2 + .short _021DA916 - _021DA7D0 - 2 ; case 3 + .short _021DA92A - _021DA7D0 - 2 ; case 4 + .short _021DA980 - _021DA7D0 - 2 ; case 5 + .short _021DA9B0 - _021DA7D0 - 2 ; case 6 +_021DA7DE: + ldr r6, _021DA9D4 ; =UNK05_021F655C + add r3, sp, #0x34 + mov r2, #0xa +_021DA7E4: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021DA7E4 + mov r3, #0 + str r3, [r4, #0x20] + strb r3, [r4, #0x1d] + mov r0, #3 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + add r0, sp, #0x24 + str r0, [sp, #8] + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + sub r2, r2, #2 + bl FUN_0204A840 + mov r0, #1 + strb r0, [r4, #0x1c] + add r0, sp, #0x20 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x34 + mov r2, #0x14 + add r3, sp, #0x24 + bl FUN_0204A94C + cmp r0, #0 + beq _021DA864 + ldr r0, [r5, #0x4c] + ldr r1, [sp, #0x1c] + bl MOD05_021DA230 + add r6, r0, #0 + strb r6, [r4, #0x1e] + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r7, r0, #0 + ldr r0, [sp, #0x20] + bl MOD05_021E7EC8 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + bl MOD05_021E7ECC + ldr r1, [sp, #0x18] + mov r2, #1 + str r1, [sp] + str r0, [sp, #4] + str r7, [sp, #8] + str r6, [sp, #0xc] + str r2, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x1c] + bl MOD05_021DA464 + b _021DA878 +_021DA864: + bl ErrorHandling + mov r0, #1 + bl MOD05_021D7CA4 + mov r0, #6 + str r0, [r4] + add sp, #0x84 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021DA878: + ldr r0, [r5, #0x20] + bl FUN_0201F008 + strh r0, [r4, #0x24] + ldr r0, [sp, #0x1c] + cmp r0, #0x4b + beq _021DA88E + ldr r0, _021DA9D8 ; =0x0000FFA0 + ldr r1, [r5, #0x20] + bl FUN_0201EF2C +_021DA88E: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA896: + mov r1, #0 + str r1, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r0, [r5, #0x10] + mov r2, #9 + bl FUN_0204C1B4 + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA5AC + cmp r0, #0x4b + beq _021DA8BE + mov r1, #1 + str r1, [r4, #0x20] +_021DA8BE: + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DA8CA + ldr r6, _021DA9DC ; =0x00000608 + b _021DA8CC +_021DA8CA: + ldr r6, _021DA9E0 ; =0x00000605 +_021DA8CC: + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bne _021DA8D6 + mov r2, #0 + b _021DA8E4 +_021DA8D6: + cmp r0, #4 + bne _021DA8DE + mov r2, #2 + b _021DA8E4 +_021DA8DE: + bl ErrorHandling + mov r2, #0 +_021DA8E4: + ldr r0, [r5, #0x50] + mov r1, #1 + add r3, r6, #0 + bl MOD05_021DA514 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA8F6: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DA9BE + ldr r0, [r5, #0x38] + bl FUN_020553A0 + mov r1, #0 + bl FUN_0205889C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA916: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + mov r1, #0xd + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA92A: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DA9BE + add r0, r6, #0 + bl FUN_0205AE50 + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA5AC + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DA954 + mov r6, #0 + b _021DA956 +_021DA954: + ldr r6, _021DA9E4 ; =0x00000607 +_021DA956: + ldrb r0, [r4, #0x1e] + cmp r0, #2 + bne _021DA960 + mov r2, #1 + b _021DA96E +_021DA960: + cmp r0, #4 + bne _021DA968 + mov r2, #3 + b _021DA96E +_021DA968: + bl ErrorHandling + mov r2, #1 +_021DA96E: + ldr r0, [r5, #0x50] + mov r1, #1 + add r3, r6, #0 + bl MOD05_021DA514 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DA9BE +_021DA980: + ldr r0, [r5, #0x50] + mov r1, #1 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DA9BE + bl FUN_0200E308 + cmp r0, #0 + beq _021DA9BE + ldr r0, [r5, #0x20] + bl FUN_0201F008 + ldrh r1, [r4, #0x24] + cmp r1, r0 + bne _021DA9BE + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #1 + bl MOD05_021DA54C + add sp, #0x84 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA9B0: + bl FUN_0200E308 + cmp r0, #0 + beq _021DA9BE + add sp, #0x84 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021DA9BE: + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _021DA9CE + add r4, #0x1d + ldr r0, [r5, #0x20] + add r1, r4, #0 + bl MOD05_021DAA2C +_021DA9CE: + mov r0, #0 + add sp, #0x84 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021DA9D4: .word UNK05_021F655C +_021DA9D8: .word 0x0000FFA0 +_021DA9DC: .word 0x00000608 +_021DA9E0: .word 0x00000605 +_021DA9E4: .word 0x00000607 + + thumb_func_start MOD05_021DA9E8 +MOD05_021DA9E8: ; 0x021DA9E8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldrb r0, [r5] + mov r4, #0xc + add r1, r0, #0 + mul r1, r4 + cmp r1, #0x60 + bgt _021DAA28 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x60 + bls _021DAA08 + sub r0, #0x60 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_021DAA08: + add r0, r6, #0 + bl FUN_0201F008 + sub r0, r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _021DAA22 + neg r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r6, #0 + bl FUN_0201EF2C +_021DAA22: + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_021DAA28: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DAA2C +MOD05_021DAA2C: ; 0x021DAA2C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldrb r0, [r5] + lsl r0, r0, #4 + cmp r0, #0x60 + bge _021DAA68 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x60 + bls _021DAA4A + sub r0, #0x60 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + b _021DAA4C +_021DAA4A: + mov r4, #0x10 +_021DAA4C: + add r0, r6, #0 + bl FUN_0201F008 + add r0, r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _021DAA62 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0201EF2C +_021DAA62: + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_021DAA68: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DAA6C +MOD05_021DAA6C: ; 0x021DAA6C + cmp r0, #0x46 + beq _021DAA98 + ldr r2, _021DAAA0 ; =0x000001BA + cmp r0, r2 + beq _021DAA98 + add r1, r2, #0 + sub r1, #0x90 + cmp r0, r1 + beq _021DAA98 + add r1, r2, #0 + add r1, #0xe + cmp r0, r1 + beq _021DAA98 + add r1, r2, #0 + sub r1, #0xf + cmp r0, r1 + beq _021DAA98 + add r2, #0x2a + cmp r0, r2 + beq _021DAA98 + cmp r0, #0x4b + bne _021DAA9C +_021DAA98: + mov r0, #1 + bx lr +_021DAA9C: + mov r0, #0 + bx lr + .balign 4, 0 +_021DAAA0: .word 0x000001BA + + thumb_func_start MOD05_021DAAA4 +MOD05_021DAAA4: ; 0x021DAAA4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + cmp r0, #5 + bls _021DAAB6 + b _021DAC60 +_021DAAB6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAAC2: ; jump table + .short _021DAACE - _021DAAC2 - 2 ; case 0 + .short _021DAB8E - _021DAAC2 - 2 ; case 1 + .short _021DABCE - _021DAAC2 - 2 ; case 2 + .short _021DABEE - _021DAAC2 - 2 ; case 3 + .short _021DAC16 - _021DAAC2 - 2 ; case 4 + .short _021DAC34 - _021DAAC2 - 2 ; case 5 +_021DAACE: + ldr r3, _021DAC68 ; =UNK05_021F64FC + add r2, sp, #0x20 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + cmp r6, #2 + bne _021DAAF8 + mov r0, #2 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + add r0, sp, #0x30 + str r0, [sp, #8] + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + sub r2, r2, #2 + mov r3, #0 + bl FUN_0204A840 + b _021DAB10 +_021DAAF8: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, sp, #0x30 + str r0, [sp, #8] + mov r2, #0 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + add r3, r2, #0 + bl FUN_0204A840 +_021DAB10: + mov r0, #2 + strb r0, [r4, #0x1c] + add r0, sp, #0x1c + str r0, [sp] + add r0, sp, #0x18 + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x20 + mov r2, #4 + add r3, sp, #0x30 + bl FUN_0204A94C + cmp r0, #0 + beq _021DAB5E + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r6, r0, #0 + ldr r0, [sp, #0x1c] + bl MOD05_021E7EC8 + add r7, r0, #0 + ldr r0, [sp, #0x1c] + bl MOD05_021E7ECC + str r7, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x18] + mov r2, #2 + bl MOD05_021DA464 + b _021DAB68 +_021DAB5E: + bl ErrorHandling + add sp, #0x40 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DAB68: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAB82 + add r0, r5, #0 + mov r1, #0x49 + bl FUN_0205ADDC + b _021DAB86 +_021DAB82: + bl ErrorHandling +_021DAB86: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DAB8E: + mov r0, #1 + bl MOD05_021D7CA4 + ldr r0, [r5, #0x50] + ldr r3, _021DAC6C ; =0x00000615 + mov r1, #2 + mov r2, #0 + bl MOD05_021DA514 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DABC2 + cmp r6, #3 + bne _021DABB8 + mov r1, #0xb + b _021DABBA +_021DABB8: + mov r1, #0xa +_021DABBA: + add r0, r5, #0 + bl FUN_0205ADDC + b _021DABC6 +_021DABC2: + bl ErrorHandling +_021DABC6: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DABCE: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAC60 + add r0, r5, #0 + mov r1, #0x4a + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DABEE: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAC60 + cmp r6, #3 + bne _021DAC06 + mov r1, #0xb + b _021DAC08 +_021DAC06: + mov r1, #0xa +_021DAC08: + add r0, r5, #0 + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DAC16: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DAC60 + add r0, r5, #0 + bl FUN_0205AE50 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAC60 +_021DAC34: + ldr r0, [r5, #0x50] + mov r1, #2 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DAC60 + bl FUN_0200E308 + cmp r0, #0 + beq _021DAC60 + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #2 + bl MOD05_021DA54C + ldr r0, _021DAC6C ; =0x00000615 + mov r1, #0 + bl FUN_020054F0 + add sp, #0x40 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DAC60: + mov r0, #0 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAC68: .word UNK05_021F64FC +_021DAC6C: .word 0x00000615 + + thumb_func_start MOD05_021DAC70 +MOD05_021DAC70: ; 0x021DAC70 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + cmp r0, #4 + bls _021DAC82 + b _021DAE04 +_021DAC82: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DAC8E: ; jump table + .short _021DAC98 - _021DAC8E - 2 ; case 0 + .short _021DAD5A - _021DAC8E - 2 ; case 1 + .short _021DAD94 - _021DAC8E - 2 ; case 2 + .short _021DADBA - _021DAC8E - 2 ; case 3 + .short _021DADD8 - _021DAC8E - 2 ; case 4 +_021DAC98: + ldr r3, _021DAE0C ; =UNK05_021F64EC + add r2, sp, #0x20 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + cmp r6, #2 + bne _021DACC2 + mov r0, #2 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + add r0, sp, #0x30 + str r0, [sp, #8] + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + sub r2, r2, #2 + mov r3, #0 + bl FUN_0204A840 + b _021DACDA +_021DACC2: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, sp, #0x30 + str r0, [sp, #8] + mov r2, #0 + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x18] + add r3, r2, #0 + bl FUN_0204A840 +_021DACDA: + mov r0, #2 + strb r0, [r4, #0x1c] + add r0, sp, #0x1c + str r0, [sp] + add r0, sp, #0x18 + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x20 + mov r2, #4 + add r3, sp, #0x30 + bl FUN_0204A94C + cmp r0, #0 + beq _021DAD2A + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r6, r0, #0 + ldr r0, [sp, #0x1c] + bl MOD05_021E7EC8 + add r7, r0, #0 + ldr r0, [sp, #0x1c] + bl MOD05_021E7ECC + str r7, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x18] + mov r2, #2 + bl MOD05_021DA464 + b _021DAD34 +_021DAD2A: + bl ErrorHandling + add sp, #0x40 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DAD34: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAD4E + add r0, r5, #0 + mov r1, #0x49 + bl FUN_0205ADDC + b _021DAD52 +_021DAD4E: + bl ErrorHandling +_021DAD52: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAE04 +_021DAD5A: + ldr r0, [r5, #0x50] + ldr r3, _021DAE10 ; =0x00000615 + mov r1, #2 + mov r2, #0 + bl MOD05_021DA514 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAD88 + cmp r6, #2 + bne _021DAD7E + mov r1, #0xa + b _021DAD80 +_021DAD7E: + mov r1, #0xb +_021DAD80: + add r0, r5, #0 + bl FUN_0205ADDC + b _021DAD8C +_021DAD88: + bl ErrorHandling +_021DAD8C: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAE04 +_021DAD94: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _021DAE04 + add r0, r5, #0 + mov r1, #0x4a + bl FUN_0205ADDC + mov r0, #0 + bl MOD05_021D7CA4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAE04 +_021DADBA: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DAE04 + add r0, r5, #0 + bl FUN_0205AE50 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DAE04 +_021DADD8: + ldr r0, [r5, #0x50] + mov r1, #2 + bl MOD05_021DA58C + cmp r0, #0 + beq _021DAE04 + bl FUN_0200E308 + cmp r0, #0 + beq _021DAE04 + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #2 + bl MOD05_021DA54C + ldr r0, _021DAE10 ; =0x00000615 + mov r1, #0 + bl FUN_020054F0 + add sp, #0x40 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DAE04: + mov r0, #0 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAE0C: .word UNK05_021F64EC +_021DAE10: .word 0x00000615 + + thumb_func_start MOD05_021DAE14 +MOD05_021DAE14: ; 0x021DAE14 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4] + ldr r0, [r5, #0x50] + bl MOD05_021DA58C + cmp r0, #0 + beq _021DAE3C + add r0, r4, #0 + bl FreeToHeap + mov r0, #1 + pop {r3, r4, r5, pc} +_021DAE3C: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021DAE40 +MOD05_021DAE40: ; 0x021DAE40 + push {r4, r5, r6, r7, lr} + sub sp, #0x84 + ldr r6, _021DAED0 ; =UNK05_021F65AC + str r3, [sp, #0x18] + add r5, r0, #0 + add r7, r1, #0 + add r4, sp, #0x34 + mov r3, #0xa +_021DAE50: + ldmia r6!, {r0, r1} + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _021DAE50 + mov r0, #3 + str r0, [sp] + mov r3, #1 + add r1, r2, #0 + str r3, [sp, #4] + add r0, sp, #0x24 + str r0, [sp, #8] + sub r2, r3, #2 + add r0, r7, #0 + mov r3, #0 + bl FUN_0204A840 + add r0, sp, #0x20 + str r0, [sp] + add r0, sp, #0x1c + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0x34 + mov r2, #0x14 + add r3, sp, #0x24 + bl FUN_0204A94C + cmp r0, #0 + beq _021DAEC8 + ldr r0, [r5, #0x4c] + ldr r1, [sp, #0x1c] + bl MOD05_021DA230 + add r4, r0, #0 + ldr r0, [r5, #0x2c] + bl MOD05_021F4C88 + add r6, r0, #0 + ldr r0, [sp, #0x20] + bl MOD05_021E7EC8 + add r7, r0, #0 + ldr r0, [sp, #0x20] + bl MOD05_021E7ECC + str r7, [sp] + str r0, [sp, #4] + str r6, [sp, #8] + str r4, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + bl MOD05_021DA464 + add sp, #0x84 + pop {r4, r5, r6, r7, pc} +_021DAEC8: + bl ErrorHandling + add sp, #0x84 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021DAED0: .word UNK05_021F65AC + + thumb_func_start MOD05_021DAED4 +MOD05_021DAED4: ; 0x021DAED4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x50] + add r7, r1, #0 + bl MOD05_021DA5AC + add r6, r0, #0 + ldr r0, [r5, #0x4c] + add r1, r6, #0 + bl MOD05_021DA230 + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DAEFA + ldr r6, _021DAF20 ; =0x00000608 + b _021DAEFC +_021DAEFA: + ldr r6, _021DAF24 ; =0x00000605 +_021DAEFC: + cmp r4, #2 + bne _021DAF04 + mov r2, #0 + b _021DAF12 +_021DAF04: + cmp r4, #4 + bne _021DAF0C + mov r2, #0 + b _021DAF12 +_021DAF0C: + bl ErrorHandling + mov r2, #0 +_021DAF12: + ldr r0, [r5, #0x50] + add r1, r7, #0 + add r3, r6, #0 + bl MOD05_021DA514 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAF20: .word 0x00000608 +_021DAF24: .word 0x00000605 + + thumb_func_start MOD05_021DAF28 +MOD05_021DAF28: ; 0x021DAF28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x50] + add r7, r1, #0 + bl MOD05_021DA5AC + add r6, r0, #0 + ldr r0, [r5, #0x4c] + add r1, r6, #0 + bl MOD05_021DA230 + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021DAA6C + cmp r0, #0 + beq _021DAF4E + mov r6, #0 + b _021DAF50 +_021DAF4E: + ldr r6, _021DAF74 ; =0x00000607 +_021DAF50: + cmp r4, #2 + bne _021DAF58 + mov r2, #1 + b _021DAF66 +_021DAF58: + cmp r4, #4 + bne _021DAF60 + mov r2, #1 + b _021DAF66 +_021DAF60: + bl ErrorHandling + mov r2, #1 +_021DAF66: + ldr r0, [r5, #0x50] + add r1, r7, #0 + add r3, r6, #0 + bl MOD05_021DA514 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DAF74: .word 0x00000607 + + thumb_func_start MOD05_021DAF78 +MOD05_021DAF78: ; 0x021DAF78 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #4 + mov r1, #1 + bl AllocFromHeapAtEnd + add r2, r0, #0 + strb r4, [r2] + ldr r0, [r5, #0x10] + ldr r1, _021DAF94 ; =MOD05_021DAE14 + bl FUN_0204640C + pop {r3, r4, r5, pc} + .balign 4, 0 +_021DAF94: .word MOD05_021DAE14 + + thumb_func_start MOD05_021DAF98 +MOD05_021DAF98: ; 0x021DAF98 + add r3, r0, #0 + add r2, r1, #0 + ldr r0, [r3, #0x4c] + ldr r1, [r3, #0x50] + ldr r3, _021DAFA4 ; =MOD05_021DA54C + bx r3 + .balign 4, 0 +_021DAFA4: .word MOD05_021DA54C + + thumb_func_start MOD05_021DAFA8 +MOD05_021DAFA8: ; 0x021DAFA8 + push {r4, r5, lr} + sub sp, #0x2c + add r5, r2, #0 + ldr r2, _021DB02C ; =UNK05_021F64E4 + add r4, r3, #0 + ldr r3, [r2] + ldr r2, [r2, #4] + str r3, [sp, #0xc] + str r2, [sp, #0x10] + mov r2, #1 + str r2, [sp] + mov r2, #3 + str r2, [sp, #4] + add r2, sp, #0x1c + str r2, [sp, #8] + mov r2, #0 + sub r3, r2, #1 + bl FUN_0204A840 + add r0, sp, #0x18 + str r0, [sp] + add r0, sp, #0x14 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0xc + mov r2, #2 + add r3, sp, #0x1c + bl FUN_0204A94C + cmp r0, #0 + bne _021DAFEA + bl ErrorHandling +_021DAFEA: + ldr r0, [sp, #0x18] + bl MOD05_021E7EC8 + add r3, r0, #0 + ldr r0, [r4, #0x4c] + add r1, r5, #0 + str r0, [sp] + ldr r0, [sp, #0x14] + mov r2, #1 + bl MOD05_021D9DC0 + cmp r0, #0 + bne _021DB008 + bl ErrorHandling +_021DB008: + ldr r0, [sp, #0x14] + ldr r2, [r4, #0x4c] + add r1, r5, #0 + bl MOD05_021DA080 + add r4, r0, #0 + bl MOD05_021DA118 + add r0, r4, #0 + mov r1, #0 + bl MOD05_021DA0DC + add r0, r4, #0 + bl MOD05_021DA0E0 + add sp, #0x2c + pop {r4, r5, pc} + nop +_021DB02C: .word UNK05_021F64E4 + + thumb_func_start MOD05_021DB030 +MOD05_021DB030: ; 0x021DB030 + push {r3, lr} + mov r0, #4 + mov r1, #0x10 + bl AllocFromHeapAtEnd + mov r1, #0 + str r1, [r0] + pop {r3, pc} + + thumb_func_start MOD05_021DB040 +MOD05_021DB040: ; 0x021DB040 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021DB126 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DB066: ; jump table + .short _021DB06E - _021DB066 - 2 ; case 0 + .short _021DB0CA - _021DB066 - 2 ; case 1 + .short _021DB0E8 - _021DB066 - 2 ; case 2 + .short _021DB106 - _021DB066 - 2 ; case 3 +_021DB06E: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + cmp r0, #1 + bne _021DB08C + add r0, r6, #0 + mov r1, #1 + bl FUN_0205889C + mov r0, #1 + b _021DB096 +_021DB08C: + add r0, r6, #0 + mov r1, #0 + bl FUN_0205889C + mov r0, #3 +_021DB096: + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + strb r0, [r4, #4] + ldr r0, [r5, #0x20] + bl FUN_0201F008 + strh r0, [r4, #0xc] + ldr r0, _021DB13C ; =0x0000FFA0 + ldr r1, [r5, #0x20] + bl FUN_0201EF2C + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0xb + str r0, [sp, #8] + ldr r3, _021DB140 ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4, #8] + b _021DB126 +_021DB0CA: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + mov r1, #0 + bl FUN_0205889C + add r0, r6, #0 + mov r1, #0xd + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DB126 +_021DB0E8: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DB126 + add r0, r6, #0 + bl FUN_0205AE50 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DB126 +_021DB106: + bl FUN_0200E308 + cmp r0, #0 + beq _021DB126 + ldr r0, [r5, #0x20] + bl FUN_0201F008 + ldrh r1, [r4, #0xc] + cmp r1, r0 + bne _021DB126 + add r0, r4, #0 + bl FreeToHeap + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021DB126: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DB134 + ldr r0, [r5, #0x20] + add r1, r4, #4 + bl MOD05_021DAA2C +_021DB134: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021DB13C: .word 0x0000FFA0 +_021DB140: .word 0x00007FFF + + thumb_func_start MOD05_021DB144 +MOD05_021DB144: ; 0x021DB144 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #0 + beq _021DB164 + cmp r0, #1 + beq _021DB1A0 + b _021DB1B4 +_021DB164: + ldr r0, [r4, #0x38] + bl FUN_020553A0 + mov r1, #1 + bl FUN_0205889C + mov r0, #0 + str r0, [r5, #8] + strb r0, [r5, #4] + ldr r0, _021DB1C8 ; =0x00000603 + bl FUN_020054C8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xb + str r0, [sp, #8] + mov r0, #0 + ldr r3, _021DB1CC ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r5, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021DB1B4 +_021DB1A0: + bl FUN_0200E308 + cmp r0, #0 + beq _021DB1B4 + add r0, r5, #0 + bl FreeToHeap + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021DB1B4: + ldr r0, [r5, #8] + cmp r0, #0 + beq _021DB1C2 + ldr r0, [r4, #0x20] + add r1, r5, #4 + bl MOD05_021DA9E8 +_021DB1C2: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 +_021DB1C8: .word 0x00000603 +_021DB1CC: .word 0x00007FFF + + thumb_func_start MOD05_021DB1D0 +MOD05_021DB1D0: ; 0x021DB1D0 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021DB1F0 + cmp r0, #1 + beq _021DB222 + b _021DB236 +_021DB1F0: + mov r0, #0 + str r0, [r4, #8] + strb r0, [r4, #4] + ldr r0, _021DB24C ; =0x00000603 + bl FUN_020054C8 + mov r1, #0 + str r1, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x10 + add r3, r1, #0 + bl FUN_0204C1B4 + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DB236 +_021DB222: + bl FUN_0200E308 + cmp r0, #0 + beq _021DB236 + add r0, r4, #0 + bl FreeToHeap + add sp, #0x10 + mov r0, #1 + pop {r4, r5, r6, pc} +_021DB236: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DB244 + ldr r0, [r6, #0x20] + add r1, r4, #4 + bl MOD05_021DA9E8 +_021DB244: + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021DB24C: .word 0x00000603 + + thumb_func_start MOD05_021DB250 +MOD05_021DB250: ; 0x021DB250 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r0, [sp, #0x10] + bl FUN_02046528 + add r5, r0, #0 + ldr r0, [sp, #0x10] + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021DB368 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DB276: ; jump table + .short _021DB27E - _021DB276 - 2 ; case 0 + .short _021DB30C - _021DB276 - 2 ; case 1 + .short _021DB32A - _021DB276 - 2 ; case 2 + .short _021DB348 - _021DB276 - 2 ; case 3 +_021DB27E: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x38] + bl FUN_020552F8 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + cmp r7, #1 + bne _021DB2A0 + ldr r0, [sp, #0x14] + mov r1, #1 + bl FUN_0205889C + mov r0, #1 + b _021DB2AA +_021DB2A0: + ldr r0, [sp, #0x14] + mov r1, #0 + bl FUN_0205889C + mov r0, #3 +_021DB2AA: + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + strb r0, [r4, #4] + ldr r0, [r5, #0x20] + bl FUN_0201F008 + strh r0, [r4, #0xc] + ldr r0, _021DB37C ; =0x0000FFA0 + ldr r1, [r5, #0x20] + bl FUN_0201EF2C + cmp r7, #3 + bhi _021DB2EA + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DB2D2: ; jump table + .short _021DB2DA - _021DB2D2 - 2 ; case 0 + .short _021DB2DE - _021DB2D2 - 2 ; case 1 + .short _021DB2E2 - _021DB2D2 - 2 ; case 2 + .short _021DB2E6 - _021DB2D2 - 2 ; case 3 +_021DB2DA: + mov r6, #3 + b _021DB2EE +_021DB2DE: + mov r6, #5 + b _021DB2EE +_021DB2E2: + mov r6, #7 + b _021DB2EE +_021DB2E6: + mov r6, #0x27 + b _021DB2EE +_021DB2EA: + bl ErrorHandling +_021DB2EE: + mov r1, #0 + str r1, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r2, r6, #0 + bl FUN_0204C1B4 + mov r0, #1 + str r0, [r4, #8] + b _021DB368 +_021DB30C: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + mov r1, #0 + bl FUN_0205889C + add r0, r6, #0 + mov r1, #0xd + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DB368 +_021DB32A: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DB368 + add r0, r6, #0 + bl FUN_0205AE50 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DB368 +_021DB348: + bl FUN_0200E308 + cmp r0, #0 + beq _021DB368 + ldr r0, [r5, #0x20] + bl FUN_0201F008 + ldrh r1, [r4, #0xc] + cmp r1, r0 + bne _021DB368 + add r0, r4, #0 + bl FreeToHeap + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB368: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021DB376 + ldr r0, [r5, #0x20] + add r1, r4, #4 + bl MOD05_021DAA2C +_021DB376: + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021DB37C: .word 0x0000FFA0 + + thumb_func_start MOD05_021DB380 +MOD05_021DB380: ; 0x021DB380 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021DB446 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021DB3A6: ; jump table + .short _021DB3AE - _021DB3A6 - 2 ; case 0 + .short _021DB3F6 - _021DB3A6 - 2 ; case 1 + .short _021DB414 - _021DB3A6 - 2 ; case 2 + .short _021DB432 - _021DB3A6 - 2 ; case 3 +_021DB3AE: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bne _021DB3D0 + add r0, r6, #0 + mov r1, #1 + bl FUN_0205889C + mov r0, #1 + b _021DB3DA +_021DB3D0: + add r0, r6, #0 + mov r1, #0 + bl FUN_0205889C + mov r0, #3 +_021DB3DA: + str r0, [r4] + mov r1, #0 + mov r2, #1 + str r1, [sp] + mov r0, #6 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + add r0, r7, #0 + add r3, r2, #0 + bl FUN_0204C1B4 + b _021DB446 +_021DB3F6: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + mov r1, #0 + bl FUN_0205889C + add r0, r5, #0 + mov r1, #0xd + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DB446 +_021DB414: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _021DB446 + add r0, r5, #0 + bl FUN_0205AE50 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021DB446 +_021DB432: + bl FUN_0200E308 + cmp r0, #0 + beq _021DB446 + add r0, r4, #0 + bl FreeToHeap + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021DB446: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + .section .rodata + + .global UNK05_021F64E4 +UNK05_021F64E4: ; 0x021F64E4 + .word 0x0000012F, 0x00000130 + + .global UNK05_021F64EC +UNK05_021F64EC: ; 0x021F64EC + .word 0x00000082, 0x00000083, 0x000001A9, 0x000001AA + + .global UNK05_021F64FC +UNK05_021F64FC: ; 0x021F64FC + .word 0x00000082, 0x00000083, 0x000001A9, 0x000001AA + + .global UNK05_021F650C +UNK05_021F650C: ; 0x021F650C + .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 + .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 + .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 + .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A + .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B + + .global UNK05_021F655C +UNK05_021F655C: ; 0x021F655C + .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 + .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 + .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 + .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A + .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B + + .global UNK05_021F65AC +UNK05_021F65AC: ; 0x021F65AC + .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 + .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 + .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 + .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A + .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B diff --git a/arm9/modules/05/asm/mod05_021DB44C.s b/arm9/modules/05/asm/mod05_021DB44C.s new file mode 100644 index 00000000..75d5fd9c --- /dev/null +++ b/arm9/modules/05/asm/mod05_021DB44C.s @@ -0,0 +1,632 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021DB44C +MOD05_021DB44C: ; 0x021DB44C + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + cmp r6, #3 + blo _021DB45A + bl ErrorHandling +_021DB45A: + mov r0, #4 + mov r1, #0x14 + bl AllocFromHeap + add r4, r0, #0 + ldr r0, _021DB4AC ; =UNK05_021F65FC + lsl r1, r6, #2 + ldr r0, [r0, r1] + str r5, [r4, #0xc] + add r1, r4, #4 + bl MOD05_021DB61C + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + bl FUN_020126D8 + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r3, r1, #1 + ldr r5, [r4] + mov r1, #0 + cmp r5, #0 + bls _021DB49E + ldr r2, [r4, #4] +_021DB48C: + ldr r0, [r2] + cmp r0, r3 + bls _021DB496 + str r1, [r4, #8] + b _021DB49E +_021DB496: + add r1, r1, #1 + add r2, #0x30 + cmp r1, r5 + blo _021DB48C +_021DB49E: + mov r0, #1 + str r0, [r4, #0x10] + add r0, r4, #0 + bl MOD05_021DB5D4 + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021DB4AC: .word UNK05_021F65FC + + thumb_func_start MOD05_021DB4B0 +MOD05_021DB4B0: ; 0x021DB4B0 + push {r4, lr} + add r4, r0, #0 + bne _021DB4BA + bl ErrorHandling +_021DB4BA: + ldr r0, [r4] + add r0, r0, #4 + bl MOD05_021DB7A0 + ldr r1, [r4] + mov r0, #4 + bl FUN_02016A8C + mov r0, #0 + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD05_021DB4D0 +MOD05_021DB4D0: ; 0x021DB4D0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bne _021DB4DA + bl ErrorHandling +_021DB4DA: + bl FUN_020126D8 + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + ldr r1, [r4] + cmp r1, #1 + bls _021DB528 + ldr r1, [r4, #8] + sub r5, r1, #1 + bmi _021DB4FA + mov r2, #0x30 + ldr r3, [r4, #4] + mul r2, r5 + ldr r2, [r3, r2] + b _021DB4FC +_021DB4FA: + mov r2, #0 +_021DB4FC: + mov r3, #0x30 + ldr r5, [r4, #4] + mul r3, r1 + ldr r1, [r5, r3] + cmp r0, r1 + bge _021DB50C + cmp r0, r2 + bge _021DB528 +_021DB50C: + ldr r0, [r4, #8] + add r1, r0, #1 + str r1, [r4, #8] + ldr r0, [r4] + cmp r1, r0 + blo _021DB51C + mov r0, #0 + str r0, [r4, #8] +_021DB51C: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021DB528 + add r0, r4, #0 + bl MOD05_021DB5D4 +_021DB528: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DB52C +MOD05_021DB52C: ; 0x021DB52C + push {r3, lr} + str r1, [r0, #0x10] + cmp r1, #0 + beq _021DB538 + bl MOD05_021DB5D4 +_021DB538: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DB53C +MOD05_021DB53C: ; 0x021DB53C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp, #4] + add r6, r1, #0 + mov r4, #0 + add r5, r0, #0 + add r7, r0, #0 +_021DB54A: + ldr r0, [sp, #4] + ldrb r1, [r0, #4] + mov r0, #1 + lsl r0, r4 + tst r0, r1 + beq _021DB578 + mov r0, #0x12 + ldrsh r0, [r5, r0] + mov r2, #0xe + mov r3, #0x10 + str r0, [sp] + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021DBC94 + ldrh r2, [r7, #6] + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021DBCBC + b _021DB592 +_021DB578: + mov r0, #0 + mov r2, #0 + str r0, [sp] + add r0, r6, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD05_021DBC94 + add r0, r6, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD05_021DBCBC +_021DB592: + add r4, r4, #1 + add r5, r5, #6 + add r7, r7, #2 + cmp r4, #4 + blt _021DB54A + ldr r1, [sp, #4] + mov r2, #0 + ldrh r1, [r1, #0x26] + add r0, r6, #0 + add r3, r2, #0 + bl MOD05_021DBCD0 + ldr r1, [sp, #4] + add r0, r6, #0 + ldrh r1, [r1, #0x28] + mov r2, #1 + bl MOD05_021DBCE4 + ldr r1, [sp, #4] + mov r2, #0 + ldrh r1, [r1, #0x2a] + add r0, r6, #0 + add r3, r2, #0 + bl MOD05_021DBCF8 + ldr r1, [sp, #4] + add r0, r6, #0 + ldrh r1, [r1, #0x2c] + mov r2, #1 + bl MOD05_021DBD0C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021DB5D4 +MOD05_021DB5D4: ; 0x021DB5D4 + add r3, r0, #0 + ldr r1, [r3, #8] + mov r0, #0x30 + mul r0, r1 + ldr r2, [r3, #4] + ldr r1, [r3, #0xc] + ldr r3, _021DB5E8 ; =MOD05_021DB53C + add r0, r2, r0 + bx r3 + nop +_021DB5E8: .word MOD05_021DB53C + + thumb_func_start MOD05_021DB5EC +MOD05_021DB5EC: ; 0x021DB5EC + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + mov r2, #0x40 + bl FUN_020BC094 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x80 + bl FUN_020BC094 + mov r2, #2 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #8 + bl FUN_020BC094 + mov r2, #1 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #0xa + bl FUN_020BC094 + pop {r4, pc} + + thumb_func_start MOD05_021DB61C +MOD05_021DB61C: ; 0x021DB61C + push {r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x20 + add r2, r0, #0 + str r1, [sp] + mov r0, #4 + add r1, r2, #0 + bl FUN_020161A4 + mov r1, #0 + str r0, [sp, #0x14] + str r1, [sp, #8] + add r5, sp, #0x11c + mov r6, #1 + mov r7, #2 + add r4, r1, #0 +_021DB63C: + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + ldrsb r1, [r5, r4] + cmp r1, #0x45 + bne _021DB656 + ldrsb r1, [r5, r6] + cmp r1, #0x4f + bne _021DB656 + ldrsb r1, [r5, r7] + cmp r1, #0x46 + beq _021DB6A4 +_021DB656: + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + add r1, r5, #0 + mov r2, #0xd + bl FUN_0201C6C8 + ldr r1, [sp, #8] + add r1, r1, #1 + str r1, [sp, #8] +_021DB6A4: + mov r1, #0 + ldrsb r1, [r5, r1] + cmp r1, #0x45 + bne _021DB63C + mov r1, #1 + ldrsb r1, [r5, r1] + cmp r1, #0x4f + bne _021DB63C + mov r1, #2 + ldrsb r1, [r5, r1] + cmp r1, #0x46 + bne _021DB63C + ldr r0, [sp, #8] + mov r1, #0x30 + add r4, r0, #0 + mul r4, r1 + mov r0, #4 + add r1, r4, #0 + bl AllocFromHeap + ldr r1, [sp] + add r2, r4, #0 + str r0, [r1] + mov r1, #0 + bl MI_CpuFill8 + mov r1, #0 + str r1, [sp, #0x18] + ldr r1, [sp, #8] + ldr r0, [sp, #0x14] + cmp r1, #0 + ble _021DB78A + ldr r1, [sp, #0x18] + str r1, [sp, #0x10] +_021DB6E8: + ldr r1, [sp] + mov r2, #0xd + ldr r5, [r1] + ldr r1, [sp, #0x10] + add r4, r5, r1 + add r1, sp, #0x11c + bl FUN_0201C6C8 + str r0, [sp, #4] + add r0, sp, #0x11c + add r1, sp, #0x1c + mov r2, #0x2c + bl FUN_0201C6C8 + add r0, sp, #0x1c + bl FUN_0201C70C + ldr r1, [sp, #0x10] + add r6, r4, #0 + str r0, [r5, r1] + add r0, r4, #6 + mov r7, #0 + add r6, #0xe + str r0, [sp, #0xc] + add r5, r4, #0 +_021DB71A: + ldr r0, [sp, #4] + ldr r1, [sp, #0xc] + add r2, r6, #0 + bl MOD05_021DB7B4 + str r0, [sp, #4] + ldrh r1, [r5, #6] + ldr r0, _021DB79C ; =0x0000FFFF + cmp r1, r0 + beq _021DB73A + mov r0, #1 + ldrb r1, [r4, #4] + lsl r0, r7 + orr r0, r1 + strb r0, [r4, #4] + b _021DB73E +_021DB73A: + mov r0, #0 + strh r0, [r5, #6] +_021DB73E: + ldr r0, [sp, #0xc] + add r7, r7, #1 + add r0, r0, #2 + add r6, r6, #6 + add r5, r5, #2 + str r0, [sp, #0xc] + cmp r7, #4 + blt _021DB71A + add r1, r4, #0 + ldr r0, [sp, #4] + add r1, #0x26 + bl MOD05_021DB8A4 + add r1, r4, #0 + add r1, #0x28 + bl MOD05_021DB8A4 + add r1, r4, #0 + add r1, #0x2a + bl MOD05_021DB8A4 + add r4, #0x2c + add r1, r4, #0 + bl MOD05_021DB8A4 + add r1, sp, #0x11c + mov r2, #0xd + bl FUN_0201C6C8 + ldr r1, [sp, #0x10] + add r1, #0x30 + str r1, [sp, #0x10] + ldr r1, [sp, #0x18] + add r2, r1, #1 + ldr r1, [sp, #8] + str r2, [sp, #0x18] + cmp r2, r1 + blt _021DB6E8 +_021DB78A: + ldr r1, [sp, #0x14] + mov r0, #4 + bl FUN_02016A8C + ldr r0, [sp, #8] + add sp, #0x1fc + add sp, #0x20 + pop {r4, r5, r6, r7, pc} + nop +_021DB79C: .word 0x0000FFFF + + thumb_func_start MOD05_021DB7A0 +MOD05_021DB7A0: ; 0x021DB7A0 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + mov r0, #4 + bl FUN_02016A8C + mov r0, #0 + str r0, [r4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DB7B4 +MOD05_021DB7B4: ; 0x021DB7B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x20 + str r1, [sp, #4] + add r7, r2, #0 + add r1, sp, #0x11c + mov r2, #0xd + bl FUN_0201C6C8 + str r0, [sp] + add r0, sp, #0x11c + add r1, sp, #0x1c + mov r2, #0x2c + bl FUN_0201C6C8 + add r4, r0, #0 + add r0, sp, #0x1c + bl FUN_0201C70C + cmp r0, #1 + bne _021DB88C + mov r6, #0 + add r5, sp, #8 +_021DB7E2: + add r0, r4, #0 + add r1, sp, #0x1c + mov r2, #0x2c + bl FUN_0201C6C8 + add r4, r0, #0 + add r0, sp, #0x1c + bl FUN_0201C70C + strh r0, [r5] + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #3 + blt _021DB7E2 + add r1, sp, #8 + ldrh r0, [r1, #4] + ldrh r2, [r1] + ldrh r1, [r1, #2] + lsl r0, r0, #0xa + mov r6, #0 + lsl r1, r1, #5 + orr r1, r2 + orr r1, r0 + ldr r0, [sp, #4] + add r5, sp, #0x10 + strh r1, [r0] +_021DB816: + add r0, r4, #0 + add r1, sp, #0x1c + mov r2, #0x2c + bl FUN_0201C6C8 + add r4, r0, #0 + add r0, sp, #0x1c + bl FUN_0201C70C + add r6, r6, #1 + stmia r5!, {r0} + cmp r6, #3 + blt _021DB816 + ldr r0, [sp, #0x10] + strh r0, [r7] + ldr r0, [sp, #0x14] + strh r0, [r7, #2] + ldr r0, [sp, #0x18] + strh r0, [r7, #4] + mov r0, #0 + ldrsh r1, [r7, r0] + mov r0, #1 + lsl r0, r0, #0xc + cmp r1, r0 + ble _021DB84A + strh r0, [r7] +_021DB84A: + mov r0, #0 + ldrsh r1, [r7, r0] + ldr r0, _021DB89C ; =0xFFFFF000 + cmp r1, r0 + bge _021DB856 + strh r0, [r7] +_021DB856: + mov r0, #2 + ldrsh r2, [r7, r0] + lsl r1, r0, #0xb + cmp r2, r1 + ble _021DB864 + lsl r0, r0, #0xb + strh r0, [r7, #2] +_021DB864: + mov r0, #2 + ldrsh r1, [r7, r0] + ldr r0, _021DB89C ; =0xFFFFF000 + cmp r1, r0 + bge _021DB870 + strh r0, [r7, #2] +_021DB870: + mov r0, #4 + ldrsh r2, [r7, r0] + lsl r1, r0, #0xa + cmp r2, r1 + ble _021DB87E + lsl r0, r0, #0xa + strh r0, [r7, #4] +_021DB87E: + mov r0, #4 + ldrsh r1, [r7, r0] + ldr r0, _021DB89C ; =0xFFFFF000 + cmp r1, r0 + bge _021DB892 + strh r0, [r7, #4] + b _021DB892 +_021DB88C: + ldr r1, _021DB8A0 ; =0x0000FFFF + ldr r0, [sp, #4] + strh r1, [r0] +_021DB892: + ldr r0, [sp] + add sp, #0x1fc + add sp, #0x20 + pop {r4, r5, r6, r7, pc} + nop +_021DB89C: .word 0xFFFFF000 +_021DB8A0: .word 0x0000FFFF + + thumb_func_start MOD05_021DB8A4 +MOD05_021DB8A4: ; 0x021DB8A4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x14 + str r1, [sp, #4] + add r1, sp, #0x10c + add r1, #2 + mov r2, #0xd + bl FUN_0201C6C8 + add r6, sp, #0x10c + add r7, sp, #0xc + str r0, [sp] + add r6, #2 + mov r4, #0 + add r5, sp, #8 + add r7, #2 +_021DB8C4: + add r0, r6, #0 + add r1, r7, #0 + mov r2, #0x2c + bl FUN_0201C6C8 + add r6, r0, #0 + add r0, r7, #0 + bl FUN_0201C70C + strh r0, [r5] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #3 + blt _021DB8C4 + add r0, sp, #8 + ldrh r1, [r0, #4] + lsl r2, r1, #0xa + ldrh r1, [r0] + ldrh r0, [r0, #2] + lsl r0, r0, #5 + orr r0, r1 + add r1, r2, #0 + orr r1, r0 + ldr r0, [sp, #4] + strh r1, [r0] + ldr r0, [sp] + add sp, #0x1fc + add sp, #0x14 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + .section .rodata + + .global UNK05_021F65FC +UNK05_021F65FC: ; 0x021F65FC + .word UNK05_021FD1F8, UNK05_021FD1E0, UNK05_021FD210 + + .section .data + + .global UNK05_021FD1E0 +UNK05_021FD1E0: ; 0x021FD1E0 + .asciz "data/area01light.txt" + + .balign 4 + .global UNK05_021FD1F8 +UNK05_021FD1F8: ; 0x021FD1F8 + .asciz "data/area00light.txt" + + .balign 4 + .global UNK05_021FD210 +UNK05_021FD210: ; 0x021FD210 + .asciz "data/area02light.txt" diff --git a/arm9/modules/05/asm/mod05_021DB900.s b/arm9/modules/05/asm/mod05_021DB900.s new file mode 100644 index 00000000..9edf9e7c --- /dev/null +++ b/arm9/modules/05/asm/mod05_021DB900.s @@ -0,0 +1,137 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021DB900 +MOD05_021DB900: ; 0x021DB900 + push {r4, lr} + mov r0, #4 + mov r1, #8 + bl AllocFromHeap + add r4, r0, #0 + bne _021DB912 + bl ErrorHandling +_021DB912: + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DB918 +MOD05_021DB918: ; 0x021DB918 + push {r3, r4, r5, r6, lr} + sub sp, #0x4c + add r4, r0, #0 + add r0, sp, #4 + add r5, r1, #0 + bl FS_InitFile + add r0, sp, #4 + add r1, r4, #0 + bl FS_OpenFile + cmp r0, #0 + beq _021DB9B4 + add r1, sp, #0 + add r0, sp, #4 + add r1, #2 + mov r2, #2 + bl FS_ReadFile + cmp r0, #0 + bge _021DB946 + bl ErrorHandling +_021DB946: + add r0, sp, #4 + add r1, sp, #0 + mov r2, #2 + bl FS_ReadFile + cmp r0, #0 + bge _021DB958 + bl ErrorHandling +_021DB958: + add r0, sp, #0 + ldrh r1, [r0, #2] + ldrh r0, [r0] + lsl r6, r1, #2 + lsl r4, r0, #2 + mov r0, #4 + add r1, r6, #0 + bl AllocFromHeap + str r0, [r5] + cmp r0, #0 + bne _021DB974 + bl ErrorHandling +_021DB974: + mov r0, #4 + add r1, r4, #0 + bl AllocFromHeap + str r0, [r5, #4] + cmp r0, #0 + bne _021DB986 + bl ErrorHandling +_021DB986: + ldr r1, [r5] + add r0, sp, #4 + add r2, r6, #0 + bl FS_ReadFile + cmp r0, #0 + bge _021DB998 + bl ErrorHandling +_021DB998: + ldr r1, [r5, #4] + add r0, sp, #4 + add r2, r4, #0 + bl FS_ReadFile + cmp r0, #0 + bge _021DB9AA + bl ErrorHandling +_021DB9AA: + add r0, sp, #4 + bl FS_CloseFile + add sp, #0x4c + pop {r3, r4, r5, r6, pc} +_021DB9B4: + bl ErrorHandling + add sp, #0x4c + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021DB9BC +MOD05_021DB9BC: ; 0x021DB9BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FreeToHeap + ldr r0, [r4] + bl FreeToHeap + add r0, r4, #0 + bl FreeToHeap + pop {r4, pc} + + thumb_func_start MOD05_021DB9D4 +MOD05_021DB9D4: ; 0x021DB9D4 + ldr r1, [r1] + lsl r0, r0, #2 + ldrh r0, [r1, r0] + strh r0, [r2] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021DB9E0 +MOD05_021DB9E0: ; 0x021DB9E0 + push {r3, r4} + lsl r4, r0, #2 + ldr r0, [r1] + ldrh r0, [r0, r4] + strh r0, [r2] + ldr r0, [r1] + add r0, r0, r4 + ldrh r0, [r0, #2] + strh r0, [r3] + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021DB9F8 +MOD05_021DB9F8: ; 0x021DB9F8 + ldr r1, [r1, #4] + lsl r0, r0, #2 + add r0, r1, r0 + bx lr diff --git a/arm9/modules/05/asm/mod05_021DBA00.s b/arm9/modules/05/asm/mod05_021DBA00.s new file mode 100644 index 00000000..22e64df5 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021DBA00.s @@ -0,0 +1,124 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021DBA00 +MOD05_021DBA00: ; 0x021DBA00 + push {r4, lr} + mov r0, #4 + mov r1, #0x38 + bl AllocFromHeap + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + mov r2, #0x38 + bl MIi_CpuClear32 + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBA1C +MOD05_021DBA1C: ; 0x021DBA1C + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + mov r0, #4 + bl FUN_02016A8C + mov r0, #0 + str r0, [r4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBA30 +MOD05_021DBA30: ; 0x021DBA30 + ldr r0, [r0] + bx lr + + thumb_func_start MOD05_021DBA34 +MOD05_021DBA34: ; 0x021DBA34 + ldr r0, [r0, #8] + bx lr + + thumb_func_start MOD05_021DBA38 +MOD05_021DBA38: ; 0x021DBA38 + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start MOD05_021DBA3C +MOD05_021DBA3C: ; 0x021DBA3C + ldrh r0, [r0, #0x10] + bx lr + + thumb_func_start MOD05_021DBA40 +MOD05_021DBA40: ; 0x021DBA40 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + tst r0, r1 + beq _021DBA4C + str r2, [r4] +_021DBA4C: + mov r0, #2 + tst r0, r1 + beq _021DBA54 + str r3, [r4, #4] +_021DBA54: + mov r0, #4 + tst r0, r1 + beq _021DBA5E + ldr r0, [sp, #8] + str r0, [r4, #8] +_021DBA5E: + mov r0, #8 + tst r0, r1 + beq _021DBA68 + ldr r0, [sp, #0xc] + str r0, [r4, #0xc] +_021DBA68: + ldr r0, [r4] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + bl G3X_SetFog + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBA78 +MOD05_021DBA78: ; 0x021DBA78 + push {r3, r4} + mov r4, #0x10 + tst r4, r1 + beq _021DBA82 + strh r2, [r0, #0x10] +_021DBA82: + mov r2, #0x20 + tst r1, r2 + beq _021DBA8A + str r3, [r0, #0x14] +_021DBA8A: + ldrh r1, [r0, #0x10] + ldr r0, [r0, #0x14] + lsl r0, r0, #0x10 + orr r1, r0 + ldr r0, _021DBA9C ; =0x04000358 + str r1, [r0] + pop {r3, r4} + bx lr + nop +_021DBA9C: .word 0x04000358 + + thumb_func_start MOD05_021DBAA0 +MOD05_021DBAA0: ; 0x021DBAA0 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r4, #0 + add r1, #0x18 + mov r2, #0x20 + bl MIi_CpuCopy32 + add r4, #0x18 + add r0, r4, #0 + bl G3X_SetFogTable + pop {r4, pc} + .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021DBABC.s b/arm9/modules/05/asm/mod05_021DBABC.s new file mode 100644 index 00000000..28a15fb2 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021DBABC.s @@ -0,0 +1,400 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021DBABC +MOD05_021DBABC: ; 0x021DBABC + push {r4, lr} + mov r0, #4 + mov r1, #0x48 + bl AllocFromHeap + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + mov r2, #0x48 + bl MIi_CpuClear32 + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBAD8 +MOD05_021DBAD8: ; 0x021DBAD8 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + mov r0, #4 + bl FUN_02016A8C + mov r0, #0 + str r0, [r4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBAEC +MOD05_021DBAEC: ; 0x021DBAEC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp, #8] + add r7, r1, #0 + mov r4, #0 + add r5, r0, #0 + add r6, r0, #0 +_021DBAFA: + mov r0, #1 + lsl r0, r4 + tst r0, r7 + beq _021DBB14 + mov r1, #0 + mov r2, #2 + mov r3, #4 + ldrsh r1, [r5, r1] + ldrsh r2, [r5, r2] + ldrsh r3, [r5, r3] + add r0, r4, #0 + bl FUN_020B8418 +_021DBB14: + add r1, r4, #4 + mov r0, #1 + lsl r0, r1 + tst r0, r7 + beq _021DBB26 + ldrh r1, [r6, #0x18] + add r0, r4, #0 + bl FUN_020B8404 +_021DBB26: + add r4, r4, #1 + add r5, r5, #6 + add r6, r6, #2 + cmp r4, #4 + blt _021DBAFA + mov r0, #3 + lsl r0, r0, #8 + tst r0, r7 + beq _021DBB48 + ldr r0, [sp, #8] + ldr r1, [sp, #8] + ldr r2, [sp, #8] + ldrh r0, [r0, #0x20] + ldrh r1, [r1, #0x22] + ldr r2, [r2, #0x28] + bl FUN_020B83E0 +_021DBB48: + mov r0, #3 + lsl r0, r0, #0xa + tst r0, r7 + beq _021DBB60 + ldr r0, [sp, #8] + ldr r1, [sp, #8] + ldr r2, [sp, #8] + ldrh r0, [r0, #0x24] + ldrh r1, [r1, #0x26] + ldr r2, [r2, #0x2c] + bl FUN_020B83BC +_021DBB60: + mov r0, #1 + lsl r0, r0, #0xc + cmp r7, r0 + blt _021DBB88 + ldr r0, [sp, #8] + ldr r1, [sp, #8] + ldr r0, [r0, #0x40] + ldr r2, [sp, #8] + str r0, [sp] + ldr r0, [sp, #8] + ldr r3, [sp, #8] + ldr r0, [r0, #0x44] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r1, #0x34] + ldr r0, [r0, #0x30] + ldr r2, [r2, #0x38] + ldr r3, [r3, #0x3c] + bl FUN_020B8390 +_021DBB88: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021DBB8C +MOD05_021DBB8C: ; 0x021DBB8C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #1 + add r4, r2, #0 + lsl r0, r0, #8 + add r6, r1, #0 + tst r0, r4 + beq _021DBBA4 + ldrh r1, [r5, #0x20] + add r0, r6, #0 + bl FUN_020BBC34 +_021DBBA4: + mov r0, #2 + lsl r0, r0, #8 + tst r0, r4 + beq _021DBBB4 + ldrh r1, [r5, #0x22] + add r0, r6, #0 + bl FUN_020BBBF4 +_021DBBB4: + mov r0, #1 + lsl r0, r0, #0xa + tst r0, r4 + beq _021DBBC4 + ldrh r1, [r5, #0x24] + add r0, r6, #0 + bl FUN_020BBBB4 +_021DBBC4: + mov r0, #2 + lsl r0, r0, #0xa + tst r0, r4 + beq _021DBBD4 + ldrh r1, [r5, #0x26] + add r0, r6, #0 + bl FUN_020BBB74 +_021DBBD4: + mov r0, #1 + lsl r0, r0, #0xc + tst r0, r4 + beq _021DBBE4 + ldr r1, [r5, #0x30] + add r0, r6, #0 + bl FUN_020BBB34 +_021DBBE4: + mov r0, #2 + lsl r0, r0, #0xc + tst r0, r4 + beq _021DBBF4 + ldr r1, [r5, #0x34] + add r0, r6, #0 + bl FUN_020BBAF4 +_021DBBF4: + mov r0, #1 + lsl r0, r0, #0xe + tst r0, r4 + beq _021DBC04 + ldr r1, [r5, #0x38] + add r0, r6, #0 + bl FUN_020BBAB4 +_021DBC04: + mov r0, #2 + lsl r0, r0, #0xe + tst r0, r4 + beq _021DBC14 + ldr r1, [r5, #0x3c] + add r0, r6, #0 + bl FUN_020BBA74 +_021DBC14: + mov r0, #1 + lsl r0, r0, #0x10 + tst r0, r4 + beq _021DBC24 + ldr r1, [r5, #0x40] + add r0, r6, #0 + bl FUN_020BBA34 +_021DBC24: + mov r1, #2 + lsl r1, r1, #0x10 + add r0, r4, #0 + tst r0, r1 + beq _021DBC3A + ldr r2, [r5, #0x44] + lsr r1, r1, #2 + add r0, r6, #0 + and r1, r2 + bl FUN_020BB9F4 +_021DBC3A: + mov r1, #1 + lsl r1, r1, #0x12 + add r0, r4, #0 + tst r0, r1 + beq _021DBC50 + ldr r2, [r5, #0x44] + lsr r1, r1, #4 + add r0, r6, #0 + and r1, r2 + bl FUN_020BB9B4 +_021DBC50: + mov r1, #2 + lsl r1, r1, #0x12 + add r0, r4, #0 + tst r0, r1 + beq _021DBC66 + ldr r2, [r5, #0x44] + lsr r1, r1, #6 + add r0, r6, #0 + and r1, r2 + bl FUN_020BB974 +_021DBC66: + mov r1, #1 + lsl r1, r1, #0x14 + add r0, r4, #0 + tst r0, r1 + beq _021DBC7C + ldr r2, [r5, #0x44] + lsr r1, r1, #8 + add r0, r6, #0 + and r1, r2 + bl FUN_020BB934 +_021DBC7C: + mov r1, #2 + lsl r1, r1, #0x14 + add r0, r4, #0 + tst r0, r1 + beq _021DBC92 + ldr r2, [r5, #0x44] + lsr r1, r1, #0xa + add r0, r6, #0 + and r1, r2 + bl FUN_020BB8F4 +_021DBC92: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021DBC94 +MOD05_021DBC94: ; 0x021DBC94 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #6 + add r4, r1, #0 + mul r4, r0 + strh r2, [r5, r4] + add r2, r5, #2 + strh r3, [r2, r4] + add r6, sp, #0 + mov r0, #0x10 + ldrsh r0, [r6, r0] + add r3, r5, #4 + strh r0, [r3, r4] + add r0, r1, #0 + ldrsh r1, [r5, r4] + ldrsh r2, [r2, r4] + ldrsh r3, [r3, r4] + bl FUN_020B8418 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021DBCBC +MOD05_021DBCBC: ; 0x021DBCBC + push {r4, lr} + add r4, r0, #0 + add r4, #0x18 + lsl r3, r1, #1 + strh r2, [r4, r3] + add r0, r1, #0 + ldrh r1, [r4, r3] + bl FUN_020B8404 + pop {r4, pc} + + thumb_func_start MOD05_021DBCD0 +MOD05_021DBCD0: ; 0x021DBCD0 + push {r3, lr} + strh r1, [r0, #0x20] + str r2, [r0, #0x28] + cmp r3, #1 + bne _021DBCE2 + mov r1, #1 + lsl r1, r1, #8 + bl MOD05_021DBAEC +_021DBCE2: + pop {r3, pc} + + thumb_func_start MOD05_021DBCE4 +MOD05_021DBCE4: ; 0x021DBCE4 + push {r3, lr} + strh r1, [r0, #0x22] + cmp r2, #1 + bne _021DBCF4 + mov r1, #2 + lsl r1, r1, #8 + bl MOD05_021DBAEC +_021DBCF4: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBCF8 +MOD05_021DBCF8: ; 0x021DBCF8 + push {r3, lr} + strh r1, [r0, #0x24] + str r2, [r0, #0x2c] + cmp r3, #1 + bne _021DBD0A + mov r1, #1 + lsl r1, r1, #0xa + bl MOD05_021DBAEC +_021DBD0A: + pop {r3, pc} + + thumb_func_start MOD05_021DBD0C +MOD05_021DBD0C: ; 0x021DBD0C + push {r3, lr} + strh r1, [r0, #0x26] + cmp r2, #1 + bne _021DBD1C + mov r1, #2 + lsl r1, r1, #0xa + bl MOD05_021DBAEC +_021DBD1C: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBD20 +MOD05_021DBD20: ; 0x021DBD20 + push {r3, lr} + str r1, [r0, #0x34] + cmp r2, #1 + bne _021DBD30 + mov r1, #2 + lsl r1, r1, #0xc + bl MOD05_021DBAEC +_021DBD30: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBD34 +MOD05_021DBD34: ; 0x021DBD34 + push {r3, lr} + str r1, [r0, #0x38] + cmp r2, #1 + bne _021DBD44 + mov r1, #1 + lsl r1, r1, #0xe + bl MOD05_021DBAEC +_021DBD44: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBD48 +MOD05_021DBD48: ; 0x021DBD48 + push {r3, lr} + str r1, [r0, #0x40] + cmp r2, #1 + bne _021DBD58 + mov r1, #1 + lsl r1, r1, #0x10 + bl MOD05_021DBAEC +_021DBD58: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021DBD5C +MOD05_021DBD5C: ; 0x021DBD5C + push {r3, lr} + cmp r2, #1 + ldr r2, [r0, #0x44] + bne _021DBD6A + tst r2, r1 + beq _021DBD6E + pop {r3, pc} +_021DBD6A: + tst r2, r1 + beq _021DBD80 +_021DBD6E: + ldr r2, [r0, #0x44] + eor r1, r2 + str r1, [r0, #0x44] + cmp r3, #1 + bne _021DBD80 + mov r1, #1 + lsl r1, r1, #0xc + bl MOD05_021DBAEC +_021DBD80: + pop {r3, pc} + .balign 4, 0 diff --git a/arm9/modules/05/asm/mod05_021DBD84.s b/arm9/modules/05/asm/mod05_021DBD84.s new file mode 100644 index 00000000..7c107314 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021DBD84.s @@ -0,0 +1,95 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021DBD84 +MOD05_021DBD84: ; 0x021DBD84 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0x18 + ldr r1, _021DBDE8 ; =UNK05_021F6608 + mul r0, r2 + add r6, r3, #0 + add r4, r1, r0 + cmp r2, #0x10 + blo _021DBD9E + bl ErrorHandling +_021DBD9E: + mov r0, #4 + bl FUN_0201EB64 + str r0, [r5, #0x20] + ldrb r0, [r4, #0xc] + add r2, r4, #4 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x20] + str r0, [sp, #8] + ldrh r3, [r4, #0xe] + ldr r1, [r4] + add r0, r7, #0 + bl FUN_0201ECA8 + ldr r0, [r5, #0x20] + bl FUN_0201EB8C + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + ldr r2, [r5, #0x20] + bl FUN_0201EC94 + cmp r6, #0 + beq _021DBDE2 + ldr r0, [r5, #0x20] + mov r1, #6 + str r0, [sp] + mov r0, #7 + mov r2, #2 + mov r3, #4 + bl FUN_0201EABC +_021DBDE2: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021DBDE8: .word UNK05_021F6608 + + thumb_func_start MOD05_021DBDEC +MOD05_021DBDEC: ; 0x021DBDEC + push {r4, lr} + add r4, r0, #0 + bl FUN_0201EB98 + ldr r0, [r4, #0x20] + bl FUN_0201EB48 + ldr r0, [r4, #0x20] + bl FUN_0201EB70 + pop {r4, pc} + .balign 4, 0 + + .section .rodata + + .global UNK05_021F6608 +UNK05_021F6608: ; 0x021F6608 + .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05 + .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x62, 0xCF, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 + .byte 0x4C, 0x37, 0x20, 0x00, 0x22, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x07 + .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 + .byte 0x9B, 0xB8, 0x61, 0x00, 0x62, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x81, 0x02 + .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x70, 0x6C, 0x00, 0x05, 0xC8, 0x13, 0x00, 0x03, 0xD6, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00 + .byte 0xDF, 0x28, 0x36, 0x00, 0x03, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x04 + .byte 0x00, 0x30, 0x07, 0x00, 0x00, 0x50, 0x4C, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x03, 0xD6, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x90, 0x09, 0x00, 0x00, 0x70, 0x40, 0x00 + .byte 0xC1, 0x6E, 0x29, 0x00, 0xE3, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07 + .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0xA0, 0x40, 0x00, 0xAC, 0x59, 0x16, 0x00, 0x23, 0xE3, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x0A, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 + .byte 0xB1, 0x25, 0x4B, 0x00, 0xC3, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x03 + .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x20, 0x6D, 0x00, 0x55, 0x3D, 0x2A, 0x00, 0xE3, 0xD6, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x70, 0x46, 0x00 + .byte 0x3F, 0xE9, 0x23, 0x00, 0x03, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x06 + .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00, 0x4C, 0x37, 0x20, 0x00, 0x03, 0xDE, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 + .byte 0x65, 0x97, 0x0A, 0x00, 0x44, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15 + .byte 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0xDF, 0xDE, 0x28, 0x00, 0x22, 0xD9, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x05, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 diff --git a/arm9/modules/05/asm/mod05_021DBE04.s b/arm9/modules/05/asm/mod05_021DBE04.s new file mode 100644 index 00000000..4b4b5177 --- /dev/null +++ b/arm9/modules/05/asm/mod05_021DBE04.s @@ -0,0 +1,176 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021DBE04 +MOD05_021DBE04: ; 0x021DBE04 + push {r4, lr} + ldr r4, [r0, #0x18] + cmp r4, #0 + bne _021DBE10 + bl ErrorHandling +_021DBE10: + cmp r4, #5 + blt _021DBE18 + bl ErrorHandling +_021DBE18: + sub r0, r4, #1 + pop {r4, pc} + + thumb_func_start MOD05_021DBE1C +MOD05_021DBE1C: ; 0x021DBE1C + push {r4, lr} + add r4, r0, #0 + bl MOD05_021DBE04 + add r1, r0, #0 + lsl r2, r1, #4 + ldr r1, _021DBE34 ; =UNK05_021F6788 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_021DBE34: .word UNK05_021F6788 + + thumb_func_start MOD05_021DBE38 +MOD05_021DBE38: ; 0x021DBE38 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021DBE04 + lsl r1, r0, #4 + ldr r0, _021DBE54 ; =UNK05_021F678C + ldr r1, [r0, r1] + cmp r1, #0 + bne _021DBE4E + mov r0, #1 + pop {r4, pc} +_021DBE4E: + add r0, r4, #0 + blx r1 + pop {r4, pc} + .balign 4, 0 +_021DBE54: .word UNK05_021F678C + + thumb_func_start MOD05_021DBE58 +MOD05_021DBE58: ; 0x021DBE58 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021DBE04 + add r1, r0, #0 + lsl r2, r1, #4 + ldr r1, _021DBE70 ; =UNK05_021F6790 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_021DBE70: .word UNK05_021F6790 + + thumb_func_start MOD05_021DBE74 +MOD05_021DBE74: ; 0x021DBE74 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021DBE04 + add r1, r0, #0 + lsl r2, r1, #4 + ldr r1, _021DBE8C ; =UNK05_021F6794 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_021DBE8C: .word UNK05_021F6794 + + thumb_func_start MOD05_021DBE90 +MOD05_021DBE90: ; 0x021DBE90 + ldr r3, _021DBE94 ; =MOD05_021EFAAC + bx r3 + .balign 4, 0 +_021DBE94: .word MOD05_021EFAAC + + thumb_func_start MOD05_021DBE98 +MOD05_021DBE98: ; 0x021DBE98 + ldr r3, _021DBE9C ; =FUN_02050E2C + bx r3 + .balign 4, 0 +_021DBE9C: .word FUN_02050E2C + + thumb_func_start MOD05_021DBEA0 +MOD05_021DBEA0: ; 0x021DBEA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DBEB8 ; =SDK_OVERLAY_MODULE_51_ID + mov r1, #2 + bl HandleLoadOverlay + add r0, r4, #0 + bl MOD51_02254A68 + add r4, #0x80 + str r0, [r4] + pop {r4, pc} + .balign 4, 0 +_021DBEB8: .word SDK_OVERLAY_MODULE_51_ID + + thumb_func_start MOD05_021DBEBC +MOD05_021DBEBC: ; 0x021DBEBC + ldr r3, _021DBEC0 ; =MOD05_021EFB14 + bx r3 + .balign 4, 0 +_021DBEC0: .word MOD05_021EFB14 + + thumb_func_start MOD05_021DBEC4 +MOD05_021DBEC4: ; 0x021DBEC4 + ldr r3, _021DBEC8 ; =FUN_02050E10 + bx r3 + .balign 4, 0 +_021DBEC8: .word FUN_02050E10 + + thumb_func_start MOD05_021DBECC +MOD05_021DBECC: ; 0x021DBECC + push {r3, lr} + add r0, #0x80 + ldr r0, [r0] + bl MOD51_02254AB8 + ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID + bl UnloadOverlayByID + pop {r3, pc} + nop +_021DBEE0: .word SDK_OVERLAY_MODULE_51_ID + + thumb_func_start MOD05_021DBEE4 +MOD05_021DBEE4: ; 0x021DBEE4 + ldr r3, _021DBEE8 ; =MOD05_021EFB50 + bx r3 + .balign 4, 0 +_021DBEE8: .word MOD05_021EFB50 + + thumb_func_start MOD05_021DBEEC +MOD05_021DBEEC: ; 0x021DBEEC + mov r0, #1 + bx lr + + thumb_func_start MOD05_021DBEF0 +MOD05_021DBEF0: ; 0x021DBEF0 + mov r0, #1 + bx lr + + .section .rodata + + .global UNK05_021F6788 +UNK05_021F6788: ; 0x021F6788 + .word MOD05_021DBE90 + + .global UNK05_021F678C +UNK05_021F678C: ; 0x021F678C + .word 0x00000000 + + .global UNK05_021F6790 +UNK05_021F6790: ; 0x021F6790 + .word MOD05_021DBEBC + + .global UNK05_021F6794 +UNK05_021F6794: ; 0x021F6794 + .word MOD05_021DBEE4, MOD05_021DBE98, 0x00000000, MOD05_021DBEC4 + .word MOD05_021DBEF0, MOD05_021DBEA0, 0x00000000, MOD05_021DBECC + .word MOD05_021DBEEC, MOD05_021EFBB4, 0x00000000, MOD05_021EFBCC + .word MOD05_021EFBD8 diff --git a/arm9/modules/05/asm/mod05_021DBEF4.s b/arm9/modules/05/asm/mod05_021DBEF4.s new file mode 100644 index 00000000..1d56d13e --- /dev/null +++ b/arm9/modules/05/asm/mod05_021DBEF4.s @@ -0,0 +1,323 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021DBEF4 +MOD05_021DBEF4: ; 0x021DBEF4 + push {r3, lr} + mov r1, #0x42 + mov r0, #4 + lsl r1, r1, #2 + bl AllocFromHeap + cmp r0, #0 + beq _021DBF1E + mov r2, #0 + add r3, r0, #0 + add r1, r2, #0 +_021DBF0A: + strh r1, [r3, #0x14] + strh r1, [r3, #0x16] + str r1, [r3] + str r1, [r3, #8] + str r1, [r3, #0x10] + str r1, [r3, #0xc] + add r2, r2, #1 + add r3, #0x18 + cmp r2, #0xb + blt _021DBF0A +_021DBF1E: + pop {r3, pc} + + thumb_func_start MOD05_021DBF20 +MOD05_021DBF20: ; 0x021DBF20 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + ldr r5, _021DBF4C ; =UNK05_021FD290 + add r7, r0, #0 + str r1, [sp] + add r4, r6, #0 +_021DBF2C: + ldr r1, [sp] + ldr r2, [r5] + add r0, r7, #0 + add r3, r4, #0 + bl MOD05_021DBF50 + cmp r0, #0 + blt _021DBF3E + add r6, r6, #1 +_021DBF3E: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xb + blt _021DBF2C + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021DBF4C: .word UNK05_021FD290 + + thumb_func_start MOD05_021DBF50 +MOD05_021DBF50: ; 0x021DBF50 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r6, r0, #0 + add r7, r1, #0 + str r2, [sp] + str r3, [sp, #4] + cmp r6, #0 + bne _021DBF68 + mov r0, #0 + add sp, #0x34 + mvn r0, r0 + pop {r4, r5, r6, r7, pc} +_021DBF68: + mov r4, #0 + add r1, r6, #0 +_021DBF6C: + ldr r0, [r1, #0xc] + cmp r0, #0 + beq _021DBF7A + add r4, r4, #1 + add r1, #0x18 + cmp r4, #0xb + blt _021DBF6C +_021DBF7A: + cmp r4, #0xb + beq _021DBF82 + cmp r7, #0 + bne _021DBF8A +_021DBF82: + mov r0, #0 + add sp, #0x34 + mvn r0, r0 + pop {r4, r5, r6, r7, pc} +_021DBF8A: + mov r0, #0x18 + add r5, r4, #0 + mul r5, r0 + ldr r1, [sp] + add r0, r7, #0 + bl FUN_0201C578 + str r0, [r6, r5] + ldr r0, [r6, r5] + cmp r0, #0 + bne _021DBFA8 + mov r0, #0 + add sp, #0x34 + mvn r0, r0 + pop {r4, r5, r6, r7, pc} +_021DBFA8: + ldr r1, [sp] + add r0, r7, #0 + bl FUN_0201C5FC + add r1, r6, r5 + str r0, [r1, #4] + ldr r1, _021DBFF4 ; =UNK05_021FD2BC + ldr r2, [sp, #4] + add r0, sp, #0xc + bl sprintf + add r7, r6, #0 + add r7, #0x10 + mov r0, #4 + add r1, sp, #0xc + bl FUN_020161A4 + str r0, [r7, r5] + add r0, r6, #0 + str r0, [sp, #8] + add r0, #0xc + str r0, [sp, #8] + ldr r0, [r7, r5] + mov r1, #4 + bl FUN_02016324 + ldr r1, [sp, #8] + str r0, [r1, r5] + add r0, r1, #0 + ldr r0, [r0, r5] + bl FUN_020BC0FC + add r1, r6, r5 + str r0, [r1, #8] + add r0, r4, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021DBFF4: .word UNK05_021FD2BC + + thumb_func_start MOD05_021DBFF8 +MOD05_021DBFF8: ; 0x021DBFF8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + beq _021DC064 + mov r4, #0 + ldr r7, _021DC068 ; =0x0000FFFF + add r6, r4, #0 +_021DC004: + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _021DC05C + ldr r1, [r5, #0x10] + cmp r1, #0 + beq _021DC05C + ldrh r0, [r5, #0x14] + lsl r0, r0, #2 + add r0, r1, r0 + ldrh r1, [r0, #0x22] + ldrh r0, [r5, #0x16] + cmp r1, r0 + bhi _021DC058 + strh r6, [r5, #0x16] + ldrh r0, [r5, #0x14] + add r0, r0, #1 + strh r0, [r5, #0x14] + ldrh r0, [r5, #0x14] + ldr r1, [r5, #0x10] + lsl r0, r0, #2 + add r0, r1, r0 + ldrh r0, [r0, #0x20] + cmp r0, r7 + bne _021DC036 + strh r6, [r5, #0x14] +_021DC036: + ldrh r2, [r5, #0x14] + ldr r1, [r5, #0x10] + ldr r0, [r5, #8] + lsl r2, r2, #2 + add r1, r1, r2 + ldrh r1, [r1, #0x20] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201C50C + add r2, r0, #0 + ldr r1, [r5] + ldr r3, [r5, #4] + mov r0, #0 + bl FUN_0201C2C8 + b _021DC05C +_021DC058: + add r0, r0, #1 + strh r0, [r5, #0x16] +_021DC05C: + add r4, r4, #1 + add r5, #0x18 + cmp r4, #0xb + blt _021DC004 +_021DC064: + pop {r3, r4, r5, r6, r7, pc} + nop +_021DC068: .word 0x0000FFFF + + thumb_func_start MOD05_021DC06C +MOD05_021DC06C: ; 0x021DC06C + push {r4, r5, r6, lr} + add r5, r0, #0 + beq _021DC092 + add r6, r5, #0 + mov r0, #0x18 + add r4, r1, #0 + mul r4, r0 + add r6, #0x10 + ldr r0, [r6, r4] + cmp r0, #0 + beq _021DC08A + bl FreeToHeap + mov r0, #0 + str r0, [r6, r4] +_021DC08A: + mov r1, #0 + add r0, r5, r4 + strh r1, [r0, #0x14] + strh r1, [r0, #0x16] +_021DC092: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021DC094 +MOD05_021DC094: ; 0x021DC094 + push {r3, r4, r5, lr} + add r5, r0, #0 + beq _021DC0AA + mov r4, #0 +_021DC09C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021DC06C + add r4, r4, #1 + cmp r4, #0xb + blt _021DC09C +_021DC0AA: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021DC0AC +MOD05_021DC0AC: ; 0x021DC0AC + push {r3, lr} + cmp r0, #0 + beq _021DC0B6 + bl FreeToHeap +_021DC0B6: + pop {r3, pc} + + .section .data + + .balign 4 + .global UNK05_021FD228 +UNK05_021FD228: ; 0x021FD228 + .asciz "sea" + + .balign 4 + .global UNK05_021FD22C +UNK05_021FD22C: ; 0x021FD22C + .asciz "rhana" + + .balign 4 + .global UNK05_021FD234 +UNK05_021FD234: ; 0x021FD234 + .asciz "hamabe" + + .balign 4 + .global UNK05_021FD23C +UNK05_021FD23C: ; 0x021FD23C + .asciz "asasea" + + .balign 4 + .global UNK05_021FD244 +UNK05_021FD244: ; 0x021FD244 + .asciz "lakep.1" + + .balign 4 + .global UNK05_021FD24C +UNK05_021FD24C: ; 0x021FD24C + .asciz "dun_sea" + + .balign 4 + .global UNK05_021FD254 +UNK05_021FD254: ; 0x021FD254 + .asciz "t3_fl_p.1" + + .balign 4 + .global UNK05_021FD260 +UNK05_021FD260: ; 0x021FD260 + .asciz "t3_fl_r.1" + + .balign 4 + .global UNK05_021FD26C +UNK05_021FD26C: ; 0x021FD26C + .asciz "t3_fl_y.1" + + .balign 4 + .global UNK05_021FD278 +UNK05_021FD278: ; 0x021FD278 + .asciz "asahamabe" + + .balign 4 + .global UNK05_021FD284 +UNK05_021FD284: ; 0x021FD284 + .asciz "t3_fl_b.1" + + .balign 4 + .global UNK05_021FD290 +UNK05_021FD290: ; 0x021FD290 + .word UNK05_021FD228, UNK05_021FD22C, UNK05_021FD23C, UNK05_021FD234 + .word UNK05_021FD278, UNK05_021FD284, UNK05_021FD254, UNK05_021FD260 + .word UNK05_021FD26C, UNK05_021FD24C, UNK05_021FD244 + + .global UNK05_021FD2BC +UNK05_021FD2BC: ; 0x021FD2BC + .asciz "data/fld_anime%d.bin" 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 62ffaa6d..3aba12d9 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -3,16738 +3,6 @@ .section .text .balign 4, 0 - thumb_func_start MOD05_021D9320 -MOD05_021D9320: ; 0x021D9320 - push {r4, r5, r6, r7, lr} - sub sp, #0x2c - add r5, r0, #0 - str r1, [sp, #0x10] - add r4, r3, #0 - add r0, r2, #0 - add r1, r5, #4 - add r2, r4, #0 - bl FUN_02008C9C - str r0, [r5] - ldr r1, _021D94B0 ; =0x00000162 - ldr r0, [sp, #0x10] - strh r4, [r5, r1] - ldr r0, [r0, #0x10] - cmp r0, #0 - bne _021D9346 - mov r2, #4 - b _021D9348 -_021D9346: - mov r2, #6 -_021D9348: - sub r0, r1, #2 - strh r2, [r5, r0] - bl FUN_0200965C - mov r1, #0x16 - lsl r1, r1, #4 - ldrh r2, [r5, r1] - add r3, r0, #0 - add r0, r4, #0 - add r1, r2, #0 - mul r1, r3 - bl AllocFromHeap - add r7, r0, #0 - mov r0, #0 - str r0, [sp, #0x1c] - mov r0, #0x16 - lsl r0, r0, #4 - ldrh r0, [r5, r0] - cmp r0, #0 - bls _021D93AA - ldr r6, [sp, #0x10] -_021D9374: - ldr r1, [sp, #0x1c] - add r0, r7, #0 - bl FUN_02009660 - str r0, [sp, #0x20] - ldr r1, [r6] - add r0, r4, #0 - bl FUN_020161A4 - ldr r1, [sp, #0x20] - str r0, [sp, #0x24] - add r2, r4, #0 - bl FUN_02009668 - ldr r0, [sp, #0x24] - bl FreeToHeap - ldr r0, [sp, #0x1c] - add r6, r6, #4 - add r0, r0, #1 - str r0, [sp, #0x1c] - mov r0, #0x16 - lsl r0, r0, #4 - ldrh r0, [r5, r0] - ldr r1, [sp, #0x1c] - cmp r1, r0 - blo _021D9374 -_021D93AA: - mov r6, #0 - cmp r0, #0 - bls _021D93E0 - str r5, [sp, #0x18] -_021D93B2: - add r0, r7, #0 - add r1, r6, #0 - bl FUN_02009660 - bl FUN_020096CC - add r1, r6, #0 - add r2, r4, #0 - bl FUN_02008DEC - mov r1, #0x13 - ldr r2, [sp, #0x18] - lsl r1, r1, #4 - str r0, [r2, r1] - add r0, r2, #0 - add r0, r0, #4 - str r0, [sp, #0x18] - add r0, r1, #0 - add r0, #0x30 - ldrh r0, [r5, r0] - add r6, r6, #1 - cmp r6, r0 - blo _021D93B2 -_021D93E0: - mov r1, #0 - str r1, [sp, #0x14] - cmp r0, #0 - bls _021D942C - add r6, r5, #0 -_021D93EA: - ldr r1, [sp, #0x14] - add r0, r7, #0 - bl FUN_02009660 - str r0, [sp, #0x28] - bl FUN_020096CC - add r1, r4, #0 - bl FUN_02009424 - mov r1, #0x52 - lsl r1, r1, #2 - str r0, [r6, r1] - add r0, r1, #0 - mov r2, #0x52 - sub r0, #0x18 - lsl r2, r2, #2 - ldr r0, [r6, r0] - ldr r1, [sp, #0x28] - ldr r2, [r6, r2] - add r3, r4, #0 - bl FUN_020093A8 - ldr r0, [sp, #0x14] - add r6, r6, #4 - add r0, r0, #1 - str r0, [sp, #0x14] - mov r0, #0x16 - lsl r0, r0, #4 - ldrh r0, [r5, r0] - ldr r1, [sp, #0x14] - cmp r1, r0 - blo _021D93EA -_021D942C: - mov r6, #0 - cmp r0, #0 - bls _021D944A -_021D9432: - add r0, r7, #0 - add r1, r6, #0 - bl FUN_02009660 - bl FUN_020096B4 - mov r0, #0x16 - lsl r0, r0, #4 - ldrh r0, [r5, r0] - add r6, r6, #1 - cmp r6, r0 - blo _021D9432 -_021D944A: - add r0, r7, #0 - bl FreeToHeap - mov r0, #0x52 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02009B44 - mov r0, #0x53 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02009DAC - ldr r1, [sp, #0x10] - add r0, r4, #0 - ldr r1, [r1, #0x18] - bl FUN_020161A4 - mov r3, #0x4e - lsl r3, r3, #2 - ldr r1, [r5, r3] - add r2, r3, #0 - str r1, [sp] - add r1, r3, #4 - ldr r1, [r5, r1] - sub r2, #8 - str r1, [sp, #4] - add r1, r3, #0 - add r1, #8 - ldr r1, [r5, r1] - add r6, r0, #0 - str r1, [sp, #8] - add r1, r3, #0 - add r1, #0xc - ldr r1, [r5, r1] - sub r3, r3, #4 - str r1, [sp, #0xc] - ldr r2, [r5, r2] - ldr r3, [r5, r3] - add r1, r4, #0 - bl FUN_02008BE0 - mov r1, #0x4b - lsl r1, r1, #2 - str r0, [r5, r1] - add r0, r6, #0 - bl FreeToHeap - add sp, #0x2c - pop {r4, r5, r6, r7, pc} - nop -_021D94B0: .word 0x00000162 - - thumb_func_start MOD05_021D94B4 -MOD05_021D94B4: ; 0x021D94B4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5] - bl FUN_0201FD58 - mov r0, #0x4b - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02008C80 - mov r0, #0x52 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02009C30 - mov r0, #0x53 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02009E28 - mov r0, #0x16 - lsl r0, r0, #4 - ldrh r0, [r5, r0] - mov r6, #0 - cmp r0, #0 - bls _021D950C - mov r7, #0x16 - add r4, r5, #0 - lsl r7, r7, #4 -_021D94EE: - mov r0, #0x52 - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl FUN_02009448 - mov r0, #0x13 - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl FUN_02008E2C - ldrh r0, [r5, r7] - add r6, r6, #1 - add r4, r4, #4 - cmp r6, r0 - blo _021D94EE -_021D950C: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021D9510 -MOD05_021D9510: ; 0x021D9510 - push {r3, r4, r5, r6, lr} - sub sp, #0x3c - add r2, r0, #0 - add r4, r1, #0 - mov r0, #4 - ldrsh r0, [r4, r0] - mov r3, #0x4b - lsl r3, r3, #2 - lsl r0, r0, #0xc - str r0, [sp] - mov r0, #6 - ldrsh r0, [r4, r0] - add r6, sp, #0 - lsl r0, r0, #0xc - str r0, [sp, #4] - mov r0, #8 - ldrsh r0, [r4, r0] - lsl r0, r0, #0xc - str r0, [sp, #8] - ldr r0, [r2] - str r0, [sp, #0xc] - ldr r0, [r2, r3] - ldr r1, [r4] - ldr r5, [r0] - mov r0, #0x24 - mul r0, r1 - add r0, r5, r0 - str r0, [sp, #0x10] - ldmia r6!, {r0, r1} - add r5, sp, #0x14 - stmia r5!, {r0, r1} - ldr r0, [r6] - ldr r6, _021D9598 ; =UNK05_021F64D8 - str r0, [r5] - ldmia r6!, {r0, r1} - add r5, sp, #0x20 - stmia r5!, {r0, r1} - ldr r0, [r6] - mov r1, #0 - str r0, [r5] - add r0, sp, #0 - strh r1, [r0, #0x2c] - ldr r0, [r4, #0xc] - add r3, #0x36 - str r0, [sp, #0x30] - ldr r0, [r4, #0x14] - str r0, [sp, #0x34] - ldrh r0, [r2, r3] - str r0, [sp, #0x38] - add r0, sp, #0xc - bl FUN_0201FE94 - add r5, r0, #0 - bne _021D9580 - bl ErrorHandling -_021D9580: - ldrh r1, [r4, #0xa] - add r0, r5, #0 - bl FUN_02020130 - ldr r1, [r4, #0x10] - add r0, r5, #0 - bl FUN_0202027C - add r0, r5, #0 - add sp, #0x3c - pop {r3, r4, r5, r6, pc} - nop -_021D9598: .word UNK05_021F64D8 - - thumb_func_start MOD05_021D959C -MOD05_021D959C: ; 0x021D959C - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r0, #0 - str r1, [sp] - add r0, r2, #0 - str r3, [sp, #4] - add r1, r7, #4 - add r2, r3, #0 - bl FUN_02008C9C - str r0, [r7] - ldr r1, _021D9678 ; =0x00000162 - ldr r0, [sp, #4] - strh r0, [r7, r1] - ldr r0, [sp] - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _021D95C8 - ldr r0, [sp] - ldr r0, [r0, #0x14] - cmp r0, #0 - bne _021D95DE -_021D95C8: - mov r1, #0x16 - mov r0, #4 - lsl r1, r1, #4 - strh r0, [r7, r1] - add r0, r1, #0 - mov r2, #0 - sub r0, #0x20 - str r2, [r7, r0] - sub r1, #0x1c - str r2, [r7, r1] - b _021D95E4 -_021D95DE: - mov r2, #6 - sub r0, r1, #2 - strh r2, [r7, r0] -_021D95E4: - mov r0, #0x16 - lsl r0, r0, #4 - ldrh r1, [r7, r0] - mov r4, #0 - cmp r1, #0 - bls _021D9614 - ldr r5, [sp] - add r6, r7, #0 -_021D95F4: - ldr r0, [r5] - ldr r2, [sp, #4] - add r1, r4, #0 - bl FUN_02008DEC - mov r1, #0x13 - lsl r1, r1, #4 - str r0, [r6, r1] - add r0, r1, #0 - add r0, #0x30 - ldrh r1, [r7, r0] - add r4, r4, #1 - add r5, r5, #4 - add r6, r6, #4 - cmp r4, r1 - blo _021D95F4 -_021D9614: - mov r0, #0 - str r0, [sp, #8] - cmp r1, #0 - bls _021D9672 - mov r6, #0x52 - add r5, r7, #0 - add r4, r0, #0 - lsl r6, r6, #2 -_021D9624: - ldr r0, [sp] - ldr r0, [r0] - cmp r0, #0 - beq _021D9658 - ldr r1, [sp, #4] - bl FUN_02009424 - mov r1, #0x52 - lsl r1, r1, #2 - str r0, [r5, r1] - mov r0, #0x52 - lsl r0, r0, #2 - ldr r3, [r5, r0] - mov r1, #0 - ldr r0, [r3, #4] - cmp r0, #0 - bls _021D9658 - add r2, r1, #0 -_021D9648: - ldr r0, [r3] - add r1, r1, #1 - str r4, [r0, r2] - ldr r3, [r5, r6] - add r2, r2, #4 - ldr r0, [r3, #4] - cmp r1, r0 - blo _021D9648 -_021D9658: - ldr r0, [sp] - add r5, r5, #4 - add r0, r0, #4 - str r0, [sp] - ldr r0, [sp, #8] - add r0, r0, #1 - str r0, [sp, #8] - mov r0, #0x16 - lsl r0, r0, #4 - ldrh r1, [r7, r0] - ldr r0, [sp, #8] - cmp r0, r1 - blo _021D9624 -_021D9672: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_021D9678: .word 0x00000162 - - thumb_func_start MOD05_021D967C -MOD05_021D967C: ; 0x021D967C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r5, r0, #0 - mov r0, #0x4d - lsl r0, r0, #2 - add r4, r1, #0 - ldr r0, [r5, r0] - ldr r1, [sp, #0x30] - add r6, r2, #0 - add r7, r3, #0 - bl FUN_0200945C - cmp r0, #0 - bne _021D96A0 - bl ErrorHandling - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} -_021D96A0: - ldr r0, [sp, #0x30] - add r2, r6, #0 - str r0, [sp] - ldr r0, [sp, #0x2c] - add r3, r7, #0 - str r0, [sp, #4] - ldr r0, [sp, #0x28] - str r0, [sp, #8] - ldr r0, _021D96F0 ; =0x00000162 - ldrh r1, [r5, r0] - sub r0, #0x2e - str r1, [sp, #0xc] - ldr r0, [r5, r0] - add r1, r4, #0 - bl FUN_02008FEC - add r4, r0, #0 - beq _021D96E8 - bl FUN_02009D68 - cmp r0, #1 - beq _021D96D0 - bl ErrorHandling -_021D96D0: - mov r0, #0x53 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, r4, #0 - bl MOD05_021D9780 - ldr r1, [sp, #0x2c] - add r0, r4, #0 - bl FUN_02009E88 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} -_021D96E8: - bl ErrorHandling - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021D96F0: .word 0x00000162 - - thumb_func_start MOD05_021D96F4 -MOD05_021D96F4: ; 0x021D96F4 - push {r4, lr} - sub sp, #8 - mov r4, #2 - str r4, [sp] - ldr r4, [sp, #0x10] - str r4, [sp, #4] - bl MOD05_021D97B4 - add sp, #8 - pop {r4, pc} - - thumb_func_start MOD05_021D9708 -MOD05_021D9708: ; 0x021D9708 - push {r4, lr} - sub sp, #8 - mov r4, #3 - str r4, [sp] - ldr r4, [sp, #0x10] - str r4, [sp, #4] - bl MOD05_021D97B4 - add sp, #8 - pop {r4, pc} - - thumb_func_start MOD05_021D971C -MOD05_021D971C: ; 0x021D971C - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r5, r0, #0 - mov r0, #0x13 - lsl r0, r0, #4 - add r4, r1, #0 - ldr r0, [r5, r0] - ldr r1, [sp, #0x24] - add r6, r2, #0 - add r7, r3, #0 - bl FUN_0200945C - cmp r0, #0 - bne _021D9740 - bl ErrorHandling - add sp, #0xc - pop {r4, r5, r6, r7, pc} -_021D9740: - ldr r0, [sp, #0x24] - add r2, r6, #0 - str r0, [sp] - ldr r0, [sp, #0x20] - add r3, r7, #0 - str r0, [sp, #4] - ldr r0, _021D977C ; =0x00000162 - ldrh r1, [r5, r0] - sub r0, #0x32 - str r1, [sp, #8] - ldr r0, [r5, r0] - add r1, r4, #0 - bl FUN_02008F34 - add r4, r0, #0 - beq _021D9774 - bl FUN_02009B04 - mov r0, #0x52 - lsl r0, r0, #2 - ldr r0, [r5, r0] - add r1, r4, #0 - bl MOD05_021D9780 - add sp, #0xc - pop {r4, r5, r6, r7, pc} -_021D9774: - bl ErrorHandling - add sp, #0xc - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021D977C: .word 0x00000162 - - thumb_func_start MOD05_021D9780 -MOD05_021D9780: ; 0x021D9780 - push {r3, r4, r5, r6} - ldr r6, [r0, #4] - mov r3, #0 - cmp r6, #0 - ble _021D97AC - ldr r5, [r0] - add r4, r5, #0 -_021D978E: - ldr r2, [r4] - cmp r2, #0 - bne _021D97A4 - lsl r2, r3, #2 - str r1, [r5, r2] - ldr r1, [r0, #8] - add r1, r1, #1 - str r1, [r0, #8] - mov r0, #1 - pop {r3, r4, r5, r6} - bx lr -_021D97A4: - add r3, r3, #1 - add r4, r4, #4 - cmp r3, r6 - blt _021D978E -_021D97AC: - mov r0, #0 - pop {r3, r4, r5, r6} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021D97B4 -MOD05_021D97B4: ; 0x021D97B4 - push {r4, r5, r6, r7, lr} - sub sp, #0x14 - add r5, r0, #0 - ldr r0, [sp, #0x28] - add r7, r1, #0 - lsl r4, r0, #2 - mov r0, #0x13 - lsl r0, r0, #4 - add r6, r5, r0 - ldr r0, [r6, r4] - ldr r1, [sp, #0x2c] - str r2, [sp, #0xc] - str r3, [sp, #0x10] - bl FUN_0200945C - cmp r0, #0 - bne _021D97DE - bl ErrorHandling - add sp, #0x14 - pop {r4, r5, r6, r7, pc} -_021D97DE: - ldr r0, [sp, #0x2c] - ldr r2, [sp, #0xc] - str r0, [sp] - ldr r0, [sp, #0x28] - ldr r3, [sp, #0x10] - str r0, [sp, #4] - ldr r0, _021D981C ; =0x00000162 - add r1, r7, #0 - ldrh r0, [r5, r0] - str r0, [sp, #8] - ldr r0, [r6, r4] - bl FUN_020090AC - add r1, r0, #0 - beq _021D9814 - mov r0, #0x52 - add r2, r5, r4 - lsl r0, r0, #2 - ldr r0, [r2, r0] - bl MOD05_021D9780 - cmp r0, #1 - beq _021D9818 - bl ErrorHandling - add sp, #0x14 - pop {r4, r5, r6, r7, pc} -_021D9814: - bl ErrorHandling -_021D9818: - add sp, #0x14 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021D981C: .word 0x00000162 - - thumb_func_start MOD05_021D9820 -MOD05_021D9820: ; 0x021D9820 - push {r3, r4, r5, r6, lr} - sub sp, #0x74 - add r5, r0, #0 - ldr r0, _021D99F4 ; =0x00000162 - add r4, r1, #0 - ldrh r0, [r5, r0] - mov r1, #0x10 - bl AllocFromHeap - add r6, r0, #0 - ldr r0, _021D99F4 ; =0x00000162 - mov r1, #8 - ldrh r0, [r5, r0] - bl AllocFromHeap - str r0, [r6, #8] - ldr r0, _021D99F4 ; =0x00000162 - mov r1, #0x24 - ldrh r0, [r5, r0] - bl AllocFromHeap - ldr r1, [r6, #8] - add r2, r4, #0 - str r0, [r1] - ldr r0, [r6, #8] - mov r1, #0 - ldr r0, [r0] - add r3, sp, #0x2c - str r0, [r6, #4] -_021D985A: - ldr r0, [r2, #0x14] - add r1, r1, #1 - add r2, r2, #4 - stmia r3!, {r0} - cmp r1, #6 - blt _021D985A - mov r1, #5 - lsl r1, r1, #6 - ldr r0, [r5, r1] - cmp r0, #0 - beq _021D9878 - add r1, r1, #4 - ldr r1, [r5, r1] - cmp r1, #0 - bne _021D9882 -_021D9878: - mov r0, #0 - mvn r0, r0 - str r0, [sp, #0x3c] - str r0, [sp, #0x40] - b _021D98B8 -_021D9882: - mov r2, #0 - ldr r1, [sp, #0x3c] - mvn r2, r2 - cmp r1, r2 - beq _021D989A - bl FUN_0200945C - cmp r0, #0 - bne _021D989A - mov r0, #0 - mvn r0, r0 - str r0, [sp, #0x3c] -_021D989A: - mov r0, #0 - ldr r1, [sp, #0x40] - mvn r0, r0 - cmp r1, r0 - beq _021D98B8 - mov r0, #0x51 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_0200945C - cmp r0, #0 - bne _021D98B8 - mov r0, #0 - mvn r0, r0 - str r0, [sp, #0x40] -_021D98B8: - ldr r0, [sp, #0x38] - str r0, [sp] - ldr r0, [sp, #0x3c] - str r0, [sp, #4] - ldr r0, [sp, #0x40] - str r0, [sp, #8] - ldr r0, [r4, #0x30] - str r0, [sp, #0xc] - ldr r0, [r4, #0x2c] - str r0, [sp, #0x10] - mov r0, #0x13 - lsl r0, r0, #4 - ldr r1, [r5, r0] - str r1, [sp, #0x14] - add r1, r0, #4 - ldr r1, [r5, r1] - str r1, [sp, #0x18] - add r1, r0, #0 - add r1, #8 - ldr r1, [r5, r1] - str r1, [sp, #0x1c] - add r1, r0, #0 - add r1, #0xc - ldr r1, [r5, r1] - str r1, [sp, #0x20] - add r1, r0, #0 - add r1, #0x10 - ldr r1, [r5, r1] - add r0, #0x14 - str r1, [sp, #0x24] - ldr r0, [r5, r0] - str r0, [sp, #0x28] - ldr r0, [r6, #4] - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x30] - ldr r3, [sp, #0x34] - bl FUN_02008AA4 - ldr r0, [r5] - str r0, [sp, #0x44] - ldr r0, [r6, #4] - str r0, [sp, #0x48] - mov r0, #0 - ldrsh r0, [r4, r0] - cmp r0, #0 - ble _021D9926 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _021D9934 -_021D9926: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_021D9934: - bl _ffix - str r0, [sp, #0x4c] - mov r0, #2 - ldrsh r0, [r4, r0] - cmp r0, #0 - ble _021D9954 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _021D9962 -_021D9954: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_021D9962: - bl _ffix - str r0, [sp, #0x50] - mov r0, #4 - ldrsh r0, [r4, r0] - cmp r0, #0 - ble _021D9982 - lsl r0, r0, #0xc - bl _fflt - add r1, r0, #0 - mov r0, #0x3f - lsl r0, r0, #0x18 - bl _fadd - b _021D9990 -_021D9982: - lsl r0, r0, #0xc - bl _fflt - mov r1, #0x3f - lsl r1, r1, #0x18 - bl _fsub -_021D9990: - bl _ffix - str r0, [sp, #0x54] - ldr r0, [r4, #0x10] - cmp r0, #2 - bne _021D99A6 - mov r0, #3 - ldr r1, [sp, #0x50] - lsl r0, r0, #0x12 - add r0, r1, r0 - str r0, [sp, #0x50] -_021D99A6: - mov r0, #1 - lsl r0, r0, #0xc - str r0, [sp, #0x58] - str r0, [sp, #0x5c] - str r0, [sp, #0x60] - mov r1, #0 - add r0, sp, #0x2c - strh r1, [r0, #0x38] - ldr r0, [r4, #8] - str r0, [sp, #0x68] - ldr r0, [r4, #0x10] - str r0, [sp, #0x6c] - ldr r0, _021D99F4 ; =0x00000162 - ldrh r0, [r5, r0] - str r0, [sp, #0x70] - add r0, sp, #0x44 - bl FUN_0201FE94 - str r0, [r6] - cmp r0, #0 - beq _021D99EA - bl FUN_020202A0 - add r5, r0, #0 - ldrh r1, [r4, #6] - ldr r0, [r6] - bl FUN_02020130 - ldr r1, [r4, #0xc] - ldr r0, [r6] - add r1, r5, r1 - bl FUN_02020248 - b _021D99EE -_021D99EA: - bl ErrorHandling -_021D99EE: - add r0, r6, #0 - add sp, #0x74 - pop {r3, r4, r5, r6, pc} - .balign 4, 0 -_021D99F4: .word 0x00000162 - - thumb_func_start MOD05_021D99F8 -MOD05_021D99F8: ; 0x021D99F8 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - ldr r0, [r6] - bl FUN_0201FD58 - mov r0, #0x52 - lsl r0, r0, #2 - ldr r0, [r6, r0] - bl FUN_02009C30 - mov r0, #0x53 - lsl r0, r0, #2 - ldr r0, [r6, r0] - bl FUN_02009E28 - mov r0, #0x16 - lsl r0, r0, #4 - ldrh r0, [r6, r0] - mov r4, #0 - cmp r0, #0 - bls _021D9A46 - mov r7, #0x16 - add r5, r6, #0 - lsl r7, r7, #4 -_021D9A28: - mov r0, #0x52 - lsl r0, r0, #2 - ldr r0, [r5, r0] - bl FUN_02009448 - mov r0, #0x13 - lsl r0, r0, #4 - ldr r0, [r5, r0] - bl FUN_02008E2C - ldrh r0, [r6, r7] - add r4, r4, #1 - add r5, r5, #4 - cmp r4, r0 - blo _021D9A28 -_021D9A46: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021D9A48 -MOD05_021D9A48: ; 0x021D9A48 - push {r3, r4, r5, r6, r7, lr} - add r7, r2, #0 - add r6, r0, #0 - add r5, r1, #0 - mov r0, #0 - ldr r1, [r7, #0x18] - mvn r0, r0 - add r4, r3, #0 - cmp r1, r0 - bne _021D9A60 - bl ErrorHandling -_021D9A60: - mov r0, #0 - add r1, r6, #0 -_021D9A64: - ldr r2, [r1] - cmp r2, #0 - beq _021D9A7A - ldr r2, [r1, #0xc] - cmp r4, r2 - bne _021D9A7A - ldr r2, [r1, #4] - cmp r2, r5 - bne _021D9A7A - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D9A7A: - add r0, r0, #1 - add r1, #0x10 - cmp r0, #2 - blt _021D9A64 - mov r2, #0 - add r1, r6, #0 -_021D9A86: - ldr r0, [r1] - cmp r0, #0 - bne _021D9A9C - lsl r1, r2, #4 - mov r0, #1 - str r0, [r6, r1] - add r0, r6, r1 - str r4, [r0, #0xc] - str r7, [r0, #8] - str r5, [r0, #4] - b _021D9AA4 -_021D9A9C: - add r2, r2, #1 - add r1, #0x10 - cmp r2, #2 - blt _021D9A86 -_021D9AA4: - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021D9AA8 -MOD05_021D9AA8: ; 0x021D9AA8 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - mov r0, #0 - add r4, r1, #0 - mvn r0, r0 - add r7, r2, #0 - add r5, r3, #0 - cmp r4, r0 - bne _021D9ABE - bl ErrorHandling -_021D9ABE: - add r0, r6, #0 - add r1, r4, #0 - mov r2, #4 - bl NARC_AllocAndReadWholeMember - add r4, r0, #0 - bne _021D9AD0 - bl ErrorHandling -_021D9AD0: - add r0, r4, #0 - mov r1, #0 - bl FUN_020BC4C8 - add r6, r0, #0 - bne _021D9AE0 - bl ErrorHandling -_021D9AE0: - ldr r0, [sp, #0x1c] - add r1, r6, #0 - add r2, r7, #0 - bl FUN_020BB8D0 - str r0, [r5] - cmp r5, #0 - bne _021D9AF4 - bl ErrorHandling -_021D9AF4: - ldr r0, [r5] - ldr r3, [sp, #0x18] - add r1, r6, #0 - add r2, r7, #0 - bl FUN_020B8110 - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021D9B04 -MOD05_021D9B04: ; 0x021D9B04 - push {r3, lr} - cmp r1, #0 - bne _021D9B0E - mov r0, #0 - pop {r3, pc} -_021D9B0E: - cmp r0, #0 - bne _021D9B16 - mov r0, #0 - pop {r3, pc} -_021D9B16: - bl FUN_020B7E28 - mov r0, #1 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021D9B20 -MOD05_021D9B20: ; 0x021D9B20 - push {r4, r5, r6, lr} - mov r4, #0 - add r5, r0, #0 - add r6, r4, #0 -_021D9B28: - ldr r0, [r5] - cmp r0, #0 - beq _021D9B4A - ldr r0, [r5, #8] - bl MOD05_021DA20C - cmp r0, #0 - beq _021D9B4A - ldr r1, [r5, #8] - ldr r0, [r5, #4] - ldr r1, [r1] - bl MOD05_021D9B04 - str r6, [r5] - str r6, [r5, #0xc] - str r6, [r5, #8] - str r6, [r5, #4] -_021D9B4A: - add r4, r4, #1 - add r5, #0x10 - cmp r4, #2 - blt _021D9B28 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021D9B54 -MOD05_021D9B54: ; 0x021D9B54 - push {r3, r4, r5, r6, r7, lr} - mov r1, #0xae - mov r0, #4 - lsl r1, r1, #2 - bl AllocFromHeap - add r7, r0, #0 - mov r1, #0 - add r2, r7, #0 - add r6, r1, #0 - sub r0, r1, #1 -_021D9B6A: - str r6, [r2, #0x14] - str r6, [r2, #0x20] - str r6, [r2, #0x10] - str r6, [r2, #0x18] - str r6, [r2, #0x1c] - str r6, [r2, #0x24] - str r0, [r2, #0x28] - str r6, [r2, #0x2c] - str r6, [r2, #0x30] - str r6, [r2, #0x34] - add r1, r1, #1 - add r2, #0x28 - cmp r1, #0x10 - blt _021D9B6A - mov r0, #0x29 - lsl r0, r0, #4 - add r2, r0, #0 - add r3, r0, #0 - add r5, r7, #0 - mov r4, #0 - add r1, r0, #4 - add r2, #8 - add r3, #0xc -_021D9B98: - str r4, [r5, r0] - str r4, [r5, r1] - str r4, [r5, r2] - str r4, [r5, r3] - add r6, r6, #1 - add r5, #0x10 - cmp r6, #2 - blt _021D9B98 - mov r1, #4 - add r0, r7, #0 - add r2, r1, #0 - bl FUN_02016B20 - mov r0, #0x6e - mov r1, #4 - bl NARC_ctor - mov r1, #0x2b - lsl r1, r1, #4 - str r0, [r7, r1] - mov r0, #0x6f - mov r1, #4 - bl NARC_ctor - mov r1, #0xad - lsl r1, r1, #2 - str r0, [r7, r1] - add r0, r7, #0 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021D9BD4 -MOD05_021D9BD4: ; 0x021D9BD4 - cmp r0, #0 - bne _021D9BDC - mov r0, #0 - bx lr -_021D9BDC: - ldr r0, [r0] - bx lr - - thumb_func_start MOD05_021D9BE0 -MOD05_021D9BE0: ; 0x021D9BE0 - mov r1, #1 - and r0, r1 - cmp r0, #1 - beq _021D9BEA - mov r1, #0 -_021D9BEA: - add r0, r1, #0 - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021D9BF0 -MOD05_021D9BF0: ; 0x021D9BF0 - asr r1, r0, #1 - mov r0, #1 - and r1, r0 - cmp r1, #1 - beq _021D9BFC - mov r0, #0 -_021D9BFC: - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021D9C00 -MOD05_021D9C00: ; 0x021D9C00 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #4] - cmp r0, #1 - beq _021D9C0E - bl ErrorHandling -_021D9C0E: - ldr r0, [r4, #0x1c] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021D9C14 -MOD05_021D9C14: ; 0x021D9C14 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r6, r0, #0 - mov r0, #0xad - ldr r7, [sp, #0x4c] - lsl r0, r0, #2 - add r4, r1, #0 - str r2, [sp, #8] - ldr r0, [r7, r0] - add r1, r6, #0 - add r2, sp, #0x10 - add r5, r3, #0 - bl NARC_ReadWholeMember - cmp r4, #4 - blt _021D9C38 - bl ErrorHandling -_021D9C38: - lsl r1, r4, #2 - add r0, sp, #0x14 - ldr r0, [r0, r1] - mov r1, #0 - mvn r1, r1 - str r0, [sp, #0xc] - cmp r0, r1 - bne _021D9C4E - add sp, #0x24 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021D9C4E: - add r0, sp, #0x10 - ldrb r0, [r0, #1] - bl MOD05_021D9BE0 - ldr r1, [sp, #0x40] - cmp r1, r0 - beq _021D9C62 - add sp, #0x24 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021D9C62: - mov r6, #0 - add r4, r7, #0 -_021D9C66: - cmp r5, #0 - beq _021D9C74 - ldr r0, [r4, #0x34] - cmp r5, r0 - bne _021D9C74 - bl ErrorHandling -_021D9C74: - add r6, r6, #1 - add r4, #0x28 - cmp r6, #0x10 - blt _021D9C66 - mov r2, #0 - add r1, r7, #0 -_021D9C80: - ldr r0, [r1, #0x14] - cmp r0, #0 - bne _021D9CD8 - add r4, r2, #0 - mov r0, #0x28 - mul r4, r0 - mov r1, #1 - add r0, r7, r4 - str r1, [r0, #0x14] - ldr r1, [sp, #0x3c] - add r6, r7, #0 - str r1, [r0, #0x20] - add r6, #0x10 - mov r1, #0 - str r1, [r6, r4] - str r1, [r0, #0x18] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x44] - str r1, [r0, #0x1c] - ldr r1, [sp, #0x38] - add r3, r6, r4 - str r1, [r0, #0x30] - str r5, [r0, #0x34] - ldr r0, [sp, #0x48] - ldr r1, [sp, #0xc] - str r0, [sp] - mov r0, #0x2b - str r7, [sp, #4] - lsl r0, r0, #4 - ldr r0, [r7, r0] - bl MOD05_021D9AA8 - add r1, r7, r4 - str r0, [r1, #0x24] - ldr r0, [sp, #8] - str r0, [r1, #0x28] - mov r0, #1 - str r0, [r1, #0x2c] - add r0, r6, r4 - bl MOD05_021DA118 - add sp, #0x24 - add r0, r6, r4 - pop {r4, r5, r6, r7, pc} -_021D9CD8: - add r2, r2, #1 - add r1, #0x28 - cmp r2, #0x10 - blt _021D9C80 - bl ErrorHandling - mov r0, #0 - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021D9CEC -MOD05_021D9CEC: ; 0x021D9CEC - push {r4, r5, r6, r7, lr} - sub sp, #0x34 - add r4, r0, #0 - mov r0, #0xad - add r6, r3, #0 - lsl r0, r0, #2 - str r1, [sp, #8] - str r2, [sp, #0xc] - ldr r0, [r6, r0] - add r1, r4, #0 - add r2, sp, #0x20 - bl NARC_ReadWholeMember - add r0, sp, #0x20 - ldrb r0, [r0] - cmp r0, #0 - beq _021D9DBC - mov r0, #0 - str r0, [sp, #0x14] - add r0, sp, #0x20 - str r0, [sp, #0x10] -_021D9D16: - ldr r0, [sp, #0x10] - mov r1, #0 - ldr r0, [r0, #4] - mvn r1, r1 - str r0, [sp, #0x18] - cmp r0, r1 - beq _021D9DBC - add r0, sp, #0x20 - ldrb r0, [r0, #1] - bl MOD05_021D9BE0 - cmp r0, #0 - bne _021D9DBC - mov r4, #0 - add r1, r6, #0 -_021D9D34: - ldr r0, [r1, #0x14] - cmp r0, #0 - bne _021D9D9C - mov r0, #0x28 - add r7, r4, #0 - mul r7, r0 - add r5, r6, r7 - mov r0, #1 - str r0, [r5, #0x14] - mov r1, #0 - str r1, [r5, #0x20] - str r1, [r5, #0x10] - ldr r0, [sp, #0x18] - str r1, [r5, #0x18] - str r0, [r5, #0x1c] - add r0, r6, #0 - str r0, [sp, #0x1c] - add r0, #0x10 - str r0, [sp, #0x1c] - str r1, [r5, #0x30] - str r1, [r5, #0x34] - ldr r0, [sp, #0xc] - ldr r3, [sp, #0x1c] - str r0, [sp] - mov r0, #0x2b - str r6, [sp, #4] - lsl r0, r0, #4 - ldr r0, [r6, r0] - ldr r1, [sp, #0x18] - ldr r2, [sp, #8] - add r3, r3, r7 - bl MOD05_021D9AA8 - str r0, [r5, #0x24] - mov r0, #0 - mvn r0, r0 - str r0, [r5, #0x28] - mov r0, #1 - str r0, [r5, #0x2c] - ldr r0, [sp, #0x1c] - add r0, r0, r7 - bl MOD05_021DA118 - add r0, sp, #0x20 - ldrb r0, [r0, #2] - cmp r0, #0 - beq _021D9DA4 - add r1, r5, #0 - mov r0, #1 - str r0, [r1, #0x20] - str r0, [r1, #0x28] - b _021D9DA4 -_021D9D9C: - add r4, r4, #1 - add r1, #0x28 - cmp r4, #0x10 - blt _021D9D34 -_021D9DA4: - cmp r4, #0x10 - bne _021D9DAC - bl ErrorHandling -_021D9DAC: - ldr r0, [sp, #0x10] - add r0, r0, #4 - str r0, [sp, #0x10] - ldr r0, [sp, #0x14] - add r0, r0, #1 - str r0, [sp, #0x14] - cmp r0, #4 - blt _021D9D16 -_021D9DBC: - add sp, #0x34 - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021D9DC0 -MOD05_021D9DC0: ; 0x021D9DC0 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - ldr r6, [sp, #0x30] - add r5, r0, #0 - add r4, r1, #0 - add r7, r2, #0 - str r3, [sp] - cmp r6, #0 - bne _021D9DDC - bl ErrorHandling - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D9DDC: - add r0, r6, #0 - bl MOD05_021DA220 - cmp r5, r0 - blt _021D9DEC - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D9DEC: - mov r0, #0xad - lsl r0, r0, #2 - ldr r0, [r6, r0] - add r1, r5, #0 - add r2, sp, #4 - bl NARC_ReadWholeMember - cmp r4, #4 - blt _021D9E02 - bl ErrorHandling -_021D9E02: - lsl r1, r4, #2 - add r0, sp, #8 - ldr r5, [r0, r1] - mov r0, #0 - mvn r0, r0 - cmp r5, r0 - bne _021D9E16 - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D9E16: - add r0, sp, #4 - ldrb r0, [r0, #1] - bl MOD05_021D9BF0 - cmp r7, r0 - beq _021D9E28 - add sp, #0x18 - mov r0, #0 - pop {r3, r4, r5, r6, r7, pc} -_021D9E28: - mov r4, #0 - add r1, r6, #0 -_021D9E2C: - ldr r0, [r1, #0x1c] - cmp r5, r0 - bne _021D9E70 - add r0, sp, #4 - ldrb r0, [r0, #2] - cmp r0, #0 - beq _021D9E56 - add r2, r6, #0 - mov r3, #0x28 - mov r0, #0x29 - lsl r0, r0, #4 - add r2, #0x10 - mul r3, r4 - add r2, r2, r3 - lsl r3, r5, #0x18 - ldr r1, [sp] - add r0, r6, r0 - lsr r3, r3, #0x18 - bl MOD05_021D9A48 - b _021D9E58 -_021D9E56: - mov r0, #1 -_021D9E58: - cmp r0, #0 - beq _021D9E6A - mov r1, #0x28 - mul r1, r4 - add r1, r6, r1 - ldr r0, [sp] - ldr r1, [r1, #0x10] - bl FUN_020B7EFC -_021D9E6A: - add sp, #0x18 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021D9E70: - add r4, r4, #1 - add r1, #0x28 - cmp r4, #0x10 - blt _021D9E2C - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021D9E80 -MOD05_021D9E80: ; 0x021D9E80 - push {r4, r5, r6, r7, lr} - sub sp, #0x24 - add r5, r0, #0 - ldr r0, _021D9F44 ; =0x00000000 - str r1, [sp, #0xc] - add r4, r2, #0 - str r0, [sp] - bne _021D9E94 - bl ErrorHandling -_021D9E94: - add r0, r4, #0 - bl MOD05_021DA220 - cmp r5, r0 - blt _021D9EA4 - add sp, #0x24 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021D9EA4: - mov r0, #0xad - lsl r0, r0, #2 - ldr r0, [r4, r0] - add r1, r5, #0 - add r2, sp, #0x10 - bl NARC_ReadWholeMember - add r0, sp, #0x10 - ldrb r0, [r0, #1] - bl MOD05_021D9BF0 - cmp r0, #0 - beq _021D9EC4 - add sp, #0x24 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021D9EC4: - mov r0, #0 - str r0, [sp, #4] - add r0, r4, #0 - str r0, [sp, #8] - add r0, #0x10 - add r7, sp, #0x10 - str r0, [sp, #8] -_021D9ED2: - mov r0, #0 - ldr r3, [r7, #4] - mvn r0, r0 - cmp r3, r0 - bne _021D9EE2 - ldr r0, [sp] - add sp, #0x24 - pop {r4, r5, r6, r7, pc} -_021D9EE2: - mov r5, #0 - add r1, r4, #0 -_021D9EE6: - ldr r0, [r1, #0x1c] - cmp r3, r0 - bne _021D9F2A - add r0, sp, #0x10 - ldrb r0, [r0, #2] - cmp r0, #0 - beq _021D9F10 - mov r2, #0x28 - add r6, r5, #0 - mov r0, #0x29 - mul r6, r2 - ldr r2, [sp, #8] - lsl r0, r0, #4 - lsl r3, r3, #0x18 - ldr r1, [sp, #0xc] - add r0, r4, r0 - add r2, r2, r6 - lsr r3, r3, #0x18 - bl MOD05_021D9A48 - b _021D9F12 -_021D9F10: - mov r0, #1 -_021D9F12: - cmp r0, #0 - beq _021D9F32 - mov r1, #0x28 - mul r1, r5 - add r1, r4, r1 - ldr r0, [sp, #0xc] - ldr r1, [r1, #0x10] - bl FUN_020B7EFC - mov r0, #1 - str r0, [sp] - b _021D9F32 -_021D9F2A: - add r5, r5, #1 - add r1, #0x28 - cmp r5, #0x10 - blt _021D9EE6 -_021D9F32: - ldr r0, [sp, #4] - add r7, r7, #4 - add r0, r0, #1 - str r0, [sp, #4] - cmp r0, #4 - blt _021D9ED2 - ldr r0, [sp] - add sp, #0x24 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021D9F44: .word 0x00000000 - - thumb_func_start MOD05_021D9F48 -MOD05_021D9F48: ; 0x021D9F48 - push {r3, r4, r5, r6, r7, lr} - add r6, r0, #0 - beq _021D9F7C - mov r4, #0 - add r5, r6, #0 - add r7, r4, #0 -_021D9F54: - ldr r0, [r5, #0x14] - cmp r0, #0 - beq _021D9F74 - cmp r0, #1 - bne _021D9F6E - ldr r1, [r5, #0x10] - add r0, r6, #0 - bl thunk_FUN_020ae84c - str r7, [r5, #0x10] - ldr r0, [r5, #0x24] - bl FreeToHeap -_021D9F6E: - mov r0, #0 - str r0, [r5, #0x14] - str r0, [r5, #0x34] -_021D9F74: - add r4, r4, #1 - add r5, #0x28 - cmp r4, #0x10 - blt _021D9F54 -_021D9F7C: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021D9F80 -MOD05_021D9F80: ; 0x021D9F80 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - beq _021D9FB2 - cmp r5, #0 - bne _021D9F90 - bl ErrorHandling -_021D9F90: - ldr r0, [r5, #4] - cmp r0, #0 - beq _021D9FB2 - cmp r0, #1 - bne _021D9FAC - ldr r1, [r5] - add r0, r4, #0 - bl thunk_FUN_020ae84c - mov r0, #0 - str r0, [r5] - ldr r0, [r5, #0x14] - bl FreeToHeap -_021D9FAC: - mov r0, #0 - str r0, [r5, #4] - str r0, [r5, #0x24] -_021D9FB2: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021D9FB4 -MOD05_021D9FB4: ; 0x021D9FB4 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r4, r0, #0 - mov r0, #0xad - lsl r0, r0, #2 - add r6, r1, #0 - add r1, r2, #0 - ldr r0, [r4, r0] - add r2, sp, #0 - add r5, r3, #0 - bl NARC_ReadWholeMember - cmp r5, #4 - blt _021D9FD4 - bl ErrorHandling -_021D9FD4: - lsl r1, r5, #2 - add r0, sp, #4 - ldr r5, [r0, r1] - mov r0, #0 - mvn r0, r0 - cmp r5, r0 - bne _021D9FE6 - bl ErrorHandling -_021D9FE6: - mov r0, #0 - mov r2, #0x28 -_021D9FEA: - add r1, r0, #0 - mul r1, r2 - add r1, r4, r1 - ldr r3, [r1, #0x14] - cmp r3, #1 - bne _021DA008 - ldr r3, [r1, #0x1c] - cmp r5, r3 - bne _021DA008 - ldr r1, [r1, #0x10] - add r0, r6, #0 - bl MOD05_021D9B04 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} -_021DA008: - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x10 - blo _021D9FEA - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA018 -MOD05_021DA018: ; 0x021DA018 - push {r4, lr} - add r4, r0, #0 - beq _021DA038 - mov r0, #0x2b - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl NARC_dtor - mov r0, #0xad - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl NARC_dtor - add r0, r4, #0 - bl FreeToHeap -_021DA038: - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA03C -MOD05_021DA03C: ; 0x021DA03C - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - cmp r5, #0 - bne _021DA04A - bl ErrorHandling -_021DA04A: - mov r6, #0 - add r1, r6, #0 - add r2, r4, #0 -_021DA050: - ldr r0, [r2, #0x34] - cmp r5, r0 - bne _021DA06A - mov r0, #0x28 - add r4, #0x10 - mul r0, r1 - add r6, r4, r0 - ldr r0, [r6, #4] - cmp r0, #0 - bne _021DA072 - bl ErrorHandling - b _021DA072 -_021DA06A: - add r1, r1, #1 - add r2, #0x28 - cmp r1, #0x10 - blt _021DA050 -_021DA072: - cmp r6, #0 - bne _021DA07A - bl ErrorHandling -_021DA07A: - add r0, r6, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA080 -MOD05_021DA080: ; 0x021DA080 - push {r4, r5, lr} - sub sp, #0x14 - add r3, r0, #0 - mov r0, #0xad - add r5, r2, #0 - lsl r0, r0, #2 - add r4, r1, #0 - ldr r0, [r5, r0] - add r1, r3, #0 - add r2, sp, #0 - bl NARC_ReadWholeMember - cmp r4, #4 - blt _021DA0A0 - bl ErrorHandling -_021DA0A0: - lsl r1, r4, #2 - add r0, sp, #4 - mov r4, #0 - ldr r1, [r0, r1] - add r2, r4, #0 - add r3, r5, #0 -_021DA0AC: - ldr r0, [r3, #0x1c] - cmp r1, r0 - bne _021DA0C6 - mov r0, #0x28 - add r5, #0x10 - mul r0, r2 - add r4, r5, r0 - ldr r0, [r4, #4] - cmp r0, #0 - bne _021DA0CE - bl ErrorHandling - b _021DA0CE -_021DA0C6: - add r2, r2, #1 - add r3, #0x28 - cmp r2, #0x10 - blt _021DA0AC -_021DA0CE: - cmp r4, #0 - bne _021DA0D6 - bl ErrorHandling -_021DA0D6: - add r0, r4, #0 - add sp, #0x14 - pop {r4, r5, pc} - - thumb_func_start MOD05_021DA0DC -MOD05_021DA0DC: ; 0x021DA0DC - str r1, [r0, #0x10] - bx lr - - thumb_func_start MOD05_021DA0E0 -MOD05_021DA0E0: ; 0x021DA0E0 - mov r1, #1 - str r1, [r0, #0x1c] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021DA0E8 -MOD05_021DA0E8: ; 0x021DA0E8 - ldr r1, [r0, #0x20] - ldr r0, [r0] - cmp r1, #0 - bne _021DA10A - ldr r2, [r0] - ldr r0, [r0, #8] - ldrh r0, [r0, #4] - lsl r1, r0, #0xc - mov r0, #1 - lsl r0, r0, #0xc - sub r0, r1, r0 - cmp r2, r0 - blt _021DA106 - mov r0, #1 - bx lr -_021DA106: - mov r0, #0 - bx lr -_021DA10A: - ldr r0, [r0] - cmp r0, #0 - bne _021DA114 - mov r0, #1 - bx lr -_021DA114: - mov r0, #0 - bx lr - - thumb_func_start MOD05_021DA118 -MOD05_021DA118: ; 0x021DA118 - ldr r1, [r0, #0x20] - cmp r1, #0 - bne _021DA126 - ldr r0, [r0] - mov r1, #0 - str r1, [r0] - bx lr -_021DA126: - ldr r2, [r0] - ldr r0, [r2, #8] - ldrh r0, [r0, #4] - lsl r1, r0, #0xc - mov r0, #1 - lsl r0, r0, #0xc - sub r0, r1, r0 - str r0, [r2] - bx lr - - thumb_func_start MOD05_021DA138 -MOD05_021DA138: ; 0x021DA138 - ldr r1, [r0, #0x20] - cmp r1, #0 - bne _021DA150 - ldr r2, [r0] - ldr r0, [r2, #8] - ldrh r0, [r0, #4] - lsl r1, r0, #0xc - mov r0, #1 - lsl r0, r0, #0xc - sub r0, r1, r0 - str r0, [r2] - bx lr -_021DA150: - ldr r0, [r0] - mov r1, #0 - str r1, [r0] - bx lr - - thumb_func_start MOD05_021DA158 -MOD05_021DA158: ; 0x021DA158 - ldr r1, [r0, #0x20] - cmp r1, #0 - bne _021DA17E - ldr r3, [r0] - mov r1, #1 - ldr r2, [r3] - lsl r1, r1, #0xc - add r1, r2, r1 - str r1, [r3] - ldr r2, [r0] - ldr r0, [r2, #8] - ldr r1, [r2] - ldrh r0, [r0, #4] - lsl r0, r0, #0xc - cmp r1, r0 - bne _021DA19E - mov r0, #0 - str r0, [r2] - bx lr -_021DA17E: - ldr r0, [r0] - ldr r2, [r0] - cmp r2, #0 - bgt _021DA196 - ldr r1, [r0, #8] - ldrh r1, [r1, #4] - lsl r2, r1, #0xc - mov r1, #1 - lsl r1, r1, #0xc - sub r1, r2, r1 - str r1, [r0] - bx lr -_021DA196: - mov r1, #1 - lsl r1, r1, #0xc - sub r1, r2, r1 - str r1, [r0] -_021DA19E: - bx lr - - thumb_func_start MOD05_021DA1A0 -MOD05_021DA1A0: ; 0x021DA1A0 - str r1, [r0, #0x20] - bx lr - - thumb_func_start MOD05_021DA1A4 -MOD05_021DA1A4: ; 0x021DA1A4 - str r1, [r0, #0x18] - bx lr - - thumb_func_start MOD05_021DA1A8 -MOD05_021DA1A8: ; 0x021DA1A8 - str r1, [r0, #0x24] - bx lr - - thumb_func_start MOD05_021DA1AC -MOD05_021DA1AC: ; 0x021DA1AC - push {r3, r4, r5, r6, r7, lr} - str r0, [sp] - cmp r0, #0 - beq _021DA20A - mov r4, #0 - add r5, r0, #0 - add r5, #0x10 - add r6, r4, #0 - sub r7, r4, #1 -_021DA1BE: - ldr r0, [r5, #4] - cmp r0, #1 - bne _021DA1F6 - ldr r0, [r5, #0x10] - cmp r0, #1 - beq _021DA1F6 - ldr r0, [r5, #0x1c] - cmp r0, #0 - beq _021DA1F6 - add r0, r5, #0 - bl MOD05_021DA158 - ldr r0, [r5, #0x18] - cmp r0, r7 - beq _021DA1F6 - add r0, r5, #0 - bl MOD05_021DA0E8 - cmp r0, #0 - beq _021DA1F6 - ldr r0, [r5, #8] - add r1, r0, #1 - ldr r0, [r5, #0x18] - cmp r1, r0 - blt _021DA1F4 - str r6, [r5, #0x1c] - b _021DA1F6 -_021DA1F4: - str r1, [r5, #8] -_021DA1F6: - add r4, r4, #1 - add r5, #0x28 - cmp r4, #0x10 - blt _021DA1BE - mov r1, #0x29 - ldr r0, [sp] - lsl r1, r1, #4 - add r0, r0, r1 - bl MOD05_021D9B20 -_021DA20A: - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021DA20C -MOD05_021DA20C: ; 0x021DA20C - push {r3, lr} - bl MOD05_021D9C00 - cmp r0, #0 - bne _021DA21A - mov r0, #1 - pop {r3, pc} -_021DA21A: - mov r0, #0 - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA220 -MOD05_021DA220: ; 0x021DA220 - mov r1, #0xad - lsl r1, r1, #2 - ldr r3, _021DA22C ; =NARC_GetFileCount - ldr r0, [r0, r1] - bx r3 - nop -_021DA22C: .word NARC_GetFileCount - - thumb_func_start MOD05_021DA230 -MOD05_021DA230: ; 0x021DA230 - push {lr} - sub sp, #0x14 - mov r2, #0xad - lsl r2, r2, #2 - ldr r0, [r0, r2] - add r2, sp, #0 - bl NARC_ReadWholeMember - add r0, sp, #0 - ldrb r0, [r0] - cmp r0, #0 - bne _021DA24E - add sp, #0x14 - mov r0, #0 - pop {pc} -_021DA24E: - mov r0, #0 - add r3, sp, #0 - sub r1, r0, #1 -_021DA254: - lsl r2, r0, #2 - add r2, r3, r2 - ldr r2, [r2, #4] - cmp r2, r1 - beq _021DA268 - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #4 - blo _021DA254 -_021DA268: - add sp, #0x14 - pop {pc} - - thumb_func_start MOD05_021DA26C -MOD05_021DA26C: ; 0x021DA26C - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bne _021DA278 - bl ErrorHandling -_021DA278: - mov r1, #0x10 - mov r0, #0 - mov r2, #0x38 -_021DA27E: - cmp r1, #0x10 - bne _021DA292 - add r3, r0, #0 - mul r3, r2 - add r3, r5, r3 - add r3, #0x34 - ldrb r3, [r3] - cmp r3, #0 - bne _021DA292 - add r1, r0, #0 -_021DA292: - add r0, r0, #1 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x10 - blo _021DA27E - cmp r1, #0x10 - beq _021DA2AE - mov r0, #0x38 - add r2, r1, #0 - mul r2, r0 - add r0, r5, r2 - add r0, #0x34 - strb r4, [r0] - b _021DA2B6 -_021DA2AE: - bl ErrorHandling - mov r0, #0 - pop {r3, r4, r5, pc} -_021DA2B6: - add r0, r5, r2 - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA2BC -MOD05_021DA2BC: ; 0x021DA2BC - add r1, r0, #0 - mov r3, #0 - add r1, #0x34 - strb r3, [r1] - str r3, [r0, #0x30] - str r3, [r0, #0x2c] - add r2, r3, #0 -_021DA2CA: - lsl r1, r3, #2 - add r1, r0, r1 - str r2, [r1, #0x14] - add r1, r3, #1 - lsl r1, r1, #0x18 - lsr r3, r1, #0x18 - cmp r3, #6 - blo _021DA2CA - bx lr - - thumb_func_start MOD05_021DA2DC -MOD05_021DA2DC: ; 0x021DA2DC - push {r4, r5} - mov r4, #0 - add r3, r4, #0 - add r5, r0, #0 -_021DA2E4: - add r2, r5, #0 - add r2, #0x34 - ldrb r2, [r2] - cmp r1, r2 - bne _021DA2F6 - mov r1, #0x38 - mul r1, r3 - add r4, r0, r1 - b _021DA2FE -_021DA2F6: - add r3, r3, #1 - add r5, #0x38 - cmp r3, #0x10 - blt _021DA2E4 -_021DA2FE: - add r0, r4, #0 - pop {r4, r5} - bx lr - - thumb_func_start MOD05_021DA304 -MOD05_021DA304: ; 0x021DA304 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - add r6, r2, #0 - cmp r4, #4 - ble _021DA314 - bl ErrorHandling -_021DA314: - cmp r5, #0 - beq _021DA31A - str r5, [r6, #0x14] -_021DA31A: - str r4, [r6, #0x10] - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA320 -MOD05_021DA320: ; 0x021DA320 - push {r4, r5, r6, lr} - add r5, r0, #0 - ldr r0, [r5, #0x10] - add r4, r1, #0 - add r6, r2, #0 - cmp r4, r0 - blt _021DA332 - bl ErrorHandling -_021DA332: - lsl r0, r4, #2 - str r6, [r5, r0] - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021DA338 -MOD05_021DA338: ; 0x021DA338 - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - add r5, r0, #0 - ldr r0, [r5, #0x10] - add r4, r1, #0 - cmp r4, r0 - blt _021DA34A - bl ErrorHandling -_021DA34A: - lsl r0, r4, #2 - ldr r0, [r5, r0] - str r0, [sp, #4] - bl MOD05_021D9BD4 - str r0, [sp] - ldr r0, [r5, #0x2c] - bl MOD05_021D9BD4 - add r7, r0, #0 - mov r4, #0 -_021DA360: - lsl r0, r4, #2 - add r6, r5, r0 - ldr r0, [r6, #0x14] - cmp r0, #0 - beq _021DA378 - add r1, r7, #0 - bl MOD05_021D9B04 - ldr r0, [r6, #0x14] - ldr r1, [sp] - bl FUN_020B7EFC -_021DA378: - add r0, r4, #1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - cmp r4, #6 - blo _021DA360 - ldr r0, [sp, #4] - str r0, [r5, #0x2c] - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA38C -MOD05_021DA38C: ; 0x021DA38C - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x28 - str r0, [sp, #0x18] - ldr r0, [sp, #0x40] - str r1, [sp, #0x1c] - str r0, [sp, #0x40] - ldr r0, [sp, #0x4c] - str r2, [sp, #0x20] - str r0, [sp, #0x4c] - add r0, r3, #0 - mov r5, #0 - str r3, [sp, #0x24] - ldr r6, [sp, #0x44] - ldr r7, [sp, #0x48] - cmp r0, #0 - ble _021DA3E4 -_021DA3AC: - str r6, [sp] - mov r0, #1 - str r0, [sp, #4] - str r0, [sp, #8] - ldr r0, [sp, #0x1c] - ldr r2, [sp, #0x40] - str r0, [sp, #0xc] - ldr r0, [sp, #0x20] - add r1, r5, #0 - str r0, [sp, #0x10] - ldr r0, [sp, #0x18] - mov r3, #0 - str r7, [sp, #0x14] - bl MOD05_021D9C14 - add r4, r0, #0 - bne _021DA3D2 - bl ErrorHandling -_021DA3D2: - ldr r0, [sp, #0x4c] - add r1, r5, #0 - add r2, r4, #0 - bl MOD05_021DA320 - ldr r0, [sp, #0x24] - add r5, r5, #1 - cmp r5, r0 - blt _021DA3AC -_021DA3E4: - add sp, #0x28 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021DA3E8 -MOD05_021DA3E8: ; 0x021DA3E8 - push {r3, r4, r5, r6, r7, lr} - add r6, r1, #0 - str r0, [sp] - ldr r0, [r6, #0x2c] - bl MOD05_021D9BD4 - add r7, r0, #0 - mov r4, #0 - add r5, r6, #0 -_021DA3FA: - ldr r0, [r5, #0x14] - cmp r0, #0 - beq _021DA406 - add r1, r7, #0 - bl MOD05_021D9B04 -_021DA406: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #6 - blt _021DA3FA - ldr r0, [r6, #0x10] - mov r5, #0 - cmp r0, #0 - ble _021DA42C - add r4, r6, #0 - add r7, r5, #0 -_021DA41A: - ldr r0, [r4] - ldr r1, [sp] - bl MOD05_021D9F80 - stmia r4!, {r7} - ldr r0, [r6, #0x10] - add r5, r5, #1 - cmp r5, r0 - blt _021DA41A -_021DA42C: - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA430 -MOD05_021DA430: ; 0x021DA430 - push {r4, lr} - mov r1, #0xe - mov r0, #4 - lsl r1, r1, #6 - bl AllocFromHeap - add r4, r0, #0 - mov r2, #0xe - mov r0, #0 - add r1, r4, #0 - lsl r2, r2, #6 - bl MIi_CpuClearFast - add r0, r4, #0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA450 -MOD05_021DA450: ; 0x021DA450 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021DA462 - bl FreeToHeap - mov r0, #0 - str r0, [r4] -_021DA462: - pop {r4, pc} - - thumb_func_start MOD05_021DA464 -MOD05_021DA464: ; 0x021DA464 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r7, r0, #0 - add r0, r1, #0 - lsl r1, r2, #0x18 - lsr r1, r1, #0x18 - add r6, r3, #0 - bl MOD05_021DA26C - add r5, r0, #0 - bne _021DA482 - bl ErrorHandling - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} -_021DA482: - ldr r0, [sp, #0x28] - ldr r1, [sp, #0x34] - add r2, r5, #0 - bl MOD05_021DA304 - add r0, sp, #0x38 - ldrb r4, [r0] - cmp r4, #0 - bne _021DA498 - bl ErrorHandling -_021DA498: - cmp r4, #0 - bne _021DA49E - mov r4, #1 -_021DA49E: - ldr r0, [sp, #0x3c] - str r4, [sp] - str r0, [sp, #4] - str r7, [sp, #8] - ldr r1, [sp, #0x2c] - ldr r2, [sp, #0x30] - ldr r3, [sp, #0x34] - add r0, r6, #0 - str r5, [sp, #0xc] - bl MOD05_021DA38C - str r6, [r5, #0x30] - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA4BC -MOD05_021DA4BC: ; 0x021DA4BC - push {r3, r4, r5, r6, r7, lr} - add r4, r2, #0 - add r5, r0, #0 - add r7, r1, #0 - add r6, r3, #0 - cmp r4, #6 - blo _021DA4CE - bl ErrorHandling -_021DA4CE: - add r0, r5, #0 - add r1, r7, #0 - bl MOD05_021DA2DC - add r5, r0, #0 - add r5, #0x14 - lsl r4, r4, #2 - ldr r0, [r5, r4] - cmp r0, #0 - beq _021DA4E6 - bl ErrorHandling -_021DA4E6: - str r6, [r5, r4] - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA4EC -MOD05_021DA4EC: ; 0x021DA4EC - push {r4, r5, r6, lr} - add r4, r1, #0 - add r5, r0, #0 - add r6, r2, #0 - cmp r4, #0 - bne _021DA4FC - bl ErrorHandling -_021DA4FC: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021DA2DC - add r1, r6, #0 - bl MOD05_021DA338 - mov r1, #0 - bl MOD05_021DA0DC - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA514 -MOD05_021DA514: ; 0x021DA514 - push {r3, r4, r5, r6, r7, lr} - add r5, r1, #0 - add r6, r0, #0 - add r7, r2, #0 - add r4, r3, #0 - cmp r5, #0 - bne _021DA526 - bl ErrorHandling -_021DA526: - add r0, r6, #0 - add r1, r5, #0 - bl MOD05_021DA2DC - add r1, r7, #0 - bl MOD05_021DA338 - add r5, r0, #0 - cmp r4, #0 - beq _021DA542 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_020054C8 -_021DA542: - add r0, r5, #0 - mov r1, #0 - bl MOD05_021DA0DC - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021DA54C -MOD05_021DA54C: ; 0x021DA54C - push {r4, r5, r6, lr} - add r5, r0, #0 - add r4, r1, #0 - add r6, r2, #0 - bne _021DA55A - bl ErrorHandling -_021DA55A: - add r0, r4, #0 - add r1, r6, #0 - bl MOD05_021DA2DC - add r4, r0, #0 - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021DA3E8 - add r0, r4, #0 - bl MOD05_021DA2BC - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021DA574 -MOD05_021DA574: ; 0x021DA574 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - bne _021DA580 - bl ErrorHandling -_021DA580: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021DA2DC - ldr r0, [r0, #0x2c] - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021DA58C -MOD05_021DA58C: ; 0x021DA58C - push {r4, lr} - bl MOD05_021DA574 - add r4, r0, #0 - bne _021DA59A - bl ErrorHandling -_021DA59A: - add r0, r4, #0 - bl MOD05_021DA20C - cmp r0, #0 - beq _021DA5A8 - mov r0, #1 - pop {r4, pc} -_021DA5A8: - mov r0, #0 - pop {r4, pc} - - thumb_func_start MOD05_021DA5AC -MOD05_021DA5AC: ; 0x021DA5AC - push {r3, lr} - bl MOD05_021DA2DC - ldr r0, [r0, #0x30] - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DA5B8 -MOD05_021DA5B8: ; 0x021DA5B8 - push {r3, lr} - mov r0, #4 - mov r1, #0x28 - bl AllocFromHeapAtEnd - mov r1, #0 - str r1, [r0] - pop {r3, pc} - - thumb_func_start MOD05_021DA5C8 -MOD05_021DA5C8: ; 0x021DA5C8 - ldr r3, _021DA5CC ; =FreeToHeap - bx r3 - .balign 4, 0 -_021DA5CC: .word FreeToHeap - - thumb_func_start MOD05_021DA5D0 -MOD05_021DA5D0: ; 0x021DA5D0 - str r0, [r2, #0x14] - str r1, [r2, #0x18] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021DA5D8 -MOD05_021DA5D8: ; 0x021DA5D8 - push {r4, r5, r6, r7, lr} - sub sp, #0x84 - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - cmp r0, #5 - bls _021DA5E8 - b _021DA78E -_021DA5E8: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DA5F4: ; jump table - .short _021DA600 - _021DA5F4 - 2 ; case 0 - .short _021DA69A - _021DA5F4 - 2 ; case 1 - .short _021DA6EC - _021DA5F4 - 2 ; case 2 - .short _021DA700 - _021DA5F4 - 2 ; case 3 - .short _021DA714 - _021DA5F4 - 2 ; case 4 - .short _021DA772 - _021DA5F4 - 2 ; case 5 -_021DA600: - ldr r6, _021DA7A4 ; =UNK05_021F650C - add r3, sp, #0x34 - mov r2, #0xa -_021DA606: - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021DA606 - mov r0, #0 - str r0, [r4, #0x20] - strb r0, [r4, #0x1d] - mov r0, #3 - str r0, [sp] - mov r2, #1 - str r2, [sp, #4] - add r0, sp, #0x24 - str r0, [sp, #8] - sub r2, r2, #2 - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - add r3, r2, #0 - bl FUN_0204A840 - mov r0, #1 - strb r0, [r4, #0x1c] - add r0, sp, #0x20 - str r0, [sp] - add r0, sp, #0x1c - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x34 - mov r2, #0x14 - add r3, sp, #0x24 - bl FUN_0204A94C - cmp r0, #0 - beq _021DA688 - ldr r0, [r5, #0x4c] - ldr r1, [sp, #0x1c] - bl MOD05_021DA230 - add r6, r0, #0 - strb r6, [r4, #0x1e] - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r7, r0, #0 - ldr r0, [sp, #0x20] - bl MOD05_021E7EC8 - str r0, [sp, #0x18] - ldr r0, [sp, #0x20] - bl MOD05_021E7ECC - ldr r1, [sp, #0x18] - mov r2, #1 - str r1, [sp] - str r0, [sp, #4] - str r7, [sp, #8] - str r6, [sp, #0xc] - str r2, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r3, [sp, #0x1c] - bl MOD05_021DA464 - b _021DA692 -_021DA688: - bl ErrorHandling - add sp, #0x84 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021DA692: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA69A: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA5AC - add r6, r0, #0 - cmp r6, #0x4b - beq _021DA6B2 - ldr r0, [r5, #0x20] - bl FUN_0201EC88 - mov r0, #1 - str r0, [r4, #0x20] -_021DA6B2: - add r0, r6, #0 - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DA6C0 - ldr r6, _021DA7A8 ; =0x00000608 - b _021DA6C2 -_021DA6C0: - ldr r6, _021DA7AC ; =0x00000605 -_021DA6C2: - ldrb r0, [r4, #0x1e] - cmp r0, #2 - bne _021DA6CC - mov r2, #0 - b _021DA6DA -_021DA6CC: - cmp r0, #4 - bne _021DA6D4 - mov r2, #0 - b _021DA6DA -_021DA6D4: - bl ErrorHandling - mov r2, #0 -_021DA6DA: - ldr r0, [r5, #0x50] - mov r1, #1 - add r3, r6, #0 - bl MOD05_021DA514 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA6EC: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DA78E - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA700: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - mov r1, #0xc - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA714: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DA78E - add r0, r6, #0 - bl FUN_0205AE50 - add r0, r6, #0 - mov r1, #1 - bl FUN_0205889C - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA5AC - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DA746 - mov r6, #0 - b _021DA748 -_021DA746: - ldr r6, _021DA7B0 ; =0x00000607 -_021DA748: - ldrb r0, [r4, #0x1e] - cmp r0, #2 - bne _021DA752 - mov r2, #1 - b _021DA760 -_021DA752: - cmp r0, #4 - bne _021DA75A - mov r2, #1 - b _021DA760 -_021DA75A: - bl ErrorHandling - mov r2, #1 -_021DA760: - ldr r0, [r5, #0x50] - mov r1, #1 - add r3, r6, #0 - bl MOD05_021DA514 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA78E -_021DA772: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DA78E - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - mov r2, #1 - bl MOD05_021DA54C - add sp, #0x84 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021DA78E: - ldr r0, [r4, #0x20] - cmp r0, #0 - beq _021DA79E - add r4, #0x1d - ldr r0, [r5, #0x20] - add r1, r4, #0 - bl MOD05_021DA9E8 -_021DA79E: - mov r0, #0 - add sp, #0x84 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021DA7A4: .word UNK05_021F650C -_021DA7A8: .word 0x00000608 -_021DA7AC: .word 0x00000605 -_021DA7B0: .word 0x00000607 - - thumb_func_start MOD05_021DA7B4 -MOD05_021DA7B4: ; 0x021DA7B4 - push {r4, r5, r6, r7, lr} - sub sp, #0x84 - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - cmp r0, #6 - bls _021DA7C4 - b _021DA9BE -_021DA7C4: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DA7D0: ; jump table - .short _021DA7DE - _021DA7D0 - 2 ; case 0 - .short _021DA896 - _021DA7D0 - 2 ; case 1 - .short _021DA8F6 - _021DA7D0 - 2 ; case 2 - .short _021DA916 - _021DA7D0 - 2 ; case 3 - .short _021DA92A - _021DA7D0 - 2 ; case 4 - .short _021DA980 - _021DA7D0 - 2 ; case 5 - .short _021DA9B0 - _021DA7D0 - 2 ; case 6 -_021DA7DE: - ldr r6, _021DA9D4 ; =UNK05_021F655C - add r3, sp, #0x34 - mov r2, #0xa -_021DA7E4: - ldmia r6!, {r0, r1} - stmia r3!, {r0, r1} - sub r2, r2, #1 - bne _021DA7E4 - mov r3, #0 - str r3, [r4, #0x20] - strb r3, [r4, #0x1d] - mov r0, #3 - str r0, [sp] - mov r2, #1 - str r2, [sp, #4] - add r0, sp, #0x24 - str r0, [sp, #8] - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - sub r2, r2, #2 - bl FUN_0204A840 - mov r0, #1 - strb r0, [r4, #0x1c] - add r0, sp, #0x20 - str r0, [sp] - add r0, sp, #0x1c - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x34 - mov r2, #0x14 - add r3, sp, #0x24 - bl FUN_0204A94C - cmp r0, #0 - beq _021DA864 - ldr r0, [r5, #0x4c] - ldr r1, [sp, #0x1c] - bl MOD05_021DA230 - add r6, r0, #0 - strb r6, [r4, #0x1e] - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r7, r0, #0 - ldr r0, [sp, #0x20] - bl MOD05_021E7EC8 - str r0, [sp, #0x18] - ldr r0, [sp, #0x20] - bl MOD05_021E7ECC - ldr r1, [sp, #0x18] - mov r2, #1 - str r1, [sp] - str r0, [sp, #4] - str r7, [sp, #8] - str r6, [sp, #0xc] - str r2, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r3, [sp, #0x1c] - bl MOD05_021DA464 - b _021DA878 -_021DA864: - bl ErrorHandling - mov r0, #1 - bl MOD05_021D7CA4 - mov r0, #6 - str r0, [r4] - add sp, #0x84 - mov r0, #0 - pop {r4, r5, r6, r7, pc} -_021DA878: - ldr r0, [r5, #0x20] - bl FUN_0201F008 - strh r0, [r4, #0x24] - ldr r0, [sp, #0x1c] - cmp r0, #0x4b - beq _021DA88E - ldr r0, _021DA9D8 ; =0x0000FFA0 - ldr r1, [r5, #0x20] - bl FUN_0201EF2C -_021DA88E: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA896: - mov r1, #0 - str r1, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r3, #1 - str r3, [sp, #8] - mov r0, #0xb - str r0, [sp, #0xc] - ldr r0, [r5, #0x10] - mov r2, #9 - bl FUN_0204C1B4 - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA5AC - cmp r0, #0x4b - beq _021DA8BE - mov r1, #1 - str r1, [r4, #0x20] -_021DA8BE: - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DA8CA - ldr r6, _021DA9DC ; =0x00000608 - b _021DA8CC -_021DA8CA: - ldr r6, _021DA9E0 ; =0x00000605 -_021DA8CC: - ldrb r0, [r4, #0x1e] - cmp r0, #2 - bne _021DA8D6 - mov r2, #0 - b _021DA8E4 -_021DA8D6: - cmp r0, #4 - bne _021DA8DE - mov r2, #2 - b _021DA8E4 -_021DA8DE: - bl ErrorHandling - mov r2, #0 -_021DA8E4: - ldr r0, [r5, #0x50] - mov r1, #1 - add r3, r6, #0 - bl MOD05_021DA514 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA8F6: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DA9BE - ldr r0, [r5, #0x38] - bl FUN_020553A0 - mov r1, #0 - bl FUN_0205889C - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA916: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - mov r1, #0xd - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA92A: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DA9BE - add r0, r6, #0 - bl FUN_0205AE50 - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA5AC - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DA954 - mov r6, #0 - b _021DA956 -_021DA954: - ldr r6, _021DA9E4 ; =0x00000607 -_021DA956: - ldrb r0, [r4, #0x1e] - cmp r0, #2 - bne _021DA960 - mov r2, #1 - b _021DA96E -_021DA960: - cmp r0, #4 - bne _021DA968 - mov r2, #3 - b _021DA96E -_021DA968: - bl ErrorHandling - mov r2, #1 -_021DA96E: - ldr r0, [r5, #0x50] - mov r1, #1 - add r3, r6, #0 - bl MOD05_021DA514 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DA9BE -_021DA980: - ldr r0, [r5, #0x50] - mov r1, #1 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DA9BE - bl FUN_0200E308 - cmp r0, #0 - beq _021DA9BE - ldr r0, [r5, #0x20] - bl FUN_0201F008 - ldrh r1, [r4, #0x24] - cmp r1, r0 - bne _021DA9BE - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - mov r2, #1 - bl MOD05_021DA54C - add sp, #0x84 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021DA9B0: - bl FUN_0200E308 - cmp r0, #0 - beq _021DA9BE - add sp, #0x84 - mov r0, #1 - pop {r4, r5, r6, r7, pc} -_021DA9BE: - ldr r0, [r4, #0x20] - cmp r0, #0 - beq _021DA9CE - add r4, #0x1d - ldr r0, [r5, #0x20] - add r1, r4, #0 - bl MOD05_021DAA2C -_021DA9CE: - mov r0, #0 - add sp, #0x84 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021DA9D4: .word UNK05_021F655C -_021DA9D8: .word 0x0000FFA0 -_021DA9DC: .word 0x00000608 -_021DA9E0: .word 0x00000605 -_021DA9E4: .word 0x00000607 - - thumb_func_start MOD05_021DA9E8 -MOD05_021DA9E8: ; 0x021DA9E8 - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - ldrb r0, [r5] - mov r4, #0xc - add r1, r0, #0 - mul r1, r4 - cmp r1, #0x60 - bgt _021DAA28 - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x60 - bls _021DAA08 - sub r0, #0x60 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_021DAA08: - add r0, r6, #0 - bl FUN_0201F008 - sub r0, r0, r4 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - beq _021DAA22 - neg r0, r4 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r1, r6, #0 - bl FUN_0201EF2C -_021DAA22: - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] -_021DAA28: - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DAA2C -MOD05_021DAA2C: ; 0x021DAA2C - push {r4, r5, r6, lr} - add r5, r1, #0 - add r6, r0, #0 - ldrb r0, [r5] - lsl r0, r0, #4 - cmp r0, #0x60 - bge _021DAA68 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - cmp r0, #0x60 - bls _021DAA4A - sub r0, #0x60 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - b _021DAA4C -_021DAA4A: - mov r4, #0x10 -_021DAA4C: - add r0, r6, #0 - bl FUN_0201F008 - add r0, r0, r4 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - beq _021DAA62 - add r0, r4, #0 - add r1, r6, #0 - bl FUN_0201EF2C -_021DAA62: - ldrb r0, [r5] - add r0, r0, #1 - strb r0, [r5] -_021DAA68: - pop {r4, r5, r6, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DAA6C -MOD05_021DAA6C: ; 0x021DAA6C - cmp r0, #0x46 - beq _021DAA98 - ldr r2, _021DAAA0 ; =0x000001BA - cmp r0, r2 - beq _021DAA98 - add r1, r2, #0 - sub r1, #0x90 - cmp r0, r1 - beq _021DAA98 - add r1, r2, #0 - add r1, #0xe - cmp r0, r1 - beq _021DAA98 - add r1, r2, #0 - sub r1, #0xf - cmp r0, r1 - beq _021DAA98 - add r2, #0x2a - cmp r0, r2 - beq _021DAA98 - cmp r0, #0x4b - bne _021DAA9C -_021DAA98: - mov r0, #1 - bx lr -_021DAA9C: - mov r0, #0 - bx lr - .balign 4, 0 -_021DAAA0: .word 0x000001BA - - thumb_func_start MOD05_021DAAA4 -MOD05_021DAAA4: ; 0x021DAAA4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x40 - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - add r6, r2, #0 - cmp r0, #5 - bls _021DAAB6 - b _021DAC60 -_021DAAB6: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DAAC2: ; jump table - .short _021DAACE - _021DAAC2 - 2 ; case 0 - .short _021DAB8E - _021DAAC2 - 2 ; case 1 - .short _021DABCE - _021DAAC2 - 2 ; case 2 - .short _021DABEE - _021DAAC2 - 2 ; case 3 - .short _021DAC16 - _021DAAC2 - 2 ; case 4 - .short _021DAC34 - _021DAAC2 - 2 ; case 5 -_021DAACE: - ldr r3, _021DAC68 ; =UNK05_021F64FC - add r2, sp, #0x20 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - cmp r6, #2 - bne _021DAAF8 - mov r0, #2 - str r0, [sp] - mov r2, #1 - str r2, [sp, #4] - add r0, sp, #0x30 - str r0, [sp, #8] - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - sub r2, r2, #2 - mov r3, #0 - bl FUN_0204A840 - b _021DAB10 -_021DAAF8: - mov r0, #2 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, sp, #0x30 - str r0, [sp, #8] - mov r2, #0 - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - add r3, r2, #0 - bl FUN_0204A840 -_021DAB10: - mov r0, #2 - strb r0, [r4, #0x1c] - add r0, sp, #0x1c - str r0, [sp] - add r0, sp, #0x18 - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x20 - mov r2, #4 - add r3, sp, #0x30 - bl FUN_0204A94C - cmp r0, #0 - beq _021DAB5E - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r6, r0, #0 - ldr r0, [sp, #0x1c] - bl MOD05_021E7EC8 - add r7, r0, #0 - ldr r0, [sp, #0x1c] - bl MOD05_021E7ECC - str r7, [sp] - str r0, [sp, #4] - str r6, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r3, [sp, #0x18] - mov r2, #2 - bl MOD05_021DA464 - b _021DAB68 -_021DAB5E: - bl ErrorHandling - add sp, #0x40 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DAB68: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAB82 - add r0, r5, #0 - mov r1, #0x49 - bl FUN_0205ADDC - b _021DAB86 -_021DAB82: - bl ErrorHandling -_021DAB86: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DAB8E: - mov r0, #1 - bl MOD05_021D7CA4 - ldr r0, [r5, #0x50] - ldr r3, _021DAC6C ; =0x00000615 - mov r1, #2 - mov r2, #0 - bl MOD05_021DA514 - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DABC2 - cmp r6, #3 - bne _021DABB8 - mov r1, #0xb - b _021DABBA -_021DABB8: - mov r1, #0xa -_021DABBA: - add r0, r5, #0 - bl FUN_0205ADDC - b _021DABC6 -_021DABC2: - bl ErrorHandling -_021DABC6: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DABCE: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAC60 - add r0, r5, #0 - mov r1, #0x4a - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DABEE: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAC60 - cmp r6, #3 - bne _021DAC06 - mov r1, #0xb - b _021DAC08 -_021DAC06: - mov r1, #0xa -_021DAC08: - add r0, r5, #0 - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DAC16: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DAC60 - add r0, r5, #0 - bl FUN_0205AE50 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAC60 -_021DAC34: - ldr r0, [r5, #0x50] - mov r1, #2 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DAC60 - bl FUN_0200E308 - cmp r0, #0 - beq _021DAC60 - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - mov r2, #2 - bl MOD05_021DA54C - ldr r0, _021DAC6C ; =0x00000615 - mov r1, #0 - bl FUN_020054F0 - add sp, #0x40 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DAC60: - mov r0, #0 - add sp, #0x40 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DAC68: .word UNK05_021F64FC -_021DAC6C: .word 0x00000615 - - thumb_func_start MOD05_021DAC70 -MOD05_021DAC70: ; 0x021DAC70 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x40 - add r4, r1, #0 - add r5, r0, #0 - ldr r0, [r4] - add r6, r2, #0 - cmp r0, #4 - bls _021DAC82 - b _021DAE04 -_021DAC82: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DAC8E: ; jump table - .short _021DAC98 - _021DAC8E - 2 ; case 0 - .short _021DAD5A - _021DAC8E - 2 ; case 1 - .short _021DAD94 - _021DAC8E - 2 ; case 2 - .short _021DADBA - _021DAC8E - 2 ; case 3 - .short _021DADD8 - _021DAC8E - 2 ; case 4 -_021DAC98: - ldr r3, _021DAE0C ; =UNK05_021F64EC - add r2, sp, #0x20 - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - ldmia r3!, {r0, r1} - stmia r2!, {r0, r1} - cmp r6, #2 - bne _021DACC2 - mov r0, #2 - str r0, [sp] - mov r2, #1 - str r2, [sp, #4] - add r0, sp, #0x30 - str r0, [sp, #8] - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - sub r2, r2, #2 - mov r3, #0 - bl FUN_0204A840 - b _021DACDA -_021DACC2: - mov r0, #2 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - add r0, sp, #0x30 - str r0, [sp, #8] - mov r2, #0 - ldr r0, [r4, #0x14] - ldr r1, [r4, #0x18] - add r3, r2, #0 - bl FUN_0204A840 -_021DACDA: - mov r0, #2 - strb r0, [r4, #0x1c] - add r0, sp, #0x1c - str r0, [sp] - add r0, sp, #0x18 - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x20 - mov r2, #4 - add r3, sp, #0x30 - bl FUN_0204A94C - cmp r0, #0 - beq _021DAD2A - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r6, r0, #0 - ldr r0, [sp, #0x1c] - bl MOD05_021E7EC8 - add r7, r0, #0 - ldr r0, [sp, #0x1c] - bl MOD05_021E7ECC - str r7, [sp] - str r0, [sp, #4] - str r6, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r3, [sp, #0x18] - mov r2, #2 - bl MOD05_021DA464 - b _021DAD34 -_021DAD2A: - bl ErrorHandling - add sp, #0x40 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DAD34: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAD4E - add r0, r5, #0 - mov r1, #0x49 - bl FUN_0205ADDC - b _021DAD52 -_021DAD4E: - bl ErrorHandling -_021DAD52: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAE04 -_021DAD5A: - ldr r0, [r5, #0x50] - ldr r3, _021DAE10 ; =0x00000615 - mov r1, #2 - mov r2, #0 - bl MOD05_021DA514 - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAD88 - cmp r6, #2 - bne _021DAD7E - mov r1, #0xa - b _021DAD80 -_021DAD7E: - mov r1, #0xb -_021DAD80: - add r0, r5, #0 - bl FUN_0205ADDC - b _021DAD8C -_021DAD88: - bl ErrorHandling -_021DAD8C: - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAE04 -_021DAD94: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AD98 - cmp r0, #1 - bne _021DAE04 - add r0, r5, #0 - mov r1, #0x4a - bl FUN_0205ADDC - mov r0, #0 - bl MOD05_021D7CA4 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAE04 -_021DADBA: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DAE04 - add r0, r5, #0 - bl FUN_0205AE50 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DAE04 -_021DADD8: - ldr r0, [r5, #0x50] - mov r1, #2 - bl MOD05_021DA58C - cmp r0, #0 - beq _021DAE04 - bl FUN_0200E308 - cmp r0, #0 - beq _021DAE04 - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - mov r2, #2 - bl MOD05_021DA54C - ldr r0, _021DAE10 ; =0x00000615 - mov r1, #0 - bl FUN_020054F0 - add sp, #0x40 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DAE04: - mov r0, #0 - add sp, #0x40 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DAE0C: .word UNK05_021F64EC -_021DAE10: .word 0x00000615 - - thumb_func_start MOD05_021DAE14 -MOD05_021DAE14: ; 0x021DAE14 - push {r3, r4, r5, lr} - add r4, r0, #0 - bl FUN_02046528 - add r5, r0, #0 - add r0, r4, #0 - bl FUN_0204652C - add r4, r0, #0 - ldrb r1, [r4] - ldr r0, [r5, #0x50] - bl MOD05_021DA58C - cmp r0, #0 - beq _021DAE3C - add r0, r4, #0 - bl FreeToHeap - mov r0, #1 - pop {r3, r4, r5, pc} -_021DAE3C: - mov r0, #0 - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021DAE40 -MOD05_021DAE40: ; 0x021DAE40 - push {r4, r5, r6, r7, lr} - sub sp, #0x84 - ldr r6, _021DAED0 ; =UNK05_021F65AC - str r3, [sp, #0x18] - add r5, r0, #0 - add r7, r1, #0 - add r4, sp, #0x34 - mov r3, #0xa -_021DAE50: - ldmia r6!, {r0, r1} - stmia r4!, {r0, r1} - sub r3, r3, #1 - bne _021DAE50 - mov r0, #3 - str r0, [sp] - mov r3, #1 - add r1, r2, #0 - str r3, [sp, #4] - add r0, sp, #0x24 - str r0, [sp, #8] - sub r2, r3, #2 - add r0, r7, #0 - mov r3, #0 - bl FUN_0204A840 - add r0, sp, #0x20 - str r0, [sp] - add r0, sp, #0x1c - str r0, [sp, #4] - add r0, r5, #0 - add r1, sp, #0x34 - mov r2, #0x14 - add r3, sp, #0x24 - bl FUN_0204A94C - cmp r0, #0 - beq _021DAEC8 - ldr r0, [r5, #0x4c] - ldr r1, [sp, #0x1c] - bl MOD05_021DA230 - add r4, r0, #0 - ldr r0, [r5, #0x2c] - bl MOD05_021F4C88 - add r6, r0, #0 - ldr r0, [sp, #0x20] - bl MOD05_021E7EC8 - add r7, r0, #0 - ldr r0, [sp, #0x20] - bl MOD05_021E7ECC - str r7, [sp] - str r0, [sp, #4] - str r6, [sp, #8] - str r4, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x4c] - ldr r1, [r5, #0x50] - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - bl MOD05_021DA464 - add sp, #0x84 - pop {r4, r5, r6, r7, pc} -_021DAEC8: - bl ErrorHandling - add sp, #0x84 - pop {r4, r5, r6, r7, pc} - .balign 4, 0 -_021DAED0: .word UNK05_021F65AC - - thumb_func_start MOD05_021DAED4 -MOD05_021DAED4: ; 0x021DAED4 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #0x50] - add r7, r1, #0 - bl MOD05_021DA5AC - add r6, r0, #0 - ldr r0, [r5, #0x4c] - add r1, r6, #0 - bl MOD05_021DA230 - add r4, r0, #0 - add r0, r6, #0 - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DAEFA - ldr r6, _021DAF20 ; =0x00000608 - b _021DAEFC -_021DAEFA: - ldr r6, _021DAF24 ; =0x00000605 -_021DAEFC: - cmp r4, #2 - bne _021DAF04 - mov r2, #0 - b _021DAF12 -_021DAF04: - cmp r4, #4 - bne _021DAF0C - mov r2, #0 - b _021DAF12 -_021DAF0C: - bl ErrorHandling - mov r2, #0 -_021DAF12: - ldr r0, [r5, #0x50] - add r1, r7, #0 - add r3, r6, #0 - bl MOD05_021DA514 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DAF20: .word 0x00000608 -_021DAF24: .word 0x00000605 - - thumb_func_start MOD05_021DAF28 -MOD05_021DAF28: ; 0x021DAF28 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - ldr r0, [r5, #0x50] - add r7, r1, #0 - bl MOD05_021DA5AC - add r6, r0, #0 - ldr r0, [r5, #0x4c] - add r1, r6, #0 - bl MOD05_021DA230 - add r4, r0, #0 - add r0, r6, #0 - bl MOD05_021DAA6C - cmp r0, #0 - beq _021DAF4E - mov r6, #0 - b _021DAF50 -_021DAF4E: - ldr r6, _021DAF74 ; =0x00000607 -_021DAF50: - cmp r4, #2 - bne _021DAF58 - mov r2, #1 - b _021DAF66 -_021DAF58: - cmp r4, #4 - bne _021DAF60 - mov r2, #1 - b _021DAF66 -_021DAF60: - bl ErrorHandling - mov r2, #1 -_021DAF66: - ldr r0, [r5, #0x50] - add r1, r7, #0 - add r3, r6, #0 - bl MOD05_021DA514 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DAF74: .word 0x00000607 - - thumb_func_start MOD05_021DAF78 -MOD05_021DAF78: ; 0x021DAF78 - push {r3, r4, r5, lr} - add r5, r0, #0 - add r4, r1, #0 - mov r0, #4 - mov r1, #1 - bl AllocFromHeapAtEnd - add r2, r0, #0 - strb r4, [r2] - ldr r0, [r5, #0x10] - ldr r1, _021DAF94 ; =MOD05_021DAE14 - bl FUN_0204640C - pop {r3, r4, r5, pc} - .balign 4, 0 -_021DAF94: .word MOD05_021DAE14 - - thumb_func_start MOD05_021DAF98 -MOD05_021DAF98: ; 0x021DAF98 - add r3, r0, #0 - add r2, r1, #0 - ldr r0, [r3, #0x4c] - ldr r1, [r3, #0x50] - ldr r3, _021DAFA4 ; =MOD05_021DA54C - bx r3 - .balign 4, 0 -_021DAFA4: .word MOD05_021DA54C - - thumb_func_start MOD05_021DAFA8 -MOD05_021DAFA8: ; 0x021DAFA8 - push {r4, r5, lr} - sub sp, #0x2c - add r5, r2, #0 - ldr r2, _021DB02C ; =UNK05_021F64E4 - add r4, r3, #0 - ldr r3, [r2] - ldr r2, [r2, #4] - str r3, [sp, #0xc] - str r2, [sp, #0x10] - mov r2, #1 - str r2, [sp] - mov r2, #3 - str r2, [sp, #4] - add r2, sp, #0x1c - str r2, [sp, #8] - mov r2, #0 - sub r3, r2, #1 - bl FUN_0204A840 - add r0, sp, #0x18 - str r0, [sp] - add r0, sp, #0x14 - str r0, [sp, #4] - add r0, r4, #0 - add r1, sp, #0xc - mov r2, #2 - add r3, sp, #0x1c - bl FUN_0204A94C - cmp r0, #0 - bne _021DAFEA - bl ErrorHandling -_021DAFEA: - ldr r0, [sp, #0x18] - bl MOD05_021E7EC8 - add r3, r0, #0 - ldr r0, [r4, #0x4c] - add r1, r5, #0 - str r0, [sp] - ldr r0, [sp, #0x14] - mov r2, #1 - bl MOD05_021D9DC0 - cmp r0, #0 - bne _021DB008 - bl ErrorHandling -_021DB008: - ldr r0, [sp, #0x14] - ldr r2, [r4, #0x4c] - add r1, r5, #0 - bl MOD05_021DA080 - add r4, r0, #0 - bl MOD05_021DA118 - add r0, r4, #0 - mov r1, #0 - bl MOD05_021DA0DC - add r0, r4, #0 - bl MOD05_021DA0E0 - add sp, #0x2c - pop {r4, r5, pc} - nop -_021DB02C: .word UNK05_021F64E4 - - thumb_func_start MOD05_021DB030 -MOD05_021DB030: ; 0x021DB030 - push {r3, lr} - mov r0, #4 - mov r1, #0x10 - bl AllocFromHeapAtEnd - mov r1, #0 - str r1, [r0] - pop {r3, pc} - - thumb_func_start MOD05_021DB040 -MOD05_021DB040: ; 0x021DB040 - push {r3, r4, r5, r6, lr} - sub sp, #0xc - add r4, r0, #0 - bl FUN_02046528 - add r5, r0, #0 - add r0, r4, #0 - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #3 - bhi _021DB126 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DB066: ; jump table - .short _021DB06E - _021DB066 - 2 ; case 0 - .short _021DB0CA - _021DB066 - 2 ; case 1 - .short _021DB0E8 - _021DB066 - 2 ; case 2 - .short _021DB106 - _021DB066 - 2 ; case 3 -_021DB06E: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - ldr r0, [r5, #0x38] - bl FUN_020552F8 - cmp r0, #1 - bne _021DB08C - add r0, r6, #0 - mov r1, #1 - bl FUN_0205889C - mov r0, #1 - b _021DB096 -_021DB08C: - add r0, r6, #0 - mov r1, #0 - bl FUN_0205889C - mov r0, #3 -_021DB096: - str r0, [r4] - mov r0, #0 - str r0, [r4, #8] - strb r0, [r4, #4] - ldr r0, [r5, #0x20] - bl FUN_0201F008 - strh r0, [r4, #0xc] - ldr r0, _021DB13C ; =0x0000FFA0 - ldr r1, [r5, #0x20] - bl FUN_0201EF2C - mov r0, #6 - str r0, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r0, #0xb - str r0, [sp, #8] - ldr r3, _021DB140 ; =0x00007FFF - mov r0, #0 - add r2, r1, #0 - bl FUN_0200E1D0 - mov r0, #1 - str r0, [r4, #8] - b _021DB126 -_021DB0CA: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - mov r1, #0 - bl FUN_0205889C - add r0, r6, #0 - mov r1, #0xd - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DB126 -_021DB0E8: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DB126 - add r0, r6, #0 - bl FUN_0205AE50 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DB126 -_021DB106: - bl FUN_0200E308 - cmp r0, #0 - beq _021DB126 - ldr r0, [r5, #0x20] - bl FUN_0201F008 - ldrh r1, [r4, #0xc] - cmp r1, r0 - bne _021DB126 - add r0, r4, #0 - bl FreeToHeap - add sp, #0xc - mov r0, #1 - pop {r3, r4, r5, r6, pc} -_021DB126: - ldr r0, [r4, #8] - cmp r0, #0 - beq _021DB134 - ldr r0, [r5, #0x20] - add r1, r4, #4 - bl MOD05_021DAA2C -_021DB134: - mov r0, #0 - add sp, #0xc - pop {r3, r4, r5, r6, pc} - nop -_021DB13C: .word 0x0000FFA0 -_021DB140: .word 0x00007FFF - - thumb_func_start MOD05_021DB144 -MOD05_021DB144: ; 0x021DB144 - push {r4, r5, lr} - sub sp, #0xc - add r5, r0, #0 - bl FUN_02046528 - add r4, r0, #0 - add r0, r5, #0 - bl FUN_0204652C - add r5, r0, #0 - ldr r0, [r5] - cmp r0, #0 - beq _021DB164 - cmp r0, #1 - beq _021DB1A0 - b _021DB1B4 -_021DB164: - ldr r0, [r4, #0x38] - bl FUN_020553A0 - mov r1, #1 - bl FUN_0205889C - mov r0, #0 - str r0, [r5, #8] - strb r0, [r5, #4] - ldr r0, _021DB1C8 ; =0x00000603 - bl FUN_020054C8 - mov r0, #6 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #0xb - str r0, [sp, #8] - mov r0, #0 - ldr r3, _021DB1CC ; =0x00007FFF - add r1, r0, #0 - add r2, r0, #0 - bl FUN_0200E1D0 - mov r0, #1 - str r0, [r5, #8] - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021DB1B4 -_021DB1A0: - bl FUN_0200E308 - cmp r0, #0 - beq _021DB1B4 - add r0, r5, #0 - bl FreeToHeap - add sp, #0xc - mov r0, #1 - pop {r4, r5, pc} -_021DB1B4: - ldr r0, [r5, #8] - cmp r0, #0 - beq _021DB1C2 - ldr r0, [r4, #0x20] - add r1, r5, #4 - bl MOD05_021DA9E8 -_021DB1C2: - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - .balign 4, 0 -_021DB1C8: .word 0x00000603 -_021DB1CC: .word 0x00007FFF - - thumb_func_start MOD05_021DB1D0 -MOD05_021DB1D0: ; 0x021DB1D0 - push {r4, r5, r6, lr} - sub sp, #0x10 - add r5, r0, #0 - bl FUN_02046528 - add r6, r0, #0 - add r0, r5, #0 - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #0 - beq _021DB1F0 - cmp r0, #1 - beq _021DB222 - b _021DB236 -_021DB1F0: - mov r0, #0 - str r0, [r4, #8] - strb r0, [r4, #4] - ldr r0, _021DB24C ; =0x00000603 - bl FUN_020054C8 - mov r1, #0 - str r1, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - mov r0, #0xb - str r0, [sp, #0xc] - add r0, r5, #0 - mov r2, #0x10 - add r3, r1, #0 - bl FUN_0204C1B4 - mov r0, #1 - str r0, [r4, #8] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DB236 -_021DB222: - bl FUN_0200E308 - cmp r0, #0 - beq _021DB236 - add r0, r4, #0 - bl FreeToHeap - add sp, #0x10 - mov r0, #1 - pop {r4, r5, r6, pc} -_021DB236: - ldr r0, [r4, #8] - cmp r0, #0 - beq _021DB244 - ldr r0, [r6, #0x20] - add r1, r4, #4 - bl MOD05_021DA9E8 -_021DB244: - mov r0, #0 - add sp, #0x10 - pop {r4, r5, r6, pc} - nop -_021DB24C: .word 0x00000603 - - thumb_func_start MOD05_021DB250 -MOD05_021DB250: ; 0x021DB250 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x18 - str r0, [sp, #0x10] - bl FUN_02046528 - add r5, r0, #0 - ldr r0, [sp, #0x10] - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #3 - bhi _021DB368 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DB276: ; jump table - .short _021DB27E - _021DB276 - 2 ; case 0 - .short _021DB30C - _021DB276 - 2 ; case 1 - .short _021DB32A - _021DB276 - 2 ; case 2 - .short _021DB348 - _021DB276 - 2 ; case 3 -_021DB27E: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - str r0, [sp, #0x14] - ldr r0, [r5, #0x38] - bl FUN_020552F8 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - cmp r7, #1 - bne _021DB2A0 - ldr r0, [sp, #0x14] - mov r1, #1 - bl FUN_0205889C - mov r0, #1 - b _021DB2AA -_021DB2A0: - ldr r0, [sp, #0x14] - mov r1, #0 - bl FUN_0205889C - mov r0, #3 -_021DB2AA: - str r0, [r4] - mov r0, #0 - str r0, [r4, #8] - strb r0, [r4, #4] - ldr r0, [r5, #0x20] - bl FUN_0201F008 - strh r0, [r4, #0xc] - ldr r0, _021DB37C ; =0x0000FFA0 - ldr r1, [r5, #0x20] - bl FUN_0201EF2C - cmp r7, #3 - bhi _021DB2EA - add r0, r7, r7 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DB2D2: ; jump table - .short _021DB2DA - _021DB2D2 - 2 ; case 0 - .short _021DB2DE - _021DB2D2 - 2 ; case 1 - .short _021DB2E2 - _021DB2D2 - 2 ; case 2 - .short _021DB2E6 - _021DB2D2 - 2 ; case 3 -_021DB2DA: - mov r6, #3 - b _021DB2EE -_021DB2DE: - mov r6, #5 - b _021DB2EE -_021DB2E2: - mov r6, #7 - b _021DB2EE -_021DB2E6: - mov r6, #0x27 - b _021DB2EE -_021DB2EA: - bl ErrorHandling -_021DB2EE: - mov r1, #0 - str r1, [sp] - mov r0, #6 - str r0, [sp, #4] - mov r3, #1 - str r3, [sp, #8] - mov r0, #0xb - str r0, [sp, #0xc] - ldr r0, [sp, #0x10] - add r2, r6, #0 - bl FUN_0204C1B4 - mov r0, #1 - str r0, [r4, #8] - b _021DB368 -_021DB30C: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - mov r1, #0 - bl FUN_0205889C - add r0, r6, #0 - mov r1, #0xd - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DB368 -_021DB32A: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DB368 - add r0, r6, #0 - bl FUN_0205AE50 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DB368 -_021DB348: - bl FUN_0200E308 - cmp r0, #0 - beq _021DB368 - ldr r0, [r5, #0x20] - bl FUN_0201F008 - ldrh r1, [r4, #0xc] - cmp r1, r0 - bne _021DB368 - add r0, r4, #0 - bl FreeToHeap - add sp, #0x18 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DB368: - ldr r0, [r4, #8] - cmp r0, #0 - beq _021DB376 - ldr r0, [r5, #0x20] - add r1, r4, #4 - bl MOD05_021DAA2C -_021DB376: - mov r0, #0 - add sp, #0x18 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 -_021DB37C: .word 0x0000FFA0 - - thumb_func_start MOD05_021DB380 -MOD05_021DB380: ; 0x021DB380 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x10 - add r7, r0, #0 - bl FUN_02046528 - add r5, r0, #0 - add r0, r7, #0 - bl FUN_0204652C - add r4, r0, #0 - ldr r0, [r4] - cmp r0, #3 - bhi _021DB446 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021DB3A6: ; jump table - .short _021DB3AE - _021DB3A6 - 2 ; case 0 - .short _021DB3F6 - _021DB3A6 - 2 ; case 1 - .short _021DB414 - _021DB3A6 - 2 ; case 2 - .short _021DB432 - _021DB3A6 - 2 ; case 3 -_021DB3AE: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r6, r0, #0 - ldr r0, [r5, #0x38] - bl FUN_020552F8 - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, #1 - bne _021DB3D0 - add r0, r6, #0 - mov r1, #1 - bl FUN_0205889C - mov r0, #1 - b _021DB3DA -_021DB3D0: - add r0, r6, #0 - mov r1, #0 - bl FUN_0205889C - mov r0, #3 -_021DB3DA: - str r0, [r4] - mov r1, #0 - mov r2, #1 - str r1, [sp] - mov r0, #6 - str r0, [sp, #4] - str r2, [sp, #8] - mov r0, #0xb - str r0, [sp, #0xc] - add r0, r7, #0 - add r3, r2, #0 - bl FUN_0204C1B4 - b _021DB446 -_021DB3F6: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - mov r1, #0 - bl FUN_0205889C - add r0, r5, #0 - mov r1, #0xd - bl FUN_0205ADDC - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DB446 -_021DB414: - ldr r0, [r5, #0x38] - bl FUN_020553A0 - add r5, r0, #0 - bl FUN_0205AE28 - cmp r0, #1 - bne _021DB446 - add r0, r5, #0 - bl FUN_0205AE50 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021DB446 -_021DB432: - bl FUN_0200E308 - cmp r0, #0 - beq _021DB446 - add r0, r4, #0 - bl FreeToHeap - add sp, #0x10 - mov r0, #1 - pop {r3, r4, r5, r6, r7, pc} -_021DB446: - mov r0, #0 - add sp, #0x10 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021DB44C -MOD05_021DB44C: ; 0x021DB44C - push {r4, r5, r6, lr} - add r6, r1, #0 - add r5, r0, #0 - cmp r6, #3 - blo _021DB45A - bl ErrorHandling -_021DB45A: - mov r0, #4 - mov r1, #0x14 - bl AllocFromHeap - add r4, r0, #0 - ldr r0, _021DB4AC ; =UNK05_021F65FC - lsl r1, r6, #2 - ldr r0, [r0, r1] - str r5, [r4, #0xc] - add r1, r4, #4 - bl MOD05_021DB61C - str r0, [r4] - mov r0, #0 - str r0, [r4, #8] - bl FUN_020126D8 - lsr r1, r0, #0x1f - add r1, r0, r1 - asr r3, r1, #1 - ldr r5, [r4] - mov r1, #0 - cmp r5, #0 - bls _021DB49E - ldr r2, [r4, #4] -_021DB48C: - ldr r0, [r2] - cmp r0, r3 - bls _021DB496 - str r1, [r4, #8] - b _021DB49E -_021DB496: - add r1, r1, #1 - add r2, #0x30 - cmp r1, r5 - blo _021DB48C -_021DB49E: - mov r0, #1 - str r0, [r4, #0x10] - add r0, r4, #0 - bl MOD05_021DB5D4 - add r0, r4, #0 - pop {r4, r5, r6, pc} - .balign 4, 0 -_021DB4AC: .word UNK05_021F65FC - - thumb_func_start MOD05_021DB4B0 -MOD05_021DB4B0: ; 0x021DB4B0 - push {r4, lr} - add r4, r0, #0 - bne _021DB4BA - bl ErrorHandling -_021DB4BA: - ldr r0, [r4] - add r0, r0, #4 - bl MOD05_021DB7A0 - ldr r1, [r4] - mov r0, #4 - bl FUN_02016A8C - mov r0, #0 - str r0, [r4] - pop {r4, pc} - - thumb_func_start MOD05_021DB4D0 -MOD05_021DB4D0: ; 0x021DB4D0 - push {r3, r4, r5, lr} - add r4, r0, #0 - bne _021DB4DA - bl ErrorHandling -_021DB4DA: - bl FUN_020126D8 - lsr r1, r0, #0x1f - add r1, r0, r1 - asr r0, r1, #1 - ldr r1, [r4] - cmp r1, #1 - bls _021DB528 - ldr r1, [r4, #8] - sub r5, r1, #1 - bmi _021DB4FA - mov r2, #0x30 - ldr r3, [r4, #4] - mul r2, r5 - ldr r2, [r3, r2] - b _021DB4FC -_021DB4FA: - mov r2, #0 -_021DB4FC: - mov r3, #0x30 - ldr r5, [r4, #4] - mul r3, r1 - ldr r1, [r5, r3] - cmp r0, r1 - bge _021DB50C - cmp r0, r2 - bge _021DB528 -_021DB50C: - ldr r0, [r4, #8] - add r1, r0, #1 - str r1, [r4, #8] - ldr r0, [r4] - cmp r1, r0 - blo _021DB51C - mov r0, #0 - str r0, [r4, #8] -_021DB51C: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _021DB528 - add r0, r4, #0 - bl MOD05_021DB5D4 -_021DB528: - pop {r3, r4, r5, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DB52C -MOD05_021DB52C: ; 0x021DB52C - push {r3, lr} - str r1, [r0, #0x10] - cmp r1, #0 - beq _021DB538 - bl MOD05_021DB5D4 -_021DB538: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DB53C -MOD05_021DB53C: ; 0x021DB53C - push {r3, r4, r5, r6, r7, lr} - sub sp, #8 - str r0, [sp, #4] - add r6, r1, #0 - mov r4, #0 - add r5, r0, #0 - add r7, r0, #0 -_021DB54A: - ldr r0, [sp, #4] - ldrb r1, [r0, #4] - mov r0, #1 - lsl r0, r4 - tst r0, r1 - beq _021DB578 - mov r0, #0x12 - ldrsh r0, [r5, r0] - mov r2, #0xe - mov r3, #0x10 - str r0, [sp] - ldrsh r2, [r5, r2] - ldrsh r3, [r5, r3] - add r0, r6, #0 - add r1, r4, #0 - bl MOD05_021DBC94 - ldrh r2, [r7, #6] - add r0, r6, #0 - add r1, r4, #0 - bl MOD05_021DBCBC - b _021DB592 -_021DB578: - mov r0, #0 - mov r2, #0 - str r0, [sp] - add r0, r6, #0 - add r1, r4, #0 - add r3, r2, #0 - bl MOD05_021DBC94 - add r0, r6, #0 - add r1, r4, #0 - mov r2, #0 - bl MOD05_021DBCBC -_021DB592: - add r4, r4, #1 - add r5, r5, #6 - add r7, r7, #2 - cmp r4, #4 - blt _021DB54A - ldr r1, [sp, #4] - mov r2, #0 - ldrh r1, [r1, #0x26] - add r0, r6, #0 - add r3, r2, #0 - bl MOD05_021DBCD0 - ldr r1, [sp, #4] - add r0, r6, #0 - ldrh r1, [r1, #0x28] - mov r2, #1 - bl MOD05_021DBCE4 - ldr r1, [sp, #4] - mov r2, #0 - ldrh r1, [r1, #0x2a] - add r0, r6, #0 - add r3, r2, #0 - bl MOD05_021DBCF8 - ldr r1, [sp, #4] - add r0, r6, #0 - ldrh r1, [r1, #0x2c] - mov r2, #1 - bl MOD05_021DBD0C - add sp, #8 - pop {r3, r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021DB5D4 -MOD05_021DB5D4: ; 0x021DB5D4 - add r3, r0, #0 - ldr r1, [r3, #8] - mov r0, #0x30 - mul r0, r1 - ldr r2, [r3, #4] - ldr r1, [r3, #0xc] - ldr r3, _021DB5E8 ; =MOD05_021DB53C - add r0, r2, r0 - bx r3 - nop -_021DB5E8: .word MOD05_021DB53C - - thumb_func_start MOD05_021DB5EC -MOD05_021DB5EC: ; 0x021DB5EC - push {r4, lr} - add r4, r0, #0 - mov r1, #0 - mov r2, #0x40 - bl FUN_020BC094 - add r0, r4, #0 - mov r1, #0 - mov r2, #0x80 - bl FUN_020BC094 - mov r2, #2 - add r0, r4, #0 - mov r1, #0 - lsl r2, r2, #8 - bl FUN_020BC094 - mov r2, #1 - add r0, r4, #0 - mov r1, #0 - lsl r2, r2, #0xa - bl FUN_020BC094 - pop {r4, pc} - - thumb_func_start MOD05_021DB61C -MOD05_021DB61C: ; 0x021DB61C - push {r4, r5, r6, r7, lr} - sub sp, #0x1fc - sub sp, #0x20 - add r2, r0, #0 - str r1, [sp] - mov r0, #4 - add r1, r2, #0 - bl FUN_020161A4 - mov r1, #0 - str r0, [sp, #0x14] - str r1, [sp, #8] - add r5, sp, #0x11c - mov r6, #1 - mov r7, #2 - add r4, r1, #0 -_021DB63C: - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - ldrsb r1, [r5, r4] - cmp r1, #0x45 - bne _021DB656 - ldrsb r1, [r5, r6] - cmp r1, #0x4f - bne _021DB656 - ldrsb r1, [r5, r7] - cmp r1, #0x46 - beq _021DB6A4 -_021DB656: - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - add r1, r5, #0 - mov r2, #0xd - bl FUN_0201C6C8 - ldr r1, [sp, #8] - add r1, r1, #1 - str r1, [sp, #8] -_021DB6A4: - mov r1, #0 - ldrsb r1, [r5, r1] - cmp r1, #0x45 - bne _021DB63C - mov r1, #1 - ldrsb r1, [r5, r1] - cmp r1, #0x4f - bne _021DB63C - mov r1, #2 - ldrsb r1, [r5, r1] - cmp r1, #0x46 - bne _021DB63C - ldr r0, [sp, #8] - mov r1, #0x30 - add r4, r0, #0 - mul r4, r1 - mov r0, #4 - add r1, r4, #0 - bl AllocFromHeap - ldr r1, [sp] - add r2, r4, #0 - str r0, [r1] - mov r1, #0 - bl MI_CpuFill8 - mov r1, #0 - str r1, [sp, #0x18] - ldr r1, [sp, #8] - ldr r0, [sp, #0x14] - cmp r1, #0 - ble _021DB78A - ldr r1, [sp, #0x18] - str r1, [sp, #0x10] -_021DB6E8: - ldr r1, [sp] - mov r2, #0xd - ldr r5, [r1] - ldr r1, [sp, #0x10] - add r4, r5, r1 - add r1, sp, #0x11c - bl FUN_0201C6C8 - str r0, [sp, #4] - add r0, sp, #0x11c - add r1, sp, #0x1c - mov r2, #0x2c - bl FUN_0201C6C8 - add r0, sp, #0x1c - bl FUN_0201C70C - ldr r1, [sp, #0x10] - add r6, r4, #0 - str r0, [r5, r1] - add r0, r4, #6 - mov r7, #0 - add r6, #0xe - str r0, [sp, #0xc] - add r5, r4, #0 -_021DB71A: - ldr r0, [sp, #4] - ldr r1, [sp, #0xc] - add r2, r6, #0 - bl MOD05_021DB7B4 - str r0, [sp, #4] - ldrh r1, [r5, #6] - ldr r0, _021DB79C ; =0x0000FFFF - cmp r1, r0 - beq _021DB73A - mov r0, #1 - ldrb r1, [r4, #4] - lsl r0, r7 - orr r0, r1 - strb r0, [r4, #4] - b _021DB73E -_021DB73A: - mov r0, #0 - strh r0, [r5, #6] -_021DB73E: - ldr r0, [sp, #0xc] - add r7, r7, #1 - add r0, r0, #2 - add r6, r6, #6 - add r5, r5, #2 - str r0, [sp, #0xc] - cmp r7, #4 - blt _021DB71A - add r1, r4, #0 - ldr r0, [sp, #4] - add r1, #0x26 - bl MOD05_021DB8A4 - add r1, r4, #0 - add r1, #0x28 - bl MOD05_021DB8A4 - add r1, r4, #0 - add r1, #0x2a - bl MOD05_021DB8A4 - add r4, #0x2c - add r1, r4, #0 - bl MOD05_021DB8A4 - add r1, sp, #0x11c - mov r2, #0xd - bl FUN_0201C6C8 - ldr r1, [sp, #0x10] - add r1, #0x30 - str r1, [sp, #0x10] - ldr r1, [sp, #0x18] - add r2, r1, #1 - ldr r1, [sp, #8] - str r2, [sp, #0x18] - cmp r2, r1 - blt _021DB6E8 -_021DB78A: - ldr r1, [sp, #0x14] - mov r0, #4 - bl FUN_02016A8C - ldr r0, [sp, #8] - add sp, #0x1fc - add sp, #0x20 - pop {r4, r5, r6, r7, pc} - nop -_021DB79C: .word 0x0000FFFF - - thumb_func_start MOD05_021DB7A0 -MOD05_021DB7A0: ; 0x021DB7A0 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4] - mov r0, #4 - bl FUN_02016A8C - mov r0, #0 - str r0, [r4] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DB7B4 -MOD05_021DB7B4: ; 0x021DB7B4 - push {r4, r5, r6, r7, lr} - sub sp, #0x1fc - sub sp, #0x20 - str r1, [sp, #4] - add r7, r2, #0 - add r1, sp, #0x11c - mov r2, #0xd - bl FUN_0201C6C8 - str r0, [sp] - add r0, sp, #0x11c - add r1, sp, #0x1c - mov r2, #0x2c - bl FUN_0201C6C8 - add r4, r0, #0 - add r0, sp, #0x1c - bl FUN_0201C70C - cmp r0, #1 - bne _021DB88C - mov r6, #0 - add r5, sp, #8 -_021DB7E2: - add r0, r4, #0 - add r1, sp, #0x1c - mov r2, #0x2c - bl FUN_0201C6C8 - add r4, r0, #0 - add r0, sp, #0x1c - bl FUN_0201C70C - strh r0, [r5] - add r6, r6, #1 - add r5, r5, #2 - cmp r6, #3 - blt _021DB7E2 - add r1, sp, #8 - ldrh r0, [r1, #4] - ldrh r2, [r1] - ldrh r1, [r1, #2] - lsl r0, r0, #0xa - mov r6, #0 - lsl r1, r1, #5 - orr r1, r2 - orr r1, r0 - ldr r0, [sp, #4] - add r5, sp, #0x10 - strh r1, [r0] -_021DB816: - add r0, r4, #0 - add r1, sp, #0x1c - mov r2, #0x2c - bl FUN_0201C6C8 - add r4, r0, #0 - add r0, sp, #0x1c - bl FUN_0201C70C - add r6, r6, #1 - stmia r5!, {r0} - cmp r6, #3 - blt _021DB816 - ldr r0, [sp, #0x10] - strh r0, [r7] - ldr r0, [sp, #0x14] - strh r0, [r7, #2] - ldr r0, [sp, #0x18] - strh r0, [r7, #4] - mov r0, #0 - ldrsh r1, [r7, r0] - mov r0, #1 - lsl r0, r0, #0xc - cmp r1, r0 - ble _021DB84A - strh r0, [r7] -_021DB84A: - mov r0, #0 - ldrsh r1, [r7, r0] - ldr r0, _021DB89C ; =0xFFFFF000 - cmp r1, r0 - bge _021DB856 - strh r0, [r7] -_021DB856: - mov r0, #2 - ldrsh r2, [r7, r0] - lsl r1, r0, #0xb - cmp r2, r1 - ble _021DB864 - lsl r0, r0, #0xb - strh r0, [r7, #2] -_021DB864: - mov r0, #2 - ldrsh r1, [r7, r0] - ldr r0, _021DB89C ; =0xFFFFF000 - cmp r1, r0 - bge _021DB870 - strh r0, [r7, #2] -_021DB870: - mov r0, #4 - ldrsh r2, [r7, r0] - lsl r1, r0, #0xa - cmp r2, r1 - ble _021DB87E - lsl r0, r0, #0xa - strh r0, [r7, #4] -_021DB87E: - mov r0, #4 - ldrsh r1, [r7, r0] - ldr r0, _021DB89C ; =0xFFFFF000 - cmp r1, r0 - bge _021DB892 - strh r0, [r7, #4] - b _021DB892 -_021DB88C: - ldr r1, _021DB8A0 ; =0x0000FFFF - ldr r0, [sp, #4] - strh r1, [r0] -_021DB892: - ldr r0, [sp] - add sp, #0x1fc - add sp, #0x20 - pop {r4, r5, r6, r7, pc} - nop -_021DB89C: .word 0xFFFFF000 -_021DB8A0: .word 0x0000FFFF - - thumb_func_start MOD05_021DB8A4 -MOD05_021DB8A4: ; 0x021DB8A4 - push {r3, r4, r5, r6, r7, lr} - sub sp, #0x1fc - sub sp, #0x14 - str r1, [sp, #4] - add r1, sp, #0x10c - add r1, #2 - mov r2, #0xd - bl FUN_0201C6C8 - add r6, sp, #0x10c - add r7, sp, #0xc - str r0, [sp] - add r6, #2 - mov r4, #0 - add r5, sp, #8 - add r7, #2 -_021DB8C4: - add r0, r6, #0 - add r1, r7, #0 - mov r2, #0x2c - bl FUN_0201C6C8 - add r6, r0, #0 - add r0, r7, #0 - bl FUN_0201C70C - strh r0, [r5] - add r4, r4, #1 - add r5, r5, #2 - cmp r4, #3 - blt _021DB8C4 - add r0, sp, #8 - ldrh r1, [r0, #4] - lsl r2, r1, #0xa - ldrh r1, [r0] - ldrh r0, [r0, #2] - lsl r0, r0, #5 - orr r0, r1 - add r1, r2, #0 - orr r1, r0 - ldr r0, [sp, #4] - strh r1, [r0] - ldr r0, [sp] - add sp, #0x1fc - add sp, #0x14 - pop {r3, r4, r5, r6, r7, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DB900 -MOD05_021DB900: ; 0x021DB900 - push {r4, lr} - mov r0, #4 - mov r1, #8 - bl AllocFromHeap - add r4, r0, #0 - bne _021DB912 - bl ErrorHandling -_021DB912: - add r0, r4, #0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DB918 -MOD05_021DB918: ; 0x021DB918 - push {r3, r4, r5, r6, lr} - sub sp, #0x4c - add r4, r0, #0 - add r0, sp, #4 - add r5, r1, #0 - bl FS_InitFile - add r0, sp, #4 - add r1, r4, #0 - bl FS_OpenFile - cmp r0, #0 - beq _021DB9B4 - add r1, sp, #0 - add r0, sp, #4 - add r1, #2 - mov r2, #2 - bl FS_ReadFile - cmp r0, #0 - bge _021DB946 - bl ErrorHandling -_021DB946: - add r0, sp, #4 - add r1, sp, #0 - mov r2, #2 - bl FS_ReadFile - cmp r0, #0 - bge _021DB958 - bl ErrorHandling -_021DB958: - add r0, sp, #0 - ldrh r1, [r0, #2] - ldrh r0, [r0] - lsl r6, r1, #2 - lsl r4, r0, #2 - mov r0, #4 - add r1, r6, #0 - bl AllocFromHeap - str r0, [r5] - cmp r0, #0 - bne _021DB974 - bl ErrorHandling -_021DB974: - mov r0, #4 - add r1, r4, #0 - bl AllocFromHeap - str r0, [r5, #4] - cmp r0, #0 - bne _021DB986 - bl ErrorHandling -_021DB986: - ldr r1, [r5] - add r0, sp, #4 - add r2, r6, #0 - bl FS_ReadFile - cmp r0, #0 - bge _021DB998 - bl ErrorHandling -_021DB998: - ldr r1, [r5, #4] - add r0, sp, #4 - add r2, r4, #0 - bl FS_ReadFile - cmp r0, #0 - bge _021DB9AA - bl ErrorHandling -_021DB9AA: - add r0, sp, #4 - bl FS_CloseFile - add sp, #0x4c - pop {r3, r4, r5, r6, pc} -_021DB9B4: - bl ErrorHandling - add sp, #0x4c - pop {r3, r4, r5, r6, pc} - - thumb_func_start MOD05_021DB9BC -MOD05_021DB9BC: ; 0x021DB9BC - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #4] - bl FreeToHeap - ldr r0, [r4] - bl FreeToHeap - add r0, r4, #0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start MOD05_021DB9D4 -MOD05_021DB9D4: ; 0x021DB9D4 - ldr r1, [r1] - lsl r0, r0, #2 - ldrh r0, [r1, r0] - strh r0, [r2] - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021DB9E0 -MOD05_021DB9E0: ; 0x021DB9E0 - push {r3, r4} - lsl r4, r0, #2 - ldr r0, [r1] - ldrh r0, [r0, r4] - strh r0, [r2] - ldr r0, [r1] - add r0, r0, r4 - ldrh r0, [r0, #2] - strh r0, [r3] - pop {r3, r4} - bx lr - .balign 4, 0 - - thumb_func_start MOD05_021DB9F8 -MOD05_021DB9F8: ; 0x021DB9F8 - ldr r1, [r1, #4] - lsl r0, r0, #2 - add r0, r1, r0 - bx lr - - thumb_func_start MOD05_021DBA00 -MOD05_021DBA00: ; 0x021DBA00 - push {r4, lr} - mov r0, #4 - mov r1, #0x38 - bl AllocFromHeap - add r4, r0, #0 - mov r0, #0 - add r1, r4, #0 - mov r2, #0x38 - bl MIi_CpuClear32 - add r0, r4, #0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBA1C -MOD05_021DBA1C: ; 0x021DBA1C - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4] - mov r0, #4 - bl FUN_02016A8C - mov r0, #0 - str r0, [r4] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBA30 -MOD05_021DBA30: ; 0x021DBA30 - ldr r0, [r0] - bx lr - - thumb_func_start MOD05_021DBA34 -MOD05_021DBA34: ; 0x021DBA34 - ldr r0, [r0, #8] - bx lr - - thumb_func_start MOD05_021DBA38 -MOD05_021DBA38: ; 0x021DBA38 - ldr r0, [r0, #0xc] - bx lr - - thumb_func_start MOD05_021DBA3C -MOD05_021DBA3C: ; 0x021DBA3C - ldrh r0, [r0, #0x10] - bx lr - - thumb_func_start MOD05_021DBA40 -MOD05_021DBA40: ; 0x021DBA40 - push {r4, lr} - add r4, r0, #0 - mov r0, #1 - tst r0, r1 - beq _021DBA4C - str r2, [r4] -_021DBA4C: - mov r0, #2 - tst r0, r1 - beq _021DBA54 - str r3, [r4, #4] -_021DBA54: - mov r0, #4 - tst r0, r1 - beq _021DBA5E - ldr r0, [sp, #8] - str r0, [r4, #8] -_021DBA5E: - mov r0, #8 - tst r0, r1 - beq _021DBA68 - ldr r0, [sp, #0xc] - str r0, [r4, #0xc] -_021DBA68: - ldr r0, [r4] - ldr r1, [r4, #4] - ldr r2, [r4, #8] - ldr r3, [r4, #0xc] - bl G3X_SetFog - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBA78 -MOD05_021DBA78: ; 0x021DBA78 - push {r3, r4} - mov r4, #0x10 - tst r4, r1 - beq _021DBA82 - strh r2, [r0, #0x10] -_021DBA82: - mov r2, #0x20 - tst r1, r2 - beq _021DBA8A - str r3, [r0, #0x14] -_021DBA8A: - ldrh r1, [r0, #0x10] - ldr r0, [r0, #0x14] - lsl r0, r0, #0x10 - orr r1, r0 - ldr r0, _021DBA9C ; =0x04000358 - str r1, [r0] - pop {r3, r4} - bx lr - nop -_021DBA9C: .word 0x04000358 - - thumb_func_start MOD05_021DBAA0 -MOD05_021DBAA0: ; 0x021DBAA0 - push {r4, lr} - add r4, r0, #0 - add r0, r1, #0 - add r1, r4, #0 - add r1, #0x18 - mov r2, #0x20 - bl MIi_CpuCopy32 - add r4, #0x18 - add r0, r4, #0 - bl G3X_SetFogTable - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBABC -MOD05_021DBABC: ; 0x021DBABC - push {r4, lr} - mov r0, #4 - mov r1, #0x48 - bl AllocFromHeap - add r4, r0, #0 - mov r0, #0 - add r1, r4, #0 - mov r2, #0x48 - bl MIi_CpuClear32 - add r0, r4, #0 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBAD8 -MOD05_021DBAD8: ; 0x021DBAD8 - push {r4, lr} - add r4, r0, #0 - ldr r1, [r4] - mov r0, #4 - bl FUN_02016A8C - mov r0, #0 - str r0, [r4] - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBAEC -MOD05_021DBAEC: ; 0x021DBAEC - push {r4, r5, r6, r7, lr} - sub sp, #0xc - str r0, [sp, #8] - add r7, r1, #0 - mov r4, #0 - add r5, r0, #0 - add r6, r0, #0 -_021DBAFA: - mov r0, #1 - lsl r0, r4 - tst r0, r7 - beq _021DBB14 - mov r1, #0 - mov r2, #2 - mov r3, #4 - ldrsh r1, [r5, r1] - ldrsh r2, [r5, r2] - ldrsh r3, [r5, r3] - add r0, r4, #0 - bl FUN_020B8418 -_021DBB14: - add r1, r4, #4 - mov r0, #1 - lsl r0, r1 - tst r0, r7 - beq _021DBB26 - ldrh r1, [r6, #0x18] - add r0, r4, #0 - bl FUN_020B8404 -_021DBB26: - add r4, r4, #1 - add r5, r5, #6 - add r6, r6, #2 - cmp r4, #4 - blt _021DBAFA - mov r0, #3 - lsl r0, r0, #8 - tst r0, r7 - beq _021DBB48 - ldr r0, [sp, #8] - ldr r1, [sp, #8] - ldr r2, [sp, #8] - ldrh r0, [r0, #0x20] - ldrh r1, [r1, #0x22] - ldr r2, [r2, #0x28] - bl FUN_020B83E0 -_021DBB48: - mov r0, #3 - lsl r0, r0, #0xa - tst r0, r7 - beq _021DBB60 - ldr r0, [sp, #8] - ldr r1, [sp, #8] - ldr r2, [sp, #8] - ldrh r0, [r0, #0x24] - ldrh r1, [r1, #0x26] - ldr r2, [r2, #0x2c] - bl FUN_020B83BC -_021DBB60: - mov r0, #1 - lsl r0, r0, #0xc - cmp r7, r0 - blt _021DBB88 - ldr r0, [sp, #8] - ldr r1, [sp, #8] - ldr r0, [r0, #0x40] - ldr r2, [sp, #8] - str r0, [sp] - ldr r0, [sp, #8] - ldr r3, [sp, #8] - ldr r0, [r0, #0x44] - str r0, [sp, #4] - ldr r0, [sp, #8] - ldr r1, [r1, #0x34] - ldr r0, [r0, #0x30] - ldr r2, [r2, #0x38] - ldr r3, [r3, #0x3c] - bl FUN_020B8390 -_021DBB88: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - - thumb_func_start MOD05_021DBB8C -MOD05_021DBB8C: ; 0x021DBB8C - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #1 - add r4, r2, #0 - lsl r0, r0, #8 - add r6, r1, #0 - tst r0, r4 - beq _021DBBA4 - ldrh r1, [r5, #0x20] - add r0, r6, #0 - bl FUN_020BBC34 -_021DBBA4: - mov r0, #2 - lsl r0, r0, #8 - tst r0, r4 - beq _021DBBB4 - ldrh r1, [r5, #0x22] - add r0, r6, #0 - bl FUN_020BBBF4 -_021DBBB4: - mov r0, #1 - lsl r0, r0, #0xa - tst r0, r4 - beq _021DBBC4 - ldrh r1, [r5, #0x24] - add r0, r6, #0 - bl FUN_020BBBB4 -_021DBBC4: - mov r0, #2 - lsl r0, r0, #0xa - tst r0, r4 - beq _021DBBD4 - ldrh r1, [r5, #0x26] - add r0, r6, #0 - bl FUN_020BBB74 -_021DBBD4: - mov r0, #1 - lsl r0, r0, #0xc - tst r0, r4 - beq _021DBBE4 - ldr r1, [r5, #0x30] - add r0, r6, #0 - bl FUN_020BBB34 -_021DBBE4: - mov r0, #2 - lsl r0, r0, #0xc - tst r0, r4 - beq _021DBBF4 - ldr r1, [r5, #0x34] - add r0, r6, #0 - bl FUN_020BBAF4 -_021DBBF4: - mov r0, #1 - lsl r0, r0, #0xe - tst r0, r4 - beq _021DBC04 - ldr r1, [r5, #0x38] - add r0, r6, #0 - bl FUN_020BBAB4 -_021DBC04: - mov r0, #2 - lsl r0, r0, #0xe - tst r0, r4 - beq _021DBC14 - ldr r1, [r5, #0x3c] - add r0, r6, #0 - bl FUN_020BBA74 -_021DBC14: - mov r0, #1 - lsl r0, r0, #0x10 - tst r0, r4 - beq _021DBC24 - ldr r1, [r5, #0x40] - add r0, r6, #0 - bl FUN_020BBA34 -_021DBC24: - mov r1, #2 - lsl r1, r1, #0x10 - add r0, r4, #0 - tst r0, r1 - beq _021DBC3A - ldr r2, [r5, #0x44] - lsr r1, r1, #2 - add r0, r6, #0 - and r1, r2 - bl FUN_020BB9F4 -_021DBC3A: - mov r1, #1 - lsl r1, r1, #0x12 - add r0, r4, #0 - tst r0, r1 - beq _021DBC50 - ldr r2, [r5, #0x44] - lsr r1, r1, #4 - add r0, r6, #0 - and r1, r2 - bl FUN_020BB9B4 -_021DBC50: - mov r1, #2 - lsl r1, r1, #0x12 - add r0, r4, #0 - tst r0, r1 - beq _021DBC66 - ldr r2, [r5, #0x44] - lsr r1, r1, #6 - add r0, r6, #0 - and r1, r2 - bl FUN_020BB974 -_021DBC66: - mov r1, #1 - lsl r1, r1, #0x14 - add r0, r4, #0 - tst r0, r1 - beq _021DBC7C - ldr r2, [r5, #0x44] - lsr r1, r1, #8 - add r0, r6, #0 - and r1, r2 - bl FUN_020BB934 -_021DBC7C: - mov r1, #2 - lsl r1, r1, #0x14 - add r0, r4, #0 - tst r0, r1 - beq _021DBC92 - ldr r2, [r5, #0x44] - lsr r1, r1, #0xa - add r0, r6, #0 - and r1, r2 - bl FUN_020BB8F4 -_021DBC92: - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021DBC94 -MOD05_021DBC94: ; 0x021DBC94 - push {r4, r5, r6, lr} - add r5, r0, #0 - mov r0, #6 - add r4, r1, #0 - mul r4, r0 - strh r2, [r5, r4] - add r2, r5, #2 - strh r3, [r2, r4] - add r6, sp, #0 - mov r0, #0x10 - ldrsh r0, [r6, r0] - add r3, r5, #4 - strh r0, [r3, r4] - add r0, r1, #0 - ldrsh r1, [r5, r4] - ldrsh r2, [r2, r4] - ldrsh r3, [r3, r4] - bl FUN_020B8418 - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021DBCBC -MOD05_021DBCBC: ; 0x021DBCBC - push {r4, lr} - add r4, r0, #0 - add r4, #0x18 - lsl r3, r1, #1 - strh r2, [r4, r3] - add r0, r1, #0 - ldrh r1, [r4, r3] - bl FUN_020B8404 - pop {r4, pc} - - thumb_func_start MOD05_021DBCD0 -MOD05_021DBCD0: ; 0x021DBCD0 - push {r3, lr} - strh r1, [r0, #0x20] - str r2, [r0, #0x28] - cmp r3, #1 - bne _021DBCE2 - mov r1, #1 - lsl r1, r1, #8 - bl MOD05_021DBAEC -_021DBCE2: - pop {r3, pc} - - thumb_func_start MOD05_021DBCE4 -MOD05_021DBCE4: ; 0x021DBCE4 - push {r3, lr} - strh r1, [r0, #0x22] - cmp r2, #1 - bne _021DBCF4 - mov r1, #2 - lsl r1, r1, #8 - bl MOD05_021DBAEC -_021DBCF4: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBCF8 -MOD05_021DBCF8: ; 0x021DBCF8 - push {r3, lr} - strh r1, [r0, #0x24] - str r2, [r0, #0x2c] - cmp r3, #1 - bne _021DBD0A - mov r1, #1 - lsl r1, r1, #0xa - bl MOD05_021DBAEC -_021DBD0A: - pop {r3, pc} - - thumb_func_start MOD05_021DBD0C -MOD05_021DBD0C: ; 0x021DBD0C - push {r3, lr} - strh r1, [r0, #0x26] - cmp r2, #1 - bne _021DBD1C - mov r1, #2 - lsl r1, r1, #0xa - bl MOD05_021DBAEC -_021DBD1C: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBD20 -MOD05_021DBD20: ; 0x021DBD20 - push {r3, lr} - str r1, [r0, #0x34] - cmp r2, #1 - bne _021DBD30 - mov r1, #2 - lsl r1, r1, #0xc - bl MOD05_021DBAEC -_021DBD30: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBD34 -MOD05_021DBD34: ; 0x021DBD34 - push {r3, lr} - str r1, [r0, #0x38] - cmp r2, #1 - bne _021DBD44 - mov r1, #1 - lsl r1, r1, #0xe - bl MOD05_021DBAEC -_021DBD44: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBD48 -MOD05_021DBD48: ; 0x021DBD48 - push {r3, lr} - str r1, [r0, #0x40] - cmp r2, #1 - bne _021DBD58 - mov r1, #1 - lsl r1, r1, #0x10 - bl MOD05_021DBAEC -_021DBD58: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBD5C -MOD05_021DBD5C: ; 0x021DBD5C - push {r3, lr} - cmp r2, #1 - ldr r2, [r0, #0x44] - bne _021DBD6A - tst r2, r1 - beq _021DBD6E - pop {r3, pc} -_021DBD6A: - tst r2, r1 - beq _021DBD80 -_021DBD6E: - ldr r2, [r0, #0x44] - eor r1, r2 - str r1, [r0, #0x44] - cmp r3, #1 - bne _021DBD80 - mov r1, #1 - lsl r1, r1, #0xc - bl MOD05_021DBAEC -_021DBD80: - pop {r3, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBD84 -MOD05_021DBD84: ; 0x021DBD84 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r7, r0, #0 - add r5, r1, #0 - mov r0, #0x18 - ldr r1, _021DBDE8 ; =UNK05_021F6608 - mul r0, r2 - add r6, r3, #0 - add r4, r1, r0 - cmp r2, #0x10 - blo _021DBD9E - bl ErrorHandling -_021DBD9E: - mov r0, #4 - bl FUN_0201EB64 - str r0, [r5, #0x20] - ldrb r0, [r4, #0xc] - add r2, r4, #4 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r5, #0x20] - str r0, [sp, #8] - ldrh r3, [r4, #0xe] - ldr r1, [r4] - add r0, r7, #0 - bl FUN_0201ECA8 - ldr r0, [r5, #0x20] - bl FUN_0201EB8C - ldr r0, [r4, #0x10] - ldr r1, [r4, #0x14] - ldr r2, [r5, #0x20] - bl FUN_0201EC94 - cmp r6, #0 - beq _021DBDE2 - ldr r0, [r5, #0x20] - mov r1, #6 - str r0, [sp] - mov r0, #7 - mov r2, #2 - mov r3, #4 - bl FUN_0201EABC -_021DBDE2: - add sp, #0xc - pop {r4, r5, r6, r7, pc} - nop -_021DBDE8: .word UNK05_021F6608 - - thumb_func_start MOD05_021DBDEC -MOD05_021DBDEC: ; 0x021DBDEC - push {r4, lr} - add r4, r0, #0 - bl FUN_0201EB98 - ldr r0, [r4, #0x20] - bl FUN_0201EB48 - ldr r0, [r4, #0x20] - bl FUN_0201EB70 - pop {r4, pc} - .balign 4, 0 - - thumb_func_start MOD05_021DBE04 -MOD05_021DBE04: ; 0x021DBE04 - push {r4, lr} - ldr r4, [r0, #0x18] - cmp r4, #0 - bne _021DBE10 - bl ErrorHandling -_021DBE10: - cmp r4, #5 - blt _021DBE18 - bl ErrorHandling -_021DBE18: - sub r0, r4, #1 - pop {r4, pc} - - thumb_func_start MOD05_021DBE1C -MOD05_021DBE1C: ; 0x021DBE1C - push {r4, lr} - add r4, r0, #0 - bl MOD05_021DBE04 - add r1, r0, #0 - lsl r2, r1, #4 - ldr r1, _021DBE34 ; =UNK05_021F6788 - add r0, r4, #0 - ldr r1, [r1, r2] - blx r1 - pop {r4, pc} - nop -_021DBE34: .word UNK05_021F6788 - - thumb_func_start MOD05_021DBE38 -MOD05_021DBE38: ; 0x021DBE38 - push {r4, lr} - add r4, r0, #0 - bl MOD05_021DBE04 - lsl r1, r0, #4 - ldr r0, _021DBE54 ; =UNK05_021F678C - ldr r1, [r0, r1] - cmp r1, #0 - bne _021DBE4E - mov r0, #1 - pop {r4, pc} -_021DBE4E: - add r0, r4, #0 - blx r1 - pop {r4, pc} - .balign 4, 0 -_021DBE54: .word UNK05_021F678C - - thumb_func_start MOD05_021DBE58 -MOD05_021DBE58: ; 0x021DBE58 - push {r4, lr} - add r4, r0, #0 - bl MOD05_021DBE04 - add r1, r0, #0 - lsl r2, r1, #4 - ldr r1, _021DBE70 ; =UNK05_021F6790 - add r0, r4, #0 - ldr r1, [r1, r2] - blx r1 - pop {r4, pc} - nop -_021DBE70: .word UNK05_021F6790 - - thumb_func_start MOD05_021DBE74 -MOD05_021DBE74: ; 0x021DBE74 - push {r4, lr} - add r4, r0, #0 - bl MOD05_021DBE04 - add r1, r0, #0 - lsl r2, r1, #4 - ldr r1, _021DBE8C ; =UNK05_021F6794 - add r0, r4, #0 - ldr r1, [r1, r2] - blx r1 - pop {r4, pc} - nop -_021DBE8C: .word UNK05_021F6794 - - thumb_func_start MOD05_021DBE90 -MOD05_021DBE90: ; 0x021DBE90 - ldr r3, _021DBE94 ; =MOD05_021EFAAC - bx r3 - .balign 4, 0 -_021DBE94: .word MOD05_021EFAAC - - thumb_func_start MOD05_021DBE98 -MOD05_021DBE98: ; 0x021DBE98 - ldr r3, _021DBE9C ; =FUN_02050E2C - bx r3 - .balign 4, 0 -_021DBE9C: .word FUN_02050E2C - - thumb_func_start MOD05_021DBEA0 -MOD05_021DBEA0: ; 0x021DBEA0 - push {r4, lr} - add r4, r0, #0 - ldr r0, _021DBEB8 ; =SDK_OVERLAY_MODULE_51_ID - mov r1, #2 - bl HandleLoadOverlay - add r0, r4, #0 - bl MOD51_02254A68 - add r4, #0x80 - str r0, [r4] - pop {r4, pc} - .balign 4, 0 -_021DBEB8: .word SDK_OVERLAY_MODULE_51_ID - - thumb_func_start MOD05_021DBEBC -MOD05_021DBEBC: ; 0x021DBEBC - ldr r3, _021DBEC0 ; =MOD05_021EFB14 - bx r3 - .balign 4, 0 -_021DBEC0: .word MOD05_021EFB14 - - thumb_func_start MOD05_021DBEC4 -MOD05_021DBEC4: ; 0x021DBEC4 - ldr r3, _021DBEC8 ; =FUN_02050E10 - bx r3 - .balign 4, 0 -_021DBEC8: .word FUN_02050E10 - - thumb_func_start MOD05_021DBECC -MOD05_021DBECC: ; 0x021DBECC - push {r3, lr} - add r0, #0x80 - ldr r0, [r0] - bl MOD51_02254AB8 - ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID - bl UnloadOverlayByID - pop {r3, pc} - nop -_021DBEE0: .word SDK_OVERLAY_MODULE_51_ID - - thumb_func_start MOD05_021DBEE4 -MOD05_021DBEE4: ; 0x021DBEE4 - ldr r3, _021DBEE8 ; =MOD05_021EFB50 - bx r3 - .balign 4, 0 -_021DBEE8: .word MOD05_021EFB50 - - thumb_func_start MOD05_021DBEEC -MOD05_021DBEEC: ; 0x021DBEEC - mov r0, #1 - bx lr - - thumb_func_start MOD05_021DBEF0 -MOD05_021DBEF0: ; 0x021DBEF0 - mov r0, #1 - bx lr - - thumb_func_start MOD05_021DBEF4 -MOD05_021DBEF4: ; 0x021DBEF4 - push {r3, lr} - mov r1, #0x42 - mov r0, #4 - lsl r1, r1, #2 - bl AllocFromHeap - cmp r0, #0 - beq _021DBF1E - mov r2, #0 - add r3, r0, #0 - add r1, r2, #0 -_021DBF0A: - strh r1, [r3, #0x14] - strh r1, [r3, #0x16] - str r1, [r3] - str r1, [r3, #8] - str r1, [r3, #0x10] - str r1, [r3, #0xc] - add r2, r2, #1 - add r3, #0x18 - cmp r2, #0xb - blt _021DBF0A -_021DBF1E: - pop {r3, pc} - - thumb_func_start MOD05_021DBF20 -MOD05_021DBF20: ; 0x021DBF20 - push {r3, r4, r5, r6, r7, lr} - mov r6, #0 - ldr r5, _021DBF4C ; =UNK05_021FD290 - add r7, r0, #0 - str r1, [sp] - add r4, r6, #0 -_021DBF2C: - ldr r1, [sp] - ldr r2, [r5] - add r0, r7, #0 - add r3, r4, #0 - bl MOD05_021DBF50 - cmp r0, #0 - blt _021DBF3E - add r6, r6, #1 -_021DBF3E: - add r4, r4, #1 - add r5, r5, #4 - cmp r4, #0xb - blt _021DBF2C - add r0, r6, #0 - pop {r3, r4, r5, r6, r7, pc} - nop -_021DBF4C: .word UNK05_021FD290 - - thumb_func_start MOD05_021DBF50 -MOD05_021DBF50: ; 0x021DBF50 - push {r4, r5, r6, r7, lr} - sub sp, #0x34 - add r6, r0, #0 - add r7, r1, #0 - str r2, [sp] - str r3, [sp, #4] - cmp r6, #0 - bne _021DBF68 - mov r0, #0 - add sp, #0x34 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_021DBF68: - mov r4, #0 - add r1, r6, #0 -_021DBF6C: - ldr r0, [r1, #0xc] - cmp r0, #0 - beq _021DBF7A - add r4, r4, #1 - add r1, #0x18 - cmp r4, #0xb - blt _021DBF6C -_021DBF7A: - cmp r4, #0xb - beq _021DBF82 - cmp r7, #0 - bne _021DBF8A -_021DBF82: - mov r0, #0 - add sp, #0x34 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_021DBF8A: - mov r0, #0x18 - add r5, r4, #0 - mul r5, r0 - ldr r1, [sp] - add r0, r7, #0 - bl FUN_0201C578 - str r0, [r6, r5] - ldr r0, [r6, r5] - cmp r0, #0 - bne _021DBFA8 - mov r0, #0 - add sp, #0x34 - mvn r0, r0 - pop {r4, r5, r6, r7, pc} -_021DBFA8: - ldr r1, [sp] - add r0, r7, #0 - bl FUN_0201C5FC - add r1, r6, r5 - str r0, [r1, #4] - ldr r1, _021DBFF4 ; =UNK05_021FD2BC - ldr r2, [sp, #4] - add r0, sp, #0xc - bl sprintf - add r7, r6, #0 - add r7, #0x10 - mov r0, #4 - add r1, sp, #0xc - bl FUN_020161A4 - str r0, [r7, r5] - add r0, r6, #0 - str r0, [sp, #8] - add r0, #0xc - str r0, [sp, #8] - ldr r0, [r7, r5] - mov r1, #4 - bl FUN_02016324 - ldr r1, [sp, #8] - str r0, [r1, r5] - add r0, r1, #0 - ldr r0, [r0, r5] - bl FUN_020BC0FC - add r1, r6, r5 - str r0, [r1, #8] - add r0, r4, #0 - add sp, #0x34 - pop {r4, r5, r6, r7, pc} - nop -_021DBFF4: .word UNK05_021FD2BC - - thumb_func_start MOD05_021DBFF8 -MOD05_021DBFF8: ; 0x021DBFF8 - push {r3, r4, r5, r6, r7, lr} - add r5, r0, #0 - beq _021DC064 - mov r4, #0 - ldr r7, _021DC068 ; =0x0000FFFF - add r6, r4, #0 -_021DC004: - ldr r0, [r5, #0xc] - cmp r0, #0 - beq _021DC05C - ldr r1, [r5, #0x10] - cmp r1, #0 - beq _021DC05C - ldrh r0, [r5, #0x14] - lsl r0, r0, #2 - add r0, r1, r0 - ldrh r1, [r0, #0x22] - ldrh r0, [r5, #0x16] - cmp r1, r0 - bhi _021DC058 - strh r6, [r5, #0x16] - ldrh r0, [r5, #0x14] - add r0, r0, #1 - strh r0, [r5, #0x14] - ldrh r0, [r5, #0x14] - ldr r1, [r5, #0x10] - lsl r0, r0, #2 - add r0, r1, r0 - ldrh r0, [r0, #0x20] - cmp r0, r7 - bne _021DC036 - strh r6, [r5, #0x14] -_021DC036: - ldrh r2, [r5, #0x14] - ldr r1, [r5, #0x10] - ldr r0, [r5, #8] - lsl r2, r2, #2 - add r1, r1, r2 - ldrh r1, [r1, #0x20] - lsl r1, r1, #0x18 - lsr r1, r1, #0x18 - bl FUN_0201C50C - add r2, r0, #0 - ldr r1, [r5] - ldr r3, [r5, #4] - mov r0, #0 - bl FUN_0201C2C8 - b _021DC05C -_021DC058: - add r0, r0, #1 - strh r0, [r5, #0x16] -_021DC05C: - add r4, r4, #1 - add r5, #0x18 - cmp r4, #0xb - blt _021DC004 -_021DC064: - pop {r3, r4, r5, r6, r7, pc} - nop -_021DC068: .word 0x0000FFFF - - thumb_func_start MOD05_021DC06C -MOD05_021DC06C: ; 0x021DC06C - push {r4, r5, r6, lr} - add r5, r0, #0 - beq _021DC092 - add r6, r5, #0 - mov r0, #0x18 - add r4, r1, #0 - mul r4, r0 - add r6, #0x10 - ldr r0, [r6, r4] - cmp r0, #0 - beq _021DC08A - bl FreeToHeap - mov r0, #0 - str r0, [r6, r4] -_021DC08A: - mov r1, #0 - add r0, r5, r4 - strh r1, [r0, #0x14] - strh r1, [r0, #0x16] -_021DC092: - pop {r4, r5, r6, pc} - - thumb_func_start MOD05_021DC094 -MOD05_021DC094: ; 0x021DC094 - push {r3, r4, r5, lr} - add r5, r0, #0 - beq _021DC0AA - mov r4, #0 -_021DC09C: - add r0, r5, #0 - add r1, r4, #0 - bl MOD05_021DC06C - add r4, r4, #1 - cmp r4, #0xb - blt _021DC09C -_021DC0AA: - pop {r3, r4, r5, pc} - - thumb_func_start MOD05_021DC0AC -MOD05_021DC0AC: ; 0x021DC0AC - push {r3, lr} - cmp r0, #0 - beq _021DC0B6 - bl FreeToHeap -_021DC0B6: - pop {r3, pc} - - 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} @@ -60260,144 +43528,6 @@ _021F6428: .word MOD05_021F57F0 .section .rodata - .global UNK05_021F64D8 -UNK05_021F64D8: ; 0x021F64D8 - .word 0x00001000, 0x00001000, 0x00001000 - - .global UNK05_021F64E4 -UNK05_021F64E4: ; 0x021F64E4 - .word 0x0000012F, 0x00000130 - - .global UNK05_021F64EC -UNK05_021F64EC: ; 0x021F64EC - .word 0x00000082, 0x00000083, 0x000001A9, 0x000001AA - - .global UNK05_021F64FC -UNK05_021F64FC: ; 0x021F64FC - .word 0x00000082, 0x00000083, 0x000001A9, 0x000001AA - - .global UNK05_021F650C -UNK05_021F650C: ; 0x021F650C - .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 - .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 - .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 - .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A - .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B - - .global UNK05_021F655C -UNK05_021F655C: ; 0x021F655C - .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 - .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 - .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 - .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A - .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B - - .global UNK05_021F65AC -UNK05_021F65AC: ; 0x021F65AC - .word 0x00000042, 0x00000043, 0x00000044, 0x00000045 - .word 0x000000F6, 0x00000046, 0x000001AB, 0x000001C8 - .word 0x00000104, 0x00000138, 0x00000139, 0x000001B6 - .word 0x000001BC, 0x000001B9, 0x000001BA, 0x0000012A - .word 0x000001E4, 0x00000080, 0x0000020F, 0x0000004B - - .global UNK05_021F65FC -UNK05_021F65FC: ; 0x021F65FC - .word UNK05_021FD1F8, UNK05_021FD1E0, UNK05_021FD210 - - .global UNK05_021F6608 -UNK05_021F6608: ; 0x021F6608 - .byte 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05 - .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x62, 0xCF, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 - .byte 0x4C, 0x37, 0x20, 0x00, 0x22, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x07 - .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x02, 0xD6, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 - .byte 0x9B, 0xB8, 0x61, 0x00, 0x62, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x81, 0x02 - .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x70, 0x6C, 0x00, 0x05, 0xC8, 0x13, 0x00, 0x03, 0xD6, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00 - .byte 0xDF, 0x28, 0x36, 0x00, 0x03, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x04 - .byte 0x00, 0x30, 0x07, 0x00, 0x00, 0x50, 0x4C, 0x00, 0xC1, 0xAE, 0x29, 0x00, 0x03, 0xD6, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x90, 0x09, 0x00, 0x00, 0x70, 0x40, 0x00 - .byte 0xC1, 0x6E, 0x29, 0x00, 0xE3, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07 - .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0xA0, 0x40, 0x00, 0xAC, 0x59, 0x16, 0x00, 0x23, 0xE3, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x0A, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 - .byte 0xB1, 0x25, 0x4B, 0x00, 0xC3, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x03 - .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x20, 0x6D, 0x00, 0x55, 0x3D, 0x2A, 0x00, 0xE3, 0xD6, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x05, 0x00, 0x60, 0x0E, 0x00, 0x00, 0x70, 0x46, 0x00 - .byte 0x3F, 0xE9, 0x23, 0x00, 0x03, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x06 - .byte 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00, 0x4C, 0x37, 0x20, 0x00, 0x03, 0xDE, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 - .byte 0x65, 0x97, 0x0A, 0x00, 0x44, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x15 - .byte 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0xDF, 0xDE, 0x28, 0x00, 0x22, 0xD9, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x05, 0x00, 0x60, 0x09, 0x00, 0x00, 0x40, 0x38, 0x00 - - .global UNK05_021F6788 -UNK05_021F6788: ; 0x021F6788 - .word MOD05_021DBE90 - - .global UNK05_021F678C -UNK05_021F678C: ; 0x021F678C - .word 0x00000000 - - .global UNK05_021F6790 -UNK05_021F6790: ; 0x021F6790 - .word MOD05_021DBEBC - - .global UNK05_021F6794 -UNK05_021F6794: ; 0x021F6794 - .word MOD05_021DBEE4, MOD05_021DBE98, 0x00000000, MOD05_021DBEC4 - .word MOD05_021DBEF0, MOD05_021DBEA0, 0x00000000, MOD05_021DBECC - .word MOD05_021DBEEC, MOD05_021EFBB4, 0x00000000, MOD05_021EFBCC - .word MOD05_021EFBD8 - - .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 @@ -63326,176 +46456,7 @@ UNK05_021FD1B8: ; 0x021FD1B8 .section .data - .global UNK05_021FD1E0 -UNK05_021FD1E0: ; 0x021FD1E0 - .asciz "data/area01light.txt" - - .balign 4 - .global UNK05_021FD1F8 -UNK05_021FD1F8: ; 0x021FD1F8 - .asciz "data/area00light.txt" - - .balign 4 - .global UNK05_021FD210 -UNK05_021FD210: ; 0x021FD210 - .asciz "data/area02light.txt" - - .balign 4 - .global UNK05_021FD228 -UNK05_021FD228: ; 0x021FD228 - .asciz "sea" - - .balign 4 - .global UNK05_021FD22C -UNK05_021FD22C: ; 0x021FD22C - .asciz "rhana" - - .balign 4 - .global UNK05_021FD234 -UNK05_021FD234: ; 0x021FD234 - .asciz "hamabe" - - .balign 4 - .global UNK05_021FD23C -UNK05_021FD23C: ; 0x021FD23C - .asciz "asasea" - .balign 4 - .global UNK05_021FD244 -UNK05_021FD244: ; 0x021FD244 - .asciz "lakep.1" - - .balign 4 - .global UNK05_021FD24C -UNK05_021FD24C: ; 0x021FD24C - .asciz "dun_sea" - - .balign 4 - .global UNK05_021FD254 -UNK05_021FD254: ; 0x021FD254 - .asciz "t3_fl_p.1" - - .balign 4 - .global UNK05_021FD260 -UNK05_021FD260: ; 0x021FD260 - .asciz "t3_fl_r.1" - - .balign 4 - .global UNK05_021FD26C -UNK05_021FD26C: ; 0x021FD26C - .asciz "t3_fl_y.1" - - .balign 4 - .global UNK05_021FD278 -UNK05_021FD278: ; 0x021FD278 - .asciz "asahamabe" - - .balign 4 - .global UNK05_021FD284 -UNK05_021FD284: ; 0x021FD284 - .asciz "t3_fl_b.1" - - .balign 4 - .global UNK05_021FD290 -UNK05_021FD290: ; 0x021FD290 - .word UNK05_021FD228, UNK05_021FD22C, UNK05_021FD23C, UNK05_021FD234 - .word UNK05_021FD278, UNK05_021FD284, UNK05_021FD254, UNK05_021FD260 - .word UNK05_021FD26C, UNK05_021FD24C, UNK05_021FD244 - - .global UNK05_021FD2BC -UNK05_021FD2BC: ; 0x021FD2BC - .asciz "data/fld_anime%d.bin" - - .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 |