diff options
author | red031000 <rubenru09@aol.com> | 2020-05-01 20:40:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-01 20:40:36 +0100 |
commit | db2a8afd2f3c5e2a38083a3dc47d65e7848f0fd2 (patch) | |
tree | 2e36e7a0f63a66c44512b417faa0ba1eb5fbe655 | |
parent | e370125c3e2e34936152768c40bd932b88690baa (diff) | |
parent | 1531e217c7d80aaaeb551a08966a99db6fc55225 (diff) |
Merge pull request #53 from PikalaxALT/pikalax_work
Pikalax work
-rw-r--r-- | arm9/arm9.lcf | 32 | ||||
-rw-r--r-- | arm9/global.inc | 487 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 62877 | ||||
-rw-r--r-- | arm9/modules/06/asm/module_06.s | 298 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 37 |
5 files changed, 63726 insertions, 5 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 42b0a8ee..302a83e6 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -15,8 +15,8 @@ MEMORY { MODULE_02 (RWX) : ORIGIN=0, LENGTH=0 MODULE_03 (RWX) : ORIGIN=0, LENGTH=0 MODULE_04 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_05 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_06 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_05 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 + MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 MODULE_07 (RWX) : ORIGIN=0, LENGTH=0 MODULE_08 (RWX) : ORIGIN=0, LENGTH=0 MODULE_09 (RWX) : ORIGIN=0, LENGTH=0 @@ -355,15 +355,39 @@ SECTIONS { { thumb_04.o (.text) arm_04.o (.text) + thumb_04.o (.data) arm_04.o (.data) } > MODULE_04 .MODULE.04.bss : { + thumb_04.o (.sbss) + arm_04.o (.sbss) + thumb_04.o (.bss) arm_04.o (.bss) } >> MODULE_04 - OVERLAY_FILE(05, 0x141400, FILE_145400.o) - OVERLAY_FILE(06, 0x167600, FILE_16B600.o) + .MODULE.05 : AT (0x141400) + { + module_05.o (.text) + module_05.o (.data) + } > MODULE_05 + .MODULE.05.bss : + { + module_05.o (.sbss) + module_05.o (.bss) + } >> MODULE_05 + + .MODULE.06 : AT (0x167600) + { + module_06.o (.text) + module_06.o (.data) + } > MODULE_06 + .MODULE.06.bss : + { + module_06.o (.sbss) + module_06.o (.bss) + } >> MODULE_06 + OVERLAY_FILE(07, 0x180400, FILE_184400.o) OVERLAY_FILE(08, 0x183800, FILE_187800.o) OVERLAY_FILE(09, 0x19F000, FILE_1A3000.o) diff --git a/arm9/global.inc b/arm9/global.inc index 7d1f4ccb..0c2ce68e 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3804,6 +3804,491 @@ .extern thunk_FUN_020afda0_2
.extern thunk_FUN_020b5040
.extern wcslen
-
+.extern FUN_0200CA98
+.extern FUN_020C5D8C
+.extern FUN_021D7A20
+.extern FUN_021D7A28
+.extern FUN_021E8648
+.extern GX_GetBankForBGExtPltt
+.extern GX_GetBankForBGExtPltt_2
+.extern GX_GetBankForSubOBJ
+.extern GX_GetBankForSubBGExtPltt
+.extern GX_GetBankForSubBGExtPltt_2
+.extern GX_GetBankForTexPltt
.extern FUN_0209105C
.extern FUN_020910A4
+.extern FUN_0200143C
+.extern FUN_02001C34
+.extern FUN_02002F9C
+.extern FUN_02006584
+.extern FUN_020067D0
+.extern FUN_02006864
+.extern FUN_02008A74
+.extern FUN_02008F90
+.extern FUN_0200923C
+.extern FUN_020092F8
+.extern FUN_02009358
+.extern FUN_0200945C
+.extern FUN_02009474
+.extern FUN_02009490
+.extern FUN_02009530
+.extern FUN_02009660
+.extern FUN_020096DC
+.extern FUN_02009710
+.extern FUN_0200973C
+.extern FUN_02009768
+.extern FUN_0200979C
+.extern FUN_02009D68
+.extern FUN_02009FD8
+.extern FUN_0200A03C
+.extern FUN_0200B3C0
+.extern FUN_0200CA60
+.extern FUN_02012944
+.extern FUN_02012974
+.extern FUN_02012988
+.extern FUN_0201299C
+.extern FUN_020129B4
+.extern FUN_02012A00
+.extern FUN_02012A30
+.extern FUN_02012AC4
+.extern FUN_02012B00
+.extern FUN_02012B20
+.extern FUN_02012B30
+.extern FUN_02012B68
+.extern FUN_02013724
+.extern FUN_020137D4
+.extern FUN_02013980
+.extern FUN_02013998
+.extern FUN_020162FC
+.extern FUN_02016324
+.extern FUN_02016B20
+.extern FUN_02017B60
+.extern FUN_02017F48
+.extern FUN_02018768
+.extern FUN_0201AB28
+.extern FUN_0201AB44
+.extern FUN_0201B254
+.extern FUN_0201B26C
+.extern FUN_0201B2A8
+.extern FUN_0201B2EC
+.extern FUN_0201B398
+.extern FUN_0201B3A8
+.extern FUN_0201B3C4
+.extern FUN_0201B578
+.extern FUN_0201B580
+.extern FUN_0201B60C
+.extern FUN_0201C2C8
+.extern FUN_0201C50C
+.extern FUN_0201C578
+.extern FUN_0201C5FC
+.extern FUN_0201C6C8
+.extern FUN_0201C70C
+.extern FUN_0201C7A0
+.extern FUN_0201C7A8
+.extern FUN_0201C878
+.extern FUN_0201CAA8
+.extern FUN_0201CB20
+.extern FUN_0201CB7C
+.extern FUN_0201D060
+.extern FUN_0201EABC
+.extern FUN_0201EB48
+.extern FUN_0201EB98
+.extern FUN_0201ECA8
+.extern FUN_0201EF2C
+.extern FUN_0201F008
+.extern FUN_0201F010
+.extern FUN_0201F014
+.extern FUN_0201F02C
+.extern FUN_0201F03C
+.extern FUN_0201F100
+.extern FUN_0201F140
+.extern FUN_0201F178
+.extern FUN_0201F1B4
+.extern FUN_0201F23C
+.extern FUN_0201F2C0
+.extern FUN_0201F2D8
+.extern FUN_0201F6E8
+.extern FUN_0201F744
+.extern FUN_0201F7A4
+.extern FUN_0201F7C8
+.extern FUN_0201F7E0
+.extern FUN_0201F80C
+.extern FUN_0201F820
+.extern FUN_0201F830
+.extern FUN_0201F844
+.extern FUN_0201F86C
+.extern FUN_0201F880
+.extern FUN_0201F890
+.extern FUN_0201F8C0
+.extern FUN_0201F8E0
+.extern FUN_0201F8F0
+.extern FUN_0201FCB0
+.extern FUN_0201FF84
+.extern FUN_02020064
+.extern FUN_02020074
+.extern FUN_02020088
+.extern FUN_020200D8
+.extern FUN_020200EC
+.extern FUN_02020238
+.extern FUN_0202027C
+.extern FUN_020202A0
+.extern FUN_02020350
+.extern FUN_02020E90
+.extern FUN_02020ED4
+.extern FUN_02020EF8
+.extern FUN_02020F54
+.extern FUN_02020FF0
+.extern FUN_02021050
+.extern FUN_020210AC
+.extern FUN_020210F0
+.extern FUN_02021158
+.extern FUN_020211AC
+.extern FUN_020211BC
+.extern FUN_020211CC
+.extern FUN_0202134C
+.extern FUN_0202227C
+.extern FUN_020239F4
+.extern FUN_02023C74
+.extern FUN_02023C7C
+.extern FUN_02023C80
+.extern FUN_02023C84
+.extern FUN_02023C8C
+.extern FUN_02023C98
+.extern FUN_02023CA0
+.extern FUN_02023CA8
+.extern FUN_02023CB8
+.extern FUN_02023CC0
+.extern FUN_02023CC8
+.extern FUN_02023CF0
+.extern FUN_02023D3C
+.extern FUN_020267C4
+.extern FUN_02026810
+.extern FUN_02026840
+.extern FUN_020283A4
+.extern FUN_0202842C
+.extern FUN_02028468
+.extern FUN_02029F08
+.extern FUN_0202A9BC
+.extern FUN_0202A9C0
+.extern FUN_0202A9C4
+.extern FUN_0202A9C8
+.extern FUN_02031C10
+.extern FUN_020339B4
+.extern FUN_02033A70
+.extern FUN_02034554
+.extern FUN_02034574
+.extern FUN_02034578
+.extern FUN_02034660
+.extern FUN_02034724
+.extern FUN_02034738
+.extern FUN_020347D8
+.extern FUN_02034B18
+.extern FUN_02034B54
+.extern FUN_02034B5C
+.extern FUN_02034DC0
+.extern FUN_02034E2C
+.extern FUN_02035080
+.extern FUN_02035118
+.extern FUN_0203515C
+.extern FUN_02037090
+.extern FUN_020370BC
+.extern FUN_020371D0
+.extern FUN_02037230
+.extern FUN_02037264
+.extern FUN_02046A20
+.extern FUN_02046F70
+.extern FUN_020489DC
+.extern FUN_020489FC
+.extern FUN_02049718
+.extern FUN_02049D9C
+.extern FUN_0204A138
+.extern FUN_0204A1D8
+.extern FUN_0204A29C
+.extern FUN_0204A6B4
+.extern FUN_0204A840
+.extern FUN_0204A8C4
+.extern FUN_0204A94C
+.extern FUN_0204AE5C
+.extern FUN_0204B0F8
+.extern FUN_0204B388
+.extern FUN_0204B3B8
+.extern FUN_0204B490
+.extern FUN_0204BA68
+.extern FUN_0204BA90
+.extern FUN_0204BEB8
+.extern FUN_0204C1B4
+.extern FUN_0204C260
+.extern FUN_0204C29C
+.extern FUN_0204CA80
+.extern FUN_0204CA90
+.extern FUN_0204F6B4
+.extern FUN_0204F88C
+.extern FUN_02050A68
+.extern FUN_02050DF0
+.extern FUN_02052044
+.extern FUN_02054590
+.extern FUN_02054690
+.extern FUN_020546E0
+.extern FUN_02054744
+.extern FUN_0205478C
+.extern FUN_020547B0
+.extern FUN_020547BC
+.extern FUN_020547C8
+.extern FUN_020547D4
+.extern FUN_020547E0
+.extern FUN_020547EC
+.extern FUN_020547F8
+.extern FUN_02054804
+.extern FUN_02054810
+.extern FUN_0205481C
+.extern FUN_02054878
+.extern FUN_02054884
+.extern FUN_020548C0
+.extern FUN_020548CC
+.extern FUN_020548D8
+.extern FUN_020548E4
+.extern FUN_020548FC
+.extern FUN_02054908
+.extern FUN_02054914
+.extern FUN_02054920
+.extern FUN_0205492C
+.extern FUN_02054938
+.extern FUN_02054944
+.extern FUN_02054950
+.extern FUN_0205495C
+.extern FUN_02054968
+.extern FUN_02054984
+.extern FUN_020549A0
+.extern FUN_02054A0C
+.extern FUN_02054A18
+.extern FUN_02054A48
+.extern FUN_02054A54
+.extern FUN_02054AF0
+.extern FUN_02054B14
+.extern FUN_02054B30
+.extern FUN_02054B3C
+.extern FUN_02054B48
+.extern FUN_02054B54
+.extern FUN_02054B60
+.extern FUN_02054B6C
+.extern FUN_02054B78
+.extern FUN_02055108
+.extern FUN_02055314
+.extern FUN_02055360
+.extern FUN_02055370
+.extern FUN_02055378
+.extern FUN_020553A8
+.extern FUN_020553DC
+.extern FUN_020553E0
+.extern FUN_02055408
+.extern FUN_02055410
+.extern FUN_02055450
+.extern FUN_02055454
+.extern FUN_020555A0
+.extern FUN_020556B4
+.extern FUN_0205574C
+.extern FUN_02055764
+.extern FUN_02055898
+.extern FUN_02056B74
+.extern FUN_02057020
+.extern FUN_020570C4
+.extern FUN_0205714C
+.extern FUN_02057254
+.extern FUN_02057260
+.extern FUN_02057278
+.extern FUN_020573C8
+.extern FUN_02057614
+.extern FUN_020576A8
+.extern FUN_02057750
+.extern FUN_020577A8
+.extern FUN_020580F4
+.extern FUN_0205829C
+.extern FUN_020582A8
+.extern FUN_02058368
+.extern FUN_0205837C
+.extern FUN_02058384
+.extern FUN_02058390
+.extern FUN_0205839C
+.extern FUN_020583A0
+.extern FUN_020583A4
+.extern FUN_020583AC
+.extern FUN_020583BC
+.extern FUN_020583D4
+.extern FUN_020583F0
+.extern FUN_020583F4
+.extern FUN_02058410
+.extern FUN_02058418
+.extern FUN_02058424
+.extern FUN_0205842C
+.extern FUN_02058450
+.extern FUN_02058498
+.extern FUN_020584AC
+.extern FUN_020584C4
+.extern FUN_020584D4
+.extern FUN_0205854C
+.extern FUN_02058578
+.extern FUN_02058604
+.extern FUN_02058628
+.extern FUN_020586A0
+.extern FUN_020586DC
+.extern FUN_02058720
+.extern FUN_02058744
+.extern FUN_02058768
+.extern FUN_02058774
+.extern FUN_020587E0
+.extern FUN_02058804
+.extern FUN_02058830
+.extern FUN_02058884
+.extern FUN_02058920
+.extern FUN_02058934
+.extern FUN_02058A18
+.extern FUN_02058A68
+.extern FUN_02058A9C
+.extern FUN_02058AB4
+.extern FUN_02058B30
+.extern FUN_02058B40
+.extern FUN_02058B50
+.extern FUN_02058B5C
+.extern FUN_02058B6C
+.extern FUN_02058B84
+.extern FUN_02058B94
+.extern FUN_02058BA4
+.extern FUN_02058BC4
+.extern FUN_02059918
+.extern FUN_02059BF4
+.extern FUN_02059C00
+.extern FUN_02059C60
+.extern FUN_02059C90
+.extern FUN_02059E60
+.extern FUN_02059E9C
+.extern FUN_0205AD98
+.extern FUN_0205ADDC
+.extern FUN_0205AE50
+.extern FUN_0205AFDC
+.extern FUN_0205C334
+.extern FUN_0205C340
+.extern FUN_0205C598
+.extern FUN_0205CDB4
+.extern FUN_0205CDD8
+.extern FUN_0205DB44
+.extern FUN_0205E0A8
+.extern FUN_0205E4A4
+.extern FUN_0205ED7C
+.extern FUN_0205ED9C
+.extern FUN_0205EEB8
+.extern FUN_0205F1E4
+.extern FUN_0205F3E8
+.extern FUN_0205F408
+.extern FUN_0205F41C
+.extern FUN_0205F42C
+.extern FUN_0205F43C
+.extern FUN_0205F44C
+.extern FUN_0205F56C
+.extern FUN_0205F780
+.extern FUN_0205F790
+.extern FUN_020619C0
+.extern FUN_020643C0
+.extern FUN_020643F0
+.extern FUN_020644E4
+.extern FUN_02064520
+.extern FUN_02064584
+.extern FUN_02064738
+.extern FUN_02064754
+.extern FUN_0206475C
+.extern FUN_0206476C
+.extern FUN_0206477C
+.extern FUN_02064E4C
+.extern FUN_02067960
+.extern FUN_020687C8
+.extern FUN_02068884
+.extern FUN_020688E8
+.extern FUN_020689E8
+.extern FUN_02068A20
+.extern FUN_020690AC
+.extern FUN_020690E8
+.extern FUN_02069558
+.extern FUN_02069698
+.extern FUN_02069708
+.extern FUN_02069818
+.extern FUN_02069BA0
+.extern FUN_02069BB4
+.extern FUN_02069BFC
+.extern FUN_0206A16C
+.extern FUN_0206B938
+.extern FUN_02087A6C
+.extern FUN_02087A84
+.extern FUN_02087A98
+.extern FUN_02087B0C
+.extern FUN_02087B58
+.extern FUN_020AF6A4
+.extern FUN_020AFA30
+.extern FUN_020B7E28
+.extern FUN_020B7EFC
+.extern FUN_020B8110
+.extern FUN_020B8344
+.extern FUN_020B8390
+.extern FUN_020B83BC
+.extern FUN_020B83E0
+.extern FUN_020B8404
+.extern FUN_020B8418
+.extern FUN_020BB8D0
+.extern FUN_020BB8F4
+.extern FUN_020BB934
+.extern FUN_020BB974
+.extern FUN_020BB9B4
+.extern FUN_020BB9F4
+.extern FUN_020BBA34
+.extern FUN_020BBA74
+.extern FUN_020BBAB4
+.extern FUN_020BBAF4
+.extern FUN_020BBB34
+.extern FUN_020BBB74
+.extern FUN_020BBBB4
+.extern FUN_020BBBF4
+.extern FUN_020BBC34
+.extern FUN_020BC094
+.extern FUN_020BC4C8
+.extern FUN_0223BA04
+.extern FUN_0223BE70
+.extern FUN_0223C08C
+.extern FUN_0223CDB8
+.extern FUN_0223D8F4
+.extern FUN_0223DC98
+.extern FUN_0223DCB4
+.extern FUN_0223DCD0
+.extern FUN_0223E2C4
+.extern FUN_0223E2DC
+.extern FUN_02242404
+.extern FUN_022426AC
+.extern FUN_02249B7C
+.extern FUN_0224A130
+.extern FUN_0224A6B8
+.extern FUN_0224A6FC
+.extern FUN_0224A8D4
+.extern FUN_0224AA40
+.extern FUN_0224ADF8
+.extern FUN_0224AEE8
+.extern FUN_0224AF68
+.extern FUN_0224ED94
+.extern FUN_0224EDA8
+.extern FUN_0224F0BC
+.extern FUN_0224F0D0
+.extern FUN_02252440
+.extern FUN_02252448
+.extern FUN_022524BC
+.extern FUN_022524D0
+.extern FUN_022524DC
+.extern FUN_022524F4
+.extern FUN_02252504
+.extern FUN_02254A68
+.extern FUN_02254AB8
+.extern FX_Atan
+.extern G3X_SetEdgeColorTable
+.extern G3X_SetFogTable
+.extern G3X_SetHOffset
+.extern GX_GetBankForLCDC
+.extern MTX_Identity22_
+.extern MTX_RotX43_
+.extern MTX_RotY43_
+.extern thunk_FUN_020ae84c
+.extern VEC_MultAdd
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s new file mode 100644 index 00000000..cc439346 --- /dev/null +++ b/arm9/modules/05/asm/module_05.s @@ -0,0 +1,62877 @@ + .include "asm/macros.inc" + .include "global.inc + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021D74E0 +MOD05_021D74E0: ; 0x021D74E0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_0201AB60 + bl FUN_0201C30C + bl FUN_02009F80 + ldr r0, [r4, #0x34] + bl FUN_020583A0 + bl MOD05_021F2D48 + bl FUN_0201F2D8 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D7504 +MOD05_021D7504: ; 0x021D7504 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r6, #0 + bl FUN_0200628C + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #3 + bls _021D7518 + b _021D7666 +_021D7518: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7524: ; jump table + .short _021D752C - _021D7524 - 2 ; case 0 + .short _021D75DE - _021D7524 - 2 ; case 1 + .short _021D7654 - _021D7524 - 2 ; case 2 + .short _021D765A - _021D7524 - 2 ; case 3 +_021D752C: + add r0, r6, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + ldr r1, _021D7670 ; =0x04000050 + add r0, r6, #0 + strh r0, [r1] + ldr r1, _021D7674 ; =0x04001050 + strh r0, [r1] + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + add r0, r4, #0 + bl FUN_020489DC + ldr r0, [r4, #0x70] + ldr r0, [r0] + lsl r0, r0, #8 + lsr r0, r0, #0x1c + beq _021D7564 + ldr r0, _021D7678 ; =0x00000006 + mov r1, #2 + bl FUN_02005FDC +_021D7564: + ldr r2, [r4, #0x70] + mov r0, #3 + ldr r2, [r2, #4] + mov r1, #4 + bl FUN_0201681C + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D757A + bl ErrorHandling +_021D757A: + mov r0, #4 + mov r1, #0x28 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x28 + str r0, [r4, #4] + bl MI_CpuFill8 + add r0, r4, #0 + mov r1, #4 + mov r2, #8 + bl MOD05_021D7F4C + ldr r1, [r4, #4] + str r0, [r1, #4] + bl MOD05_021D7A00 + mov r0, #0x80 + mov r1, #4 + bl FUN_0201C24C + mov r0, #4 + add r1, r0, #0 + bl FUN_0201F100 + mov r0, #4 + bl FUN_0201B2EC + bl MOD05_021D7BA0 + bl MOD05_021D7B38 + bl FUN_0201E7A0 + mov r0, #4 + bl FUN_02016B94 + str r0, [r4, #8] + bl MOD05_021D7A30 + mov r0, #0 + mov r1, #1 + bl FUN_02054590 + add r0, r4, #0 + mov r1, #4 + bl FUN_0203989C + b _021D7666 +_021D75DE: + bl MOD05_021D7CF0 + ldr r0, [r4, #0x2c] + bl MOD05_021F49AC + mov r0, #4 + bl MOD05_021E7C00 + add r1, r4, #0 + add r1, #0xa0 + str r0, [r1] + add r0, r4, #0 + bl MOD05_021F5B9C + add r0, r4, #0 + bl MOD05_021D7D4C + add r0, r4, #0 + bl MOD05_021D7D98 + add r0, r4, #0 + bl MOD05_021D7E4C + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DEC + add r1, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #0xc] + bl MOD05_021DC124 + ldr r1, [r4, #0x1c] + add r0, r4, #0 + ldr r1, [r1] + bl FUN_0204ADBC + add r0, r4, #0 + mov r1, #3 + bl FUN_0203989C + mov r0, #4 + bl MOD05_021F45B4 + ldr r1, [r4, #4] + str r0, [r1, #0x1c] + ldr r0, [r4, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #4] + mov r0, #4 + ldr r1, [r1, #0x1c] + bl MOD05_021F46C8 + ldr r1, [r4, #4] + str r0, [r1, #0x20] + b _021D7666 +_021D7654: + bl MOD05_021DBE1C + b _021D7666 +_021D765A: + bl MOD05_021DBE38 + cmp r0, #0 + beq _021D7666 + mov r6, #1 + str r6, [r4, #0x64] +_021D7666: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021D7670: .word 0x04000050 +_021D7674: .word 0x04001050 +_021D7678: .word 0x00000006 + + thumb_func_start MOD05_021D767C +MOD05_021D767C: ; 0x021D767C + push {r4, lr} + bl FUN_0200628C + add r4, r0, #0 + bl MOD05_021D7864 + cmp r0, #0 + beq _021D76A8 + add r0, r4, #0 + bl FUN_0204B490 + add r0, r4, #0 + bl MOD05_021D79B4 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD05_021EFA9C + add r0, r4, #0 + bl MOD05_021D7894 +_021D76A8: + add r0, r4, #0 + mov r1, #0xf + bl MOD05_021D795C + ldr r0, [r4, #0x64] + cmp r0, #0 + beq _021D76BA + mov r0, #0 + pop {r4, pc} +_021D76BA: + mov r0, #1 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D76C0 +MOD05_021D76C0: ; 0x021D76C0 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_0200628C + add r4, r0, #0 + ldr r1, [r4, #0x24] + bl MOD05_021EE52C + ldr r0, [r5] + cmp r0, #0 + beq _021D76E2 + cmp r0, #1 + beq _021D7782 + cmp r0, #2 + bne _021D76E0 + b _021D7806 +_021D76E0: + b _021D785A +_021D76E2: + add r0, r4, #0 + bl FUN_0205CDD8 + ldr r0, [r4, #0x24] + bl MOD05_021EF5FC + ldr r0, [r4, #0x38] + bl FUN_02055320 + ldr r1, [r4, #0x1c] + str r0, [r1, #8] + ldr r0, [r4, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x1c] + str r0, [r1, #0xc] + ldr r0, [r4, #0x38] + bl FUN_020552F8 + ldr r1, [r4, #0x1c] + str r0, [r1, #0x10] + add r0, r4, #0 + add r0, #0x9c + ldr r0, [r0] + bl MOD05_021F450C + ldr r0, [r4, #0x4c] + cmp r0, #0 + bne _021D7720 + bl ErrorHandling +_021D7720: + ldr r0, [r4, #0x24] + bl MOD05_021EF514 + ldr r0, [r4, #0x4c] + bl MOD05_021D9F48 + ldr r0, [r4, #0x4c] + bl MOD05_021DA018 + add r0, r4, #0 + add r0, #0x50 + bl MOD05_021DA450 + ldr r0, [r4, #4] + ldr r0, [r0, #0x10] + bl MOD05_021DC094 + ldr r0, [r4, #4] + ldr r0, [r0, #0x10] + bl MOD05_021DC0AC + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [r4, #0x34] + bl FUN_02057750 + ldr r0, [r4, #0x34] + bl MOD05_021F1D2C + ldr r0, [r4, #0x34] + bl FUN_02058768 + ldr r0, [r4, #0x3c] + bl MOD05_021E4BA8 + ldr r0, [r4, #0x30] + bl MOD05_021D7F44 + mov r0, #0 + str r0, [r4, #0x30] + add r4, #0xa0 + ldr r0, [r4] + bl MOD05_021E7C14 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D785A +_021D7782: + ldr r0, [r4, #0x24] + bl MOD05_021EF5C4 + cmp r0, #1 + bne _021D785A + add r0, r4, #0 + add r0, #0x2c + bl MOD05_021F4BF8 + ldr r0, [r4, #0x24] + bl MOD05_021EF5A8 + add r0, r4, #0 + add r0, #0xa4 + bl MOD05_021F4D1C + add r0, r4, #0 + bl MOD05_021DBDEC + add r0, r4, #0 + add r0, #0x48 + bl MOD05_021DB4B0 + ldr r0, [r4, #0x60] + bl MOD05_021E8110 + ldr r0, [r4, #4] + ldr r0, [r0, #8] + bl MOD05_021E3248 + ldr r0, [r4, #4] + ldr r0, [r0, #0xc] + bl MOD05_021DC0F8 + ldr r0, [r4, #4] + ldr r0, [r0, #0x20] + bl MOD05_021F4704 + ldr r0, [r4, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45C8 + ldr r0, [r4, #4] + ldr r0, [r0, #0x18] + bl FUN_0204B3B8 + add r0, r4, #0 + add r0, #0x44 + bl MOD05_021DBA1C + add r0, r4, #0 + add r0, #0x40 + bl MOD05_021DBAD8 + bl MOD05_021D7B5C + ldr r0, [r4, #8] + bl MOD05_021D7B10 + add r0, r4, #0 + bl MOD05_021DBE58 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D785A +_021D7806: + add r0, r4, #0 + bl MOD05_021DBE74 + cmp r0, #0 + beq _021D785A + bl MOD05_021D7BD4 + bl FUN_0201F140 + bl FUN_0201C29C + bl FUN_0201B398 + ldr r0, [r4, #4] + ldr r0, [r0, #4] + bl MOD05_021D7F9C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, [r4, #8] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4, #4] + mov r0, #4 + bl FUN_020168D0 + ldr r0, [r4, #0x70] + ldr r0, [r0] + lsl r0, r0, #8 + lsr r0, r0, #0x1c + beq _021D7856 + ldr r0, _021D7860 ; =0x00000006 + bl FUN_02005F60 +_021D7856: + mov r0, #1 + pop {r3, r4, r5, pc} +_021D785A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D7860: .word 0x00000006 + + thumb_func_start MOD05_021D7864 +MOD05_021D7864: ; 0x021D7864 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + ldr r2, [r5, #0x1c] + ldr r1, [r2, #8] + cmp r4, r1 + bne _021D7884 + ldr r1, [r2, #0xc] + cmp r0, r1 + beq _021D788E +_021D7884: + str r4, [r2, #8] + ldr r1, [r5, #0x1c] + str r0, [r1, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} +_021D788E: + mov r0, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D7894 +MOD05_021D7894: ; 0x021D7894 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + asr r1, r0, #4 + lsr r1, r1, #0x1b + add r1, r0, r1 + ldr r0, [r5, #0x38] + asr r4, r1, #5 + bl FUN_0205532C + asr r1, r0, #4 + lsr r1, r1, #0x1b + add r1, r0, r1 + asr r2, r1, #5 + ldr r0, [r5, #0x28] + add r1, r4, #0 + bl FUN_0203451C + add r4, r0, #0 + ldr r0, [r5, #0x1c] + ldr r6, [r0] + cmp r4, r6 + bne _021D78CE + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D78CE: + ldr r0, [r5, #0xc] + bl FUN_02034E30 + add r7, r0, #0 + ldr r0, [r5, #0x1c] + add r1, r4, #0 + str r4, [r0] + add r0, r5, #0 + bl FUN_02034A60 + add r0, r5, #0 + mov r1, #1 + bl FUN_020489FC + add r0, r5, #0 + bl FUN_02034B64 + str r0, [sp, #4] + add r0, r5, #0 + bl FUN_02034B6C + str r0, [sp] + ldr r0, [r5, #0x34] + ldr r3, [sp, #4] + add r1, r6, #0 + add r2, r4, #0 + bl FUN_020573C8 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0205DD40 + ldr r1, [r5, #0x1c] + add r0, r5, #0 + ldr r1, [r1] + bl FUN_0204AB58 + add r1, r0, #0 + add r0, r5, #0 + mov r2, #1 + bl FUN_0204ABDC + add r0, r5, #0 + bl FUN_02034AC8 + add r0, r7, #0 + bl FUN_02034DEC + add r1, r0, #0 + ldr r0, [r5, #4] + ldr r0, [r0, #0xc] + bl MOD05_021DC174 + add r0, r6, #0 + bl FUN_02034824 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02034824 + add r1, r0, #0 + cmp r6, r1 + beq _021D7956 + ldr r0, [r5, #4] + ldr r0, [r0, #8] + bl MOD05_021E3270 +_021D7956: + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021D795C +MOD05_021D795C: ; 0x021D795C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0204646C + cmp r0, #0 + bne _021D7970 + add r0, r5, #0 + bl FUN_0204B0F8 +_021D7970: + ldr r0, [r5, #0x48] + bl MOD05_021DB4D0 + add r0, r5, #0 + bl MOD05_021E8158 + mov r0, #1 + tst r0, r4 + beq _021D798A + ldr r0, [r5, #4] + ldr r0, [r0, #0x10] + bl MOD05_021DBFF8 +_021D798A: + mov r0, #8 + tst r0, r4 + beq _021D7996 + ldr r0, [r5, #0x4c] + bl MOD05_021DA1AC +_021D7996: + mov r0, #2 + tst r0, r4 + beq _021D79A4 + ldr r1, [r5, #0x24] + add r0, r5, #0 + bl MOD05_021EE52C +_021D79A4: + mov r0, #4 + tst r0, r4 + beq _021D79B0 + add r0, r5, #0 + bl MOD05_021D7BE0 +_021D79B0: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D79B4 +MOD05_021D79B4: ; 0x021D79B4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl FUN_02034908 + cmp r0, #0 + beq _021D79FE + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034E0C + add r7, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + asr r1, r0, #4 + lsr r1, r1, #0x1b + add r1, r0, r1 + ldr r0, [r5, #0x38] + asr r6, r1, #5 + bl FUN_0205532C + asr r1, r0, #4 + lsr r1, r1, #0x1b + add r1, r0, r1 + ldr r0, [r5, #0x38] + asr r4, r1, #5 + bl FUN_020552F8 + add r3, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0204AE5C +_021D79FE: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021D7A00 +MOD05_021D7A00: ; 0x021D7A00 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7A1C ; =0x021F64A0 + add r3, sp, #0 + mov r2, #5 +_021D7A0A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7A0A + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .balign 4, 0 +_021D7A1C: .word 0x021F64A0 + + thumb_func_start MOD05_021D7A20 +MOD05_021D7A20: ; 0x021D7A20 + ldr r3, _021D7A24 ; =MOD05_021D7A30 + bx r3 + .balign 4, 0 +_021D7A24: .word MOD05_021D7A30 + + thumb_func_start MOD05_021D7A28 +MOD05_021D7A28: ; 0x021D7A28 + ldr r3, _021D7A2C ; =MOD05_021D7B10 + bx r3 + .balign 4, 0 +_021D7A2C: .word MOD05_021D7B10 + + thumb_func_start MOD05_021D7A30 +MOD05_021D7A30: ; 0x021D7A30 + push {r3, r4, r5, lr} + sub sp, #0x68 + ldr r5, _021D7B00 ; =0x021F643C + add r3, sp, #0x58 + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D7B04 ; =0x021F6468 + add r3, sp, #0x3c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _021D7B08 ; =0x021F644C + add r3, sp, #0x20 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _021D7B0C ; =0x021F6484 + add r3, sp, #4 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r0, #0 + add r1, sp, #0 + strh r0, [r1] + mov r1, #2 + bl DC_FlushRange + add r0, sp, #0 + mov r1, #0 + mov r2, #2 + bl GX_LoadBGPltt + add sp, #0x68 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021D7B00: .word 0x021F643C +_021D7B04: .word 0x021F6468 +_021D7B08: .word 0x021F644C +_021D7B0C: .word 0x021F6484 + + thumb_func_start MOD05_021D7B10 +MOD05_021D7B10: ; 0x021D7B10 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xf + mov r1, #0 + bl FUN_0201E6E4 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D7B38 +MOD05_021D7B38: ; 0x021D7B38 + push {lr} + sub sp, #0x14 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7c + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x1f + str r3, [sp, #0xc] + mov r2, #4 + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add sp, #0x14 + pop {pc} + + thumb_func_start MOD05_021D7B5C +MOD05_021D7B5C: ; 0x021D7B5C + ldr r3, _021D7B60 ; =0x02009FA1 + bx r3 + .balign 4, 0 +_021D7B60: .word 0x02009FA1 + + thumb_func_start MOD05_021D7B64 +MOD05_021D7B64: ; 0x021D7B64 + push {r4, lr} + mov r1, #0 + add r4, r0, #0 + add r2, r1, #0 + bl MOD05_021DBD20 + add r0, r4, #0 + mov r1, #2 + mov r2, #0 + bl MOD05_021DBD34 + add r0, r4, #0 + mov r1, #0x1f + mov r2, #0 + bl MOD05_021DBD48 + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #0xe + mov r2, #1 + mov r3, #0 + bl MOD05_021DBD5C + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0x16 + bl MOD05_021DBAEC + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D7BA0 +MOD05_021D7BA0: ; 0x021D7BA0 + push {r4, lr} + sub sp, #0x10 + ldr r4, _021D7BD0 ; =0x021F642C + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #0x10 + add r0, r2, #0 + add r2, r1, #0 + bl FUN_0201D060 + mov r0, #0x14 + mov r1, #4 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .balign 4, 0 +_021D7BD0: .word 0x021F642C + + thumb_func_start MOD05_021D7BD4 +MOD05_021D7BD4: ; 0x021D7BD4 + push {r3, lr} + bl FUN_0201D12C + bl FUN_0201E08C + pop {r3, pc} + + thumb_func_start MOD05_021D7BE0 +MOD05_021D7BE0: ; 0x021D7BE0 + push {r3, r4, r5, lr} + sub sp, #0x80 + add r4, r0, #0 + bl FUN_020222AC + bl FUN_0201EBA4 + add r0, r4, #0 + bl FUN_0205E0A8 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x40] + bl MOD05_021EF4C4 + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r4, #0x2c] + bl MOD05_021E805C + ldr r5, _021D7C98 ; =0x021CED20 + add r3, sp, #0x40 + mov r2, #8 +_021D7C0E: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7C0E + add r5, sp, #0x40 + add r3, sp, #0 + mov r2, #8 +_021D7C1C: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D7C1C + ldr r3, [sp, #0x28] + ldr r1, [sp, #0x38] + asr r0, r3, #0x1f + lsr r2, r3, #0x12 + lsl r0, r0, #0xe + orr r0, r2 + mov r2, #2 + lsl r5, r3, #0xe + mov r3, #0 + lsl r2, r2, #0xa + add r2, r5, r2 + adc r0, r3 + lsl r0, r0, #0x14 + lsr r2, r2, #0xc + orr r2, r0 + add r0, r1, r2 + str r0, [sp, #0x38] + ldr r1, _021D7C98 ; =0x021CED20 + add r0, sp, #0 + mov r2, #0x40 + bl MIi_CpuCopyFast + ldr r1, _021D7C9C ; =0x021CED98 + mov r0, #0x50 + ldr r2, [r1, #0x7c] + bic r2, r0 + str r2, [r1, #0x7c] + bl FUN_020B849C + ldr r0, [r4, #0x3c] + bl MOD05_021E4BA0 + bl FUN_0201F178 + ldr r1, _021D7C98 ; =0x021CED20 + add r0, sp, #0x40 + mov r2, #0x40 + bl MIi_CpuCopyFast + ldr r1, _021D7C9C ; =0x021CED98 + mov r0, #0x50 + ldr r2, [r1, #0x7c] + bic r2, r0 + str r2, [r1, #0x7c] + bl FUN_020B849C + ldr r0, [r4, #4] + ldr r0, [r0, #4] + bl MOD05_021D7FD0 + ldr r1, _021D7CA0 ; =0x02105BB8 + mov r0, #0 + ldr r1, [r1] + bl FUN_020222B4 + add sp, #0x80 + pop {r3, r4, r5, pc} + nop +_021D7C98: .word 0x021CED20 +_021D7C9C: .word 0x021CED98 +_021D7CA0: .word 0x02105BB8 + + thumb_func_start MOD05_021D7CA4 +MOD05_021D7CA4: ; 0x021D7CA4 + push {lr} + sub sp, #0xc + cmp r0, #1 + bne _021D7CC6 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} +_021D7CC6: + cmp r0, #0 + bne _021D7CE6 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} +_021D7CE6: + bl ErrorHandling + add sp, #0xc + pop {pc} + .balign 4, 0 + + thumb_func_start MOD05_021D7CF0 +MOD05_021D7CF0: ; 0x021D7CF0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, _021D7D44 ; =0x02105BB8 + ldr r0, [r0] + lsl r1, r0, #1 + ldr r0, _021D7D48 ; =0x04000540 + str r1, [r0] + bl MOD05_021D9B54 + str r0, [r5, #0x4c] + bl MOD05_021DA430 + str r0, [r5, #0x50] + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl FUN_02034724 + ldr r1, [r5, #0x4c] + bl MOD05_021F4978 + str r0, [r5, #0x2c] + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl FUN_02034738 + add r4, r0, #0 + ldr r0, [r5, #0x30] + cmp r0, #0 + beq _021D7D36 + bl ErrorHandling +_021D7D36: + mov r0, #4 + add r1, r4, #0 + bl MOD05_021D7EE8 + str r0, [r5, #0x30] + pop {r3, r4, r5, pc} + nop +_021D7D44: .word 0x02105BB8 +_021D7D48: .word 0x04000540 + + thumb_func_start MOD05_021D7D4C +MOD05_021D7D4C: ; 0x021D7D4C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x2c] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x5c] + bl MOD05_021EF368 + str r0, [r4, #0x24] + mov r0, #8 + mov r1, #4 + bl MOD05_021F4498 + add r1, r4, #0 + add r1, #0x9c + str r0, [r1] + bl MOD05_021F4CF8 + add r1, r4, #0 + add r1, #0xa4 + str r0, [r1] + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _021D7D86 + ldr r0, [r4, #0x24] + ldr r1, _021D7D94 ; =MOD05_021F521C + add r2, r4, #0 + bl MOD05_021EF8E8 +_021D7D86: + ldr r2, [r4, #0x1c] + ldr r0, [r4, #0x24] + ldr r1, [r2, #8] + ldr r2, [r2, #0xc] + bl MOD05_021EF434 + pop {r4, pc} + .balign 4, 0 +_021D7D94: .word MOD05_021F521C + + thumb_func_start MOD05_021D7D98 +MOD05_021D7D98: ; 0x021D7D98 + push {r4, r5, lr} + sub sp, #0x14 + mov r3, #6 + mov r1, #0x20 + mov r2, #4 + lsl r3, r3, #0xe + add r4, r0, #0 + bl MOD05_021E4AE4 + mov r1, #0x50 + str r0, [r4, #0x3c] + bl MOD05_021E4B38 + mov r2, #0x20 + str r2, [sp] + mov r0, #5 + str r2, [sp, #4] + lsl r0, r0, #0xc + str r0, [sp, #8] + lsl r0, r2, #6 + str r0, [sp, #0xc] + lsl r0, r2, #0xb + str r0, [sp, #0x10] + ldr r0, [r4, #0x3c] + mov r1, #4 + add r3, r2, #0 + bl MOD05_021E4B44 + ldr r0, [r4, #0x6c] + sub r0, r0, #1 + cmp r0, #1 + bhi _021D7DE0 + ldr r0, [r4, #0x34] + mov r1, #0 + bl FUN_02058804 +_021D7DE0: + ldr r0, [r4, #0x6c] + cmp r0, #1 + ldr r0, [r4, #0x3c] + bne _021D7DF0 + ldr r1, _021D7E44 ; =0x021FC79C + bl MOD05_021E4B84 + b _021D7DF6 +_021D7DF0: + ldr r1, _021D7E48 ; =0x021FC718 + bl MOD05_021E4B84 +_021D7DF6: + ldr r0, [r4, #0x30] + bl MOD05_021D7F40 + add r5, r0, #0 + ldr r0, [r4, #0x30] + bl MOD05_021D7F3C + add r3, r0, #0 + ldr r0, [r4, #0x34] + mov r1, #0x20 + add r2, r5, #3 + bl MOD05_021F1CB8 + ldr r0, [r4, #0x38] + bl FUN_02055108 + ldr r0, [r4, #0x34] + bl FUN_020577A8 + bl FUN_0204F88C + ldr r0, [r4, #0x34] + bl FUN_02058774 + ldr r0, [r4, #0x38] + bl FUN_02055360 + ldr r1, [r4, #0x24] + bl MOD05_021EF5E0 + add r0, r4, #0 + mov r1, #4 + bl FUN_0204B388 + ldr r1, [r4, #4] + str r0, [r1, #0x18] + add sp, #0x14 + pop {r4, r5, pc} + nop +_021D7E44: .word 0x021FC79C +_021D7E48: .word 0x021FC718 + + thumb_func_start MOD05_021D7E4C +MOD05_021D7E4C: ; 0x021D7E4C + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + bl FUN_0201E788 + bl MOD05_021DBABC + str r0, [r4, #0x40] + bl MOD05_021D7B64 + bl MOD05_021DBA00 + str r0, [r4, #0x44] + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034E10 + add r5, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_02055360 + add r1, r4, #0 + add r2, r5, #0 + mov r3, #1 + bl MOD05_021DBD84 + ldr r0, [r4, #0x2c] + bl MOD05_021F4CBC + add r1, r0, #0 + ldr r0, [r4, #0x40] + bl MOD05_021DB44C + str r0, [r4, #0x48] + add r0, r4, #0 + bl MOD05_021DC0B8 + ldr r1, [r4, #4] + str r0, [r1, #0xc] + ldr r0, [r4, #8] + bl MOD05_021E320C + ldr r1, [r4, #4] + str r0, [r1, #8] + mov r0, #4 + bl MOD05_021E80F8 + str r0, [r4, #0x60] + bl MOD05_021DBEF4 + ldr r1, [r4, #4] + str r0, [r1, #0x10] + ldr r0, [r4, #0x2c] + bl MOD05_021F4C74 + add r1, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x10] + bl MOD05_021DBF20 + add r0, r4, #0 + bl FUN_0205CDB4 + add r0, r4, #0 + bl MOD05_021F38B8 + ldr r0, _021D7EE4 ; =MOD05_021D74E0 + add r1, r4, #0 + bl FUN_02015F10 + pop {r3, r4, r5, pc} + nop +_021D7EE4: .word MOD05_021D74E0 + + thumb_func_start MOD05_021D7EE8 +MOD05_021D7EE8: ; 0x021D7EE8 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + mov r1, #0x64 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0x60 + add r1, r6, #0 + add r2, r5, #0 + bl FUN_02006528 + ldr r1, _021D7F38 ; =0x0000FFFF + mov r2, #0 + add r3, r4, #0 +_021D7F06: + add r2, r2, #1 + str r1, [r3, #4] + add r3, r3, #4 + cmp r2, #0x18 + blt _021D7F06 + ldr r5, _021D7F38 ; =0x0000FFFF + mov r3, #0 + add r1, r0, #0 + add r2, r4, #0 +_021D7F18: + ldrh r6, [r1] + str r6, [r2, #4] + ldrh r6, [r1] + cmp r6, r5 + beq _021D7F2C + add r3, r3, #1 + add r1, r1, #2 + add r2, r2, #4 + cmp r3, #0x18 + blt _021D7F18 +_021D7F2C: + strh r3, [r4] + bl FUN_02016A18 + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_021D7F38: .word 0x0000FFFF + + thumb_func_start MOD05_021D7F3C +MOD05_021D7F3C: ; 0x021D7F3C + add r0, r0, #4 + bx lr + + thumb_func_start MOD05_021D7F40 +MOD05_021D7F40: ; 0x021D7F40 + ldrh r0, [r0] + bx lr + + thumb_func_start MOD05_021D7F44 +MOD05_021D7F44: ; 0x021D7F44 + ldr r3, _021D7F48 ; =0x02016A19 + bx r3 + .balign 4, 0 +_021D7F48: .word 0x02016A19 + + thumb_func_start MOD05_021D7F4C +MOD05_021D7F4C: ; 0x021D7F4C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0x14 + add r6, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + str r7, [r4] + str r5, [r4, #4] + mov r0, #0x14 + add r7, r6, #0 + mul r7, r0 + str r6, [r4, #8] + add r0, r5, #0 + add r1, r7, #0 + bl FUN_02016998 + str r0, [r4, #0xc] + ldr r1, [r4, #0xc] + mov r0, #0 + add r2, r7, #0 + bl MIi_CpuClear32 + add r0, r6, #0 + bl FUN_0201B578 + add r1, r0, #0 + add r0, r5, #0 + bl FUN_02016998 + str r0, [r4, #0x10] + ldr r1, [r4, #0x10] + add r0, r6, #0 + bl FUN_0201B580 + str r0, [r4, #0x10] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021D7F9C +MOD05_021D7F9C: ; 0x021D7F9C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + mov r6, #0 + cmp r0, #0 + ble _021D7FBC + add r4, r6, #0 +_021D7FAA: + ldr r0, [r5, #0xc] + add r0, r0, r4 + bl MOD05_021D80A4 + ldr r0, [r5, #8] + add r6, r6, #1 + add r4, #0x14 + cmp r6, r0 + blt _021D7FAA +_021D7FBC: + ldr r0, [r5, #0xc] + bl FUN_02016A18 + ldr r0, [r5, #0x10] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021D7FD0 +MOD05_021D7FD0: ; 0x021D7FD0 + ldr r3, _021D7FD8 ; =0x0201B5CD + ldr r0, [r0, #0x10] + bx r3 + nop +_021D7FD8: .word 0x0201B5CD + + thumb_func_start MOD05_021D7FDC +MOD05_021D7FDC: ; 0x021D7FDC + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020373AC + cmp r0, #0 + beq _021D7FFE + ldr r0, [r4, #0xc] + ldr r3, [r0, #0x10] + cmp r3, #0 + beq _021D7FFE + ldr r1, [r4] + ldr r2, [r4, #0x10] + ldr r1, [r1] + add r0, r4, #0 + blx r3 +_021D7FFE: + pop {r4, pc} + + thumb_func_start MOD05_021D8000 +MOD05_021D8000: ; 0x021D8000 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + ldr r0, [r0] + bl FUN_020373AC + cmp r0, #0 + beq _021D8022 + ldr r0, [r4, #0xc] + ldr r3, [r0, #0x14] + cmp r3, #0 + beq _021D8022 + ldr r1, [r4] + ldr r2, [r4, #0x10] + ldr r1, [r1] + add r0, r4, #0 + blx r3 +_021D8022: + pop {r4, pc} + + thumb_func_start MOD05_021D8024 +MOD05_021D8024: ; 0x021D8024 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r2, [r5, #8] + add r6, r1, #0 + mov r1, #0 + ldr r4, [r5, #0xc] + cmp r2, #0 + ble _021D8094 +_021D8034: + ldr r0, [r4, #4] + cmp r0, #0 + bne _021D808C + ldr r0, _021D809C ; =MOD05_021D7FDC + ldr r2, [r6] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r0, [r5, #0x10] + ldr r1, _021D80A0 ; =MOD05_021D8000 + ldr r3, [r6] + add r2, r4, #0 + bl FUN_0201B60C + str r0, [r4, #8] + str r5, [r4] + str r6, [r4, #0xc] + ldr r0, [r4, #4] + cmp r0, #0 + bne _021D8062 + bl ErrorHandling +_021D8062: + ldr r0, [r4, #8] + cmp r0, #0 + bne _021D806C + bl ErrorHandling +_021D806C: + ldrh r1, [r6, #4] + cmp r1, #0 + beq _021D807A + ldr r0, [r5, #4] + bl FUN_02016998 + str r0, [r4, #0x10] +_021D807A: + ldr r3, [r6, #8] + cmp r3, #0 + beq _021D8088 + ldr r1, [r5] + ldr r2, [r4, #0x10] + add r0, r4, #0 + blx r3 +_021D8088: + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021D808C: + add r1, r1, #1 + add r4, #0x14 + cmp r1, r2 + blt _021D8034 +_021D8094: + bl ErrorHandling + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021D809C: .word MOD05_021D7FDC +_021D80A0: .word MOD05_021D8000 + + thumb_func_start MOD05_021D80A4 +MOD05_021D80A4: ; 0x021D80A4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #0 + beq _021D80E2 + ldr r1, [r4, #0xc] + ldr r3, [r1, #0xc] + cmp r3, #0 + beq _021D80BE + ldr r1, [r4] + ldr r2, [r4, #0x10] + ldr r1, [r1] + blx r3 +_021D80BE: + ldr r0, [r4, #0xc] + ldrh r0, [r0, #4] + cmp r0, #0 + beq _021D80CC + ldr r0, [r4, #0x10] + bl FUN_02016A18 +_021D80CC: + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4, #8] + bl FUN_0200CAB4 + mov r0, #0 + add r1, r4, #0 + mov r2, #0x14 + bl MIi_CpuClear32 +_021D80E2: + pop {r4, pc} + + thumb_func_start MOD05_021D80E4 +MOD05_021D80E4: ; 0x021D80E4 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start MOD05_021D80E8 +MOD05_021D80E8: ; 0x021D80E8 + ldrh r2, [r0] + mov r1, #1 + bic r2, r1 + strh r2, [r0] + ldrh r2, [r0] + mov r1, #2 + bic r2, r1 + strh r2, [r0] + ldrh r2, [r0] + mov r1, #4 + bic r2, r1 + strh r2, [r0] + ldrh r2, [r0] + mov r1, #8 + bic r2, r1 + strh r2, [r0] + ldrh r2, [r0] + mov r1, #0x10 + bic r2, r1 + strh r2, [r0] + ldrh r2, [r0] + mov r1, #0x20 + bic r2, r1 + strh r2, [r0] + ldrh r2, [r0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0] + ldrh r2, [r0] + mov r1, #0x80 + bic r2, r1 + strh r2, [r0] + ldrh r2, [r0] + ldr r1, _021D8154 ; =0xFFFFFEFF + and r1, r2 + strh r1, [r0] + ldrh r2, [r0] + ldr r1, _021D8158 ; =0xFFFFFDFF + and r1, r2 + strh r1, [r0] + ldrh r2, [r0] + ldr r1, _021D815C ; =0xFFFFFBFF + and r1, r2 + strh r1, [r0] + ldrh r2, [r0] + ldr r1, _021D8160 ; =0xFFFFF7FF + and r2, r1 + strh r2, [r0] + mov r2, #0xff + strb r2, [r0, #2] + asr r1, r1, #0xc + strb r1, [r0, #3] + bx lr + nop +_021D8154: .word 0xFFFFFEFF +_021D8158: .word 0xFFFFFDFF +_021D815C: .word 0xFFFFFBFF +_021D8160: .word 0xFFFFF7FF + + thumb_func_start MOD05_021D8164 +MOD05_021D8164: ; 0x021D8164 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + add r4, r3, #0 + bl MOD05_021D80E8 + ldr r0, [r7, #0x38] + bl FUN_02055378 + str r0, [sp, #4] + ldr r0, [r7, #0x38] + bl FUN_02055370 + str r0, [sp] + ldr r0, [r7, #0x38] + bl FUN_020552F8 + add r2, r0, #0 + ldr r0, [sp, #4] + strh r6, [r5, #4] + strh r4, [r5, #6] + cmp r0, #3 + beq _021D819A + cmp r0, #0 + bne _021D81F8 +_021D819A: + mov r0, #1 + lsl r0, r0, #0xa + tst r0, r6 + beq _021D81AA + ldrh r1, [r5] + mov r0, #4 + orr r0, r1 + strh r0, [r5] +_021D81AA: + mov r0, #2 + lsl r0, r0, #0xa + tst r0, r6 + beq _021D81BA + ldrh r1, [r5] + mov r0, #8 + orr r0, r1 + strh r0, [r5] +_021D81BA: + mov r3, #1 + add r0, r6, #0 + tst r0, r3 + beq _021D81CE + ldrh r1, [r5] + mov r0, #1 + bic r1, r0 + add r0, r1, #0 + orr r0, r3 + strh r0, [r5] +_021D81CE: + mov r0, #2 + tst r0, r6 + beq _021D81DC + ldrh r1, [r5] + mov r0, #0x80 + orr r0, r1 + strh r0, [r5] +_021D81DC: + mov r0, #0xf0 + add r3, r4, #0 + and r3, r0 + beq _021D81EC + ldrh r1, [r5] + mov r0, #0x10 + orr r0, r1 + strh r0, [r5] +_021D81EC: + cmp r3, #0 + beq _021D81F8 + ldrh r1, [r5] + mov r0, #0x20 + orr r0, r1 + strh r0, [r5] +_021D81F8: + ldr r0, [sp, #4] + cmp r0, #3 + bne _021D820C + ldr r0, [sp] + cmp r0, #1 + bne _021D820C + ldrh r1, [r5] + mov r0, #0x40 + orr r0, r1 + strh r0, [r5] +_021D820C: + ldr r0, [sp, #4] + cmp r0, #3 + bne _021D821A + ldrh r1, [r5] + mov r0, #2 + orr r0, r1 + strh r0, [r5] +_021D821A: + cmp r2, #0 + bne _021D8224 + mov r0, #0x40 + tst r0, r4 + bne _021D8242 +_021D8224: + cmp r2, #1 + bne _021D822E + mov r0, #0x80 + tst r0, r4 + bne _021D8242 +_021D822E: + cmp r2, #2 + bne _021D8238 + mov r0, #0x20 + tst r0, r4 + bne _021D8242 +_021D8238: + cmp r2, #3 + bne _021D8246 + mov r0, #0x10 + tst r0, r4 + beq _021D8246 +_021D8242: + strb r2, [r5, #3] + b _021D824C +_021D8246: + mov r0, #0 + mvn r0, r0 + strb r0, [r5, #3] +_021D824C: + ldr r0, [r7, #0x38] + add r1, r6, #0 + add r2, r4, #0 + bl FUN_02057020 + strb r0, [r5, #2] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021D825C +MOD05_021D825C: ; 0x021D825C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_02055378 + add r6, r0, #0 + ldr r0, [r4, #0x1c] + ldr r1, [r0] + ldr r0, _021D831C ; =0x00000156 + cmp r1, r0 + beq _021D827C + add sp, #0x10 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D827C: + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0 + bne _021D8290 + add sp, #0x10 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D8290: + cmp r6, #0 + bne _021D82EC + ldr r0, [r4, #0x38] + bl FUN_02055370 + ldrb r1, [r5, #2] + lsl r2, r1, #0x18 + asr r3, r2, #0x18 + mov r2, #0 + mvn r2, r2 + cmp r3, r2 + beq _021D82CE + cmp r0, #1 + bne _021D82CE + add r0, r4, #0 + add r2, sp, #0xc + add r3, sp, #8 + bl MOD05_021D9130 + ldr r1, [sp, #0xc] + ldr r2, [sp, #8] + add r0, r4, #0 + bl FUN_0204A6E0 + bl FUN_0205478C + cmp r0, #0 + beq _021D8314 + add sp, #0x10 + mov r0, #1 + pop {r4, r5, r6, pc} +_021D82CE: + mov r0, #3 + ldrsb r1, [r5, r0] + sub r0, r0, #4 + cmp r1, r0 + beq _021D8314 + add r0, r4, #0 + bl MOD05_021D9194 + bl FUN_0205478C + cmp r0, #0 + beq _021D8314 + add sp, #0x10 + mov r0, #1 + pop {r4, r5, r6, pc} +_021D82EC: + cmp r6, #3 + bne _021D8314 + ldrb r1, [r5, #2] + add r0, r4, #0 + add r2, sp, #4 + add r3, sp, #0 + bl MOD05_021D9130 + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl FUN_0204A6E0 + bl FUN_0205478C + cmp r0, #0 + beq _021D8314 + add sp, #0x10 + mov r0, #1 + pop {r4, r5, r6, pc} +_021D8314: + mov r0, #0 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021D831C: .word 0x00000156 + + thumb_func_start MOD05_021D8320 +MOD05_021D8320: ; 0x021D8320 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldrh r0, [r5] + add r4, r1, #0 + lsl r0, r0, #0x14 + lsr r0, r0, #0x1f + bne _021D8342 + add r0, r4, #0 + mov r1, #1 + bl FUN_0203989C + cmp r0, #1 + bne _021D8342 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8342: + ldrh r0, [r5] + lsl r0, r0, #0x14 + lsr r0, r0, #0x1f + bne _021D8384 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + bl FUN_0204A248 + add r6, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #1 + bne _021D8366 + mov r6, #1 +_021D8366: + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0205C598 + cmp r0, #1 + bne _021D8384 + ldr r0, [r4, #0x38] + bl FUN_02055B14 + ldr r0, [r4, #0x34] + bl FUN_02058780 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8384: + ldrh r0, [r5] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + beq _021D83A6 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205ED5C + add r0, r4, #0 + bl MOD05_021D8D24 + cmp r0, #1 + bne _021D83A6 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D83A6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021D825C + cmp r0, #0 + beq _021D83C2 + add r0, r4, #0 + mov r1, #4 + mov r2, #0 + bl FUN_02038C78 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D83C2: + ldrh r1, [r5, #4] + ldrh r2, [r5, #6] + ldr r0, [r4, #0x38] + mov r6, #0 + bl FUN_02057020 + add r7, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + mov r1, #2 + bl FUN_0205F264 + cmp r0, #0 + beq _021D83E4 + mov r0, #1 + orr r6, r0 +_021D83E4: + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + mov r1, #0x7f + bl FUN_0204A138 + cmp r0, #0xff + beq _021D83F8 + mov r0, #2 + orr r6, r0 +_021D83F8: + ldr r1, [r4, #0x38] + add r0, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl MOD05_021E61A4 + cmp r0, #1 + bne _021D840E + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D840E: + ldrh r0, [r5] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _021D8436 + add r0, r4, #0 + bl MOD05_021D8954 + cmp r0, #0 + beq _021D8426 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8426: + add r0, r4, #0 + bl MOD05_021D859C + cmp r0, #1 + bne _021D8436 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8436: + ldrh r0, [r5] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + beq _021D845A + ldr r0, [r4, #0x38] + bl FUN_020552F8 + ldrb r1, [r5, #2] + cmp r1, r0 + bne _021D845A + add r0, r4, #0 + bl MOD05_021D859C + cmp r0, #1 + bne _021D845A + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D845A: + ldrh r0, [r5] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _021D8532 + add r0, r4, #0 + add r1, sp, #4 + bl FUN_02037090 + cmp r0, #1 + bne _021D84B8 + ldr r0, [r4, #0x38] + bl FUN_02055B30 + cmp r0, #1 + bne _021D8486 + ldr r0, [r4, #0x38] + bl FUN_020552F8 + add r1, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_02055B8C +_021D8486: + ldr r0, [sp, #4] + bl FUN_02058488 + cmp r0, #9 + beq _021D84A8 + ldr r5, [sp, #4] + add r0, r5, #0 + bl FUN_02058498 + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + add r2, r5, #0 + bl FUN_02038C78 + b _021D84B2 +_021D84A8: + ldr r2, [sp, #4] + add r0, r4, #0 + mov r1, #0 + bl FUN_02038C78 +_021D84B2: + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D84B8: + add r0, r4, #0 + bl FUN_02034AF0 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02034AF8 + add r2, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_020370BC + add r1, r0, #0 + ldr r0, _021D8594 ; =0x0000FFFF + cmp r1, r0 + beq _021D84EA + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + mov r2, #0 + bl FUN_02038C78 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D84EA: + add r0, r4, #0 + add r1, sp, #0 + bl MOD05_021F4D2C + cmp r0, #0 + beq _021D850A + ldr r1, [sp] + add r0, r4, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0 + bl FUN_02038C78 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D850A: + add r0, r4, #0 + bl MOD05_021D9194 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021D8BAC + add r1, r0, #0 + ldr r0, _021D8594 ; =0x0000FFFF + cmp r1, r0 + beq _021D8532 + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + mov r2, #0 + bl FUN_02038C78 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8532: + ldrh r0, [r5] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + beq _021D8552 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021D89BC + cmp r0, #1 + bne _021D8552 + add r0, r4, #0 + bl MOD05_021D9290 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8552: + ldrh r0, [r5] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _021D856A + add r0, r4, #0 + bl FUN_0205DB44 + cmp r0, #1 + bne _021D856A + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D856A: + ldrh r0, [r5] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _021D858E + add r0, r4, #0 + bl FUN_02035068 + cmp r0, #1 + bne _021D858E + ldr r0, _021D8598 ; =0x000005FD + bl FUN_020054C8 + add r0, r4, #0 + bl FUN_02035080 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D858E: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021D8594: .word 0x0000FFFF +_021D8598: .word 0x000005FD + + thumb_func_start MOD05_021D859C +MOD05_021D859C: ; 0x021D859C + push {r3, r4, r5, lr} + add r1, sp, #0 + add r5, r0, #0 + bl FUN_02037230 + cmp r0, #1 + bne _021D85C4 + ldr r4, [sp] + add r0, r4, #0 + bl FUN_02058498 + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + add r2, r4, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D85C4: + add r0, r5, #0 + bl FUN_02034AF0 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02034AF8 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020371D0 + add r1, r0, #0 + ldr r0, _021D85F8 ; =0x0000FFFF + cmp r1, r0 + beq _021D85F4 + lsl r1, r1, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D85F4: + mov r0, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021D85F8: .word 0x0000FFFF + + thumb_func_start MOD05_021D85FC +MOD05_021D85FC: ; 0x021D85FC + push {r4, lr} + add r4, r0, #0 + ldrh r0, [r4] + lsl r0, r0, #0x14 + lsr r0, r0, #0x1f + bne _021D8618 + add r0, r1, #0 + mov r1, #1 + bl FUN_0203989C + cmp r0, #1 + bne _021D8618 + mov r0, #1 + pop {r4, pc} +_021D8618: + bl FUN_02031438 + cmp r0, #0 + bne _021D862C + bl FUN_02031190 + bl FUN_0204F6B4 + cmp r0, #0 + beq _021D8630 +_021D862C: + mov r0, #0 + pop {r4, pc} +_021D8630: + bl FUN_0223DCB4 + ldrh r0, [r4] + lsl r1, r0, #0x1f + lsr r1, r1, #0x1f + beq _021D8646 + mov r0, #0 + bl FUN_0223DCD0 + mov r0, #0 + pop {r4, pc} +_021D8646: + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _021D8654 + bl FUN_0223DC98 + mov r0, #0 + pop {r4, pc} +_021D8654: + bl FUN_0223D8F4 + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021D865C +MOD05_021D865C: ; 0x021D865C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrh r0, [r4] + add r5, r1, #0 + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + beq _021D868E + mov r0, #3 + ldrsb r0, [r4, r0] + cmp r0, #1 + bne _021D868E + add r0, r5, #0 + bl MOD05_021D9178 + bl FUN_020547E0 + cmp r0, #0 + beq _021D868E + ldr r1, _021D872C ; =0x0000238D + add r0, r5, #0 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D868E: + bl FUN_02031438 + cmp r0, #0 + bne _021D86AA + bl FUN_02031190 + bl FUN_0204F6B4 + cmp r0, #0 + bne _021D86AA + bl FUN_02050A68 + cmp r0, #0 + bne _021D86AE +_021D86AA: + mov r0, #0 + pop {r3, r4, r5, pc} +_021D86AE: + ldrh r0, [r4] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _021D86FE + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02037090 + cmp r0, #1 + bne _021D86FE + ldr r0, [sp] + bl FUN_02058480 + cmp r0, #1 + beq _021D86FE + ldr r0, [r5, #0x38] + bl FUN_02055B30 + cmp r0, #1 + bne _021D86E4 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r1, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055B8C +_021D86E4: + ldr r4, [sp] + add r0, r4, #0 + bl FUN_02058498 + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + add r2, r4, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D86FE: + ldrh r0, [r4] + lsl r1, r0, #0x1f + lsr r1, r1, #0x1f + beq _021D8710 + add r0, r5, #0 + bl FUN_02052044 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8710: + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _021D8726 + ldr r0, _021D8730 ; =0x000005FD + bl FUN_020054C8 + add r0, r5, #0 + bl FUN_0203515C + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8726: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D872C: .word 0x0000238D +_021D8730: .word 0x000005FD + + thumb_func_start MOD05_021D8734 +MOD05_021D8734: ; 0x021D8734 + push {r3, r4, r5, lr} + mov r5, #0 + mov r4, #1 +_021D873A: + add r0, r4, #0 + bl FUN_0202DFA4 + cmp r0, #0 + beq _021D8746 + add r5, r5, #1 +_021D8746: + add r4, r4, #1 + cmp r4, #5 + blt _021D873A + cmp r5, #1 + blt _021D8754 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8754: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021D8758 +MOD05_021D8758: ; 0x021D8758 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + bl FUN_0202CB8C + mov r1, #0xfe + tst r0, r1 + beq _021D878A + bl MOD05_021D8734 + cmp r0, #0 + beq _021D8786 + bl FUN_02030F20 + cmp r0, #1 + ble _021D8786 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8786: + mov r0, #0 + pop {r3, r4, r5, pc} +_021D878A: + ldrh r0, [r4] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _021D87D4 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02037090 + cmp r0, #1 + bne _021D87D4 + ldr r0, [r5, #0x38] + bl FUN_02055B30 + cmp r0, #1 + bne _021D87B6 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r1, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055B8C +_021D87B6: + bl FUN_02031C10 + ldr r4, [sp] + add r0, r4, #0 + bl FUN_02058498 + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + add r2, r4, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D87D4: + ldrh r0, [r4] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + beq _021D87F4 + add r0, r5, #0 + bl MOD05_021D9178 + bl FUN_02054B60 + cmp r0, #0 + beq _021D87F4 + add r0, r5, #0 + bl FUN_02049D9C + mov r0, #1 + pop {r3, r4, r5, pc} +_021D87F4: + ldrh r0, [r4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _021D8816 + ldr r0, _021D881C ; =0x000005FD + bl FUN_020054C8 + add r0, r5, #0 + bl FUN_02035118 + mov r0, #4 + bl FUN_02052B74 + bl FUN_02031C2C + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8816: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D881C: .word 0x000005FD + + thumb_func_start MOD05_021D8820 +MOD05_021D8820: ; 0x021D8820 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldrh r0, [r5] + add r4, r1, #0 + lsl r0, r0, #0x14 + lsr r0, r0, #0x1f + bne _021D8842 + add r0, r4, #0 + mov r1, #1 + bl FUN_0203989C + cmp r0, #1 + bne _021D8842 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D8842: + ldrh r0, [r5] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _021D88FA + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02037090 + cmp r0, #1 + bne _021D88A0 + ldr r0, [r4, #0x38] + bl FUN_02055B30 + cmp r0, #1 + bne _021D886E + ldr r0, [r4, #0x38] + bl FUN_020552F8 + add r1, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_02055B8C +_021D886E: + ldr r0, [sp] + bl FUN_02058488 + cmp r0, #9 + beq _021D8890 + ldr r5, [sp] + add r0, r5, #0 + bl FUN_02058498 + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + add r2, r5, #0 + bl FUN_02038C78 + b _021D889A +_021D8890: + ldr r2, [sp] + add r0, r4, #0 + mov r1, #0 + bl FUN_02038C78 +_021D889A: + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D88A0: + add r0, r4, #0 + bl FUN_02034AF0 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02034AF8 + add r2, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_020370BC + add r1, r0, #0 + ldr r0, _021D894C ; =0x0000FFFF + cmp r1, r0 + beq _021D88D2 + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + mov r2, #0 + bl FUN_02038C78 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D88D2: + add r0, r4, #0 + bl MOD05_021D9194 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021D8BAC + add r1, r0, #0 + ldr r0, _021D894C ; =0x0000FFFF + cmp r1, r0 + beq _021D88FA + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + mov r2, #0 + bl FUN_02038C78 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D88FA: + ldrh r0, [r5] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + beq _021D8914 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021D89BC + cmp r0, #1 + bne _021D8914 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D8914: + ldrh r0, [r5] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _021D892C + add r0, r4, #0 + bl FUN_0205DB44 + cmp r0, #1 + bne _021D892C + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D892C: + ldrh r0, [r5] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _021D8946 + ldr r0, _021D8950 ; =0x000005FD + bl FUN_020054C8 + add r0, r4, #0 + bl FUN_02035080 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D8946: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021D894C: .word 0x0000FFFF +_021D8950: .word 0x000005FD + + thumb_func_start MOD05_021D8954 +MOD05_021D8954: ; 0x021D8954 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD05_021D90F8 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #1 + bne _021D8998 + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl FUN_0204BA68 + cmp r0, #1 + bne _021D8992 + add r0, r4, #0 + bl FUN_0204BA90 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02046F70 + add sp, #8 + mov r0, #1 + pop {r4, pc} +_021D8992: + add sp, #8 + mov r0, #0 + pop {r4, pc} +_021D8998: + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_020347D8 + cmp r0, #0 + beq _021D89B4 + add r0, r4, #0 + bl FUN_0223BA04 + cmp r0, #1 + bne _021D89B4 + add sp, #8 + mov r0, #1 + pop {r4, pc} +_021D89B4: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D89BC +MOD05_021D89BC: ; 0x021D89BC + push {r4, r5, r6, lr} + sub sp, #0x28 + add r5, r1, #0 + mov r1, #3 + ldrsb r2, [r5, r1] + sub r1, r1, #4 + add r6, r0, #0 + cmp r2, r1 + bne _021D89D4 + add sp, #0x28 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D89D4: + bl FUN_022426AC + cmp r0, #0 + beq _021D89E2 + add sp, #0x28 + mov r0, #1 + pop {r4, r5, r6, pc} +_021D89E2: + add r0, r6, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD05_021D9114 + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + add r0, r6, #0 + bl FUN_0204A6B4 + cmp r0, #0 + bne _021D8A00 + add sp, #0x28 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D8A00: + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + add r0, r6, #0 + add r3, sp, #0x14 + bl MOD05_021D91B0 + cmp r0, #0 + beq _021D8A4A + mov r0, #3 + ldrsb r1, [r5, r0] + sub r0, r0, #4 + cmp r1, r0 + beq _021D8A4A + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + add r0, r6, #0 + bl FUN_0204A6E0 + bl FUN_020547B0 + cmp r0, #0 + beq _021D8A4A + mov r3, #0 + str r3, [sp] + mov r0, #3 + ldrsb r0, [r5, r0] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + add r0, r6, #0 + bl FUN_0204C260 + add sp, #0x28 + mov r0, #1 + pop {r4, r5, r6, pc} +_021D8A4A: + add r0, r6, #0 + add r1, sp, #0x10 + add r2, sp, #0xc + bl MOD05_021D90F8 + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + add r0, r6, #0 + bl FUN_0204A6E0 + add r4, r0, #0 + bl FUN_020547BC + cmp r0, #0 + bne _021D8A72 + add r0, r4, #0 + bl FUN_020547EC + cmp r0, #0 + beq _021D8A80 +_021D8A72: + mov r0, #3 + ldrsb r0, [r5, r0] + cmp r0, #3 + beq _021D8AF4 + add sp, #0x28 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D8A80: + add r0, r4, #0 + bl FUN_020547C8 + cmp r0, #0 + bne _021D8A94 + add r0, r4, #0 + bl FUN_020547F8 + cmp r0, #0 + beq _021D8AA2 +_021D8A94: + mov r0, #3 + ldrsb r0, [r5, r0] + cmp r0, #2 + beq _021D8AF4 + add sp, #0x28 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D8AA2: + add r0, r4, #0 + bl FUN_020547E0 + cmp r0, #0 + bne _021D8AB6 + add r0, r4, #0 + bl FUN_02054810 + cmp r0, #0 + beq _021D8AC4 +_021D8AB6: + mov r0, #3 + ldrsb r0, [r5, r0] + cmp r0, #1 + beq _021D8AF4 + add sp, #0x28 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D8AC4: + add r0, r4, #0 + bl FUN_020548D8 + cmp r0, #0 + beq _021D8ADC + mov r0, #3 + ldrsb r0, [r5, r0] + cmp r0, #3 + beq _021D8AF4 + add sp, #0x28 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D8ADC: + add r0, r4, #0 + bl FUN_020548E4 + cmp r0, #0 + beq _021D8AF4 + mov r0, #3 + ldrsb r0, [r5, r0] + cmp r0, #2 + beq _021D8AF4 + add sp, #0x28 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D8AF4: + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + add r0, r6, #0 + add r3, sp, #0x14 + bl MOD05_021D91B0 + cmp r0, #0 + bne _021D8B0A + add sp, #0x28 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D8B0A: + add r0, r4, #0 + bl FUN_020547B0 + cmp r0, #0 + beq _021D8B18 + mov r1, #1 + b _021D8B90 +_021D8B18: + add r0, r4, #0 + bl FUN_020548D8 + cmp r0, #0 + beq _021D8B26 + mov r1, #3 + b _021D8B90 +_021D8B26: + add r0, r4, #0 + bl FUN_020548E4 + cmp r0, #0 + beq _021D8B34 + mov r1, #3 + b _021D8B90 +_021D8B34: + add r0, r4, #0 + bl FUN_020547BC + cmp r0, #0 + bne _021D8B70 + add r0, r4, #0 + bl FUN_020547EC + cmp r0, #0 + bne _021D8B70 + add r0, r4, #0 + bl FUN_020547C8 + cmp r0, #0 + bne _021D8B70 + add r0, r4, #0 + bl FUN_020547F8 + cmp r0, #0 + bne _021D8B70 + add r0, r4, #0 + bl FUN_020547E0 + cmp r0, #0 + bne _021D8B70 + add r0, r4, #0 + bl FUN_02054810 + cmp r0, #0 + beq _021D8B8A +_021D8B70: + mov r3, #0 + str r3, [sp] + mov r0, #3 + ldrsb r0, [r5, r0] + str r0, [sp, #4] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + add r0, r6, #0 + bl FUN_0204C29C + add sp, #0x28 + mov r0, #1 + pop {r4, r5, r6, pc} +_021D8B8A: + add sp, #0x28 + mov r0, #0 + pop {r4, r5, r6, pc} +_021D8B90: + mov r3, #0 + str r3, [sp] + mov r0, #3 + ldrsb r0, [r5, r0] + str r0, [sp, #4] + str r1, [sp, #8] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + add r0, r6, #0 + bl FUN_0204C260 + mov r0, #1 + add sp, #0x28 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021D8BAC +MOD05_021D8BAC: ; 0x021D8BAC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x38] + add r4, r1, #0 + bl FUN_020552F8 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02054878 + cmp r0, #0 + beq _021D8BCC + cmp r6, #0 + bne _021D8BCC + ldr r0, _021D8CE4 ; =0x000007E2 + pop {r3, r4, r5, r6, r7, pc} +_021D8BCC: + add r0, r4, #0 + bl FUN_02054914 + cmp r0, #0 + beq _021D8BDA + ldr r0, _021D8CE8 ; =0x000009C4 + pop {r3, r4, r5, r6, r7, pc} +_021D8BDA: + add r0, r4, #0 + bl FUN_02054920 + cmp r0, #0 + beq _021D8BE8 + ldr r0, _021D8CEC ; =0x000009C5 + pop {r3, r4, r5, r6, r7, pc} +_021D8BE8: + add r0, r4, #0 + bl FUN_0205492C + cmp r0, #0 + beq _021D8BF6 + ldr r0, _021D8CF0 ; =0x000009C6 + pop {r3, r4, r5, r6, r7, pc} +_021D8BF6: + add r0, r4, #0 + bl FUN_02054938 + cmp r0, #0 + beq _021D8C04 + ldr r0, _021D8CF4 ; =0x000009C7 + pop {r3, r4, r5, r6, r7, pc} +_021D8C04: + add r0, r4, #0 + bl FUN_02054944 + cmp r0, #0 + beq _021D8C12 + ldr r0, _021D8CF8 ; =0x000009C8 + pop {r3, r4, r5, r6, r7, pc} +_021D8C12: + add r0, r4, #0 + bl FUN_02054950 + cmp r0, #0 + beq _021D8C20 + ldr r0, _021D8CFC ; =0x000009C9 + pop {r3, r4, r5, r6, r7, pc} +_021D8C20: + add r0, r4, #0 + bl FUN_0205495C + cmp r0, #0 + beq _021D8C2E + ldr r0, _021D8D00 ; =0x000009CA + pop {r3, r4, r5, r6, r7, pc} +_021D8C2E: + add r0, r4, #0 + bl FUN_02054968 + cmp r0, #0 + beq _021D8C3C + ldr r0, _021D8D04 ; =0x000009CB + pop {r3, r4, r5, r6, r7, pc} +_021D8C3C: + add r0, r4, #0 + bl FUN_02054A48 + cmp r0, #0 + beq _021D8C4A + ldr r0, _021D8D08 ; =0x00002716 + pop {r3, r4, r5, r6, r7, pc} +_021D8C4A: + add r0, r4, #0 + bl FUN_02054884 + cmp r0, #0 + beq _021D8C58 + ldr r0, _021D8D0C ; =0x000009CC + pop {r3, r4, r5, r6, r7, pc} +_021D8C58: + add r0, r4, #0 + bl FUN_02054A54 + cmp r0, #0 + beq _021D8C66 + ldr r0, _021D8D10 ; =0x000007EE + pop {r3, r4, r5, r6, r7, pc} +_021D8C66: + add r0, r4, #0 + bl FUN_02054B14 + cmp r0, #0 + beq _021D8C78 + cmp r6, #0 + bne _021D8C78 + ldr r0, _021D8D14 ; =0x00002774 + pop {r3, r4, r5, r6, r7, pc} +_021D8C78: + add r0, r4, #0 + add r1, r6, #0 + bl MOD05_021E69BC + cmp r0, #0 + beq _021D8C88 + ldr r0, _021D8D18 ; =0x00002713 + pop {r3, r4, r5, r6, r7, pc} +_021D8C88: + ldr r0, [r5, #0x38] + bl FUN_020553C4 + cmp r0, #2 + beq _021D8CE0 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r7, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_0204A6E0 + add r1, r0, #0 + ldr r0, [r5, #0x38] + add r2, r4, #0 + bl MOD05_021E643C + cmp r0, #0 + beq _021D8CE0 + add r0, r6, #0 + mov r1, #4 + bl FUN_020239D0 + cmp r0, #0 + beq _021D8CE0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + mov r1, #0x39 + bl FUN_0204A138 + cmp r0, #0xff + beq _021D8CE0 + ldr r0, _021D8D1C ; =0x00002714 + pop {r3, r4, r5, r6, r7, pc} +_021D8CE0: + ldr r0, _021D8D20 ; =0x0000FFFF + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021D8CE4: .word 0x000007E2 +_021D8CE8: .word 0x000009C4 +_021D8CEC: .word 0x000009C5 +_021D8CF0: .word 0x000009C6 +_021D8CF4: .word 0x000009C7 +_021D8CF8: .word 0x000009C8 +_021D8CFC: .word 0x000009C9 +_021D8D00: .word 0x000009CA +_021D8D04: .word 0x000009CB +_021D8D08: .word 0x00002716 +_021D8D0C: .word 0x000009CC +_021D8D10: .word 0x000007EE +_021D8D14: .word 0x00002774 +_021D8D18: .word 0x00002713 +_021D8D1C: .word 0x00002714 +_021D8D20: .word 0x0000FFFF + + thumb_func_start MOD05_021D8D24 +MOD05_021D8D24: ; 0x021D8D24 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02242404 + cmp r0, #0 + beq _021D8D34 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8D34: + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r2, r0, #0 + ldr r1, [r5, #0x38] + add r0, r5, #0 + bl MOD05_021E72FC + cmp r0, #1 + bne _021D8D4C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8D4C: + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + bl FUN_0204A6E0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021D8E1C + cmp r0, #1 + bne _021D8D76 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8D76: + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl MOD05_021D8E54 + cmp r0, #1 + bne _021D8D90 + add r0, r5, #0 + bl MOD05_021D9290 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8D90: + ldr r0, [r5, #0x38] + bl FUN_020556B4 + cmp r0, #0 + beq _021D8D9E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D8D9E: + add r0, r5, #0 + mov r1, #5 + mov r2, #1 + bl MOD05_021EFA9C + add r0, r5, #0 + bl MOD05_021D9010 + cmp r0, #1 + bne _021D8DB6 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8DB6: + add r0, r5, #0 + bl MOD05_021D9090 + cmp r0, #1 + bne _021D8DC4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8DC4: + add r0, r5, #0 + bl MOD05_021D8F38 + cmp r0, #1 + bne _021D8DD2 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8DD2: + add r0, r5, #0 + bl MOD05_021D8F84 + cmp r0, #1 + bne _021D8DE0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8DE0: + add r0, r5, #0 + bl MOD05_021D8F90 + cmp r0, #1 + bne _021D8DEE + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8DEE: + add r0, r5, #0 + bl MOD05_021D8F9C + cmp r0, #1 + bne _021D8DFC + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D8DFC: + add r0, r5, #0 + bl MOD05_021D8FA8 + cmp r0, #0 + beq _021D8E0C + add r0, r5, #0 + bl MOD05_021D8FD0 +_021D8E0C: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F56C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D8E1C +MOD05_021D8E1C: ; 0x021D8E1C + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02034B5C + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02034B54 + add r2, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_02037264 + add r1, r0, #0 + ldr r0, _021D8E50 ; =0x0000FFFF + cmp r1, r0 + beq _021D8E4A + add r0, r4, #0 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8E4A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D8E50: .word 0x0000FFFF + + thumb_func_start MOD05_021D8E54 +MOD05_021D8E54: ; 0x021D8E54 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r3, #0 + add r3, sp, #0xc + add r4, r0, #0 + bl MOD05_021D91B0 + cmp r0, #0 + bne _021D8E6C + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8E6C: + add r0, r5, #0 + bl FUN_020548C0 + cmp r0, #1 + bne _021D8EB0 + ldr r0, [r4, #0x38] + bl FUN_020552F8 + cmp r0, #2 + bne _021D8E84 + mov r0, #3 + b _021D8E96 +_021D8E84: + cmp r0, #3 + bne _021D8E8C + mov r0, #2 + b _021D8E96 +_021D8E8C: + bl ErrorHandling + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8E96: + mov r3, #0 + str r3, [sp] + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + add r0, r4, #0 + bl FUN_0204C260 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8EB0: + add r0, r5, #0 + bl FUN_020548CC + cmp r0, #1 + bne _021D8EEC + ldr r0, [r4, #0x38] + bl FUN_020552F8 + cmp r0, #2 + beq _021D8ED2 + cmp r0, #3 + beq _021D8ED2 + bl ErrorHandling + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D8ED2: + mov r3, #0 + str r3, [sp] + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + add r0, r4, #0 + bl FUN_0204C260 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8EEC: + add r0, r5, #0 + bl FUN_020547D4 + cmp r0, #0 + bne _021D8F00 + add r0, r5, #0 + bl FUN_02054804 + cmp r0, #0 + beq _021D8F16 +_021D8F00: + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + add r0, r4, #0 + bl FUN_0204C29C + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8F16: + add r0, r5, #0 + bl FUN_02054B60 + cmp r0, #0 + beq _021D8F30 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + add r0, r4, #0 + bl FUN_02049718 + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8F30: + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D8F38 +MOD05_021D8F38: ; 0x021D8F38 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02023D58 + add r1, r5, #0 + add r2, r4, #0 + bl MOD05_021ED378 + cmp r0, #1 + bne _021D8F7A + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + add r5, r0, #0 + mov r1, #0xb + bl FUN_0202A0E8 + add r0, r5, #0 + mov r1, #0xf + bl FUN_0202A170 + ldr r1, _021D8F80 ; =0x000007EF + add r0, r4, #0 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D8F7A: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D8F80: .word 0x000007EF + + thumb_func_start MOD05_021D8F84 +MOD05_021D8F84: ; 0x021D8F84 + push {r3, lr} + bl MOD05_021E1654 + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D8F90 +MOD05_021D8F90: ; 0x021D8F90 + push {r3, lr} + bl FUN_0205E4A4 + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D8F9C +MOD05_021D8F9C: ; 0x021D8F9C + ldr r3, _021D8FA4 ; =0x0224C24D + add r1, r0, #0 + ldr r0, [r1, #0xc] + bx r3 + .balign 4, 0 +_021D8FA4: .word 0x0224C24D + + thumb_func_start MOD05_021D8FA8 +MOD05_021D8FA8: ; 0x021D8FA8 + push {r3, r4, r5, lr} + ldr r0, [r0, #0xc] + mov r5, #0 + bl FUN_020462AC + add r4, r0, #0 + bl FUN_0205F780 + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + cmp r1, #0x80 + blo _021D8FC6 + add r1, r5, #0 + mov r5, #1 +_021D8FC6: + add r0, r4, #0 + bl FUN_0205F790 + add r0, r5, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021D8FD0 +MOD05_021D8FD0: ; 0x021D8FD0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r6, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034824 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r6, #0 + bl FUN_0206B9AC + add r7, r0, #0 + mov r4, #0 + cmp r7, #0 + ble _021D900C +_021D8FF6: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #5 + add r2, r5, #0 + bl FUN_020688E8 + add r4, r4, #1 + cmp r4, r7 + blt _021D8FF6 +_021D900C: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9010 +MOD05_021D9010: ; 0x021D9010 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034E2C + ldrh r1, [r0] + add r1, r1, #1 + strh r1, [r0] + ldrh r2, [r0] + mov r1, #3 + and r1, r2 + strh r1, [r0] + ldrh r0, [r0] + cmp r0, #0 + beq _021D903E + mov r0, #0 + pop {r3, r4, r5, pc} +_021D903E: + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl FUN_02034824 + add r1, r0, #0 + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + bl FUN_0204A29C + cmp r0, #0 + beq _021D9060 + cmp r0, #1 + beq _021D9064 + cmp r0, #2 + beq _021D9070 + b _021D9086 +_021D9060: + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9064: + ldr r0, [r5, #4] + ldr r0, [r0, #0x20] + bl MOD05_021F4724 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D9070: + ldr r0, [r5, #4] + ldr r0, [r0, #0x20] + bl MOD05_021F4724 + ldr r1, _021D908C ; =0x000007D3 + add r0, r5, #0 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D9086: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D908C: .word 0x000007D3 + + thumb_func_start MOD05_021D9090 +MOD05_021D9090: ; 0x021D9090 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0 + bne _021D90A6 + mov r0, #0 + pop {r4, pc} +_021D90A6: + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034E24 + ldrh r0, [r0] + cmp r0, #0 + bne _021D90C4 + ldr r1, _021D90F0 ; =0x00002262 + add r0, r4, #0 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r4, pc} +_021D90C4: + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034E28 + ldrh r1, [r0] + add r1, r1, #1 + strh r1, [r0] + ldrh r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + cmp r1, r0 + blo _021D90EC + ldr r1, _021D90F4 ; =0x00002261 + add r0, r4, #0 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r4, pc} +_021D90EC: + mov r0, #0 + pop {r4, pc} + .balign 4, 0 +_021D90F0: .word 0x00002262 +_021D90F4: .word 0x00002261 + + thumb_func_start MOD05_021D90F8 +MOD05_021D90F8: ; 0x021D90F8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x38] + add r4, r1, #0 + add r6, r2, #0 + bl FUN_02055320 + str r0, [r4] + ldr r0, [r5, #0x38] + bl FUN_0205532C + str r0, [r6] + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9114 +MOD05_021D9114: ; 0x021D9114 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x38] + add r4, r1, #0 + add r6, r2, #0 + bl FUN_020552F8 + add r1, r0, #0 + add r0, r5, #0 + add r2, r4, #0 + add r3, r6, #0 + bl MOD05_021D9130 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021D9130 +MOD05_021D9130: ; 0x021D9130 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r5, r3, #0 + add r6, r1, #0 + add r1, r4, #0 + add r2, r5, #0 + bl MOD05_021D90F8 + cmp r6, #3 + bhi _021D9176 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D9150: ; jump table + .short _021D9158 - _021D9150 - 2 ; case 0 + .short _021D9160 - _021D9150 - 2 ; case 1 + .short _021D9168 - _021D9150 - 2 ; case 2 + .short _021D9170 - _021D9150 - 2 ; case 3 +_021D9158: + ldr r0, [r5] + sub r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021D9160: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + pop {r4, r5, r6, pc} +_021D9168: + ldr r0, [r4] + sub r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_021D9170: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021D9176: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021D9178 +MOD05_021D9178: ; 0x021D9178 + push {r4, lr} + sub sp, #8 + add r1, sp, #4 + add r2, sp, #0 + add r4, r0, #0 + bl MOD05_021D90F8 + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl FUN_0204A6E0 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD05_021D9194 +MOD05_021D9194: ; 0x021D9194 + push {r4, lr} + sub sp, #8 + add r1, sp, #4 + add r2, sp, #0 + add r4, r0, #0 + bl MOD05_021D9114 + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl FUN_0204A6E0 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD05_021D91B0 +MOD05_021D91B0: ; 0x021D91B0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r7, r1, #0 + str r2, [sp] + add r5, r3, #0 + bl FUN_02034B18 + add r6, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + bne _021D91CC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D91CC: + add r0, r4, #0 + add r1, r6, #0 + bl FUN_02034B00 + cmp r0, #0 + bne _021D91DC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D91DC: + ldrh r3, [r0, #6] + mov r1, #1 + lsl r1, r1, #8 + cmp r3, r1 + bne _021D920C + ldrh r1, [r0, #4] + ldr r0, _021D9244 ; =0x00000FFF + cmp r1, r0 + beq _021D91F2 + bl ErrorHandling +_021D91F2: + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r2, r0, #0 + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + ldr r0, [r2] + str r0, [r5] + b _021D921E +_021D920C: + ldrh r2, [r0, #2] + ldrh r1, [r0] + ldrh r0, [r0, #4] + str r0, [r5] + str r3, [r5, #4] + str r1, [r5, #8] + str r2, [r5, #0xc] + mov r0, #1 + str r0, [r5, #0x10] +_021D921E: + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DC4 + add r5, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_020552F8 + ldr r1, [r4, #0x1c] + ldr r1, [r1] + str r1, [r5] + str r6, [r5, #4] + ldr r1, [sp] + str r7, [r5, #8] + str r1, [r5, #0xc] + str r0, [r5, #0x10] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021D9244: .word 0x00000FFF + + thumb_func_start MOD05_021D9248 +MOD05_021D9248: ; 0x021D9248 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r7, r1, #0 + str r2, [sp] + add r4, r3, #0 + bl FUN_02034E30 + bl FUN_02034DCC + add r6, r0, #0 + ldr r3, [r5, #0x1c] + add r2, r6, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + cmp r4, #0 + str r0, [r2] + str r4, [r6, #0x10] + ldr r0, [sp] + str r7, [r6, #8] + str r0, [r6, #0xc] + bne _021D9280 + ldr r0, [r6, #0xc] + add r0, r0, #1 + str r0, [r6, #0xc] +_021D9280: + ldr r0, [r5, #0x1c] + ldr r0, [r0] + str r0, [r6] + mov r0, #0 + mvn r0, r0 + str r0, [r6, #4] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021D9290 +MOD05_021D9290: ; 0x021D9290 + push {r3, r4, lr} + sub sp, #0x1c + add r1, sp, #4 + add r2, sp, #0 + add r4, r0, #0 + bl MOD05_021D90F8 + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + add r3, sp, #8 + bl MOD05_021D91B0 + cmp r0, #0 + beq _021D92DA + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034908 + cmp r0, #1 + bne _021D931C + ldr r0, [sp, #8] + bl FUN_02034908 + cmp r0, #0 + bne _021D931C + ldr r0, [r4, #0x38] + bl FUN_020552F8 + add r3, r0, #0 + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl MOD05_021D9248 + add sp, #0x1c + pop {r3, r4, pc} +_021D92DA: + add r0, r4, #0 + add r1, sp, #4 + add r2, sp, #0 + bl MOD05_021D9114 + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + add r3, sp, #8 + bl MOD05_021D91B0 + cmp r0, #0 + beq _021D931C + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034908 + cmp r0, #1 + bne _021D931C + ldr r0, [sp, #8] + bl FUN_02034908 + cmp r0, #0 + bne _021D931C + ldr r0, [r4, #0x38] + bl FUN_020552F8 + add r3, r0, #0 + ldr r1, [sp, #4] + ldr r2, [sp] + add r0, r4, #0 + bl MOD05_021D9248 +_021D931C: + add sp, #0x1c + pop {r3, r4, pc} + + 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 FUN_02016998 + 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 FUN_02016A18 + 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 FUN_02016A18 + 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 FUN_02016A18 + 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 ; =0x021F64D8 + 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 0x021F64D8 + + 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 FUN_02016998 + add r6, r0, #0 + ldr r0, _021D99F4 ; =0x00000162 + mov r1, #8 + ldrh r0, [r5, r0] + bl FUN_02016998 + str r0, [r6, #8] + ldr r0, _021D99F4 ; =0x00000162 + mov r1, #0x24 + ldrh r0, [r5, r0] + bl FUN_02016998 + 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 FUN_02006704 + 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 FUN_02016998 + 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 FUN_02006670 + mov r1, #0x2b + lsl r1, r1, #4 + str r0, [r7, r1] + mov r0, #0x6f + mov r1, #4 + bl FUN_02006670 + 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 FUN_02006774 + 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 FUN_02006774 + 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 FUN_02006774 + 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 FUN_02006774 + 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 FUN_02016A18 +_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 FUN_02016A18 +_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 FUN_02006774 + 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 FUN_020066F4 + mov r0, #0xad + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020066F4 + add r0, r4, #0 + bl FUN_02016A18 +_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 FUN_02006774 + 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 ; =0x02006875 + ldr r0, [r0, r1] + bx r3 + nop +_021DA22C: .word 0x02006875 + + 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 FUN_02006774 + 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 FUN_02016998 + 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 FUN_02016A18 + 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 FUN_020169D8 + mov r1, #0 + str r1, [r0] + pop {r3, pc} + + thumb_func_start MOD05_021DA5C8 +MOD05_021DA5C8: ; 0x021DA5C8 + ldr r3, _021DA5CC ; =0x02016A19 + bx r3 + .balign 4, 0 +_021DA5CC: .word 0x02016A19 + + 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 ; =0x021F650C + 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 0x021F650C +_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 ; =0x021F655C + 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 0x021F655C +_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 ; =0x021F64FC + 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 0x021F64FC +_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 ; =0x021F64EC + 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 0x021F64EC +_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 FUN_02016A18 + 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 ; =0x021F65AC + 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 0x021F65AC + + 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 FUN_020169D8 + 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 ; =0x021F64E4 + 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 0x021F64E4 + + thumb_func_start MOD05_021DB030 +MOD05_021DB030: ; 0x021DB030 + push {r3, lr} + mov r0, #4 + mov r1, #0x10 + bl FUN_020169D8 + 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 FUN_02016A18 + 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 FUN_02016A18 + 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 FUN_02016A18 + 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 FUN_02016A18 + 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 FUN_02016A18 + 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 FUN_02016998 + add r4, r0, #0 + ldr r0, _021DB4AC ; =0x021F65FC + 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 0x021F65FC + + 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 FUN_02016998 + 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 FUN_02016998 + 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 FUN_02016998 + str r0, [r5] + cmp r0, #0 + bne _021DB974 + bl ErrorHandling +_021DB974: + mov r0, #4 + add r1, r4, #0 + bl FUN_02016998 + 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 FUN_02016A18 + ldr r0, [r4] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + 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 FUN_02016998 + 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 FUN_02016998 + 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 ; =0x021F6608 + 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 0x021F6608 + + 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 ; =0x021F6788 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_021DBE34: .word 0x021F6788 + + 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 ; =0x021F678C + 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 0x021F678C + + 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 ; =0x021F6790 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_021DBE70: .word 0x021F6790 + + 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 ; =0x021F6794 + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_021DBE8C: .word 0x021F6794 + + 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 ; =0x02050E2D + bx r3 + .balign 4, 0 +_021DBE9C: .word 0x02050E2D + + thumb_func_start MOD05_021DBEA0 +MOD05_021DBEA0: ; 0x021DBEA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021DBEB8 ; =0x00000033 + mov r1, #2 + bl FUN_02005FDC + add r0, r4, #0 + bl FUN_02254A68 + add r4, #0x80 + str r0, [r4] + pop {r4, pc} + .balign 4, 0 +_021DBEB8: .word 0x00000033 + + 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 ; =0x02050E11 + bx r3 + .balign 4, 0 +_021DBEC8: .word 0x02050E11 + + thumb_func_start MOD05_021DBECC +MOD05_021DBECC: ; 0x021DBECC + push {r3, lr} + add r0, #0x80 + ldr r0, [r0] + bl FUN_02254AB8 + ldr r0, _021DBEE0 ; =0x00000033 + bl FUN_02005F60 + pop {r3, pc} + nop +_021DBEE0: .word 0x00000033 + + 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 FUN_02016998 + 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 ; =0x021FD290 + 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 0x021FD290 + + 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 ; =0x021FD2BC + 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 0x021FD2BC + + 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 FUN_02016A18 + 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 FUN_02016A18 +_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 FUN_02016998 + 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 FUN_02016A18 + 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 FUN_02016998 + 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 ; =0x0201FDED + add r1, #0xf4 + ldr r0, [r1] + bx r3 + .balign 4, 0 +_021DC47C: .word 0x0201FDED + + 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 FUN_02016A18 + 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 FUN_02016A18 + 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 FUN_02016998 + 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 ; =0x021FD2D4 + mov r1, #4 + str r0, [r4] + ldr r0, _021DC590 ; =0x021F689C + str r0, [r4, #4] + mov r0, #0x41 + bl FUN_02006670 + 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 0x021FD2D4 +_021DC590: .word 0x021F689C + + 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 FUN_020066F4 + 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 FUN_02016A18 + 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 ; =0x021CEF70 + 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 FUN_02016998 + 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 Call_FillMemWithValue + 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 0x021CEF70 +_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 FUN_02016998 + 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 Call_FillMemWithValue + 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 FUN_02016998 + str r0, [r4, #0x10] + cmp r0, #0 + bne _021DCD92 + mov r0, #0 + pop {r4, pc} +_021DCD92: + mov r1, #0 + mov r2, #0x64 + bl Call_FillMemWithValue +_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 Call_FillMemWithValue + 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 FUN_02006704 + 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 FUN_02016A18 + 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 FUN_02006704 + 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 FUN_02016A18 + 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 FUN_02006704 + 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 FUN_02016A18 + 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 ; =0x020DF4A4 + mov r1, #0 + str r1, [r0, #8] + add r0, #0xc + mov r2, #0x28 + bx r3 + .balign 4, 0 +_021DD044: .word 0x020DF4A4 + + 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 Call_FillMemWithValue + 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 ; =0x021CEF70 + 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 0x021CEF70 +_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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + mov r1, #3 + bl _u32_div_f + add r0, r1, #1 + str r0, [r4, #4] + bl FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + mov r1, #1 + and r0, r1 + add r0, r0, #4 + str r0, [r5, #8] + bl FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 ; =0x021F67D8 + 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 ; =0x021F67C8 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 0x021F67D8 +_021DE2D8: .word 0x021F67C8 +_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 FUN_0201BA60 + 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 ; =0x021F687C + add r0, r7, #1 + ldr r1, [r1, r6] + mul r1, r0 + str r1, [r5, #8] + ldr r1, _021DEDA8 ; =0x021F683C + ldr r1, [r1, r6] + mul r1, r0 + str r1, [r5, #0x10] + mov r0, #0 + str r0, [r5, #0xc] + ldr r0, _021DEDA8 ; =0x021F683C + ldr r0, [r0, r6] + str r0, [r5, #0x14] + bl FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 0x021F687C +_021DEDA8: .word 0x021F683C +_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 ; =0x021F681C + 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 0x021F681C +_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 ; =0x021F67F8 + 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 0x021F67F8 +_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 FUN_0201BA60 + mov r1, #6 + bl _u32_div_f + add r1, #0x12 + str r1, [r5, #4] + bl FUN_0201BA60 + 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 ; =0x021F67F8 + add r0, r7, #1 + ldr r1, [r1, r4] + mul r1, r0 + str r1, [r5, #0x10] + ldr r1, _021DF4FC ; =0x021F67E8 + 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 ; =0x021F67F8 + ldr r1, [r5, #0x10] + ldr r0, [r0, r4] + add r0, r1, r0 + str r0, [r5, #0x10] + ldr r0, _021DF4FC ; =0x021F67E8 + ldr r1, [r5, #8] + ldr r0, [r0, r4] + add r0, r1, r0 + str r0, [r5, #8] +_021DF492: + ldr r0, _021DF4F8 ; =0x021F67F8 + 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 FUN_0201BA60 + mov r1, #0x18 + bl _u32_div_f + mov r0, #1 + lsl r0, r0, #8 + add r0, r1, r0 + str r0, [sp, #0x18] + bl FUN_0201BA60 + 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 0x021F67F8 +_021DF4FC: .word 0x021F67E8 + + 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 FUN_0201BA60 + mov r1, #5 + bl _u32_div_f + add r0, r1, #7 + str r0, [r5, #4] + bl FUN_0201BA60 + 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 FUN_0201BA60 + mov r1, #6 + bl _u32_div_f + add r0, r1, #3 + str r0, [r5, #0x10] + bl FUN_0201BA60 + mov r1, #5 + bl _u32_div_f + add r0, r1, #4 + str r0, [r5, #0x14] + bl FUN_0201BA60 + mov r1, #0x14 + bl _u32_div_f + str r1, [sp, #8] + add r0, sp, #0x10 + add r1, r4, #0 + bl MOD05_021DD168 + bl FUN_0201BA60 + mov r1, #6 + lsl r1, r1, #6 + bl _u32_div_f + sub r1, #0x40 + str r1, [sp, #0x10] + bl FUN_0201BA60 + 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 FUN_0201BA60 + neg r1, r7 + bl _u32_div_f + sub r1, r6, r1 + b _021DF8AA +_021DF89E: + bl FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + mov r1, #0x14 + bl _u32_div_f + add r1, #0xa + str r1, [r4, #8] + bl FUN_0201BA60 + 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 FUN_0201BA60 + mov r1, #0x14 + bl _u32_div_f + add r1, #0xa + str r1, [r4, #8] + bl FUN_0201BA60 + 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 FUN_0201BA60 + mov r1, #0xf + bl _u32_div_f + add r1, #0xa + str r1, [r4, #8] + bl FUN_0201BA60 + 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 FUN_0201BA60 + mov r1, #0x14 + bl _u32_div_f + add r1, #0xa + str r1, [r4, #8] + bl FUN_0201BA60 + 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 FUN_0201BA60 + 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 ; =0x021F6808 + 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 ; =0x021F6808 + 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 FUN_0201BA60 + 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 ; =0x021F6808 + 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 FUN_0201BA60 + ldr r1, _021DFFFC ; =0x000001FF + and r0, r1 + str r0, [sp, #0x18] + bl FUN_0201BA60 + 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 0x021F6808 +_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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + mov r0, #1 + str r0, [r5, #0xc] + ldr r0, [sp, #0xc] + str r0, [r5] + ldr r0, [sp, #8] + str r0, [r5, #0x18] + bl FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + mov r1, #0xf + bl _u32_div_f + str r1, [r4, #0x10] + b _021E06BE +_021E069E: + bl FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + 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 FUN_0201BA60 + ldr r1, _021E0938 ; =0x000001FF + and r0, r1 + sub r0, #0x80 + str r0, [sp, #8] + bl FUN_0201BA60 + mov r1, #0xc0 + bl _u32_div_f + add r1, #8 + str r1, [sp, #0xc] + b _021E0912 +_021E08E0: + bl FUN_0201BA60 + ldr r1, _021E0938 ; =0x000001FF + and r0, r1 + sub r0, #0x80 + str r0, [sp, #8] + bl FUN_0201BA60 + mov r1, #0x7f + and r0, r1 + add r0, #0x40 + str r0, [sp, #0xc] + b _021E0912 +_021E08FA: + bl FUN_0201BA60 + ldr r1, _021E0938 ; =0x000001FF + and r0, r1 + sub r0, #0x80 + str r0, [sp, #8] + bl FUN_0201BA60 + 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 Call_FillMemWithValue + 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 Call_FillMemWithValue + 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 ; =0x0200CA99 + add r1, r0, #0 + ldr r0, _021E12A0 ; =MOD05_021E12A4 + mov r2, #0x80 + bx r3 + nop +_021E129C: .word 0x0200CA99 +_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} + str r0, [sp] + add r5, r1, #0 + add r6, r2, #0 + bl FUN_02046528 + mov r1, #0x47 + add r7, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + bl FUN_02016998 + add r4, r0, #0 + bne _021E1396 + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_021E1396: + mov r2, #0x47 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + str r7, [r4, #4] + ldr r0, [r7, #0xc] + bl FUN_020462AC + str r0, [r4, #8] + mov r0, #0x45 + lsl r0, r0, #2 + str r6, [r4, r0] + add r0, r0, #4 + str r5, [r4, r0] + ldr r0, [sp] + ldr r1, _021E13C0 ; =MOD05_021E13C4 + add r2, r4, #0 + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E13C0: .word MOD05_021E13C4 + + thumb_func_start MOD05_021E13C4 +MOD05_021E13C4: ; 0x021E13C4 + push {r3, r4, r5, lr} + sub sp, #8 + bl FUN_0204652C + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #8 + bhi _021E13FC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E13E0: ; jump table + .short _021E13F2 - _021E13E0 - 2 ; case 0 + .short _021E1408 - _021E13E0 - 2 ; case 1 + .short _021E1456 - _021E13E0 - 2 ; case 2 + .short _021E1470 - _021E13E0 - 2 ; case 3 + .short _021E1482 - _021E13E0 - 2 ; case 4 + .short _021E149E - _021E13E0 - 2 ; case 5 + .short _021E14B0 - _021E13E0 - 2 ; case 6 + .short _021E14FA - _021E13E0 - 2 ; case 7 + .short _021E1502 - _021E13E0 - 2 ; case 8 +_021E13F2: + ldr r0, [r4, #4] + bl MOD05_021E19E0 + cmp r0, #1 + beq _021E13FE +_021E13FC: + b _021E150C +_021E13FE: + add r0, r4, #0 + mov r1, #1 + bl MOD05_021E1514 + b _021E150C +_021E1408: + bl MOD05_021E153C + add r0, r4, #0 + bl MOD05_021E1518 + cmp r0, #2 + bne _021E142A + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + strh r1, [r0] + add r0, r4, #0 + mov r1, #2 + bl MOD05_021E1514 + b _021E150C +_021E142A: + cmp r0, #0 + bne _021E1442 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + strh r1, [r0] + add r0, r4, #0 + mov r1, #6 + bl MOD05_021E1514 + b _021E150C +_021E1442: + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + strh r1, [r0] + add r0, r4, #0 + mov r1, #7 + bl MOD05_021E1514 + b _021E150C +_021E1456: + mov r0, #0x62 + lsl r0, r0, #4 + bl FUN_020054C8 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_0205F42C + add r0, r4, #0 + mov r1, #3 + bl MOD05_021E1514 + b _021E150C +_021E1470: + bl MOD05_021E1794 + cmp r0, #0 + bne _021E150C + add r0, r4, #0 + mov r1, #4 + bl MOD05_021E1514 + b _021E150C +_021E1482: + bl MOD05_021E17A0 + cmp r0, #0 + bne _021E1494 + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + strh r1, [r0] +_021E1494: + add r0, r4, #0 + mov r1, #5 + bl MOD05_021E1514 + b _021E150C +_021E149E: + bl MOD05_021E1794 + cmp r0, #0 + bne _021E150C + add r0, r4, #0 + mov r1, #8 + bl MOD05_021E1514 + b _021E150C +_021E14B0: + ldr r0, [r4, #8] + bl FUN_0205F41C + mov r1, #0x64 + sub r5, r1, r0 + add r0, r5, #0 + mov r1, #0xa + bl _s32_div_f + cmp r0, #0 + bne _021E14CA + mov r3, #1 + b _021E14DC +_021E14CA: + add r0, r5, #0 + mov r1, #0x64 + bl _s32_div_f + cmp r0, #0 + bne _021E14DA + mov r3, #2 + b _021E14DC +_021E14DA: + mov r3, #3 +_021E14DC: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + add r2, r5, #0 + bl FUN_0200AD38 + add r0, r4, #0 + mov r1, #8 + bl MOD05_021E1514 + b _021E150C +_021E14FA: + mov r1, #8 + bl MOD05_021E1514 + b _021E150C +_021E1502: + bl FUN_02016A18 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E150C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E1514 +MOD05_021E1514: ; 0x021E1514 + str r1, [r0] + bx lr + + thumb_func_start MOD05_021E1518 +MOD05_021E1518: ; 0x021E1518 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_0205F41C + cmp r0, #0x64 + bne _021E1538 + mov r0, #0x11 + lsl r0, r0, #4 + ldrh r0, [r4, r0] + cmp r0, #0 + bne _021E1534 + mov r0, #1 + pop {r4, pc} +_021E1534: + mov r0, #2 + pop {r4, pc} +_021E1538: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E153C +MOD05_021E153C: ; 0x021E153C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp] + ldr r0, [r0, #4] + bl FUN_02034B64 + mov r2, #0 + str r0, [sp, #4] + str r2, [sp, #0x18] + cmp r0, #0 + bls _021E1562 + ldr r3, [sp] + add r1, r2, #0 +_021E1556: + ldr r0, [sp, #4] + add r2, r2, #1 + str r1, [r3, #0x10] + add r3, r3, #4 + cmp r2, r0 + blo _021E1556 +_021E1562: + ldr r0, [sp] + ldr r0, [r0, #4] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [sp] + ldr r0, [r0, #4] + ldr r0, [r0, #0x38] + bl FUN_0205532C + sub r1, r4, #7 + str r1, [sp, #0x14] + add r1, r4, #7 + str r1, [sp, #0x10] + sub r1, r0, #7 + add r0, r0, #6 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r0, #0 + bge _021E1592 + mov r0, #0 + str r0, [sp, #0x14] +_021E1592: + ldr r0, [sp, #0xc] + cmp r0, #0 + bge _021E159C + mov r0, #0 + str r0, [sp, #0xc] +_021E159C: + ldr r0, [sp, #4] + mov r6, #0 + cmp r0, #0 + bls _021E1622 + ldr r5, [sp] +_021E15A6: + ldr r0, [sp] + add r1, r6, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r4, r0, #0 + beq _021E161A + bl FUN_02058488 + cmp r0, #8 + bhi _021E161A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E15CA: ; jump table + .short _021E161A - _021E15CA - 2 ; case 0 + .short _021E15DC - _021E15CA - 2 ; case 1 + .short _021E15DC - _021E15CA - 2 ; case 2 + .short _021E161A - _021E15CA - 2 ; case 3 + .short _021E15DC - _021E15CA - 2 ; case 4 + .short _021E15DC - _021E15CA - 2 ; case 5 + .short _021E15DC - _021E15CA - 2 ; case 6 + .short _021E15DC - _021E15CA - 2 ; case 7 + .short _021E15DC - _021E15CA - 2 ; case 8 +_021E15DC: + add r0, r4, #0 + bl FUN_02058B2C + add r7, r0, #0 + add r0, r4, #0 + bl FUN_02058B4C + ldr r1, [sp, #0x14] + cmp r7, r1 + blt _021E161A + ldr r1, [sp, #0x10] + cmp r7, r1 + bgt _021E161A + ldr r1, [sp, #0xc] + cmp r0, r1 + blt _021E161A + ldr r1, [sp, #8] + cmp r0, r1 + bgt _021E161A + add r0, r4, #0 + bl FUN_02058480 + bl MOD05_021E1630 + cmp r0, #0 + bne _021E161A + ldr r0, [sp, #0x18] + str r4, [r5, #0x10] + add r0, r0, #1 + add r5, r5, #4 + str r0, [sp, #0x18] +_021E161A: + ldr r0, [sp, #4] + add r6, r6, #1 + cmp r6, r0 + blo _021E15A6 +_021E1622: + mov r2, #0x11 + ldr r1, [sp, #0x18] + ldr r0, [sp] + lsl r2, r2, #4 + strh r1, [r0, r2] + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E1630 +MOD05_021E1630: ; 0x021E1630 + sub r0, #0x33 + cmp r0, #3 + bhi _021E164E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1642: ; jump table + .short _021E164A - _021E1642 - 2 ; case 0 + .short _021E164A - _021E1642 - 2 ; case 1 + .short _021E164A - _021E1642 - 2 ; case 2 + .short _021E164A - _021E1642 - 2 ; case 3 +_021E164A: + mov r0, #1 + bx lr +_021E164E: + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E1654 +MOD05_021E1654: ; 0x021E1654 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, [r7, #0xc] + bl FUN_020462AC + add r4, r0, #0 + bl FUN_0205F41C + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0205F43C + add r5, r0, #0 + ldr r0, [r7, #0xc] + bl FUN_0206F158 + ldr r1, _021E16C4 ; =0x000001BB + mov r2, #1 + mov r3, #4 + bl FUN_0206EE50 + cmp r0, #1 + bne _021E1692 + cmp r6, #0x64 + bhs _021E1692 + add r1, r6, #1 + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + bl FUN_0205F42C +_021E1692: + add r0, r4, #0 + bl FUN_0205ED9C + cmp r0, #1 + bne _021E16BE + cmp r5, #0x64 + bhs _021E16AE + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0205F44C +_021E16AE: + cmp r5, #0x64 + bne _021E16BE + add r0, r4, #0 + bl FUN_0205F408 + add r0, r7, #0 + bl MOD05_021E16C8 +_021E16BE: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E16C4: .word 0x000001BB + + thumb_func_start MOD05_021E16C8 +MOD05_021E16C8: ; 0x021E16C8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02034B64 + add r7, r0, #0 + ldr r5, _021E16FC ; =0x00000000 + beq _021E16F8 +_021E16D6: + ldr r0, [r6, #0x34] + add r1, r5, #0 + bl FUN_02058060 + add r4, r0, #0 + beq _021E16F2 + bl FUN_02058480 + cmp r0, #0x31 + bne _021E16F2 + add r0, r4, #0 + mov r1, #2 + bl MOD05_021E198C +_021E16F2: + add r5, r5, #1 + cmp r5, r7 + blo _021E16D6 +_021E16F8: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E16FC: .word 0x00000000 + + thumb_func_start MOD05_021E1700 +MOD05_021E1700: ; 0x021E1700 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + bl FUN_0205AEA4 + add r1, r0, #0 + ldr r0, _021E1720 ; =0x00000112 + ldrh r2, [r4, r0] + add r2, r2, #1 + strh r2, [r4, r0] + add r0, r4, #0 + bl MOD05_021E1724 + pop {r4, pc} + nop +_021E1720: .word 0x00000112 + + thumb_func_start MOD05_021E1724 +MOD05_021E1724: ; 0x021E1724 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0 + bne _021E173C + bl ErrorHandling + pop {r4, r5, r6, pc} +_021E173C: + ldr r0, _021E1750 ; =MOD05_021E1754 + str r5, [r4, #8] + add r1, r4, #0 + mov r2, #0 + str r6, [r4, #4] + bl FUN_0200CA44 + str r0, [r4] + pop {r4, r5, r6, pc} + nop +_021E1750: .word MOD05_021E1754 + + thumb_func_start MOD05_021E1754 +MOD05_021E1754: ; 0x021E1754 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #4] + bl FUN_0205AEF0 + cmp r0, #1 + bne _021E178E + ldr r1, [r4, #8] + ldr r0, _021E1790 ; =0x00000112 + ldrh r0, [r1, r0] + cmp r0, #0 + bne _021E1770 + bl ErrorHandling +_021E1770: + ldr r2, [r4, #8] + ldr r0, _021E1790 ; =0x00000112 + ldrh r1, [r2, r0] + sub r1, r1, #1 + strh r1, [r2, r0] + ldr r0, [r4, #4] + bl FUN_0205AEFC + ldr r0, [r4] + bl FUN_0200CAB4 + mov r0, #4 + add r1, r4, #0 + bl FUN_02016A8C +_021E178E: + pop {r4, pc} + .balign 4, 0 +_021E1790: .word 0x00000112 + + thumb_func_start MOD05_021E1794 +MOD05_021E1794: ; 0x021E1794 + ldr r1, _021E179C ; =0x00000112 + ldrh r0, [r0, r1] + bx lr + nop +_021E179C: .word 0x00000112 + + thumb_func_start MOD05_021E17A0 +MOD05_021E17A0: ; 0x021E17A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + str r0, [sp] + mov r0, #0x11 + lsl r0, r0, #4 + mov r7, #0 + ldrh r0, [r5, r0] + add r6, r7, #0 + cmp r0, #0 + ble _021E183C + add r4, r5, #0 +_021E17BE: + ldr r0, [r4, #0x10] + bl MOD05_021E1848 + add r1, r0, #0 + ldr r0, [r5, #4] + bl FUN_02039640 + cmp r0, #0 + bne _021E17DE + ldr r1, [r4, #0x10] + ldr r2, _021E1840 ; =0x021F6908 + add r0, r5, #0 + bl MOD05_021E1700 + mov r7, #1 + b _021E182E +_021E17DE: + bl FUN_0201B9EC + mov r1, #0x64 + bl _s32_div_f + cmp r1, #0x32 + bge _021E182E + ldr r0, [r4, #0x10] + bl MOD05_021E1978 + cmp r0, #0 + bne _021E182E + ldr r0, [r4, #0x10] + mov r1, #0x31 + bl MOD05_021E198C + ldr r1, [r4, #0x10] + ldr r2, _021E1844 ; =0x021F6910 + add r0, r5, #0 + bl MOD05_021E1700 + ldr r0, [r5, #4] + ldr r1, [r4, #0x10] + mov r2, #0 + bl MOD05_021E1A30 + add r7, r0, #0 + beq _021E1826 + mov r1, #0x31 + bl MOD05_021E198C + ldr r2, _021E1844 ; =0x021F6910 + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021E1700 +_021E1826: + ldr r0, [sp] + mov r7, #1 + bl FUN_0205ED7C +_021E182E: + mov r0, #0x11 + lsl r0, r0, #4 + ldrh r0, [r5, r0] + add r6, r6, #1 + add r4, r4, #4 + cmp r6, r0 + blt _021E17BE +_021E183C: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E1840: .word 0x021F6908 +_021E1844: .word 0x021F6910 + + thumb_func_start MOD05_021E1848 +MOD05_021E1848: ; 0x021E1848 + push {r3, lr} + bl FUN_02058498 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_020395F4 + pop {r3, pc} + + thumb_func_start MOD05_021E1858 +MOD05_021E1858: ; 0x021E1858 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r0, r1, #0 + add r5, r2, #0 + bl MOD05_021E1978 + cmp r0, #0 + bne _021E186C + mov r0, #0 + pop {r3, r4, r5, pc} +_021E186C: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021E189C + add r5, r0, #0 + cmp r5, #0xff + bne _021E187E + mov r0, #0 + pop {r3, r4, r5, pc} +_021E187E: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021E18BC + add r2, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021E1908 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021E1964 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E189C +MOD05_021E189C: ; 0x021E189C + ldr r3, _021E18B8 ; =0x021F691C + mov r2, #0 +_021E18A0: + ldrh r0, [r3] + cmp r1, r0 + bne _021E18AC + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + bx lr +_021E18AC: + add r2, r2, #1 + add r3, #0xc + cmp r2, #0xf0 + blo _021E18A0 + mov r0, #0xff + bx lr + .balign 4, 0 +_021E18B8: .word 0x021F691C + + thumb_func_start MOD05_021E18BC +MOD05_021E18BC: ; 0x021E18BC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0xc + ldr r2, _021E1900 ; =0x021F691C + mul r0, r1 + add r0, r2, r0 + ldr r7, _021E1904 ; =0x0000FFFF + mov r4, #1 + add r5, r0, #2 +_021E18CE: + ldrh r1, [r5] + cmp r1, #0 + bne _021E18DC + sub r0, r4, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E18DC: + cmp r1, r7 + beq _021E18F0 + add r0, r6, #0 + bl FUN_02039640 + cmp r0, #0 + bne _021E18F0 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_021E18F0: + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #6 + blt _021E18CE + sub r0, r4, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E1900: .word 0x021F691C +_021E1904: .word 0x0000FFFF + + thumb_func_start MOD05_021E1908 +MOD05_021E1908: ; 0x021E1908 + push {r3, r4, r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0 + add r4, r2, #0 + bl FUN_020462AC + cmp r4, #0 + beq _021E192C + add r1, r4, #0 + bl FUN_0205EEB8 + cmp r0, #0 + bne _021E192C + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E1930 + add r4, r0, #0 +_021E192C: + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E1930 +MOD05_021E1930: ; 0x021E1930 + sub r1, r1, #1 + lsl r1, r1, #0x10 + ldr r2, _021E195C ; =0x021F691C + lsr r3, r1, #0x10 + beq _021E1956 + mov r1, #0xc + mul r1, r0 + add r2, r2, r1 + ldr r1, _021E1960 ; =0x0000FFFF +_021E1942: + lsl r0, r3, #1 + ldrh r0, [r2, r0] + cmp r0, r1 + beq _021E194E + add r0, r3, #0 + bx lr +_021E194E: + sub r0, r3, #1 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + bne _021E1942 +_021E1956: + mov r0, #0 + bx lr + nop +_021E195C: .word 0x021F691C +_021E1960: .word 0x0000FFFF + + thumb_func_start MOD05_021E1964 +MOD05_021E1964: ; 0x021E1964 + mov r2, #0xc + mul r2, r0 + ldr r0, _021E1974 ; =0x021F691C + lsl r1, r1, #1 + add r0, r0, r2 + ldrh r0, [r1, r0] + bx lr + nop +_021E1974: .word 0x021F691C + + thumb_func_start MOD05_021E1978 +MOD05_021E1978: ; 0x021E1978 + push {r3, lr} + bl FUN_02058480 + cmp r0, #0x31 + bne _021E1986 + mov r0, #1 + pop {r3, pc} +_021E1986: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E198C +MOD05_021E198C: ; 0x021E198C + ldr r3, _021E1990 ; =0x02058E91 + bx r3 + .balign 4, 0 +_021E1990: .word 0x02058E91 + + thumb_func_start MOD05_021E1994 +MOD05_021E1994: ; 0x021E1994 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + beq _021E19DC + add r0, r5, #0 + bl FUN_020584C4 + cmp r0, #0 + bne _021E19AA + mov r4, #0xe + b _021E19BC +_021E19AA: + cmp r0, #1 + bne _021E19B2 + mov r4, #0xf + b _021E19BC +_021E19B2: + cmp r0, #2 + bne _021E19BA + mov r4, #0x10 + b _021E19BC +_021E19BA: + mov r4, #0x11 +_021E19BC: + add r0, r6, #0 + add r1, r5, #0 + mov r2, #1 + bl MOD05_021E1A30 + cmp r0, #0 + beq _021E19D2 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + bl MOD05_021E198C +_021E19D2: + lsl r1, r4, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + bl MOD05_021E198C +_021E19DC: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E19E0 +MOD05_021E19E0: ; 0x021E19E0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02034B64 + ldr r5, _021E1A2C ; =0x00000000 + add r7, r0, #0 + str r5, [sp] + beq _021E1A1C +_021E19F0: + ldr r0, [r6, #0x34] + add r1, r5, #0 + bl FUN_02058060 + add r4, r0, #0 + beq _021E1A16 + bl FUN_02058854 + cmp r0, #1 + bne _021E1A10 + add r0, r4, #0 + bl FUN_02058914 + mov r0, #1 + str r0, [sp] + b _021E1A16 +_021E1A10: + add r0, r4, #0 + bl FUN_02058908 +_021E1A16: + add r5, r5, #1 + cmp r5, r7 + blo _021E19F0 +_021E1A1C: + ldr r0, [sp] + cmp r0, #0 + bne _021E1A26 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E1A26: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E1A2C: .word 0x00000000 + + thumb_func_start MOD05_021E1A30 +MOD05_021E1A30: ; 0x021E1A30 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + str r0, [sp] + str r2, [sp, #4] + bl FUN_02034B64 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_02058498 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + bl FUN_020395F4 + str r0, [sp, #8] + bl FUN_0203962C + cmp r0, #0 + bne _021E1A60 + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E1A60: + mov r4, #0 + cmp r7, #0 + bls _021E1AD2 +_021E1A66: + ldr r0, [sp] + add r1, r4, #0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0 + beq _021E1ACC + ldr r1, [sp, #4] + cmp r1, #0 + bne _021E1A82 + bl FUN_02058480 + cmp r0, #0x31 + beq _021E1ACC +_021E1A82: + add r0, r5, #0 + bl FUN_02058488 + cmp r0, #8 + bhi _021E1ACC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E1A98: ; jump table + .short _021E1ACC - _021E1A98 - 2 ; case 0 + .short _021E1AAA - _021E1A98 - 2 ; case 1 + .short _021E1AAA - _021E1A98 - 2 ; case 2 + .short _021E1ACC - _021E1A98 - 2 ; case 3 + .short _021E1AAA - _021E1A98 - 2 ; case 4 + .short _021E1AAA - _021E1A98 - 2 ; case 5 + .short _021E1AAA - _021E1A98 - 2 ; case 6 + .short _021E1AAA - _021E1A98 - 2 ; case 7 + .short _021E1AAA - _021E1A98 - 2 ; case 8 +_021E1AAA: + add r0, r5, #0 + bl FUN_02058498 + add r6, r0, #0 + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl FUN_020395F4 + ldr r1, [sp, #0xc] + cmp r1, r6 + beq _021E1ACC + ldr r1, [sp, #8] + cmp r1, r0 + bne _021E1ACC + add sp, #0x10 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E1ACC: + add r4, r4, #1 + cmp r4, r7 + blo _021E1A66 +_021E1AD2: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E1AD8 +MOD05_021E1AD8: ; 0x021E1AD8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + ldr r1, [sp, #0x2c] + add r4, r0, #0 + add r5, r2, #0 + add r7, r3, #0 + cmp r1, #0 + bne _021E1B06 + ldr r2, _021E1BF0 ; =0x00000141 + mov r0, #1 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r1, r6, #0 + add r1, #0x8c + str r0, [r1] + add r0, r6, #0 + add r0, #0x97 + ldrb r1, [r0] + mov r0, #2 + orr r1, r0 + b _021E1B16 +_021E1B06: + add r0, r6, #0 + add r0, #0x8c + str r1, [r0] + add r0, r6, #0 + add r0, #0x97 + ldrb r1, [r0] + mov r0, #2 + bic r1, r0 +_021E1B16: + add r0, r6, #0 + add r0, #0x97 + strb r1, [r0] + add r0, r6, #0 + ldr r1, [sp, #0x24] + add r0, #0x90 + str r1, [r0] + add r0, r6, #0 + ldr r1, [sp, #0x20] + str r4, [r6] + add r0, #0xa0 + str r1, [r0] + add r0, r6, #0 + add r0, #0x97 + add r2, sp, #8 + ldrb r0, [r0] + mov r1, #1 + ldrb r3, [r2, #0x14] + bic r0, r1 + mov r1, #1 + and r1, r3 + orr r1, r0 + add r0, r6, #0 + add r0, #0x97 + strb r1, [r0] + add r1, r6, #0 + ldrb r0, [r2, #0x10] + add r1, #0x96 + mov r3, #3 + strb r0, [r1] + add r1, r6, #0 + add r1, #0x97 + ldrb r2, [r1] + mov r1, #0x40 + bic r2, r1 + add r1, r6, #0 + add r1, #0x97 + strb r2, [r1] + add r1, r6, #0 + add r1, #0x97 + ldrb r2, [r1] + mov r1, #0x80 + bic r2, r1 + add r1, r6, #0 + add r1, #0x97 + strb r2, [r1] + add r1, r6, #0 + add r1, #0x98 + strb r5, [r1] + add r1, r6, #0 + add r1, #0x99 + add r2, r6, #0 + strb r7, [r1] + mov r1, #0 + add r2, #0x9b + strb r1, [r2] + ldr r2, [sp, #0x28] + str r2, [r6, #0x18] + add r2, r6, #0 + add r2, #0x94 + strb r3, [r2] + mov r2, #0xb5 + lsl r2, r2, #2 + strh r0, [r6, r2] + add r2, r6, #0 + add r3, r1, #0 +_021E1B9A: + add r0, r2, #0 + add r0, #0xb4 + str r3, [r0] + add r0, r2, #0 + add r0, #0xb8 + add r1, r1, #1 + add r2, #8 + str r3, [r0] + cmp r1, #0x1c + blt _021E1B9A + mov r7, #0xa7 + add r1, r6, #0 + add r2, r6, #0 + mov r5, #0 + mov r0, #0xff + lsl r7, r7, #2 +_021E1BBA: + mov r4, #0x6f + lsl r4, r4, #2 + str r5, [r1, r4] + add r4, r4, #4 + str r5, [r1, r4] + strh r0, [r2, r7] + add r3, r3, #1 + add r1, #8 + add r2, r2, #2 + cmp r3, #0x1c + blt _021E1BBA + add r4, r6, #0 + mov r7, #0x50 +_021E1BD4: + add r0, r7, #0 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x1c] + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #0x1c + blt _021E1BD4 + add r6, #0xa0 + ldr r1, _021E1BF4 ; =0x0000EEEE + ldr r0, [r6] + strh r1, [r0] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E1BF0: .word 0x00000141 +_021E1BF4: .word 0x0000EEEE + + thumb_func_start MOD05_021E1BF8 +MOD05_021E1BF8: ; 0x021E1BF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r7, r1, #0 + mov r1, #0xb6 + add r6, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + str r2, [sp, #0x18] + add r5, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021E1C18 + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021E1C18: + mov r2, #0xb6 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + str r5, [sp] + add r0, sp, #0x20 + ldrb r0, [r0, #0x10] + add r1, r4, #0 + add r2, r7, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x34] + str r0, [sp, #8] + ldr r0, [sp, #0x38] + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + str r0, [sp, #0x10] + ldr r0, [sp, #0x40] + str r0, [sp, #0x14] + ldr r3, [sp, #0x18] + add r0, r6, #0 + bl MOD05_021E1AD8 + add r0, r4, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E1C4C +MOD05_021E1C4C: ; 0x021E1C4C + ldr r3, _021E1C50 ; =MOD05_021E1D38 + bx r3 + .balign 4, 0 +_021E1C50: .word MOD05_021E1D38 + + thumb_func_start MOD05_021E1C54 +MOD05_021E1C54: ; 0x021E1C54 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + bl MOD05_021E1DA8 + mov r1, #7 + tst r1, r0 + bne _021E1C68 + lsr r0, r0, #3 + b _021E1C6C +_021E1C68: + lsr r0, r0, #3 + add r0, r0, #1 +_021E1C6C: + add r1, r4, #0 + add r1, #0x97 + ldrb r1, [r1] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1f + beq _021E1C86 + add r1, r4, #0 + add r1, #0x98 + ldrb r1, [r1] + sub r2, r1, r0 + add r1, r4, #0 + add r1, #0x98 + strb r2, [r1] +_021E1C86: + add r1, r4, #0 + add r1, #0x97 + ldrb r1, [r1] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E1CA8 + add r1, r4, #0 + add r1, #0x99 + ldrb r2, [r1] + add r1, r4, #0 + add r1, #0x9b + ldrb r1, [r1] + lsl r1, r1, #1 + sub r2, r2, r1 + add r1, r4, #0 + add r1, #0x99 + strb r2, [r1] +_021E1CA8: + add r1, r4, #0 + add r1, #0x99 + ldrb r1, [r1] + lsl r0, r0, #0x18 + add r3, r4, #0 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x9b + ldrb r0, [r0] + add r1, r4, #0 + add r3, #0x98 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x3d + str r0, [sp, #0x10] + ldr r0, [r4] + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + ldr r2, _021E1D30 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r4, #0 + ldr r2, _021E1D30 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + bl MOD05_021E1DE4 + add r1, r4, #0 + add r1, #0x96 + add r0, r4, #0 + ldrb r1, [r1] + add r0, #0xa4 + mov r2, #4 + bl FUN_02001C34 + add r1, r4, #0 + add r1, #0xb0 + str r0, [r1] + ldr r0, _021E1D34 ; =MOD05_021E1E58 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + add sp, #0x14 + pop {r3, r4, pc} + nop +_021E1D30: .word 0x000003D9 +_021E1D34: .word MOD05_021E1E58 + + thumb_func_start MOD05_021E1D38 +MOD05_021E1D38: ; 0x021E1D38 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + mov r0, #0x50 + mov r1, #4 + add r6, r2, #0 + bl FUN_020219F4 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r7, #0 + add r2, r4, #0 + bl FUN_0200A8E0 + add r1, r5, #0 + add r1, #0x9b + ldrb r1, [r1] + add r0, r5, #0 + add r0, #0x90 + lsl r1, r1, #2 + add r1, r5, r1 + ldr r0, [r0] + ldr r1, [r1, #0x1c] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x9b + ldrb r2, [r0] + lsl r0, r2, #2 + add r0, r5, r0 + ldr r1, [r0, #0x1c] + lsl r0, r2, #3 + add r0, r5, r0 + add r0, #0xb4 + str r1, [r0] + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + lsl r0, r0, #3 + add r0, r5, r0 + add r0, #0xb8 + str r6, [r0] + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + add r5, #0x9b + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E1DA8 +MOD05_021E1DA8: ; 0x021E1DA8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x9b + ldrb r0, [r0] + mov r6, #0 + add r4, r6, #0 + cmp r0, #0 + ble _021E1DDE + add r5, r7, #0 +_021E1DBA: + add r0, r5, #0 + add r0, #0xb4 + ldr r1, [r0] + cmp r1, #0 + beq _021E1DDE + mov r0, #0 + bl FUN_02002F9C + cmp r6, r0 + bhs _021E1DD0 + add r6, r0, #0 +_021E1DD0: + add r0, r7, #0 + add r0, #0x9b + ldrb r0, [r0] + add r4, r4, #1 + add r5, #8 + cmp r4, r0 + blt _021E1DBA +_021E1DDE: + add r6, #0xc + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E1DE4 +MOD05_021E1DE4: ; 0x021E1DE4 + add r2, r0, #0 + add r1, r0, #0 + add r2, #0xb4 + add r1, #0xa4 + str r2, [r1] + add r2, r0, #0 + add r1, r0, #0 + add r2, #8 + add r1, #0xa8 + str r2, [r1] + add r1, r0, #0 + mov r2, #0 + add r1, #0xac + strb r2, [r1] + add r1, r0, #0 + mov r2, #1 + add r1, #0xad + strb r2, [r1] + add r1, r0, #0 + add r1, #0x9b + ldrb r2, [r1] + add r1, r0, #0 + add r1, #0xae + strb r2, [r1] + add r2, r0, #0 + add r2, #0xaf + ldrb r3, [r2] + mov r2, #0xf + add r1, r0, #0 + bic r3, r2 + add r2, r0, #0 + add r2, #0xaf + strb r3, [r2] + add r2, r0, #0 + add r2, #0xaf + ldrb r3, [r2] + mov r2, #0x30 + add r1, #0xaf + bic r3, r2 + add r2, r0, #0 + add r2, #0xaf + strb r3, [r2] + add r0, #0x9b + ldrb r0, [r0] + ldrb r2, [r1] + cmp r0, #4 + blo _021E1E4E + mov r0, #0xc0 + bic r2, r0 + mov r0, #0x40 + orr r0, r2 + strb r0, [r1] + bx lr +_021E1E4E: + mov r0, #0xc0 + bic r2, r0 + strb r2, [r1] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E1E58 +MOD05_021E1E58: ; 0x021E1E58 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + add r0, #0x94 + ldrb r0, [r0] + cmp r0, #0 + beq _021E1E74 + add r0, r4, #0 + add r0, #0x94 + ldrb r0, [r0] + add r4, #0x94 + sub r0, r0, #1 + strb r0, [r4] + pop {r4, pc} +_021E1E74: + bl FUN_0200E308 + cmp r0, #0 + beq _021E1EC4 + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_02001C78 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _021E1E96 + add r1, r1, #1 + cmp r0, r1 + beq _021E1EC4 + b _021E1EB6 +_021E1E96: + add r0, r4, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E1EC4 + add r0, r4, #0 + add r0, #0xa0 + ldr r1, _021E1EC8 ; =0x0000FFFE + ldr r0, [r0] + strh r1, [r0] + add r0, r4, #0 + bl MOD05_021E1ECC + pop {r4, pc} +_021E1EB6: + add r1, r4, #0 + add r1, #0xa0 + ldr r1, [r1] + strh r0, [r1] + add r0, r4, #0 + bl MOD05_021E1ECC +_021E1EC4: + pop {r4, pc} + nop +_021E1EC8: .word 0x0000FFFE + + thumb_func_start MOD05_021E1ECC +MOD05_021E1ECC: ; 0x021E1ECC + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _021E1F30 ; =0x000005DC + bl FUN_020054C8 + add r0, r6, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r1, #0 + bl FUN_02001C5C + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl FUN_0200CCF8 + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_02019178 + mov r4, #0 + add r5, r6, #0 +_021E1EFC: + ldr r0, [r5, #0x1c] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x1c + blt _021E1EFC + add r0, r6, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E1F22 + add r0, r6, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0200A8B8 +_021E1F22: + ldr r0, [r6, #4] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E1F30: .word 0x000005DC + + thumb_func_start MOD05_021E1F34 +MOD05_021E1F34: ; 0x021E1F34 + push {r3, r4, lr} + sub sp, #0x14 + add r4, sp, #0x10 + ldrb r4, [r4, #0x10] + str r4, [sp] + ldr r4, [sp, #0x24] + str r4, [sp, #4] + ldr r4, [sp, #0x28] + str r4, [sp, #8] + ldr r4, [sp, #0x2c] + str r4, [sp, #0xc] + ldr r4, [sp, #0x30] + str r4, [sp, #0x10] + bl MOD05_021E1BF8 + add sp, #0x14 + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E1F58 +MOD05_021E1F58: ; 0x021E1F58 + push {r3, lr} + bl MOD05_021E2094 + pop {r3, pc} + + thumb_func_start MOD05_021E1F60 +MOD05_021E1F60: ; 0x021E1F60 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + bl MOD05_021E2134 + mov r1, #7 + tst r1, r0 + bne _021E1F74 + lsr r0, r0, #3 + b _021E1F78 +_021E1F74: + lsr r0, r0, #3 + add r0, r0, #1 +_021E1F78: + add r1, r4, #0 + add r1, #0x97 + ldrb r1, [r1] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1f + beq _021E1F92 + add r1, r4, #0 + add r1, #0x98 + ldrb r1, [r1] + sub r2, r1, r0 + add r1, r4, #0 + add r1, #0x98 + strb r2, [r1] +_021E1F92: + add r1, r4, #0 + add r1, #0x97 + ldrb r1, [r1] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E1FC8 + add r1, r4, #0 + add r1, #0x9b + ldrb r3, [r1] + cmp r3, #8 + bls _021E1FB8 + add r1, r4, #0 + add r1, #0x99 + ldrb r2, [r1] + add r1, r4, #0 + add r1, #0x99 + sub r2, #0x10 + strb r2, [r1] + b _021E1FC8 +_021E1FB8: + add r1, r4, #0 + add r1, #0x99 + ldrb r2, [r1] + lsl r1, r3, #1 + sub r2, r2, r1 + add r1, r4, #0 + add r1, #0x99 + strb r2, [r1] +_021E1FC8: + add r1, r4, #0 + add r1, #0x9b + ldrb r2, [r1] + cmp r2, #8 + bls _021E2002 + add r1, r4, #0 + add r1, #0x99 + ldrb r1, [r1] + lsl r0, r0, #0x18 + add r3, r4, #0 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x3d + str r0, [sp, #0x10] + ldr r0, [r4] + add r3, #0x98 + add r1, r4, #0 + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 + b _021E2032 +_021E2002: + add r1, r4, #0 + add r1, #0x99 + ldrb r1, [r1] + lsl r0, r0, #0x18 + add r3, r4, #0 + str r1, [sp] + lsr r0, r0, #0x18 + str r0, [sp, #4] + lsl r0, r2, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x3d + str r0, [sp, #0x10] + ldr r0, [r4] + add r3, #0x98 + add r1, r4, #0 + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 +_021E2032: + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + ldr r2, _021E208C ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r4, #0 + ldr r2, _021E208C ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + bl MOD05_021E2170 + add r2, r4, #0 + add r2, #0x96 + mov r0, #0x65 + lsl r0, r0, #2 + ldrb r2, [r2] + add r0, r4, r0 + mov r1, #0 + mov r3, #4 + bl FUN_020010A8 + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD05_021E2434 + ldr r0, _021E2090 ; =MOD05_021E229C + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + add sp, #0x14 + pop {r3, r4, pc} + .balign 4, 0 +_021E208C: .word 0x000003D9 +_021E2090: .word MOD05_021E229C + + thumb_func_start MOD05_021E2094 +MOD05_021E2094: ; 0x021E2094 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + mov r0, #0x50 + mov r1, #4 + add r7, r2, #0 + add r4, r3, #0 + bl FUN_020219F4 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [sp] + add r2, r6, #0 + bl FUN_0200A8E0 + add r1, r5, #0 + add r1, #0x9b + ldrb r1, [r1] + add r0, r5, #0 + add r0, #0x90 + lsl r1, r1, #2 + add r1, r5, r1 + ldr r0, [r0] + ldr r1, [r1, #0x1c] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + add r0, #0x9b + ldrb r1, [r0] + lsl r0, r1, #2 + add r0, r5, r0 + lsl r1, r1, #3 + add r2, r5, r1 + mov r1, #0x6f + ldr r0, [r0, #0x1c] + lsl r1, r1, #2 + str r0, [r2, r1] + add r0, r6, #0 + bl FUN_02021A20 + cmp r4, #0xfa + bne _021E2104 + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + mov r2, #2 + mvn r2, r2 + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #7 + lsl r0, r0, #6 + str r2, [r1, r0] + b _021E2114 +_021E2104: + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + lsl r0, r0, #3 + add r1, r5, r0 + mov r0, #7 + lsl r0, r0, #6 + str r4, [r1, r0] +_021E2114: + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + lsl r0, r0, #1 + add r1, r5, r0 + mov r0, #0xa7 + lsl r0, r0, #2 + strh r7, [r1, r0] + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + add r5, #0x9b + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E2134 +MOD05_021E2134: ; 0x021E2134 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x9b + ldrb r0, [r0] + mov r6, #0 + add r4, r6, #0 + cmp r0, #0 + ble _021E216A + add r5, r7, #0 +_021E2146: + mov r0, #0x6f + lsl r0, r0, #2 + ldr r1, [r5, r0] + cmp r1, #0 + beq _021E216A + mov r0, #0 + bl FUN_02002F9C + cmp r6, r0 + bhs _021E215C + add r6, r0, #0 +_021E215C: + add r0, r7, #0 + add r0, #0x9b + ldrb r0, [r0] + add r4, r4, #1 + add r5, #8 + cmp r4, r0 + blt _021E2146 +_021E216A: + add r6, #0xc + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E2170 +MOD05_021E2170: ; 0x021E2170 + push {r4, r5} + mov r3, #0x6f + lsl r3, r3, #2 + add r1, r3, #0 + add r2, r0, r3 + sub r1, #0x28 + str r2, [r0, r1] + add r1, r3, #0 + mov r2, #0 + sub r1, #0x24 + str r2, [r0, r1] + add r1, r3, #0 + ldr r2, _021E2268 ; =MOD05_021E2278 + sub r1, #0x20 + str r2, [r0, r1] + add r2, r0, #0 + add r1, r3, #0 + add r2, #8 + sub r1, #0x1c + str r2, [r0, r1] + add r1, r0, #0 + add r1, #0x9b + ldrb r2, [r1] + add r1, r3, #0 + sub r1, #0x18 + strh r2, [r0, r1] + add r1, r3, #0 + mov r2, #8 + sub r1, #0x16 + strh r2, [r0, r1] + add r1, r3, #0 + mov r2, #1 + sub r1, #0x14 + strb r2, [r0, r1] + add r1, r3, #0 + mov r4, #0xc + sub r1, #0x13 + strb r4, [r0, r1] + add r1, r3, #0 + mov r4, #2 + sub r1, #0x12 + strb r4, [r0, r1] + add r1, r3, #0 + sub r1, #0x11 + ldrb r4, [r0, r1] + mov r1, #0xf + bic r4, r1 + orr r4, r2 + add r2, r3, #0 + sub r2, #0x11 + strb r4, [r0, r2] + add r2, r3, #0 + sub r2, #0x11 + ldrb r5, [r0, r2] + mov r2, #0xf0 + mov r4, #0x10 + bic r5, r2 + orr r5, r4 + add r4, r3, #0 + sub r4, #0x11 + strb r5, [r0, r4] + add r4, r3, #0 + sub r4, #0x10 + ldrb r4, [r0, r4] + bic r4, r1 + mov r1, #0xf + orr r4, r1 + add r1, r3, #0 + sub r1, #0x10 + strb r4, [r0, r1] + add r1, r3, #0 + sub r1, #0x10 + ldrb r4, [r0, r1] + mov r1, #0x20 + bic r4, r2 + add r2, r4, #0 + orr r2, r1 + add r1, r3, #0 + sub r1, #0x10 + strb r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + mov r1, #7 + bic r2, r1 + add r1, r3, #0 + sub r1, #0xe + strh r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + mov r1, #0x78 + bic r2, r1 + add r1, r3, #0 + sub r1, #0xe + strh r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + ldr r1, _021E226C ; =0xFFFFFE7F + and r2, r1 + mov r1, #0x80 + orr r2, r1 + add r1, r3, #0 + sub r1, #0xe + strh r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + ldr r1, _021E2270 ; =0xFFFF81FF + and r2, r1 + add r1, r3, #0 + sub r1, #0xe + strh r2, [r0, r1] + add r1, r3, #0 + sub r1, #0xe + ldrh r2, [r0, r1] + ldr r1, _021E2274 ; =0xFFFF7FFF + sub r3, #0xe + and r1, r2 + strh r1, [r0, r3] + pop {r4, r5} + bx lr + nop +_021E2268: .word MOD05_021E2278 +_021E226C: .word 0xFFFFFE7F +_021E2270: .word 0xFFFF81FF +_021E2274: .word 0xFFFF7FFF + + thumb_func_start MOD05_021E2278 +MOD05_021E2278: ; 0x021E2278 + push {r3, lr} + mov r2, #2 + mvn r2, r2 + cmp r1, r2 + bne _021E228E + mov r1, #3 + mov r2, #0xf + mov r3, #4 + bl FUN_020013E8 + pop {r3, pc} +_021E228E: + mov r1, #1 + mov r2, #0xf + mov r3, #2 + bl FUN_020013E8 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E229C +MOD05_021E229C: ; 0x021E229C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r0, r5, #0 + add r0, #0x94 + ldrb r0, [r0] + cmp r0, #0 + beq _021E22B8 + add r0, r5, #0 + add r0, #0x94 + ldrb r0, [r0] + add r5, #0x94 + sub r0, r0, #1 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021E22B8: + bl FUN_0200E308 + cmp r0, #0 + beq _021E235A + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02001204 + add r4, r0, #0 + mov r0, #0x6d + mov r1, #0xb5 + lsl r0, r0, #2 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, r0] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0xb5 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _021E22EE + ldr r0, _021E235C ; =0x000005DC + bl FUN_020054C8 +_021E22EE: + ldr r0, _021E2360 ; =0x021C48B8 + mov r1, #0x40 + ldr r0, [r0, #0x4c] + tst r1, r0 + bne _021E230A + mov r1, #0x80 + tst r1, r0 + bne _021E230A + mov r1, #0x20 + tst r1, r0 + bne _021E230A + mov r1, #0x10 + tst r0, r1 + beq _021E2310 +_021E230A: + add r0, r5, #0 + bl MOD05_021E2434 +_021E2310: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _021E2320 + add r0, r0, #1 + cmp r4, r0 + beq _021E235A + b _021E2346 +_021E2320: + add r0, r5, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E235A + ldr r0, _021E235C ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0xa0 + ldr r1, _021E2364 ; =0x0000FFFE + ldr r0, [r0] + strh r1, [r0] + add r0, r5, #0 + bl MOD05_021E2368 + pop {r4, r5, r6, pc} +_021E2346: + ldr r0, _021E235C ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + strh r4, [r0] + add r0, r5, #0 + bl MOD05_021E2368 +_021E235A: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E235C: .word 0x000005DC +_021E2360: .word 0x021C48B8 +_021E2364: .word 0x0000FFFE + + thumb_func_start MOD05_021E2368 +MOD05_021E2368: ; 0x021E2368 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _021E23CC ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x6d + lsl r0, r0, #2 + mov r1, #0 + ldr r0, [r6, r0] + add r2, r1, #0 + bl FUN_02001300 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_0200CCF8 + add r0, r6, #0 + add r0, #8 + bl FUN_02019178 + mov r4, #0 + add r5, r6, #0 +_021E2398: + ldr r0, [r5, #0x1c] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x1c + blt _021E2398 + add r0, r6, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E23BE + add r0, r6, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0200A8B8 +_021E23BE: + ldr r0, [r6, #4] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E23CC: .word 0x000005DC + + thumb_func_start MOD05_021E23D0 +MOD05_021E23D0: ; 0x021E23D0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + str r1, [sp, #0xc] + mov r0, #0x50 + mov r1, #4 + add r7, r2, #0 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x50 + mov r1, #4 + bl FUN_020219F4 + add r6, r0, #0 + ldr r0, [r5, #0x18] + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [sp, #0xc] + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + str r7, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5, #0x18] + mov r1, #1 + add r2, r6, #0 + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E2434 +MOD05_021E2434: ; 0x021E2434 + push {r4, lr} + mov r1, #0x6d + add r4, r0, #0 + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, r1, #6 + add r1, r4, r1 + bl FUN_0200143C + ldr r0, _021E2460 ; =0x000001BA + ldrh r1, [r4, r0] + add r0, #0xe2 + lsl r1, r1, #1 + add r1, r4, r1 + ldrh r1, [r1, r0] + cmp r1, #0xff + beq _021E245E + add r0, r4, #0 + mov r2, #0 + bl MOD05_021E23D0 +_021E245E: + pop {r4, pc} + .balign 4, 0 +_021E2460: .word 0x000001BA + + thumb_func_start MOD05_021E2464 +MOD05_021E2464: ; 0x021E2464 + push {r4, r5, lr} + sub sp, #0x14 + mov r4, #0 + str r4, [sp] + str r3, [sp, #4] + ldr r3, [sp, #0x20] + str r3, [sp, #8] + str r4, [sp, #0xc] + add r3, r4, #0 + str r4, [sp, #0x10] + bl MOD05_021E1BF8 + add r5, r0, #0 + add r0, r4, #0 + add r1, r0, #0 + bl FUN_02002E4C + lsl r1, r0, #3 + mov r0, #7 + tst r0, r1 + bne _021E2492 + lsr r4, r1, #3 + b _021E2496 +_021E2492: + lsr r0, r1, #3 + add r4, r0, #1 +_021E2496: + add r0, r5, #0 + add r0, #0x99 + ldrb r0, [r0] + add r3, r5, #0 + add r1, r5, #0 + str r0, [sp] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xdd + str r0, [sp, #0x10] + ldr r0, [r5] + add r3, #0x98 + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5] + ldr r2, _021E2538 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r5, #0 + ldr r2, _021E2538 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + lsl r0, r4, #0x13 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + add r0, r5, #0 + mov r2, #0 + add r0, #8 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 + mov r2, #0 + add r0, r5, #0 + mov r1, #0xf + add r3, r2, #0 + bl MOD05_021E2540 + mov r1, #0x10 + add r0, r5, #0 + mov r2, #0x20 + add r3, r1, #0 + bl MOD05_021E2540 + add r0, r5, #0 + add r1, r5, #0 + add r0, #8 + add r1, #0xa8 + str r0, [r1] + bl FUN_020191D0 + ldr r0, _021E253C ; =MOD05_021E25A4 + add r1, r5, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + add sp, #0x14 + pop {r4, r5, pc} + nop +_021E2538: .word 0x000003D9 +_021E253C: .word MOD05_021E25A4 + + thumb_func_start MOD05_021E2540 +MOD05_021E2540: ; 0x021E2540 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #0xc] + add r5, r0, #0 + mov r0, #0x50 + mov r1, #4 + str r2, [sp, #0x10] + add r7, r3, #0 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x50 + mov r1, #4 + bl FUN_020219F4 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r1, [sp, #0xc] + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + add r5, #8 + ldr r3, [sp, #0x10] + add r0, r5, #0 + add r2, r6, #0 + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E25A4 +MOD05_021E25A4: ; 0x021E25A4 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldrh r1, [r0] + ldr r0, _021E2604 ; =0x0000FFFF + cmp r1, r0 + bne _021E2602 + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + mov r1, #0 + bl FUN_0200CCF8 + add r0, r6, #0 + add r0, #0xa8 + ldr r0, [r0] + bl FUN_02019178 + mov r4, #0 + add r5, r6, #0 +_021E25D0: + ldr r0, [r5, #0x1c] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x1c + blt _021E25D0 + add r0, r6, #0 + add r0, #0x97 + ldrb r0, [r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021E25F6 + add r0, r6, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0200A8B8 +_021E25F6: + ldr r0, [r6, #4] + bl FUN_0200CAB4 + add r0, r6, #0 + bl FUN_02016A18 +_021E2602: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E2604: .word 0x0000FFFF + + thumb_func_start MOD05_021E2608 +MOD05_021E2608: ; 0x021E2608 + cmp r0, #0x89 + bgt _021E2646 + bge _021E269E + cmp r0, #0x68 + bgt _021E2638 + bge _021E2682 + cmp r0, #0xe + bgt _021E2632 + add r1, r0, #0 + sub r1, #0xb + bmi _021E26C2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E262A: ; jump table + .short _021E26B2 - _021E262A - 2 ; case 0 + .short _021E26B6 - _021E262A - 2 ; case 1 + .short _021E26BA - _021E262A - 2 ; case 2 + .short _021E26BE - _021E262A - 2 ; case 3 +_021E2632: + cmp r0, #0x67 + beq _021E267E + b _021E26C2 +_021E2638: + cmp r0, #0x70 + bgt _021E2640 + beq _021E268E + b _021E26C2 +_021E2640: + cmp r0, #0x71 + beq _021E2692 + b _021E26C2 +_021E2646: + cmp r0, #0x96 + bgt _021E2668 + cmp r0, #0x8c + blt _021E265A + beq _021E26AA + cmp r0, #0x8d + beq _021E26AE + cmp r0, #0x96 + beq _021E268A + b _021E26C2 +_021E265A: + cmp r0, #0x8a + bgt _021E2662 + beq _021E26A2 + b _021E26C2 +_021E2662: + cmp r0, #0x8b + beq _021E26A6 + b _021E26C2 +_021E2668: + ldr r1, _021E26C8 ; =0x000001CD + cmp r0, r1 + bgt _021E2676 + bge _021E2696 + cmp r0, #0xa4 + beq _021E2686 + b _021E26C2 +_021E2676: + add r1, r1, #1 + cmp r0, r1 + beq _021E269A + b _021E26C2 +_021E267E: + mov r0, #1 + bx lr +_021E2682: + mov r0, #0 + bx lr +_021E2686: + mov r0, #0 + bx lr +_021E268A: + mov r0, #1 + bx lr +_021E268E: + mov r0, #1 + bx lr +_021E2692: + mov r0, #0 + bx lr +_021E2696: + mov r0, #1 + bx lr +_021E269A: + mov r0, #0 + bx lr +_021E269E: + mov r0, #4 + bx lr +_021E26A2: + mov r0, #3 + bx lr +_021E26A6: + mov r0, #2 + bx lr +_021E26AA: + mov r0, #1 + bx lr +_021E26AE: + mov r0, #0 + bx lr +_021E26B2: + mov r0, #3 + bx lr +_021E26B6: + mov r0, #2 + bx lr +_021E26BA: + mov r0, #1 + bx lr +_021E26BE: + mov r0, #0 + bx lr +_021E26C2: + mov r0, #1 + bx lr + nop +_021E26C8: .word 0x000001CD + + thumb_func_start MOD05_021E26CC +MOD05_021E26CC: ; 0x021E26CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r6, r1, #0 + bl MOD05_021E1DA8 + mov r1, #7 + tst r1, r0 + bne _021E26E2 + lsr r7, r0, #3 + b _021E26E6 +_021E26E2: + lsr r0, r0, #3 + add r7, r0, #1 +_021E26E6: + add r0, r5, #0 + add r0, #0x9b + ldrb r0, [r0] + add r1, r6, #0 + str r0, [sp, #0x14] + bl _s32_div_f + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x14] + add r1, r6, #0 + bl _s32_div_f + cmp r1, #0 + beq _021E270A + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_021E270A: + add r0, r5, #0 + add r0, #0x99 + ldrb r0, [r0] + add r3, r5, #0 + add r1, r5, #0 + str r0, [sp] + add r0, r7, #0 + mul r0, r6 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + lsl r0, r4, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x3d + str r0, [sp, #0x10] + ldr r0, [r5] + add r3, #0x98 + ldrb r3, [r3] + ldr r0, [r0, #8] + add r1, #8 + mov r2, #3 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5] + ldr r2, _021E2794 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r5, #0 + ldr r2, _021E2794 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r1, r6, #0 + add r2, r4, #0 + bl MOD05_021E279C + add r1, r5, #0 + add r1, #0x96 + add r0, r5, #0 + ldrb r1, [r1] + add r0, #0xa4 + mov r2, #4 + bl FUN_02001C34 + add r1, r5, #0 + add r1, #0xb0 + str r0, [r1] + ldr r0, _021E2798 ; =MOD05_021E1E58 + add r1, r5, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r5, #4] + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E2794: .word 0x000003D9 +_021E2798: .word MOD05_021E1E58 + + thumb_func_start MOD05_021E279C +MOD05_021E279C: ; 0x021E279C + push {r3, r4} + add r4, r0, #0 + add r3, r0, #0 + add r4, #0xb4 + add r3, #0xa4 + str r4, [r3] + add r4, r0, #0 + add r3, r0, #0 + add r4, #8 + add r3, #0xa8 + str r4, [r3] + add r3, r0, #0 + mov r4, #0 + add r3, #0xac + strb r4, [r3] + add r3, r0, #0 + add r3, #0xad + strb r1, [r3] + add r1, r0, #0 + add r1, #0xae + strb r2, [r1] + add r1, r0, #0 + add r1, #0xaf + ldrb r2, [r1] + mov r1, #0xf + bic r2, r1 + add r1, r0, #0 + add r1, #0xaf + strb r2, [r1] + add r1, r0, #0 + add r1, #0xaf + ldrb r2, [r1] + mov r1, #0x30 + add r0, #0xaf + bic r2, r1 + strb r2, [r0] + pop {r3, r4} + bx lr + + thumb_func_start MOD05_021E27E8 +MOD05_021E27E8: ; 0x021E27E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + mov r0, #4 + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + str r6, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, r4, #0 + mov r2, #3 + add r3, r7, #0 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5, #8] + ldr r2, _021E2888 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + ldr r2, _021E2888 ; =0x000003D9 + add r0, r4, #0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + mov r1, #0xf + bl FUN_02019620 + mov r2, #0x7a + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl FUN_0200A86C + mov r1, #0x12 + add r7, r0, #0 + bl FUN_0200A914 + mov r1, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r4, #0 + add r2, r6, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_0200A8B8 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E28A0 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E2888: .word 0x000003D9 + + thumb_func_start MOD05_021E288C +MOD05_021E288C: ; 0x021E288C + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r4, #0 + mov r1, #1 + bl FUN_020191A4 + pop {r4, pc} + + thumb_func_start MOD05_021E28A0 +MOD05_021E28A0: ; 0x021E28A0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0x50 + str r0, [sp] + mov r3, #0x10 + add r0, r5, #0 + mov r1, #0xf + mov r2, #0 + str r3, [sp, #4] + bl FUN_020196F4 + mov r2, #0x7a + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl FUN_0200A86C + str r0, [sp, #0xc] + mov r0, #4 + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #0x10 + mov r1, #4 + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, [sp, #0xc] + mov r1, #0x13 + bl FUN_0200A914 + str r0, [sp, #0x10] + ldr r0, [r7, #0xc] + bl FUN_020238F4 + bl FUN_02023A10 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r6, #0 + mov r1, #0 + mov r3, #6 + bl FUN_0200AD38 + ldr r2, [sp, #0x10] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x50 + sub r3, r1, r0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r5, #0 + add r2, r4, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200AB18 + ldr r0, [sp, #0xc] + bl FUN_0200A8B8 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E2950 +MOD05_021E2950: ; 0x021E2950 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + mov r0, #4 + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + str r6, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x29 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, r4, #0 + mov r2, #3 + add r3, r7, #0 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5, #8] + ldr r2, _021E29B0 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + ldr r2, _021E29B0 ; =0x000003D9 + add r0, r4, #0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E29C8 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E29B0: .word 0x000003D9 + + thumb_func_start MOD05_021E29B4 +MOD05_021E29B4: ; 0x021E29B4 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r4, #0 + mov r1, #1 + bl FUN_020191A4 + pop {r4, pc} + + thumb_func_start MOD05_021E29C8 +MOD05_021E29C8: ; 0x021E29C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + str r1, [sp, #0xc] + add r0, r1, #0 + mov r1, #0xf + bl FUN_02019620 + ldr r2, _021E2A6C ; =0x00000141 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r7, r0, #0 + mov r0, #4 + bl FUN_0200AA80 + add r5, r0, #0 + mov r0, #0x10 + mov r1, #4 + bl FUN_020219F4 + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0xc5 + bl FUN_0200A914 + str r0, [sp, #0x10] + ldr r0, [r6, #0xc] + bl FUN_0202390C + bl FUN_02028930 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #5 + bl FUN_0200AD38 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x50 + sub r3, r1, r0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r2, r4, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_0200AB18 + add r0, r7, #0 + bl FUN_0200A8B8 + ldr r0, [sp, #0xc] + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E2A6C: .word 0x00000141 + + thumb_func_start MOD05_021E2A70 +MOD05_021E2A70: ; 0x021E2A70 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + mov r0, #4 + mov r1, #1 + bl FUN_02018FF4 + add r4, r0, #0 + str r6, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x29 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, r4, #0 + mov r2, #3 + add r3, r7, #0 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5, #8] + ldr r2, _021E2AD0 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + ldr r2, _021E2AD0 ; =0x000003D9 + add r0, r4, #0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E2AD4 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E2AD0: .word 0x000003D9 + + thumb_func_start MOD05_021E2AD4 +MOD05_021E2AD4: ; 0x021E2AD4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + str r1, [sp, #0xc] + add r0, r1, #0 + mov r1, #0xf + bl FUN_02019620 + ldr r2, _021E2B7C ; =0x00000141 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r7, r0, #0 + mov r0, #4 + bl FUN_0200AA80 + add r5, r0, #0 + mov r0, #0x10 + mov r1, #4 + bl FUN_020219F4 + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0xe6 + bl FUN_0200A914 + str r0, [sp, #0x10] + ldr r0, [r6, #0xc] + bl FUN_0202A8D8 + mov r1, #0 + add r2, r1, #0 + bl FUN_0202A3B4 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #5 + bl FUN_0200AD38 + ldr r2, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0x50 + sub r3, r1, r0 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0xc] + add r2, r4, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + bl FUN_0200AB18 + add r0, r7, #0 + bl FUN_0200A8B8 + ldr r0, [sp, #0xc] + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021E2B7C: .word 0x00000141 + + thumb_func_start MOD05_021E2B80 +MOD05_021E2B80: ; 0x021E2B80 + add r2, r0, #0 + add r2, #0x97 + ldrb r3, [r2] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + mov r2, #0x40 + lsl r1, r1, #0x1f + bic r3, r2 + lsr r1, r1, #0x19 + orr r1, r3 + add r0, #0x97 + strb r1, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E2B9C +MOD05_021E2B9C: ; 0x021E2B9C + add r2, r0, #0 + add r2, #0x97 + ldrb r3, [r2] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + mov r2, #0x80 + lsl r1, r1, #0x1f + bic r3, r2 + lsr r1, r1, #0x18 + orr r1, r3 + add r0, #0x97 + strb r1, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E2BB8 +MOD05_021E2BB8: ; 0x021E2BB8 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl MOD05_021E2D00 + strb r0, [r4] + mov r0, #0 + strb r0, [r4, #1] + mov r0, #1 + strb r0, [r4, #2] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E2BD0 +MOD05_021E2BD0: ; 0x021E2BD0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + str r3, [sp, #4] + add r0, #0x80 + add r6, r1, #0 + ldr r0, [r0] + add r1, sp, #8 + add r7, r2, #0 + ldr r4, [sp, #0x38] + bl MOD05_021E2D14 + add r0, r5, #0 + add r0, #0x80 + ldr r0, [r0] + add r1, sp, #8 + bl MOD05_021E2D9C + add r0, sp, #8 + add r1, r6, #0 + add r2, r7, #0 + bl MOD05_021E2DD4 + cmp r4, #0 + bne _021E2C10 + add r0, r5, #0 + bl MOD05_021E2D00 + add r2, r0, #0 + mov r0, #0 + mov r1, #1 + b _021E2C16 +_021E2C10: + ldrb r2, [r4] + ldrb r0, [r4, #1] + ldrb r1, [r4, #2] +_021E2C16: + str r0, [sp] + ldr r3, [sp, #4] + add r0, sp, #8 + bl MOD05_021E2E40 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E2C24 +MOD05_021E2C24: ; 0x021E2C24 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + add r0, #0x80 + add r4, r1, #0 + ldr r0, [r0] + add r1, sp, #0 + add r6, r2, #0 + bl MOD05_021E2D14 + add r5, #0x80 + ldr r0, [r5] + add r1, sp, #0 + bl MOD05_021E2D9C + add r0, sp, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021E2DD4 + add r0, sp, #0 + mov r1, #1 + bl MOD05_021E2E68 + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E2C58 +MOD05_021E2C58: ; 0x021E2C58 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r0, #0x80 + add r4, r1, #0 + ldr r0, [r0] + add r1, sp, #4 + add r6, r2, #0 + add r7, r3, #0 + bl MOD05_021E2D14 + add r0, r5, #0 + add r0, #0x80 + ldr r0, [r0] + add r1, sp, #4 + bl MOD05_021E2D9C + add r0, sp, #0x20 + ldrh r0, [r0, #0x10] + add r1, r4, #0 + add r2, r6, #0 + str r0, [sp] + add r0, sp, #4 + add r3, r7, #0 + bl MOD05_021E2DF0 + add r0, sp, #0x20 + ldrb r0, [r0, #0x14] + cmp r0, #0xff + beq _021E2CB0 + add r0, r5, #0 + bl MOD05_021E2D00 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + add r3, sp, #0x20 + ldrb r3, [r3, #0x14] + add r0, sp, #4 + mov r1, #1 + bl MOD05_021E2E40 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} +_021E2CB0: + add r0, sp, #4 + mov r1, #1 + bl MOD05_021E2E68 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E2CBC +MOD05_021E2CBC: ; 0x021E2CBC + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r5, r0, #0 + add r0, #0x80 + add r4, r2, #0 + ldr r0, [r0] + add r2, sp, #4 + add r6, r3, #0 + bl MOD05_021E2D5C + add r0, r5, #0 + add r0, #0x80 + ldr r0, [r0] + add r1, sp, #4 + bl MOD05_021E2D9C + ldr r1, [r5, #0x78] + add r0, sp, #4 + add r2, r4, #0 + bl MOD05_021E2DD4 + add r0, r5, #0 + bl MOD05_021E2D00 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + add r0, sp, #4 + mov r1, #1 + add r3, r6, #0 + bl MOD05_021E2E40 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021E2D00 +MOD05_021E2D00: ; 0x021E2D00 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + bl FUN_02024FF4 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E2D14 +MOD05_021E2D14: ; 0x021E2D14 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x10 + add r5, r0, #0 + bl FUN_02039438 + ldr r0, [r0] + mov r1, #0x11 + str r0, [r4] + add r0, r5, #0 + bl FUN_02039438 + ldr r0, [r0] + mov r1, #0xf + str r0, [r4, #4] + add r0, r5, #0 + bl FUN_02039438 + ldr r0, [r0] + mov r1, #1 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_02039438 + str r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #6 + bl FUN_02039438 + str r0, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl FUN_02039438 + str r0, [r4, #0x14] + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E2D5C +MOD05_021E2D5C: ; 0x021E2D5C + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x10 + add r5, r0, #0 + add r4, r2, #0 + bl FUN_02039438 + ldr r0, [r0] + mov r1, #0x11 + str r0, [r4] + add r0, r5, #0 + bl FUN_02039438 + ldr r0, [r0] + mov r1, #1 + str r0, [r4, #4] + str r6, [r4, #8] + add r0, r5, #0 + bl FUN_02039438 + str r0, [r4, #0xc] + add r0, r5, #0 + mov r1, #6 + bl FUN_02039438 + str r0, [r4, #0x10] + add r0, r5, #0 + mov r1, #3 + bl FUN_02039438 + str r0, [r4, #0x14] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E2D9C +MOD05_021E2D9C: ; 0x021E2D9C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x10] + ldrb r0, [r0] + cmp r0, #0 + bne _021E2DC8 + ldr r0, [r5, #8] + ldr r1, [r4, #0xc] + mov r2, #3 + bl FUN_020545B8 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02054608 + ldr r0, [r4, #0x10] + mov r1, #1 + strb r1, [r0] +_021E2DC8: + ldr r0, [r4, #0xc] + mov r1, #0xf + bl FUN_02019620 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E2DD4 +MOD05_021E2DD4: ; 0x021E2DD4 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + ldr r2, [r4, #4] + bl FUN_0200A8E0 + ldr r0, [r4, #8] + ldr r1, [r4] + ldr r2, [r4, #4] + bl FUN_0200B7B8 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E2DF0 +MOD05_021E2DF0: ; 0x021E2DF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r0, sp, #0 + add r7, r3, #0 + bl FUN_02013724 + add r0, sp, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02013980 + add r0, sp, #0 + mov r1, #0 + add r2, r7, #0 + bl FUN_02013998 + add r2, sp, #0x10 + ldrh r2, [r2, #0x10] + add r0, sp, #0 + mov r1, #1 + bl FUN_02013998 + add r0, sp, #0 + mov r1, #0x20 + bl FUN_020137D4 + add r4, r0, #0 + ldr r0, [r5] + add r1, r4, #0 + bl FUN_02021A74 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E2E40 +MOD05_021E2E40: ; 0x021E2E40 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + lsl r0, r3, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x18] + add r5, r2, #0 + str r0, [sp, #4] + add r6, r1, #0 + ldr r0, [r4, #0xc] + ldr r1, [r4] + add r2, r6, #0 + add r3, r5, #0 + bl FUN_02054690 + ldr r1, [r4, #0x14] + strb r0, [r1] + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E2E68 +MOD05_021E2E68: ; 0x021E2E68 + push {r3, r4, lr} + sub sp, #0xc + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r4, r0, #0 + str r3, [sp, #8] + ldr r0, [r4, #0xc] + ldr r2, [r4] + bl FUN_0201BD84 + ldr r1, [r4, #0x14] + strb r0, [r1] + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E2E88 +MOD05_021E2E88: ; 0x021E2E88 + push {r4, r5, r6, lr} + lsl r6, r1, #5 + add r5, r0, #0 + add r4, r2, #0 + add r1, r6, #0 + bl DC_FlushRange + add r0, r5, #0 + lsl r1, r4, #5 + add r2, r6, #0 + bl GX_LoadBGPltt + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E2EA4 +MOD05_021E2EA4: ; 0x021E2EA4 + push {r3, r4, lr} + sub sp, #0x14 + mov r3, #0 + add r4, r0, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r2, #3 + add r1, r4, #0 + str r2, [sp, #8] + mov r0, #7 + str r0, [sp, #0xc] + ldr r0, _021E2EDC ; =0x000002CD + add r1, #0x20 + str r0, [sp, #0x10] + ldr r0, [r4, #0x1c] + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + ldr r2, _021E2EE0 ; =0x000003CF + add r0, r4, #0 + mov r1, #3 + mov r3, #7 + bl MOD05_021E2EE4 + add sp, #0x14 + pop {r3, r4, pc} + .balign 4, 0 +_021E2EDC: .word 0x000002CD +_021E2EE0: .word 0x000003CF + + thumb_func_start MOD05_021E2EE4 +MOD05_021E2EE4: ; 0x021E2EE4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + ldr r2, _021E2F2C ; =0x021FD610 + add r0, #0x38 + mov r1, #4 + add r7, r3, #0 + bl FUN_0201AB28 + str r0, [r5, #0x34] + add r3, r0, #0 + str r4, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x1c] + ldr r3, [r3, #0x10] + add r1, r6, #0 + bl FUN_02017E14 + ldr r2, _021E2F30 ; =0x021FD62C + add r0, sp, #4 + mov r1, #4 + bl FUN_0201AB44 + ldr r0, [r0, #0xc] + mov r1, #1 + add r2, r7, #0 + bl MOD05_021E2E88 + ldr r0, [sp, #4] + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E2F2C: .word 0x021FD610 +_021E2F30: .word 0x021FD62C + + thumb_func_start MOD05_021E2F34 +MOD05_021E2F34: ; 0x021E2F34 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r2, r1, #0 + add r2, #8 + add r5, r0, #0 + asr r0, r2, #2 + lsr r0, r0, #0x1d + add r0, r2, r0 + asr r0, r0, #3 + lsl r0, r0, #3 + sub r2, r0, r1 + lsr r0, r2, #0x1f + add r0, r2, r0 + asr r0, r0, #1 + add r2, r0, #4 + cmp r2, #8 + blt _021E2F5A + mov r3, #0 + b _021E2F6C +_021E2F5A: + mov r0, #8 + sub r0, r0, r2 + lsl r0, r0, #1 + add r2, r0, #7 + asr r0, r2, #2 + lsr r0, r0, #0x1d + add r0, r2, r0 + lsl r0, r0, #0x15 + lsr r3, r0, #0x18 +_021E2F6C: + cmp r1, #0 + bgt _021E2F76 + mov r0, #0 + str r0, [sp, #0x18] + b _021E2F92 +_021E2F76: + add r2, r1, #0 + add r2, #8 + asr r0, r2, #2 + lsr r0, r0, #0x1d + add r0, r2, r0 + asr r0, r0, #3 + add r0, r0, r3 + str r0, [sp, #0x18] + lsl r0, r0, #3 + add r0, #8 + sub r1, r0, r1 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r0, r0, #1 +_021E2F92: + add r1, r0, #4 + add r0, r5, #0 + add r0, #0x30 + strb r1, [r0] + add r0, r5, #0 + add r0, #0x20 + mov r1, #0 + bl FUN_02019620 + mov r2, #8 + str r2, [sp] + add r0, r5, #0 + str r2, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + str r3, [sp, #0xc] + str r2, [sp, #0x10] + str r2, [sp, #0x14] + ldr r1, [r5, #0x34] + add r0, #0x20 + ldr r1, [r1, #0x14] + bl FUN_02019658 + ldr r0, [sp, #0x18] + mov r1, #8 + add r0, r0, #1 + lsl r4, r0, #3 + str r1, [sp] + lsl r0, r4, #0x10 + str r1, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r3, #0 + str r3, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [r5, #0x34] + add r0, r5, #0 + ldr r1, [r1, #0x14] + add r0, #0x20 + mov r2, #0x18 + bl FUN_02019658 + mov r0, #8 + str r0, [sp] + str r0, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [r5, #0x34] + add r0, r5, #0 + ldr r1, [r1, #0x14] + add r0, #0x20 + mov r2, #0x38 + bl FUN_02019658 + mov r1, #8 + str r1, [sp] + lsl r0, r4, #0x10 + str r1, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [r5, #0x34] + add r0, r5, #0 + ldr r1, [r1, #0x14] + add r0, #0x20 + mov r2, #0x40 + mov r3, #0 + bl FUN_02019658 + mov r1, #8 + str r1, [sp] + str r1, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [r5, #0x34] + add r0, r5, #0 + ldr r1, [r1, #0x14] + add r0, #0x20 + mov r2, #0x20 + bl FUN_02019658 + mov r1, #8 + str r1, [sp] + lsl r0, r4, #0x10 + str r1, [sp, #4] + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [r5, #0x34] + add r0, r5, #0 + ldr r1, [r1, #0x14] + add r0, #0x20 + mov r2, #0x30 + mov r3, #0 + bl FUN_02019658 + ldr r0, [sp, #0x18] + mov r7, #0 + cmp r0, #0 + ble _021E30F2 + add r6, r5, #0 + add r6, #0x20 +_021E3078: + add r0, r7, #1 + lsl r4, r0, #3 + mov r0, #8 + str r0, [sp] + str r0, [sp, #4] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [r5, #0x34] + add r0, r6, #0 + ldr r1, [r1, #0x14] + mov r2, #0x10 + mov r3, #0 + bl FUN_02019658 + mov r0, #8 + str r0, [sp] + str r0, [sp, #4] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #8 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [r5, #0x34] + add r0, r6, #0 + ldr r1, [r1, #0x14] + mov r2, #0x48 + mov r3, #0 + bl FUN_02019658 + mov r0, #8 + str r0, [sp] + str r0, [sp, #4] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r0, #8 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [r5, #0x34] + add r0, r6, #0 + ldr r1, [r1, #0x14] + mov r2, #0x28 + mov r3, #0 + bl FUN_02019658 + add r0, r7, #1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [sp, #0x18] + cmp r7, r0 + blt _021E3078 +_021E30F2: + add r5, #0x20 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E3100 +MOD05_021E3100: ; 0x021E3100 + mov r1, #0 + str r1, [r0] + strb r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + strh r1, [r0, #0x10] + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + bx lr + + thumb_func_start MOD05_021E3114 +MOD05_021E3114: ; 0x021E3114 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021E3100 + str r4, [r5, #0x1c] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E3124 +MOD05_021E3124: ; 0x021E3124 + push {r4, lr} + add r4, r1, #0 + ldrb r0, [r4, #4] + cmp r0, #3 + bhi _021E31D0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E313A: ; jump table + .short _021E31D0 - _021E313A - 2 ; case 0 + .short _021E3142 - _021E313A - 2 ; case 1 + .short _021E3180 - _021E313A - 2 ; case 2 + .short _021E316A - _021E313A - 2 ; case 3 +_021E3142: + ldr r0, [r4, #0xc] + sub r0, r0, #4 + str r0, [r4, #0xc] + bpl _021E314E + mov r0, #0 + str r0, [r4, #0xc] +_021E314E: + mov r1, #3 + ldr r0, [r4, #0x1c] + ldr r3, [r4, #0xc] + add r2, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021E31D0 + mov r0, #0 + strh r0, [r4, #0x10] + mov r0, #3 + strb r0, [r4, #4] + pop {r4, pc} +_021E316A: + ldrh r0, [r4, #0x10] + add r0, r0, #1 + strh r0, [r4, #0x10] + ldrh r0, [r4, #0x10] + cmp r0, #0x3c + blo _021E31D0 + mov r0, #0 + strh r0, [r4, #0x10] + mov r0, #2 + strb r0, [r4, #4] + pop {r4, pc} +_021E3180: + ldr r0, [r4, #0xc] + add r0, r0, #4 + str r0, [r4, #0xc] + cmp r0, #0x26 + ble _021E318E + mov r0, #0x26 + str r0, [r4, #0xc] +_021E318E: + mov r1, #3 + ldr r0, [r4, #0x1c] + ldr r3, [r4, #0xc] + add r2, r1, #0 + bl FUN_020179E0 + ldr r0, [r4, #0xc] + cmp r0, #0x26 + bne _021E31D0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021E31CA + mov r0, #0 + str r0, [r4, #0x14] + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x40] + bl FUN_02064E4C + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E2F34 + ldr r1, [r4, #0x40] + add r0, r4, #0 + bl MOD05_021E31D4 + mov r0, #1 + strb r0, [r4, #4] + pop {r4, pc} +_021E31CA: + add r0, r4, #0 + bl MOD05_021E32F0 +_021E31D0: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E31D4 +MOD05_021E31D4: ; 0x021E31D4 + push {r3, lr} + sub sp, #0x10 + add r3, r0, #0 + mov r0, #3 + add r2, r1, #0 + str r0, [sp] + mov r1, #0 + ldr r0, _021E31FC ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r3, #0 + str r1, [sp, #0xc] + add r3, #0x30 + ldrb r3, [r3] + add r0, #0x20 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r3, pc} + nop +_021E31FC: .word 0x00010200 + + thumb_func_start MOD05_021E3200 +MOD05_021E3200: ; 0x021E3200 + mov r1, #2 + strb r1, [r0, #4] + mov r1, #0 + strh r1, [r0, #0x10] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E320C +MOD05_021E320C: ; 0x021E320C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + mov r1, #0x44 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0x16 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x40] + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021E3114 + add r0, r4, #0 + bl MOD05_021E2EA4 + ldr r2, _021E3244 ; =0x0000017E + mov r0, #1 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [r4, #0x3c] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E3244: .word 0x0000017E + + thumb_func_start MOD05_021E3248 +MOD05_021E3248: ; 0x021E3248 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_0200A8B8 + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019178 + ldr r0, [r4, #0x40] + bl FUN_02021A20 + ldr r0, [r4, #0x38] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E3270 +MOD05_021E3270: ; 0x021E3270 + push {r4, lr} + add r4, r0, #0 + str r1, [r4, #0x18] + ldr r1, [r4] + cmp r1, #0 + bne _021E32BC + mov r0, #1 + str r0, [r4] + mov r1, #3 + ldr r0, [r4, #0x1c] + add r2, r1, #0 + mov r3, #0x26 + bl FUN_020179E0 + mov r0, #0x26 + str r0, [r4, #0xc] + ldr r0, _021E32EC ; =MOD05_021E3124 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + str r0, [r4, #8] + mov r0, #1 + strb r0, [r4, #4] + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x40] + bl FUN_02064E4C + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E2F34 + ldr r1, [r4, #0x40] + add r0, r4, #0 + bl MOD05_021E31D4 + pop {r4, pc} +_021E32BC: + ldrb r1, [r4, #4] + cmp r1, #3 + bhi _021E32E6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E32CE: ; jump table + .short _021E32E6 - _021E32CE - 2 ; case 0 + .short _021E32D6 - _021E32CE - 2 ; case 1 + .short _021E32E0 - _021E32CE - 2 ; case 2 + .short _021E32D6 - _021E32CE - 2 ; case 3 +_021E32D6: + bl MOD05_021E3200 + mov r0, #1 + str r0, [r4, #0x14] + pop {r4, pc} +_021E32E0: + mov r0, #1 + str r0, [r4, #0x14] + pop {r4, pc} +_021E32E6: + bl ErrorHandling + pop {r4, pc} + .balign 4, 0 +_021E32EC: .word MOD05_021E3124 + + thumb_func_start MOD05_021E32F0 +MOD05_021E32F0: ; 0x021E32F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E32FE + bl FUN_0200CAB4 +_021E32FE: + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019570 + mov r1, #3 + ldr r0, [r4, #0x1c] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r1, [r4, #0x1c] + add r0, r4, #0 + bl MOD05_021E3114 + pop {r4, pc} + + thumb_func_start MOD05_021E331C +MOD05_021E331C: ; 0x021E331C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034944 + cmp r0, #0 + bne _021E333E + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl FUN_02034824 + add r1, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #8] + bl MOD05_021E3270 +_021E333E: + pop {r4, pc} + + thumb_func_start MOD05_021E3340 +MOD05_021E3340: ; 0x021E3340 + push {r3, r4, r5, r6, lr} + sub sp, #4 + 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, #4 + bhi _021E3414 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E3366: ; jump table + .short _021E3370 - _021E3366 - 2 ; case 0 + .short _021E3388 - _021E3366 - 2 ; case 1 + .short _021E33A0 - _021E3366 - 2 ; case 2 + .short _021E33E4 - _021E3366 - 2 ; case 3 + .short _021E33FE - _021E3366 - 2 ; case 4 +_021E3370: + mov r0, #2 + add r1, r0, #0 + str r0, [sp] + sub r1, #0x12 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E3414 +_021E3388: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021E3414 + ldr r0, [r5, #8] + bl FUN_022524F4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E3414 +_021E33A0: + ldr r0, [r5, #8] + bl FUN_02252504 + cmp r0, #0 + beq _021E3414 + ldr r0, [r5, #0xc] + bl FUN_0204C1A8 + add r6, r0, #0 + ldr r0, _021E341C ; =0x00000013 + bl FUN_02005F60 + ldr r0, _021E3420 ; =0x00000014 + mov r1, #2 + bl FUN_02005FDC + add r0, r6, #0 + bl FUN_0204BEB8 + mov r0, #1 + bl FUN_0200A03C + str r0, [sp] + ldr r1, [r5, #4] + ldr r2, [r5, #0xc] + ldr r3, [r5, #8] + add r0, r5, #0 + add r1, #0x14 + bl FUN_02252448 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E3414 +_021E33E4: + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E3414 +_021E33FE: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021E3414 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021E3414: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021E341C: .word 0x00000013 +_021E3420: .word 0x00000014 + + thumb_func_start MOD05_021E3424 +MOD05_021E3424: ; 0x021E3424 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + add r2, r0, #0 + mov r0, #0 + str r0, [r2] + ldr r1, _021E3440 ; =MOD05_021E3340 + add r0, r4, #0 + bl FUN_0204640C + pop {r4, pc} + .balign 4, 0 +_021E3440: .word MOD05_021E3340 + + thumb_func_start MOD05_021E3444 +MOD05_021E3444: ; 0x021E3444 + push {r3, r4, r5, lr} + add r5, r1, #0 + lsl r1, r0, #2 + ldr r0, _021E3470 ; =0x021F74E8 + add r4, r2, #0 + ldr r0, [r0, r1] + mov r1, #0x20 + mov r2, #5 + mov r3, #4 + bl FUN_020061E8 + bl FUN_0201B6C8 + str r5, [r0, #0x10] + str r4, [r0, #0x14] + cmp r4, #0 + beq _021E346A + mov r1, #0 + str r1, [r4] +_021E346A: + mov r1, #0 + str r1, [r0, #0x18] + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E3470: .word 0x021F74E8 + + thumb_func_start MOD05_021E3474 +MOD05_021E3474: ; 0x021E3474 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r0, #4 + mov r1, #0x4c + str r2, [sp] + add r5, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x4c + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, _021E34B4 ; =MOD05_021E34B8 + add r1, r4, #0 + mov r2, #5 + bl FUN_0200CA44 + str r5, [r4, #0x48] + cmp r5, #0 + beq _021E34A4 + mov r0, #0 + str r0, [r5] +_021E34A4: + str r6, [r4, #0xc] + ldr r0, [sp] + str r7, [r4, #0x10] + str r0, [r4, #0x14] + ldr r0, [sp, #0x18] + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} + nop +_021E34B4: .word MOD05_021E34B8 + + thumb_func_start MOD05_021E34B8 +MOD05_021E34B8: ; 0x021E34B8 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #5 + bhi _021E359E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E34D0: ; jump table + .short _021E34DC - _021E34D0 - 2 ; case 0 + .short _021E3514 - _021E34D0 - 2 ; case 1 + .short _021E352E - _021E34D0 - 2 ; case 2 + .short _021E3542 - _021E34D0 - 2 ; case 3 + .short _021E355C - _021E34D0 - 2 ; case 4 + .short _021E3580 - _021E34D0 - 2 ; case 5 +_021E34DC: + ldr r0, [r4, #0xc] + cmp r0, #1 + bne _021E34F6 + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + ldr r2, [r4, #0x14] + add r0, #0x30 + mov r1, #0 + mov r3, #2 + bl MOD05_021E372C + b _021E350C +_021E34F6: + cmp r0, #2 + bne _021E350C + mov r0, #8 + str r0, [sp] + add r0, r4, #0 + ldr r2, [r4, #0x14] + add r0, #0x30 + mov r1, #0 + mov r3, #1 + bl MOD05_021E372C +_021E350C: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E359E +_021E3514: + mov r0, #3 + str r0, [sp] + add r0, r4, #0 + ldr r2, [r4, #0x10] + ldr r3, [r4, #0xc] + add r0, #0x18 + mov r1, #0 + bl MOD05_021E372C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E359E +_021E352E: + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E3738 + cmp r0, #0 + beq _021E359E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E359E +_021E3542: + mov r0, #3 + str r0, [sp] + add r0, r4, #0 + ldr r1, [r4, #0x10] + ldr r3, [r4, #0xc] + add r0, #0x18 + mov r2, #0 + bl MOD05_021E372C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E359E +_021E355C: + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E3738 + cmp r0, #0 + beq _021E359E + ldr r0, [r4, #8] + add r1, r0, #1 + str r1, [r4, #8] + ldr r0, [r4, #4] + cmp r1, r0 + bne _021E357A + mov r0, #5 + str r0, [r4] + b _021E359E +_021E357A: + mov r0, #1 + str r0, [r4] + b _021E359E +_021E3580: + mov r1, #0 + str r1, [r4] + str r1, [r4, #8] + ldr r2, [r4, #0x48] + cmp r2, #0 + beq _021E3590 + mov r1, #1 + str r1, [r2] +_021E3590: + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, pc} +_021E359E: + add r4, #0x30 + add r0, r4, #0 + bl MOD05_021E3738 + add sp, #4 + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E35AC +MOD05_021E35AC: ; 0x021E35AC + ldr r0, [r0, #0x18] + bx lr + + thumb_func_start MOD05_021E35B0 +MOD05_021E35B0: ; 0x021E35B0 + 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_021E35C0 +MOD05_021E35C0: ; 0x021E35C0 + 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 _021E35E6 + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} +_021E35E6: + str r1, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD05_021E35EC +MOD05_021E35EC: ; 0x021E35EC + 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_021E35FC +MOD05_021E35FC: ; 0x021E35FC + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4, #0xc] + ldr r0, [r4, #8] + lsl r2, r2, #0xc + 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 + ldr r1, [r4, #0x10] + lsl r1, r1, #0xc + bl FX_Div + 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 _021E363C + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} +_021E363C: + str r1, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E3644 +MOD05_021E3644: ; 0x021E3644 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r5, r0, #0 + add r7, r2, #0 + add r0, r3, #0 + add r6, r1, #0 + lsl r2, r4, #0xc + str r3, [sp] + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + add r2, r0, #0 + sub r0, r7, r6 + mov r7, #2 + mov r3, #0 + lsl r7, r7, #0xa + add r2, r2, r7 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r2, r2, #0xc + orr r2, r1 + sub r2, r0, r2 + asr r1, r2, #0x1f + lsr r0, r2, #0x13 + lsl r1, r1, #0xd + orr r1, r0 + lsl r0, r2, #0xd + add r0, r0, r7 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + add r1, r4, #0 + mul r1, r4 + lsl r1, r1, #0xc + bl FX_Div + str r6, [r5] + ldr r1, [sp] + str r6, [r5, #4] + str r1, [r5, #8] + str r0, [r5, #0xc] + mov r0, #0 + str r0, [r5, #0x10] + str r4, [r5, #0x14] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E36A4 +MOD05_021E36A4: ; 0x021E36A4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r6, [r5, #0x10] + ldr r0, [r5, #8] + lsl r2, r6, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsr r4, r2, #0xc + lsl r0, r1, #0x14 + add r2, r6, #0 + orr r4, r0 + ldr r0, [r5, #0xc] + mul r2, r6 + lsl r2, r2, #0xc + 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 + lsl r1, r2, #2 + bl FX_Div + ldr r1, [r5, #4] + add r0, r4, r0 + add r0, r1, r0 + str r0, [r5] + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + add r0, r0, #1 + cmp r0, r1 + bgt _021E3704 + str r0, [r5, #0x10] + mov r0, #0 + pop {r4, r5, r6, pc} +_021E3704: + str r1, [r5, #0x10] + mov r0, #1 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E370C +MOD05_021E370C: ; 0x021E370C + push {r3, lr} + cmp r0, #1 + bne _021E371A + ldr r0, _021E3724 ; =0x0400006C + bl GXx_SetMasterBrightness_ + pop {r3, pc} +_021E371A: + ldr r0, _021E3728 ; =0x0400106C + bl GXx_SetMasterBrightness_ + pop {r3, pc} + nop +_021E3724: .word 0x0400006C +_021E3728: .word 0x0400106C + + thumb_func_start MOD05_021E372C +MOD05_021E372C: ; 0x021E372C + push {r3, lr} + str r3, [r0, #0x14] + ldr r3, [sp, #8] + bl MOD05_021E35B0 + pop {r3, pc} + + thumb_func_start MOD05_021E3738 +MOD05_021E3738: ; 0x021E3738 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD05_021E35C0 + add r4, r0, #0 + ldr r0, _021E3750 ; =MOD05_021E3754 + add r1, r5, #0 + mov r2, #0xa + bl FUN_0200CA98 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E3750: .word MOD05_021E3754 + + thumb_func_start MOD05_021E3754 +MOD05_021E3754: ; 0x021E3754 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0x14] + ldr r1, [r1] + bl MOD05_021E370C + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD05_021E3768 +MOD05_021E3768: ; 0x021E3768 + push {r4, lr} + mov r0, #4 + mov r1, #0x30 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x30 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, _021E379C ; =0x04000048 + mov r1, #0x3f + ldrh r2, [r0] + bic r2, r1 + mov r1, #0x1f + orr r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0] + ldrh r2, [r0] + ldr r1, _021E37A0 ; =0xFFFFC0FF + and r1, r2 + strh r1, [r0] + add r0, r4, #0 + pop {r4, pc} + nop +_021E379C: .word 0x04000048 +_021E37A0: .word 0xFFFFC0FF + + thumb_func_start MOD05_021E37A4 +MOD05_021E37A4: ; 0x021E37A4 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x24] + cmp r1, #0 + beq _021E37B2 + bl MOD05_021E3920 +_021E37B2: + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E37C8 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + nop +_021E37C8: .word 0xFFFF1FFF + + thumb_func_start MOD05_021E37CC +MOD05_021E37CC: ; 0x021E37CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x24] + add r7, r2, #0 + str r3, [sp, #4] + ldr r4, [sp, #0x20] + cmp r0, #0 + beq _021E37E4 + bl ErrorHandling +_021E37E4: + mov r0, #0 + str r0, [r6, #0x18] + ldr r1, [r6, #0x10] + add r6, #0x18 + ldr r1, [r1, #4] + ldr r2, [sp, #0x24] + ldr r1, [r1, #0x1c] + ldr r3, [sp, #0x28] + str r1, [r5, #0x20] + str r7, [r5, #0x18] + str r0, [r5, #0x1c] + ldr r0, [sp, #4] + str r6, [r5, #0x2c] + str r0, [sp] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E3644 + cmp r4, #0 + blt _021E3824 + mov r0, #0xff + ldr r2, _021E3850 ; =0x04000040 + sub r0, r0, r4 + strh r0, [r2] + add r0, r4, #1 + mov r1, #0xc0 + lsl r0, r0, #0x18 + strh r1, [r2, #4] + lsr r0, r0, #0x18 + strh r0, [r2, #2] + strh r1, [r2, #6] + b _021E3840 +_021E3824: + add r0, r4, #0 + add r0, #0xff + lsl r0, r0, #0x18 + mov r2, #1 + sub r2, r2, r4 + lsl r2, r2, #0x18 + ldr r1, _021E3850 ; =0x04000040 + lsr r0, r0, #0x18 + strh r0, [r1] + mov r0, #0xc0 + strh r0, [r1, #4] + lsr r2, r2, #0x18 + strh r2, [r1, #2] + strh r0, [r1, #6] +_021E3840: + mov r2, #1 + ldr r0, _021E3854 ; =MOD05_021E3858 + add r1, r5, #0 + lsl r2, r2, #0xa + bl FUN_0200CA98 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E3850: .word 0x04000040 +_021E3854: .word MOD05_021E3858 + + thumb_func_start MOD05_021E3858 +MOD05_021E3858: ; 0x021E3858 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r2, #1 + ldr r0, _021E3880 ; =MOD05_021E38B8 + add r4, r1, #0 + lsl r2, r2, #0xa + bl FUN_0200CA98 + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + ldr r1, _021E3884 ; =MOD05_021E397C + add r2, r4, #0 + bl MOD05_021F4624 + str r0, [r4, #0x24] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_021E3880: .word MOD05_021E38B8 +_021E3884: .word MOD05_021E397C + + thumb_func_start MOD05_021E3888 +MOD05_021E3888: ; 0x021E3888 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD05_021E35AC + cmp r0, #0 + beq _021E389E + bl ErrorHandling +_021E389E: + str r4, [r5, #0x18] + mov r0, #0 + str r0, [r5, #0x1c] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r0, r5, #0 + str r6, [sp] + bl MOD05_021E3644 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E38B8 +MOD05_021E38B8: ; 0x021E38B8 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _021E38C8 + cmp r0, #1 + beq _021E3914 + pop {r4, pc} +_021E38C8: + add r0, r4, #0 + bl MOD05_021E36A4 + cmp r0, #0 + beq _021E38D8 + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] +_021E38D8: + ldr r0, [r4] + asr r0, r0, #0xc + bmi _021E38F6 + mov r1, #0xff + sub r1, r1, r0 + ldr r2, _021E391C ; =0x04000040 + add r0, r0, #1 + strh r1, [r2] + mov r1, #0xc0 + lsl r0, r0, #0x18 + strh r1, [r2, #4] + lsr r0, r0, #0x18 + strh r0, [r2, #2] + strh r1, [r2, #6] + pop {r4, pc} +_021E38F6: + add r1, r0, #0 + add r1, #0xff + lsl r1, r1, #0x18 + ldr r3, _021E391C ; =0x04000040 + lsr r1, r1, #0x18 + strh r1, [r3] + mov r1, #1 + sub r0, r1, r0 + mov r2, #0xc0 + lsl r0, r0, #0x18 + strh r2, [r3, #4] + lsr r0, r0, #0x18 + strh r0, [r3, #2] + strh r2, [r3, #6] + pop {r4, pc} +_021E3914: + add r0, r4, #0 + bl MOD05_021E3920 + pop {r4, pc} + .balign 4, 0 +_021E391C: .word 0x04000040 + + thumb_func_start MOD05_021E3920 +MOD05_021E3920: ; 0x021E3920 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E3974 ; =0x04000048 + mov r2, #0x3f + ldrh r3, [r0] + mov r1, #0x1f + bic r3, r2 + orr r3, r1 + mov r1, #0x20 + orr r3, r1 + strh r3, [r0] + ldrh r3, [r0, #2] + bic r3, r2 + add r2, r0, #0 + strh r3, [r0, #2] + mov r3, #0 + sub r2, #8 + strh r3, [r2] + sub r0, r0, #4 + strh r3, [r0] + lsl r3, r1, #0x15 + ldr r2, [r3] + ldr r0, _021E3978 ; =0xFFFF1FFF + and r2, r0 + lsl r0, r1, #8 + orr r0, r2 + str r0, [r3] + ldr r0, [r4, #0x2c] + mov r1, #1 + str r1, [r0] + ldr r0, [r4, #0x24] + bl MOD05_021F4648 + mov r0, #0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x28] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x28] + pop {r4, pc} + nop +_021E3974: .word 0x04000048 +_021E3978: .word 0xFFFF1FFF + + thumb_func_start MOD05_021E397C +MOD05_021E397C: ; 0x021E397C + push {r4, lr} + ldr r0, _021E39EC ; =0x04000006 + add r4, r1, #0 + ldrh r0, [r0] + ldr r1, [r4, #0x18] + bl _u32_div_f + mov r1, #1 + tst r0, r1 + ldr r0, [r4] + bne _021E3994 + b _021E3996 +_021E3994: + neg r0, r0 +_021E3996: + asr r2, r0, #0xc + ldr r0, _021E39F0 ; =0x000001FF + add r1, r2, #0 + and r1, r0 + ldr r0, _021E39F4 ; =0x04000010 + cmp r2, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + ldr r1, _021E39F8 ; =0xFFFF1FFF + blt _021E39C8 + add r3, r0, #0 + sub r3, #0x10 + ldr r2, [r3] + and r2, r1 + lsl r1, r0, #9 + orr r1, r2 + str r1, [r3] + add r0, #0x3a + ldrh r2, [r0] + mov r1, #0x3f + bic r2, r1 + strh r2, [r0] + pop {r4, pc} +_021E39C8: + add r3, r0, #0 + sub r3, #0x10 + ldr r2, [r3] + and r2, r1 + lsl r1, r0, #0xa + orr r1, r2 + str r1, [r3] + add r0, #0x3a + ldrh r2, [r0] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x1f + orr r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0] + pop {r4, pc} + nop +_021E39EC: .word 0x04000006 +_021E39F0: .word 0x000001FF +_021E39F4: .word 0x04000010 +_021E39F8: .word 0xFFFF1FFF + + thumb_func_start MOD05_021E39FC +MOD05_021E39FC: ; 0x021E39FC + push {r4, r5, r6, lr} + mov r0, #4 + mov r1, #0x48 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x48 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, _021E3A40 ; =0x04000048 + mov r5, #0x3f + ldrh r2, [r0] + mov r1, #0x1f + bic r2, r5 + add r3, r2, #0 + orr r3, r1 + mov r2, #0x20 + orr r3, r2 + strh r3, [r0] + ldrh r6, [r0] + ldr r3, _021E3A44 ; =0xFFFFC0FF + lsl r1, r1, #8 + and r3, r6 + orr r3, r1 + lsl r1, r2, #8 + orr r1, r3 + strh r1, [r0] + ldrh r1, [r0, #2] + bic r1, r5 + strh r1, [r0, #2] + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_021E3A40: .word 0x04000048 +_021E3A44: .word 0xFFFFC0FF + + thumb_func_start MOD05_021E3A48 +MOD05_021E3A48: ; 0x021E3A48 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x3c] + cmp r1, #0 + beq _021E3A56 + bl MOD05_021E3BA4 +_021E3A56: + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021E3A6C ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + nop +_021E3A6C: .word 0xFFFF1FFF + + thumb_func_start MOD05_021E3A70 +MOD05_021E3A70: ; 0x021E3A70 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x3c] + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + beq _021E3A84 + bl ErrorHandling +_021E3A84: + mov r1, #0 + str r1, [r5, #0x18] + ldr r0, [r5, #0x10] + mov r2, #0xff + ldr r0, [r0, #4] + add r5, #0x18 + ldr r0, [r0, #0x1c] + lsl r2, r2, #0xc + str r0, [r4, #0x38] + mov r0, #0x60 + str r0, [r4, #0x30] + str r1, [r4, #0x34] + str r5, [r4, #0x44] + add r0, r4, #0 + add r3, r7, #0 + str r6, [sp] + bl MOD05_021E3644 + add r0, r4, #0 + mov r2, #6 + ldr r3, [sp, #0x18] + add r0, #0x18 + mov r1, #0 + lsl r2, r2, #0x10 + str r6, [sp] + bl MOD05_021E3644 + ldr r2, _021E3AD4 ; =0x04000040 + mov r1, #0xff + strh r1, [r2] + mov r0, #0xc0 + strh r0, [r2, #4] + strh r1, [r2, #2] + strh r0, [r2, #6] + ldr r0, _021E3AD8 ; =MOD05_021E3ADC + add r1, r4, #0 + lsr r2, r2, #0x10 + bl FUN_0200CA98 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E3AD4: .word 0x04000040 +_021E3AD8: .word MOD05_021E3ADC + + thumb_func_start MOD05_021E3ADC +MOD05_021E3ADC: ; 0x021E3ADC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r2, #1 + ldr r0, _021E3B04 ; =MOD05_021E3B0C + add r4, r1, #0 + lsl r2, r2, #0xa + bl FUN_0200CA98 + str r0, [r4, #0x40] + ldr r0, [r4, #0x38] + ldr r1, _021E3B08 ; =MOD05_021E3B74 + add r2, r4, #0 + bl MOD05_021F4624 + str r0, [r4, #0x3c] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_021E3B04: .word MOD05_021E3B0C +_021E3B08: .word MOD05_021E3B74 + + thumb_func_start MOD05_021E3B0C +MOD05_021E3B0C: ; 0x021E3B0C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _021E3B1C + cmp r0, #1 + beq _021E3B68 + pop {r4, pc} +_021E3B1C: + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E36A4 + add r0, r4, #0 + bl MOD05_021E36A4 + cmp r0, #0 + beq _021E3B34 + ldr r0, [r4, #0x34] + add r0, r0, #1 + str r0, [r4, #0x34] +_021E3B34: + ldr r0, [r4] + asr r2, r0, #0xc + ldr r0, [r4, #0x18] + mov r4, #0xff + asr r1, r0, #0xc + ldr r0, _021E3B70 ; =0x04000040 + sub r3, r4, r2 + strh r3, [r0] + mov r3, #0x60 + sub r3, r3, r1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + strh r3, [r0, #4] + lsl r3, r2, #8 + lsl r2, r4, #8 + and r2, r3 + orr r2, r4 + add r1, #0x60 + strh r2, [r0, #2] + lsl r2, r1, #8 + lsl r1, r4, #8 + and r2, r1 + mov r1, #0xc0 + orr r1, r2 + strh r1, [r0, #6] + pop {r4, pc} +_021E3B68: + add r0, r4, #0 + bl MOD05_021E3BA4 + pop {r4, pc} + .balign 4, 0 +_021E3B70: .word 0x04000040 + + thumb_func_start MOD05_021E3B74 +MOD05_021E3B74: ; 0x021E3B74 + ldr r0, _021E3B9C ; =0x04000006 + ldr r1, [r1, #0x30] + ldrh r2, [r0] + cmp r2, r1 + ldr r1, _021E3BA0 ; =0xFFFF1FFF + bhi _021E3B8E + sub r3, r0, #6 + ldr r2, [r3] + lsr r0, r0, #0xd + and r1, r2 + orr r0, r1 + str r0, [r3] + bx lr +_021E3B8E: + sub r3, r0, #6 + ldr r2, [r3] + lsr r0, r0, #0xc + and r1, r2 + orr r0, r1 + str r0, [r3] + bx lr + .balign 4, 0 +_021E3B9C: .word 0x04000006 +_021E3BA0: .word 0xFFFF1FFF + + thumb_func_start MOD05_021E3BA4 +MOD05_021E3BA4: ; 0x021E3BA4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E3BF8 ; =0x04000048 + mov r2, #0x3f + ldrh r3, [r0] + mov r1, #0x1f + bic r3, r2 + orr r3, r1 + mov r1, #0x20 + orr r3, r1 + strh r3, [r0] + ldrh r3, [r0, #2] + bic r3, r2 + add r2, r0, #0 + strh r3, [r0, #2] + mov r3, #0 + sub r2, #8 + strh r3, [r2] + sub r0, r0, #4 + strh r3, [r0] + lsl r3, r1, #0x15 + ldr r2, [r3] + ldr r0, _021E3BFC ; =0xFFFF1FFF + and r2, r0 + lsl r0, r1, #8 + orr r0, r2 + str r0, [r3] + ldr r0, [r4, #0x44] + mov r1, #1 + str r1, [r0] + ldr r0, [r4, #0x3c] + bl MOD05_021F4648 + mov r0, #0 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x40] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x40] + pop {r4, pc} + nop +_021E3BF8: .word 0x04000048 +_021E3BFC: .word 0xFFFF1FFF + + thumb_func_start MOD05_021E3C00 +MOD05_021E3C00: ; 0x021E3C00 + ldr r3, _021E3C0C ; =0x0200CA99 + mov r2, #1 + add r1, r0, #0 + ldr r0, _021E3C10 ; =MOD05_021E3C14 + lsl r2, r2, #0xa + bx r3 + .balign 4, 0 +_021E3C0C: .word 0x0200CA99 +_021E3C10: .word MOD05_021E3C14 + + thumb_func_start MOD05_021E3C14 +MOD05_021E3C14: ; 0x021E3C14 + push {r3, r4, r5, r6, lr} + sub sp, #0x64 + ldr r6, _021E3D10 ; =0x021F7464 + add r3, sp, #0x54 + add r5, r0, #0 + add r4, r1, #0 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r3, _021E3D14 ; =0x021F74AC + add r2, sp, #0x38 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #1 + str r0, [r2] + add r0, r4, #0 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + add r2, sp, #0x38 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + ldr r3, _021E3D18 ; =0x021F7490 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + add r0, r4, #0 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + add r2, sp, #0x1c + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + ldr r3, _021E3D1C ; =0x021F7474 + add r2, sp, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + add r2, sp, #0 + mov r3, #1 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0x64 + pop {r3, r4, r5, r6, pc} + nop +_021E3D10: .word 0x021F7464 +_021E3D14: .word 0x021F74AC +_021E3D18: .word 0x021F7490 +_021E3D1C: .word 0x021F7474 + + thumb_func_start MOD05_021E3D20 +MOD05_021E3D20: ; 0x021E3D20 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r3, #0 + mov r3, #0 + add r5, r0, #0 + add r6, r1, #0 + add r1, r2, #0 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0x70 + add r2, r3, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + mov r0, #0x70 + add r1, r6, #0 + add r2, r4, #0 + mov r3, #3 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + mov r0, #0x70 + add r1, r5, #0 + add r2, r4, #0 + mov r3, #3 + bl FUN_020068C8 + add sp, #0x10 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E3D70 +MOD05_021E3D70: ; 0x021E3D70 + push {r3, r4, lr} + sub sp, #0xc + add r3, r1, #0 + add r4, r0, #0 + add r0, r3, #4 + str r0, [sp] + ldr r0, [r3, #0x18] + mov r2, #0 + str r0, [sp, #4] + ldr r0, [r3, #0x1c] + str r0, [sp, #8] + ldr r1, [r3, #0x14] + ldr r0, [r3] + lsl r1, r1, #0x18 + ldr r3, [r3, #0x20] + lsr r1, r1, #0x18 + bl FUN_02017B60 + add r0, r4, #0 + bl FUN_0200CAB4 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E3DA0 +MOD05_021E3DA0: ; 0x021E3DA0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, r5, #4 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MTX_Identity22_ + add r0, sp, #8 + ldrh r0, [r0, #0x14] + ldr r3, _021E3E0C ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, r5, #4 + bl MTX_Rot22_ + mov r0, #1 + lsl r0, r0, #0xc + add r1, r7, #0 + bl FX_Div + add r7, r0, #0 + mov r0, #1 + ldr r1, [sp, #0x18] + lsl r0, r0, #0xc + bl FX_Div + add r3, r0, #0 + add r0, r5, #4 + add r1, r0, #0 + add r2, r7, #0 + bl MTX_ScaleApply22 + str r4, [r5] + mov r2, #1 + ldr r0, [sp, #0x20] + str r6, [r5, #0x14] + str r0, [r5, #0x18] + ldr r0, [sp, #0x24] + add r1, r5, #0 + str r0, [r5, #0x1c] + ldr r0, [sp, #0x28] + lsl r2, r2, #0xa + str r0, [r5, #0x20] + ldr r0, _021E3E10 ; =MOD05_021E3D70 + bl FUN_0200CA98 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E3E0C: .word 0x020FFA38 +_021E3E10: .word MOD05_021E3D70 + + thumb_func_start MOD05_021E3E14 +MOD05_021E3E14: ; 0x021E3E14 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r2, #0 + add r0, r1, #0 + add r1, r5, #4 + mov r2, #4 + bl FUN_02008C9C + mov r7, #0x4b + str r0, [r5] + mov r4, #0 + lsl r7, r7, #2 +_021E3E2C: + add r0, r6, #0 + add r1, r4, #0 + mov r2, #4 + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021E3E2C + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E3E44 +MOD05_021E3E44: ; 0x021E3E44 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + bl FUN_0201FD58 + mov r6, #0x4b + mov r4, #0 + lsl r6, r6, #2 +_021E3E54: + ldr r0, [r5, r6] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021E3E54 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E3E64 +MOD05_021E3E64: ; 0x021E3E64 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r6, [sp, #0x54] + add r4, r1, #0 + str r6, [sp] + mov r1, #1 + add r5, r0, #0 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x4b + str r1, [sp, #0xc] + lsl r0, r0, #2 + str r2, [sp, #0x2c] + add r7, r3, #0 + ldr r0, [r5, r0] + ldr r2, [sp, #0x48] + mov r1, #0x70 + mov r3, #0 + bl FUN_02008F90 + str r0, [r4] + str r6, [sp] + mov r0, #1 + str r0, [sp, #4] + str r7, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r2, [sp, #0x2c] + mov r1, #0x70 + mov r3, #0 + bl FUN_02008FEC + str r0, [r4, #4] + str r6, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, [sp, #0x4c] + mov r1, #0x70 + mov r3, #0 + bl FUN_020090AC + str r0, [r4, #8] + str r6, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, [sp, #0x50] + mov r1, #0x70 + mov r3, #0 + bl FUN_020090AC + str r0, [r4, #0xc] + ldr r0, [r4] + bl FUN_02009B04 + ldr r0, [r4] + bl FUN_02009474 + ldr r0, [r4, #4] + bl FUN_02009D68 + mov r0, #0 + mov r2, #0x4b + str r6, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r2, r2, #2 + ldr r1, [r5, r2] + add r4, #0x10 + str r1, [sp, #0x14] + add r1, r2, #4 + ldr r1, [r5, r1] + add r3, r6, #0 + str r1, [sp, #0x18] + add r1, r2, #0 + add r1, #8 + ldr r1, [r5, r1] + add r2, #0xc + str r1, [sp, #0x1c] + ldr r1, [r5, r2] + add r2, r6, #0 + str r1, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r4, #0 + add r1, r6, #0 + bl FUN_02008AA4 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E3F3C +MOD05_021E3F3C: ; 0x021E3F3C + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + bl FUN_02009C0C + ldr r0, [r4, #4] + bl FUN_02009E04 + mov r7, #0x4b + mov r6, #0 + lsl r7, r7, #2 +_021E3F54: + ldr r0, [r5, r7] + ldr r1, [r4] + bl FUN_02009490 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #4 + blt _021E3F54 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E3F68 +MOD05_021E3F68: ; 0x021E3F68 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + lsl r1, r2, #0x10 + add r6, r0, #0 + add r0, sp, #8 + lsr r1, r1, #0x10 + add r7, r3, #0 + bl FUN_020690AC + add r0, r4, #0 + mov r1, #0x20 + bl FUN_02016998 + add r1, sp, #4 + add r5, r0, #0 + ldrh r0, [r1, #4] + ldrh r1, [r1, #8] + add r2, sp, #4 + add r3, r4, #0 + bl FUN_02006C08 + add r4, r0, #0 + add r0, sp, #0x20 + ldrh r0, [r0, #0x10] + add r1, r5, #0 + mov r2, #0x10 + str r0, [sp] + ldr r0, [sp, #4] + add r3, r7, #0 + ldr r0, [r0, #0xc] + bl FUN_02003974 + add r0, r6, #0 + add r1, r5, #0 + mov r2, #0x20 + bl MOD05_021E40F0 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E3FC4 +MOD05_021E3FC4: ; 0x021E3FC4 + push {r4, lr} + sub sp, #0x20 + ldr r0, [r0] + add r1, #0x10 + str r0, [sp] + ldr r0, [sp, #0x28] + str r1, [sp, #4] + str r0, [sp, #0x10] + ldr r0, [sp, #0x2c] + str r2, [sp, #8] + str r0, [sp, #0x14] + mov r0, #1 + str r0, [sp, #0x18] + mov r0, #4 + str r0, [sp, #0x1c] + add r0, sp, #0 + str r3, [sp, #0xc] + bl FUN_0201FF84 + add r4, r0, #0 + bne _021E3FF2 + bl ErrorHandling +_021E3FF2: + add r0, r4, #0 + add sp, #0x20 + pop {r4, pc} + + thumb_func_start MOD05_021E3FF8 +MOD05_021E3FF8: ; 0x021E3FF8 + push {r4} + sub sp, #0xc + str r2, [sp, #4] + str r3, [sp, #8] + add r2, sp, #0 + add r4, r0, #0 + str r1, [sp] + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + add sp, #0xc + pop {r4} + bx lr + + thumb_func_start MOD05_021E4014 +MOD05_021E4014: ; 0x021E4014 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r4, r2, #0 + add r5, r1, #0 + lsl r1, r4, #0x10 + add r6, r0, #0 + add r0, sp, #0x10 + lsr r1, r1, #0x10 + add r7, r3, #0 + bl FUN_020690AC + str r5, [sp] + add r1, sp, #8 + ldrh r0, [r1, #8] + ldrh r1, [r1, #0xa] + mov r2, #0 + add r3, sp, #0xc + bl FUN_02006BB0 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x14] + bl FUN_02008A74 + add r0, sp, #0x28 + ldrh r0, [r0, #0x10] + add r1, r5, #0 + add r2, r4, #0 + str r0, [sp] + add r0, r6, #0 + add r3, r7, #0 + bl MOD05_021E3F68 + ldr r0, [sp, #0xc] + ldr r3, [sp, #0x3c] + add r1, r5, #0 + add r2, sp, #8 + bl MOD05_021E4080 + add r4, r0, #0 + ldr r2, [sp, #8] + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021E4118 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, [sp, #4] + bl FUN_02016A18 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4080 +MOD05_021E4080: ; 0x021E4080 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + ldr r4, [r0, #0x14] + add r0, r1, #0 + mov r1, #2 + lsl r1, r1, #0xa + str r2, [sp, #4] + add r5, r3, #0 + bl FUN_02016998 + mov ip, r0 + lsl r0, r5, #2 + mov r7, #0 + add r6, r4, r0 +_021E409E: + ldr r0, [sp] + mov r2, #0 + ldrh r0, [r0, #2] + add r3, r7, #0 + lsr r1, r7, #0x1f + lsl r5, r7, #0x1d + mul r3, r0 + sub r5, r5, r1 + mov r0, #0x1d + ror r5, r0 + asr r0, r7, #2 + lsr r0, r0, #0x1d + add r0, r7, r0 + asr r0, r0, #3 + add r1, r1, r5 + lsl r0, r0, #6 + add r0, r1, r0 + lsl r1, r0, #2 + mov r0, ip + add r4, r2, #0 + add r5, r0, r1 +_021E40C8: + add r0, r3, r2 + lsl r0, r0, #2 + ldr r1, [r6, r0] + lsl r0, r4, #2 + add r2, r2, #1 + add r4, #8 + str r1, [r5, r0] + cmp r2, #8 + blt _021E40C8 + add r7, r7, #1 + cmp r7, #0x40 + blt _021E409E + mov r1, #2 + ldr r0, [sp, #4] + lsl r1, r1, #0xa + str r1, [r0] + mov r0, ip + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E40F0 +MOD05_021E40F0: ; 0x021E40F0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + bl FUN_02020354 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl DC_FlushRange + add r0, r6, #0 + mov r1, #1 + bl FUN_020B19C4 + add r1, r0, #0 + add r0, r5, #0 + add r2, r4, #0 + bl GX_LoadOBJPltt + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E4118 +MOD05_021E4118: ; 0x021E4118 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + bl FUN_02020350 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl DC_FlushRange + add r0, r6, #0 + mov r1, #1 + bl FUN_020B1A14 + add r1, r0, #0 + add r0, r5, #0 + add r2, r4, #0 + bl GX_LoadOBJ + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E4140 +MOD05_021E4140: ; 0x021E4140 + push {r4, lr} + mov r1, #0x30 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x30 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4158 +MOD05_021E4158: ; 0x021E4158 + ldr r3, _021E415C ; =0x02016A19 + bx r3 + .balign 4, 0 +_021E415C: .word 0x02016A19 + + thumb_func_start MOD05_021E4160 +MOD05_021E4160: ; 0x021E4160 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0x2e + ldrb r0, [r0] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + beq _021E4176 + bl ErrorHandling +_021E4176: + ldr r3, [sp, #0x1c] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021E35B0 + add r0, r5, #0 + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + add r0, #0x14 + add r1, r7, #0 + bl MOD05_021E35B0 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x24] + str r0, [r5, #0x28] + add r0, r5, #0 + add r0, #0x2c + strb r1, [r0] + add r0, r5, #0 + ldr r1, [sp, #0x28] + add r0, #0x2d + strb r1, [r0] + add r0, sp, #0x2c + ldrb r1, [r0] + add r0, r5, #0 + add r0, #0x2f + strb r1, [r0] + mov r0, #1 + add r5, #0x2e + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E41B8 +MOD05_021E41B8: ; 0x021E41B8 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r1, r5, #0 + add r1, #0x2e + ldrb r1, [r1] + cmp r1, #0 + bne _021E41CE + add sp, #8 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E41CE: + bl MOD05_021E35C0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x14 + bl MOD05_021E35C0 + add r0, r5, #0 + add r0, #0x2c + ldrb r0, [r0] + ldr r2, [r5] + ldr r6, [r5, #0x14] + lsr r1, r0, #1 + sub r1, r2, r1 + lsl r1, r1, #0x10 + asr r3, r1, #0x10 + add r1, r5, #0 + add r1, #0x2d + ldrb r2, [r1] + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + lsr r1, r2, #1 + str r0, [sp] + add r0, r5, #0 + sub r1, r6, r1 + add r0, #0x2f + lsl r1, r1, #0x10 + ldrb r0, [r0] + asr r1, r1, #0x10 + add r2, r1, r2 + str r0, [sp, #4] + lsl r2, r2, #0x10 + ldr r0, [r5, #0x28] + asr r2, r2, #0x10 + bl MOD05_021E4338 + add r0, r4, #0 + add sp, #8 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4220 +MOD05_021E4220: ; 0x021E4220 + push {r4, lr} + mov r1, #0x30 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x30 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4238 +MOD05_021E4238: ; 0x021E4238 + ldr r3, _021E423C ; =0x02016A19 + bx r3 + .balign 4, 0 +_021E423C: .word 0x02016A19 + + thumb_func_start MOD05_021E4240 +MOD05_021E4240: ; 0x021E4240 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0x2e + ldrb r0, [r0] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + beq _021E4256 + bl ErrorHandling +_021E4256: + ldr r3, [sp, #0x1c] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021E35B0 + add r0, r5, #0 + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + add r0, #0x14 + add r1, r7, #0 + bl MOD05_021E35B0 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x24] + str r0, [r5, #0x28] + add r0, r5, #0 + add r0, #0x2c + strb r1, [r0] + add r0, r5, #0 + ldr r1, [sp, #0x28] + add r0, #0x2d + strb r1, [r0] + add r0, sp, #0x2c + ldrb r1, [r0] + add r0, r5, #0 + add r0, #0x2f + strb r1, [r0] + mov r0, #1 + add r5, #0x2e + strb r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4298 +MOD05_021E4298: ; 0x021E4298 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r0, #0x2e + ldrb r0, [r0] + cmp r0, #0 + bne _021E42AC + add sp, #8 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E42AC: + add r0, r5, #0 + add r0, #0x2c + ldrb r0, [r0] + ldr r2, [r5] + ldr r4, [r5, #0x14] + lsr r1, r0, #1 + sub r1, r2, r1 + lsl r1, r1, #0x10 + asr r3, r1, #0x10 + add r1, r5, #0 + add r1, #0x2d + ldrb r2, [r1] + add r0, r3, r0 + lsl r0, r0, #0x10 + lsr r1, r2, #1 + sub r1, r4, r1 + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + asr r0, r0, #0x10 + str r0, [sp] + mov r0, #0 + add r2, r1, r2 + str r0, [sp, #4] + lsl r2, r2, #0x10 + ldr r0, [r5, #0x28] + asr r2, r2, #0x10 + bl MOD05_021E4338 + add r0, r5, #0 + bl MOD05_021E35C0 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x14 + bl MOD05_021E35C0 + add r0, r5, #0 + add r0, #0x2c + ldrb r0, [r0] + ldr r2, [r5] + ldr r6, [r5, #0x14] + lsr r1, r0, #1 + sub r1, r2, r1 + lsl r1, r1, #0x10 + asr r3, r1, #0x10 + add r1, r5, #0 + add r1, #0x2d + ldrb r2, [r1] + add r0, r3, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + lsr r1, r2, #1 + str r0, [sp] + add r0, r5, #0 + sub r1, r6, r1 + add r0, #0x2f + lsl r1, r1, #0x10 + ldrb r0, [r0] + asr r1, r1, #0x10 + add r2, r1, r2 + str r0, [sp, #4] + lsl r2, r2, #0x10 + ldr r0, [r5, #0x28] + asr r2, r2, #0x10 + bl MOD05_021E4338 + add r0, r4, #0 + add sp, #8 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4338 +MOD05_021E4338: ; 0x021E4338 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r5, [sp, #0x18] + add r4, r1, #0 + cmp r5, #0 + ble _021E4390 + cmp r2, #0 + ble _021E4390 + cmp r3, r5 + beq _021E4390 + cmp r4, r2 + beq _021E4390 + cmp r3, #0 + bge _021E4356 + mov r3, #0 +_021E4356: + mov r1, #1 + lsl r1, r1, #8 + cmp r5, r1 + ble _021E4360 + add r5, r1, #0 +_021E4360: + cmp r4, #0 + bge _021E4366 + mov r4, #0 +_021E4366: + mov r1, #1 + lsl r1, r1, #8 + cmp r2, r1 + ble _021E4370 + add r2, r1, #0 +_021E4370: + sub r1, r5, r3 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + str r1, [sp] + sub r1, r2, r4 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + str r1, [sp, #4] + lsl r2, r3, #0x10 + add r1, sp, #8 + lsl r3, r4, #0x10 + ldrb r1, [r1, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 +_021E4390: + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E4394 +MOD05_021E4394: ; 0x021E4394 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #4 + mov r1, #0xcc + bl FUN_02016998 + mov r1, #0 + mov r2, #0xcc + add r7, r0, #0 + bl Call_FillMemWithValue + mov r4, #0 + add r5, r7, #0 +_021E43AE: + add r0, r6, #0 + bl MOD05_021E4220 + str r0, [r5, #4] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x30 + blt _021E43AE + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E43C4 +MOD05_021E43C4: ; 0x021E43C4 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_021E43CC: + ldr r0, [r5, #4] + bl MOD05_021E4238 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x30 + blt _021E43CC + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E43E4 +MOD05_021E43E4: ; 0x021E43E4 + push {r3, r4} + str r3, [r0] + ldr r3, _021E4420 ; =0xFFFFFFF8 + add r3, sp + ldrb r4, [r3, #0x10] + add r3, r0, #0 + add r3, #0xc9 + strb r4, [r3] + add r3, r0, #0 + add r3, #0xc6 + strb r1, [r3] + add r1, r0, #0 + add r1, #0xc7 + strb r2, [r1] + add r1, r0, #0 + mov r2, #0 + add r1, #0xc4 + strb r2, [r1] + add r1, r0, #0 + add r1, #0xc5 + strb r2, [r1] + add r1, r0, #0 + add r1, #0xc8 + strb r2, [r1] + mov r1, #1 + add r0, #0xca + strb r1, [r0] + pop {r3, r4} + bx lr + nop +_021E4420: .word 0xFFFFFFF8 + + thumb_func_start MOD05_021E4424 +MOD05_021E4424: ; 0x021E4424 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + add r0, #0xca + ldrb r0, [r0] + cmp r0, #0 + bne _021E4438 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021E4438: + add r0, r6, #0 + add r0, #0xc4 + ldrb r0, [r0] + cmp r0, #0x30 + bhs _021E44BC + mov r1, #0xc8 + ldrsb r0, [r6, r1] + sub r2, r0, #1 + add r0, r6, #0 + add r0, #0xc8 + strb r2, [r0] + ldrsb r0, [r6, r1] + cmp r0, #0 + bgt _021E44BC + add r0, r6, #0 + add r0, #0xc7 + ldrb r1, [r0] + add r0, r6, #0 + add r0, #0xc8 + strb r1, [r0] + add r0, r6, #0 + add r0, #0xc4 + ldrb r0, [r0] + mov r1, #0x1d + lsr r3, r0, #0x1f + lsl r2, r0, #0x1d + sub r2, r2, r3 + ror r2, r1 + add r2, r3, r2 + ldr r1, _021E4518 ; =0x021F745C + mov r3, #0x20 + ldrb r1, [r1, r2] + lsr r2, r0, #3 + lsl r4, r2, #5 + mov r2, #0xb0 + sub r2, r2, r4 + str r2, [sp] + add r2, r6, #0 + add r2, #0xc6 + ldrb r2, [r2] + lsl r0, r0, #2 + lsl r1, r1, #5 + str r2, [sp, #4] + ldr r2, [r6] + add r0, r6, r0 + str r2, [sp, #8] + str r3, [sp, #0xc] + add r2, r6, #0 + str r3, [sp, #0x10] + add r2, #0xc9 + ldrb r2, [r2] + sub r3, #0x30 + add r1, #0x10 + str r2, [sp, #0x14] + ldr r0, [r0, #4] + add r2, r1, #0 + sub r3, r3, r4 + bl MOD05_021E4240 + add r0, r6, #0 + add r0, #0xc4 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r6, #0 + add r0, #0xc4 + strb r1, [r0] +_021E44BC: + add r0, r6, #0 + add r0, #0xc5 + ldrb r4, [r0] + add r0, r6, #0 + add r0, #0xc4 + ldrb r0, [r0] + cmp r4, r0 + bge _021E44F4 + lsl r0, r4, #2 + add r7, r6, #0 + add r5, r6, r0 + add r7, #0xc5 +_021E44D4: + ldr r0, [r5, #4] + bl MOD05_021E4298 + str r0, [sp, #0x18] + cmp r0, #1 + bne _021E44E6 + ldrb r0, [r7] + add r0, r0, #1 + strb r0, [r7] +_021E44E6: + add r0, r6, #0 + add r0, #0xc4 + ldrb r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021E44D4 +_021E44F4: + add r0, r6, #0 + add r0, #0xc5 + ldrb r0, [r0] + cmp r0, #0x30 + blo _021E4510 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _021E4510 + mov r0, #0 + add r6, #0xca + strb r0, [r6] + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021E4510: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021E4518: .word 0x021F745C + + thumb_func_start MOD05_021E451C +MOD05_021E451C: ; 0x021E451C + push {r3, lr} + mov r1, #0x1c + bl FUN_02016998 + add r3, r0, #0 + mov r2, #0x1c + mov r1, #0 +_021E452A: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _021E452A + pop {r3, pc} + + thumb_func_start MOD05_021E4534 +MOD05_021E4534: ; 0x021E4534 + ldr r3, _021E4538 ; =0x02016A19 + bx r3 + .balign 4, 0 +_021E4538: .word 0x02016A19 + + thumb_func_start MOD05_021E453C +MOD05_021E453C: ; 0x021E453C + push {r4, lr} + add r4, r1, #0 + ldr r1, [sp, #8] + str r1, [r0] + ldr r1, _021E4560 ; =0xFFFFFFF8 + add r1, sp + ldrb r1, [r1, #0x14] + strb r1, [r0, #0x19] + mov r1, #1 + strb r1, [r0, #0x18] + add r1, r2, #0 + add r2, r3, #0 + add r0, r0, #4 + add r3, r4, #0 + bl MOD05_021E35B0 + pop {r4, pc} + nop +_021E4560: .word 0xFFFFFFF8 + + thumb_func_start MOD05_021E4564 +MOD05_021E4564: ; 0x021E4564 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldrb r0, [r5, #0x18] + cmp r0, #0 + bne _021E4572 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E4572: + ldr r0, [r5, #4] + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #4 + bl MOD05_021E35C0 + ldr r2, [r5, #4] + add r6, r0, #0 + lsl r2, r2, #0x10 + ldrb r3, [r5, #0x19] + ldr r0, [r5] + add r1, r4, #0 + lsr r2, r2, #0x10 + bl MOD05_021E45A0 + cmp r6, #1 + bne _021E459C + mov r0, #0 + strb r0, [r5, #0x18] + mov r0, #1 + pop {r4, r5, r6, pc} +_021E459C: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E45A0 +MOD05_021E45A0: ; 0x021E45A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + str r0, [sp, #8] + asr r0, r2, #4 + add r4, r1, #0 + lsl r1, r0, #1 + lsl r0, r1, #1 + ldr r2, _021E4680 ; =0x020FFA38 + add r1, r1, #1 + lsl r1, r1, #1 + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + str r3, [sp, #0xc] + bl FX_Div + str r0, [sp, #0x18] + asr r0, r4, #4 + lsl r1, r0, #1 + lsl r0, r1, #1 + ldr r2, _021E4680 ; =0x020FFA38 + add r1, r1, #1 + lsl r1, r1, #1 + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + bl FX_Div + str r0, [sp, #0x10] + ldr r0, [sp, #0x18] + mov r5, #0 + asr r0, r0, #0x1f + str r0, [sp, #0x1c] + ldr r0, [sp, #0x10] + asr r0, r0, #0x1f + str r0, [sp, #0x14] +_021E45E4: + mov r0, #0x5f + sub r0, r0, r5 + lsl r6, r0, #0xc + asr r4, r6, #0x1f + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r2, r6, #0 + add r3, r4, #0 + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r2, r0, r2 + ldr r0, _021E4684 ; =0x00000000 + adc r1, r0 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + asr r7, r1, #0xc + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r6, #0 + add r3, r4, #0 + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r2, r0, r2 + ldr r0, _021E4684 ; =0x00000000 + adc r1, r0 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + asr r0, r1, #0xc + mov r1, #0x80 + add r4, r7, #0 + add r6, r0, #0 + mov r2, #0x80 + sub r0, r2, r0 + sub r1, r1, r7 + add r4, #0x80 + add r6, #0x80 + add r3, r0, #0 + cmp r0, r1 + ble _021E4642 + add r3, r1, #0 + add r1, r0, #0 +_021E4642: + cmp r6, r4 + ble _021E464C + add r0, r6, #0 + add r6, r4, #0 + add r4, r0, #0 +_021E464C: + add r0, r1, #1 + str r0, [sp] + ldr r0, [sp, #0xc] + add r1, r5, #0 + str r0, [sp, #4] + ldr r0, [sp, #8] + add r2, r5, #1 + bl MOD05_021E4338 + add r0, r4, #1 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r1, #0xbf + str r0, [sp, #4] + mov r2, #0xc0 + ldr r0, [sp, #8] + sub r1, r1, r5 + sub r2, r2, r5 + add r3, r6, #0 + bl MOD05_021E4338 + add r5, r5, #1 + cmp r5, #0x60 + blt _021E45E4 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E4680: .word 0x020FFA38 +_021E4684: .word 0x00000000 + + thumb_func_start MOD05_021E4688 +MOD05_021E4688: ; 0x021E4688 + push {r3, r4, r5, r6, r7, lr} + mov r1, #0x24 + add r6, r0, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x24 + add r7, r0, #0 + bl Call_FillMemWithValue + mov r4, #0 + add r5, r7, #0 +_021E46A0: + add r0, r6, #0 + bl MOD05_021E451C + add r4, r4, #1 + stmia r5!, {r0} + cmp r4, #8 + blt _021E46A0 + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E46B4 +MOD05_021E46B4: ; 0x021E46B4 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 +_021E46BC: + ldr r0, [r5] + bl MOD05_021E4534 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E46BC + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E46D4 +MOD05_021E46D4: ; 0x021E46D4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0xc] + ldr r4, _021E474C ; =0x021F74C8 + str r0, [sp, #8] + str r2, [sp, #0x10] + str r3, [sp, #0x14] + mov r6, #0 + add r5, r0, #0 +_021E46E6: + ldrh r1, [r4] + ldr r0, _021E4750 ; =0x0000FFFF + mul r0, r1 + mov r1, #0x5a + lsl r1, r1, #2 + bl _s32_div_f + add r7, r0, #0 + ldrh r1, [r4, #2] + ldr r0, _021E4750 ; =0x0000FFFF + mul r0, r1 + mov r1, #0x5a + lsl r1, r1, #2 + bl _s32_div_f + add r3, r0, #0 + ldr r0, [sp, #0x10] + lsl r2, r7, #0x10 + str r0, [sp] + ldr r0, [sp, #0x14] + lsl r3, r3, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [sp, #0xc] + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl MOD05_021E453C + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #8 + blt _021E46E6 + ldr r0, [sp, #8] + mov r1, #1 + add r0, #0x20 + strb r1, [r0] + add r1, #0xff + str r1, [sp] + str r0, [sp, #8] + ldr r0, [sp, #0x14] + mov r1, #0x5d + str r0, [sp, #4] + ldr r0, [sp, #0x10] + mov r2, #0x63 + mov r3, #0 + bl MOD05_021E4338 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E474C: .word 0x021F74C8 +_021E4750: .word 0x0000FFFF + + thumb_func_start MOD05_021E4754 +MOD05_021E4754: ; 0x021E4754 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r0, #0x20 + ldrb r0, [r0] + cmp r0, #0 + bne _021E4764 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E4764: + mov r4, #0 + add r5, r6, #0 +_021E4768: + ldr r0, [r5] + bl MOD05_021E4564 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _021E4768 + cmp r0, #1 + bne _021E4784 + mov r0, #0 + add r6, #0x20 + strb r0, [r6] + mov r0, #1 + pop {r4, r5, r6, pc} +_021E4784: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E4788 +MOD05_021E4788: ; 0x021E4788 + push {r4, lr} + mov r0, #4 + mov r1, #0xe8 + bl FUN_02016998 + mov r1, #0 + mov r2, #0xe8 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E47A0 +MOD05_021E47A0: ; 0x021E47A0 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0xe0 + ldr r1, [r1] + cmp r1, #0 + beq _021E47B2 + bl MOD05_021E4918 +_021E47B2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E47BC +MOD05_021E47BC: ; 0x021E47BC + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, [sp, #0x18] + add r6, r1, #0 + str r0, [sp, #0x18] + add r0, r6, #0 + add r0, #0xe0 + ldr r0, [r0] + add r7, r2, #0 + add r5, r3, #0 + cmp r0, #0 + beq _021E47D8 + bl ErrorHandling +_021E47D8: + mov r1, #0 + str r1, [r4, #0x18] + ldr r0, [r4, #0x10] + add r4, #0x18 + ldr r0, [r0, #4] + add r3, r7, #0 + ldr r2, [r0, #0x1c] + add r0, r6, #0 + add r0, #0xd8 + str r2, [r0] + add r0, r6, #0 + str r1, [r6, #0x14] + add r0, #0xe4 + str r4, [r0] + add r0, r6, #0 + mov r2, #0xff + bl MOD05_021E35B0 + mov r4, #0 +_021E47FE: + add r0, r4, #0 + add r1, r5, #0 + bl _u32_div_f + ldr r0, [sp, #0x18] + mul r0, r1 + add r1, r5, #0 + bl _u32_div_f + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl _u32_div_f + mov r1, #1 + tst r0, r1 + bne _021E4826 + add r0, r6, r4 + strb r7, [r0, #0x18] + b _021E482E +_021E4826: + ldr r0, [sp, #0x18] + sub r1, r0, r7 + add r0, r6, r4 + strb r1, [r0, #0x18] +_021E482E: + add r4, r4, #1 + cmp r4, #0xc0 + blt _021E47FE + ldr r0, _021E4878 ; =0x04000048 + mov r1, #0x3f + ldrh r3, [r0] + ldr r2, [sp, #0x1c] + bic r3, r1 + orr r3, r2 + mov r2, #0x20 + orr r3, r2 + strh r3, [r0] + ldrh r3, [r0, #2] + bic r3, r1 + ldr r1, [sp, #0x20] + orr r1, r3 + strh r1, [r0, #2] + add r1, r0, #0 + mov r3, #0 + sub r1, #8 + strh r3, [r1] + mov r1, #0xc0 + sub r0, r0, #4 + strh r1, [r0] + lsl r3, r2, #0x15 + ldr r1, [r3] + ldr r0, _021E487C ; =0xFFFF1FFF + and r1, r0 + lsl r0, r2, #8 + orr r0, r1 + str r0, [r3] + ldr r0, _021E4880 ; =MOD05_021E4884 + add r1, r6, #0 + lsl r2, r2, #5 + bl FUN_0200CA98 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E4878: .word 0x04000048 +_021E487C: .word 0xFFFF1FFF +_021E4880: .word MOD05_021E4884 + + thumb_func_start MOD05_021E4884 +MOD05_021E4884: ; 0x021E4884 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0xd8 + ldr r0, [r0] + ldr r1, _021E48B8 ; =MOD05_021E48EC + add r2, r4, #0 + bl MOD05_021F4624 + add r1, r4, #0 + add r1, #0xdc + str r0, [r1] + mov r2, #1 + ldr r0, _021E48BC ; =MOD05_021E48C0 + add r1, r4, #0 + lsl r2, r2, #0xa + bl FUN_0200CA98 + add r4, #0xe0 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_021E48B8: .word MOD05_021E48EC +_021E48BC: .word MOD05_021E48C0 + + thumb_func_start MOD05_021E48C0 +MOD05_021E48C0: ; 0x021E48C0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021E48D0 + cmp r0, #1 + beq _021E48E2 + pop {r4, pc} +_021E48D0: + add r0, r4, #0 + bl MOD05_021E35C0 + cmp r0, #1 + bne _021E48E8 + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + pop {r4, pc} +_021E48E2: + add r0, r4, #0 + bl MOD05_021E4918 +_021E48E8: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E48EC +MOD05_021E48EC: ; 0x021E48EC + ldr r0, _021E4910 ; =0x04000006 + ldrh r0, [r0] + cmp r0, #0xc0 + bge _021E490E + add r0, r1, r0 + ldrb r0, [r0, #0x18] + ldr r2, [r1] + add r0, r2, r0 + cmp r0, #0xff + ble _021E4902 + mov r0, #0xff +_021E4902: + lsl r0, r0, #0x18 + ldr r1, _021E4914 ; =0x04000040 + lsr r0, r0, #0x18 + strh r0, [r1] + mov r0, #0xc0 + strh r0, [r1, #4] +_021E490E: + bx lr + .balign 4, 0 +_021E4910: .word 0x04000006 +_021E4914: .word 0x04000040 + + thumb_func_start MOD05_021E4918 +MOD05_021E4918: ; 0x021E4918 + push {r4, lr} + mov r2, #1 + lsl r2, r2, #0x1a + add r4, r0, #0 + ldr r1, [r2] + ldr r0, _021E4958 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + add r0, r4, #0 + add r0, #0xe4 + ldr r0, [r0] + mov r1, #1 + str r1, [r0] + add r0, r4, #0 + add r0, #0xdc + ldr r0, [r0] + bl MOD05_021F4648 + add r0, r4, #0 + mov r1, #0 + add r0, #0xdc + str r1, [r0] + add r0, r4, #0 + add r0, #0xe0 + ldr r0, [r0] + bl FUN_0200CAB4 + mov r0, #0 + add r4, #0xe0 + str r0, [r4] + pop {r4, pc} + nop +_021E4958: .word 0xFFFF1FFF + + thumb_func_start MOD05_021E495C +MOD05_021E495C: ; 0x021E495C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + mov r6, #1 + add r1, r0, #0 + tst r1, r6 + bne _021E4980 + mov r1, #0x72 + lsl r1, r1, #4 + tst r1, r0 + bne _021E4976 + cmp r0, #0 + bne _021E497A +_021E4976: + mov r6, #0 + b _021E4980 +_021E497A: + bl ErrorHandling + mov r6, #0 +_021E4980: + ldr r0, [r5, #4] + bl FUN_0204A1D8 + add r7, r0, #0 + ldr r0, [r5, #8] + bl FUN_0204A1D8 + str r0, [sp] + add r0, r7, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + add r7, r0, #0 + ldr r0, [sp] + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x55 + lsl r1, r1, #2 + ldr r1, [r5, r1] + sub r0, r0, r7 + cmp r1, #0xc + bhi _021E49E2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E49BE: ; jump table + .short _021E49D8 - _021E49BE - 2 ; case 0 + .short _021E49D8 - _021E49BE - 2 ; case 1 + .short _021E49D8 - _021E49BE - 2 ; case 2 + .short _021E49D8 - _021E49BE - 2 ; case 3 + .short _021E49D8 - _021E49BE - 2 ; case 4 + .short _021E49E0 - _021E49BE - 2 ; case 5 + .short _021E49D8 - _021E49BE - 2 ; case 6 + .short _021E49DC - _021E49BE - 2 ; case 7 + .short _021E49D8 - _021E49BE - 2 ; case 8 + .short _021E49D8 - _021E49BE - 2 ; case 9 + .short _021E49D8 - _021E49BE - 2 ; case 10 + .short _021E49D8 - _021E49BE - 2 ; case 11 + .short _021E49D8 - _021E49BE - 2 ; case 12 +_021E49D8: + mov r4, #0 + b _021E49E2 +_021E49DC: + mov r4, #2 + b _021E49E2 +_021E49E0: + mov r4, #4 +_021E49E2: + cmp r0, #0 + ble _021E49E8 + add r4, r4, #1 +_021E49E8: + mov r0, #6 + mul r0, r6 + add r0, r4, r0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E49F0 +MOD05_021E49F0: ; 0x021E49F0 + push {r4, r5, r6, lr} + ldr r4, [sp, #0x14] + add r5, r0, #0 + mov r0, #0 + strb r0, [r4] + mov r0, #0xff + strb r0, [r4, #1] + lsl r0, r3, #0xc + add r6, r1, #0 + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + add r3, r0, #0 + asr r0, r5, #0xc + mov r5, #0 + lsl r2, r2, #0xa + add r3, r3, r2 + adc r1, r5 + lsl r1, r1, #0x14 + lsr r3, r3, #0xc + orr r3, r1 + asr r3, r3, #0xc + lsr r1, r3, #0x1f + add r1, r3, r1 + asr r1, r1, #1 + sub r0, r0, r1 + strb r0, [r4, #2] + ldr r0, _021E4A38 ; =MOD05_021E4A64 + add r1, r4, #0 + lsr r2, r2, #1 + strb r6, [r4, #3] + bl FUN_0200CA98 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E4A38: .word MOD05_021E4A64 + + thumb_func_start MOD05_021E4A3C +MOD05_021E4A3C: ; 0x021E4A3C + push {r3, r4, r5, lr} + add r5, r0, #0 + lsl r0, r2, #0xc + add r4, r1, #0 + asr r1, r0, #0x1f + asr r3, r5, #0x1f + add r2, r5, #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 r1, r2, #0xc + orr r1, r0 + asr r0, r1, #0xc + add r0, r4, r0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E4A64 +MOD05_021E4A64: ; 0x021E4A64 + push {r3, r4, r5, lr} + ldrb r2, [r1, #4] + ldrb r3, [r1, #3] + cmp r2, #0 + bne _021E4A8C + ldrb r4, [r1] + ldrb r2, [r1, #2] + ldrb r1, [r1, #1] + lsl r5, r4, #8 + mov r4, #0xff + lsl r4, r4, #8 + and r5, r4 + orr r5, r1 + ldr r1, _021E4AB0 ; =0x04000040 + lsl r2, r2, #8 + and r2, r4 + strh r5, [r1] + orr r2, r3 + strh r2, [r1, #4] + b _021E4AA8 +_021E4A8C: + ldrb r4, [r1] + ldrb r2, [r1, #2] + ldrb r1, [r1, #1] + lsl r5, r4, #8 + mov r4, #0xff + lsl r4, r4, #8 + and r5, r4 + orr r5, r1 + ldr r1, _021E4AB4 ; =0x04000042 + lsl r2, r2, #8 + and r2, r4 + strh r5, [r1] + orr r2, r3 + strh r2, [r1, #4] +_021E4AA8: + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + nop +_021E4AB0: .word 0x04000040 +_021E4AB4: .word 0x04000042 + + thumb_func_start MOD05_021E4AB8 +MOD05_021E4AB8: ; 0x021E4AB8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021E4ACC ; =0x0400006C + ldr r1, [r1] + bl GXx_SetMasterBrightness_ + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + .balign 4, 0 +_021E4ACC: .word 0x0400006C + + thumb_func_start MOD05_021E4AD0 +MOD05_021E4AD0: ; 0x021E4AD0 + ldr r3, _021E4ADC ; =0x0200CA99 + mov r2, #1 + add r1, r0, #0 + ldr r0, _021E4AE0 ; =MOD05_021E4AB8 + lsl r2, r2, #0xa + bx r3 + .balign 4, 0 +_021E4ADC: .word 0x0200CA99 +_021E4AE0: .word MOD05_021E4AB8 + + thumb_func_start MOD05_021E4AE4 +MOD05_021E4AE4: ; 0x021E4AE4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + str r2, [sp] + add r0, r2, #0 + add r2, r3, #0 + mov r1, #0x42 + mov r3, #0 + bl MOD05_021F5990 + mov r1, #0x2c + mov r2, #0 + add r6, r0, #0 + bl MOD05_021F5A20 + mov r1, #0 + mov r2, #0x2c + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r0, [sp] + lsl r1, r5, #3 + str r0, [r4] + mov r0, #0x42 + str r0, [r4, #4] + str r5, [r4, #8] + str r6, [r4, #0x14] + str r7, [r4, #0x18] + add r0, r6, #0 + mov r2, #0 + bl MOD05_021F5A20 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD05_021E4C80 + add r0, r4, #0 + bl MOD05_021E4C34 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4B38 +MOD05_021E4B38: ; 0x021E4B38 + ldr r3, _021E4B40 ; =MOD05_021E4D90 + str r1, [r0, #0xc] + bx r3 + nop +_021E4B40: .word MOD05_021E4D90 + + thumb_func_start MOD05_021E4B44 +MOD05_021E4B44: ; 0x021E4B44 + push {r3, r4, lr} + sub sp, #0x14 + ldr r4, [sp, #0x20] + str r4, [sp] + ldr r4, [sp, #0x24] + str r4, [sp, #4] + ldr r4, [sp, #0x28] + str r4, [sp, #8] + ldr r4, [sp, #0x2c] + str r4, [sp, #0xc] + ldr r4, [sp, #0x30] + str r4, [sp, #0x10] + bl MOD05_021E4DEC + add sp, #0x14 + pop {r3, r4, pc} + + thumb_func_start MOD05_021E4B64 +MOD05_021E4B64: ; 0x021E4B64 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021E4D2C + cmp r0, #0 + beq _021E4B78 + bl ErrorHandling + pop {r3, r4, r5, pc} +_021E4B78: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E4C98 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4B84 +MOD05_021E4B84: ; 0x021E4B84 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0x20 + beq _021E4B9E +_021E4B90: + add r0, r5, #0 + bl MOD05_021E4B64 + add r4, r4, #4 + ldr r1, [r4] + cmp r1, #0x20 + bne _021E4B90 +_021E4B9E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E4BA0 +MOD05_021E4BA0: ; 0x021E4BA0 + ldr r3, _021E4BA4 ; =MOD05_021E4DB4 + bx r3 + .balign 4, 0 +_021E4BA4: .word MOD05_021E4DB4 + + thumb_func_start MOD05_021E4BA8 +MOD05_021E4BA8: ; 0x021E4BA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r4, [r5, #0x14] + bl MOD05_021E4DA0 + add r0, r5, #0 + bl MOD05_021E4CDC + add r0, r5, #0 + bl MOD05_021E4E5C + add r0, r5, #0 + bl MOD05_021E4C48 + ldr r1, [r5, #0x1c] + add r0, r4, #0 + bl MOD05_021F5A5C + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F5A5C + add r0, r4, #0 + bl MOD05_021F59EC + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E4BDC +MOD05_021E4BDC: ; 0x021E4BDC + ldr r3, _021E4BE4 ; =MOD05_021F5A20 + ldr r0, [r0, #0x14] + bx r3 + nop +_021E4BE4: .word MOD05_021F5A20 + + thumb_func_start MOD05_021E4BE8 +MOD05_021E4BE8: ; 0x021E4BE8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r3, #0 + bl MOD05_021E4BDC + add r1, r4, #0 + add r2, r5, #0 + add r6, r0, #0 + bl Call_FillMemWithValue + add r0, r6, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E4C00 +MOD05_021E4C00: ; 0x021E4C00 + ldr r3, _021E4C04 ; =0x02016A19 + bx r3 + .balign 4, 0 +_021E4C04: .word 0x02016A19 + + thumb_func_start MOD05_021E4C08 +MOD05_021E4C08: ; 0x021E4C08 + push {r3, lr} + bl MOD05_021E4D2C + cmp r0, #0 + bne _021E4C1A + bl ErrorHandling + mov r0, #0 + pop {r3, pc} +_021E4C1A: + ldr r0, [r0, #4] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4C20 +MOD05_021E4C20: ; 0x021E4C20 + ldr r0, [r0, #0x18] + bx lr + + thumb_func_start MOD05_021E4C24 +MOD05_021E4C24: ; 0x021E4C24 + push {r3, lr} + bl FUN_02058738 + ldr r0, [r0, #0x3c] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4C30 +MOD05_021E4C30: ; 0x021E4C30 + ldr r0, [r0, #4] + bx lr + + thumb_func_start MOD05_021E4C34 +MOD05_021E4C34: ; 0x021E4C34 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E4C30 + add r1, r0, #0 + mov r0, #0x6b + bl FUN_02006670 + str r0, [r4, #0x20] + pop {r4, pc} + + thumb_func_start MOD05_021E4C48 +MOD05_021E4C48: ; 0x021E4C48 + ldr r3, _021E4C50 ; =0x020066F5 + ldr r0, [r0, #0x20] + bx r3 + nop +_021E4C50: .word 0x020066F5 + + thumb_func_start MOD05_021E4C54 +MOD05_021E4C54: ; 0x021E4C54 + ldr r3, _021E4C5C ; =0x020067D1 + ldr r0, [r0, #0x20] + bx r3 + nop +_021E4C5C: .word 0x020067D1 + + thumb_func_start MOD05_021E4C60 +MOD05_021E4C60: ; 0x021E4C60 + ldr r3, _021E4C68 ; =0x02006775 + ldr r0, [r0, #0x20] + bx r3 + nop +_021E4C68: .word 0x02006775 + + thumb_func_start MOD05_021E4C6C +MOD05_021E4C6C: ; 0x021E4C6C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r3, r2, #0 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x20] + add r2, r4, #0 + bl MOD05_021F5AB8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E4C80 +MOD05_021E4C80: ; 0x021E4C80 + push {r3, r4, r5, lr} + ldr r4, [r0, #8] + ldr r5, [r0, #0x1c] + cmp r4, #0 + beq _021E4C96 +_021E4C8A: + add r0, r5, #0 + bl MOD05_021E4D44 + add r5, #8 + sub r4, r4, #1 + bne _021E4C8A +_021E4C96: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E4C98 +MOD05_021E4C98: ; 0x021E4C98 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD05_021E4D68 + add r1, r0, #0 + ldr r1, [r1, #4] + add r0, r5, #0 + blx r1 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021E4D04 + add r1, r6, #0 + add r2, r4, #0 + bl MOD05_021E4D50 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4CC0 +MOD05_021E4CC0: ; 0x021E4CC0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + bl MOD05_021E4D68 + add r1, r0, #0 + ldr r0, [r4, #4] + ldr r1, [r1, #8] + blx r1 + add r0, r4, #0 + bl MOD05_021E4D44 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4CDC +MOD05_021E4CDC: ; 0x021E4CDC + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r4, [r6, #8] + ldr r5, [r6, #0x1c] + cmp r4, #0 + beq _021E4D00 +_021E4CE8: + add r0, r5, #0 + bl MOD05_021E4D58 + cmp r0, #0 + bne _021E4CFA + add r0, r6, #0 + add r1, r5, #0 + bl MOD05_021E4CC0 +_021E4CFA: + add r5, #8 + sub r4, r4, #1 + bne _021E4CE8 +_021E4D00: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4D04 +MOD05_021E4D04: ; 0x021E4D04 + push {r3, r4, r5, lr} + ldr r4, [r0, #8] + ldr r5, [r0, #0x1c] + cmp r4, #0 + beq _021E4D22 +_021E4D0E: + add r0, r5, #0 + bl MOD05_021E4D58 + cmp r0, #1 + bne _021E4D1C + add r0, r5, #0 + pop {r3, r4, r5, pc} +_021E4D1C: + add r5, #8 + sub r4, r4, #1 + bne _021E4D0E +_021E4D22: + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4D2C +MOD05_021E4D2C: ; 0x021E4D2C + ldr r3, [r0, #8] + ldr r0, [r0, #0x1c] + cmp r3, #0 + beq _021E4D40 +_021E4D34: + ldr r2, [r0] + cmp r2, r1 + beq _021E4D42 + add r0, #8 + sub r3, r3, #1 + bne _021E4D34 +_021E4D40: + mov r0, #0 +_021E4D42: + bx lr + + thumb_func_start MOD05_021E4D44 +MOD05_021E4D44: ; 0x021E4D44 + mov r1, #0x20 + str r1, [r0] + mov r1, #0 + str r1, [r0, #4] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E4D50 +MOD05_021E4D50: ; 0x021E4D50 + str r1, [r0] + str r2, [r0, #4] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E4D58 +MOD05_021E4D58: ; 0x021E4D58 + ldr r0, [r0] + cmp r0, #0x20 + bne _021E4D62 + mov r0, #1 + bx lr +_021E4D62: + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E4D68 +MOD05_021E4D68: ; 0x021E4D68 + push {r3, lr} + ldr r1, _021E4D8C ; =0x021FC820 + ldr r2, [r1] + cmp r2, #0x20 + beq _021E4D82 +_021E4D72: + cmp r2, r0 + bne _021E4D7A + add r0, r1, #0 + pop {r3, pc} +_021E4D7A: + add r1, #0xc + ldr r2, [r1] + cmp r2, #0x20 + bne _021E4D72 +_021E4D82: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + nop +_021E4D8C: .word 0x021FC820 + + thumb_func_start MOD05_021E4D90 +MOD05_021E4D90: ; 0x021E4D90 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r1, [r4, #0xc] + bl FUN_020643C0 + str r0, [r4, #0x24] + pop {r4, pc} + + thumb_func_start MOD05_021E4DA0 +MOD05_021E4DA0: ; 0x021E4DA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _021E4DB2 + bl FUN_020643F0 + mov r0, #0 + str r0, [r4, #0x24] +_021E4DB2: + pop {r4, pc} + + thumb_func_start MOD05_021E4DB4 +MOD05_021E4DB4: ; 0x021E4DB4 + push {r3, lr} + ldr r0, [r0, #0x24] + cmp r0, #0 + beq _021E4DC0 + bl FUN_02064584 +_021E4DC0: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4DC4 +MOD05_021E4DC4: ; 0x021E4DC4 + push {r4, lr} + sub sp, #8 + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r4, [sp, #0x14] + str r4, [sp, #4] + ldr r0, [r0, #0x24] + bl FUN_020644E4 + add r4, r0, #0 + bne _021E4DDE + bl ErrorHandling +_021E4DDE: + add r0, r4, #0 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD05_021E4DE4 +MOD05_021E4DE4: ; 0x021E4DE4 + ldr r3, _021E4DE8 ; =0x02064521 + bx r3 + .balign 4, 0 +_021E4DE8: .word 0x02064521 + + thumb_func_start MOD05_021E4DEC +MOD05_021E4DEC: ; 0x021E4DEC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r2, #0 + add r5, r1, #0 + mov r2, #0 + str r3, [sp] + mov r1, #0x24 + add r3, r2, #0 + add r7, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r4, [r7, #0x28] + str r5, [r4] + ldr r0, [sp] + strh r6, [r4, #4] + strh r0, [r4, #6] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x28] + strh r0, [r4, #8] + ldr r0, [sp, #0x24] + ldr r3, [sp] + strh r0, [r4, #0xa] + add r0, r5, #0 + mov r1, #0x45 + bl MOD05_021F5990 + str r0, [r4, #0x10] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x20] + add r0, r5, #0 + mov r1, #0x46 + bl MOD05_021F5990 + str r0, [r4, #0x14] + ldr r0, [sp, #0x24] + add r1, r5, #0 + bl FUN_02020E90 + str r0, [r4, #0x18] + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021E4F60 + add r0, r7, #0 + str r6, [sp, #4] + bl MOD05_021E4C30 + str r0, [sp, #8] + add r0, sp, #4 + bl FUN_0201F1B4 + str r0, [r4, #0xc] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E4E5C +MOD05_021E4E5C: ; 0x021E4E5C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r5, [r4, #0x28] + cmp r5, #0 + beq _021E4E8E + ldr r0, [r5, #0xc] + bl FUN_0201F23C + add r0, r5, #0 + bl MOD05_021E4F94 + ldr r0, [r5, #0x10] + bl MOD05_021F59EC + ldr r0, [r5, #0x14] + bl MOD05_021F59EC + ldr r0, [r5, #0x18] + bl FUN_02020ED4 + add r0, r5, #0 + bl MOD05_021E4C00 + mov r0, #0 + str r0, [r4, #0x28] +_021E4E8E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E4E90 +MOD05_021E4E90: ; 0x021E4E90 + push {r4, lr} + sub sp, #0x20 + ldr r0, [r0, #0x28] + add r3, sp, #8 + ldr r0, [r0, #0xc] + str r0, [sp] + str r1, [sp, #4] + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + add r2, sp, #0x14 + str r0, [r3] + ldr r3, _021E4EE0 ; =0x021F7564 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, sp, #0 + bl FUN_0201F6E8 + add r4, r0, #0 + bne _021E4EC0 + bl ErrorHandling +_021E4EC0: + cmp r4, #0 + beq _021E4EDA + add r0, r4, #0 + bl FUN_0201F8E0 + mov r1, #1 + bl FUN_020BB9F4 + add r0, r4, #0 + bl FUN_0201F8E0 + bl MOD05_021DB5EC +_021E4EDA: + add r0, r4, #0 + add sp, #0x20 + pop {r4, pc} + .balign 4, 0 +_021E4EE0: .word 0x021F7564 + + thumb_func_start MOD05_021E4EE4 +MOD05_021E4EE4: ; 0x021E4EE4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x28] + add r4, r2, #0 + bl MOD05_021E504C + add r1, r0, #0 + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021E4E90 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E4EFC +MOD05_021E4EFC: ; 0x021E4EFC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r5, [r0, #0x28] + add r6, r1, #0 + ldr r0, [r5, #0x10] + add r1, r2, #0 + add r4, r3, #0 + bl MOD05_021F5A90 + add r7, r0, #0 + ldr r0, [r5, #0x14] + add r1, r4, #0 + bl MOD05_021F5A90 + add r1, sp, #0xc + bl FUN_0202227C + ldr r0, [r5, #0x18] + ldr r1, [sp, #0x30] + bl FUN_02021050 + add r4, r0, #0 + bne _021E4F2E + bl ErrorHandling +_021E4F2E: + add r0, r4, #0 + bl FUN_020210AC + ldr r1, [sp, #0x34] + cmp r1, #1 + bne _021E4F3C + mov r4, #0 +_021E4F3C: + str r0, [sp] + ldr r0, [sp, #0x38] + str r4, [sp, #4] + str r0, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + add r3, sp, #0xc + bl MOD05_021E4FC8 + add r4, r0, #0 + bne _021E4F58 + bl ErrorHandling +_021E4F58: + add r0, r4, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4F60 +MOD05_021E4F60: ; 0x021E4F60 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r5, r2, #0 + mov r1, #0x28 + add r7, r0, #0 + mul r1, r5 + mov r2, #0 + bl MOD05_021E4BDC + add r4, r0, #0 + add r0, r7, #0 + lsl r1, r5, #3 + mov r2, #0 + str r4, [r6, #0x20] + bl MOD05_021E4BDC + str r0, [r6, #0x1c] + mov r1, #0xe +_021E4F84: + str r1, [r0] + str r4, [r0, #4] + add r0, #8 + add r4, #0x28 + sub r5, r5, #1 + bne _021E4F84 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4F94 +MOD05_021E4F94: ; 0x021E4F94 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + bl MOD05_021E4C00 + ldr r0, [r4, #0x20] + bl MOD05_021E4C00 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4FA8 +MOD05_021E4FA8: ; 0x021E4FA8 + push {r3, lr} + ldrh r2, [r0, #4] + ldr r3, [r0, #0x1c] +_021E4FAE: + ldr r0, [r3] + cmp r0, r1 + bne _021E4FBA + mov r0, #0xe + str r0, [r3] + pop {r3, pc} +_021E4FBA: + add r3, #8 + sub r2, r2, #1 + bne _021E4FAE + bl ErrorHandling + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E4FC8 +MOD05_021E4FC8: ; 0x021E4FC8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldrh r5, [r6, #4] + add r0, r1, #0 + ldr r1, [sp, #0x1c] + str r2, [sp] + ldr r6, [r6, #0x1c] + add r7, r3, #0 + str r1, [sp, #0x1c] + mov r4, #0 + add r2, r5, #0 + add r3, r6, #0 +_021E4FE0: + ldr r1, [r3] + cmp r1, r0 + bne _021E4FEA + ldr r0, [r3, #4] + pop {r3, r4, r5, r6, r7, pc} +_021E4FEA: + add r3, #8 + sub r2, r2, #1 + bne _021E4FE0 +_021E4FF0: + ldr r1, [r6] + cmp r1, #0xe + bne _021E4FFC + str r0, [r6] + ldr r4, [r6, #4] + b _021E5002 +_021E4FFC: + add r6, #8 + sub r5, r5, #1 + bne _021E4FF0 +_021E5002: + cmp r4, #0 + bne _021E500A + bl ErrorHandling +_021E500A: + add r0, r4, #0 + mov r1, #0 + mov r2, #0x28 + bl Call_FillMemWithValue + ldr r0, [sp] + add r2, r4, #0 + str r0, [r4] + add r2, #0xc + ldmia r7!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r7!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [sp, #0x18] + str r0, [r4, #4] + ldr r0, [sp, #0x1c] + cmp r0, #0 + beq _021E5044 + bl FUN_020211AC + str r0, [r4, #0x1c] + ldr r0, [sp, #0x1c] + bl FUN_020211BC + str r0, [r4, #0x20] + ldr r0, [sp, #0x1c] + bl FUN_020211CC + str r0, [r4, #0x24] +_021E5044: + ldr r0, [sp, #0x20] + str r0, [r4, #8] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E504C +MOD05_021E504C: ; 0x021E504C + push {r3, lr} + ldrh r2, [r0, #4] + ldr r3, [r0, #0x1c] +_021E5052: + ldr r0, [r3] + cmp r0, r1 + bne _021E505C + ldr r0, [r3, #4] + pop {r3, pc} +_021E505C: + add r3, #8 + sub r2, r2, #1 + bne _021E5052 + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E506C +MOD05_021E506C: ; 0x021E506C + ldr r3, _021E5074 ; =MOD05_021E4FA8 + ldr r0, [r0, #0x28] + bx r3 + nop +_021E5074: .word MOD05_021E4FA8 + + thumb_func_start MOD05_021E5078 +MOD05_021E5078: ; 0x021E5078 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #0x28] + add r3, r2, #0 + ldr r0, [r0, #0x10] + ldr r2, [r4, #0x20] + bl MOD05_021F5AE4 + add sp, #4 + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5094 +MOD05_021E5094: ; 0x021E5094 + ldr r0, [r0, #0x28] + ldr r3, _021E509C ; =MOD05_021F5A90 + ldr r0, [r0, #0x10] + bx r3 + .balign 4, 0 +_021E509C: .word MOD05_021F5A90 + + thumb_func_start MOD05_021E50A0 +MOD05_021E50A0: ; 0x021E50A0 + ldr r0, [r0, #0x28] + ldr r3, _021E50A8 ; =MOD05_021F5A74 + ldr r0, [r0, #0x10] + bx r3 + .balign 4, 0 +_021E50A8: .word MOD05_021F5A74 + + thumb_func_start MOD05_021E50AC +MOD05_021E50AC: ; 0x021E50AC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #0x28] + add r3, r2, #0 + ldr r0, [r0, #0x14] + ldr r2, [r4, #0x20] + bl MOD05_021F5AE4 + add sp, #4 + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E50C8 +MOD05_021E50C8: ; 0x021E50C8 + ldr r0, [r0, #0x28] + ldr r3, _021E50D0 ; =MOD05_021F5A74 + ldr r0, [r0, #0x14] + bx r3 + .balign 4, 0 +_021E50D0: .word MOD05_021F5A74 + + thumb_func_start MOD05_021E50D4 +MOD05_021E50D4: ; 0x021E50D4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r6, r1, #0 + add r1, r2, #0 + ldr r4, [r5, #0x28] + mov r2, #1 + add r7, r3, #0 + bl MOD05_021E4C6C + str r0, [sp, #4] + add r0, r5, #0 + bl MOD05_021E4C30 + str r0, [sp] + ldr r0, [r4, #0x18] + ldr r1, [sp, #4] + add r2, r6, #0 + add r3, r7, #0 + bl FUN_02020F54 + cmp r0, #0 + bne _021E5106 + bl ErrorHandling +_021E5106: + ldr r2, [r4, #0x18] + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021E5120 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E5114 +MOD05_021E5114: ; 0x021E5114 + ldr r0, [r0, #0x28] + ldr r3, _021E511C ; =0x02020FF1 + ldr r0, [r0, #0x18] + bx r3 + .balign 4, 0 +_021E511C: .word 0x02020FF1 + + thumb_func_start MOD05_021E5120 +MOD05_021E5120: ; 0x021E5120 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + mov r1, #0xc + mov r2, #1 + bl MOD05_021E4BDC + add r4, r0, #0 + mov r0, #1 + str r0, [r4] + str r5, [r4, #4] + ldr r0, _021E5150 ; =MOD05_021E5158 + add r1, r4, #0 + mov r2, #0xff + str r6, [r4, #8] + bl FUN_0200CA60 + ldr r0, _021E5154 ; =MOD05_021E5174 + add r1, r4, #0 + mov r2, #0xff + bl FUN_0200CA98 + pop {r4, r5, r6, pc} + nop +_021E5150: .word MOD05_021E5158 +_021E5154: .word MOD05_021E5174 + + thumb_func_start MOD05_021E5158 +MOD05_021E5158: ; 0x021E5158 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + ldr r1, [r4, #4] + bl FUN_020210F0 + mov r0, #1 + str r0, [r4] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5174 +MOD05_021E5174: ; 0x021E5174 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #1 + bne _021E5194 + ldr r0, [r4, #8] + ldr r1, [r4, #4] + bl FUN_02021158 + add r0, r4, #0 + bl MOD05_021E4C00 + add r0, r5, #0 + bl FUN_0200CAB4 +_021E5194: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5198 +MOD05_021E5198: ; 0x021E5198 + push {r4, r5, r6, lr} + add r4, r3, #0 + ldr r0, [r4] + add r6, r1, #0 + add r5, r2, #0 + bl FUN_020BC0FC + cmp r0, #0 + beq _021E51C8 + bl FUN_0201B254 + cmp r0, #0 + bne _021E51C8 + ldr r0, [r4] + ldr r1, [r0, #8] + bl DC_FlushRange + ldr r0, [r4] + bl FUN_020BB59C + cmp r0, #0 + bne _021E51C8 + bl ErrorHandling +_021E51C8: + ldr r0, [r4] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r5] + cmp r5, #0 + bne _021E51E0 + bl ErrorHandling +_021E51E0: + ldr r1, [r5] + add r0, r6, #0 + bl FUN_020B80B4 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E51EC +MOD05_021E51EC: ; 0x021E51EC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r3, #0 + bl MOD05_021E4C6C + ldr r3, [sp, #0x14] + ldr r2, [sp, #0x10] + str r0, [r3] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E5198 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5208 +MOD05_021E5208: ; 0x021E5208 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0201B3C4 + ldr r0, [r4] + ldr r1, [r4, #0xc] + bl FUN_0201B3A8 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E5224 +MOD05_021E5224: ; 0x021E5224 + push {r4, lr} + add r4, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + bl MOD05_021E4C6C + str r0, [r4] + bl FUN_020BC13C + str r0, [r4, #4] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #8] + ldr r0, [r4] + bl FUN_020BC0FC + str r0, [r4, #0xc] + cmp r0, #0 + beq _021E525A + mov r2, #1 + ldr r0, _021E525C ; =MOD05_021E5208 + add r1, r4, #0 + lsl r2, r2, #0xa + bl FUN_0200CA60 +_021E525A: + pop {r4, pc} + .balign 4, 0 +_021E525C: .word MOD05_021E5208 + + thumb_func_start MOD05_021E5260 +MOD05_021E5260: ; 0x021E5260 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + add r6, r3, #0 + bl MOD05_021E4C6C + str r0, [r5] + mov r1, #0 + bl FUN_020BC4C8 + str r0, [r5, #4] + ldr r1, [r5, #4] + ldr r2, [r4, #8] + add r0, r6, #0 + bl FUN_020BB8D0 + str r0, [r5, #8] + ldr r1, [r5, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + bl FUN_020B8110 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5294 +MOD05_021E5294: ; 0x021E5294 + push {r4, lr} + add r4, r1, #0 + bl MOD05_021E4C30 + add r1, r0, #0 + add r0, r4, #0 + mov r2, #0x20 + bl FUN_02016B20 + pop {r4, pc} + + thumb_func_start MOD05_021E52A8 +MOD05_021E52A8: ; 0x021E52A8 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD05_021E52D4 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E52C4 +MOD05_021E52C4: ; 0x021E52C4 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E52F4 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E52D4 +MOD05_021E52D4: ; 0x021E52D4 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x11 + mov r2, #0 + add r3, r3, #4 + bl MOD05_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD05_021E52F4 +MOD05_021E52F4: ; 0x021E52F4 + ldr r3, _021E52FC ; =MOD05_021E4C00 + ldr r0, [r0, #0x5c] + bx r3 + nop +_021E52FC: .word MOD05_021E4C00 + + thumb_func_start MOD05_021E5300 +MOD05_021E5300: ; 0x021E5300 + push {r3, r4, r5, lr} + mov r1, #0xbe + mov r2, #0 + lsl r1, r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD05_021E532C + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E531C +MOD05_021E531C: ; 0x021E531C + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E5398 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E532C +MOD05_021E532C: ; 0x021E532C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r1, _021E5390 ; =0x00000B5C + str r0, [sp, #8] + add r6, r0, r1 + sub r1, #0x84 + mov r4, #0 + add r5, r0, r1 + add r7, r0, #4 +_021E533E: + str r5, [sp] + ldr r0, [sp, #8] + str r6, [sp, #4] + add r1, r4, #0 + ldr r0, [r0] + add r1, #0x1a + mov r2, #0 + add r3, r7, #0 + bl MOD05_021E51EC + add r4, r4, #1 + add r6, r6, #4 + add r5, r5, #4 + add r7, #0x54 + cmp r4, #0x20 + blt _021E533E + ldr r2, _021E5394 ; =0x00000AD8 + ldr r1, [sp, #8] + lsl r0, r4, #2 + add r1, r1, r2 + add r1, r1, r0 + str r1, [sp] + ldr r1, [sp, #8] + add r2, #0x84 + add r1, r1, r2 + add r0, r1, r0 + ldr r3, [sp, #8] + str r0, [sp, #4] + ldr r0, [sp, #8] + add r5, r3, #4 + mov r3, #0x54 + mul r3, r4 + ldr r0, [r0] + mov r1, #0x19 + mov r2, #0 + add r3, r5, r3 + bl MOD05_021E51EC + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021E5390: .word 0x00000B5C +_021E5394: .word 0x00000AD8 + + thumb_func_start MOD05_021E5398 +MOD05_021E5398: ; 0x021E5398 + push {r4, r5, r6, lr} + ldr r6, _021E53B0 ; =0x00000B5C + add r5, r0, #0 + mov r4, #0 +_021E53A0: + ldr r0, [r5, r6] + bl MOD05_021E4C00 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x21 + blt _021E53A0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E53B0: .word 0x00000B5C + + thumb_func_start MOD05_021E53B4 +MOD05_021E53B4: ; 0x021E53B4 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + ldr r0, [r5, #0x3c] + add r4, r1, #0 + mov r1, #3 + add r6, r2, #0 + add r7, r3, #0 + str r0, [sp, #8] + str r0, [sp, #0x24] + bl MOD05_021E4C08 + str r0, [sp, #0x28] + mov r0, #9 + mov r3, #0 + lsl r1, r4, #0x10 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0xc] + lsl r0, r6, #0x10 + str r0, [sp, #0x14] + str r4, [sp, #0x18] + str r6, [sp, #0x1c] + str r5, [sp, #0x20] + str r3, [sp, #0x10] + add r0, sp, #0x18 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, _021E541C ; =0x021F757C + add r2, sp, #0xc + bl MOD05_021E4DC4 + add r5, r0, #0 + beq _021E5416 + bl FUN_02064738 + add r4, r0, #0 + ldr r0, [sp, #0x40] + str r0, [r4, #0x54] + add r0, r7, #0 + bl _fflt + str r0, [r4, #0x58] + add r0, r7, #0 + bl _fflt + str r0, [r4, #0x5c] +_021E5416: + add r0, r5, #0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E541C: .word 0x021F757C + + thumb_func_start MOD05_021E5420 +MOD05_021E5420: ; 0x021E5420 + push {r3, r4, r5, r6, lr} + sub sp, #4 + ldr r4, [sp, #0x18] + add r5, r3, #0 + str r4, [sp] + bl MOD05_021E53B4 + add r6, r0, #0 + beq _021E5444 + bl FUN_02064738 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x58] + add r0, r5, #0 + bl _fflt + str r0, [r4, #0x5c] +_021E5444: + add r0, r6, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E544C +MOD05_021E544C: ; 0x021E544C + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x6c + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x6c] + lsl r1, r0, #0x10 + mov r0, #9 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #0x70] + add r1, sp, #0 + lsl r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #4] + add r0, r5, #0 + bl FUN_0206476C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5490 +MOD05_021E5490: ; 0x021E5490 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E5494 +MOD05_021E5494: ; 0x021E5494 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x58] + ldr r1, [r4, #0x5c] + bl _fls + bhs _021E54B6 + ldr r0, [r4, #0x58] + bl _f2d + ldr r2, _021E54B8 ; =0x9999999A + ldr r3, _021E54BC ; =0x3FC99999 + bl _dadd + bl _d2f + str r0, [r4, #0x58] +_021E54B6: + pop {r4, pc} + .balign 4, 0 +_021E54B8: .word 0x9999999A +_021E54BC: .word 0x3FC99999 + + thumb_func_start MOD05_021E54C0 +MOD05_021E54C0: ; 0x021E54C0 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + ldr r5, _021E555C ; =0x021F7570 + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _021E5560 ; =0x021F7590 + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_021E54DA: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _021E54DA + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + ldr r0, [sp, #0x24] + bl _fflt + ldr r1, [r4, #0x58] + bl _fmul + bl _ffix + str r0, [sp, #0x24] + ldr r0, [sp, #0x28] + bl _fflt + ldr r1, [r4, #0x58] + bl _fmul + bl _ffix + str r0, [sp, #0x28] + ldr r0, [sp, #0x2c] + bl _fflt + ldr r1, [r4, #0x58] + bl _fmul + bl _ffix + str r0, [sp, #0x2c] + mov r0, #2 + ldr r1, [sp, #0x30] + lsl r0, r0, #0xa + sub r1, r1, r0 + str r1, [sp, #0x30] + ldr r1, [sp, #0x34] + lsl r0, r0, #1 + sub r0, r1, r0 + str r0, [sp, #0x34] + mov r0, #5 + ldr r1, [sp, #0x38] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4, #0x7c] + ldr r1, [r4, #0x54] + add r2, r0, #4 + mov r0, #0x54 + mul r0, r1 + add r0, r2, r0 + add r1, sp, #0x30 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_021E555C: .word 0x021F7570 +_021E5560: .word 0x021F7590 + + thumb_func_start MOD05_021E5564 +MOD05_021E5564: ; 0x021E5564 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD05_021E5590 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5580 +MOD05_021E5580: ; 0x021E5580 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E55B0 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E5590 +MOD05_021E5590: ; 0x021E5590 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x15 + mov r2, #0 + add r3, r3, #4 + bl MOD05_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD05_021E55B0 +MOD05_021E55B0: ; 0x021E55B0 + ldr r3, _021E55B8 ; =MOD05_021E4C00 + ldr r0, [r0, #0x5c] + bx r3 + nop +_021E55B8: .word MOD05_021E4C00 + + thumb_func_start MOD05_021E55BC +MOD05_021E55BC: ; 0x021E55BC + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x6c + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4, #8] + bl MOD05_021E55E8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E55D8 +MOD05_021E55D8: ; 0x021E55D8 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E5608 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E55E8 +MOD05_021E55E8: ; 0x021E55E8 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x60 + str r0, [sp] + add r0, r3, #0 + add r0, #0x64 + str r0, [sp, #4] + ldr r0, [r3, #8] + mov r1, #0x16 + mov r2, #0 + add r3, #0xc + bl MOD05_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD05_021E5608 +MOD05_021E5608: ; 0x021E5608 + ldr r3, _021E5610 ; =MOD05_021E4C00 + ldr r0, [r0, #0x64] + bx r3 + nop +_021E5610: .word MOD05_021E4C00 + + thumb_func_start MOD05_021E5614 +MOD05_021E5614: ; 0x021E5614 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl MOD05_021E4C24 + add r4, r0, #0 + mov r1, #5 + str r4, [sp, #0x14] + bl MOD05_021E4C08 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x1c] + bl FUN_02058B5C + add r0, sp, #0x14 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r1, _021E564C ; =0x021F75C0 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl MOD05_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E564C: .word 0x021F75C0 + + thumb_func_start MOD05_021E5650 +MOD05_021E5650: ; 0x021E5650 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x30 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x38] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x38] + bl FUN_02058450 + str r0, [r4, #0xc] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + ldr r0, [r4, #0x38] + add r1, sp, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5698 +MOD05_021E5698: ; 0x021E5698 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E569C +MOD05_021E569C: ; 0x021E569C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x38] + ldr r1, [r4, #8] + add r5, r0, #0 + ldr r2, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _021E56B8 + bl ErrorHandling +_021E56B8: + ldr r0, [r4] + cmp r0, #0 + beq _021E56C8 + cmp r0, #1 + beq _021E56E6 + add sp, #0xc + cmp r0, #2 + pop {r3, r4, r5, r6, pc} +_021E56C8: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02058B5C + mov r0, #0xa + ldr r1, [sp, #8] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021E56E6: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x1e + blt _021E56F6 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E56F6: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E56FC +MOD05_021E56FC: ; 0x021E56FC + push {r4, r5, r6, lr} + sub sp, #0x60 + ldr r5, _021E5774 ; =0x021F75B4 + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x48 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _021E5778 ; =0x021F75D4 + str r0, [r3] + add r5, sp, #0x24 + mov r3, #4 +_021E5716: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _021E5716 + ldr r0, [r6] + add r1, sp, #0x54 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + mov r0, #0x19 + ldr r1, [sp, #0x58] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x58] + mov r0, #5 + ldr r1, [sp, #0x5c] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x5c] + bl FUN_020B8344 + mov r2, #0 + add r5, r0, #0 + add r0, sp, #0x24 + mov r1, #0x5a + add r3, r2, #0 + bl FUN_0201CB20 + add r0, r5, #0 + add r1, sp, #0 + bl MI_Copy36B + add r0, sp, #0x24 + add r1, sp, #0 + add r2, r0, #0 + bl MTX_Concat33 + ldr r0, [r4, #0x34] + add r1, sp, #0x54 + add r0, #0xc + add r2, sp, #0x24 + add r3, sp, #0x48 + bl FUN_0201B2A8 + add sp, #0x60 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E5774: .word 0x021F75B4 +_021E5778: .word 0x021F75D4 + + thumb_func_start MOD05_021E577C +MOD05_021E577C: ; 0x021E577C + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x6c + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4, #8] + bl MOD05_021E57A8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5798 +MOD05_021E5798: ; 0x021E5798 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E57C8 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E57A8 +MOD05_021E57A8: ; 0x021E57A8 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x60 + str r0, [sp] + add r0, r3, #0 + add r0, #0x64 + str r0, [sp, #4] + ldr r0, [r3, #8] + mov r1, #0x17 + mov r2, #0 + add r3, #0xc + bl MOD05_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD05_021E57C8 +MOD05_021E57C8: ; 0x021E57C8 + ldr r3, _021E57D0 ; =MOD05_021E4C00 + ldr r0, [r0, #0x64] + bx r3 + nop +_021E57D0: .word MOD05_021E4C00 + + thumb_func_start MOD05_021E57D4 +MOD05_021E57D4: ; 0x021E57D4 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl MOD05_021E4C24 + add r4, r0, #0 + mov r1, #6 + str r4, [sp, #0x14] + bl MOD05_021E4C08 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x1c] + bl FUN_02058B5C + add r0, sp, #0x14 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r1, _021E580C ; =0x021F7604 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl MOD05_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E580C: .word 0x021F7604 + + thumb_func_start MOD05_021E5810 +MOD05_021E5810: ; 0x021E5810 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x30 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x38] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x38] + bl FUN_02058450 + str r0, [r4, #0xc] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + ldr r0, [r4, #0x38] + add r1, sp, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5858 +MOD05_021E5858: ; 0x021E5858 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E585C +MOD05_021E585C: ; 0x021E585C + push {r4, r5, lr} + sub sp, #0xc + add r2, r1, #0 + ldr r5, [r2, #0x38] + ldr r1, [r2, #8] + add r4, r0, #0 + ldr r2, [r2, #0xc] + add r0, r5, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _021E5878 + bl ErrorHandling +_021E5878: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B5C + mov r0, #0xa + ldr r1, [sp, #8] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5898 +MOD05_021E5898: ; 0x021E5898 + push {r4, r5, r6, lr} + sub sp, #0x60 + ldr r5, _021E5910 ; =0x021F75F8 + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x48 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _021E5914 ; =0x021F7618 + str r0, [r3] + add r5, sp, #0x24 + mov r3, #4 +_021E58B2: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _021E58B2 + ldr r0, [r6] + add r1, sp, #0x54 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + mov r0, #0x19 + ldr r1, [sp, #0x58] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x58] + mov r0, #5 + ldr r1, [sp, #0x5c] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x5c] + bl FUN_020B8344 + mov r2, #0 + add r5, r0, #0 + add r0, sp, #0x24 + mov r1, #0x5a + add r3, r2, #0 + bl FUN_0201CB20 + add r0, r5, #0 + add r1, sp, #0 + bl MI_Copy36B + add r0, sp, #0x24 + add r1, sp, #0 + add r2, r0, #0 + bl MTX_Concat33 + ldr r0, [r4, #0x34] + add r1, sp, #0x54 + add r0, #0xc + add r2, sp, #0x24 + add r3, sp, #0x48 + bl FUN_0201B2A8 + add sp, #0x60 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E5910: .word 0x021F75F8 +_021E5914: .word 0x021F7618 + + thumb_func_start MOD05_021E5918 +MOD05_021E5918: ; 0x021E5918 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x6c + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4, #8] + bl MOD05_021E5944 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5934 +MOD05_021E5934: ; 0x021E5934 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E5964 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E5944 +MOD05_021E5944: ; 0x021E5944 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x60 + str r0, [sp] + add r0, r3, #0 + add r0, #0x64 + str r0, [sp, #4] + ldr r0, [r3, #8] + mov r1, #0x18 + mov r2, #0 + add r3, #0xc + bl MOD05_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD05_021E5964 +MOD05_021E5964: ; 0x021E5964 + ldr r3, _021E596C ; =MOD05_021E4C00 + ldr r0, [r0, #0x64] + bx r3 + nop +_021E596C: .word MOD05_021E4C00 + + thumb_func_start MOD05_021E5970 +MOD05_021E5970: ; 0x021E5970 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl MOD05_021E4C24 + add r4, r0, #0 + mov r1, #7 + str r4, [sp, #0x14] + bl MOD05_021E4C08 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x1c] + bl FUN_02058B5C + add r0, sp, #0x14 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r1, _021E59A8 ; =0x021F7648 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl MOD05_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E59A8: .word 0x021F7648 + + thumb_func_start MOD05_021E59AC +MOD05_021E59AC: ; 0x021E59AC + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x34 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x3c] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x3c] + bl FUN_02058450 + str r0, [r4, #0xc] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + mov r0, #0x3c + str r0, [r4, #0x30] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E59F8 +MOD05_021E59F8: ; 0x021E59F8 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E59FC +MOD05_021E59FC: ; 0x021E59FC + push {r3, r4, lr} + sub sp, #0xc + ldr r2, [r1, #0x30] + add r4, r0, #0 + cmp r2, #0 + beq _021E5A0E + sub r0, r2, #1 + str r0, [r1, #0x30] + b _021E5A16 +_021E5A0E: + bl MOD05_021E4DE4 + add sp, #0xc + pop {r3, r4, pc} +_021E5A16: + ldr r0, [r1, #0x3c] + add r1, sp, #0 + bl FUN_02058B5C + mov r0, #0xa + ldr r1, [sp, #8] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD05_021E5A34 +MOD05_021E5A34: ; 0x021E5A34 + push {r4, r5, r6, lr} + sub sp, #0x60 + ldr r5, _021E5AAC ; =0x021F763C + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x48 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _021E5AB0 ; =0x021F765C + str r0, [r3] + add r5, sp, #0x24 + mov r3, #4 +_021E5A4E: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _021E5A4E + ldr r0, [r6] + add r1, sp, #0x54 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + mov r0, #0x19 + ldr r1, [sp, #0x58] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x58] + mov r0, #5 + ldr r1, [sp, #0x5c] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x5c] + bl FUN_020B8344 + mov r2, #0 + add r5, r0, #0 + add r0, sp, #0x24 + mov r1, #0x5a + add r3, r2, #0 + bl FUN_0201CB20 + add r0, r5, #0 + add r1, sp, #0 + bl MI_Copy36B + add r0, sp, #0x24 + add r1, sp, #0 + add r2, r0, #0 + bl MTX_Concat33 + ldr r0, [r4, #0x38] + add r1, sp, #0x54 + add r0, #0xc + add r2, sp, #0x24 + add r3, sp, #0x48 + bl FUN_0201B2A8 + add sp, #0x60 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E5AAC: .word 0x021F763C +_021E5AB0: .word 0x021F765C + + thumb_func_start MOD05_021E5AB4 +MOD05_021E5AB4: ; 0x021E5AB4 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD05_021E5AE0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5AD0 +MOD05_021E5AD0: ; 0x021E5AD0 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E5B18 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E5AE0 +MOD05_021E5AE0: ; 0x021E5AE0 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x28 + bl MOD05_021E5294 + ldr r0, [r4] + add r1, r4, #4 + mov r2, #0x3a + mov r3, #0 + bl MOD05_021E5224 + mov r0, #0x71 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, r4, #0 + ldr r0, [r4] + add r2, r4, #4 + add r4, #0x28 + add r1, #0x14 + add r3, r4, #0 + bl MOD05_021E5260 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD05_021E5B18 +MOD05_021E5B18: ; 0x021E5B18 + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl MOD05_021F52C8 + add r0, r4, #0 + add r4, #0x28 + add r0, #0x14 + add r1, r4, #0 + bl MOD05_021F5358 + pop {r4, pc} + + thumb_func_start MOD05_021E5B30 +MOD05_021E5B30: ; 0x021E5B30 + push {r4, r5, lr} + sub sp, #0x1c + ldr r0, [r0, #0x3c] + add r5, r1, #0 + mov r1, #8 + add r4, r3, #0 + str r0, [sp, #8] + bl MOD05_021E4C08 + str r0, [sp, #0xc] + mov r0, #2 + lsl r1, r5, #0x10 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x10] + mov r0, #0xa + lsl r0, r0, #0xc + str r0, [sp, #0x14] + lsl r0, r4, #0x10 + str r0, [sp, #0x18] + add r0, sp, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, _021E5B78 ; =0x021F768C + add r2, sp, #0x10 + mov r3, #0 + bl MOD05_021E4DC4 + ldr r0, _021E5B7C ; =0x00000609 + bl FUN_020054C8 + add sp, #0x1c + pop {r4, r5, pc} + nop +_021E5B78: .word 0x021F768C +_021E5B7C: .word 0x00000609 + + thumb_func_start MOD05_021E5B80 +MOD05_021E5B80: ; 0x021E5B80 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + ldr r0, [r0, #4] + mov r2, #1 + str r1, [r5, #4] + str r0, [r5, #8] + ldr r0, [r5, #4] + mov r1, #0x90 + mov r3, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r4, [r5] + ldr r0, [r5, #4] + add r1, r4, #4 + bl MOD05_021E5294 + ldr r2, [r5, #8] + add r0, r4, #4 + ldr r1, [r2, #0x18] + ldr r2, [r2, #0xc] + bl FUN_020BB8D0 + str r0, [r4] + ldr r3, [r5, #8] + ldr r1, [r3, #0x18] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + bl FUN_020B8110 + ldr r1, [r5, #8] + add r0, r4, #0 + add r0, #0x18 + add r1, r1, #4 + bl MOD05_021F5400 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x18 + bl FUN_020B7EFC + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + add r4, #0x18 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD05_021F54D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021E5BF8 +MOD05_021E5BF8: ; 0x021E5BF8 + push {r4, lr} + ldr r4, [r1] + ldr r1, [r4] + add r0, r4, #4 + bl thunk_FUN_020ae84c + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E5C0C +MOD05_021E5C0C: ; 0x021E5C0C + push {r4, lr} + ldr r1, [r1] + ldr r2, [r1] + ldr r3, [r1, #0x14] + ldr r2, [r2, #8] + ldrh r2, [r2, #4] + lsl r4, r2, #0xc + mov r2, #1 + lsl r2, r2, #0xc + add r2, r3, r2 + str r2, [r1, #0x14] + cmp r2, r4 + ble _021E5C2C + bl MOD05_021E4DE4 + pop {r4, pc} +_021E5C2C: + ldr r0, [r1] + str r2, [r0] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5C34 +MOD05_021E5C34: ; 0x021E5C34 + push {r3, r4, r5, lr} + sub sp, #0x48 + ldr r4, [r1] + ldr r5, _021E5C88 ; =0x021F76A0 + add r3, sp, #0x24 + mov r2, #4 +_021E5C40: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021E5C40 + ldr r0, [r5] + str r0, [r3] + bl FUN_020B8344 + mov r2, #0 + add r5, r0, #0 + add r0, sp, #0x24 + mov r1, #0x5a + add r3, r2, #0 + bl FUN_0201CB20 + add r0, r5, #0 + add r1, sp, #0 + bl MI_Copy36B + add r0, sp, #0x24 + add r1, sp, #0 + add r2, r0, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r1, r4, #0 + add r4, #0x78 + add r0, #0x18 + add r1, #0x6c + add r2, sp, #0x24 + add r3, r4, #0 + bl FUN_0201B26C + add sp, #0x48 + pop {r3, r4, r5, pc} + nop +_021E5C88: .word 0x021F76A0 + + thumb_func_start MOD05_021E5C8C +MOD05_021E5C8C: ; 0x021E5C8C + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x3c + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4, #4] + bl MOD05_021E5CB8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5CA8 +MOD05_021E5CA8: ; 0x021E5CA8 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E5CF4 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E5CB8 +MOD05_021E5CB8: ; 0x021E5CB8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #0x2c + bl MOD05_021E5294 + add r1, r4, #0 + ldr r0, [r4, #4] + add r1, #8 + mov r2, #0x5c + mov r3, #0 + bl MOD05_021E5224 + mov r0, #0x73 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, r4, #0 + add r2, r4, #0 + ldr r0, [r4, #4] + add r4, #0x2c + add r1, #0x18 + add r2, #8 + add r3, r4, #0 + bl MOD05_021E5260 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD05_021E5CF4 +MOD05_021E5CF4: ; 0x021E5CF4 + push {r4, lr} + add r4, r0, #0 + add r0, #8 + bl MOD05_021F52C8 + add r0, r4, #0 + add r4, #0x2c + add r0, #0x18 + add r1, r4, #0 + bl MOD05_021F5358 + pop {r4, pc} + + thumb_func_start MOD05_021E5D0C +MOD05_021E5D0C: ; 0x021E5D0C + push {r4, r5, lr} + sub sp, #0x1c + ldr r0, [r0, #0x3c] + add r5, r1, #0 + mov r1, #9 + add r4, r2, #0 + str r0, [sp, #8] + bl MOD05_021E4C08 + str r0, [sp, #0xc] + mov r0, #2 + mov r3, #0 + lsl r1, r5, #0x10 + lsl r0, r0, #0xe + add r1, r1, r0 + str r1, [sp, #0x10] + lsl r1, r4, #0x10 + add r0, r1, r0 + str r0, [sp, #0x18] + str r3, [sp, #0x14] + add r0, sp, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, _021E5D4C ; =0x021F76C4 + add r2, sp, #0x10 + bl MOD05_021E4DC4 + add sp, #0x1c + pop {r4, r5, pc} + nop +_021E5D4C: .word 0x021F76C4 + + thumb_func_start MOD05_021E5D50 +MOD05_021E5D50: ; 0x021E5D50 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + ldr r0, [r0, #4] + mov r2, #1 + str r1, [r5, #4] + str r0, [r5, #8] + ldr r0, [r5, #4] + mov r1, #0x90 + mov r3, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r4, [r5] + ldr r0, [r5, #4] + add r1, r4, #4 + bl MOD05_021E5294 + ldr r2, [r5, #8] + add r0, r4, #4 + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x10] + bl FUN_020BB8D0 + str r0, [r4] + ldr r3, [r5, #8] + ldr r1, [r3, #0x1c] + ldr r2, [r3, #0x10] + ldr r3, [r3, #0x14] + bl FUN_020B8110 + ldr r1, [r5, #8] + add r0, r4, #0 + add r0, #0x18 + add r1, #8 + bl MOD05_021F5400 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x18 + bl FUN_020B7EFC + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + add r4, #0x18 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD05_021F54D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021E5DC8 +MOD05_021E5DC8: ; 0x021E5DC8 + push {r4, lr} + ldr r4, [r1] + ldr r1, [r4] + add r0, r4, #4 + bl thunk_FUN_020ae84c + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E5DDC +MOD05_021E5DDC: ; 0x021E5DDC + push {r4, lr} + ldr r1, [r1] + ldr r2, [r1] + ldr r3, [r1, #0x14] + ldr r2, [r2, #8] + ldrh r2, [r2, #4] + lsl r4, r2, #0xc + mov r2, #1 + lsl r2, r2, #0xc + add r2, r3, r2 + str r2, [r1, #0x14] + cmp r2, r4 + ble _021E5DFC + bl MOD05_021E4DE4 + pop {r4, pc} +_021E5DFC: + ldr r0, [r1] + str r2, [r0] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5E04 +MOD05_021E5E04: ; 0x021E5E04 + ldr r0, [r1] + ldr r3, _021E5E0C ; =MOD05_021F5430 + add r0, #0x18 + bx r3 + .balign 4, 0 +_021E5E0C: .word MOD05_021F5430 + + thumb_func_start MOD05_021E5E10 +MOD05_021E5E10: ; 0x021E5E10 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD05_021E5E3C + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5E2C +MOD05_021E5E2C: ; 0x021E5E2C + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E5E74 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E5E3C +MOD05_021E5E3C: ; 0x021E5E3C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x28 + bl MOD05_021E5294 + ldr r0, [r4] + add r1, r4, #4 + mov r2, #0x5b + mov r3, #0 + bl MOD05_021E5224 + mov r0, #0x72 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, r4, #0 + ldr r0, [r4] + add r2, r4, #4 + add r4, #0x28 + add r1, #0x14 + add r3, r4, #0 + bl MOD05_021E5260 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD05_021E5E74 +MOD05_021E5E74: ; 0x021E5E74 + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl MOD05_021F52C8 + add r0, r4, #0 + add r4, #0x28 + add r0, #0x14 + add r1, r4, #0 + bl MOD05_021F5358 + pop {r4, pc} + + thumb_func_start MOD05_021E5E8C +MOD05_021E5E8C: ; 0x021E5E8C + push {r3, r4, lr} + sub sp, #0x1c + add r4, r0, #0 + bl MOD05_021E4C24 + mov r1, #0xa + str r0, [sp, #8] + bl MOD05_021E4C08 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, sp, #0x10 + bl FUN_02058B5C + add r0, r4, #0 + bl FUN_020584C4 + cmp r0, #3 + bhi _021E5EF4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E5EBE: ; jump table + .short _021E5EC6 - _021E5EBE - 2 ; case 0 + .short _021E5ED2 - _021E5EBE - 2 ; case 1 + .short _021E5EEA - _021E5EBE - 2 ; case 2 + .short _021E5EDE - _021E5EBE - 2 ; case 3 +_021E5EC6: + mov r0, #1 + ldr r1, [sp, #0x18] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x18] + b _021E5EF4 +_021E5ED2: + mov r0, #1 + ldr r1, [sp, #0x18] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x18] + b _021E5EF4 +_021E5EDE: + mov r0, #1 + ldr r1, [sp, #0x10] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x10] + b _021E5EF4 +_021E5EEA: + mov r0, #1 + ldr r1, [sp, #0x10] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x10] +_021E5EF4: + add r0, r4, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, _021E5F14 ; =0x021F76D8 + add r2, sp, #0x10 + mov r3, #0 + bl MOD05_021E4DC4 + add sp, #0x1c + pop {r3, r4, pc} + nop +_021E5F14: .word 0x021F76D8 + + thumb_func_start MOD05_021E5F18 +MOD05_021E5F18: ; 0x021E5F18 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + ldr r0, [r0, #4] + mov r2, #1 + str r1, [r5, #4] + str r0, [r5, #8] + ldr r0, [r5, #4] + mov r1, #0x90 + mov r3, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r4, [r5] + ldr r0, [r5, #4] + add r1, r4, #4 + bl MOD05_021E5294 + ldr r2, [r5, #8] + add r0, r4, #4 + ldr r1, [r2, #0x18] + ldr r2, [r2, #0xc] + bl FUN_020BB8D0 + str r0, [r4] + ldr r3, [r5, #8] + ldr r1, [r3, #0x18] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + bl FUN_020B8110 + ldr r1, [r5, #8] + add r0, r4, #0 + add r0, #0x18 + add r1, r1, #4 + bl MOD05_021F5400 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x18 + bl FUN_020B7EFC + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + add r4, #0x18 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD05_021F54D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021E5F90 +MOD05_021E5F90: ; 0x021E5F90 + push {r4, lr} + ldr r4, [r1] + ldr r1, [r4] + add r0, r4, #4 + bl thunk_FUN_020ae84c + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E5FA4 +MOD05_021E5FA4: ; 0x021E5FA4 + push {r4, lr} + ldr r1, [r1] + ldr r2, [r1] + ldr r3, [r1, #0x14] + ldr r2, [r2, #8] + ldrh r2, [r2, #4] + lsl r4, r2, #0xc + mov r2, #1 + lsl r2, r2, #0xc + add r2, r3, r2 + str r2, [r1, #0x14] + cmp r2, r4 + ble _021E5FC4 + bl MOD05_021E4DE4 + pop {r4, pc} +_021E5FC4: + ldr r0, [r1] + str r2, [r0] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E5FCC +MOD05_021E5FCC: ; 0x021E5FCC + ldr r0, [r1] + ldr r3, _021E5FD4 ; =MOD05_021F5430 + add r0, #0x18 + bx r3 + .balign 4, 0 +_021E5FD4: .word MOD05_021F5430 + + thumb_func_start MOD05_021E5FD8 +MOD05_021E5FD8: ; 0x021E5FD8 + ldr r3, _021E5FDC ; =0x020553D5 + bx r3 + .balign 4, 0 +_021E5FDC: .word 0x020553D5 + + thumb_func_start MOD05_021E5FE0 +MOD05_021E5FE0: ; 0x021E5FE0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0 + bl FUN_020553E0 + ldr r5, _021E6010 ; =0x021F7734 + add r4, r0, #0 +_021E5FEE: + mov r0, #1 + tst r0, r4 + beq _021E5FFA + ldr r1, [r5] + add r0, r7, #0 + blx r1 +_021E5FFA: + add r6, r6, #1 + lsr r4, r4, #1 + add r5, r5, #4 + cmp r6, #9 + blo _021E5FEE + add r0, r7, #0 + mov r1, #0 + bl FUN_020553DC + pop {r3, r4, r5, r6, r7, pc} + nop +_021E6010: .word 0x021F7734 + + thumb_func_start MOD05_021E6014 +MOD05_021E6014: ; 0x021E6014 + push {r4, lr} + add r4, r0, #0 + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #0 + bl FUN_020555A0 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E726C + add r0, r4, #0 + mov r1, #0 + bl FUN_020553A8 + add r0, r4, #0 + bl FUN_02055410 + add r0, r4, #0 + bl FUN_02055454 + cmp r0, #0 + beq _021E6048 + bl MOD05_021E4DE4 +_021E6048: + add r0, r4, #0 + mov r1, #0 + bl FUN_02055450 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6054 +MOD05_021E6054: ; 0x021E6054 + push {r4, lr} + add r4, r0, #0 + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #1 + bl FUN_020555A0 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E726C + add r0, r4, #0 + mov r1, #1 + bl FUN_020553A8 + add r0, r4, #0 + bl FUN_02055410 + add r0, r4, #0 + bl FUN_02055454 + cmp r0, #0 + beq _021E6088 + bl MOD05_021E4DE4 +_021E6088: + add r0, r4, #0 + mov r1, #0 + bl FUN_02055450 + ldr r0, _021E6098 ; =0x00000618 + bl FUN_020054C8 + pop {r4, pc} + .balign 4, 0 +_021E6098: .word 0x00000618 + + thumb_func_start MOD05_021E609C +MOD05_021E609C: ; 0x021E609C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #2 + bl FUN_020555A0 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021E726C + add r0, r5, #0 + mov r1, #2 + bl FUN_020553A8 + add r0, r5, #0 + bl FUN_02055410 + add r0, r5, #0 + bl FUN_02055454 + cmp r0, #0 + beq _021E60D2 + bl MOD05_021E4DE4 +_021E60D2: + add r0, r5, #0 + mov r1, #0 + bl FUN_02055450 + add r0, r5, #0 + bl FUN_020552F8 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_02058738 + mov r0, #1 + mov r1, #0 + str r0, [sp] + add r0, r6, #0 + add r2, r1, #0 + add r3, r4, #0 + bl FUN_0224ABAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_02055450 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E610C +MOD05_021E610C: ; 0x021E610C + ldr r3, _021E6114 ; =0x020556C9 + mov r1, #1 + bx r3 + nop +_021E6114: .word 0x020556C9 + + thumb_func_start MOD05_021E6118 +MOD05_021E6118: ; 0x021E6118 + push {r4, lr} + add r4, r0, #0 + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #4 + bl FUN_020555A0 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E726C + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6134 +MOD05_021E6134: ; 0x021E6134 + push {r4, lr} + add r4, r0, #0 + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #6 + bl FUN_020555A0 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E726C + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6150 +MOD05_021E6150: ; 0x021E6150 + push {r4, lr} + add r4, r0, #0 + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #7 + bl FUN_020555A0 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E726C + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E616C +MOD05_021E616C: ; 0x021E616C + push {r4, lr} + add r4, r0, #0 + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #8 + bl FUN_020555A0 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E726C + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6188 +MOD05_021E6188: ; 0x021E6188 + push {r4, lr} + add r4, r0, #0 + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #9 + bl FUN_020555A0 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E726C + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E61A4 +MOD05_021E61A4: ; 0x021E61A4 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r4, r2, #0 + add r7, r3, #0 + bl FUN_020556B4 + cmp r0, #1 + bne _021E61CE + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD05_021E68D8 + cmp r0, #1 + bne _021E61CA + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E61CA: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E61CE: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02055898 + cmp r0, #0 + bne _021E61DE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E61DE: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _021E61FE + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD05_021E628C + cmp r0, #1 + bne _021E61FA + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E61FA: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E61FE: + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD05_021E6218 + cmp r0, #1 + bne _021E6212 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E6212: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6218 +MOD05_021E6218: ; 0x021E6218 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r7, r3, #0 + bl FUN_0205714C + str r0, [sp] + mov r0, #1 + tst r0, r7 + beq _021E6246 + ldr r3, [sp] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD05_021E62B4 + cmp r0, #1 + bne _021E6246 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E6246: + mov r0, #2 + tst r0, r7 + beq _021E6260 + ldr r3, [sp] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD05_021E6714 + cmp r0, #1 + bne _021E6260 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E6260: + ldr r3, [sp] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD05_021E65EC + cmp r0, #1 + bne _021E6274 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E6274: + ldr r3, [sp] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl MOD05_021E6758 + cmp r0, #1 + bne _021E6288 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E6288: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E628C +MOD05_021E628C: ; 0x021E628C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_0205714C + add r3, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021E6758 + cmp r0, #1 + bne _021E62B0 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E62B0: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E62B4 +MOD05_021E62B4: ; 0x021E62B4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + cmp r3, #1 + beq _021E62C4 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E62C4: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E727C + add r6, r0, #0 + bne _021E62D4 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E62D4: + bl FUN_02058458 + cmp r0, #0x54 + beq _021E62E0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E62E0: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02059918 + mov r1, #1 + bic r0, r1 + beq _021E62F2 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E62F2: + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + add r3, r6, #0 + bl MOD05_021E6304 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6304 +MOD05_021E6304: ; 0x021E6304 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x14 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD05_021E72B8 + add r2, r0, #0 + str r5, [r2, #4] + str r4, [r2, #8] + str r7, [r2, #0x10] + ldr r1, _021E6328 ; =MOD05_021E632C + add r0, r4, #0 + str r6, [r2, #0xc] + bl FUN_020463CC + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E6328: .word MOD05_021E632C + + thumb_func_start MOD05_021E632C +MOD05_021E632C: ; 0x021E632C + push {r4, r5, r6, lr} + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020553A0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0x10] + cmp r0, #0 + beq _021E634E + cmp r0, #1 + beq _021E639A + cmp r0, #2 + beq _021E63C0 + b _021E63CA +_021E634E: + add r0, r5, #0 + bl FUN_0205AD98 + cmp r0, #0 + beq _021E63CA + add r0, r6, #0 + bl FUN_0205AD98 + cmp r0, #0 + bne _021E636C + ldr r0, [r4, #0xc] + bl FUN_020570C4 + cmp r0, #0 + beq _021E63CA +_021E636C: + ldr r0, [r4, #4] + mov r1, #8 + bl FUN_0205AFDC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0205ADDC + ldr r0, [r4, #4] + mov r1, #0x20 + bl FUN_0205AFDC + add r1, r0, #0 + add r0, r6, #0 + bl FUN_0205ADDC + ldr r0, _021E63D0 ; =0x00000627 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E63CA +_021E639A: + add r0, r5, #0 + bl FUN_0205AE28 + cmp r0, #0 + beq _021E63CA + add r0, r6, #0 + bl FUN_0205AE28 + cmp r0, #0 + beq _021E63CA + add r0, r5, #0 + bl FUN_0205AE50 + add r0, r6, #0 + bl FUN_0205AE50 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E63C0: + add r0, r4, #0 + bl MOD05_021E72DC + mov r0, #1 + pop {r4, r5, r6, pc} +_021E63CA: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_021E63D0: .word 0x00000627 + + thumb_func_start MOD05_021E63D4 +MOD05_021E63D4: ; 0x021E63D4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x2c + add r7, r1, #0 + add r5, r2, #0 + bl MOD05_021E72B8 + add r4, r0, #0 + str r7, [r4, #4] + str r6, [r4, #0x1c] + ldr r0, [r6, #0x38] + str r0, [r4, #0x20] + bl FUN_020553A0 + add r2, r4, #0 + str r0, [r4, #0x24] + add r2, #0xc + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r6, #0x10] + ldr r1, _021E640C ; =MOD05_021E6484 + add r2, r4, #0 + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + nop +_021E640C: .word MOD05_021E6484 + + thumb_func_start MOD05_021E6410 +MOD05_021E6410: ; 0x021E6410 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r2, #0 + add r5, r1, #0 + bl FUN_02046528 + add r4, r0, #0 + add r1, r6, #0 + bl MOD05_021E72E8 + add r1, r0, #0 + add r0, r4, #0 + add r2, sp, #0 + bl MOD05_021E7228 + add r0, r4, #0 + add r1, r5, #0 + add r2, sp, #0 + bl MOD05_021E63D4 + add sp, #0x10 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E643C +MOD05_021E643C: ; 0x021E643C + push {r4, r5, r6, lr} + add r4, r2, #0 + add r5, r1, #0 + bl FUN_020553A0 + add r6, r0, #0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_0205481C + cmp r0, #1 + bne _021E647E + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054B78 + cmp r0, #1 + beq _021E646C + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054B6C + cmp r0, #1 + bne _021E647A +_021E646C: + add r0, r6, #0 + bl FUN_02058A68 + cmp r0, #1 + bne _021E647A + mov r0, #0 + pop {r4, r5, r6, pc} +_021E647A: + mov r0, #1 + pop {r4, r5, r6, pc} +_021E647E: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6484 +MOD05_021E6484: ; 0x021E6484 + push {r3, r4, r5, r6, r7, lr} + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #7 + bhi _021E64D4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E649E: ; jump table + .short _021E64AE - _021E649E - 2 ; case 0 + .short _021E64CA - _021E649E - 2 ; case 1 + .short _021E64E2 - _021E649E - 2 ; case 2 + .short _021E6500 - _021E649E - 2 ; case 3 + .short _021E6514 - _021E649E - 2 ; case 4 + .short _021E655E - _021E649E - 2 ; case 5 + .short _021E658A - _021E649E - 2 ; case 6 + .short _021E65AC - _021E649E - 2 ; case 7 +_021E64AE: + ldr r0, [r4, #0x1c] + mov r1, #0 + bl FUN_0204AB20 + ldr r0, [r4, #0x1c] + ldr r1, _021E65E8 ; =0x0000047F + mov r2, #1 + bl FUN_0204ABDC + ldr r0, [r4] + add r0, r0, #1 + add r0, r0, #1 + str r0, [r4] + b _021E65E4 +_021E64CA: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0xa + bgt _021E64D6 +_021E64D4: + b _021E65E4 +_021E64D6: + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E65E4 +_021E64E2: + ldr r0, [r4, #0xc] + cmp r0, #1 + bne _021E64FA + add r1, r4, #0 + ldr r0, [r4, #0x1c] + add r1, #0xc + bl MOD05_021E723C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E65E4 +_021E64FA: + mov r0, #4 + str r0, [r4] + b _021E65E4 +_021E6500: + add r0, r4, #0 + add r0, #0xc + bl MOD05_021E7250 + cmp r0, #1 + bne _021E65E4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E65E4 +_021E6514: + ldr r0, [r4, #0x20] + bl FUN_02055320 + add r5, r0, #0 + ldr r0, [r4, #4] + bl FUN_02059BF4 + add r6, r0, #0 + ldr r0, [r4, #0x20] + bl FUN_0205532C + add r7, r0, #0 + ldr r0, [r4, #4] + bl FUN_02059C00 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #0x24] + ldr r3, [r4, #4] + add r1, r5, r6 + add r2, r7, r2 + bl FUN_0224ABAC + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x28] + bl FUN_02055450 + ldr r0, [r4, #0x20] + mov r1, #2 + bl FUN_020553A8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E65E4 +_021E655E: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0xa + ble _021E65E4 + ldr r0, [r4, #0x20] + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #0 + bl FUN_020555A0 + add r1, r0, #0 + ldr r0, [r4, #0x20] + bl MOD05_021E726C + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E65E4 +_021E658A: + ldr r0, [r4, #0x24] + bl FUN_0205AD98 + cmp r0, #1 + bne _021E65E4 + ldr r0, [r4, #4] + mov r1, #0x34 + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r4, #0x24] + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E65E4 +_021E65AC: + ldr r0, [r4, #0x24] + bl FUN_0205AE28 + cmp r0, #0 + beq _021E65E4 + ldr r0, [r4, #0x24] + bl FUN_0205AE50 + ldr r0, [r4, #0x28] + mov r1, #1 + bl FUN_0224ADF8 + ldr r0, [r4, #0x20] + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #2 + bl FUN_020555A0 + add r1, r0, #0 + ldr r0, [r4, #0x20] + bl MOD05_021E726C + add r0, r4, #0 + bl MOD05_021E72DC + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021E65E4: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E65E8: .word 0x0000047F + + thumb_func_start MOD05_021E65EC +MOD05_021E65EC: ; 0x021E65EC + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + add r4, r2, #0 + cmp r3, #1 + bne _021E6602 + add r0, r5, #0 + bl FUN_020553C4 + cmp r0, #2 + beq _021E6606 +_021E6602: + mov r0, #0 + pop {r4, r5, r6, pc} +_021E6606: + add r0, r5, #0 + bl FUN_020553A0 + add r1, r0, #0 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_02056B74 + cmp r0, #0x20 + bne _021E661E + mov r0, #0 + pop {r4, r5, r6, pc} +_021E661E: + mov r1, #0x20 + bic r0, r1 + beq _021E6628 + mov r0, #0 + pop {r4, r5, r6, pc} +_021E6628: + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD05_021E6638 + mov r0, #1 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6638 +MOD05_021E6638: ; 0x021E6638 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x18 + add r5, r1, #0 + add r7, r2, #0 + bl MOD05_021E72B8 + add r4, r0, #0 + str r6, [r4, #4] + str r5, [r4, #8] + str r7, [r4, #0xc] + add r0, r7, #0 + bl FUN_020553A0 + str r0, [r4, #0x10] + add r0, r7, #0 + bl FUN_02055454 + str r0, [r4, #0x14] + cmp r0, #0 + bne _021E6666 + bl ErrorHandling +_021E6666: + ldr r1, _021E6674 ; =MOD05_021E6678 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_020463CC + pop {r3, r4, r5, r6, r7, pc} + nop +_021E6674: .word MOD05_021E6678 + + thumb_func_start MOD05_021E6678 +MOD05_021E6678: ; 0x021E6678 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E668C + cmp r0, #1 + beq _021E66CC + b _021E6710 +_021E668C: + ldr r0, [r4, #0x10] + bl FUN_0205AD98 + cmp r0, #1 + bne _021E6710 + ldr r0, [r4, #0xc] + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #0 + bl FUN_020555A0 + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl MOD05_021E726C + ldr r0, [r4, #4] + mov r1, #0x34 + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_0205ADDC + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_0224ADF8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E6710 +_021E66CC: + ldr r0, [r4, #0x10] + bl FUN_0205AE28 + cmp r0, #0 + beq _021E6710 + ldr r0, [r4, #0x10] + bl FUN_0205AE50 + ldr r0, [r4, #0x14] + bl MOD05_021E4DE4 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_02055450 + ldr r0, [r4, #0xc] + mov r1, #0 + bl FUN_020553A8 + ldr r0, [r4, #8] + ldr r1, [r0, #0x1c] + ldr r1, [r1] + bl FUN_0204ABA8 + add r1, r0, #0 + ldr r0, [r4, #8] + mov r2, #1 + bl FUN_0204ABDC + add r0, r4, #0 + bl MOD05_021E72DC + mov r0, #1 + pop {r4, pc} +_021E6710: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E6714 +MOD05_021E6714: ; 0x021E6714 + push {r4, r5, r6, lr} + add r4, r2, #0 + add r6, r0, #0 + add r5, r1, #0 + cmp r4, #1 + bne _021E672E + cmp r3, #1 + bne _021E672E + add r0, r5, #0 + bl FUN_020553C4 + cmp r0, #2 + beq _021E6732 +_021E672E: + mov r0, #0 + pop {r4, r5, r6, pc} +_021E6732: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02057278 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054A48 + cmp r0, #0 + bne _021E674A + mov r0, #0 + pop {r4, r5, r6, pc} +_021E674A: + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021E6BD8 + mov r0, #1 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6758 +MOD05_021E6758: ; 0x021E6758 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02055764 + cmp r0, #1 + bne _021E676C + mov r0, #0 + pop {r4, r5, r6, pc} +_021E676C: + add r0, r4, #0 + bl FUN_020553A0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r6, #0 + bl FUN_02054984 + cmp r0, #1 + beq _021E6792 + add r0, r6, #0 + bl FUN_020549A0 + cmp r0, #1 + beq _021E6792 + mov r0, #0 + pop {r4, r5, r6, pc} +_021E6792: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E67A0 + mov r0, #1 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E67A0 +MOD05_021E67A0: ; 0x021E67A0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x10 + add r4, r1, #0 + bl MOD05_021E72B8 + add r2, r0, #0 + str r5, [r2, #8] + ldr r1, _021E67BC ; =MOD05_021E67C0 + add r0, r5, #0 + str r4, [r2, #0xc] + bl FUN_020463CC + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E67BC: .word MOD05_021E67C0 + + thumb_func_start MOD05_021E67C0 +MOD05_021E67C0: ; 0x021E67C0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020553A0 + add r7, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021E67E4 + cmp r0, #1 + beq _021E67F0 + cmp r0, #2 + beq _021E682A + b _021E68C6 +_021E67E4: + ldr r0, _021E68CC ; =0x00000651 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E67F0: + add r0, r7, #0 + bl FUN_0205AD98 + cmp r0, #0 + bne _021E6804 + ldr r0, [r4, #0xc] + bl FUN_020570C4 + cmp r0, #0 + beq _021E68C6 +_021E6804: + ldr r0, [r4, #4] + cmp r0, #5 + blt _021E6824 + ldr r0, _021E68D0 ; =0x00000652 + bl FUN_020054C8 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0205574C + add r0, r4, #0 + bl MOD05_021E72DC + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021E6824: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E682A: + ldr r0, [r4, #0xc] + bl FUN_020552F8 + ldr r2, _021E68D4 ; =0x021C48B8 + str r0, [sp] + ldr r1, [r2, #0x48] + ldr r2, [r2, #0x44] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4, #0xc] + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl FUN_02057020 + add r5, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _021E68C6 + ldr r0, [sp] + cmp r5, r0 + beq _021E68C6 + mov r0, #1 + str r0, [r4] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + add r0, r7, #0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020549A0 + cmp r0, #1 + bne _021E68A2 + add r0, r6, #0 + bl FUN_02046528 + add r1, sp, #8 + str r0, [sp, #4] + bl FUN_0223C08C + cmp r0, #1 + bne _021E68A2 + ldr r0, [r4, #0xc] + mov r1, #1 + bl FUN_0205574C + add r0, r4, #0 + bl MOD05_021E72DC + ldr r0, [sp, #4] + ldr r2, [sp, #8] + add r1, r6, #0 + bl FUN_02046A20 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021E68A2: + ldr r0, [r4, #4] + cmp r0, #5 + bge _021E68AC + mov r6, #0x28 + b _021E68B6 +_021E68AC: + add r0, r7, #0 + mov r1, #1 + mov r6, #0x30 + bl FUN_02058A18 +_021E68B6: + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02057260 +_021E68C6: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E68CC: .word 0x00000651 +_021E68D0: .word 0x00000652 +_021E68D4: .word 0x021C48B8 + + thumb_func_start MOD05_021E68D8 +MOD05_021E68D8: ; 0x021E68D8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_020553A0 + bl FUN_0205AD98 + cmp r0, #0 + bne _021E68F0 + mov r0, #0 + pop {r3, r4, r5, pc} +_021E68F0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021E6904 + cmp r0, #1 + bne _021E6900 + mov r0, #1 + pop {r3, r4, r5, pc} +_021E6900: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E6904 +MOD05_021E6904: ; 0x021E6904 + push {r4, lr} + add r4, r1, #0 + add r0, r4, #0 + bl FUN_02055408 + cmp r0, #1 + bge _021E6916 + mov r0, #0 + pop {r4, pc} +_021E6916: + add r0, r4, #0 + bl FUN_02055314 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021E727C + add r4, r0, #0 + bne _021E692C + mov r0, #0 + pop {r4, pc} +_021E692C: + bl FUN_02058458 + cmp r0, #0x76 + beq _021E6938 + mov r0, #0 + pop {r4, pc} +_021E6938: + add r0, r4, #0 + bl MOD05_021F1AF8 + add r0, r4, #0 + bl FUN_02057654 + ldr r0, _021E6950 ; =0x0000065B + bl FUN_020054C8 + mov r0, #0 + pop {r4, pc} + nop +_021E6950: .word 0x0000065B + + thumb_func_start MOD05_021E6954 +MOD05_021E6954: ; 0x021E6954 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x30 + add r7, r1, #0 + add r5, r2, #0 + bl MOD05_021E72B8 + add r4, r0, #0 + str r7, [r4, #4] + str r6, [r4, #0xc] + ldr r0, [r6, #0x38] + str r0, [r4, #0x10] + bl FUN_020553A0 + add r2, r4, #0 + str r0, [r4, #0x14] + add r2, #0x1c + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r6, #0x10] + ldr r1, _021E698C ; =MOD05_021E69FC + add r2, r4, #0 + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + nop +_021E698C: .word MOD05_021E69FC + + thumb_func_start MOD05_021E6990 +MOD05_021E6990: ; 0x021E6990 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r2, #0 + add r5, r1, #0 + bl FUN_02046528 + add r4, r0, #0 + add r1, r6, #0 + bl MOD05_021E72E8 + add r1, r0, #0 + add r0, r4, #0 + add r2, sp, #0 + bl MOD05_021E7228 + add r0, r4, #0 + add r1, r5, #0 + add r2, sp, #0 + bl MOD05_021E6954 + add sp, #0x10 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E69BC +MOD05_021E69BC: ; 0x021E69BC + push {r3, lr} + cmp r1, #3 + bhi _021E69F6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E69CE: ; jump table + .short _021E69D6 - _021E69CE - 2 ; case 0 + .short _021E69D6 - _021E69CE - 2 ; case 1 + .short _021E69E6 - _021E69CE - 2 ; case 2 + .short _021E69E6 - _021E69CE - 2 ; case 3 +_021E69D6: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020548FC + cmp r0, #1 + bne _021E69F6 + mov r0, #1 + pop {r3, pc} +_021E69E6: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054908 + cmp r0, #1 + bne _021E69F6 + mov r0, #1 + pop {r3, pc} +_021E69F6: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E69FC +MOD05_021E69FC: ; 0x021E69FC + push {r4, r5, r6, lr} + bl FUN_0204652C + ldr r6, _021E6A24 ; =0x021F7714 + add r5, r0, #0 +_021E6A06: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r6, r1] + blx r1 + add r4, r0, #0 + cmp r4, #2 + beq _021E6A06 + cmp r4, #1 + bne _021E6A20 + add r0, r5, #0 + bl MOD05_021E72DC +_021E6A20: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E6A24: .word 0x021F7714 + + thumb_func_start MOD05_021E6A28 +MOD05_021E6A28: ; 0x021E6A28 + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4, #0xc] + add r1, #0x1c + bl MOD05_021E723C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E6A40 +MOD05_021E6A40: ; 0x021E6A40 + push {r4, lr} + add r4, r0, #0 + add r0, #0x1c + bl MOD05_021E7250 + cmp r0, #1 + bne _021E6A54 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E6A54: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E6A58 +MOD05_021E6A58: ; 0x021E6A58 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [r5, #4] + bl FUN_02059BF4 + add r6, r0, #0 + ldr r0, [r5, #0x10] + bl FUN_0205532C + add r7, r0, #0 + ldr r0, [r5, #4] + bl FUN_02059C00 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x14] + ldr r3, [r5, #4] + add r1, r4, r6 + add r2, r7, r2 + bl FUN_0224AEE8 + str r0, [r5, #0x18] + ldr r0, [r5, #0xc] + bl FUN_0224F0BC + str r0, [r5, #0x2c] + ldr r0, _021E6AA8 ; =0x00000627 + bl FUN_020054C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E6AA8: .word 0x00000627 + + thumb_func_start MOD05_021E6AAC +MOD05_021E6AAC: ; 0x021E6AAC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_0205AD98 + cmp r0, #1 + bne _021E6AD0 + ldr r0, [r4, #4] + mov r1, #0x34 + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E6AD0: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E6AD4 +MOD05_021E6AD4: ; 0x021E6AD4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_0205AE28 + cmp r0, #1 + bne _021E6AF0 + ldr r0, [r4] + mov r1, #1 + add r0, r0, #1 + str r0, [r4] + ldr r0, [r4, #0x18] + bl FUN_0224AF68 +_021E6AF0: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E6AF4 +MOD05_021E6AF4: ; 0x021E6AF4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_0205AD98 + cmp r0, #1 + bne _021E6B18 + ldr r0, [r4, #4] + mov r1, #0x10 + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E6B18: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E6B1C +MOD05_021E6B1C: ; 0x021E6B1C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x14] + bl FUN_0205AE28 + cmp r0, #0 + bne _021E6B2E + mov r0, #0 + pop {r3, r4, r5, pc} +_021E6B2E: + ldr r0, [r5, #0x14] + bl FUN_020584D4 + add r4, r0, #0 + ldr r0, [r5, #0x14] + add r1, r4, #0 + bl FUN_02059C90 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r4, #0 + bl MOD05_021E69BC + cmp r0, #1 + bne _021E6B54 + mov r0, #5 + str r0, [r5] + mov r0, #2 + pop {r3, r4, r5, pc} +_021E6B54: + ldr r0, [r5, #4] + mov r1, #0x34 + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r5, #0x14] + bl FUN_0205ADDC + mov r1, #0 + str r1, [r5, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r5, #0x18] + bl FUN_0224AF68 + ldr r0, [r5, #0x2c] + bl FUN_0224F0D0 + mov r0, #0 + str r0, [r5, #0x2c] + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E6B80 +MOD05_021E6B80: ; 0x021E6B80 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + bl FUN_0205AE28 + cmp r0, #0 + bne _021E6B92 + mov r0, #0 + pop {r4, pc} +_021E6B92: + ldr r0, [r4, #0x14] + bl FUN_0205AE50 + ldr r0, [r4, #0x18] + bl MOD05_021E4DE4 + mov r0, #1 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6BA4 +MOD05_021E6BA4: ; 0x021E6BA4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0x54 + add r7, r1, #0 + add r5, r2, #0 + bl MOD05_021E72B8 + add r4, r0, #0 + str r7, [r4, #4] + str r6, [r4, #0x34] + .balign 4, 0 +_021E6BB8: .word 0x63A06BB0 + + thumb_func_start MOD05_021E6BBC +MOD05_021E6BBC: ; 0x021E6BBC + ldr r0, [r6, #0x38] + bl FUN_020553A0 + str r0, [r4, #0x3c] + cmp r5, #0 + beq _021E6BD4 + add r2, r4, #0 + add r2, #0x40 + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} +_021E6BD4: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E6BD8 +MOD05_021E6BD8: ; 0x021E6BD8 + push {r4, lr} + mov r2, #0 + add r4, r0, #0 + bl MOD05_021E6BA4 + add r2, r0, #0 + ldr r1, _021E6BF0 ; =MOD05_021E6C30 + add r0, r4, #0 + bl FUN_020463CC + pop {r4, pc} + nop +_021E6BF0: .word MOD05_021E6C30 + + thumb_func_start MOD05_021E6BF4 +MOD05_021E6BF4: ; 0x021E6BF4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + bl FUN_02046528 + add r4, r0, #0 + add r1, r7, #0 + bl MOD05_021E72E8 + add r1, r0, #0 + add r0, r4, #0 + add r2, sp, #0 + bl MOD05_021E7228 + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0 + bl MOD05_021E6BA4 + add r2, r0, #0 + ldr r1, _021E6C2C ; =MOD05_021E6C30 + add r0, r5, #0 + bl FUN_0204640C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E6C2C: .word MOD05_021E6C30 + + thumb_func_start MOD05_021E6C30 +MOD05_021E6C30: ; 0x021E6C30 + push {r4, r5, r6, lr} + bl FUN_0204652C + ldr r6, _021E6C70 ; =0x021F7700 + ldr r4, _021E6C74 ; =0x021F76EC + add r5, r0, #0 +_021E6C3C: + ldr r0, [r5, #4] + cmp r0, #0 + bne _021E6C4E + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + b _021E6C58 +_021E6C4E: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r6, r1] + blx r1 +_021E6C58: + cmp r0, #2 + beq _021E6C3C + cmp r0, #1 + bne _021E6C6A + add r0, r5, #0 + bl MOD05_021E72DC + mov r0, #1 + pop {r4, r5, r6, pc} +_021E6C6A: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_021E6C70: .word 0x021F7700 +_021E6C74: .word 0x021F76EC + + thumb_func_start MOD05_021E6C78 +MOD05_021E6C78: ; 0x021E6C78 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x40] + cmp r0, #1 + bne _021E6C96 + add r1, r4, #0 + ldr r0, [r4, #0x34] + add r1, #0x40 + bl MOD05_021E723C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021E6C96: + mov r0, #2 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6CA0 +MOD05_021E6CA0: ; 0x021E6CA0 + push {r4, lr} + add r4, r0, #0 + add r0, #0x40 + bl MOD05_021E7250 + cmp r0, #1 + bne _021E6CBA + ldr r0, _021E6CC0 ; =0x0000064D + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E6CBA: + mov r0, #0 + pop {r4, pc} + nop +_021E6CC0: .word 0x0000064D + + thumb_func_start MOD05_021E6CC4 +MOD05_021E6CC4: ; 0x021E6CC4 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5, #0x3c] + bl FUN_02058B2C + add r4, r0, #0 + mov r0, #0 + bl FUN_02059BF4 + lsl r0, r0, #1 + add r4, r4, r0 + ldr r0, [r5, #0x3c] + bl FUN_02058B4C + add r6, r0, #0 + mov r0, #0 + bl FUN_02059C00 + lsl r0, r0, #1 + add r6, r6, r0 + add r2, r5, #0 + add r0, r4, #0 + add r1, r6, #0 + add r2, #0x28 + bl FUN_02059E60 + add r1, r5, #0 + ldr r0, [r5, #0x34] + add r1, #0x28 + bl FUN_02059E9C + str r4, [r5, #0xc] + ldr r0, [r5, #0x2c] + asr r1, r0, #3 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + str r0, [r5, #0x10] + str r6, [r5, #0x14] + ldr r0, [r5, #0x3c] + add r1, sp, #0xc + bl FUN_02058B5C + ldr r1, [sp, #0x14] + ldr r0, [r5, #0x30] + cmp r1, r0 + bgt _021E6D2A + bl ErrorHandling +_021E6D2A: + ldr r1, [sp, #0x10] + ldr r0, [r5, #0x2c] + cmp r1, r0 + blt _021E6D36 + bl ErrorHandling +_021E6D36: + mov r0, #0 + str r0, [sp] + ldr r1, [r5, #0x2c] + ldr r0, [sp, #0x10] + add r3, sp, #0 + sub r2, r1, r0 + ldr r1, [r5, #0x30] + ldr r0, [sp, #0x14] + str r2, [sp, #4] + sub r1, r1, r0 + asr r0, r2, #5 + lsr r0, r0, #0x1a + add r0, r2, r0 + asr r0, r0, #6 + str r0, [sp, #4] + asr r0, r1, #5 + lsr r0, r0, #0x1a + add r0, r1, r0 + add r2, r5, #0 + str r1, [sp, #8] + asr r0, r0, #6 + str r0, [sp, #8] + ldmia r3!, {r0, r1} + add r2, #0x1c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r5, #0x34] + bl FUN_0224ED94 + str r0, [r5, #0x50] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #0 + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E6D80 +MOD05_021E6D80: ; 0x021E6D80 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_02058B5C + ldr r1, [sp, #4] + ldr r0, [r4, #0x20] + add r1, r1, r0 + str r1, [sp, #4] + ldr r0, [r4, #0x2c] + cmp r1, r0 + ble _021E6D9E + str r0, [sp, #4] +_021E6D9E: + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_02058B6C + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x20 + blt _021E6DBA + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E6DBA: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD05_021E6DC0 +MOD05_021E6DC0: ; 0x021E6DC0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_02058B5C + ldr r1, [sp, #4] + ldr r0, [r4, #0x20] + add r1, r1, r0 + str r1, [sp, #4] + ldr r0, [r4, #0x2c] + cmp r1, r0 + ble _021E6DDE + str r0, [sp, #4] +_021E6DDE: + ldr r1, [sp, #8] + ldr r0, [r4, #0x24] + add r1, r1, r0 + str r1, [sp, #8] + ldr r0, [r4, #0x30] + cmp r1, r0 + bge _021E6DEE + str r0, [sp, #8] +_021E6DEE: + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_02058B6C + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x40 + bge _021E6E06 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021E6E06: + ldr r1, [sp, #8] + ldr r0, [r4, #0x30] + cmp r1, r0 + beq _021E6E12 + bl ErrorHandling +_021E6E12: + ldr r1, [sp, #4] + ldr r0, [r4, #0x2c] + cmp r1, r0 + beq _021E6E1E + bl ErrorHandling +_021E6E1E: + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0xc] + bl FUN_02058B30 + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x10] + bl FUN_02058B40 + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x14] + bl FUN_02058B50 + ldr r0, [r4, #0x3c] + bl FUN_02059C60 + ldr r0, [r4, #0x50] + bl FUN_0224EDA8 + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD05_021E6E48 +MOD05_021E6E48: ; 0x021E6E48 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x40] + cmp r0, #1 + bne _021E6E66 + add r1, r4, #0 + ldr r0, [r4, #0x34] + add r1, #0x40 + bl MOD05_021E723C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} +_021E6E66: + mov r0, #2 + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD05_021E6E6C +MOD05_021E6E6C: ; 0x021E6E6C + push {r4, lr} + add r4, r0, #0 + add r0, #0x40 + bl MOD05_021E7250 + cmp r0, #1 + bne _021E6E86 + ldr r0, _021E6E8C ; =0x0000064D + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E6E86: + mov r0, #0 + pop {r4, pc} + nop +_021E6E8C: .word 0x0000064D + + thumb_func_start MOD05_021E6E90 +MOD05_021E6E90: ; 0x021E6E90 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r5, #0x3c] + bl FUN_02058B2C + add r4, r0, #0 + mov r0, #1 + bl FUN_02059BF4 + lsl r0, r0, #1 + add r4, r4, r0 + ldr r0, [r5, #0x3c] + bl FUN_02058B4C + add r6, r0, #0 + mov r0, #1 + bl FUN_02059C00 + lsl r0, r0, #1 + add r6, r6, r0 + add r2, r5, #0 + add r0, r4, #0 + add r1, r6, #0 + add r2, #0x28 + bl FUN_02059E60 + add r1, r5, #0 + ldr r0, [r5, #0x34] + add r1, #0x28 + bl FUN_02059E9C + mov r0, #0 + str r0, [r5, #0x18] + str r4, [r5, #0xc] + ldr r0, [r5, #0x2c] + asr r1, r0, #3 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + str r0, [r5, #0x10] + str r6, [r5, #0x14] + ldr r0, [r5, #0x3c] + add r1, sp, #0xc + bl FUN_02058B5C + ldr r1, [sp, #0x14] + ldr r0, [r5, #0x30] + cmp r1, r0 + blt _021E6EFA + bl ErrorHandling +_021E6EFA: + ldr r1, [sp, #0x10] + ldr r0, [r5, #0x2c] + cmp r1, r0 + bgt _021E6F06 + bl ErrorHandling +_021E6F06: + mov r0, #0 + str r0, [sp] + ldr r1, [r5, #0x2c] + ldr r0, [sp, #0x10] + add r3, sp, #0 + sub r2, r1, r0 + ldr r1, [r5, #0x30] + ldr r0, [sp, #0x14] + str r2, [sp, #4] + sub r1, r1, r0 + asr r0, r2, #5 + lsr r0, r0, #0x1a + add r0, r2, r0 + asr r0, r0, #6 + str r0, [sp, #4] + asr r0, r1, #5 + lsr r0, r0, #0x1a + add r0, r1, r0 + add r2, r5, #0 + str r1, [sp, #8] + asr r0, r0, #6 + str r0, [sp, #8] + ldmia r3!, {r0, r1} + add r2, #0x1c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r5, #0x34] + bl FUN_0224ED94 + str r0, [r5, #0x50] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #0 + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E6F50 +MOD05_021E6F50: ; 0x021E6F50 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_02058B5C + ldr r1, [sp, #8] + ldr r0, [r4, #0x24] + add r1, r1, r0 + str r1, [sp, #8] + ldr r0, [r4, #0x30] + cmp r1, r0 + ble _021E6F70 + str r0, [sp, #8] + b _021E6F78 +_021E6F70: + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x24] + add r0, r1, r0 + str r0, [r4, #0x18] +_021E6F78: + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_02058B6C + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x20 + blt _021E6F94 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_021E6F94: + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E6F9C +MOD05_021E6F9C: ; 0x021E6F9C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_02058B5C + ldr r1, [sp, #4] + ldr r0, [r4, #0x20] + add r1, r1, r0 + str r1, [sp, #4] + ldr r0, [r4, #0x2c] + cmp r1, r0 + bge _021E6FBA + str r0, [sp, #4] +_021E6FBA: + ldr r1, [sp, #8] + ldr r0, [r4, #0x24] + add r1, r1, r0 + str r1, [sp, #8] + ldr r0, [r4, #0x30] + cmp r1, r0 + ble _021E6FCC + str r0, [sp, #8] + b _021E6FD4 +_021E6FCC: + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x24] + add r0, r1, r0 + str r0, [r4, #0x18] +_021E6FD4: + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_02058B6C + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x40 + bge _021E6FEC + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021E6FEC: + ldr r1, [sp, #8] + ldr r0, [r4, #0x30] + cmp r1, r0 + beq _021E6FF8 + bl ErrorHandling +_021E6FF8: + ldr r1, [sp, #4] + ldr r0, [r4, #0x2c] + cmp r1, r0 + beq _021E7004 + bl ErrorHandling +_021E7004: + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0xc] + bl FUN_02058B30 + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x10] + bl FUN_02058B40 + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x14] + bl FUN_02058B50 + ldr r0, [r4, #0x3c] + bl FUN_02059C60 + ldr r0, [r4, #0x50] + bl FUN_0224EDA8 + mov r0, #1 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7030 +MOD05_021E7030: ; 0x021E7030 + push {r3, lr} + bl FUN_02046528 + bl MOD05_021E703C + pop {r3, pc} + + thumb_func_start MOD05_021E703C +MOD05_021E703C: ; 0x021E703C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x18 + bl MOD05_021E72B8 + add r4, r0, #0 + str r5, [r4] + ldr r0, [r5, #0x38] + str r0, [r4, #4] + bl FUN_020553A0 + str r0, [r4, #8] + ldr r0, [r4, #4] + bl FUN_020553E8 + str r0, [r4, #0x10] + ldr r0, [r5, #0x10] + ldr r1, _021E7068 ; =MOD05_021E706C + add r2, r4, #0 + bl FUN_0204640C + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E7068: .word MOD05_021E706C + + thumb_func_start MOD05_021E706C +MOD05_021E706C: ; 0x021E706C + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021E7084 + cmp r0, #1 + beq _021E7096 + cmp r0, #2 + beq _021E70C8 + b _021E70E2 +_021E7084: + ldr r0, [r4, #8] + ldr r1, _021E70E8 ; =0x021F7758 + bl FUN_0205AEA4 + str r0, [r4, #0x14] + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _021E70E2 +_021E7096: + ldr r0, [r4, #0x14] + bl FUN_0205AEF0 + cmp r0, #1 + bne _021E70E2 + ldr r1, [r4, #0x10] + mov r0, #5 + bl FUN_020555A0 + add r1, r0, #0 + ldr r0, [r4, #4] + bl MOD05_021E726C + ldr r0, [r4, #0x14] + bl FUN_0205AEFC + ldr r0, [r4, #8] + ldr r1, _021E70EC ; =0x021F77BC + bl FUN_0205AEA4 + str r0, [r4, #0x14] + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _021E70E2 +_021E70C8: + ldr r0, [r4, #0x14] + bl FUN_0205AEF0 + cmp r0, #1 + bne _021E70E2 + ldr r0, [r4, #0x14] + bl FUN_0205AEFC + add r0, r4, #0 + bl MOD05_021E72DC + mov r0, #1 + pop {r4, pc} +_021E70E2: + mov r0, #0 + pop {r4, pc} + nop +_021E70E8: .word 0x021F7758 +_021E70EC: .word 0x021F77BC + + thumb_func_start MOD05_021E70F0 +MOD05_021E70F0: ; 0x021E70F0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_02058934 + cmp r0, #0 + beq _021E7136 + add r0, r4, #0 + bl FUN_020553C4 + cmp r0, #0 + bne _021E7136 + add r0, r5, #0 + bl FUN_02058458 + sub r0, #0xc4 + cmp r0, #1 + bls _021E7136 + add r0, r4, #0 + bl FUN_020553E0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x40 + bl MOD05_021E5FD8 + add r0, r4, #0 + bl MOD05_021E5FE0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021E5FD8 +_021E7136: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E7138 +MOD05_021E7138: ; 0x021E7138 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_02058934 + cmp r0, #0 + beq _021E7180 + add r0, r4, #0 + bl FUN_020553C4 + cmp r0, #0 + bne _021E7180 + add r0, r5, #0 + bl FUN_02058458 + cmp r0, #0xc4 + beq _021E7162 + cmp r0, #0xc5 + bne _021E7180 +_021E7162: + add r0, r4, #0 + bl FUN_020553E0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD05_021E5FD8 + add r0, r4, #0 + bl MOD05_021E5FE0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021E5FD8 +_021E7180: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7184 +MOD05_021E7184: ; 0x021E7184 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r5, [r6, #0x38] + add r0, r5, #0 + bl FUN_020553C4 + add r7, r0, #0 + beq _021E7198 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E7198: + add r0, r5, #0 + bl FUN_020553A0 + str r0, [sp] + mov r0, #4 + mov r1, #0x10 + bl FUN_020169D8 + add r4, r0, #0 + mov r0, #0 + str r0, [r4] + str r6, [r4, #8] + str r5, [r4, #0xc] + ldr r0, [sp] + str r7, [r4, #4] + bl FUN_02058914 + add r0, r5, #0 + mov r1, #0x80 + bl MOD05_021E5FD8 + add r0, r5, #0 + bl MOD05_021E5FE0 + ldr r0, _021E71E0 ; =MOD05_021E7218 + ldr r2, _021E71E4 ; =0x0000FFFF + add r1, r4, #0 + bl FUN_0200CA44 + add r4, r0, #0 + bne _021E71DA + bl ErrorHandling +_021E71DA: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E71E0: .word MOD05_021E7218 +_021E71E4: .word 0x0000FFFF + + thumb_func_start MOD05_021E71E8 +MOD05_021E71E8: ; 0x021E71E8 + push {r4, r5, r6, lr} + add r5, r0, #0 + beq _021E7216 + bl FUN_0201B6C8 + add r6, r0, #0 + ldr r4, [r6, #0xc] + add r0, r4, #0 + bl FUN_020553E8 + add r1, r0, #0 + mov r0, #0 + bl FUN_020555A0 + add r0, r4, #0 + bl MOD05_021E6014 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_021E7216: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E7218 +MOD05_021E7218: ; 0x021E7218 + push {r3, lr} + ldr r0, [r1, #0xc] + bl FUN_020553A0 + bl FUN_020586A0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7228 +MOD05_021E7228: ; 0x021E7228 + push {r4, lr} + add r4, r2, #0 + mov r2, #1 + str r2, [r4] + str r1, [r4, #8] + ldr r0, [r0, #0x38] + bl FUN_020553E8 + str r0, [r4, #4] + pop {r4, pc} + + thumb_func_start MOD05_021E723C +MOD05_021E723C: ; 0x021E723C + push {r4, lr} + add r4, r1, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #4] + mov r1, #0 + bl FUN_0224666C + str r0, [r4, #0xc] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7250 +MOD05_021E7250: ; 0x021E7250 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_022466A0 + cmp r0, #1 + bne _021E7268 + ldr r0, [r4, #0xc] + bl FUN_022466AC + mov r0, #1 + pop {r4, pc} +_021E7268: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E726C +MOD05_021E726C: ; 0x021E726C + push {r4, lr} + add r4, r1, #0 + bl FUN_020553A0 + add r1, r4, #0 + bl MOD05_021F3490 + pop {r4, pc} + + thumb_func_start MOD05_021E727C +MOD05_021E727C: ; 0x021E727C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + bl FUN_02055320 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02059BF4 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0205532C + str r0, [sp] + add r0, r5, #0 + bl FUN_02059C00 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_020553A0 + bl FUN_02058578 + ldr r2, [sp] + add r1, r6, r7 + add r2, r2, r5 + bl FUN_02058D74 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E72B8 +MOD05_021E72B8: ; 0x021E72B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + add r1, r5, #0 + bl FUN_020169D8 + add r4, r0, #0 + bne _021E72CC + bl ErrorHandling +_021E72CC: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E72DC +MOD05_021E72DC: ; 0x021E72DC + ldr r3, _021E72E4 ; =0x02016A8D + add r1, r0, #0 + mov r0, #4 + bx r3 + .balign 4, 0 +_021E72E4: .word 0x02016A8D + + thumb_func_start MOD05_021E72E8 +MOD05_021E72E8: ; 0x021E72E8 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0 + bl FUN_0206BB1C + add r1, r4, #0 + bl FUN_0206B9B0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E72FC +MOD05_021E72FC: ; 0x021E72FC + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_020553A0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r4, #0 + bl FUN_02054B30 + cmp r0, #1 + bne _021E731E + mov r2, #3 + b _021E734C +_021E731E: + add r0, r4, #0 + bl FUN_02054B3C + cmp r0, #1 + bne _021E732C + mov r2, #2 + b _021E734C +_021E732C: + add r0, r4, #0 + bl FUN_02054B48 + cmp r0, #1 + bne _021E733A + mov r2, #0 + b _021E734C +_021E733A: + add r0, r4, #0 + bl FUN_02054B54 + cmp r0, #1 + bne _021E7348 + mov r2, #1 + b _021E734C +_021E7348: + mov r0, #0 + pop {r4, r5, r6, pc} +_021E734C: + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021E7358 + mov r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021E7358 +MOD05_021E7358: ; 0x021E7358 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x18 + add r6, r1, #0 + add r7, r2, #0 + bl MOD05_021E74D4 + add r4, r0, #0 + str r5, [r4, #0xc] + str r6, [r4, #0x10] + ldr r0, _021E7380 ; =0x00000658 + str r7, [r4] + bl FUN_020054C8 + ldr r1, _021E7384 ; =MOD05_021E73B4 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_020463CC + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E7380: .word 0x00000658 +_021E7384: .word MOD05_021E73B4 + + thumb_func_start MOD05_021E7388 +MOD05_021E7388: ; 0x021E7388 + cmp r0, #3 + bhi _021E73B0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7398: ; jump table + .short _021E73A0 - _021E7398 - 2 ; case 0 + .short _021E73A8 - _021E7398 - 2 ; case 1 + .short _021E73A4 - _021E7398 - 2 ; case 2 + .short _021E73AC - _021E7398 - 2 ; case 3 +_021E73A0: + mov r0, #2 + bx lr +_021E73A4: + mov r0, #1 + bx lr +_021E73A8: + mov r0, #3 + bx lr +_021E73AC: + mov r0, #0 + bx lr +_021E73B0: + mov r0, #0 + bx lr + + thumb_func_start MOD05_021E73B4 +MOD05_021E73B4: ; 0x021E73B4 + push {r4, r5, r6, lr} + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_020553A0 + add r6, r0, #0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021E73DC + cmp r0, #1 + beq _021E73EE + cmp r0, #2 + beq _021E741C + b _021E74CA +_021E73DC: + mov r1, #1 + add r0, r6, #0 + lsl r1, r1, #8 + bl FUN_02058410 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + b _021E74CA +_021E73EE: + ldr r0, [r4, #0x10] + bl FUN_02057254 + cmp r0, #0 + beq _021E74CA + ldr r0, [r4] + mov r1, #0xc + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_02057260 + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #7 + str r0, [r4, #4] + b _021E74CA +_021E741C: + ldr r0, [r4, #4] + cmp r0, #2 + beq _021E742A + cmp r0, #4 + beq _021E742A + cmp r0, #6 + bne _021E743A +_021E742A: + ldr r0, [r4] + bl MOD05_021E7388 + str r0, [r4] + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 +_021E743A: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bne _021E74CA + add r0, r5, #0 + bl FUN_02054B30 + cmp r0, #1 + bne _021E7452 + mov r0, #3 + str r0, [r4] + b _021E748A +_021E7452: + add r0, r5, #0 + bl FUN_02054B3C + cmp r0, #1 + bne _021E7462 + mov r0, #2 + str r0, [r4] + b _021E748A +_021E7462: + add r0, r5, #0 + bl FUN_02054B48 + cmp r0, #1 + bne _021E7472 + mov r0, #0 + str r0, [r4] + b _021E748A +_021E7472: + add r0, r5, #0 + bl FUN_02054B54 + cmp r0, #1 + bne _021E7482 + mov r0, #1 + str r0, [r4] + b _021E748A +_021E7482: + ldr r0, [r4] + bl MOD05_021E7388 + str r0, [r4] +_021E748A: + ldr r0, [r4, #0x10] + ldr r2, [r4] + add r1, r6, #0 + bl FUN_02056B74 + cmp r0, #0 + bne _021E749E + mov r0, #1 + str r0, [r4, #8] + b _021E74CA +_021E749E: + add r0, r6, #0 + mov r1, #0x80 + bl FUN_02058418 + mov r1, #1 + add r0, r6, #0 + lsl r1, r1, #8 + bl FUN_02058418 + ldr r0, [r4, #0x10] + ldr r1, [r4] + bl FUN_02055304 + add r0, r4, #0 + bl MOD05_021E74F8 + ldr r0, _021E74D0 ; =0x00000658 + mov r1, #0 + bl FUN_020054F0 + mov r0, #1 + pop {r4, r5, r6, pc} +_021E74CA: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_021E74D0: .word 0x00000658 + + thumb_func_start MOD05_021E74D4 +MOD05_021E74D4: ; 0x021E74D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + add r1, r5, #0 + bl FUN_020169D8 + add r4, r0, #0 + bne _021E74E8 + bl ErrorHandling +_021E74E8: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E74F8 +MOD05_021E74F8: ; 0x021E74F8 + ldr r3, _021E7500 ; =0x02016A8D + add r1, r0, #0 + mov r0, #4 + bx r3 + .balign 4, 0 +_021E7500: .word 0x02016A8D + + thumb_func_start MOD05_021E7504 +MOD05_021E7504: ; 0x021E7504 + add r1, r0, #0 + ldr r0, [r1, #0x10] + cmp r0, #3 + bhi _021E7536 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E7518: ; jump table + .short _021E7520 - _021E7518 - 2 ; case 0 + .short _021E752C - _021E7518 - 2 ; case 1 + .short _021E7526 - _021E7518 - 2 ; case 2 + .short _021E7532 - _021E7518 - 2 ; case 3 +_021E7520: + mov r0, #2 + str r0, [r1, #0x10] + b _021E7536 +_021E7526: + mov r0, #1 + str r0, [r1, #0x10] + b _021E7536 +_021E752C: + mov r0, #3 + str r0, [r1, #0x10] + b _021E7536 +_021E7532: + mov r0, #0 + str r0, [r1, #0x10] +_021E7536: + ldr r0, [r1] + ldr r3, _021E7540 ; =0x02055305 + ldr r0, [r0, #0x38] + ldr r1, [r1, #0x10] + bx r3 + .balign 4, 0 +_021E7540: .word 0x02055305 + + thumb_func_start MOD05_021E7544 +MOD05_021E7544: ; 0x021E7544 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x38] + bl FUN_020553A0 + add r6, r0, #0 + ldr r0, [r5, #8] + cmp r0, #0 + beq _021E7564 + cmp r0, #1 + beq _021E756E + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_021E7564: + mov r0, #1 + str r0, [r5, #8] + ldr r0, _021E760C ; =0x0000064F + bl FUN_020054C8 +_021E756E: + ldr r0, [r5, #0xc] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _021E7584 + add r0, r5, #0 + bl MOD05_021E7504 +_021E7584: + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_02058BA4 + ldr r4, [r5, #0xc] + add r0, r4, #0 + bl _dflt + str r0, [sp, #0x14] + lsl r0, r4, #0xb + str r1, [sp, #0x10] + bl _dflt + add r2, r0, #0 + add r3, r1, #0 + ldr r0, _021E7610 ; =0x9999999A + ldr r1, _021E7614 ; =0x40C19999 + bl _dadd + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + bl _dmul + bl _dfix + str r0, [sp, #0x1c] + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_02058BB4 + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #0x14 + bne _021E75EA + mov r0, #6 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_021E75EA: + ble _021E7606 + bl FUN_0200E308 + cmp r0, #0 + beq _021E7606 + ldr r0, [r5, #4] + mov r1, #1 + str r1, [r0] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_0200CAB4 +_021E7606: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_021E760C: .word 0x0000064F +_021E7610: .word 0x9999999A +_021E7614: .word 0x40C19999 + + thumb_func_start MOD05_021E7618 +MOD05_021E7618: ; 0x021E7618 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0x38] + bl FUN_020553A0 + ldr r1, [r5, #8] + add r4, r0, #0 + cmp r1, #0 + beq _021E763C + cmp r1, #1 + beq _021E7694 + cmp r1, #2 + beq _021E771C + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} +_021E763C: + bl FUN_02058914 + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BA4 + ldr r1, [r5, #0xc] + mov r0, #0x14 + sub r6, r0, r1 + add r0, r6, #0 + bl _dflt + str r0, [sp, #0xc] + lsl r0, r6, #0xb + add r7, r1, #0 + bl _dflt + add r2, r0, #0 + add r3, r1, #0 + ldr r0, _021E7744 ; =0x9999999A + ldr r1, _021E7748 ; =0x40C19999 + bl _dadd + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0xc] + add r1, r7, #0 + bl _dmul + bl _dfix + str r0, [sp, #0x18] + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BB4 + add r0, r4, #0 + bl MOD05_021F1D8C + ldr r0, _021E774C ; =0x0000064F + bl FUN_020054C8 + mov r0, #1 + str r0, [r5, #8] +_021E7694: + ldr r0, [r5, #0xc] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _021E76AA + add r0, r5, #0 + bl MOD05_021E7504 +_021E76AA: + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BA4 + ldr r1, [r5, #0xc] + mov r0, #0x14 + sub r6, r0, r1 + add r0, r6, #0 + bl _dflt + str r0, [sp, #0x10] + lsl r0, r6, #0xb + add r7, r1, #0 + bl _dflt + add r2, r0, #0 + add r3, r1, #0 + ldr r0, _021E7744 ; =0x9999999A + ldr r1, _021E7748 ; =0x40C19999 + bl _dadd + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x10] + add r1, r7, #0 + bl _dmul + bl _dfix + str r0, [sp, #0x18] + add r0, r4, #0 + add r1, sp, #0x14 + bl FUN_02058BB4 + ldr r0, [r5, #0xc] + add r0, r0, #1 + str r0, [r5, #0xc] + cmp r0, #2 + bne _021E770E + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + add r1, r0, #0 + add r2, r0, #0 + mov r3, #0 + bl FUN_0200E1D0 +_021E770E: + ldr r0, [r5, #0xc] + cmp r0, #0x14 + ble _021E7740 + mov r0, #2 + add sp, #0x20 + str r0, [r5, #8] + pop {r3, r4, r5, r6, r7, pc} +_021E771C: + bl FUN_0200E308 + cmp r0, #0 + beq _021E7740 + ldr r0, [r5] + mov r1, #1 + ldr r0, [r0, #0x38] + bl FUN_02055304 + ldr r0, [r5, #4] + mov r1, #1 + str r1, [r0] + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_021E7740: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E7744: .word 0x9999999A +_021E7748: .word 0x40C19999 +_021E774C: .word 0x0000064F + + thumb_func_start MOD05_021E7750 +MOD05_021E7750: ; 0x021E7750 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x14 + add r7, r2, #0 + bl FUN_020169D8 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + str r5, [r4] + str r7, [r4, #4] + ldr r0, [r5, #0x38] + bl FUN_020552F8 + str r0, [r4, #0x10] + cmp r6, #0 + beq _021E7786 + ldr r0, _021E7794 ; =MOD05_021E7544 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} +_021E7786: + ldr r0, _021E7798 ; =MOD05_021E7618 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7794: .word MOD05_021E7544 +_021E7798: .word MOD05_021E7618 + + thumb_func_start MOD05_021E779C +MOD05_021E779C: ; 0x021E779C + push {r4, lr} + mov r2, #0 + mov r1, #0x14 + add r3, r2, #0 + add r4, r0, #0 + bl MOD05_021E4BE8 + str r4, [r0, #0x10] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E77B0 +MOD05_021E77B0: ; 0x021E77B0 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021E78B4 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021E77C0 +MOD05_021E77C0: ; 0x021E77C0 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bx lr + + thumb_func_start MOD05_021E77C8 +MOD05_021E77C8: ; 0x021E77C8 + push {r3, lr} + ldr r1, [r0] + sub r1, r1, #1 + str r1, [r0] + bpl _021E77D6 + bl ErrorHandling +_021E77D6: + pop {r3, pc} + + thumb_func_start MOD05_021E77D8 +MOD05_021E77D8: ; 0x021E77D8 + ldr r1, [r0, #4] + add r1, r1, #1 + str r1, [r0, #4] + bx lr + + thumb_func_start MOD05_021E77E0 +MOD05_021E77E0: ; 0x021E77E0 + push {r3, lr} + ldr r1, [r0, #4] + sub r1, r1, #1 + str r1, [r0, #4] + bpl _021E77EE + bl ErrorHandling +_021E77EE: + pop {r3, pc} + + thumb_func_start MOD05_021E77F0 +MOD05_021E77F0: ; 0x021E77F0 + push {r3, lr} + cmp r1, #0 + bne _021E77FC + bl MOD05_021E77C0 + pop {r3, pc} +_021E77FC: + bl MOD05_021E77D8 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7804 +MOD05_021E7804: ; 0x021E7804 + push {r3, lr} + cmp r1, #0 + bne _021E7810 + bl MOD05_021E77C8 + pop {r3, pc} +_021E7810: + bl MOD05_021E77E0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7818 +MOD05_021E7818: ; 0x021E7818 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + bne _021E785C + mov r1, #1 + str r1, [r4, #8] + ldr r0, [r4, #0x10] + mov r2, #0x55 + bl MOD05_021E5078 + ldr r0, [r4, #0x10] + mov r1, #1 + mov r2, #0x75 + bl MOD05_021E50AC + mov r1, #1 + ldr r0, [r4, #0x10] + mov r2, #4 + add r3, r1, #0 + bl MOD05_021E50D4 + mov r1, #1 + str r1, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021E7860 ; =0x021F7854 + add r2, r1, #0 + str r0, [sp, #8] + ldr r0, [r4, #0x10] + add r3, r1, #0 + bl MOD05_021E4EFC +_021E785C: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 +_021E7860: .word 0x021F7854 + + thumb_func_start MOD05_021E7864 +MOD05_021E7864: ; 0x021E7864 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _021E78AC + mov r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + mov r1, #0xa + mov r2, #0x6c + bl MOD05_021E5078 + ldr r0, [r4, #0x10] + mov r1, #0xa + mov r2, #0x75 + bl MOD05_021E50AC + ldr r0, [r4, #0x10] + mov r1, #0xb + mov r2, #0xd + mov r3, #1 + bl MOD05_021E50D4 + mov r0, #0xb + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _021E78B0 ; =0x021F7854 + mov r2, #0xa + str r0, [sp, #8] + ldr r0, [r4, #0x10] + mov r1, #0xc + add r3, r2, #0 + bl MOD05_021E4EFC +_021E78AC: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 +_021E78B0: .word 0x021F7854 + + thumb_func_start MOD05_021E78B4 +MOD05_021E78B4: ; 0x021E78B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #1 + bne _021E78E2 + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E50A0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E50C8 + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E5114 + ldr r0, [r4, #0x10] + mov r1, #1 + bl MOD05_021E506C +_021E78E2: + pop {r4, pc} + + thumb_func_start MOD05_021E78E4 +MOD05_021E78E4: ; 0x021E78E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #1 + bne _021E7912 + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + mov r1, #0xa + bl MOD05_021E50A0 + ldr r0, [r4, #0x10] + mov r1, #0xa + bl MOD05_021E50C8 + ldr r0, [r4, #0x10] + mov r1, #0xb + bl MOD05_021E5114 + ldr r0, [r4, #0x10] + mov r1, #0xc + bl MOD05_021E506C +_021E7912: + pop {r4, pc} + + thumb_func_start MOD05_021E7914 +MOD05_021E7914: ; 0x021E7914 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _021E7920 + bl MOD05_021E7818 +_021E7920: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7924 +MOD05_021E7924: ; 0x021E7924 + push {r3, lr} + ldr r1, [r0, #4] + cmp r1, #0 + bne _021E7930 + bl MOD05_021E7864 +_021E7930: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7934 +MOD05_021E7934: ; 0x021E7934 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _021E7940 + bl MOD05_021E78B4 +_021E7940: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7944 +MOD05_021E7944: ; 0x021E7944 + push {r3, lr} + ldr r1, [r0, #4] + cmp r1, #0 + bne _021E7950 + bl MOD05_021E78E4 +_021E7950: + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7954 +MOD05_021E7954: ; 0x021E7954 + push {r3, lr} + cmp r1, #0 + bne _021E7960 + bl MOD05_021E7914 + pop {r3, pc} +_021E7960: + bl MOD05_021E7924 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7968 +MOD05_021E7968: ; 0x021E7968 + push {r3, lr} + cmp r1, #0 + bne _021E7974 + bl MOD05_021E7934 + pop {r3, pc} +_021E7974: + bl MOD05_021E7944 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E797C +MOD05_021E797C: ; 0x021E797C + push {r3, r4, r5, lr} + sub sp, #8 + ldr r3, _021E7998 ; =0x021F7824 + add r4, sp, #0 + ldr r5, [r3] + ldr r3, [r3, #4] + str r5, [sp] + str r3, [sp, #4] + lsl r1, r1, #2 + ldr r1, [r4, r1] + bl MOD05_021E4EE4 + add sp, #8 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021E7998: .word 0x021F7824 + + thumb_func_start MOD05_021E799C +MOD05_021E799C: ; 0x021E799C + push {r3, lr} + bl FUN_02064738 + ldr r0, [r0, #0x14] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E79A8 +MOD05_021E79A8: ; 0x021E79A8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x30 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7954 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x30] + add r2, sp, #0 + bl MOD05_021E797C + str r0, [r4, #0x40] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E77F0 + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #1 + bne _021E79FC + ldr r0, _021E7A04 ; =0x000005DD + bl FUN_020054C8 +_021E79FC: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_021E7A04: .word 0x000005DD + + thumb_func_start MOD05_021E7A08 +MOD05_021E7A08: ; 0x021E7A08 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + add r5, r0, #0 + bl FUN_0206477C + ldr r0, [r4] + cmp r0, #0 + beq _021E7A24 + cmp r0, #1 + beq _021E7A46 + cmp r0, #2 + b _021E7A5E +_021E7A24: + ldr r1, [r4, #0x1c] + ldr r0, [r4, #0x28] + add r0, r1, r0 + str r0, [r4, #0x1c] + beq _021E7A3A + mov r0, #2 + ldr r1, [r4, #0x28] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [r4, #0x28] + b _021E7A5E +_021E7A3A: + mov r0, #0 + str r0, [r4, #0x28] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7A5E +_021E7A46: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x1e + blt _021E7A5E + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #0x14] +_021E7A5E: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7A6C +MOD05_021E7A6C: ; 0x021E7A6C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x40] + bl FUN_0201F744 + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7804 + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7968 + pop {r4, pc} + + thumb_func_start MOD05_021E7A88 +MOD05_021E7A88: ; 0x021E7A88 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4, #0x10] + cmp r1, #1 + beq _021E7ABA + add r1, sp, #0 + bl FUN_0206477C + ldr r1, [sp] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [r4, #0x1c] + add r0, r1, r0 + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [r4, #0x20] + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r4, #0x40] + add r1, sp, #0 + bl FUN_0201F7C8 +_021E7ABA: + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7AC0 +MOD05_021E7AC0: ; 0x021E7AC0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD05_021E4C24 + add r4, r0, #0 + mov r1, #0x16 + str r6, [sp, #0x14] + str r4, [sp, #0x18] + bl MOD05_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + bl FUN_02058744 + add r1, r0, #1 + add r0, sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + ldr r1, _021E7B04 ; =0x021F7840 + add r0, r4, #0 + add r2, sp, #8 + add r3, r7, #0 + bl MOD05_021E4DC4 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E7B04: .word 0x021F7840 + + thumb_func_start MOD05_021E7B08 +MOD05_021E7B08: ; 0x021E7B08 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x30 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x3c] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x3c] + bl FUN_02058450 + str r0, [r4, #0xc] + mov r0, #6 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E7954 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x30] + add r2, sp, #0 + bl MOD05_021E797C + str r0, [r4, #0x40] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x30] + bl MOD05_021E77F0 + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #1 + bne _021E7B6C + ldr r0, _021E7B74 ; =0x000005DD + bl FUN_020054C8 +_021E7B6C: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + nop +_021E7B74: .word 0x000005DD + + thumb_func_start MOD05_021E7B78 +MOD05_021E7B78: ; 0x021E7B78 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x3c] + ldr r1, [r4, #8] + add r5, r0, #0 + ldr r2, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _021E7B94 + bl ErrorHandling +_021E7B94: + add r0, r6, #0 + add r1, sp, #0 + bl MOD05_021F1E64 + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0x10 + add r1, r1, r0 + str r1, [sp, #4] + ldr r2, [sp, #8] + lsr r1, r0, #5 + add r1, r2, r1 + str r1, [sp, #8] + ldr r1, [r4] + cmp r1, #0 + beq _021E7BBC + cmp r1, #1 + beq _021E7BDC + cmp r1, #2 + b _021E7BF4 +_021E7BBC: + ldr r2, [r4, #0x1c] + ldr r1, [r4, #0x28] + add r1, r2, r1 + str r1, [r4, #0x1c] + beq _021E7BD0 + ldr r1, [r4, #0x28] + lsr r0, r0, #4 + sub r0, r1, r0 + str r0, [r4, #0x28] + b _021E7BF4 +_021E7BD0: + mov r0, #0 + str r0, [r4, #0x28] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E7BF4 +_021E7BDC: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x1e + blt _021E7BF4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + mov r0, #1 + str r0, [r4, #0x14] +_021E7BF4: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021E7C00 +MOD05_021E7C00: ; 0x021E7C00 + push {r4, lr} + mov r1, #0x46 + lsl r1, r1, #6 + bl FUN_02016998 + add r4, r0, #0 + bl MOD05_021E7C1C + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD05_021E7C14 +MOD05_021E7C14: ; 0x021E7C14 + ldr r3, _021E7C18 ; =0x02016A19 + bx r3 + .balign 4, 0 +_021E7C18: .word 0x02016A19 + + thumb_func_start MOD05_021E7C1C +MOD05_021E7C1C: ; 0x021E7C1C + push {r3, r4, r5, r6, r7} + sub sp, #0xc + mov r4, #0 + mov ip, r0 + add r7, sp, #0 + add r3, r4, #0 +_021E7C28: + str r3, [r7] + str r3, [r7, #4] + mov r0, #0x8c + add r1, r4, #0 + mul r1, r0 + mov r0, ip + add r2, r0, r1 + add r5, r2, #0 + str r3, [r7, #8] + mov r0, ip + str r3, [r0, r1] + str r3, [r2, #4] + str r3, [r2, #8] + str r3, [r2, #0xc] + add r6, r7, #0 + ldmia r6!, {r0, r1} + add r5, #0x68 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r6, r7, #0 + str r0, [r5] + add r5, r2, #0 + ldmia r6!, {r0, r1} + add r5, #0x74 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r6, r7, #0 + str r0, [r5] + add r5, r2, #0 + ldmia r6!, {r0, r1} + add r5, #0x80 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r0, [r5] + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + str r3, [r2, #0x64] + cmp r4, #0x20 + blo _021E7C28 + add sp, #0xc + pop {r3, r4, r5, r6, r7} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E7C80 +MOD05_021E7C80: ; 0x021E7C80 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0x20 + blt _021E7C90 + bl ErrorHandling +_021E7C90: + add r6, sp, #0 + mov r3, #0 + str r3, [r6] + str r3, [r6, #4] + mov r0, #0x8c + mul r0, r5 + str r3, [r6, #8] + str r3, [r4, r0] + add r2, r4, r0 + str r3, [r2, #4] + str r3, [r2, #8] + add r4, r2, #0 + str r3, [r2, #0xc] + add r5, r6, #0 + ldmia r5!, {r0, r1} + add r4, #0x68 + stmia r4!, {r0, r1} + ldr r0, [r5] + add r5, r6, #0 + str r0, [r4] + add r4, r2, #0 + ldmia r5!, {r0, r1} + add r4, #0x74 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + add r4, r2, #0 + ldmia r6!, {r0, r1} + add r4, #0x80 + stmia r4!, {r0, r1} + ldr r0, [r6] + str r0, [r4] + str r3, [r2, #0x64] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7CD8 +MOD05_021E7CD8: ; 0x021E7CD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldr r0, [sp, #0x28] + add r4, r1, #0 + str r0, [sp, #0x28] + mov r0, #0 + add r7, r2, #0 + add r5, r3, #0 + str r0, [sp, #4] + cmp r4, #0 + beq _021E7D0E + mov r0, #4 + bl FUN_020169D8 + str r0, [sp, #4] + ldr r2, [sp, #4] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02006864 + add r0, r4, #0 + mov r1, #0x30 + bl _u32_div_f + str r0, [sp] + b _021E7D10 +_021E7D0E: + str r0, [sp] +_021E7D10: + ldr r4, [sp, #4] + mov r6, #0 +_021E7D14: + ldr r0, [sp] + cmp r6, r0 + bhs _021E7D82 + ldr r0, [r4] + add r2, r5, #0 + str r0, [r5] + mov r0, #1 + str r0, [r5, #4] + mov r0, #0 + add r3, r4, #4 + str r0, [r5, #0xc] + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r4, #0 + str r0, [r2] + add r3, #0x10 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x74 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r4, #0 + str r0, [r2] + add r3, #0x1c + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x80 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r5, #0 + str r0, [r2] + add r2, r5, #0 + ldr r0, [r5] + add r1, r7, #0 + add r2, #0x10 + add r3, #0x64 + bl MOD05_021E7F10 + ldr r1, [r5] + add r0, r7, #0 + bl MOD05_021F4CE4 + cmp r0, #0 + bne _021E7D74 + mov r0, #0 + str r0, [r5] +_021E7D74: + add r1, r5, #0 + ldr r0, [r5] + ldr r2, [sp, #0x28] + add r1, #0x10 + bl MOD05_021D9E80 + b _021E7DBE +_021E7D82: + mov r1, #0 + add r0, sp, #8 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + add r0, r1, #0 + str r0, [r5] + str r0, [r5, #4] + add r2, r5, #0 + add r3, sp, #8 + str r0, [r5, #0xc] + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #8 + str r0, [r2] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x74 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #8 + str r0, [r2] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x80 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] +_021E7DBE: + add r6, r6, #1 + add r5, #0x8c + add r4, #0x30 + cmp r6, #0x20 + blt _021E7D14 + ldr r0, [sp, #4] + cmp r0, #0 + beq _021E7DD2 + bl FUN_02016A18 +_021E7DD2: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7DD8 +MOD05_021E7DD8: ; 0x021E7DD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + ldr r4, _021E7E94 ; =0x021F7878 + str r2, [sp, #0xc] + str r3, [sp, #0x10] + add r6, r0, #0 + str r1, [sp, #8] + add r3, sp, #0x18 + mov r2, #4 +_021E7DEA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021E7DEA + ldr r0, [r4] + ldr r5, [sp, #0x60] + str r0, [r3] + mov r7, #0 +_021E7DFA: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E7E86 + ldr r0, [r5, #8] + cmp r0, #0 + bne _021E7E86 + add r4, r5, #0 + add r4, #0x68 + ldmia r4!, {r0, r1} + add r3, sp, #0x3c + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + ldr r1, [sp, #0x3c] + ldr r0, [r6] + add r3, r5, #0 + add r0, r1, r0 + str r0, [sp, #0x3c] + ldr r1, [sp, #0x44] + ldr r0, [r6, #8] + add r3, #0x80 + add r0, r1, r0 + str r0, [sp, #0x44] + add r1, r2, #0 + ldr r0, [r5, #0x64] + add r2, sp, #0x18 + bl FUN_0201B6D0 + cmp r0, #0 + beq _021E7E86 + ldr r0, [sp, #8] + bl MOD05_021F4C9C + add r4, r0, #0 + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _021E7E50 + ldr r0, [sp, #0x10] + ldr r1, [r5, #0x64] + ldr r2, _021E7E98 ; =0x00000F33 + bl MOD05_021DBB8C +_021E7E50: + ldr r0, [r5] + add r1, r4, #0 + add r2, sp, #0x14 + bl MOD05_021DB9D4 + add r0, sp, #0x14 + ldrh r0, [r0] + add r1, sp, #0x3c + cmp r0, #0 + bne _021E7E74 + add r0, r5, #0 + add r3, r5, #0 + add r0, #0x10 + add r2, sp, #0x18 + add r3, #0x80 + bl FUN_0201B26C + b _021E7E86 +_021E7E74: + str r4, [sp] + ldr r0, [r5] + add r3, r5, #0 + str r0, [sp, #4] + ldr r0, [r5, #0x64] + add r2, sp, #0x18 + add r3, #0x80 + bl MOD05_021E7F34 +_021E7E86: + add r7, r7, #1 + add r5, #0x8c + cmp r7, #0x20 + blt _021E7DFA + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7E94: .word 0x021F7878 +_021E7E98: .word 0x00000F33 + + thumb_func_start MOD05_021E7E9C +MOD05_021E7E9C: ; 0x021E7E9C + add r0, #0x74 + bx lr + + thumb_func_start MOD05_021E7EA0 +MOD05_021E7EA0: ; 0x021E7EA0 + add r2, r1, #0 + add r2, #0x68 + add r3, r0, #0 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + bx lr + + thumb_func_start MOD05_021E7EB0 +MOD05_021E7EB0: ; 0x021E7EB0 + add r3, r1, #0 + add r2, r0, #0 + ldmia r3!, {r0, r1} + add r2, #0x68 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bx lr + + thumb_func_start MOD05_021E7EC0 +MOD05_021E7EC0: ; 0x021E7EC0 + str r1, [r0, #8] + bx lr + + thumb_func_start MOD05_021E7EC4 +MOD05_021E7EC4: ; 0x021E7EC4 + ldr r0, [r0] + bx lr + + thumb_func_start MOD05_021E7EC8 +MOD05_021E7EC8: ; 0x021E7EC8 + add r0, #0x10 + bx lr + + thumb_func_start MOD05_021E7ECC +MOD05_021E7ECC: ; 0x021E7ECC + ldr r0, [r0, #0x64] + bx lr + + thumb_func_start MOD05_021E7ED0 +MOD05_021E7ED0: ; 0x021E7ED0 + mov r2, #0x8c + mul r2, r1 + add r0, r0, r2 + bx lr + + thumb_func_start MOD05_021E7ED8 +MOD05_021E7ED8: ; 0x021E7ED8 + mov r3, #0 +_021E7EDA: + ldr r2, [r0] + cmp r2, r1 + beq _021E7EEA + add r3, r3, #1 + add r0, #0x8c + cmp r3, #0x20 + blt _021E7EDA + mov r0, #0 +_021E7EEA: + bx lr + + thumb_func_start MOD05_021E7EEC +MOD05_021E7EEC: ; 0x021E7EEC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #0x20 + blt _021E7EFA + bl ErrorHandling +_021E7EFA: + mov r0, #0x8c + mul r0, r4 + add r4, r5, r0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _021E7F0A + bl ErrorHandling +_021E7F0A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7F10 +MOD05_021E7F10: ; 0x021E7F10 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + bl MOD05_021F4BD0 + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r1, r0, r1 + add r0, r5, #0 + str r1, [r4] + bl FUN_020B80B4 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E7F34 +MOD05_021E7F34: ; 0x021E7F34 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, r1, #0 + add r4, r2, #0 + add r5, r3, #0 + bl FUN_020B8474 + ldr r1, _021E7FB4 ; =0x021CEDD4 + add r0, r4, #0 + bl MI_Copy36B + ldr r1, _021E7FB8 ; =0x021CED98 + mov r0, #0xa4 + ldr r2, [r1, #0x7c] + bic r2, r0 + add r0, r5, #0 + str r2, [r1, #0x7c] + bl FUN_020B844C + bl FUN_020B849C + add r2, sp, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, #2 + add r3, sp, #0 + bl MOD05_021DB9E0 + add r0, sp, #0 + ldrh r0, [r0] + ldr r1, [sp, #0x18] + bl MOD05_021DB9F8 + add r6, r0, #0 + add r0, sp, #0 + ldrh r0, [r0, #2] + mov r5, #0xff + mov r4, #0 + cmp r0, #0 + ble _021E7FB0 +_021E7F84: + lsl r0, r4, #2 + add r2, r6, r0 + ldrh r0, [r6, r0] + cmp r5, r0 + beq _021E7F96 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + mov r3, #1 + b _021E7F98 +_021E7F96: + mov r3, #0 +_021E7F98: + ldrh r2, [r2, #2] + add r0, r7, #0 + add r1, r5, #0 + bl FUN_020BAFB8 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, sp, #0 + ldrh r0, [r0, #2] + cmp r4, r0 + blt _021E7F84 +_021E7FB0: + pop {r3, r4, r5, r6, r7, pc} + nop +_021E7FB4: .word 0x021CEDD4 +_021E7FB8: .word 0x021CED98 + + thumb_func_start MOD05_021E7FBC +MOD05_021E7FBC: ; 0x021E7FBC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r5, _021E8058 ; =0x021F786C + add r6, r0, #0 + add r7, r1, #0 + ldmia r5!, {r0, r1} + add r4, sp, #4 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + mov r4, #0 + mov r0, #0x8c +_021E7FD4: + add r1, r4, #0 + mul r1, r0 + add r5, r6, r1 + ldr r1, [r5, #4] + cmp r1, #0 + bne _021E8044 + mov r0, #1 + str r0, [r5, #4] + add r6, r5, #0 + ldmia r3!, {r0, r1} + add r6, #0x68 + stmia r6!, {r0, r1} + ldr r0, [r3] + str r0, [r6] + ldr r6, [sp, #0x28] + cmp r6, #0 + beq _021E8008 + mov r0, #1 + str r0, [r5, #0xc] + add r3, r5, #0 + ldmia r6!, {r0, r1} + add r3, #0x74 + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + b _021E800C +_021E8008: + mov r0, #0 + str r0, [r5, #0xc] +_021E800C: + add r6, sp, #4 + add r3, r5, #0 + ldmia r6!, {r0, r1} + add r3, #0x80 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r7, #0 + str r0, [r3] + add r3, r5, #0 + str r2, [r5] + add r0, r2, #0 + add r2, r5, #0 + add r2, #0x10 + add r3, #0x64 + bl MOD05_021E7F10 + ldr r0, [sp, #0x2c] + mov r1, #0 + str r0, [sp] + ldr r0, [r5] + add r5, #0x10 + add r2, r1, #0 + add r3, r5, #0 + bl MOD05_021D9DC0 + add sp, #0x10 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021E8044: + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r4, #0x20 + blo _021E7FD4 + bl ErrorHandling + mov r0, #0x20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E8058: .word 0x021F786C + + thumb_func_start MOD05_021E805C +MOD05_021E805C: ; 0x021E805C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + ldr r4, _021E80F4 ; =0x021F789C + str r0, [sp, #8] + str r1, [sp, #0xc] + add r3, sp, #0x14 + mov r2, #4 +_021E806A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021E806A + ldr r0, [r4] + mov r4, #0 + str r0, [r3] + add r7, sp, #0x14 +_021E807A: + mov r0, #0x8c + add r1, r4, #0 + mul r1, r0 + ldr r0, [sp, #8] + add r5, r0, r1 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021E80E4 + ldr r0, [r5, #8] + cmp r0, #0 + bne _021E80E4 + ldr r0, [sp, #0xc] + bl MOD05_021F4C9C + add r6, r0, #0 + ldr r0, [r5] + add r1, r6, #0 + add r2, sp, #0x10 + bl MOD05_021DB9D4 + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _021E80B2 + add r1, r5, #0 + add r0, r7, #0 + add r1, #0x74 + bl FUN_0201CAA8 +_021E80B2: + add r0, sp, #0x10 + ldrh r0, [r0] + cmp r0, #0 + bne _021E80CE + add r0, r5, #0 + add r1, r5, #0 + add r5, #0x80 + add r0, #0x10 + add r1, #0x68 + add r2, r7, #0 + add r3, r5, #0 + bl FUN_0201B26C + b _021E80E4 +_021E80CE: + str r6, [sp] + ldr r0, [r5] + add r1, r5, #0 + str r0, [sp, #4] + ldr r0, [r5, #0x64] + add r5, #0x80 + add r1, #0x68 + add r2, r7, #0 + add r3, r5, #0 + bl MOD05_021E7F34 +_021E80E4: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x20 + blo _021E807A + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E80F4: .word 0x021F789C + + thumb_func_start MOD05_021E80F8 +MOD05_021E80F8: ; 0x021E80F8 + push {r3, lr} + mov r1, #0x14 + bl FUN_02016998 + add r3, r0, #0 + mov r2, #0x14 + mov r1, #0 +_021E8106: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _021E8106 + pop {r3, pc} + + thumb_func_start MOD05_021E8110 +MOD05_021E8110: ; 0x021E8110 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #0x13] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E8120 + bl FUN_02019178 +_021E8120: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD05_021E8128 +MOD05_021E8128: ; 0x021E8128 + strb r1, [r0, #0x12] + strh r2, [r0, #0x10] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E8130 +MOD05_021E8130: ; 0x021E8130 + ldrb r3, [r0, #0x13] + mov r2, #0x7f + bic r3, r2 + mov r2, #0x7f + and r1, r2 + orr r1, r3 + strb r1, [r0, #0x13] + bx lr + + thumb_func_start MOD05_021E8140 +MOD05_021E8140: ; 0x021E8140 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E8144 +MOD05_021E8144: ; 0x021E8144 + ldrb r0, [r0, #0x12] + bx lr + + thumb_func_start MOD05_021E8148 +MOD05_021E8148: ; 0x021E8148 + ldrb r0, [r0, #0x13] + lsl r0, r0, #0x19 + lsr r0, r0, #0x19 + bne _021E8154 + mov r0, #1 + bx lr +_021E8154: + mov r0, #0 + bx lr + + thumb_func_start MOD05_021E8158 +MOD05_021E8158: ; 0x021E8158 + push {r4, lr} + ldr r4, [r0, #0x60] + ldrb r1, [r4, #0x13] + lsl r1, r1, #0x19 + lsr r1, r1, #0x19 + cmp r1, #4 + bhi _021E81BA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E8172: ; jump table + .short _021E81BA - _021E8172 - 2 ; case 0 + .short _021E817C - _021E8172 - 2 ; case 1 + .short _021E818A - _021E8172 - 2 ; case 2 + .short _021E819C - _021E8172 - 2 ; case 3 + .short _021E81AE - _021E8172 - 2 ; case 4 +_021E817C: + bl MOD05_021E81D0 + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] + pop {r4, pc} +_021E818A: + bl MOD05_021E82A0 + cmp r0, #1 + bne _021E81BA + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] + pop {r4, pc} +_021E819C: + bl MOD05_021E8260 + cmp r0, #1 + bne _021E81BA + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] + pop {r4, pc} +_021E81AE: + bl MOD05_021E820C + ldrb r1, [r4, #0x13] + mov r0, #0x7f + bic r1, r0 + strb r1, [r4, #0x13] +_021E81BA: + pop {r4, pc} + + thumb_func_start MOD05_021E81BC +MOD05_021E81BC: ; 0x021E81BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x60] + bl MOD05_021E8130 + add r0, r4, #0 + bl MOD05_021E8158 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E81D0 +MOD05_021E81D0: ; 0x021E81D0 + push {r4, lr} + mov r1, #3 + add r4, r0, #0 + add r3, r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + sub r3, #0x33 + bl FUN_020179E0 + ldr r1, [r4, #0x60] + ldrb r0, [r1, #0x13] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _021E8200 + ldrb r2, [r1, #0x12] + ldr r0, [r4, #8] + mov r3, #3 + bl FUN_020546E0 + ldr r2, [r4, #0x60] + mov r0, #0x80 + ldrb r1, [r2, #0x13] + orr r0, r1 + strb r0, [r2, #0x13] +_021E8200: + ldr r0, [r4, #0x60] + ldrb r1, [r0, #0x12] + ldrh r2, [r0, #0x10] + bl FUN_02054744 + pop {r4, pc} + + thumb_func_start MOD05_021E820C +MOD05_021E820C: ; 0x021E820C + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #0x60] + ldrb r1, [r0, #0x13] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + beq _021E825A + bl FUN_02019178 + mov r0, #0x12 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r4, #8] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017CD0 + mov r1, #3 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + ldr r2, [r4, #0x60] + mov r0, #0x80 + ldrb r1, [r2, #0x13] + bic r1, r0 + strb r1, [r2, #0x13] +_021E825A: + add sp, #0x10 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8260 +MOD05_021E8260: ; 0x021E8260 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017B54 + cmp r0, #0 + bne _021E8274 + mov r0, #1 + pop {r4, pc} +_021E8274: + mov r1, #0x2f + mvn r1, r1 + cmp r0, r1 + ble _021E8280 + cmp r0, #0 + blt _021E828E +_021E8280: + mov r1, #3 + add r3, r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + sub r3, #0x33 + bl FUN_020179E0 +_021E828E: + ldr r0, [r4, #8] + mov r1, #3 + mov r2, #4 + mov r3, #0x10 + bl FUN_020179E0 + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E82A0 +MOD05_021E82A0: ; 0x021E82A0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017B54 + mov r1, #0x2f + mvn r1, r1 + cmp r0, r1 + bne _021E82EC + mov r0, #0x12 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0x10 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r4, #8] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r4, #8] + mov r1, #3 + bl FUN_02017CD0 + mov r1, #3 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + add sp, #0x10 + mov r0, #1 + pop {r4, pc} +_021E82EC: + ble _021E82F2 + cmp r0, #0 + blt _021E82FE +_021E82F2: + mov r1, #3 + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 +_021E82FE: + ldr r0, [r4, #8] + mov r1, #3 + mov r2, #5 + mov r3, #0x10 + bl FUN_020179E0 + mov r0, #0 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD05_021E8310 +MOD05_021E8310: ; 0x021E8310 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [r1, #0xc] + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02034E30 + bl FUN_02034DC0 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02024DA0 + add r7, r0, #0 + ldr r0, [r6] + bl FUN_02034824 + str r0, [r5, #4] + add r0, r7, #0 + bl FUN_02024D64 + cmp r0, #0 + beq _021E8344 + add r0, r7, #0 + bl FUN_02024440 + b _021E8346 +_021E8344: + mov r0, #0 +_021E8346: + str r0, [r5] + add r0, r4, #0 + bl FUN_020238F4 + str r0, [r5, #8] + add r0, r4, #0 + bl FUN_02023918 + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E835C +MOD05_021E835C: ; 0x021E835C + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldr r2, [r4, #4] + mov r1, #0 + add r5, r0, #0 + bl FUN_0200AFF4 + ldr r2, [r4, #8] + add r0, r5, #0 + mov r1, #1 + bl FUN_0200ABC0 + ldr r0, [r4, #8] + bl FUN_020239F4 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + add r0, r5, #0 + mov r1, #2 + bl FUN_0200AD38 + ldr r2, [r4] + cmp r2, #0x64 + blt _021E839A + mov r3, #3 + mov r0, #0 + b _021E83A8 +_021E839A: + cmp r2, #0xa + blt _021E83A4 + mov r3, #3 + mov r0, #1 + b _021E83A8 +_021E83A4: + mov r3, #2 + mov r0, #1 +_021E83A8: + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #3 + bl FUN_0200AD38 + ldr r0, [r4, #0xc] + bl FUN_02029EBC + add r2, r0, #0 + cmp r2, #0x64 + blt _021E83C8 + mov r3, #3 + mov r0, #0 + b _021E83D6 +_021E83C8: + cmp r2, #0xa + blt _021E83D2 + mov r3, #3 + mov r0, #1 + b _021E83D6 +_021E83D2: + mov r3, #2 + mov r0, #1 +_021E83D6: + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #4 + bl FUN_0200AD38 + ldr r0, [r4, #0xc] + bl FUN_02029EC0 + mov r3, #2 + add r2, r0, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #5 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E8400 +MOD05_021E8400: ; 0x021E8400 + ldr r0, [r0] + cmp r0, #0 + beq _021E840A + mov r0, #0xa + bx lr +_021E840A: + mov r0, #8 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021E8410 +MOD05_021E8410: ; 0x021E8410 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #0 + mov r1, #1 + bl FUN_02002E4C + add r4, r0, #0 + mov r0, #0 + mov r1, #3 + bl FUN_02002E4C + add r0, r4, r0 + str r0, [sp, #0x14] + mov r4, #0 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r3, [r5, #4] + add r2, r4, #0 + bl FUN_0200A9C4 + add r1, r4, #0 + add r6, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [r5, #0x10] + add r2, r6, #0 + add r3, r1, #0 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, _021E84EC ; =0x021F78D4 + ldr r7, _021E84F0 ; =0x021F78C4 + str r0, [sp, #0xc] +_021E8460: + ldr r0, [sp, #0xc] + ldr r1, [r0] + cmp r1, #3 + bne _021E846E + ldr r0, [r5, #0x1c] + cmp r0, #0 + beq _021E84D6 +_021E846E: + ldr r0, [sp, #0x14] + add r4, r4, r0 + ldr r0, [r5, #0x18] + bl FUN_0200A914 + add r6, r0, #0 + mov r1, #0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r5, #0x10] + add r2, r6, #0 + add r3, r1, #0 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + sub r2, r7, #4 + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r2, [r2] + ldr r3, [r5, #4] + bl FUN_0200A9C4 + add r6, r0, #0 + mov r0, #0 + mov r1, #2 + bl FUN_02002E4C + add r2, r0, #0 + mov r0, #0 + add r1, r6, #0 + bl FUN_02002E14 + mov r1, #0x68 + sub r3, r1, r0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r5, #0x10] + mov r1, #0 + add r2, r6, #0 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 +_021E84D6: + ldr r0, [sp, #0xc] + add r7, r7, #4 + add r0, r0, #4 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r0, r0, #1 + str r0, [sp, #0x10] + cmp r0, #5 + blo _021E8460 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E84EC: .word 0x021F78D4 +_021E84F0: .word 0x021F78C4 + + thumb_func_start MOD05_021E84F4 +MOD05_021E84F4: ; 0x021E84F4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #0x10 + bl FUN_02016998 + str r0, [r4, #0x10] + mov r3, #1 + str r3, [sp] + ldr r0, [r4, #0x2c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _021E8564 ; =0x0000027F + str r0, [sp, #0x10] + ldrb r2, [r4, #8] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #4] + ldr r2, _021E8568 ; =0x000003D9 + str r0, [sp, #4] + ldrb r1, [r4, #8] + ldr r0, [r4, #0xc] + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + mov r1, #6 + bl FUN_02002E4C + add r1, r0, #0 + ldr r0, [r4, #0x10] + bl FUN_02019620 + add r0, r4, #0 + bl MOD05_021E8410 + ldr r0, [r4, #0x10] + ldr r2, _021E8568 ; =0x000003D9 + mov r1, #0 + mov r3, #0xb + bl FUN_0200CCA4 + add sp, #0x14 + pop {r3, r4, pc} + .balign 4, 0 +_021E8564: .word 0x0000027F +_021E8568: .word 0x000003D9 + + thumb_func_start MOD05_021E856C +MOD05_021E856C: ; 0x021E856C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200CCF8 + ldr r0, [r4, #0x10] + bl FUN_02019178 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8588 +MOD05_021E8588: ; 0x021E8588 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x34 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + str r6, [r4] + str r5, [r4, #4] + strb r7, [r4, #8] + ldr r0, [r6, #8] + str r0, [r4, #0xc] + add r0, r5, #0 + bl FUN_0200AA80 + str r0, [r4, #0x14] + ldr r2, _021E85E0 ; =0x000001E3 + mov r0, #1 + mov r1, #0x1a + add r3, r5, #0 + bl FUN_0200A86C + str r0, [r4, #0x18] + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x1c + bl MOD05_021E8310 + add r1, r4, #0 + ldr r0, [r4, #0x14] + add r1, #0x1c + bl MOD05_021E835C + mov r0, #0xd + str r0, [r4, #0x2c] + add r0, r4, #0 + add r0, #0x1c + bl MOD05_021E8400 + str r0, [r4, #0x30] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021E85E0: .word 0x000001E3 + + thumb_func_start MOD05_021E85E4 +MOD05_021E85E4: ; 0x021E85E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x18] + bl FUN_0200A8B8 + ldr r0, [r4, #0x14] + bl FUN_0200AB18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD05_021E85FC +MOD05_021E85FC: ; 0x021E85FC + push {r4, lr} + add r4, r0, #0 + bl FUN_02034E48 + add r0, r4, #0 + mov r1, #4 + mov r2, #0 + bl MOD05_021EFA9C + ldr r0, [r4, #0x38] + bl FUN_02055320 + ldr r1, [r4, #0x1c] + str r0, [r1, #8] + ldr r0, [r4, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x1c] + str r0, [r1, #0xc] + mov r1, #0 + ldr r0, [r4, #0x1c] + mvn r1, r1 + str r1, [r0, #4] + ldr r0, [r4, #0x38] + bl FUN_020552F8 + ldr r1, [r4, #0x1c] + str r0, [r1, #0x10] + ldr r0, [r4, #0xc] + bl FUN_02022720 + cmp r0, #2 + bne _021E8642 + mov r0, #1 + pop {r4, pc} +_021E8642: + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8648 +MOD05_021E8648: ; 0x021E8648 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _021E8690 ; =MOD05_021E8728 + ldr r3, [r5, #0x28] + mov r1, #0x38 + mov r2, #5 + bl FUN_020061E8 + add r6, r0, #0 + bl FUN_0201B6C8 + add r4, r0, #0 + add r2, r4, #4 + mov r3, #5 +_021E8664: + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + sub r3, r3, #1 + bne _021E8664 + ldr r0, [r5] + str r0, [r2] + str r6, [r4, #0x34] + mov r0, #0 + str r0, [r4, #0x30] + bl GX_GetBankForLCDC + str r0, [r4] + add r0, r4, #4 + bl MOD05_021E87C8 + ldr r0, _021E8694 ; =MOD05_021E8768 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA98 + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E8690: .word MOD05_021E8728 +_021E8694: .word MOD05_021E8768 + + thumb_func_start MOD05_021E8698 +MOD05_021E8698: ; 0x021E8698 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + bl GX_SetGraphicsMode + ldr r0, [r4] + ldr r0, [r0] + bl GX_SetBankForLCDC + ldr r0, [r4] + ldr r0, [r0, #4] + cmp r0, #0xa + bgt _021E86C8 + bge _021E86EC + cmp r0, #6 + bgt _021E8708 + cmp r0, #2 + blt _021E8708 + beq _021E86CE + cmp r0, #6 + beq _021E86DE + b _021E8708 +_021E86C8: + cmp r0, #0xe + beq _021E86FA + b _021E8708 +_021E86CE: + mov r1, #0x1a + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E870E +_021E86DE: + mov r2, #2 + ldr r1, _021E871C ; =0x06820000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E870E +_021E86EC: + mov r2, #2 + ldr r1, _021E8720 ; =0x06840000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E870E +_021E86FA: + mov r2, #2 + ldr r1, _021E8724 ; =0x06860000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E870E +_021E8708: + mov r0, #0 + bl GX_SetBankForLCDC +_021E870E: + ldr r0, [r4] + ldr r0, [r0, #0x34] + bl FUN_0200621C + mov r0, #0 + str r0, [r4] + pop {r4, pc} + .balign 4, 0 +_021E871C: .word 0x06820000 +_021E8720: .word 0x06840000 +_021E8724: .word 0x06860000 + + thumb_func_start MOD05_021E8728 +MOD05_021E8728: ; 0x021E8728 + push {r4, r5, r6, r7} + ldr r0, [r1, #0x30] + cmp r0, #0 + beq _021E8760 + ldr r6, [r1, #0x20] + ldr r5, [r1, #0x10] + ldr r4, [r1, #0x1c] + ldr r3, [r1, #0x18] + ldr r2, [r1, #0x14] + ldr r0, [r1, #0x24] + ldr r1, [r1, #0x28] + lsl r5, r5, #0x14 + lsl r7, r1, #8 + lsl r1, r3, #0x18 + lsl r3, r2, #0x1d + mov r2, #2 + lsl r2, r2, #0x1e + orr r3, r2 + lsl r2, r4, #0x19 + orr r2, r3 + orr r1, r2 + lsl r6, r6, #0x10 + orr r1, r5 + orr r1, r6 + orr r1, r7 + orr r1, r0 + ldr r0, _021E8764 ; =0x04000064 + str r1, [r0] +_021E8760: + pop {r4, r5, r6, r7} + bx lr + .balign 4, 0 +_021E8764: .word 0x04000064 + + thumb_func_start MOD05_021E8768 +MOD05_021E8768: ; 0x021E8768 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0xa + bgt _021E8786 + bge _021E879C + cmp r0, #6 + bgt _021E87AC + cmp r0, #2 + blt _021E87AC + beq _021E878C + cmp r0, #6 + beq _021E8794 + b _021E87AC +_021E8786: + cmp r0, #0xe + beq _021E87A4 + b _021E87AC +_021E878C: + mov r0, #1 + bl GX_SetBankForLCDC + b _021E87B2 +_021E8794: + mov r0, #2 + bl GX_SetBankForLCDC + b _021E87B2 +_021E879C: + mov r0, #4 + bl GX_SetBankForLCDC + b _021E87B2 +_021E87A4: + mov r0, #8 + bl GX_SetBankForLCDC + b _021E87B2 +_021E87AC: + mov r0, #0 + bl GX_SetBankForLCDC +_021E87B2: + ldr r0, [r4, #4] + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + bl GX_SetGraphicsMode + mov r0, #1 + str r0, [r4, #0x30] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021E87C8 +MOD05_021E87C8: ; 0x021E87C8 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0xa + bgt _021E87E4 + bge _021E8808 + cmp r0, #6 + bgt _021E8822 + cmp r0, #2 + blt _021E8822 + beq _021E87EA + cmp r0, #6 + beq _021E87FA + b _021E8822 +_021E87E4: + cmp r0, #0xe + beq _021E8816 + b _021E8822 +_021E87EA: + mov r1, #0x1a + mov r2, #2 + mov r0, #0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E8822 +_021E87FA: + mov r2, #2 + ldr r1, _021E8850 ; =0x06820000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E8822 +_021E8808: + mov r2, #2 + ldr r1, _021E8854 ; =0x06840000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast + b _021E8822 +_021E8816: + mov r2, #2 + ldr r1, _021E8858 ; =0x06860000 + mov r0, #0 + lsl r2, r2, #0x10 + bl MIi_CpuClearFast +_021E8822: + ldr r5, [r4, #0x10] + ldr r1, [r4, #0x1c] + ldr r3, [r4, #0x18] + ldr r6, [r4, #0x14] + ldr r0, [r4, #0xc] + mov r4, #2 + lsl r2, r1, #0x10 + lsl r1, r0, #0x14 + lsl r5, r5, #0x1d + lsl r4, r4, #0x1e + orr r4, r5 + lsl r3, r3, #0x19 + lsl r0, r6, #0x18 + orr r3, r4 + orr r0, r3 + orr r0, r1 + add r1, r2, #0 + orr r1, r0 + mov r0, #0x10 + orr r1, r0 + ldr r0, _021E885C ; =0x04000064 + str r1, [r0] + pop {r4, r5, r6, pc} + .balign 4, 0 +_021E8850: .word 0x06820000 +_021E8854: .word 0x06840000 +_021E8858: .word 0x06860000 +_021E885C: .word 0x04000064 + + thumb_func_start MOD05_021E8860 +MOD05_021E8860: ; 0x021E8860 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r4, r1, #0 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + bl GX_ResetBankForBG + mov r0, #4 + add r1, r0, #0 + bl FUN_02016998 + add r7, r0, #0 + mov r0, #0 + add r1, r7, #0 + mov r2, #4 + bl MIi_CpuClear32 + ldr r6, _021E88BC ; =0x021F78E4 + add r3, sp, #0 + mov r2, #5 +_021E889E: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021E889E + ldr r0, [r6] + str r0, [r3] + add r0, sp, #0 + str r5, [sp, #0x20] + str r4, [sp, #0x24] + bl MOD05_021E8648 + str r0, [r7] + add r0, r7, #0 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021E88BC: .word 0x021F78E4 + + thumb_func_start MOD05_021E88C0 +MOD05_021E88C0: ; 0x021E88C0 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + ldr r0, [r4] + mov r2, #0 + add r3, r1, #0 + bl MOD05_021E8698 + mov r0, #4 + bl GX_SetBankForBG + mov r0, #0xe + mov r1, #1 + bl FUN_0201E6E4 + ldr r1, [r4] + mov r0, #4 + bl FUN_02016A8C + pop {r4, pc} + + thumb_func_start MOD05_021E88E8 +MOD05_021E88E8: ; 0x021E88E8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #5 + bls _021E88FA + b _021E8A56 +_021E88FA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8906: ; jump table + .short _021E8912 - _021E8906 - 2 ; case 0 + .short _021E8936 - _021E8906 - 2 ; case 1 + .short _021E8952 - _021E8906 - 2 ; case 2 + .short _021E899C - _021E8906 - 2 ; case 3 + .short _021E89F4 - _021E8906 - 2 ; case 4 + .short _021E8A1C - _021E8906 - 2 ; case 5 +_021E8912: + mov r0, #4 + mov r1, #0x20 + bl FUN_02016998 + str r0, [r4, #0xc] + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + ldr r5, [r4, #0xc] + bl MOD05_021E3768 + str r0, [r5, #0x1c] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8936: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8952: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021E8A56 + mov r1, #0 + str r1, [r4, #4] + ldr r0, [r4] + mov r2, #2 + add r0, r0, #1 + str r0, [r4] + ldr r0, _021E8A5C ; =0xFFFFD000 + str r1, [sp] + str r0, [sp, #4] + lsl r0, r0, #2 + str r0, [sp, #8] + ldr r1, [r5, #0x1c] + add r0, r4, #0 + mov r3, #7 + bl MOD05_021E37CC + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl FUN_0201F010 + mov r2, #0x32 + add r1, r0, #0 + mov r0, #6 + lsl r2, r2, #0xc + mov r3, #0x1e + str r0, [sp] + add r0, r5, #4 + add r2, r1, r2 + lsl r3, r3, #0xc + bl MOD05_021E3644 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021E899C: + add r0, r5, #4 + bl MOD05_021E36A4 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, [r5] + bl FUN_0201EFE0 + cmp r6, #1 + bne _021E8A56 + ldr r0, [r4] + mov r2, #2 + add r0, r0, #1 + str r0, [r4] + ldr r0, _021E8A5C ; =0xFFFFD000 + mov r3, #6 + str r0, [sp] + mov r0, #0xff + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r1, [r5, #0x1c] + add r0, r4, #0 + bl MOD05_021E3888 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl FUN_0201F010 + mov r2, #0x32 + add r1, r0, #0 + mov r0, #6 + lsl r2, r2, #0xc + str r0, [sp] + ldr r3, _021E8A60 ; =0xFFF01000 + add r0, r5, #4 + sub r2, r1, r2 + bl MOD05_021E3644 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021E89F4: + add r0, r5, #4 + bl MOD05_021E36A4 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, [r5] + bl FUN_0201EFE0 + cmp r6, #1 + bne _021E8A56 + add r0, r4, #0 + bl MOD05_021E35AC + cmp r0, #1 + bne _021E8A56 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8A1C: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, _021E8A64 ; =0x04000010 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E8A42 + mov r0, #1 + str r0, [r1] +_021E8A42: + ldr r0, [r5, #0x1c] + bl MOD05_021E37A4 + ldr r1, [r4, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C +_021E8A56: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E8A5C: .word 0xFFFFD000 +_021E8A60: .word 0xFFF01000 +_021E8A64: .word 0x04000010 + + thumb_func_start MOD05_021E8A68 +MOD05_021E8A68: ; 0x021E8A68 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #5 + bls _021E8A7A + b _021E8BD6 +_021E8A7A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8A86: ; jump table + .short _021E8A92 - _021E8A86 - 2 ; case 0 + .short _021E8AB6 - _021E8A86 - 2 ; case 1 + .short _021E8AD2 - _021E8A86 - 2 ; case 2 + .short _021E8B1C - _021E8A86 - 2 ; case 3 + .short _021E8B74 - _021E8A86 - 2 ; case 4 + .short _021E8B9C - _021E8A86 - 2 ; case 5 +_021E8A92: + mov r0, #4 + mov r1, #0x20 + bl FUN_02016998 + str r0, [r4, #0xc] + mov r1, #0 + mov r2, #0x20 + bl Call_FillMemWithValue + ldr r5, [r4, #0xc] + bl MOD05_021E3768 + str r0, [r5, #0x1c] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8AB6: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8AD2: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021E8BD6 + mov r1, #0 + str r1, [r4, #4] + ldr r0, [r4] + mov r2, #5 + add r0, r0, #1 + str r0, [r4] + ldr r0, _021E8BDC ; =0xFFFFE000 + str r1, [sp] + str r0, [sp, #4] + ldr r0, _021E8BE0 ; =0xFFFF4000 + mov r3, #7 + str r0, [sp, #8] + ldr r1, [r5, #0x1c] + add r0, r4, #0 + bl MOD05_021E37CC + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl FUN_0201F010 + mov r2, #0x32 + add r1, r0, #0 + mov r0, #6 + lsl r2, r2, #0xc + mov r3, #0x1e + str r0, [sp] + add r0, r5, #4 + add r2, r1, r2 + lsl r3, r3, #0xc + bl MOD05_021E3644 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021E8B1C: + add r0, r5, #4 + bl MOD05_021E36A4 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, [r5] + bl FUN_0201EFE0 + cmp r6, #1 + bne _021E8BD6 + ldr r0, [r4] + mov r2, #5 + add r0, r0, #1 + str r0, [r4] + ldr r0, _021E8BDC ; =0xFFFFE000 + mov r3, #6 + str r0, [sp] + mov r0, #0xff + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r1, [r5, #0x1c] + add r0, r4, #0 + bl MOD05_021E3888 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl FUN_0201F010 + mov r2, #0x1e + add r1, r0, #0 + mov r0, #6 + lsl r2, r2, #0xc + str r0, [sp] + ldr r3, _021E8BE4 ; =0xFFF9C000 + add r0, r5, #4 + sub r2, r1, r2 + bl MOD05_021E3644 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_021E8B74: + add r0, r5, #4 + bl MOD05_021E36A4 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r1, [r5] + bl FUN_0201EFE0 + cmp r6, #1 + bne _021E8BD6 + add r0, r4, #0 + bl MOD05_021E35AC + cmp r0, #1 + bne _021E8BD6 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8B9C: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, _021E8BE8 ; =0x04000010 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E8BC2 + mov r0, #1 + str r0, [r1] +_021E8BC2: + ldr r0, [r5, #0x1c] + bl MOD05_021E37A4 + ldr r1, [r4, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C +_021E8BD6: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E8BDC: .word 0xFFFFE000 +_021E8BE0: .word 0xFFFF4000 +_021E8BE4: .word 0xFFF9C000 +_021E8BE8: .word 0x04000010 + + thumb_func_start MOD05_021E8BEC +MOD05_021E8BEC: ; 0x021E8BEC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #6 + bls _021E8BFE + b _021E8D16 +_021E8BFE: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8C0A: ; jump table + .short _021E8C18 - _021E8C0A - 2 ; case 0 + .short _021E8C4A - _021E8C0A - 2 ; case 1 + .short _021E8C6A - _021E8C0A - 2 ; case 2 + .short _021E8CA0 - _021E8C0A - 2 ; case 3 + .short _021E8CB2 - _021E8C0A - 2 ; case 4 + .short _021E8CD4 - _021E8C0A - 2 ; case 5 + .short _021E8CE6 - _021E8C0A - 2 ; case 6 +_021E8C18: + mov r0, #4 + mov r1, #0x10 + bl FUN_02016998 + str r0, [r4, #0xc] + mov r2, #0x10 + mov r1, #0 +_021E8C26: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021E8C26 + ldr r0, [r4, #0xc] + mov r1, #4 + bl MOD05_021E8E8C + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8C4A: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + mov r0, #0xa + str r0, [r5, #0xc] + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8C6A: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021E8D16 + ldr r0, [r4] + mov r3, #0x32 + add r0, r0, #1 + str r0, [r4] + mov r0, #0xc + str r0, [r5, #0xc] + lsl r0, r0, #0xc + str r0, [sp] + lsl r3, r3, #4 + str r3, [sp, #4] + ldr r0, _021E8D1C ; =0x04000010 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + add r0, r5, #0 + mov r2, #0xbf + sub r3, #0x76 + bl MOD05_021E8EC0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021E8CA0: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021E8D16 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8CB2: + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x1e + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8CD4: + bl FUN_0200E308 + cmp r0, #0 + beq _021E8D16 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8CE6: + add r0, r5, #0 + bl MOD05_021E8EA8 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E8D00 + mov r0, #1 + str r0, [r1] +_021E8D00: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021E8D16: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021E8D1C: .word 0x04000010 + + thumb_func_start MOD05_021E8D20 +MOD05_021E8D20: ; 0x021E8D20 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #6 + bls _021E8D32 + b _021E8E4C +_021E8D32: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E8D3E: ; jump table + .short _021E8D4C - _021E8D3E - 2 ; case 0 + .short _021E8D7E - _021E8D3E - 2 ; case 1 + .short _021E8D9E - _021E8D3E - 2 ; case 2 + .short _021E8DD6 - _021E8D3E - 2 ; case 3 + .short _021E8DE8 - _021E8D3E - 2 ; case 4 + .short _021E8E0A - _021E8D3E - 2 ; case 5 + .short _021E8E1C - _021E8D3E - 2 ; case 6 +_021E8D4C: + mov r0, #4 + mov r1, #0x10 + bl FUN_02016998 + str r0, [r4, #0xc] + mov r2, #0x10 + mov r1, #0 +_021E8D5A: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021E8D5A + ldr r0, [r4, #0xc] + mov r1, #4 + bl MOD05_021E8E8C + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8D7E: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r4, #4 + bl MOD05_021E3474 + mov r0, #0xa + str r0, [r5, #0xc] + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8D9E: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021E8E4C + ldr r0, [r4] + mov r3, #0x32 + add r0, r0, #1 + str r0, [r4] + mov r0, #0xc + str r0, [r5, #0xc] + mov r0, #0xf + lsl r0, r0, #0xc + str r0, [sp] + lsl r3, r3, #4 + str r3, [sp, #4] + ldr r0, _021E8E50 ; =0x04000010 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + add r0, r5, #0 + mov r2, #0xbf + add r3, #0xdf + bl MOD05_021E8EC0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} +_021E8DD6: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021E8E4C + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8DE8: + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x1e + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8E0A: + bl FUN_0200E308 + cmp r0, #0 + beq _021E8E4C + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8E1C: + add r0, r5, #0 + bl MOD05_021E8EA8 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E8E36 + mov r0, #1 + str r0, [r1] +_021E8E36: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021E8E4C: + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021E8E50: .word 0x04000010 + + thumb_func_start MOD05_021E8E54 +MOD05_021E8E54: ; 0x021E8E54 + ldr r3, _021E8E60 ; =0x0200CA61 + mov r2, #1 + add r1, r0, #0 + ldr r0, _021E8E64 ; =MOD05_021E8E68 + lsl r2, r2, #0xa + bx r3 + .balign 4, 0 +_021E8E60: .word 0x0200CA61 +_021E8E64: .word MOD05_021E8E68 + + thumb_func_start MOD05_021E8E68 +MOD05_021E8E68: ; 0x021E8E68 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #8] + cmp r0, #2 + blo _021E8E7C + ldr r0, [r4] + bl FUN_02012B30 + mov r0, #0 + str r0, [r4, #8] +_021E8E7C: + ldr r0, [r4] + bl FUN_02012B68 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8E8C +MOD05_021E8E8C: ; 0x021E8E8C + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl FUN_02012A00 + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + add r0, r4, #0 + bl MOD05_021E8E54 + str r0, [r4, #4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8EA8 +MOD05_021E8EA8: ; 0x021E8EA8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0200CAB4 + ldr r0, [r4] + bl FUN_02012AC4 + ldr r0, [r4] + bl FUN_02012B00 + pop {r4, pc} + + thumb_func_start MOD05_021E8EC0 +MOD05_021E8EC0: ; 0x021E8EC0 + push {r4, r5, lr} + sub sp, #0x14 + ldr r4, [sp, #0x20] + add r5, sp, #0x10 + str r4, [sp] + mov r4, #0x14 + ldrsh r4, [r5, r4] + str r4, [sp, #4] + ldr r4, [sp, #0x28] + str r4, [sp, #8] + ldr r4, [sp, #0x2c] + str r4, [sp, #0xc] + ldr r4, [sp, #0x30] + str r4, [sp, #0x10] + ldr r0, [r0] + bl FUN_02012A30 + add sp, #0x14 + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021E8EE8 +MOD05_021E8EE8: ; 0x021E8EE8 + push {r3, r4, r5, r6, r7, lr} + ldr r0, [r0] + add r7, r1, #0 + bl FUN_02012B20 + add r5, r0, #0 + mov r6, #0 +_021E8EF6: + ldr r0, [r5] + add r1, r7, #0 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + add r0, r6, #0 + bl _u32_div_f + mov r1, #1 + tst r0, r1 + bne _021E8F0E + lsl r0, r4, #0x10 + b _021E8F12 +_021E8F0E: + neg r0, r4 + lsl r0, r0, #0x10 +_021E8F12: + lsr r0, r0, #0x10 + str r0, [r5] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #0xc0 + blt _021E8EF6 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021E8F20 +MOD05_021E8F20: ; 0x021E8F20 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #5 + bhi _021E9026 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E8F3C: ; jump table + .short _021E8F48 - _021E8F3C - 2 ; case 0 + .short _021E8F68 - _021E8F3C - 2 ; case 1 + .short _021E8F84 - _021E8F3C - 2 ; case 2 + .short _021E8F92 - _021E8F3C - 2 ; case 3 + .short _021E8FDC - _021E8F3C - 2 ; case 4 + .short _021E8FFC - _021E8F3C - 2 ; case 5 +_021E8F48: + mov r0, #4 + mov r1, #0x1c + bl FUN_02016998 + str r0, [r4, #0xc] + mov r2, #0x1c + mov r1, #0 +_021E8F56: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021E8F56 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8F68: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8F84: + ldr r1, [r4, #4] + cmp r1, #0 + beq _021E9026 + add r0, r0, #1 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8F92: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #0xc + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0x10 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl FUN_0201F010 + mov r2, #0x19 + add r1, r0, #0 + mov r0, #0xc + lsl r2, r2, #0x10 + str r0, [sp] + ldr r3, _021E902C ; =0xFFFFE000 + add r0, r5, #4 + sub r2, r1, r2 + bl MOD05_021E3644 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8FDC: + add r0, r5, #4 + bl MOD05_021E36A4 + ldr r0, [r5, #4] + ldr r1, [r5] + bl FUN_0201EFE0 + bl FUN_0200E308 + cmp r0, #0 + beq _021E9026 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E8FFC: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E9010 + mov r0, #1 + str r0, [r1] +_021E9010: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021E9026: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E902C: .word 0xFFFFE000 + + thumb_func_start MOD05_021E9030 +MOD05_021E9030: ; 0x021E9030 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #5 + bhi _021E9136 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E904C: ; jump table + .short _021E9058 - _021E904C - 2 ; case 0 + .short _021E9078 - _021E904C - 2 ; case 1 + .short _021E9094 - _021E904C - 2 ; case 2 + .short _021E90A2 - _021E904C - 2 ; case 3 + .short _021E90EC - _021E904C - 2 ; case 4 + .short _021E910C - _021E904C - 2 ; case 5 +_021E9058: + mov r0, #4 + mov r1, #0x1c + bl FUN_02016998 + str r0, [r4, #0xc] + mov r2, #0x1c + mov r1, #0 +_021E9066: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021E9066 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E9078: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E9094: + ldr r1, [r4, #4] + cmp r1, #0 + beq _021E9136 + add r0, r0, #1 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E90A2: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #0xc + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0x10 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + str r0, [r5] + bl FUN_0201F010 + mov r2, #0x32 + add r1, r0, #0 + mov r0, #0xc + lsl r2, r2, #0x10 + str r0, [sp] + ldr r3, _021E913C ; =0xFFFFB000 + add r0, r5, #4 + sub r2, r1, r2 + bl MOD05_021E3644 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E90EC: + add r0, r5, #4 + bl MOD05_021E36A4 + ldr r0, [r5, #4] + ldr r1, [r5] + bl FUN_0201EFE0 + bl FUN_0200E308 + cmp r0, #0 + beq _021E9136 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021E910C: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021E9120 + mov r0, #1 + str r0, [r1] +_021E9120: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021E9136: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021E913C: .word 0xFFFFB000 + + thumb_func_start MOD05_021E9140 +MOD05_021E9140: ; 0x021E9140 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + add r7, r1, #0 + str r0, [sp, #0x10] + ldr r0, [r7] + ldr r4, [r7, #0xc] + cmp r0, #7 + bls _021E9152 + b _021E948A +_021E9152: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E915E: ; jump table + .short _021E916E - _021E915E - 2 ; case 0 + .short _021E9228 - _021E915E - 2 ; case 1 + .short _021E9242 - _021E915E - 2 ; case 2 + .short _021E924E - _021E915E - 2 ; case 3 + .short _021E92B2 - _021E915E - 2 ; case 4 + .short _021E931A - _021E915E - 2 ; case 5 + .short _021E93A6 - _021E915E - 2 ; case 6 + .short _021E9430 - _021E915E - 2 ; case 7 +_021E916E: + mov r1, #0x1e + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x1e + str r0, [r7, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + ldr r0, [r7, #0x10] + ldr r4, [r7, #0xc] + ldr r1, [r0, #0x20] + mov r0, #7 + lsl r0, r0, #6 + str r1, [r4, r0] + bl MOD05_021E3768 + str r0, [r4, #0x44] + add r0, r4, #0 + add r0, #0x48 + mov r1, #2 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #5 + str r0, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + ldr r0, _021E949C ; =0x000927C0 + mov r1, #0x61 + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x48 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp, #0x14] + add r6, r0, #0 + add r0, r4, #0 + str r0, [sp, #0x1c] + add r0, #0x48 + add r5, r4, #0 + str r0, [sp, #0x1c] +_021E91D4: + mov r0, #0 + str r0, [sp] + mov r1, #0x61 + str r0, [sp, #4] + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + ldr r0, [sp, #0x1c] + add r1, r4, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_02020310 + ldr r0, [sp, #0x14] + add r5, r5, #4 + add r0, r0, #1 + add r6, r6, #2 + str r0, [sp, #0x14] + cmp r0, #2 + blt _021E91D4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E9228: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r7, #4 + bl MOD05_021E3474 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E9242: + ldr r1, [r7, #4] + cmp r1, #0 + beq _021E9310 + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E924E: + mov r0, #0xa + mov r2, #1 + str r0, [sp] + add r0, r4, #0 + mov r1, #0x29 + lsl r2, r2, #0xc + mov r3, #2 + bl MOD05_021E3644 + ldr r1, [r4] + add r0, sp, #0x50 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + mov r6, #0 + add r5, r4, #0 +_021E9270: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, sp, #0x50 + bl FUN_02020064 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9270 + add r0, r4, #0 + ldr r2, _021E94A0 ; =0x0000FFFF + add r0, #0x18 + mov r1, #0 + mov r3, #0xa + bl MOD05_021E35B0 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E92B2: + add r0, r4, #0 + bl MOD05_021E36A4 + ldr r1, [r4] + str r0, [sp, #0x18] + add r0, sp, #0x50 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E35C0 + mov r6, #0 + add r5, r4, #0 +_021E92D2: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, sp, #0x50 + bl FUN_02020064 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E92D2 + mov r0, #0x6e + ldr r1, [r4, #0x18] + lsl r0, r0, #2 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + mov r1, #0x6f + lsl r1, r1, #2 + ldr r0, [r4, r1] + ldr r2, [r4, #0x18] + sub r1, #0xbc + sub r1, r2, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020088 + ldr r0, [sp, #0x18] + cmp r0, #1 + beq _021E9312 +_021E9310: + b _021E948A +_021E9312: + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E931A: + mov r0, #0 + str r0, [sp] + mov r0, #0xff + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r0, #0xa + lsl r0, r0, #0xc + str r0, [sp, #8] + ldr r1, [r4, #0x44] + add r0, r7, #0 + mov r2, #0x60 + mov r3, #6 + bl MOD05_021E37CC + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_02020130 + mov r0, #6 + str r0, [sp] + add r0, r4, #0 + mov r2, #0xff + mov r3, #0xa + add r0, #0x2c + mov r1, #0 + lsl r2, r2, #0xc + lsl r3, r3, #0xc + bl MOD05_021E3644 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0201F010 + add r1, r0, #0 + mov r0, #6 + str r0, [sp] + mov r0, #0x71 + mov r2, #0x7d + lsl r0, r0, #2 + lsl r2, r2, #0xe + ldr r3, _021E94A4 ; =0xFFFF6000 + add r0, r4, r0 + sub r2, r1, r2 + bl MOD05_021E3644 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020088 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020088 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E93A6: + add r0, r4, #0 + add r0, #0x2c + bl MOD05_021E36A4 + mov r1, #2 + ldr r2, [r4, #0x2c] + lsl r1, r1, #0x12 + sub r1, r1, r2 + mov r2, #6 + add r0, sp, #0x2c + lsl r2, r2, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x2c + ldmia r3!, {r0, r1} + add r2, sp, #0x44 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + ldr r2, [r4, #0x2c] + lsl r1, r1, #0x12 + add r1, r2, r1 + mov r2, #6 + add r0, sp, #0x20 + lsl r2, r2, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x20 + ldmia r3!, {r0, r1} + add r2, sp, #0x38 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x44 + str r0, [r2] + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02020044 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x71 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x71 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0201EFE0 + add r0, r7, #0 + bl MOD05_021E35AC + cmp r0, #0 + beq _021E948A + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E948A +_021E9430: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r1, [r7, #0x14] + cmp r1, #0 + beq _021E944A + mov r0, #1 + str r0, [r1] +_021E944A: + mov r6, #0 + add r5, r4, #0 +_021E944E: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E944E + mov r1, #0x61 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x48 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + add r0, #0x48 + bl MOD05_021E3E44 + ldr r0, [r4, #0x44] + bl MOD05_021E37A4 + ldr r1, [r7, #0xc] + mov r0, #4 + bl FUN_02016A8C + ldr r0, [sp, #0x10] + bl FUN_0200621C +_021E948A: + ldr r0, [r7] + cmp r0, #7 + beq _021E9496 + ldr r0, [r4, #0x48] + bl FUN_0201FDEC +_021E9496: + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_021E949C: .word 0x000927C0 +_021E94A0: .word 0x0000FFFF +_021E94A4: .word 0xFFFF6000 + + thumb_func_start MOD05_021E94A8 +MOD05_021E94A8: ; 0x021E94A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x78 + add r6, r1, #0 + str r0, [sp, #0x10] + ldr r0, [r6] + ldr r4, [r6, #0xc] + cmp r0, #7 + bhi _021E95A2 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021E94C4: ; jump table + .short _021E94D4 - _021E94C4 - 2 ; case 0 + .short _021E9582 - _021E94C4 - 2 ; case 1 + .short _021E959C - _021E94C4 - 2 ; case 2 + .short _021E95AA - _021E94C4 - 2 ; case 3 + .short _021E9638 - _021E94C4 - 2 ; case 4 + .short _021E96C8 - _021E94C4 - 2 ; case 5 + .short _021E9702 - _021E94C4 - 2 ; case 6 + .short _021E972C - _021E94C4 - 2 ; case 7 +_021E94D4: + mov r1, #0x71 + mov r0, #4 + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x71 + str r0, [r6, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + ldr r0, [r6, #0x10] + ldr r4, [r6, #0xc] + ldr r1, [r0, #0x20] + mov r0, #0x69 + lsl r0, r0, #2 + str r1, [r4, r0] + bl MOD05_021E39FC + str r0, [r4, #0x28] + add r0, r4, #0 + add r0, #0x2c + mov r1, #2 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021E9798 ; =0x000927C0 + mov r1, #0x5a + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x2c + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + add r0, r4, #0 + str r0, [sp, #0x14] + add r0, #0x2c + mov r7, #0 + add r5, r4, #0 + str r0, [sp, #0x14] +_021E9536: + mov r0, #0 + str r0, [sp] + mov r1, #0x5a + str r0, [sp, #4] + lsl r1, r1, #2 + mov r2, #2 + ldr r0, [sp, #0x14] + add r1, r4, r1 + lsl r2, r2, #0x12 + mov r3, #0 + bl MOD05_021E3FC4 + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #2 + blt _021E9536 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E9582: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r6, #4 + bl MOD05_021E3474 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E959C: + ldr r1, [r6, #4] + cmp r1, #0 + bne _021E95A4 +_021E95A2: + b _021E9786 +_021E95A4: + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E95AA: + mov r2, #3 + ldr r1, _021E979C ; =0xFFF40000 + add r0, r4, #0 + lsl r2, r2, #0x12 + mov r3, #8 + bl MOD05_021E35EC + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r2, #2 + ldr r1, [r4] + lsl r2, r2, #0x12 + sub r1, r2, r1 + add r0, sp, #0x3c + lsr r2, r2, #1 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x3c + ldmia r3!, {r0, r1} + add r2, sp, #0x6c + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r3, #0 + str r0, [r2] + mov r2, #2 + ldr r1, [r4] + lsl r2, r2, #0x12 + add r0, sp, #0x30 + add r1, r1, r2 + bl MOD05_021E3FF8 + add r3, sp, #0x30 + ldmia r3!, {r0, r1} + add r2, sp, #0x60 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x6c + str r0, [r2] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02020044 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x60 + bl FUN_02020044 + add r0, r4, #0 + ldr r2, _021E97A0 ; =0x0001FFFE + add r0, #0x14 + mov r1, #0 + mov r3, #8 + bl MOD05_021E35B0 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E9638: + add r0, r4, #0 + bl MOD05_021E35FC + mov r2, #2 + add r5, r0, #0 + ldr r1, [r4] + lsl r2, r2, #0x12 + sub r1, r2, r1 + add r0, sp, #0x24 + lsr r2, r2, #1 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x24 + ldmia r3!, {r0, r1} + add r2, sp, #0x54 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r3, #0 + str r0, [r2] + mov r2, #2 + ldr r1, [r4] + lsl r2, r2, #0x12 + add r0, sp, #0x18 + add r1, r1, r2 + bl MOD05_021E3FF8 + add r3, sp, #0x18 + ldmia r3!, {r0, r1} + add r2, sp, #0x48 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x54 + str r0, [r2] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02020044 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x48 + bl FUN_02020044 + add r0, r4, #0 + add r0, #0x14 + bl MOD05_021E35C0 + mov r0, #0x67 + ldr r1, [r4, #0x14] + lsl r0, r0, #2 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + ldr r1, [r4, #0x14] + mov r0, #0x1a + lsl r0, r0, #4 + neg r1, r1 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + cmp r5, #1 + bne _021E9786 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E96C8: + mov r3, #1 + lsl r3, r3, #0xc + str r3, [sp] + ldr r1, [r4, #0x28] + add r0, r6, #0 + mov r2, #8 + bl MOD05_021E3A70 + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201F010 + add r1, r0, #0 + mov r0, #8 + str r0, [sp] + mov r0, #0x6a + mov r2, #0x7d + lsl r0, r0, #2 + lsl r2, r2, #0xe + ldr r3, _021E97A4 ; =0xFFFF6000 + add r0, r4, r0 + sub r2, r1, r2 + bl MOD05_021E3644 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E9702: + mov r0, #0x6a + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x6a + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0201EFE0 + add r0, r6, #0 + bl MOD05_021E35AC + cmp r0, #1 + bne _021E9786 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021E9786 +_021E972C: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r1, [r6, #0x14] + cmp r1, #0 + beq _021E9746 + mov r0, #1 + str r0, [r1] +_021E9746: + mov r7, #0 + add r5, r4, #0 +_021E974A: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #2 + blt _021E974A + mov r1, #0x5a + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x2c + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + add r0, #0x2c + bl MOD05_021E3E44 + ldr r0, [r4, #0x28] + bl MOD05_021E3A48 + ldr r1, [r6, #0xc] + mov r0, #4 + bl FUN_02016A8C + ldr r0, [sp, #0x10] + bl FUN_0200621C +_021E9786: + ldr r0, [r6] + cmp r0, #7 + beq _021E9792 + ldr r0, [r4, #0x2c] + bl FUN_0201FDEC +_021E9792: + add sp, #0x78 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9798: .word 0x000927C0 +_021E979C: .word 0xFFF40000 +_021E97A0: .word 0x0001FFFE +_021E97A4: .word 0xFFFF6000 + + thumb_func_start MOD05_021E97A8 +MOD05_021E97A8: ; 0x021E97A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + add r7, r1, #0 + str r0, [sp, #0x14] + ldr r0, [r7] + ldr r4, [r7, #0xc] + cmp r0, #7 + bls _021E97BA + b _021E9B2A +_021E97BA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E97C6: ; jump table + .short _021E97D6 - _021E97C6 - 2 ; case 0 + .short _021E9892 - _021E97C6 - 2 ; case 1 + .short _021E98AC - _021E97C6 - 2 ; case 2 + .short _021E98F2 - _021E97C6 - 2 ; case 3 + .short _021E9958 - _021E97C6 - 2 ; case 4 + .short _021E99E4 - _021E97C6 - 2 ; case 5 + .short _021E9A68 - _021E97C6 - 2 ; case 6 + .short _021E9AD0 - _021E97C6 - 2 ; case 7 +_021E97D6: + mov r1, #0x7a + mov r0, #4 + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x7a + str r0, [r7, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + ldr r0, [r7, #0x10] + ldr r4, [r7, #0xc] + ldr r1, [r0, #0x20] + mov r0, #0x72 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0x40 + mov r1, #4 + bl MOD05_021E8E8C + mov r0, #0x79 + mov r1, #0xc + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0x50 + mov r1, #2 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #5 + str r0, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + ldr r0, _021E9B4C ; =0x000927C0 + mov r1, #0x63 + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x50 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + add r0, r4, #0 + str r0, [sp, #0x1c] + add r0, #0x50 + mov r6, #0 + add r5, r4, #0 + str r0, [sp, #0x1c] +_021E9844: + mov r0, #0 + str r0, [sp] + mov r1, #0x63 + str r0, [sp, #4] + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + ldr r0, [sp, #0x1c] + add r1, r4, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #7 + lsl r1, r1, #6 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_02020310 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9844 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E9892: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r7, #4 + bl MOD05_021E3474 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E98AC: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bne _021E98E4 + mov r0, #3 + lsl r0, r0, #0xe + mov r3, #0x32 + str r0, [sp] + lsl r3, r3, #4 + str r3, [sp, #4] + ldr r0, _021E9B50 ; =0x04000010 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0x40 + mov r2, #0xbf + sub r3, #0x76 + bl MOD05_021E8EC0 + mov r0, #1 + str r0, [r4, #0x4c] +_021E98E4: + ldr r0, [r7, #4] + cmp r0, #0 + beq _021E99BE + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E98F2: + add r0, r4, #0 + add r0, #0x18 + mov r1, #0 + mov r2, #0x10 + mov r3, #8 + bl MOD05_021E35B0 + ldr r3, [r4, #0x18] + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _021E9B54 ; =0x04000050 + mov r1, #0 + mov r2, #0xf + bl G2x_SetBlendAlpha_ + mov r6, #0 + add r5, r4, #0 +_021E9916: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020398 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9916 + add r0, r4, #0 + ldr r2, _021E9B58 ; =0x0000FFFF + add r0, #0x2c + mov r1, #0 + mov r3, #8 + bl MOD05_021E35B0 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E9958: + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E35C0 + add r6, r0, #0 + ldr r1, [r4, #0x18] + mov r0, #0x10 + sub r0, r0, r1 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _021E9B5C ; =0x04000052 + strh r1, [r0] + ldr r0, [r4, #0x2c] + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0 + add r0, #0x2c + bl MOD05_021E35C0 + cmp r0, #0 + bne _021E99A2 + mov r0, #7 + ldr r1, [r4, #0x2c] + lsl r0, r0, #6 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + mov r0, #0x71 + lsl r0, r0, #2 + lsl r1, r5, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + b _021E99BA +_021E99A2: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020088 + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020088 +_021E99BA: + cmp r6, #1 + beq _021E99C0 +_021E99BE: + b _021E9B2A +_021E99C0: + ldr r0, _021E9B54 ; =0x04000050 + mov r6, #0 + strh r6, [r0] + add r5, r4, #0 +_021E99C8: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02020398 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E99C8 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E99E4: + mov r1, #8 + str r1, [sp] + ldr r3, _021E9B60 ; =0x0000019A + add r0, r4, #0 + lsl r1, r1, #9 + mov r2, #0x29 + bl MOD05_021E3644 + ldr r1, [r4] + add r0, sp, #0x34 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x34 + add r2, sp, #0x4c + ldmia r3!, {r0, r1} + str r2, [sp, #0x20] + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r6, #0 + str r0, [r2] + add r5, r4, #0 +_021E9A12: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + ldr r1, [sp, #0x20] + bl FUN_02020064 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9A12 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201F010 + add r1, r0, #0 + mov r0, #8 + str r0, [sp] + mov r0, #0x73 + mov r2, #0x7d + lsl r0, r0, #2 + lsl r2, r2, #0xe + ldr r3, _021E9B64 ; =0xFFFF6000 + add r0, r4, r0 + sub r2, r1, r2 + bl MOD05_021E3644 + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x18 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E9A68: + add r0, r4, #0 + bl MOD05_021E36A4 + ldr r1, [r4] + str r0, [sp, #0x18] + add r0, sp, #0x28 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x28 + add r2, sp, #0x40 + ldmia r3!, {r0, r1} + str r2, [sp, #0x24] + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r6, #0 + str r0, [r2] + add r5, r4, #0 +_021E9A8E: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + ldr r1, [sp, #0x24] + bl FUN_02020064 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9A8E + mov r0, #0x73 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x73 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0201EFE0 + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _021E9B2A + bl FUN_0200E308 + cmp r0, #1 + bne _021E9B2A + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + b _021E9B2A +_021E9AD0: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r1, [r7, #0x14] + cmp r1, #0 + beq _021E9AE2 + mov r0, #1 + str r0, [r1] +_021E9AE2: + add r0, r4, #0 + add r0, #0x40 + bl MOD05_021E8EA8 + mov r6, #0 + str r6, [r4, #0x4c] + add r5, r4, #0 +_021E9AF0: + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #2 + blt _021E9AF0 + mov r1, #0x63 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x50 + add r1, r4, r1 + bl MOD05_021E3F3C + add r4, #0x50 + add r0, r4, #0 + bl MOD05_021E3E44 + ldr r1, [r7, #0xc] + mov r0, #4 + bl FUN_02016A8C + ldr r0, [sp, #0x14] + bl FUN_0200621C + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} +_021E9B2A: + ldr r0, [r4, #0x4c] + cmp r0, #1 + bne _021E9B3A + add r0, r4, #0 + add r0, #0x40 + mov r1, #2 + bl MOD05_021E8EE8 +_021E9B3A: + ldr r0, [r7] + cmp r0, #7 + beq _021E9B46 + ldr r0, [r4, #0x50] + bl FUN_0201FDEC +_021E9B46: + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + nop +_021E9B4C: .word 0x000927C0 +_021E9B50: .word 0x04000010 +_021E9B54: .word 0x04000050 +_021E9B58: .word 0x0000FFFF +_021E9B5C: .word 0x04000052 +_021E9B60: .word 0x0000019A +_021E9B64: .word 0xFFFF6000 + + thumb_func_start MOD05_021E9B68 +MOD05_021E9B68: ; 0x021E9B68 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #0x18] + add r0, r1, #0 + ldr r0, [r0] + str r1, [sp, #0x1c] + ldr r4, [r1, #0xc] + cmp r0, #7 + bls _021E9B7C + b _021EA01A +_021E9B7C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E9B88: ; jump table + .short _021E9B98 - _021E9B88 - 2 ; case 0 + .short _021E9CAA - _021E9B88 - 2 ; case 1 + .short _021E9CCA - _021E9B88 - 2 ; case 2 + .short _021E9D24 - _021E9B88 - 2 ; case 3 + .short _021E9DE4 - _021E9B88 - 2 ; case 4 + .short _021E9E82 - _021E9B88 - 2 ; case 5 + .short _021E9F1C - _021E9B88 - 2 ; case 6 + .short _021E9F70 - _021E9B88 - 2 ; case 7 +_021E9B98: + mov r1, #9 + mov r0, #4 + lsl r1, r1, #6 + bl FUN_02016998 + ldr r1, [sp, #0x1c] + mov r2, #9 + str r0, [r1, #0xc] + mov r1, #0 + lsl r2, r2, #6 + bl Call_FillMemWithValue + ldr r0, [sp, #0x1c] + ldr r4, [r0, #0xc] + ldr r0, [r0, #0x10] + ldr r1, [r0, #0x20] + mov r0, #0x22 + lsl r0, r0, #4 + str r1, [r4, r0] + sub r0, #0x10 + add r0, r4, r0 + mov r1, #4 + bl MOD05_021E8E8C + mov r0, #0x8f + mov r1, #0xe + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #3 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021E9F5C ; =0x000927C0 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r7, #0x4f + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_021E9C02: + mov r0, #0 + str r0, [sp] + mov r2, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, r7 + add r3, r2, #0 + bl MOD05_021E3FC4 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #4 + bl MOD05_021E4140 + mov r1, #0x7d + lsl r1, r1, #2 + str r0, [r5, r1] + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021E9C02 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_02018FF4 + mov r1, #0x83 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [sp, #0x1c] + ldr r1, [r4, r1] + ldr r0, [r0, #0x10] + mov r2, #3 + ldr r0, [r0, #8] + bl FUN_02019064 + mov r1, #0 + add r0, sp, #0x28 + strh r1, [r0] + mov r0, #3 + add r1, sp, #0x28 + mov r2, #2 + mov r3, #0x1e + bl FUN_02017FB4 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02019620 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02019220 + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A +_021E9CAA: + mov r1, #0x10 + ldr r3, [sp, #0x1c] + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r3, #4 + bl MOD05_021E3474 + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A +_021E9CCA: + mov r3, #0x8f + lsl r3, r3, #2 + ldr r0, [r4, r3] + sub r0, r0, #1 + str r0, [r4, r3] + ldr r0, [r4, r3] + cmp r0, #0 + bne _021E9D08 + mov r0, #3 + lsl r0, r0, #0xe + str r0, [sp] + add r0, r3, #0 + add r0, #0xe4 + str r0, [sp, #4] + ldr r0, _021E9F60 ; =0x04000010 + mov r1, #0 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + add r0, r3, #0 + sub r0, #0x2c + add r0, r4, r0 + mov r2, #0xbf + add r3, #0x6e + bl MOD05_021E8EC0 + mov r0, #0x87 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] +_021E9D08: + ldr r0, [sp, #0x1c] + ldr r0, [r0, #4] + cmp r0, #0 + beq _021E9D34 + mov r0, #0x8f + mov r1, #6 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A +_021E9D24: + mov r0, #0x8f + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + blt _021E9D36 +_021E9D34: + b _021EA01A +_021E9D36: + sub r0, #0x1c + ldr r0, [r4, r0] + bl FUN_0201F010 + add r1, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0x89 + mov r2, #0x7d + lsl r0, r0, #2 + lsl r2, r2, #0xe + ldr r3, _021E9F64 ; =0xFFFF6000 + add r0, r4, r0 + sub r2, r1, r2 + bl MOD05_021E3644 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r2, _021E9F68 ; =0x0000FFFF + add r0, r4, r0 + mov r1, #0 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0x5f + lsl r0, r0, #2 + mov r2, #0x1f + add r0, r4, r0 + mov r1, #0xe7 + mvn r2, r2 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x83 + lsl r0, r0, #2 + ldr r1, [r4, r0] + mov r3, #0x40 + str r1, [sp, #8] + mov r1, #0x56 + str r1, [sp, #0xc] + str r3, [sp, #0x10] + mov r1, #0xf + str r1, [sp, #0x14] + sub r0, #0x18 + mov r1, #0x2b + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, #0xf8 + bl MOD05_021E4160 + mov r1, #0x2b + mov r2, #0xe7 + add r0, sp, #0x38 + lsl r1, r1, #0xc + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r1, #1 + lsl r0, r1, #9 + str r1, [r4, r0] + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + mov r0, #0x8f + mov r1, #4 + lsl r0, r0, #2 + str r1, [r4, r0] + b _021EA01A +_021E9DE4: + mov r0, #0x8f + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + bge _021E9E92 + sub r0, #0xac + mov r2, #0x1f + add r0, r4, r0 + mov r1, #0xe7 + mvn r2, r2 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r2, _021E9F6C ; =0xFFFF0001 + add r0, r4, r0 + mov r1, #0 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x83 + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r0, #0x14 + str r1, [sp, #8] + mov r1, #0x56 + str r1, [sp, #0xc] + mov r1, #0x40 + str r1, [sp, #0x10] + mov r1, #0xf + str r1, [sp, #0x14] + mov r1, #0xd7 + add r3, r1, #0 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, #0x61 + bl MOD05_021E4160 + mov r1, #0xd7 + mov r2, #0xe7 + add r0, sp, #0x38 + lsl r1, r1, #0xc + lsl r2, r2, #0xc + mov r3, #1 + bl MOD05_021E3FF8 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r1, #0x81 + mov r0, #1 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x1c] + add r1, #0x38 + ldr r0, [r0] + add r2, r0, #1 + ldr r0, [sp, #0x1c] + str r2, [r0] + mov r0, #2 + str r0, [r4, r1] + b _021EA01A +_021E9E82: + mov r0, #0x8f + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + blt _021E9E94 +_021E9E92: + b _021EA01A +_021E9E94: + sub r0, #0x98 + mov r2, #0x1f + add r0, r4, r0 + mov r1, #0xe7 + mvn r2, r2 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r2, _021E9F68 ; =0x0000FFFF + add r0, r4, r0 + mov r1, #0 + mov r3, #6 + bl MOD05_021E35B0 + mov r0, #0 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #0x83 + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r0, #0x10 + str r1, [sp, #8] + mov r1, #0x56 + str r1, [sp, #0xc] + mov r1, #0x40 + str r1, [sp, #0x10] + mov r1, #0xf + str r1, [sp, #0x14] + mov r1, #0x81 + add r3, r1, #0 + ldr r0, [r4, r0] + add r2, r1, #0 + add r3, #0xb7 + bl MOD05_021E4160 + mov r1, #0x81 + mov r2, #0xe7 + add r0, sp, #0x38 + lsl r1, r1, #0xc + lsl r2, r2, #0xc + mov r3, #2 + bl MOD05_021E3FF8 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x82 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A +_021E9F1C: + mov r0, #0x89 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x89 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0201EFE0 + mov r1, #2 + lsl r1, r1, #8 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021EA01A + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021EA01A + add r1, #8 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021EA01A + ldr r0, [sp, #0x1c] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [r0] + b _021EA01A + nop +_021E9F5C: .word 0x000927C0 +_021E9F60: .word 0x04000010 +_021E9F64: .word 0xFFFF6000 +_021E9F68: .word 0x0000FFFF +_021E9F6C: .word 0xFFFF0001 +_021E9F70: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [sp, #0x1c] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021E9F8C + mov r0, #1 + str r0, [r1] +_021E9F8C: + mov r0, #0x21 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD05_021E8EA8 + mov r0, #0x87 + lsl r0, r0, #2 + mov r6, #0 + add r7, r0, #0 + str r6, [r4, r0] + add r5, r4, #0 + sub r7, #0x28 +_021E9FA4: + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + ldr r0, [r5, r7] + bl MOD05_021E4158 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021E9FA4 + mov r1, #0x4f + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + bl MOD05_021E3E44 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02019570 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02019178 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020191A4 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + ldr r0, [sp, #0x1c] + mov r1, #3 + ldr r0, [r0, #0x10] + ldr r0, [r0, #8] + bl FUN_02018744 + ldr r1, [sp, #0x1c] + mov r0, #4 + ldr r1, [r1, #0xc] + bl FUN_02016A8C + ldr r0, [sp, #0x18] + bl FUN_0200621C + add sp, #0x44 + pop {r4, r5, r6, r7, pc} +_021EA01A: + mov r0, #0x87 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #1 + bne _021EA02E + sub r0, #0xc + add r0, r4, r0 + mov r1, #2 + bl MOD05_021E8EE8 +_021EA02E: + mov r1, #0x5f + mov r0, #0 + lsl r1, r1, #2 + str r0, [sp, #0x20] + add r0, r4, r1 + add r1, #0x3c + add r5, r4, #0 + str r0, [sp, #0x24] + add r7, r4, r1 + add r6, r4, #0 +_021EA042: + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r5, r0] + cmp r0, #1 + bne _021EA0B0 + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl MOD05_021E41B8 + cmp r0, #0 + beq _021EA062 + mov r0, #2 + mov r1, #0 + lsl r0, r0, #8 + str r1, [r5, r0] +_021EA062: + ldr r0, [sp, #0x24] + bl MOD05_021E35C0 + add r0, r7, #0 + bl MOD05_021E35C0 + mov r1, #0x6e + lsl r1, r1, #2 + mov r0, #0x17 + ldr r1, [r6, r1] + lsl r0, r0, #4 + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #0x2c + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, ip + str r0, [r2] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r6, r0] + lsl r0, r0, #0xc + str r0, [sp, #0x30] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02020044 +_021EA0B0: + ldr r0, [sp, #0x24] + add r5, r5, #4 + add r0, #0x14 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #0x20] + cmp r0, #3 + blt _021EA042 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02019220 + ldr r0, [sp, #0x1c] + ldr r0, [r0] + cmp r0, #7 + beq _021EA0DE + ldr r0, [r4] + bl FUN_0201FDEC +_021EA0DE: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EA0E4 +MOD05_021EA0E4: ; 0x021EA0E4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #0xc] + cmp r0, #7 + bhi _021EA1B8 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA100: ; jump table + .short _021EA110 - _021EA100 - 2 ; case 0 + .short _021EA198 - _021EA100 - 2 ; case 1 + .short _021EA1B2 - _021EA100 - 2 ; case 2 + .short _021EA1C0 - _021EA100 - 2 ; case 3 + .short _021EA236 - _021EA100 - 2 ; case 4 + .short _021EA2C2 - _021EA100 - 2 ; case 5 + .short _021EA310 - _021EA100 - 2 ; case 6 + .short _021EA338 - _021EA100 - 2 ; case 7 +_021EA110: + mov r1, #0x1f + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x1f + str r0, [r5, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + ldr r0, [r5, #0x10] + ldr r4, [r5, #0xc] + ldr r1, [r0, #0x20] + mov r0, #0x1d + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #1 + add r0, #0x5c + add r2, r1, #0 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021EA394 ; =0x000927C0 + mov r1, #0x66 + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x5c + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp] + mov r1, #0x66 + str r0, [sp, #4] + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #2 + ldr r3, _021EA398 ; =0xFFFE0000 + add r0, #0x5c + add r1, r4, r1 + lsl r2, r2, #0x12 + bl MOD05_021E3FC4 + mov r1, #0x73 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA198: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + add r3, r5, #4 + bl MOD05_021E3474 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA1B2: + ldr r1, [r5, #4] + cmp r1, #0 + bne _021EA1BA +_021EA1B8: + b _021EA382 +_021EA1BA: + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA1C0: + mov r2, #1 + mov r0, #0xc + lsl r2, r2, #0x14 + str r0, [sp] + add r0, r4, #0 + mov r1, #0 + lsr r3, r2, #7 + bl MOD05_021E3644 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xc + str r0, [sp] + add r0, r4, #0 + mov r2, #2 + ldr r1, _021EA39C ; =0x0000019A + add r0, #0x18 + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3644 + mov r0, #0xc + str r0, [sp] + add r0, r4, #0 + mov r2, #2 + ldr r1, _021EA39C ; =0x0000019A + add r0, #0x30 + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3644 + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x30] + add r0, sp, #0x28 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x28 + mov r2, #2 + bl FUN_02020074 + add r0, r4, #0 + ldr r2, _021EA3A0 ; =0x0000FFFF + add r0, #0x48 + mov r1, #0 + mov r3, #0xc + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA236: + add r0, r4, #0 + bl MOD05_021E36A4 + mov r1, #2 + lsl r1, r1, #0x12 + add r6, r0, #0 + ldr r3, [r4] + lsr r2, r1, #2 + sub r2, r3, r2 + add r0, sp, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x10 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r7, #0 + str r0, [r2] + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02020044 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E36A4 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E36A4 + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x30] + add r0, sp, #0x28 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x28 + bl FUN_02020064 + add r0, r4, #0 + add r0, #0x48 + bl MOD05_021E35C0 + mov r0, #0x73 + ldr r1, [r4, #0x48] + lsl r0, r0, #2 + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 + cmp r6, #1 + bne _021EA382 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA2C2: + ldr r0, [r5, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #0x1d + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0201F010 + add r1, r0, #0 + mov r0, #8 + str r0, [sp] + mov r0, #0x75 + mov r2, #0xfa + lsl r0, r0, #2 + lsl r2, r2, #0xe + mov r3, #0xa + add r0, r4, r0 + sub r2, r1, r2 + lsl r3, r3, #0xc + bl MOD05_021E3644 + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x12 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA310: + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x75 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0201EFE0 + bl FUN_0200E308 + cmp r0, #0 + beq _021EA382 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EA382 +_021EA338: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [r5, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r5, #0x14] + cmp r1, #0 + beq _021EA354 + mov r0, #1 + str r0, [r1] +_021EA354: + mov r0, #0x73 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r1, #0x66 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x5c + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + add r0, #0x5c + bl MOD05_021E3E44 + ldr r1, [r5, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C +_021EA382: + ldr r0, [r5] + cmp r0, #7 + beq _021EA38E + ldr r0, [r4, #0x5c] + bl FUN_0201FDEC +_021EA38E: + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021EA394: .word 0x000927C0 +_021EA398: .word 0xFFFE0000 +_021EA39C: .word 0x0000019A +_021EA3A0: .word 0x0000FFFF + + thumb_func_start MOD05_021EA3A4 +MOD05_021EA3A4: ; 0x021EA3A4 + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + str r0, [sp, #0x14] + add r0, r1, #0 + ldr r0, [r0] + str r1, [sp, #0x18] + ldr r4, [r1, #0xc] + cmp r0, #9 + bls _021EA3B8 + b _021EA7DE +_021EA3B8: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA3C4: ; jump table + .short _021EA3D8 - _021EA3C4 - 2 ; case 0 + .short _021EA4CE - _021EA3C4 - 2 ; case 1 + .short _021EA4EE - _021EA3C4 - 2 ; case 2 + .short _021EA506 - _021EA3C4 - 2 ; case 3 + .short _021EA582 - _021EA3C4 - 2 ; case 4 + .short _021EA5FE - _021EA3C4 - 2 ; case 5 + .short _021EA674 - _021EA3C4 - 2 ; case 6 + .short _021EA6B4 - _021EA3C4 - 2 ; case 7 + .short _021EA6FA - _021EA3C4 - 2 ; case 8 + .short _021EA748 - _021EA3C4 - 2 ; case 9 +_021EA3D8: + mov r1, #0x8a + mov r0, #4 + lsl r1, r1, #2 + bl FUN_02016998 + ldr r1, [sp, #0x18] + mov r2, #0x8a + str r0, [r1, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + ldr r0, [sp, #0x18] + mov r2, #1 + ldr r4, [r0, #0xc] + ldr r0, [r0, #0x10] + ldr r1, [r0, #0x20] + mov r0, #0x82 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + mov r1, #3 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021EA738 ; =0x000927C0 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r7, #0x4f + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_021EA430: + mov r0, #0 + mov r2, #0 + str r0, [sp] + add r3, r2, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, r7 + sub r3, #0x20 + bl MOD05_021E3FC4 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021EA430 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_02018FF4 + mov r1, #2 + lsl r1, r1, #8 + str r0, [r4, r1] + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [sp, #0x18] + ldr r1, [r4, r1] + ldr r0, [r0, #0x10] + mov r2, #3 + ldr r0, [r0, #8] + bl FUN_02019064 + mov r1, #0 + add r0, sp, #0x28 + strh r1, [r0] + mov r0, #3 + add r1, sp, #0x28 + mov r2, #2 + mov r3, #0x1e + bl FUN_02017FB4 + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02019620 + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl FUN_02019220 + mov r0, #4 + bl MOD05_021E4394 + mov r1, #0x81 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA4CE: + mov r1, #0x10 + ldr r3, [sp, #0x18] + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r3, #4 + bl MOD05_021E3474 + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA4EE: + ldr r1, [sp, #0x18] + ldr r1, [r1, #4] + cmp r1, #0 + beq _021EA516 + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + mov r0, #0x89 + mov r1, #0 + lsl r0, r0, #2 + strh r1, [r4, r0] + b _021EA7DE +_021EA506: + mov r0, #0x89 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, r0] + ldrsh r1, [r4, r0] + cmp r1, #0 + ble _021EA518 +_021EA516: + b _021EA7DE +_021EA518: + sub r0, #0xa8 + mov r1, #0x1f + add r0, r4, r0 + mvn r1, r1 + mov r2, #0xe0 + mov r3, #5 + bl MOD05_021E35B0 + mov r1, #2 + ldr r2, _021EA73C ; =0xFFFE0000 + add r0, sp, #0x38 + lsl r1, r1, #0x12 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x6e + lsl r0, r0, #2 + ldr r2, _021EA740 ; =0x0000FFFF + add r0, r4, r0 + mov r1, #0 + mov r3, #5 + bl MOD05_021E35B0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r1, #0x7d + mov r3, #1 + lsl r1, r1, #2 + str r3, [r4, r1] + ldr r0, [sp, #0x18] + add r1, #0x30 + ldr r0, [r0] + add r2, r0, #1 + ldr r0, [sp, #0x18] + str r2, [r0] + strh r3, [r4, r1] + b _021EA7DE +_021EA582: + mov r0, #0x89 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, r0] + ldrsh r1, [r4, r0] + cmp r1, #0 + bgt _021EA68E + sub r0, #0x94 + mov r1, #0x1f + add r0, r4, r0 + mvn r1, r1 + mov r2, #0xe0 + mov r3, #5 + bl MOD05_021E35B0 + mov r1, #0xd + ldr r2, _021EA73C ; =0xFFFE0000 + add r0, sp, #0x38 + lsl r1, r1, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x73 + lsl r0, r0, #2 + ldr r2, _021EA744 ; =0xFFFF0001 + add r0, r4, r0 + mov r1, #0 + mov r3, #5 + bl MOD05_021E35B0 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r1, #0x7e + mov r0, #1 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [sp, #0x18] + add r1, #0x2c + ldr r0, [r0] + add r2, r0, #1 + ldr r0, [sp, #0x18] + str r2, [r0] + mov r0, #3 + strh r0, [r4, r1] + b _021EA7DE +_021EA5FE: + mov r0, #0x89 + lsl r0, r0, #2 + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, r0] + ldrsh r1, [r4, r0] + cmp r1, #0 + bgt _021EA68E + sub r0, #0x80 + mov r1, #0x1f + add r0, r4, r0 + mvn r1, r1 + mov r2, #0xe0 + mov r3, #5 + bl MOD05_021E35B0 + mov r1, #3 + ldr r2, _021EA73C ; =0xFFFE0000 + add r0, sp, #0x38 + lsl r1, r1, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x38 + bl FUN_02020044 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r2, _021EA740 ; =0x0000FFFF + add r0, r4, r0 + mov r1, #0 + mov r3, #5 + bl MOD05_021E35B0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0x7f + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA674: + mov r1, #0x7d + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021EA68E + add r0, r1, #4 + ldr r0, [r4, r0] + cmp r0, #0 + bne _021EA68E + add r1, #8 + ldr r0, [r4, r1] + cmp r0, #0 + beq _021EA690 +_021EA68E: + b _021EA7DE +_021EA690: + mov r7, #0x17 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_021EA698: + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021EA698 + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA6B4: + mov r0, #0xf + mov r1, #1 + str r0, [sp] + mov r0, #0x81 + lsl r0, r0, #2 + lsl r3, r1, #9 + ldr r0, [r4, r0] + ldr r3, [r4, r3] + add r2, r1, #0 + bl MOD05_021E43E4 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201F010 + add r1, r0, #0 + mov r0, #0x40 + str r0, [sp] + mov r0, #0x83 + mov r2, #0xfa + lsl r0, r0, #2 + lsl r2, r2, #0xe + mov r3, #0xa + add r0, r4, r0 + sub r2, r1, r2 + lsl r3, r3, #0xc + bl MOD05_021E3644 + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE +_021EA6FA: + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD05_021E4424 + add r5, r0, #0 + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl FUN_02019220 + mov r0, #0x83 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E36A4 + mov r1, #0x83 + lsl r1, r1, #2 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0201EFE0 + cmp r5, #1 + bne _021EA7DE + ldr r0, [sp, #0x18] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x18] + str r1, [r0] + b _021EA7DE + .balign 4, 0 +_021EA738: .word 0x000927C0 +_021EA73C: .word 0xFFFE0000 +_021EA740: .word 0x0000FFFF +_021EA744: .word 0xFFFF0001 +_021EA748: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [sp, #0x18] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021EA764 + mov r0, #1 + str r0, [r1] +_021EA764: + mov r7, #0x17 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_021EA76C: + ldr r0, [r5, r7] + bl FUN_0201FFC8 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #3 + blt _021EA76C + mov r1, #0x4f + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + bl MOD05_021E3E44 + mov r0, #0x81 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD05_021E43C4 + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl FUN_02019570 + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + bl FUN_02019178 + mov r0, #2 + lsl r0, r0, #8 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020191A4 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + ldr r0, [sp, #0x18] + mov r1, #3 + ldr r0, [r0, #0x10] + ldr r0, [r0, #8] + bl FUN_02018744 + ldr r1, [sp, #0x18] + mov r0, #4 + ldr r1, [r1, #0xc] + bl FUN_02016A8C + ldr r0, [sp, #0x14] + bl FUN_0200621C +_021EA7DE: + mov r1, #0x5f + mov r0, #0 + lsl r1, r1, #2 + str r0, [sp, #0x1c] + add r0, r4, r1 + add r1, #0x3c + add r5, r4, #0 + str r0, [sp, #0x20] + add r7, r4, r1 + add r6, r4, #0 +_021EA7F2: + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #1 + bne _021EA85A + ldr r0, [sp, #0x20] + bl MOD05_021E35C0 + str r0, [sp, #0x24] + add r0, r7, #0 + bl MOD05_021E35C0 + ldr r0, [sp, #0x24] + cmp r0, #0 + beq _021EA818 + mov r0, #0x7d + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_021EA818: + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0202011C + add r3, r0, #0 + add r2, sp, #0x2c + ldmia r3!, {r0, r1} + mov ip, r2 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, ip + str r0, [r2] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r6, r0] + lsl r0, r0, #0xc + str r0, [sp, #0x30] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02020044 + mov r1, #0x6e + lsl r1, r1, #2 + mov r0, #0x17 + ldr r1, [r6, r1] + lsl r0, r0, #4 + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 +_021EA85A: + ldr r0, [sp, #0x20] + add r5, r5, #4 + add r0, #0x14 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r7, #0x14 + add r0, r0, #1 + add r6, #0x14 + str r0, [sp, #0x1c] + cmp r0, #3 + blt _021EA7F2 + ldr r0, [sp, #0x18] + ldr r0, [r0] + cmp r0, #9 + beq _021EA87E + ldr r0, [r4] + bl FUN_0201FDEC +_021EA87E: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EA884 +MOD05_021EA884: ; 0x021EA884 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #7 + bls _021EA896 + b _021EAAC6 +_021EA896: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EA8A2: ; jump table + .short _021EA8B2 - _021EA8A2 - 2 ; case 0 + .short _021EA93E - _021EA8A2 - 2 ; case 1 + .short _021EA958 - _021EA8A2 - 2 ; case 2 + .short _021EA964 - _021EA8A2 - 2 ; case 3 + .short _021EA996 - _021EA8A2 - 2 ; case 4 + .short _021EA9C8 - _021EA8A2 - 2 ; case 5 + .short _021EAA38 - _021EA8A2 - 2 ; case 6 + .short _021EAA7C - _021EA8A2 - 2 ; case 7 +_021EA8B2: + mov r1, #0x69 + mov r0, #4 + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x69 + str r0, [r4, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + ldr r5, [r4, #0xc] + mov r1, #1 + add r0, r5, #0 + add r0, #0x2c + add r2, r1, #0 + bl MOD05_021E3E14 + mov r0, #5 + str r0, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + ldr r0, _021EAAD8 ; =0x000927C0 + mov r1, #0x5a + str r0, [sp, #0xc] + add r0, r5, #0 + lsl r1, r1, #2 + add r0, #0x2c + add r1, r5, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp] + mov r1, #0x5a + str r0, [sp, #4] + add r0, r5, #0 + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + add r0, #0x2c + add r1, r5, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020398 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA93E: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA958: + ldr r1, [r4, #4] + cmp r1, #0 + beq _021EA9AE + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA964: + add r0, r5, #0 + mov r1, #0 + mov r2, #0x10 + mov r3, #0xc + bl MOD05_021E35B0 + ldr r3, [r5] + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _021EAADC ; =0x04000050 + mov r1, #0 + mov r2, #0xf + bl G2x_SetBlendAlpha_ + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA996: + add r0, r5, #0 + bl MOD05_021E35C0 + ldr r2, [r5] + mov r1, #0x10 + sub r1, r1, r2 + lsl r1, r1, #8 + orr r1, r2 + ldr r2, _021EAAE0 ; =0x04000052 + cmp r0, #1 + strh r1, [r2] + beq _021EA9B0 +_021EA9AE: + b _021EAAC6 +_021EA9B0: + mov r1, #0 + sub r0, r2, #2 + strh r1, [r0] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02020398 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EA9C8: + mov r0, #6 + str r0, [sp] + add r0, r5, #0 + mov r1, #1 + ldr r2, _021EAAE4 ; =0x0000019A + add r0, #0x14 + lsl r1, r1, #0xc + mov r3, #1 + bl MOD05_021E3644 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020200EC + ldr r1, [r5, #0x14] + add r0, sp, #0x1c + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r6, sp, #0x1c + add r3, sp, #0x34 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02020064 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x10 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EAA38: + add r0, r5, #0 + add r0, #0x14 + bl MOD05_021E36A4 + ldr r1, [r5, #0x14] + add r6, r0, #0 + add r0, sp, #0x10 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E3FF8 + add r3, sp, #0x10 + add r2, sp, #0x28 + ldmia r3!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r7, #0 + str r0, [r2] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02020064 + cmp r6, #1 + bne _021EAAC6 + bl FUN_0200E308 + cmp r0, #1 + bne _021EAAC6 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021EAAC6 +_021EAA7C: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021EAA98 + mov r0, #1 + str r0, [r1] +_021EAA98: + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + mov r1, #0x5a + add r0, r5, #0 + lsl r1, r1, #2 + add r0, #0x2c + add r1, r5, r1 + bl MOD05_021E3F3C + add r0, r5, #0 + add r0, #0x2c + bl MOD05_021E3E44 + ldr r1, [r4, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C +_021EAAC6: + ldr r0, [r4] + cmp r0, #7 + beq _021EAAD2 + ldr r0, [r5, #0x2c] + bl FUN_0201FDEC +_021EAAD2: + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EAAD8: .word 0x000927C0 +_021EAADC: .word 0x04000050 +_021EAAE0: .word 0x04000052 +_021EAAE4: .word 0x0000019A + + thumb_func_start MOD05_021EAAE8 +MOD05_021EAAE8: ; 0x021EAAE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r6, r1, #0 + str r0, [sp, #0x10] + ldr r0, [r6] + ldr r4, [r6, #0xc] + cmp r0, #7 + bhi _021EABBC + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EAB04: ; jump table + .short _021EAB14 - _021EAB04 - 2 ; case 0 + .short _021EAB9C - _021EAB04 - 2 ; case 1 + .short _021EABB6 - _021EAB04 - 2 ; case 2 + .short _021EABC4 - _021EAB04 - 2 ; case 3 + .short _021EAC0E - _021EAB04 - 2 ; case 4 + .short _021EACC0 - _021EAB04 - 2 ; case 5 + .short _021EACEA - _021EAB04 - 2 ; case 6 + .short _021EACFA - _021EAB04 - 2 ; case 7 +_021EAB14: + mov r1, #0x1b + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x1b + str r0, [r6, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + ldr r4, [r6, #0xc] + mov r1, #4 + add r0, r4, #0 + mov r2, #1 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021EAD5C ; =0x000927C0 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r7, #0 + add r5, r4, #0 +_021EAB5A: + mov r0, #0 + mov r1, #0x4f + str r0, [sp] + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #4 + blt _021EAB5A + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EAB9C: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r6, #4 + bl MOD05_021E3474 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EABB6: + ldr r1, [r6, #4] + cmp r1, #0 + bne _021EABBE +_021EABBC: + b _021EAD4C +_021EABBE: + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EABC4: + mov r3, #6 + mov r2, #4 + lsl r3, r3, #6 + str r2, [sp] + add r0, r4, r3 + mov r1, #0 + lsl r2, r2, #0x11 + add r3, #0x1a + bl MOD05_021E3644 + mov r3, #0x66 + mov r0, #4 + mov r2, #0xa + lsl r3, r3, #2 + str r0, [sp] + add r0, r4, r3 + mov r1, #0 + lsl r2, r2, #0x10 + add r3, r3, #2 + bl MOD05_021E3644 + mov r7, #0 + add r5, r4, #0 +_021EABF2: + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #4 + blt _021EABF2 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EAC0E: + mov r0, #6 + lsl r0, r0, #6 + mov r7, #0 + add r5, r4, r0 +_021EAC16: + add r0, r5, #0 + bl MOD05_021E36A4 + add r7, r7, #1 + add r5, #0x18 + str r0, [sp, #0x14] + cmp r7, #2 + blt _021EAC16 + mov r2, #6 + lsl r2, r2, #6 + ldr r3, [r4, r2] + mov r1, #2 + lsl r2, r2, #0xa + sub r2, r2, r3 + add r0, sp, #0x18 + lsl r1, r1, #0x12 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020044 + mov r2, #6 + lsl r2, r2, #6 + ldr r3, [r4, r2] + mov r1, #2 + lsl r2, r2, #0xa + add r2, r3, r2 + add r0, sp, #0x18 + lsl r1, r1, #0x12 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020044 + mov r1, #0x66 + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r1, #2 + lsl r1, r1, #0x12 + sub r1, r1, r2 + mov r2, #6 + add r0, sp, #0x18 + lsl r2, r2, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020044 + mov r1, #0x66 + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r1, #2 + lsl r1, r1, #0x12 + add r1, r2, r1 + mov r2, #6 + add r0, sp, #0x18 + lsl r2, r2, #0x10 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020044 + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _021EAD4C + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EACC0: + ldr r0, [r6, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x22 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EACEA: + bl FUN_0200E308 + cmp r0, #1 + bne _021EAD4C + ldr r0, [r6] + add r0, r0, #1 + str r0, [r6] + b _021EAD4C +_021EACFA: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [r6, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r1, [r6, #0x14] + cmp r1, #0 + beq _021EAD16 + mov r0, #1 + str r0, [r1] +_021EAD16: + mov r7, #0 + add r5, r4, #0 +_021EAD1A: + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0201FFC8 + add r7, r7, #1 + add r5, r5, #4 + cmp r7, #4 + blt _021EAD1A + mov r1, #0x4f + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + bl MOD05_021E3E44 + ldr r1, [r6, #0xc] + mov r0, #4 + bl FUN_02016A8C + ldr r0, [sp, #0x10] + bl FUN_0200621C +_021EAD4C: + ldr r0, [r6] + cmp r0, #7 + beq _021EAD58 + ldr r0, [r4] + bl FUN_0201FDEC +_021EAD58: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021EAD5C: .word 0x000927C0 + + thumb_func_start MOD05_021EAD60 +MOD05_021EAD60: ; 0x021EAD60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x48 + str r0, [sp, #0x10] + add r0, r1, #0 + ldr r0, [r0] + str r1, [sp, #0x14] + ldr r4, [r1, #0xc] + cmp r0, #7 + bhi _021EAE6E + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EAD7E: ; jump table + .short _021EAD8E - _021EAD7E - 2 ; case 0 + .short _021EAE1A - _021EAD7E - 2 ; case 1 + .short _021EAE3A - _021EAD7E - 2 ; case 2 + .short _021EAE5E - _021EAD7E - 2 ; case 3 + .short _021EAF9C - _021EAD7E - 2 ; case 4 + .short _021EAFAE - _021EAD7E - 2 ; case 5 + .short _021EAFDE - _021EAD7E - 2 ; case 6 + .short _021EAFF2 - _021EAD7E - 2 ; case 7 +_021EAD8E: + mov r1, #0x3d + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + ldr r1, [sp, #0x14] + mov r2, #0x3d + str r0, [r1, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + ldr r0, [sp, #0x14] + mov r1, #6 + ldr r4, [r0, #0xc] + mov r2, #1 + add r0, r4, #0 + bl MOD05_021E3E14 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + ldr r0, _021EB138 ; =0x000927C0 + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [sp, #0xc] + add r0, r4, #0 + add r1, r4, r1 + mov r2, #0 + mov r3, #1 + bl MOD05_021E3E64 + mov r7, #0x4f + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_021EADDC: + mov r0, #0 + str r0, [sp] + mov r2, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r4, r7 + add r3, r2, #0 + bl MOD05_021E3FC4 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _021EADDC + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAE1A: + mov r0, #2 + str r0, [sp] + mov r0, #1 + add r1, r0, #0 + ldr r3, [sp, #0x14] + sub r1, #0x11 + add r2, r1, #0 + add r3, r3, #4 + bl MOD05_021E3474 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAE3A: + ldr r1, [sp, #0x14] + ldr r1, [r1, #4] + cmp r1, #0 + beq _021EAE6E + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + mov r0, #0xf2 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r1, [r4, r0] + add r0, r0, #4 + lsl r2, r1, #5 + ldr r1, _021EB13C ; =0x021F7A50 + ldr r1, [r1, r2] + str r1, [r4, r0] + b _021EB04A +_021EAE5E: + mov r0, #0xf3 + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + blt _021EAE70 +_021EAE6E: + b _021EB04A +_021EAE70: + sub r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #8 + str r1, [sp] + mov r1, #0x86 + lsl r1, r1, #2 + add r2, r4, r1 + mov r1, #0x18 + mul r1, r0 + lsl r3, r0, #5 + add r0, r2, r1 + ldr r1, _021EB140 ; =0x021F7A38 + ldr r2, _021EB144 ; =0x021F7A3C + ldr r5, _021EB148 ; =0x021F7A40 + ldr r1, [r1, r3] + ldr r2, [r2, r3] + ldr r3, [r5, r3] + bl MOD05_021E3644 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #8 + str r1, [sp] + mov r1, #0xaa + lsl r1, r1, #2 + add r2, r4, r1 + mov r1, #0x18 + mul r1, r0 + lsl r3, r0, #5 + add r0, r2, r1 + ldr r1, _021EB14C ; =0x021F7A44 + ldr r2, _021EB150 ; =0x021F7A48 + ldr r5, _021EB154 ; =0x021F7A4C + ldr r1, [r1, r3] + ldr r2, [r2, r3] + ldr r3, [r5, r3] + bl MOD05_021E3644 + mov r0, #0x62 + lsl r0, r0, #2 + mov r1, #8 + add r3, r4, r0 + mov r0, #0xf2 + str r1, [sp] + lsl r0, r0, #2 + ldr r2, [r4, r0] + mov r0, #0x18 + mul r0, r2 + add r0, r3, r0 + ldr r3, _021EB158 ; =0xFFFFF99A + lsl r1, r1, #0xa + mov r2, #0x29 + bl MOD05_021E3644 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r2, [r4, r0] + sub r0, #0x90 + add r1, r4, r0 + mov r0, #0x14 + mul r0, r2 + lsl r3, r2, #5 + ldr r2, _021EB15C ; =0x021F7A54 + add r0, r1, r0 + ldr r2, [r2, r3] + mov r1, #0 + mov r3, #8 + bl MOD05_021E35B0 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, _021EB140 ; =0x021F7A38 + lsl r3, r0, #5 + ldr r2, _021EB14C ; =0x021F7A44 + ldr r1, [r1, r3] + ldr r2, [r2, r3] + add r0, sp, #0x3c + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #0x3c + bl FUN_02020044 + mov r1, #2 + lsl r1, r1, #0xc + add r0, sp, #0x30 + add r2, r1, #0 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0xf2 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #2 + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #0x30 + bl FUN_02020074 + mov r1, #0xf2 + lsl r1, r1, #2 + ldr r0, [r4, r1] + mov r3, #1 + lsl r0, r0, #2 + add r2, r4, r0 + add r0, r1, #0 + sub r0, #0x18 + str r3, [r2, r0] + ldr r0, [r4, r1] + add r0, r0, #1 + str r0, [r4, r1] + ldr r0, [r4, r1] + cmp r0, #6 + blt _021EAF90 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAF90: + lsl r2, r0, #5 + ldr r0, _021EB13C ; =0x021F7A50 + ldr r2, [r0, r2] + add r0, r1, #4 + str r2, [r4, r0] + b _021EB04A +_021EAF9C: + mov r1, #0xf1 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + bne _021EB04A + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAFAE: + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F4608 + mov r0, #0xc + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r2, #0 + str r0, [sp, #8] + mov r0, #3 + mov r1, #0x22 + add r3, r2, #0 + bl FUN_0200E1D0 + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAFDE: + bl FUN_0200E308 + cmp r0, #0 + beq _021EB04A + ldr r0, [sp, #0x14] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #0x14] + str r1, [r0] + b _021EB04A +_021EAFF2: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl MOD05_021F45E8 + ldr r0, [sp, #0x14] + ldr r1, [r0, #0x14] + cmp r1, #0 + beq _021EB012 + mov r0, #1 + str r0, [r1] +_021EB012: + mov r7, #0x17 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #4 +_021EB01A: + ldr r0, [r5, r7] + bl FUN_0201FFC8 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #6 + blt _021EB01A + mov r1, #0x4f + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + bl MOD05_021E3E44 + ldr r1, [sp, #0x14] + mov r0, #4 + ldr r1, [r1, #0xc] + bl FUN_02016A8C + ldr r0, [sp, #0x10] + bl FUN_0200621C +_021EB04A: + mov r1, #0x86 + mov r0, #0 + lsl r1, r1, #2 + str r0, [sp, #0x18] + add r0, r4, r1 + str r0, [sp, #0x28] + add r0, r1, #0 + add r0, #0x90 + add r0, r4, r0 + sub r1, #0x90 + str r0, [sp, #0x24] + add r0, r4, r1 + str r0, [sp, #0x20] + mov r0, #0xce + lsl r0, r0, #2 + add r0, r4, r0 + add r5, r4, #0 + str r0, [sp, #0x1c] + add r6, r4, #0 + add r7, r4, #0 +_021EB072: + mov r0, #0x3b + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #1 + bne _021EB0FE + ldr r0, [sp, #0x28] + bl MOD05_021E36A4 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x24] + bl MOD05_021E36A4 + ldr r0, [sp, #0x20] + bl MOD05_021E36A4 + ldr r0, [sp, #0x1c] + bl MOD05_021E35C0 + ldr r0, [sp, #0x2c] + cmp r0, #0 + beq _021EB0AE + mov r0, #0x3b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_020200A0 +_021EB0AE: + mov r1, #0x86 + mov r2, #0xaa + lsl r1, r1, #2 + lsl r2, r2, #2 + ldr r1, [r6, r1] + ldr r2, [r6, r2] + add r0, sp, #0x3c + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, sp, #0x3c + bl FUN_02020044 + mov r0, #0x62 + lsl r0, r0, #2 + ldr r1, [r6, r0] + add r0, sp, #0x30 + add r2, r1, #0 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, sp, #0x30 + bl FUN_02020064 + mov r1, #0xce + lsl r1, r1, #2 + mov r0, #0x17 + ldr r1, [r7, r1] + lsl r0, r0, #4 + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0x10 + bl FUN_02020088 +_021EB0FE: + ldr r0, [sp, #0x28] + add r5, r5, #4 + add r0, #0x18 + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + add r6, #0x18 + add r0, #0x18 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r7, #0x14 + add r0, #0x18 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r0, #0x14 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #6 + blt _021EB072 + ldr r0, [sp, #0x14] + ldr r0, [r0] + cmp r0, #7 + beq _021EB134 + ldr r0, [r4] + bl FUN_0201FDEC +_021EB134: + add sp, #0x48 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EB138: .word 0x000927C0 +_021EB13C: .word 0x021F7A50 +_021EB140: .word 0x021F7A38 +_021EB144: .word 0x021F7A3C +_021EB148: .word 0x021F7A40 +_021EB14C: .word 0x021F7A44 +_021EB150: .word 0x021F7A48 +_021EB154: .word 0x021F7A4C +_021EB158: .word 0xFFFFF99A +_021EB15C: .word 0x021F7A54 + + thumb_func_start MOD05_021EB160 +MOD05_021EB160: ; 0x021EB160 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5] + ldr r4, [r5, #0xc] + cmp r0, #7 + bls _021EB172 + b _021EB3F2 +_021EB172: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EB17E: ; jump table + .short _021EB18E - _021EB17E - 2 ; case 0 + .short _021EB272 - _021EB17E - 2 ; case 1 + .short _021EB28C - _021EB17E - 2 ; case 2 + .short _021EB29A - _021EB17E - 2 ; case 3 + .short _021EB2D4 - _021EB17E - 2 ; case 4 + .short _021EB312 - _021EB17E - 2 ; case 5 + .short _021EB344 - _021EB17E - 2 ; case 6 + .short _021EB374 - _021EB17E - 2 ; case 7 +_021EB18E: + mov r1, #0x6f + mov r0, #4 + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x6f + str r0, [r5, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + ldr r4, [r5, #0xc] + mov r1, #1 + add r0, r4, #0 + add r0, #8 + add r2, r1, #0 + bl MOD05_021E3E14 + mov r0, #8 + str r0, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #9 + str r0, [sp, #8] + ldr r0, _021EB404 ; =0x000927C0 + mov r1, #0x51 + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #1 + add r0, #8 + add r1, r4, r1 + add r3, r2, #0 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp] + mov r1, #0x51 + str r0, [sp, #4] + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #2 + mov r3, #6 + add r0, #8 + add r1, r4, r1 + lsl r2, r2, #0x12 + lsl r3, r3, #0x10 + bl MOD05_021E3FC4 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02020398 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02020238 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + bl MOD05_021E4688 + str r0, [r4, #4] + mov r0, #4 + mov r1, #1 + bl FUN_02018FF4 + str r0, [r4] + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r5, #0x10] + ldr r1, [r4] + ldr r0, [r0, #8] + mov r2, #3 + bl FUN_02019064 + mov r1, #0 + add r0, sp, #0x14 + strh r1, [r0] + mov r0, #3 + add r1, sp, #0x14 + mov r2, #2 + mov r3, #0x1e + bl FUN_02017FB4 + ldr r0, [r4] + mov r1, #0 + bl FUN_02019620 + ldr r0, [r4] + bl FUN_02019220 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB272: + mov r1, #0x10 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + sub r2, #0x20 + add r3, r5, #4 + bl MOD05_021E3474 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB28C: + ldr r1, [r5, #4] + cmp r1, #0 + bne _021EB294 + b _021EB3F2 +_021EB294: + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB29A: + mov r0, #0x19 + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + mov r2, #0x10 + mov r3, #0xf + bl MOD05_021E35B0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r3, [r4, r0] + mov r0, #0x10 + sub r0, r0, r3 + str r0, [sp] + ldr r0, _021EB408 ; =0x04000050 + mov r1, #0 + mov r2, #0xf + bl G2x_SetBlendAlpha_ + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB2D4: + mov r0, #0x19 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD05_021E35C0 + mov r2, #0x19 + lsl r2, r2, #4 + ldr r1, [r4, r2] + mov r3, #0x10 + sub r3, r3, r1 + lsl r3, r3, #8 + orr r1, r3 + ldr r3, _021EB40C ; =0x04000052 + cmp r0, #1 + strh r1, [r3] + bne _021EB3F2 + mov r1, #0 + sub r0, r3, #2 + sub r2, #0x18 + strh r1, [r0] + ldr r0, [r4, r2] + bl FUN_02020398 + ldr r0, [r5] + mov r1, #0x10 + add r0, r0, #1 + str r0, [r5] + mov r0, #0x6e + lsl r0, r0, #2 + str r1, [r4, r0] + b _021EB3F2 +_021EB312: + mov r0, #0x6e + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0 + bgt _021EB3F2 + sub r0, #0x3c + add r0, r4, r0 + mov r1, #0 + mov r2, #0xe + mov r3, #0x10 + bl MOD05_021E35B0 + ldr r0, [r4, #4] + ldr r2, [r4] + mov r1, #0x10 + mov r3, #0xf + bl MOD05_021E46D4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EB3F2 +_021EB344: + mov r0, #0x5f + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD05_021E35C0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r1, [r4, r0] + lsl r0, r1, #4 + orr r1, r0 + ldr r0, _021EB410 ; =0x0400004D + strb r1, [r0] + ldr r0, [r4, #4] + bl MOD05_021E4754 + cmp r0, #0 + beq _021EB36C + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_021EB36C: + ldr r0, [r4] + bl FUN_02019220 + b _021EB3F2 +_021EB374: + mov r0, #0 + add r1, r0, #0 + bl FUN_0200E3A0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + ldr r0, [r4, #4] + bl MOD05_021E46B4 + ldr r1, [r5, #0x14] + cmp r1, #0 + beq _021EB394 + mov r0, #1 + str r0, [r1] +_021EB394: + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r1, #0x51 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #8 + add r1, r4, r1 + bl MOD05_021E3F3C + add r0, r4, #0 + add r0, #8 + bl MOD05_021E3E44 + ldr r0, [r4] + bl FUN_02019570 + ldr r0, [r4] + bl FUN_02019178 + ldr r0, [r4] + mov r1, #1 + bl FUN_020191A4 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + ldr r0, [r5, #0x10] + mov r1, #3 + ldr r0, [r0, #8] + bl FUN_02018744 + ldr r0, _021EB410 ; =0x0400004D + mov r1, #0 + strb r1, [r0] + ldr r1, [r5, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C +_021EB3F2: + ldr r0, [r5] + cmp r0, #7 + beq _021EB3FE + ldr r0, [r4, #8] + bl FUN_0201FDEC +_021EB3FE: + add sp, #0x18 + pop {r4, r5, r6, pc} + nop +_021EB404: .word 0x000927C0 +_021EB408: .word 0x04000050 +_021EB40C: .word 0x04000052 +_021EB410: .word 0x0400004D + + thumb_func_start MOD05_021EB414 +MOD05_021EB414: ; 0x021EB414 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #8] + ldr r1, [r5, #0x20] + bl FUN_0201EEF0 + ldr r0, [r4] + ldr r1, [r5, #0x20] + bl FUN_0201EFE0 + ldrh r1, [r4, #4] + add r0, sp, #0 + strh r1, [r0] + ldrh r1, [r4, #6] + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + ldr r1, [r5, #0x20] + add r0, sp, #0 + bl FUN_0201EF90 + add sp, #8 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EB448 +MOD05_021EB448: ; 0x021EB448 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #7 + bls _021EB45A + b _021EB5A0 +_021EB45A: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EB466: ; jump table + .short _021EB476 - _021EB466 - 2 ; case 0 + .short _021EB4AE - _021EB466 - 2 ; case 1 + .short _021EB4C6 - _021EB466 - 2 ; case 2 + .short _021EB4D4 - _021EB466 - 2 ; case 3 + .short _021EB4F8 - _021EB466 - 2 ; case 4 + .short _021EB534 - _021EB466 - 2 ; case 5 + .short _021EB556 - _021EB466 - 2 ; case 6 + .short _021EB56C - _021EB466 - 2 ; case 7 +_021EB476: + mov r0, #4 + mov r1, #0x10 + bl FUN_02016998 + str r0, [r4, #0xc] + mov r2, #0x10 + mov r1, #0 +_021EB484: + strb r1, [r0] + add r0, r0, #1 + sub r2, r2, #1 + bne _021EB484 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB4AE: + mov r0, #1 + mov r1, #0x10 + str r0, [sp] + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB4C6: + ldr r1, [r4, #4] + cmp r1, #0 + beq _021EB5A0 + add r0, r0, #1 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB4D4: + mov r0, #3 + mov r1, #0xf + bl MOD05_021E8860 + mov r2, #0 + str r0, [r5] + mov r0, #0xc + add r1, r2, #0 + mul r1, r0 + ldr r0, _021EB5A4 ; =0x021F7982 + str r2, [r5, #8] + ldrh r0, [r0, r1] + add sp, #0xc + str r0, [r5, #0xc] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB4F8: + ldr r0, [r5, #0xc] + sub r0, r0, #1 + str r0, [r5, #0xc] + bpl _021EB5A0 + ldr r2, [r5, #8] + mov r1, #0xc + ldr r3, _021EB5A8 ; =0x021F7978 + mul r1, r2 + ldr r0, [r4, #0x10] + add r1, r3, r1 + bl MOD05_021EB414 + ldr r0, [r5, #8] + add r2, r0, #1 + str r2, [r5, #8] + cmp r2, #0x10 + blo _021EB524 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB524: + mov r0, #0xc + add r1, r2, #0 + mul r1, r0 + ldr r0, _021EB5A4 ; =0x021F7982 + add sp, #0xc + ldrh r0, [r0, r1] + str r0, [r5, #0xc] + pop {r3, r4, r5, r6, pc} +_021EB534: + mov r0, #0xa + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021EB5AC ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB556: + bl FUN_0200E308 + cmp r0, #0 + beq _021EB5A0 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB56C: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r5, #0 + bl MOD05_021E88C0 + ldr r0, _021EB5B0 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021EB58A + mov r0, #1 + str r0, [r1] +_021EB58A: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021EB5A0: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021EB5A4: .word 0x021F7982 +_021EB5A8: .word 0x021F7978 +_021EB5AC: .word 0x00007FFF +_021EB5B0: .word 0x04000050 + + thumb_func_start MOD05_021EB5B4 +MOD05_021EB5B4: ; 0x021EB5B4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0xc] + cmp r0, #9 + bhi _021EB636 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EB5D0: ; jump table + .short _021EB5E4 - _021EB5D0 - 2 ; case 0 + .short _021EB618 - _021EB5D0 - 2 ; case 1 + .short _021EB630 - _021EB5D0 - 2 ; case 2 + .short _021EB640 - _021EB5D0 - 2 ; case 3 + .short _021EB66E - _021EB5D0 - 2 ; case 4 + .short _021EB698 - _021EB5D0 - 2 ; case 5 + .short _021EB6C6 - _021EB5D0 - 2 ; case 6 + .short _021EB6E8 - _021EB5D0 - 2 ; case 7 + .short _021EB70A - _021EB5D0 - 2 ; case 8 + .short _021EB720 - _021EB5D0 - 2 ; case 9 +_021EB5E4: + mov r0, #4 + mov r1, #0x38 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x38 + str r0, [r4, #0xc] + bl Call_FillMemWithValue + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB618: + mov r0, #1 + mov r1, #0x10 + str r0, [sp] + add r2, r1, #0 + add r3, r4, #4 + bl MOD05_021E3474 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB630: + ldr r1, [r4, #4] + cmp r1, #0 + bne _021EB638 +_021EB636: + b _021EB754 +_021EB638: + add r0, r0, #1 + add sp, #0xc + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB640: + mov r0, #5 + mov r1, #0xd + bl MOD05_021E8860 + str r0, [r5] + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + bl FUN_0201F008 + mov r2, #1 + add r1, r0, #0 + add r5, #8 + lsl r2, r2, #8 + add r0, r5, #0 + add r2, r1, r2 + mov r3, #0x28 + bl MOD05_021E35B0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB66E: + add r0, r5, #0 + add r0, #8 + bl MOD05_021E35C0 + add r6, r0, #0 + ldr r0, [r5, #8] + ldr r1, [r4, #0x10] + lsl r0, r0, #0x10 + ldr r1, [r1, #0x20] + lsr r0, r0, #0x10 + bl FUN_0201EEF0 + cmp r6, #1 + bne _021EB754 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + mov r0, #5 + str r0, [r5, #0x34] + pop {r3, r4, r5, r6, pc} +_021EB698: + ldr r0, [r5, #0x34] + sub r0, r0, #1 + str r0, [r5, #0x34] + bpl _021EB754 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x20] + bl FUN_0201F010 + mov r3, #8 + str r3, [sp] + ldr r2, _021EB758 ; =0x0092E000 + add r1, r0, #0 + add r5, #0x1c + add r0, r5, #0 + sub r2, r1, r2 + lsl r3, r3, #8 + bl MOD05_021E3644 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB6C6: + add r0, r5, #0 + add r0, #0x1c + bl MOD05_021E36A4 + ldr r1, [r4, #0x10] + add r6, r0, #0 + ldr r0, [r5, #0x1c] + ldr r1, [r1, #0x20] + bl FUN_0201EFE0 + cmp r6, #1 + bne _021EB754 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB6E8: + mov r0, #0x3c + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021EB75C ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB70A: + bl FUN_0200E308 + cmp r0, #0 + beq _021EB754 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, pc} +_021EB720: + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r5, #0 + bl MOD05_021E88C0 + ldr r0, _021EB760 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r1, [r4, #0x14] + cmp r1, #0 + beq _021EB73E + mov r0, #1 + str r0, [r1] +_021EB73E: + ldr r1, [r4, #0xc] + mov r0, #4 + bl FUN_02016A8C + add r0, r6, #0 + bl FUN_0200621C + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 +_021EB754: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021EB758: .word 0x0092E000 +_021EB75C: .word 0x00007FFF +_021EB760: .word 0x04000050 + + thumb_func_start MOD05_021EB764 +MOD05_021EB764: ; 0x021EB764 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r0, #0 + str r1, [sp, #0x14] + ldr r1, [r5] + add r6, r2, #0 + ldr r4, [r5, #0xc] + cmp r1, #0xe + bls _021EB778 + b _021EBB72 +_021EB778: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021EB784: ; jump table + .short _021EB7A2 - _021EB784 - 2 ; case 0 + .short _021EB848 - _021EB784 - 2 ; case 1 + .short _021EB85E - _021EB784 - 2 ; case 2 + .short _021EB86A - _021EB784 - 2 ; case 3 + .short _021EB8B8 - _021EB784 - 2 ; case 4 + .short _021EB8D6 - _021EB784 - 2 ; case 5 + .short _021EB99C - _021EB784 - 2 ; case 6 + .short _021EB9EE - _021EB784 - 2 ; case 7 + .short _021EBA04 - _021EB784 - 2 ; case 8 + .short _021EBA34 - _021EB784 - 2 ; case 9 + .short _021EBA4A - _021EB784 - 2 ; case 10 + .short _021EBA72 - _021EB784 - 2 ; case 11 + .short _021EBA8A - _021EB784 - 2 ; case 12 + .short _021EBAAA - _021EB784 - 2 ; case 13 + .short _021EBB0E - _021EB784 - 2 ; case 14 +_021EB7A2: + mov r1, #0x1f + ldr r0, [sp, #0x14] + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x1f + str r0, [r5, #0xc] + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + ldr r4, [r5, #0xc] + mov r1, #1 + add r0, r4, #0 + add r0, #0x44 + add r2, r1, #0 + bl MOD05_021E3E14 + mov r0, #0x17 + str r0, [sp] + mov r1, #0x18 + str r1, [sp, #4] + mov r0, #0x19 + str r0, [sp, #8] + ldr r0, _021EBB4C ; =0x000927C0 + lsl r1, r1, #4 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x44 + add r1, r4, r1 + mov r2, #0x16 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0 + str r0, [sp] + mov r1, #6 + str r0, [sp, #4] + add r0, r4, #0 + lsl r1, r1, #6 + mov r3, #0x11 + ldr r2, _021EBB50 ; =0xFFFE0000 + add r0, #0x44 + add r1, r4, r1 + lsl r3, r3, #0xe + bl MOD05_021E3FC4 + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0 + str r0, [sp] + ldrh r0, [r6, #6] + ldr r1, [sp, #0x14] + mov r3, #0xa + str r0, [sp, #4] + mov r0, #0x6d + lsl r0, r0, #2 + ldrh r2, [r6, #4] + ldr r0, [r4, r0] + bl MOD05_021E4014 + ldr r0, [r5, #0x10] + ldr r0, [r0, #8] + bl MOD05_021E3C00 + bl MOD05_021E4788 + str r0, [r4, #0x40] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB848: + mov r0, #1 + mov r1, #0x10 + str r0, [sp] + add r2, r1, #0 + add r3, r5, #4 + bl MOD05_021E3474 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB85E: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021EB8E6 + add r0, r1, #1 + str r0, [r5] + b _021EBB72 +_021EB86A: + ldr r3, [r5, #0x10] + mov r0, #0xd + ldr r3, [r3, #8] + mov r1, #0xc + mov r2, #0xb + bl MOD05_021E3D20 + mov r0, #0x79 + mov r2, #8 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0x10 + str r0, [sp] + mov r0, #0x1f + str r0, [sp, #4] + mov r0, #0x17 + str r0, [sp, #8] + ldr r1, [r4, #0x40] + add r0, r5, #0 + add r3, r2, #0 + bl MOD05_021E47BC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0x2c + add r2, r1, #0 + mov r3, #0xf + bl MOD05_021E35EC + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB8B8: + bl MOD05_021E35AC + cmp r0, #0 + beq _021EB8E6 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + ldr r0, [r4, #0x40] + bl MOD05_021E47A0 + mov r0, #0x7b + mov r1, #0xa + lsl r0, r0, #2 + str r1, [r4, r0] + b _021EBB72 +_021EB8D6: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + blt _021EB8E8 +_021EB8E6: + b _021EBB72 +_021EB8E8: + mov r1, #2 + lsl r1, r1, #0xc + add r0, sp, #0x18 + add r2, r1, #0 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020064 + mov r0, #0 + str r0, [sp] + mov r0, #0x6e + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #4] + mov r0, #0x11 + mov r2, #2 + lsl r0, r0, #0xe + mov r1, #0x62 + lsl r2, r2, #0xc + mov r3, #0x40 + bl MOD05_021E49F0 + ldr r3, _021EBB54 ; =0x04000048 + mov r0, #0x3f + ldrh r2, [r3] + mov r1, #0x1f + bic r2, r0 + orr r2, r1 + mov r1, #0x20 + orr r2, r1 + strh r2, [r3] + ldrh r2, [r3, #2] + bic r2, r0 + mov r0, #0xf + orr r0, r2 + orr r0, r1 + strh r0, [r3, #2] + lsl r0, r1, #0x15 + ldr r3, [r0] + ldr r2, _021EBB58 ; =0xFFFF1FFF + lsl r1, r1, #8 + and r2, r3 + orr r1, r2 + str r1, [r0] + mov r3, #4 + str r3, [sp] + ldr r1, _021EBB50 ; =0xFFFE0000 + ldr r2, [r6] + add r0, r4, #0 + lsl r3, r3, #0x10 + bl MOD05_021E3644 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020238 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r2, #0x11 + ldr r1, [r4] + add r0, sp, #0x24 + lsl r2, r2, #0xe + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x24 + bl FUN_02020044 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB99C: + add r0, r4, #0 + bl MOD05_021E36A4 + mov r2, #0x11 + add r6, r0, #0 + ldr r1, [r4] + add r0, sp, #0x24 + lsl r2, r2, #0xe + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x24 + bl FUN_02020044 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + mov r1, #0 + str r1, [sp] + mov r1, #0x6e + lsl r1, r1, #2 + add r1, r4, r1 + str r1, [sp, #4] + mov r2, #2 + ldr r0, [r0, #4] + mov r1, #0x62 + lsl r2, r2, #0xc + mov r3, #0x40 + bl MOD05_021E49F0 + cmp r6, #1 + bne _021EBA60 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EB9EE: + add r0, r4, #0 + add r0, #0x18 + mov r1, #0 + mov r2, #0x10 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBA04: + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E35C0 + add r7, r0, #0 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E4AD0 + cmp r7, #1 + bne _021EBA60 + mov r3, #0 + str r3, [sp] + mov r0, #0x6d + lsl r0, r0, #2 + ldrh r2, [r6, #4] + ldr r0, [r4, r0] + ldr r1, [sp, #0x14] + bl MOD05_021E3F68 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBA34: + add r0, r4, #0 + add r0, #0x18 + mov r1, #0x10 + mov r2, #0 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBA4A: + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E4AD0 + cmp r6, #1 + beq _021EBA62 +_021EBA60: + b _021EBB72 +_021EBA62: + ldr r0, [r5] + mov r1, #0x1a + add r0, r0, #1 + str r0, [r5] + mov r0, #0x7b + lsl r0, r0, #2 + str r1, [r4, r0] + b _021EBB72 +_021EBA72: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0 + bge _021EBB72 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBA8A: + mov r0, #0xf + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021EBB5C ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBAAA: + add r0, r4, #0 + add r0, #0x2c + bl MOD05_021E35FC + mov r2, #1 + ldr r3, [r4, #0x2c] + lsl r2, r2, #0xc + add r1, r3, r2 + add r2, r3, r2 + add r0, sp, #0x18 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x18 + bl FUN_02020064 + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r6, r0, #0 + ldr r0, [r4, #0x2c] + mov r1, #0x44 + mov r2, #0x1e + bl MOD05_021E4A3C + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0x6e + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #4] + ldr r0, [r6, #4] + ldr r2, [sp, #0x1c] + mov r3, #0x40 + bl MOD05_021E49F0 + bl FUN_0200E308 + cmp r0, #0 + beq _021EBB72 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EBB72 +_021EBB0E: + ldr r1, _021EBB5C ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 + ldr r1, [r5, #0x14] + cmp r1, #0 + beq _021EBB20 + mov r0, #1 + str r0, [r1] +_021EBB20: + mov r0, #0x6d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r1, #6 + add r0, r4, #0 + lsl r1, r1, #6 + add r0, #0x44 + add r1, r4, r1 + bl MOD05_021E3F3C + add r4, #0x44 + add r0, r4, #0 + bl MOD05_021E3E44 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021EBB58 ; =0xFFFF1FFF + b _021EBB60 + nop +_021EBB4C: .word 0x000927C0 +_021EBB50: .word 0xFFFE0000 +_021EBB54: .word 0x04000048 +_021EBB58: .word 0xFFFF1FFF +_021EBB5C: .word 0x00007FFF +_021EBB60: + and r0, r1 + str r0, [r2] + ldr r1, [r5, #0xc] + mov r0, #4 + bl FUN_02016A8C + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EBB72: + mov r1, #0x79 + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #1 + bne _021EBBB6 + ldr r3, [r4, #0x2c] + mov r0, #0 + str r3, [sp] + str r0, [sp, #4] + mov r0, #0x80 + str r0, [sp, #8] + mov r0, #0x44 + str r0, [sp, #0xc] + add r0, r1, #4 + ldr r0, [r4, r0] + sub r1, #0x24 + str r0, [sp, #0x10] + add r0, r4, r1 + ldr r1, [r5, #0x10] + mov r2, #3 + ldr r1, [r1, #8] + bl MOD05_021E3DA0 + mov r3, #0x7a + lsl r3, r3, #2 + ldr r0, [r4, r3] + sub r0, #0xf + lsr r2, r0, #0x1f + lsl r1, r0, #0x17 + sub r1, r1, r2 + mov r0, #0x17 + ror r1, r0 + add r0, r2, r1 + str r0, [r4, r3] +_021EBBB6: + ldr r0, [r5] + cmp r0, #0xe + beq _021EBBC2 + ldr r0, [r4, #0x44] + bl FUN_0201FDEC +_021EBBC2: + mov r0, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EBBC8 +MOD05_021EBBC8: ; 0x021EBBC8 + push {r4, lr} + ldr r2, _021EBBE4 ; =0x021F7938 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBBE0 + add r0, r4, #0 + bl FUN_0200621C +_021EBBE0: + pop {r4, pc} + nop +_021EBBE4: .word 0x021F7938 + + thumb_func_start MOD05_021EBBE8 +MOD05_021EBBE8: ; 0x021EBBE8 + push {r4, lr} + ldr r2, _021EBC04 ; =0x021F7940 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC00 + add r0, r4, #0 + bl FUN_0200621C +_021EBC00: + pop {r4, pc} + nop +_021EBC04: .word 0x021F7940 + + thumb_func_start MOD05_021EBC08 +MOD05_021EBC08: ; 0x021EBC08 + push {r4, lr} + ldr r2, _021EBC24 ; =0x021F7948 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC20 + add r0, r4, #0 + bl FUN_0200621C +_021EBC20: + pop {r4, pc} + nop +_021EBC24: .word 0x021F7948 + + thumb_func_start MOD05_021EBC28 +MOD05_021EBC28: ; 0x021EBC28 + push {r4, lr} + ldr r2, _021EBC44 ; =0x021F7950 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC40 + add r0, r4, #0 + bl FUN_0200621C +_021EBC40: + pop {r4, pc} + nop +_021EBC44: .word 0x021F7950 + + thumb_func_start MOD05_021EBC48 +MOD05_021EBC48: ; 0x021EBC48 + push {r4, lr} + ldr r2, _021EBC64 ; =0x021F7958 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC60 + add r0, r4, #0 + bl FUN_0200621C +_021EBC60: + pop {r4, pc} + nop +_021EBC64: .word 0x021F7958 + + thumb_func_start MOD05_021EBC68 +MOD05_021EBC68: ; 0x021EBC68 + push {r4, lr} + ldr r2, _021EBC84 ; =0x021F7960 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBC80 + add r0, r4, #0 + bl FUN_0200621C +_021EBC80: + pop {r4, pc} + nop +_021EBC84: .word 0x021F7960 + + thumb_func_start MOD05_021EBC88 +MOD05_021EBC88: ; 0x021EBC88 + push {r4, lr} + ldr r2, _021EBCA4 ; =0x021F7968 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBCA0 + add r0, r4, #0 + bl FUN_0200621C +_021EBCA0: + pop {r4, pc} + nop +_021EBCA4: .word 0x021F7968 + + thumb_func_start MOD05_021EBCA8 +MOD05_021EBCA8: ; 0x021EBCA8 + push {r4, lr} + ldr r2, _021EBCC4 ; =0x021F7970 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EB764 + cmp r0, #1 + bne _021EBCC0 + add r0, r4, #0 + bl FUN_0200621C +_021EBCC0: + pop {r4, pc} + nop +_021EBCC4: .word 0x021F7970 + + thumb_func_start MOD05_021EBCC8 +MOD05_021EBCC8: ; 0x021EBCC8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020238F4 + bl FUN_020239CC + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EBCD8 +MOD05_021EBCD8: ; 0x021EBCD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + ldr r0, [r5] + str r1, [sp, #0x10] + str r2, [sp, #0x14] + ldr r4, [r5, #0xc] + cmp r0, #0x13 + bls _021EBCEC + b _021EC3A0 +_021EBCEC: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021EBCF8: ; jump table + .short _021EBD20 - _021EBCF8 - 2 ; case 0 + .short _021EBEC0 - _021EBCF8 - 2 ; case 1 + .short _021EBED6 - _021EBCF8 - 2 ; case 2 + .short _021EBEE4 - _021EBCF8 - 2 ; case 3 + .short _021EBF6C - _021EBCF8 - 2 ; case 4 + .short _021EBFBA - _021EBCF8 - 2 ; case 5 + .short _021EBFD0 - _021EBCF8 - 2 ; case 6 + .short _021EC002 - _021EBCF8 - 2 ; case 7 + .short _021EC018 - _021EBCF8 - 2 ; case 8 + .short _021EC038 - _021EBCF8 - 2 ; case 9 + .short _021EC0D4 - _021EBCF8 - 2 ; case 10 + .short _021EC122 - _021EBCF8 - 2 ; case 11 + .short _021EC138 - _021EBCF8 - 2 ; case 12 + .short _021EC16A - _021EBCF8 - 2 ; case 13 + .short _021EC180 - _021EBCF8 - 2 ; case 14 + .short _021EC19E - _021EBCF8 - 2 ; case 15 + .short _021EC1E8 - _021EBCF8 - 2 ; case 16 + .short _021EC21C - _021EBCF8 - 2 ; case 17 + .short _021EC284 - _021EBCF8 - 2 ; case 18 + .short _021EC342 - _021EBCF8 - 2 ; case 19 +_021EBD20: + mov r1, #0x9b + ldr r0, [sp, #0x10] + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x9b + str r0, [r5, #0xc] + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + ldr r4, [r5, #0xc] + mov r1, #4 + add r0, r4, #0 + add r0, #0x44 + mov r2, #3 + bl MOD05_021E3E14 + mov r0, #0x17 + str r0, [sp] + mov r1, #0x18 + str r1, [sp, #4] + mov r0, #0x19 + str r0, [sp, #8] + ldr r0, _021EC0C0 ; =0x000927C0 + lsl r1, r1, #4 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x44 + add r1, r4, r1 + mov r2, #0x16 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0x17 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0x19 + str r0, [sp, #8] + ldr r0, _021EC0C4 ; =0x000927C1 + mov r1, #0x6d + str r0, [sp, #0xc] + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x44 + add r1, r4, r1 + mov r2, #0x16 + mov r3, #1 + bl MOD05_021E3E64 + mov r0, #0xf + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0x11 + str r0, [sp, #8] + ldr r0, _021EC0C8 ; =0x000927C2 + mov r1, #0x7a + str r0, [sp, #0xc] + ldr r2, [sp, #0x14] + add r0, r4, #0 + lsl r1, r1, #2 + ldrb r2, [r2, #6] + add r0, #0x44 + add r1, r4, r1 + mov r3, #0xc + bl MOD05_021E3E64 + mov r1, #2 + lsl r1, r1, #0xc + add r0, sp, #0x34 + add r2, r1, #0 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #6 + lsl r0, r0, #6 + add r0, r4, r0 + str r0, [sp, #0x18] + str r0, [sp, #0x20] + add r0, r4, #0 + str r0, [sp, #0x24] + add r0, #0x44 + mov r7, #0 + add r6, r4, #0 + str r0, [sp, #0x24] +_021EBDCE: + cmp r7, #3 + bge _021EBDDA + mov r0, #0 + ldr r1, [sp, #0x18] + str r0, [sp, #0x1c] + b _021EBDEA +_021EBDDA: + sub r1, r7, #1 + mov r0, #0x34 + add r2, r1, #0 + mul r2, r0 + ldr r0, [sp, #0x20] + add r1, r0, r2 + mov r0, #1 + str r0, [sp, #0x1c] +_021EBDEA: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r2, #0 + ldr r0, [sp, #0x24] + add r3, r2, #0 + bl MOD05_021E3FC4 + mov r1, #0x87 + lsl r1, r1, #2 + str r0, [r6, r1] + add r0, r1, #0 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r6, r0] + ldr r1, [sp, #0x1c] + bl FUN_02020130 + ldr r0, [sp, #0x18] + add r7, r7, #1 + add r0, #0x34 + add r6, r6, #4 + str r0, [sp, #0x18] + cmp r7, #4 + blt _021EBDCE + ldr r0, [r5, #0x10] + bl MOD05_021EBCC8 + cmp r0, #0 + bne _021EBE48 + mov r2, #0 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + mov r3, #0xa + bl MOD05_021E4014 + mov r1, #0 + b _021EBE60 +_021EBE48: + mov r0, #0 + str r0, [sp] + mov r2, #1 + mov r0, #0x87 + str r2, [sp, #4] + lsl r0, r0, #2 + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + mov r3, #0xa + bl MOD05_021E4014 + mov r1, #1 +_021EBE60: + mov r0, #0x99 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x34 + bl FUN_02020064 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, [sp, #0x14] + mov r0, #0x22 + lsl r0, r0, #4 + ldrb r2, [r2, #5] + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + mov r3, #0xa + bl MOD05_021E4014 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020200EC + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x34 + bl FUN_02020064 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBEC0: + mov r0, #1 + mov r1, #0x10 + str r0, [sp] + add r2, r1, #0 + add r3, r5, #4 + bl MOD05_021E3474 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBED6: + ldr r1, [r5, #4] + cmp r1, #0 + bne _021EBEDE + b _021EC3A0 +_021EBEDE: + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBEE4: + mov r0, #6 + mov r2, #0x2e + mov r3, #1 + str r0, [sp] + ldr r1, _021EC0CC ; =0xFFFB0000 + add r0, r4, #0 + lsl r2, r2, #0xc + lsl r3, r3, #0x12 + bl MOD05_021E3644 + mov r2, #0x72 + ldr r1, [r4] + add r0, sp, #0x40 + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x89 + lsl r0, r0, #2 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBF6C: + add r0, r4, #0 + bl MOD05_021E36A4 + mov r2, #0x72 + add r6, r0, #0 + ldr r1, [r4] + add r0, sp, #0x40 + lsl r2, r2, #0xc + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + cmp r6, #1 + bne _021EC02E + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBFBA: + add r0, r4, #0 + add r0, #0x30 + mov r1, #0 + mov r2, #0x10 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EBFD0: + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E4AD0 + cmp r6, #1 + bne _021EC02E + mov r3, #0 + mov r2, #0x87 + str r3, [sp] + lsl r2, r2, #2 + ldr r0, [r4, r2] + add r2, #0x48 + ldr r1, [sp, #0x10] + ldr r2, [r4, r2] + bl MOD05_021E3F68 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC002: + add r0, r4, #0 + add r0, #0x30 + mov r1, #0x10 + mov r2, #0 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC018: + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E4AD0 + cmp r6, #1 + beq _021EC030 +_021EC02E: + b _021EC3A0 +_021EC030: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC038: + mov r0, #6 + mov r1, #0x15 + mov r2, #0xd + str r0, [sp] + ldr r3, _021EC0D0 ; =0xFFFC0000 + add r0, r4, #0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + bl MOD05_021E3644 + mov r2, #0x11 + ldr r1, [r4] + add r0, sp, #0x40 + lsl r2, r2, #0xe + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x8a + lsl r0, r0, #2 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020200D8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 + .balign 4, 0 +_021EC0C0: .word 0x000927C0 +_021EC0C4: .word 0x000927C1 +_021EC0C8: .word 0x000927C2 +_021EC0CC: .word 0xFFFB0000 +_021EC0D0: .word 0xFFFC0000 +_021EC0D4: + add r0, r4, #0 + bl MOD05_021E36A4 + mov r2, #0x11 + add r6, r0, #0 + ldr r1, [r4] + add r0, sp, #0x40 + lsl r2, r2, #0xe + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + cmp r6, #1 + bne _021EC212 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC122: + add r0, r4, #0 + add r0, #0x30 + mov r1, #0 + mov r2, #0x10 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC138: + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E4AD0 + cmp r6, #1 + bne _021EC212 + mov r3, #0 + mov r0, #0x22 + ldr r2, [sp, #0x14] + str r3, [sp] + lsl r0, r0, #4 + ldrb r2, [r2, #5] + ldr r0, [r4, r0] + ldr r1, [sp, #0x10] + bl MOD05_021E3F68 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC16A: + add r0, r4, #0 + add r0, #0x30 + mov r1, #0x10 + mov r2, #0 + mov r3, #3 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC180: + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E35C0 + add r6, r0, #0 + add r0, r4, #0 + add r0, #0x30 + bl MOD05_021E4AD0 + cmp r6, #1 + bne _021EC212 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC19E: + ldr r0, [r5, #0x10] + mov r1, #0x8b + ldr r0, [r0, #0x20] + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, [r4, r1] + add r0, sp, #0x2c + bl FUN_0201F014 + add r1, sp, #0x2c + mov r2, #0x92 + ldrh r0, [r1] + lsl r2, r2, #2 + strh r0, [r4, r2] + ldrh r3, [r1, #2] + add r0, r2, #2 + strh r3, [r4, r0] + ldrh r3, [r1, #4] + add r0, r2, #4 + strh r3, [r4, r0] + ldrh r1, [r1, #6] + add r0, r2, #6 + ldr r3, [sp, #0x14] + strh r1, [r4, r0] + ldrh r1, [r4, r2] + add r2, #8 + add r0, r4, r2 + ldr r2, [sp, #0x14] + ldrb r3, [r3, #4] + ldr r2, [r2] + add r2, r1, r2 + bl MOD05_021E35B0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC1E8: + mov r0, #0x25 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD05_021E35C0 + mov r1, #0x25 + lsl r1, r1, #4 + add r6, r0, #0 + add r0, r1, #0 + ldr r2, [r4, r1] + sub r0, #8 + strh r2, [r4, r0] + add r0, r1, #0 + sub r1, #0x24 + sub r0, #8 + ldr r1, [r4, r1] + add r0, r4, r0 + bl FUN_0201EF90 + cmp r6, #1 + beq _021EC214 +_021EC212: + b _021EC3A0 +_021EC214: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC21C: + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201F010 + add r1, r0, #0 + mov r0, #0x1e + str r0, [sp] + mov r0, #0x23 + mov r2, #0xfa + lsl r0, r0, #4 + lsl r2, r2, #0xc + add r0, r4, r0 + sub r2, r1, r2 + mov r3, #0 + bl MOD05_021E3644 + mov r0, #0x1e + mov r1, #0 + mov r2, #6 + str r0, [sp] + add r0, r4, #0 + lsl r2, r2, #0x10 + add r3, r1, #0 + bl MOD05_021E3644 + mov r0, #0x1e + str r0, [sp] + add r0, r4, #0 + mov r1, #0 + mov r2, #6 + add r0, #0x18 + lsl r2, r2, #0x10 + add r3, r1, #0 + bl MOD05_021E3644 + mov r0, #0x1e + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0 + str r0, [sp, #8] + ldr r3, _021EC3B4 ; =0x00007FFF + mov r0, #3 + add r2, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC284: + mov r0, #0x23 + lsl r0, r0, #4 + add r0, r4, r0 + bl MOD05_021E36A4 + add r0, r4, #0 + bl MOD05_021E36A4 + add r0, r4, #0 + add r0, #0x18 + bl MOD05_021E36A4 + mov r1, #0x23 + lsl r1, r1, #4 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r1, [r4, r1] + bl FUN_0201EFE0 + mov r1, #0x2e + ldr r2, [r4] + lsl r1, r1, #0xc + sub r1, r1, r2 + mov r2, #0x72 + ldr r3, [r4, #0x18] + lsl r2, r2, #0xc + add r2, r3, r2 + add r0, sp, #0x40 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r1, #0xd + ldr r2, [r4] + lsl r1, r1, #0x10 + add r1, r2, r1 + mov r2, #0x11 + ldr r3, [r4, #0x18] + lsl r2, r2, #0xe + sub r2, r2, r3 + add r0, sp, #0x40 + mov r3, #0 + bl MOD05_021E3FF8 + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + mov r0, #9 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #1 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x40] + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0x40 + bl FUN_02020044 + bl FUN_0200E308 + cmp r0, #0 + beq _021EC3A0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021EC3A0 +_021EC342: + ldr r1, _021EC3B4 ; =0x00007FFF + mov r0, #1 + bl FUN_0200E3A0 + ldr r1, [r5, #0x14] + cmp r1, #0 + beq _021EC354 + mov r0, #1 + str r0, [r1] +_021EC354: + mov r7, #0 + add r6, r4, #0 +_021EC358: + mov r0, #0x87 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0201FFC8 + add r7, r7, #1 + add r6, r6, #4 + cmp r7, #4 + blt _021EC358 + mov r0, #6 + lsl r0, r0, #6 + add r6, r4, r0 + add r0, r4, #0 + str r0, [sp, #0x28] + add r0, #0x44 + mov r7, #0 + str r0, [sp, #0x28] +_021EC37A: + ldr r0, [sp, #0x28] + add r1, r6, #0 + bl MOD05_021E3F3C + add r7, r7, #1 + add r6, #0x34 + cmp r7, #3 + blt _021EC37A + add r4, #0x44 + add r0, r4, #0 + bl MOD05_021E3E44 + ldr r1, [r5, #0xc] + mov r0, #4 + bl FUN_02016A8C + add sp, #0x4c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021EC3A0: + ldr r0, [r5] + cmp r0, #0x13 + beq _021EC3AC + ldr r0, [r4, #0x44] + bl FUN_0201FDEC +_021EC3AC: + mov r0, #0 + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_021EC3B4: .word 0x00007FFF + + thumb_func_start MOD05_021EC3B8 +MOD05_021EC3B8: ; 0x021EC3B8 + push {r4, lr} + ldr r2, _021EC3D4 ; =0x021F7910 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC3D0 + add r0, r4, #0 + bl FUN_0200621C +_021EC3D0: + pop {r4, pc} + nop +_021EC3D4: .word 0x021F7910 + + thumb_func_start MOD05_021EC3D8 +MOD05_021EC3D8: ; 0x021EC3D8 + push {r4, lr} + ldr r2, _021EC3F4 ; =0x021F7918 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC3F0 + add r0, r4, #0 + bl FUN_0200621C +_021EC3F0: + pop {r4, pc} + nop +_021EC3F4: .word 0x021F7918 + + thumb_func_start MOD05_021EC3F8 +MOD05_021EC3F8: ; 0x021EC3F8 + push {r4, lr} + ldr r2, _021EC414 ; =0x021F7920 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC410 + add r0, r4, #0 + bl FUN_0200621C +_021EC410: + pop {r4, pc} + nop +_021EC414: .word 0x021F7920 + + thumb_func_start MOD05_021EC418 +MOD05_021EC418: ; 0x021EC418 + push {r4, lr} + ldr r2, _021EC434 ; =0x021F7928 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC430 + add r0, r4, #0 + bl FUN_0200621C +_021EC430: + pop {r4, pc} + nop +_021EC434: .word 0x021F7928 + + thumb_func_start MOD05_021EC438 +MOD05_021EC438: ; 0x021EC438 + push {r4, lr} + ldr r2, _021EC454 ; =0x021F7930 + add r4, r0, #0 + add r0, r1, #0 + mov r1, #4 + bl MOD05_021EBCD8 + cmp r0, #1 + bne _021EC450 + add r0, r4, #0 + bl FUN_0200621C +_021EC450: + pop {r4, pc} + nop +_021EC454: .word 0x021F7930 + + thumb_func_start MOD05_021EC458 +MOD05_021EC458: ; 0x021EC458 + push {r3, lr} + bl FUN_02023C74 + bl FUN_02023C7C + pop {r3, pc} + + thumb_func_start MOD05_021EC464 +MOD05_021EC464: ; 0x021EC464 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r6, r0, #0 + add r5, r4, #0 + mov r7, #5 +_021EC46E: + add r0, r6, #0 + add r1, r5, #0 + bl FUN_02023C74 + bl FUN_02023C7C + add r1, r7, #0 + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021EC48C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_021EC48C: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #2 + blo _021EC46E + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC49C +MOD05_021EC49C: ; 0x021EC49C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _021EC4D8 ; =0x021FD680 + mov r4, #0 + str r5, [r0] + mov r6, #5 + add r7, r4, #0 +_021EC4AA: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02023C74 + bl FUN_02023C7C + add r1, r6, #0 + add r2, r7, #0 + bl FUN_020672BC + cmp r0, #0 + bne _021EC4C6 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021EC4C6: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #2 + blo _021EC4AA + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EC4D8: .word 0x021FD680 + + thumb_func_start MOD05_021EC4DC +MOD05_021EC4DC: ; 0x021EC4DC + push {r3, lr} + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA98 + pop {r3, pc} + + thumb_func_start MOD05_021EC4F0 +MOD05_021EC4F0: ; 0x021EC4F0 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r2, #0 + add r6, r0, #0 + str r1, [sp] + add r7, r3, #0 + bl FUN_0206B9B0 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02023C80 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02023C7C + str r0, [sp, #4] + add r0, r7, #0 + bl FUN_020238F4 + bl FUN_0202398C + add r0, r4, #0 + mov r1, #0x74 + add r2, sp, #0xc + bl FUN_020671BC + add r0, r4, #0 + bl FUN_020690E4 + bl MOD05_021EC4DC + cmp r0, #0 + beq _021EC544 + ldr r0, [sp, #8] + bl FUN_02023C8C + add r2, r0, #0 + add r0, r4, #0 + mov r1, #0xa9 + bl FUN_020671BC +_021EC544: + ldr r1, [sp, #4] + add r0, r4, #0 + bl FUN_02069BB4 + add r0, r5, #0 + mov r1, #0 + bl FUN_02023CA0 + ldr r1, [sp] + add r0, r6, #0 + bl FUN_0206B938 + ldr r1, _021EC578 ; =0x000001B9 + add r0, r6, #0 + bl FUN_0206BAE4 + cmp r0, #0 + bne _021EC572 + add r0, r7, #0 + bl FUN_02029EF8 + bl FUN_02029F08 +_021EC572: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_021EC578: .word 0x000001B9 + + thumb_func_start MOD05_021EC57C +MOD05_021EC57C: ; 0x021EC57C + push {r3, r4, r5, r6, r7, lr} + add r7, r3, #0 + add r5, r0, #0 + add r0, r7, #0 + add r6, r1, #0 + add r4, r2, #0 + bl FUN_02029FC8 + mov r1, #0x28 + bl FUN_0202A0E8 + add r0, r4, #0 + bl MOD05_021EC49C + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02023C74 + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + add r3, r7, #0 + bl MOD05_021EC4F0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC5B0 +MOD05_021EC5B0: ; 0x021EC5B0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_02023C74 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl FUN_02023C74 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02023C7C + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02023C7C + add r7, r0, #0 + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _021EC600 + add r0, r7, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021EC600 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02023CF0 + add r0, r4, #0 + bl FUN_02023D3C +_021EC600: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC604 +MOD05_021EC604: ; 0x021EC604 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + str r0, [sp, #8] + add r4, sp, #8 + add r6, sp, #4 + add r7, sp, #4 +_021EC616: + add r0, r5, #0 + bl FUN_020690E8 + cmp r0, #0 + beq _021EC658 + mov r0, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02069818 + cmp r0, #0 + beq _021EC64E +_021EC632: + ldr r1, _021EC664 ; =0x0000FFFF + cmp r0, r1 + bne _021EC640 + ldrh r1, [r7] + add r0, r5, #0 + bl FUN_02069708 +_021EC640: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02069818 + cmp r0, #0 + bne _021EC632 +_021EC64E: + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] + cmp r0, #0x64 + blt _021EC616 +_021EC658: + add r0, r5, #0 + bl FUN_02066ED8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021EC664: .word 0x0000FFFF + + thumb_func_start MOD05_021EC668 +MOD05_021EC668: ; 0x021EC668 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + add r6, r1, #0 + mov r0, #4 + add r7, r2, #0 + bl FUN_020669C0 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_02023C7C + add r5, r0, #0 + add r0, r6, #0 + bl FUN_02023C80 + str r0, [sp, #4] + add r0, r7, #0 + mov r1, #0 + add r2, r5, #0 + bl FUN_0200ACF8 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02069A64 + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0x64 + beq _021EC6E0 + add r0, r4, #0 + mov r1, #8 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #8] + add r0, r6, #0 + bl FUN_02023C84 + ldr r1, [sp, #8] + add r2, sp, #8 + add r0, r1, r0 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #8 + bl FUN_02067830 + add r0, r4, #0 + bl MOD05_021EC604 +_021EC6E0: + add r0, r5, #0 + bl MOD05_021EC4DC + cmp r0, #0 + beq _021EC6FA + ldr r0, [sp, #4] + bl FUN_02023C8C + add r2, r0, #0 + add r0, r4, #0 + mov r1, #0xa9 + bl FUN_02067830 +_021EC6FA: + ldr r0, [sp] + add r1, r4, #0 + bl FUN_0206B900 + add r0, r5, #0 + bl FUN_020669A0 + add r0, r6, #0 + mov r1, #0 + bl FUN_02023CA0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r7, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EC71C +MOD05_021EC71C: ; 0x021EC71C + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + add r0, r6, #0 + add r1, r3, #0 + bl FUN_02023C74 + add r1, r0, #0 + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021EC668 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r6, #0 + bl MOD05_021EC5B0 + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EC744 +MOD05_021EC744: ; 0x021EC744 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #4 + add r5, r1, #0 + bl FUN_020669C0 + add r7, r0, #0 + bl FUN_020690E4 + add r4, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02069BA0 + add r0, r4, #0 + mov r1, #8 + mov r2, #0 + bl FUN_020672BC + str r0, [sp] + add r0, r0, r5 + str r0, [sp] + add r0, r4, #0 + mov r1, #8 + add r2, sp, #0 + bl FUN_02067960 + add r0, r4, #0 + bl FUN_020687C8 + add r4, r0, #0 + add r0, r7, #0 + bl FUN_02016A18 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EC78C +MOD05_021EC78C: ; 0x021EC78C + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_02023C7C + add r6, r0, #0 + bl FUN_020687C8 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0 + bl FUN_02023C84 + add r1, r0, #0 + add r0, r6, #0 + bl MOD05_021EC744 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r0, r0, r4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EC7B4 +MOD05_021EC7B4: ; 0x021EC7B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02023C7C + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02023C84 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021EC744 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC7D4 +MOD05_021EC7D4: ; 0x021EC7D4 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + add r5, r1, #0 + bl FUN_02023C7C + add r6, r0, #0 + add r0, r4, #0 + bl MOD05_021EC78C + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r1, #1 + add r0, r5, #0 + add r2, r4, #0 + mov r3, #3 + str r1, [sp, #4] + bl FUN_0200AD38 + add r0, r5, #0 + mov r1, #0 + add r2, r6, #0 + bl FUN_0200ACF8 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add sp, #8 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC810 +MOD05_021EC810: ; 0x021EC810 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + add r5, r1, #0 + bl FUN_02023C7C + add r6, r0, #0 + add r0, r4, #0 + bl MOD05_021EC78C + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0 + mov r1, #0 + add r2, r6, #0 + bl FUN_0200ACF8 + add r1, r4, #1 + mov r0, #0x64 + mul r0, r1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + mov r0, #0 + str r0, [sp] + mov r1, #1 + add r0, r5, #0 + add r2, r4, #0 + mov r3, #5 + str r1, [sp, #4] + bl FUN_0200AD38 + add r0, r4, #0 + add sp, #8 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EC854 +MOD05_021EC854: ; 0x021EC854 + push {r4, lr} + add r4, r2, #0 + bl FUN_02023C74 + add r1, r4, #0 + bl MOD05_021EC810 + pop {r4, pc} + + thumb_func_start MOD05_021EC864 +MOD05_021EC864: ; 0x021EC864 + push {r3, r4, r5, lr} + add r5, r2, #0 + bl FUN_02023C74 + add r4, r0, #0 + bl FUN_02023C7C + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021EC888 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021EC7D4 + pop {r3, r4, r5, pc} +_021EC888: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021EC88C +MOD05_021EC88C: ; 0x021EC88C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + bl MOD05_021EC458 + str r0, [r4] + add r0, r5, #0 + mov r1, #1 + bl MOD05_021EC458 + str r0, [r4, #4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC8A8 +MOD05_021EC8A8: ; 0x021EC8A8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r1, #0 + mvn r1, r1 + str r1, [sp] + add r1, sp, #4 + bl MOD05_021EC88C + mov r4, #0 + add r5, sp, #4 +_021EC8BC: + ldr r0, [r5] + bl FUN_020689E8 + cmp r0, #1 + bne _021EC8C8 + str r4, [sp] +_021EC8C8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _021EC8BC + mov r7, #0 + add r6, r7, #0 + add r4, sp, #4 + add r5, sp, #0xc +_021EC8D8: + ldr r0, [r4] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + str r0, [r5] + cmp r0, #0x84 + bne _021EC8EC + add r7, r7, #1 + str r6, [sp] +_021EC8EC: + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #2 + blt _021EC8D8 + cmp r7, #2 + bne _021EC90E + bl FUN_0201B9EC + ldr r1, _021EC940 ; =0x00007FFF + cmp r0, r1 + blo _021EC90A + mov r0, #0 + str r0, [sp] + b _021EC90E +_021EC90A: + mov r0, #1 + str r0, [sp] +_021EC90E: + ldr r0, [sp] + mov r2, #0 + lsl r1, r0, #2 + add r0, sp, #4 + ldr r0, [r0, r1] + mov r1, #6 + bl FUN_020672BC + cmp r0, #0xe5 + bne _021EC938 + bl FUN_0201B9EC + ldr r1, _021EC940 ; =0x00007FFF + cmp r0, r1 + blo _021EC932 + mov r0, #0 + mvn r0, r0 + str r0, [sp] +_021EC932: + ldr r0, [sp] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EC938: + mov r0, #0 + mvn r0, r0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021EC940: .word 0x00007FFF + + thumb_func_start MOD05_021EC944 +MOD05_021EC944: ; 0x021EC944 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r5, #0 + bl MOD05_021EC8A8 + add r1, r0, #0 + bpl _021EC960 + bl FUN_0201BA60 + add r1, r0, #0 + ldr r0, [sp] + bl FUN_02023CB8 + pop {r3, r4, r5, r6, r7, pc} +_021EC960: + ldr r0, [sp] + bl MOD05_021EC458 + add r1, r5, #0 + add r2, r1, #0 + bl FUN_020672BC + bl FUN_02068884 + mov r7, #0x96 + add r6, r0, #0 + lsl r7, r7, #4 +_021EC978: + bl FUN_0201BA60 + add r4, r0, #0 + bl FUN_02068884 + cmp r6, r0 + bne _021EC98A + cmp r4, #0 + bne _021EC990 +_021EC98A: + add r5, r5, #1 + cmp r5, r7 + ble _021EC978 +_021EC990: + ldr r0, [sp] + add r1, r4, #0 + bl FUN_02023CB8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EC99C +MOD05_021EC99C: ; 0x021EC99C + push {r3, r4} + sub sp, #8 + mov r2, #0xff + strb r2, [r0, r1] + mov r2, #0 + add r3, sp, #0 +_021EC9A8: + ldrb r1, [r0, r2] + add r2, r2, #1 + strb r1, [r3] + add r3, r3, #1 + cmp r2, #6 + blt _021EC9A8 + mov r2, #0 + add r4, r2, #0 + add r3, sp, #0 +_021EC9BA: + ldrb r1, [r3] + cmp r1, #0xff + beq _021EC9C4 + strb r1, [r0, r2] + add r2, r2, #1 +_021EC9C4: + add r4, r4, #1 + add r3, r3, #1 + cmp r4, #6 + blt _021EC9BA + add sp, #8 + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EC9D4 +MOD05_021EC9D4: ; 0x021EC9D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + str r1, [sp] + mov r0, #0 + add r1, sp, #8 +_021EC9E0: + strb r0, [r1, r0] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #6 + blo _021EC9E0 + add r7, sp, #0xc + mov r5, #0 + add r6, sp, #8 + add r7, #2 +_021EC9F4: + bl FUN_0201B9EC + mov r1, #6 + sub r1, r1, r5 + bl _s32_div_f + ldrb r0, [r6, r1] + add r1, r5, #0 + strb r0, [r7, r5] + add r0, r6, #0 + bl MOD05_021EC99C + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + blo _021EC9F4 + add r6, sp, #4 + mov r5, #0 + add r6, #1 + mov r7, #0x1f +_021ECA1E: + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r0, r0, #0x1f + sub r0, r0, r1 + ror r0, r7 + add r0, r1, r0 + strb r0, [r6, r5] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + blo _021ECA1E + mov r5, #0 + add r7, sp, #4 + add r6, sp, #4 +_021ECA3E: + add r1, sp, #4 + add r1, #1 + ldrb r1, [r1, r5] + ldr r0, [sp] + bl MOD05_021EC458 + add r1, sp, #0xc + add r1, #2 + ldrb r1, [r1, r5] + cmp r1, #5 + bhi _021ECAEE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021ECA60: ; jump table + .short _021ECA6C - _021ECA60 - 2 ; case 0 + .short _021ECA82 - _021ECA60 - 2 ; case 1 + .short _021ECA98 - _021ECA60 - 2 ; case 2 + .short _021ECAAE - _021ECA60 - 2 ; case 3 + .short _021ECAC4 - _021ECA60 - 2 ; case 4 + .short _021ECADA - _021ECA60 - 2 ; case 5 +_021ECA6C: + mov r1, #0x46 + mov r2, #0 + bl FUN_020672BC + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x46 + add r2, r7, #0 + bl FUN_02067830 + b _021ECAEE +_021ECA82: + mov r1, #0x47 + mov r2, #0 + bl FUN_020672BC + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x47 + add r2, r7, #0 + bl FUN_02067830 + b _021ECAEE +_021ECA98: + mov r1, #0x48 + mov r2, #0 + bl FUN_020672BC + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x48 + add r2, r7, #0 + bl FUN_02067830 + b _021ECAEE +_021ECAAE: + mov r1, #0x49 + mov r2, #0 + bl FUN_020672BC + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x49 + add r2, r7, #0 + bl FUN_02067830 + b _021ECAEE +_021ECAC4: + mov r1, #0x4a + mov r2, #0 + bl FUN_020672BC + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x4a + add r2, r7, #0 + bl FUN_02067830 + b _021ECAEE +_021ECADA: + mov r1, #0x4b + mov r2, #0 + bl FUN_020672BC + strb r0, [r6] + add r0, r4, #0 + mov r1, #0x4b + add r2, r7, #0 + bl FUN_02067830 +_021ECAEE: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + blo _021ECA3E + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021ECAFC +MOD05_021ECAFC: ; 0x021ECAFC + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r1, #0 + mov r1, #5 + add r2, r4, #0 + add r6, r4, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + ldr r0, _021ECB60 ; =0x00004E20 + ldr r3, _021ECB64 ; =0x00000775 + add r2, r2, r0 + ldr r0, _021ECB68 ; =0x021F7B48 + add r1, r4, #0 +_021ECB1A: + lsl r7, r1, #1 + ldrh r7, [r0, r7] + cmp r2, r7 + bne _021ECB2A + add r0, r1, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + b _021ECB34 +_021ECB2A: + add r1, r1, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + cmp r1, r3 + blo _021ECB1A +_021ECB34: + ldr r2, _021ECB68 ; =0x021F7B48 + lsl r0, r6, #1 + ldr r3, _021ECB60 ; =0x00004E20 + mov r1, #0 + add r0, r2, r0 +_021ECB3E: + lsl r6, r1, #1 + ldrh r2, [r0, r6] + cmp r2, r3 + bhi _021ECB58 + add r1, r1, #1 + strh r2, [r5, r6] + add r2, r4, #1 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsr r1, r1, #0x10 + lsr r4, r2, #0x10 + cmp r1, #0x10 + blo _021ECB3E +_021ECB58: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_021ECB60: .word 0x00004E20 +_021ECB64: .word 0x00000775 +_021ECB68: .word 0x021F7B48 + + thumb_func_start MOD05_021ECB6C +MOD05_021ECB6C: ; 0x021ECB6C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r7, r0, #0 + str r1, [sp] + mov r0, #4 + mov r1, #0xb4 + str r2, [sp, #4] + bl FUN_02016998 + add r4, r0, #0 + mov r0, #0 + add r1, r4, #0 + mov r2, #0xb4 + str r0, [sp, #0x1c] + bl MIi_CpuClearFast + add r0, r7, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x18] + add r0, r7, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + add r2, r4, #0 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0xc] + add r2, #0x30 + bl FUN_02069BFC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + mov r5, #0 +_021ECBC0: + lsl r0, r5, #2 + add r6, r5, #0 + str r0, [sp, #0x20] + add r0, r4, r0 + add r6, #0x36 + str r0, [sp, #0x10] + ldr r0, [sp] + add r1, r6, #0 + mov r2, #0 + bl FUN_020672BC + ldr r1, [sp, #0x20] + mov r2, #0 + str r0, [r4, r1] + ldr r0, [sp, #4] + add r1, r6, #0 + bl FUN_020672BC + ldr r1, [sp, #0x10] + str r0, [r1, #0x20] + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #4 + blo _021ECBC0 + add r1, r4, #0 + add r0, r7, #0 + add r1, #0x94 + bl MOD05_021ECAFC + add r5, r0, #0 + mov r6, #0 +_021ECC00: + lsl r0, r6, #2 + ldr r1, [r4, r0] + str r0, [sp, #0x24] + cmp r1, #0 + beq _021ECC50 + mov r0, #0 + cmp r5, #0 + bls _021ECC46 +_021ECC10: + lsl r2, r0, #1 + add r2, r4, r2 + add r2, #0x94 + ldrh r2, [r2] + cmp r1, r2 + bne _021ECC3C + lsl r1, r1, #0x10 + add r0, r7, #0 + lsr r1, r1, #0x10 + bl FUN_02069698 + ldr r1, _021ECD60 ; =0x0000FFFF + cmp r0, r1 + bne _021ECC46 + ldr r1, [sp, #0x24] + add r0, r7, #0 + ldr r1, [r4, r1] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02069708 + b _021ECC46 +_021ECC3C: + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, r5 + blo _021ECC10 +_021ECC46: + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #4 + blo _021ECC00 +_021ECC50: + mov r0, #0 + str r0, [sp, #8] +_021ECC54: + ldr r0, [sp, #8] + lsl r6, r0, #2 + ldr r0, [r4, r6] + cmp r0, #0 + beq _021ECCAC + mov r5, #0 +_021ECC60: + mov r0, #0x52 + lsl r0, r0, #2 + add r0, r5, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206EA30 + ldr r1, [r4, r6] + cmp r1, r0 + bne _021ECCA2 + lsl r2, r5, #0x18 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0xc] + lsr r2, r2, #0x18 + bl FUN_0206A16C + cmp r0, #0 + beq _021ECCA2 + ldr r1, [r4, r6] + add r0, r7, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02069698 + ldr r1, _021ECD60 ; =0x0000FFFF + cmp r0, r1 + bne _021ECCA2 + ldr r1, [r4, r6] + add r0, r7, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02069708 +_021ECCA2: + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _021ECC60 +_021ECCAC: + ldr r0, [sp, #8] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + cmp r0, #4 + blo _021ECC54 + mov r6, #0 +_021ECCBC: + lsl r1, r6, #2 + ldr r0, [r4, r1] + cmp r0, #0 + beq _021ECCFC + mov r3, #0 +_021ECCC6: + lsl r2, r3, #2 + add r2, r4, r2 + ldr r0, [r4, r1] + ldr r2, [r2, #0x20] + cmp r0, r2 + bne _021ECCE8 + cmp r0, #0 + beq _021ECCE8 + ldr r2, [sp, #0x1c] + add r5, r2, #0 + add r5, r5, #1 + lsl r5, r5, #0x10 + lsr r5, r5, #0x10 + lsl r2, r2, #2 + str r5, [sp, #0x1c] + add r2, r4, r2 + str r0, [r2, #0x10] +_021ECCE8: + add r0, r3, #1 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + cmp r3, #4 + blo _021ECCC6 + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #4 + blo _021ECCBC +_021ECCFC: + mov r6, #0 +_021ECCFE: + lsl r0, r6, #2 + add r5, r4, r0 + ldr r3, [r5, #0x10] + cmp r3, #0 + beq _021ECD54 + ldr r0, [sp, #0x14] + mov r2, #0 + cmp r0, #0 + bls _021ECD4A +_021ECD10: + lsl r0, r2, #1 + add r0, r4, r0 + ldrh r1, [r0, #0x30] + cmp r1, #0 + beq _021ECD3E + ldr r0, [r5, #0x10] + cmp r0, r1 + bne _021ECD3E + lsl r1, r3, #0x10 + add r0, r7, #0 + lsr r1, r1, #0x10 + bl FUN_02069698 + ldr r1, _021ECD60 ; =0x0000FFFF + cmp r0, r1 + bne _021ECD4A + ldr r1, [r5, #0x10] + add r0, r7, #0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02069708 + b _021ECD4A +_021ECD3E: + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + ldr r0, [sp, #0x14] + cmp r2, r0 + blo _021ECD10 +_021ECD4A: + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #4 + blo _021ECCFE +_021ECD54: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_021ECD60: .word 0x0000FFFF + + thumb_func_start MOD05_021ECD64 +MOD05_021ECD64: ; 0x021ECD64 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_02023CB8 + add r0, r4, #0 + mov r1, #0 + bl FUN_02023CC0 + pop {r4, pc} + + thumb_func_start MOD05_021ECD78 +MOD05_021ECD78: ; 0x021ECD78 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r0, r1, #0 + add r1, sp, #0 + bl MOD05_021EC88C + ldr r2, _021ECDE8 ; =0x021F7B12 + mov r3, #0 + mov r1, #6 +_021ECD8C: + add r0, r3, #0 + mul r0, r1 + ldrh r0, [r2, r0] + cmp r5, r0 + bne _021ECD9A + add r6, r3, #0 + b _021ECDA4 +_021ECD9A: + add r0, r3, #1 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + cmp r3, #9 + blo _021ECD8C +_021ECDA4: + cmp r3, #9 + bne _021ECDAE + add sp, #8 + add r0, r5, #0 + pop {r4, r5, r6, pc} +_021ECDAE: + ldr r0, [sp] + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [sp, #4] + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + mov r0, #6 + add r1, r6, #0 + mul r1, r0 + ldr r0, _021ECDEC ; =0x021F7B14 + ldrh r0, [r0, r1] + cmp r4, r0 + beq _021ECDE0 + cmp r2, r0 + beq _021ECDE0 + ldr r0, _021ECDF0 ; =0x021F7B16 + ldrh r5, [r0, r1] +_021ECDE0: + add r0, r5, #0 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_021ECDE8: .word 0x021F7B12 +_021ECDEC: .word 0x021F7B14 +_021ECDF0: .word 0x021F7B16 + + thumb_func_start MOD05_021ECDF4 +MOD05_021ECDF4: ; 0x021ECDF4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + add r0, r1, #0 + add r1, sp, #0 + bl MOD05_021EC88C + ldr r0, [sp] + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + add r5, r0, #0 + ldr r0, [sp, #4] + mov r1, #6 + mov r2, #0 + bl FUN_020672BC + cmp r5, #0xec + beq _021ECE20 + cmp r0, #0xec + bne _021ECE3A +_021ECE20: + mov r1, #0x56 + add r0, r4, #0 + lsl r1, r1, #2 + bl FUN_02069698 + ldr r1, _021ECE40 ; =0x0000FFFF + cmp r0, r1 + bne _021ECE3A + mov r1, #0x56 + add r0, r4, #0 + lsl r1, r1, #2 + bl FUN_02069708 +_021ECE3A: + add sp, #8 + pop {r3, r4, r5, pc} + nop +_021ECE40: .word 0x0000FFFF + + thumb_func_start MOD05_021ECE44 +MOD05_021ECE44: ; 0x021ECE44 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r1, sp, #4 + str r0, [sp] + bl MOD05_021EC88C + mov r4, #0 + add r7, sp, #4 +_021ECE56: + lsl r6, r4, #2 + ldr r0, [r7, r6] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + lsl r1, r4, #1 + add r2, sp, #0xc + strh r0, [r2, r1] + add r0, r2, #0 + ldrh r0, [r0, r1] + cmp r0, #0x84 + bne _021ECE7A + mov r0, #1 + eor r0, r4 + strb r0, [r5] + strb r4, [r5, #1] + b _021ECE8C +_021ECE7A: + ldr r0, [r7, r6] + bl FUN_020689E8 + cmp r0, #1 + bne _021ECE8C + mov r0, #1 + strb r4, [r5] + eor r0, r4 + strb r0, [r5, #1] +_021ECE8C: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _021ECE56 + ldrb r0, [r5] + lsl r1, r0, #1 + add r0, sp, #0xc + ldrh r0, [r0, r1] + bl FUN_02069558 + add r4, r0, #0 + cmp r4, #0x1d + bne _021ECEBC + ldr r0, [sp] + bl FUN_02023C90 + mov r1, #2 + lsl r1, r1, #0xe + tst r0, r1 + beq _021ECEBA + mov r4, #0x20 + b _021ECEBC +_021ECEBA: + mov r4, #0x1d +_021ECEBC: + ldr r0, _021ECF08 ; =0x0000013A + cmp r4, r0 + bne _021ECED6 + ldr r0, [sp] + bl FUN_02023C90 + mov r1, #2 + lsl r1, r1, #0xe + tst r0, r1 + beq _021ECED4 + ldr r4, _021ECF0C ; =0x00000139 + b _021ECED6 +_021ECED4: + ldr r4, _021ECF08 ; =0x0000013A +_021ECED6: + ldr r0, _021ECF10 ; =0x000001EA + cmp r4, r0 + bne _021ECEDE + sub r4, r0, #1 +_021ECEDE: + ldrb r0, [r5, #1] + lsl r1, r0, #1 + add r0, sp, #0xc + ldrh r0, [r0, r1] + cmp r0, #0x84 + bne _021ECF02 + ldrb r0, [r5] + lsl r1, r0, #2 + add r0, sp, #4 + ldr r0, [r0, r1] + bl FUN_020689E8 + cmp r0, #1 + beq _021ECF02 + ldrb r1, [r5, #1] + ldrb r0, [r5] + strb r0, [r5, #1] + strb r1, [r5] +_021ECF02: + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021ECF08: .word 0x0000013A +_021ECF0C: .word 0x00000139 +_021ECF10: .word 0x000001EA + + thumb_func_start MOD05_021ECF14 +MOD05_021ECF14: ; 0x021ECF14 + push {r0, r1, r2, r3} + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #0x13 + add r4, r3, #0 + bl FUN_02068678 + add r1, sp, #0x10 + strb r0, [r1] + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + mov r2, #1 + mov r3, #0x20 + bl FUN_02066ACC + mov r1, #0 + add r0, sp, #0x10 + strb r1, [r0, #2] + mov r1, #4 + strh r1, [r0, #4] + add r0, r5, #0 + mov r1, #0x9a + add r2, sp, #0x14 + bl FUN_02067830 + add r0, r5, #0 + mov r1, #9 + add r2, sp, #0x10 + bl FUN_02067830 + add r2, sp, #0x10 + add r0, r5, #0 + mov r1, #0x9b + add r2, #2 + bl FUN_02067830 + add r0, sp, #0x30 + ldrb r0, [r0, #8] + cmp r0, #0 + beq _021ECF7E + add r0, r5, #0 + mov r1, #0x97 + add r2, sp, #0x38 + bl FUN_02067830 +_021ECF7E: + add r2, sp, #0x10 + mov r1, #1 + add r0, sp, #0x10 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x4c + add r2, #1 + bl FUN_02067830 + ldr r0, _021ED008 ; =0x000001EE + mov r1, #4 + bl FUN_0200AA50 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x76 + add r2, r6, #0 + bl FUN_02067830 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x40] + cmp r0, #4 + bne _021ECFEE + add r0, r4, #0 + bl FUN_020239BC + str r0, [sp, #0x1c] + add r0, r4, #0 + bl FUN_020239CC + str r0, [sp, #0x18] + add r0, r4, #0 + mov r1, #0x20 + bl FUN_020239A0 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x90 + add r2, r6, #0 + bl FUN_02067830 + add r0, r5, #0 + mov r1, #7 + add r2, sp, #0x1c + bl FUN_02067830 + add r0, r5, #0 + mov r1, #0x9c + add r2, sp, #0x18 + bl FUN_02067830 + add r0, r6, #0 + bl FUN_02021A20 +_021ECFEE: + mov r0, #0 + str r0, [sp] + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0208089C + add sp, #0x20 + pop {r4, r5, r6} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4, 0 +_021ED008: .word 0x000001EE + + thumb_func_start MOD05_021ED00C +MOD05_021ED00C: ; 0x021ED00C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + str r1, [sp, #0x10] + add r7, r0, #0 + ldr r0, [sp, #0x10] + mov r1, #0x13 + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02068678 + add r1, sp, #0x14 + strb r0, [r1] + add r0, r5, #0 + bl FUN_02023C90 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02023CC8 + cmp r0, #0 + beq _021ED05E + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02068AAC + cmp r0, #0 + bne _021ED05E + mov r5, #0 +_021ED044: + add r0, r4, #0 + bl FUN_0201BA10 + add r4, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02068AAC + cmp r0, #0 + bne _021ED05E + add r5, r5, #1 + cmp r5, #4 + blt _021ED044 +_021ED05E: + mov r2, #1 + str r2, [sp] + str r4, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + add r0, r7, #0 + mov r3, #0x20 + bl FUN_02066ACC + add r2, sp, #0x14 + mov r1, #0 + add r0, sp, #0x14 + strb r1, [r0, #1] + mov r1, #4 + strh r1, [r0, #2] + add r0, r7, #0 + mov r1, #0x9a + add r2, #2 + bl FUN_02067830 + add r0, r7, #0 + mov r1, #9 + add r2, sp, #0x14 + bl FUN_02067830 + add r2, sp, #0x14 + add r0, r7, #0 + mov r1, #0x9b + add r2, #1 + bl FUN_02067830 + add r0, r7, #0 + mov r1, #0x70 + add r2, sp, #0x30 + bl FUN_02067830 + ldr r0, _021ED0C8 ; =0x000001EE + mov r1, #4 + bl FUN_0200AA50 + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0x76 + add r2, r4, #0 + bl FUN_02067830 + add r0, r4, #0 + bl FUN_02021A20 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021ED0C8: .word 0x000001EE + + thumb_func_start MOD05_021ED0CC +MOD05_021ED0CC: ; 0x021ED0CC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #4 + str r1, [sp, #4] + add r7, r2, #0 + bl FUN_020669C0 + add r1, sp, #0x10 + add r4, r0, #0 + add r0, r5, #0 + add r1, #1 + bl MOD05_021ECE44 + add r1, r5, #0 + bl MOD05_021ECD78 + add r6, r0, #0 + add r0, r7, #0 + bl FUN_020239BC + add r1, sp, #0x10 + str r0, [sp, #8] + ldrb r1, [r1, #1] + add r0, r5, #0 + bl MOD05_021EC458 + mov r1, #0x70 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r3, [sp, #8] + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD05_021ED00C + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021EC9D4 + add r1, sp, #0x10 + ldrb r1, [r1, #2] + add r0, r5, #0 + bl MOD05_021EC458 + add r1, sp, #0x10 + str r0, [sp, #0xc] + ldrb r1, [r1, #1] + add r0, r5, #0 + bl MOD05_021EC458 + add r2, r0, #0 + ldr r1, [sp, #0xc] + add r0, r4, #0 + bl MOD05_021ECB6C + mov r0, #1 + mov r1, #0 + bl FUN_02015CF8 + add r3, r0, #0 + mov r0, #4 + str r0, [sp] + add r0, r4, #0 + add r1, r7, #0 + mov r2, #3 + bl FUN_0208089C + cmp r6, #0xac + bne _021ED168 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021ECDF4 +_021ED168: + mov r1, #1 + add r0, sp, #0x10 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0x4c + add r2, sp, #0x10 + bl FUN_02067830 + ldr r0, [sp, #4] + add r1, r4, #0 + bl FUN_0206B900 + add r0, r5, #0 + bl MOD05_021ECD64 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021ED190 +MOD05_021ED190: ; 0x021ED190 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_0206B9AC + add r6, r0, #0 + mov r4, #0 + cmp r6, #0 + ble _021ED1E0 + mov r7, #0xac +_021ED1A2: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + add r1, r7, #0 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _021ED1D6 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x28 + beq _021ED1D2 + cmp r0, #0x31 + bne _021ED1D6 +_021ED1D2: + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021ED1D6: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, r6 + blt _021ED1A2 +_021ED1E0: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021ED1E4 +MOD05_021ED1E4: ; 0x021ED1E4 + push {r4, r5, r6, r7} + mov r4, #0 + add r3, r4, #0 +_021ED1EA: + ldrh r7, [r0] + add r5, r3, #0 + add r6, r1, #0 +_021ED1F0: + ldrh r2, [r6] + cmp r7, r2 + bne _021ED1FC + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_021ED1FC: + add r5, r5, #1 + add r6, r6, #2 + cmp r5, #2 + blt _021ED1F0 + add r4, r4, #1 + add r0, r0, #2 + cmp r4, #2 + blt _021ED1EA + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021ED214 +MOD05_021ED214: ; 0x021ED214 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #4] + add r0, sp, #0x10 + add r4, sp, #0x18 + str r0, [sp] + add r7, sp, #8 + add r6, sp, #0x1c +_021ED228: + ldr r0, [r5] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + strh r0, [r4] + ldr r0, [r5] + mov r1, #7 + mov r2, #0 + bl FUN_020672BC + ldr r1, [sp] + str r0, [r1] + mov r1, #0 + ldr r0, [r5] + add r2, r1, #0 + bl FUN_020672BC + add r1, r0, #0 + ldrh r0, [r4] + bl FUN_02068A20 + stmia r7!, {r0} + ldrh r0, [r4] + mov r1, #0x16 + bl FUN_02068678 + strh r0, [r6] + ldrh r0, [r4] + mov r1, #0x17 + bl FUN_02068678 + strh r0, [r6, #2] + ldr r0, [sp] + add r5, r5, #4 + add r0, r0, #4 + str r0, [sp] + ldr r0, [sp, #4] + add r4, r4, #2 + add r0, r0, #1 + add r6, r6, #4 + str r0, [sp, #4] + cmp r0, #2 + blo _021ED228 + add r0, sp, #8 + ldrh r1, [r0, #0x14] + cmp r1, #0xf + beq _021ED28E + ldrh r0, [r0, #0x18] + cmp r0, #0xf + bne _021ED294 +_021ED28E: + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED294: + cmp r1, #0xd + bne _021ED2A2 + cmp r0, #0xd + bne _021ED2A2 + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED2A2: + cmp r1, #0xd + beq _021ED2AA + cmp r0, #0xd + bne _021ED2BE +_021ED2AA: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + cmp r1, r0 + bne _021ED2B8 + add sp, #0x24 + mov r0, #0x14 + pop {r4, r5, r6, r7, pc} +_021ED2B8: + add sp, #0x24 + mov r0, #0x32 + pop {r4, r5, r6, r7, pc} +_021ED2BE: + ldr r1, [sp, #0xc] + ldr r0, [sp, #8] + cmp r0, r1 + bne _021ED2CC + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED2CC: + cmp r0, #2 + beq _021ED2D4 + cmp r1, #2 + bne _021ED2DA +_021ED2D4: + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED2DA: + add r0, sp, #0x1c + add r1, sp, #0x20 + bl MOD05_021ED1E4 + cmp r0, #0 + bne _021ED2EC + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_021ED2EC: + add r0, sp, #8 + ldrh r1, [r0, #0x10] + ldrh r0, [r0, #0x12] + cmp r1, r0 + bne _021ED30A + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + cmp r1, r0 + beq _021ED304 + add sp, #0x24 + mov r0, #0x46 + pop {r4, r5, r6, r7, pc} +_021ED304: + add sp, #0x24 + mov r0, #0x32 + pop {r4, r5, r6, r7, pc} +_021ED30A: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + cmp r1, r0 + beq _021ED318 + add sp, #0x24 + mov r0, #0x32 + pop {r4, r5, r6, r7, pc} +_021ED318: + mov r0, #0x14 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED320 +MOD05_021ED320: ; 0x021ED320 + push {r3, lr} + sub sp, #8 + add r1, sp, #0 + bl MOD05_021EC88C + add r0, sp, #0 + bl MOD05_021ED214 + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD05_021ED334 +MOD05_021ED334: ; 0x021ED334 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0204B2C0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204B2B4 + mov r1, #0x64 + mul r1, r0 + add r0, r4, #0 + add r5, r5, r1 + bl FUN_0204B33C + cmp r0, #0 + beq _021ED358 + mov r0, #0xff + pop {r3, r4, r5, pc} +_021ED358: + ldr r2, _021ED374 ; =0x021F7AF8 + mov r1, #0 +_021ED35C: + ldrh r0, [r2] + cmp r5, r0 + bne _021ED366 + mov r0, #0xe6 + pop {r3, r4, r5, pc} +_021ED366: + add r1, r1, #1 + add r2, r2, #2 + cmp r1, #0xd + blo _021ED35C + mov r0, #0xff + pop {r3, r4, r5, pc} + nop +_021ED374: .word 0x021F7AF8 + + thumb_func_start MOD05_021ED378 +MOD05_021ED378: ; 0x021ED378 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r1, #0 + add r1, sp, #8 + str r0, [sp] + str r2, [sp, #4] + bl MOD05_021EC88C + mov r6, #0 + add r4, r6, #0 + add r5, sp, #8 +_021ED38E: + ldr r0, [r5] + mov r1, #0xab + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021ED3AC + ldr r0, [sp] + add r1, r4, #0 + bl FUN_02023C74 + mov r1, #1 + bl FUN_02023CA8 + add r6, r6, #1 +_021ED3AC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blo _021ED38E + ldr r0, [sp] + bl FUN_02023C90 + cmp r0, #0 + bne _021ED3F8 + cmp r6, #2 + bne _021ED3F8 + ldr r0, [sp] + mov r1, #1 + bl FUN_02023C74 + bl FUN_02023C84 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xff + bne _021ED3F8 + ldr r0, [sp] + bl MOD05_021ED320 + add r4, r0, #0 + bl FUN_0201B9EC + mov r1, #0x64 + mul r1, r0 + add r0, r1, #0 + ldr r1, _021ED498 ; =0x0000FFFF + bl _u32_div_f + cmp r4, r0 + bls _021ED3F8 + ldr r0, [sp] + bl MOD05_021EC944 +_021ED3F8: + ldr r0, [sp] + bl FUN_02023C98 + add r4, r0, #0 + ldr r0, [sp] + add r1, r4, #1 + bl FUN_02023CC0 + ldr r0, [sp, #4] + bl MOD05_021ED334 + add r1, r4, #1 + cmp r1, r0 + bne _021ED490 + ldr r0, [sp] + mov r1, #0 + bl FUN_02023CC0 + add r0, r7, #0 + bl MOD05_021ED190 + add r6, r0, #0 + add r0, r7, #0 + mov r5, #0 + bl FUN_0206B9AC + cmp r0, #0 + bls _021ED490 +_021ED430: + add r0, r7, #0 + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021ED484 + add r0, r4, #0 + mov r1, #3 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _021ED484 + add r0, r4, #0 + mov r1, #9 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x10] + cmp r0, #0 + beq _021ED47E + cmp r0, r6 + blo _021ED46E + sub r0, r0, r6 + str r0, [sp, #0x10] + b _021ED472 +_021ED46E: + sub r0, r0, #1 + str r0, [sp, #0x10] +_021ED472: + add r0, r4, #0 + mov r1, #9 + add r2, sp, #0x10 + bl FUN_02067830 + b _021ED484 +_021ED47E: + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_021ED484: + add r0, r7, #0 + add r5, r5, #1 + bl FUN_0206B9AC + cmp r5, r0 + blo _021ED430 +_021ED490: + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021ED498: .word 0x0000FFFF + + thumb_func_start MOD05_021ED49C +MOD05_021ED49C: ; 0x021ED49C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_0206B9AC + add r6, r0, #0 + mov r5, #0 + cmp r6, #0 + ble _021ED4DA +_021ED4AC: + add r0, r7, #0 + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0 + add r4, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _021ED4D4 + add r0, r4, #0 + mov r1, #9 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _021ED4D4 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021ED4D4: + add r5, r5, #1 + cmp r5, r6 + blt _021ED4AC +_021ED4DA: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED4E0 +MOD05_021ED4E0: ; 0x021ED4E0 + push {r4, lr} + sub sp, #8 + add r4, r1, #0 + add r1, sp, #0 + bl MOD05_021EC88C + ldr r0, [sp] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021ED50E + ldr r2, [sp] + add r0, r4, #0 + mov r1, #0 + bl FUN_0200ACF8 + ldr r2, [sp] + add r0, r4, #0 + mov r1, #2 + bl FUN_0200AD18 +_021ED50E: + ldr r0, [sp, #4] + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + beq _021ED526 + ldr r2, [sp, #4] + add r0, r4, #0 + mov r1, #1 + bl FUN_0200ACF8 +_021ED526: + add sp, #8 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED52C +MOD05_021ED52C: ; 0x021ED52C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + add r1, sp, #0x18 + ldrb r6, [r1, #0x10] + add r5, r0, #0 + add r7, r2, #0 + add r1, r6, #0 + str r3, [sp, #8] + bl FUN_02023C74 + str r0, [sp, #0xc] + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021EC458 + add r5, r0, #0 + ldr r0, [sp, #0x2c] + add r1, r4, #0 + add r2, r5, #0 + bl FUN_0200ACF8 + ldr r0, [sp, #0xc] + bl FUN_02023C84 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021EC744 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + add r1, r7, #0 + mov r3, #3 + bl FUN_0200AD38 + add r0, r5, #0 + mov r1, #0x6f + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #2 + beq _021ED5B4 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x1d + beq _021ED5A4 + cmp r0, #0x20 + bne _021ED5B4 +_021ED5A4: + add r0, r5, #0 + mov r1, #0x4d + mov r2, #0 + bl FUN_020672BC + cmp r0, #0 + bne _021ED5B4 + mov r4, #2 +_021ED5B4: + ldr r0, [sp, #0x2c] + ldr r1, [sp, #8] + add r2, r4, #0 + bl FUN_0200B3C0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED5C4 +MOD05_021ED5C4: ; 0x021ED5C4 + push {r3, r4, r5, lr} + add r5, r2, #0 + bl FUN_0206B9B0 + add r4, r0, #0 + bl FUN_020690E4 + add r2, r0, #0 + add r0, r5, #0 + mov r1, #0 + bl FUN_0200ACF8 + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021ED5EC +MOD05_021ED5EC: ; 0x021ED5EC + push {r4, lr} + add r4, r0, #0 + bl FUN_02023C90 + cmp r0, #0 + beq _021ED5FC + mov r0, #1 + pop {r4, pc} +_021ED5FC: + add r0, r4, #0 + bl MOD05_021EC464 + cmp r0, #0 + beq _021ED60E + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, pc} +_021ED60E: + mov r0, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED614 +MOD05_021ED614: ; 0x021ED614 + cmp r0, #0x14 + bhi _021ED620 + bhs _021ED632 + cmp r0, #0 + beq _021ED62E + b _021ED63E +_021ED620: + cmp r0, #0x32 + bhi _021ED628 + beq _021ED636 + b _021ED63E +_021ED628: + cmp r0, #0x46 + beq _021ED63A + b _021ED63E +_021ED62E: + mov r0, #3 + bx lr +_021ED632: + mov r0, #2 + bx lr +_021ED636: + mov r0, #1 + bx lr +_021ED63A: + mov r0, #0 + bx lr +_021ED63E: + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021ED644 +MOD05_021ED644: ; 0x021ED644 + push {r3, lr} + bl MOD05_021ED320 + bl MOD05_021ED614 + pop {r3, pc} + + thumb_func_start MOD05_021ED650 +MOD05_021ED650: ; 0x021ED650 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r4, r0, #0 + add r5, r1, #0 + mov r0, #8 + bl FUN_020219F4 + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_020669C0 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x14] + mov r5, #0 + add r7, sp, #0x34 +_021ED67C: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + lsl r1, r5, #1 + strh r0, [r7, r1] + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x3a + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x30 + strb r0, [r1, r5] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #4 + blo _021ED67C + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl FUN_020671BC + add r7, r0, #0 + mov r5, #0 +_021ED6B4: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x46 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x24 + add r1, #2 + strb r0, [r1, r5] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #6 + blo _021ED6B4 + add r0, r4, #0 + mov r1, #0xc + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #9] + add r0, r4, #0 + mov r1, #0x79 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #8] + add r0, r4, #0 + mov r1, #0xb + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #7] + add r0, r4, #0 + mov r1, #0x99 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #0xa] + add r0, r4, #0 + mov r1, #0x6e + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #5] + ldr r2, [sp, #0x10] + add r0, r4, #0 + mov r1, #0x90 + bl FUN_020671BC + add r0, r4, #0 + mov r1, #0x9c + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #3] + add r0, r4, #0 + mov r1, #7 + mov r2, #0 + bl FUN_020671BC + str r0, [sp, #0x2c] + add r0, r4, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #4] + ldr r1, _021ED93C ; =0x000001EA + ldr r0, [sp, #0x14] + cmp r0, r1 + bne _021ED788 + add r0, r4, #0 + mov r1, #0x97 + mov r2, #0 + bl FUN_020671BC + add r5, r0, #0 + mov r0, #2 + mov r1, #1 + bl FUN_02015CF8 + cmp r5, r0 + bne _021ED788 + ldr r0, [sp, #0x2c] + add r1, r7, #0 + bl FUN_02068AAC + cmp r0, #0 + beq _021ED788 +_021ED774: + add r0, r7, #0 + bl FUN_0201BA10 + add r7, r0, #0 + ldr r0, [sp, #0x2c] + add r1, r7, #0 + bl FUN_02068AAC + cmp r0, #0 + bne _021ED774 +_021ED788: + mov r2, #1 + str r2, [sp] + str r7, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldr r1, [sp, #0x14] + add r0, r6, #0 + mov r3, #0x20 + bl FUN_02066ACC + mov r5, #0 + add r7, sp, #0x34 +_021ED7A2: + add r1, r5, #0 + lsl r2, r5, #1 + add r0, r6, #0 + add r1, #0x36 + add r2, r7, r2 + bl FUN_02067830 + add r1, r5, #0 + add r2, sp, #0x30 + add r0, r6, #0 + add r1, #0x3a + add r2, r2, r5 + bl FUN_02067830 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #4 + blo _021ED7A2 + add r7, sp, #0x24 + mov r5, #0 + add r7, #2 +_021ED7CE: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x46 + add r2, r7, r5 + bl FUN_02067830 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #6 + blo _021ED7CE + add r2, sp, #0x20 + add r0, r6, #0 + mov r1, #0xc + add r2, #1 + bl FUN_02067830 + add r0, r6, #0 + mov r1, #0x79 + add r2, sp, #0x20 + bl FUN_02067830 + add r2, sp, #0x1c + add r0, r6, #0 + mov r1, #0xb + add r2, #3 + bl FUN_02067830 + add r2, sp, #0x1c + mov r1, #0x78 + add r0, sp, #0x18 + strb r1, [r0, #6] + add r0, r6, #0 + mov r1, #9 + add r2, #2 + bl FUN_02067830 + add r2, sp, #0x20 + add r0, r6, #0 + mov r1, #0x99 + add r2, #2 + bl FUN_02067830 + add r2, sp, #0x1c + add r0, r6, #0 + mov r1, #0x6e + add r2, #1 + bl FUN_02067830 + ldr r2, [sp, #0x10] + add r0, r6, #0 + mov r1, #0x90 + bl FUN_02067830 + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x9c + add r2, #3 + bl FUN_02067830 + add r0, r6, #0 + mov r1, #7 + add r2, sp, #0x2c + bl FUN_02067830 + add r0, r6, #0 + mov r1, #0x70 + add r2, sp, #0x1c + bl FUN_02067830 + add r0, r4, #0 + mov r1, #0x97 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strh r0, [r1, #0xc] + add r0, r4, #0 + mov r1, #0x91 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #2] + add r0, r4, #0 + mov r1, #0x92 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #1] + add r0, r4, #0 + mov r1, #0x93 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1] + add r0, r6, #0 + mov r1, #0x97 + add r2, sp, #0x24 + bl FUN_02067830 + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x91 + add r2, #2 + bl FUN_02067830 + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x92 + add r2, #1 + bl FUN_02067830 + add r0, r6, #0 + mov r1, #0x93 + add r2, sp, #0x18 + bl FUN_02067830 + add r0, r4, #0 + mov r1, #0x98 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strh r0, [r1, #0xc] + add r0, r4, #0 + mov r1, #0x94 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #2] + add r0, r4, #0 + mov r1, #0x95 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1, #1] + add r0, r4, #0 + mov r1, #0x96 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x18 + strb r0, [r1] + add r0, r6, #0 + mov r1, #0x98 + add r2, sp, #0x24 + bl FUN_02067830 + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x94 + add r2, #2 + bl FUN_02067830 + add r2, sp, #0x18 + add r0, r6, #0 + mov r1, #0x95 + add r2, #1 + bl FUN_02067830 + add r0, r6, #0 + mov r1, #0x96 + add r2, sp, #0x18 + bl FUN_02067830 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02069B88 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_021ED93C: .word 0x000001EA + + thumb_func_start MOD05_021ED940 +MOD05_021ED940: ; 0x021ED940 + push {r4, r5, lr} + sub sp, #0x1c + mov r3, #0x46 + add r2, sp, #0 + strb r3, [r2, #3] + mov r5, #0 + strb r5, [r2, #2] + mov r3, #4 + strb r3, [r2, #1] + add r4, r0, #0 + strb r5, [r2] + bl MOD05_021ED650 + add r2, sp, #0 + add r0, r4, #0 + mov r1, #0x4c + add r2, #3 + bl FUN_02067830 + add r0, r4, #0 + mov r1, #5 + add r2, r5, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r5, #0 + add r2, sp, #4 + bl FUN_0200A99C + add r0, r4, #0 + mov r1, #0x74 + add r2, sp, #4 + bl FUN_02067830 + add r2, sp, #0 + add r0, r4, #0 + mov r1, #0x4d + add r2, #2 + bl FUN_02067830 + add r2, sp, #0 + add r0, r4, #0 + mov r1, #0x9a + add r2, #1 + bl FUN_02067830 + add r0, r4, #0 + mov r1, #0x9b + add r2, sp, #0 + bl FUN_02067830 + add r0, r4, #0 + bl FUN_02066ED8 + add sp, #0x1c + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED9B4 +MOD05_021ED9B4: ; 0x021ED9B4 + push {r3, lr} + bl MOD05_021ED214 + bl MOD05_021ED614 + pop {r3, pc} + + thumb_func_start MOD05_021ED9C0 +MOD05_021ED9C0: ; 0x021ED9C0 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD05_021ED9EC + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021ED9DC +MOD05_021ED9DC: ; 0x021ED9DC + push {r4, lr} + add r4, r0, #0 + bl MOD05_021EDA28 + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021ED9EC +MOD05_021ED9EC: ; 0x021ED9EC + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #4 + mov r2, #0x57 + bl MOD05_021E5078 + ldr r0, [r4] + mov r1, #3 + mov r2, #6 + mov r3, #1 + bl MOD05_021E50D4 + mov r0, #3 + str r0, [sp] + mov r3, #0 + mov r1, #4 + ldr r0, _021EDA24 ; =0x021F8A48 + str r3, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r2, r1, #0 + bl MOD05_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_021EDA24: .word 0x021F8A48 + + thumb_func_start MOD05_021EDA28 +MOD05_021EDA28: ; 0x021EDA28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #4 + bl MOD05_021E50A0 + ldr r0, [r4] + mov r1, #3 + bl MOD05_021E5114 + ldr r0, [r4] + mov r1, #4 + bl MOD05_021E506C + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDA48 +MOD05_021EDA48: ; 0x021EDA48 + push {r4, r5, lr} + sub sp, #0x24 + add r5, r0, #0 + bl MOD05_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x18 + str r4, [sp, #0x18] + bl MOD05_021E4C08 + str r0, [sp, #0x1c] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r5, [sp, #0x20] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _021EDA94 ; =0x021F8A34 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl MOD05_021E4DC4 + add sp, #0x24 + pop {r4, r5, pc} + nop +_021EDA94: .word 0x021F8A34 + + thumb_func_start MOD05_021EDA98 +MOD05_021EDA98: ; 0x021EDA98 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r5, r0, #0 + str r1, [r2, #8] + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x10 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x1c] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_02058450 + str r0, [r4, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x14] + mov r1, #4 + add r2, sp, #0 + bl MOD05_021E4EE4 + str r0, [r4, #0x20] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDAE8 +MOD05_021EDAE8: ; 0x021EDAE8 + ldr r3, _021EDAF0 ; =0x0201F745 + ldr r0, [r1, #0x20] + bx r3 + nop +_021EDAF0: .word 0x0201F745 + + thumb_func_start MOD05_021EDAF4 +MOD05_021EDAF4: ; 0x021EDAF4 + push {r4, lr} + add r2, r1, #0 + add r4, r0, #0 + ldr r0, [r2, #0x1c] + ldr r1, [r2, #4] + ldr r2, [r2, #8] + bl FUN_020582A8 + cmp r0, #0 + bne _021EDB0E + add r0, r4, #0 + bl MOD05_021E4DE4 +_021EDB0E: + pop {r4, pc} + + thumb_func_start MOD05_021EDB10 +MOD05_021EDB10: ; 0x021EDB10 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r4, [r5, #0x1c] + ldr r1, [r5, #4] + add r6, r0, #0 + ldr r2, [r5, #8] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _021EDB32 + add r0, r6, #0 + bl MOD05_021E4DE4 + add sp, #0x18 + pop {r4, r5, r6, pc} +_021EDB32: + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r1, r1, r0 + mov r0, #3 + lsl r0, r0, #0xe + str r1, [sp, #0x14] + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x20] + add r1, sp, #0xc + bl FUN_0201F7C8 + add sp, #0x18 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDB70 +MOD05_021EDB70: ; 0x021EDB70 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl MOD05_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD05_021EDB9C + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDB8C +MOD05_021EDB8C: ; 0x021EDB8C + push {r4, lr} + add r4, r0, #0 + bl MOD05_021EDBBC + add r0, r4, #0 + bl MOD05_021E4C00 + pop {r4, pc} + + thumb_func_start MOD05_021EDB9C +MOD05_021EDB9C: ; 0x021EDB9C + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x50 + mov r2, #0 + add r3, r3, #4 + bl MOD05_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD05_021EDBBC +MOD05_021EDBBC: ; 0x021EDBBC + ldr r3, _021EDBC4 ; =MOD05_021E4C00 + ldr r0, [r0, #0x5c] + bx r3 + nop +_021EDBC4: .word MOD05_021E4C00 + + thumb_func_start MOD05_021EDBC8 +MOD05_021EDBC8: ; 0x021EDBC8 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r2, sp, #8 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r5, r0, #0 + str r1, [r2, #8] + bl FUN_020553A0 + add r4, r0, #0 + bl MOD05_021E4C24 + add r6, r0, #0 + mov r1, #0x10 + str r6, [sp, #0x14] + bl MOD05_021E4C08 + str r0, [sp, #0x18] + add r0, r4, #0 + mov r1, #2 + str r5, [sp, #0x1c] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _021EDC10 ; =0x021F8A6C + add r0, r6, #0 + add r2, sp, #8 + mov r3, #0 + bl MOD05_021E4DC4 + add sp, #0x20 + pop {r4, r5, r6, pc} + nop +_021EDC10: .word 0x021F8A6C + + thumb_func_start MOD05_021EDC14 +MOD05_021EDC14: ; 0x021EDC14 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_0206475C + add r4, r0, #0 + add r3, r4, #0 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x24 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #8] + bl FUN_020553A0 + mov r1, #0 + mvn r1, r1 + add r4, r0, #0 + str r1, [r5, #4] + bl FUN_02058448 + str r0, [r5, #0x14] + add r0, r4, #0 + bl FUN_02058450 + str r0, [r5, #0x18] + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021EDC4C +MOD05_021EDC4C: ; 0x021EDC4C + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EDC50 +MOD05_021EDC50: ; 0x021EDC50 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + str r0, [sp] + ldr r0, [r5, #0x2c] + str r0, [sp, #4] + bl FUN_020553A0 + ldr r1, [r5, #0x14] + ldr r2, [r5, #0x18] + add r6, r0, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _021EDC78 + ldr r0, [sp] + bl MOD05_021E4DE4 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} +_021EDC78: + ldr r7, [r5, #4] + add r0, r6, #0 + bl FUN_02058720 + strb r0, [r5, #8] + ldrb r0, [r5, #8] + bl MOD05_021EDDF4 + str r0, [r5, #4] + mov r0, #0 + str r0, [r5] + ldr r4, [r5, #4] + sub r0, r0, #1 + cmp r4, r0 + beq _021EDCA0 + ldr r0, [sp, #4] + bl FUN_020552F8 + cmp r4, r0 + beq _021EDCAE +_021EDCA0: + mov r0, #0 + str r0, [r5, #0x1c] + str r0, [r5, #0x20] + mov r0, #1 + add sp, #0x24 + str r0, [r5] + pop {r4, r5, r6, r7, pc} +_021EDCAE: + cmp r7, r4 + beq _021EDCB8 + mov r0, #0 + str r0, [r5, #0x1c] + str r0, [r5, #0x20] +_021EDCB8: + add r0, r6, #0 + bl FUN_02058B2C + add r4, r0, #0 + ldr r0, [r5, #4] + bl FUN_02059BF4 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + str r0, [sp, #8] + ldr r0, [r5, #4] + bl FUN_02059C00 + add r2, r0, #0 + ldr r1, [sp, #8] + add r0, r4, r7 + add r1, r1, r2 + add r2, sp, #0xc + bl FUN_02059E60 + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_02058B5C + ldr r0, [sp, #0x1c] + add r1, sp, #0xc + str r0, [sp, #0x10] + ldr r0, [sp] + bl FUN_0206476C + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EDCFC +MOD05_021EDCFC: ; 0x021EDCFC + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #1 + beq _021EDDE2 + mov r0, #0 + ldr r1, [r4, #4] + mvn r0, r0 + cmp r1, r0 + beq _021EDDE2 + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0xf + ble _021EDD34 + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x20] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + str r0, [r4, #0x20] +_021EDD34: + ldr r3, _021EDDE8 ; =0x021F8A60 + add r2, sp, #0x24 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _021EDDEC ; =0x021F8A80 + str r0, [r2] + add r3, sp, #0 + mov r2, #4 +_021EDD46: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021EDD46 + ldr r0, [r5] + mov r2, #0x18 + str r0, [r3] + ldr r1, [r4, #4] + ldr r3, _021EDDF0 ; =0x021F8AA4 + add r0, r1, #0 + mul r0, r2 + add r0, r3, r0 + ldr r5, [r4, #0x20] + mov r3, #0xc + mul r3, r5 + add r5, r0, r3 + cmp r1, #3 + bhi _021EDDB4 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EDD76: ; jump table + .short _021EDD7E - _021EDD76 - 2 ; case 0 + .short _021EDD8C - _021EDD76 - 2 ; case 1 + .short _021EDD9A - _021EDD76 - 2 ; case 2 + .short _021EDDA8 - _021EDD76 - 2 ; case 3 +_021EDD7E: + mov r1, #0 + add r0, sp, #0 + mov r2, #0xb4 + add r3, r1, #0 + bl FUN_0201CB20 + b _021EDDB4 +_021EDD8C: + mov r1, #0 + add r0, sp, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _021EDDB4 +_021EDD9A: + mov r1, #0 + add r0, sp, #0 + add r2, #0xf6 + add r3, r1, #0 + bl FUN_0201CB20 + b _021EDDB4 +_021EDDA8: + mov r1, #0 + add r0, sp, #0 + mov r2, #0x5a + add r3, r1, #0 + bl FUN_0201CB20 +_021EDDB4: + add r0, r6, #0 + add r1, sp, #0x30 + bl FUN_0206477C + ldr r1, [sp, #0x30] + ldr r0, [r5] + add r2, sp, #0 + add r0, r1, r0 + str r0, [sp, #0x30] + ldr r1, [sp, #0x34] + ldr r0, [r5, #4] + add r3, sp, #0x24 + add r0, r1, r0 + str r0, [sp, #0x34] + ldr r1, [sp, #0x38] + ldr r0, [r5, #8] + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4, #0x28] + add r1, sp, #0x30 + add r0, r0, #4 + bl FUN_0201B26C +_021EDDE2: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_021EDDE8: .word 0x021F8A60 +_021EDDEC: .word 0x021F8A80 +_021EDDF0: .word 0x021F8AA4 + + thumb_func_start MOD05_021EDDF4 +MOD05_021EDDF4: ; 0x021EDDF4 + push {r4, lr} + add r4, r0, #0 + bl FUN_020547D4 + cmp r0, #0 + beq _021EDE04 + mov r0, #0 + pop {r4, pc} +_021EDE04: + add r0, r4, #0 + bl FUN_020547E0 + cmp r0, #0 + beq _021EDE12 + mov r0, #1 + pop {r4, pc} +_021EDE12: + add r0, r4, #0 + bl FUN_020547C8 + cmp r0, #0 + beq _021EDE20 + mov r0, #2 + pop {r4, pc} +_021EDE20: + add r0, r4, #0 + bl FUN_020547BC + cmp r0, #0 + beq _021EDE2E + mov r0, #3 + pop {r4, pc} +_021EDE2E: + mov r0, #0 + mvn r0, r0 + pop {r4, pc} + + thumb_func_start MOD05_021EDE34 +MOD05_021EDE34: ; 0x021EDE34 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r1, #0 + add r1, r6, #0 + bl _s32_div_f + add r4, r1, #0 + add r0, r5, #0 + add r1, r6, #0 + bl _s32_div_f + cmp r4, r1 + bne _021EDE52 + mov r0, #1 + pop {r4, r5, r6, pc} +_021EDE52: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDE58 +MOD05_021EDE58: ; 0x021EDE58 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r1, #0 + add r1, r6, #0 + bl _s32_div_f + add r4, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl _s32_div_f + cmp r4, r0 + bne _021EDE76 + mov r0, #1 + pop {r4, r5, r6, pc} +_021EDE76: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDE7C +MOD05_021EDE7C: ; 0x021EDE7C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x30 + add r4, r1, #0 + mul r4, r0 + add r1, r5, r4 + ldr r0, [r1, #0x14] + cmp r0, #0 + beq _021EDE94 + ldr r0, [r1, #0xc] + bl MOD05_021EF8F8 +_021EDE94: + add r1, r5, r4 + ldr r0, [r1, #0x18] + cmp r0, #0 + beq _021EDEA2 + ldr r0, [r1, #0x10] + bl MOD05_021F4444 +_021EDEA2: + mov r1, #1 + add r0, r5, r4 + str r1, [r0, #0x28] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EDEAC +MOD05_021EDEAC: ; 0x021EDEAC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021EDEBC + ldr r0, [r4, #8] + bl MOD05_021EF8F8 +_021EDEBC: + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _021EDEC8 + ldr r0, [r4, #0xc] + bl MOD05_021F4444 +_021EDEC8: + mov r0, #0 + str r0, [r4, #0x10] + str r0, [r4, #0x14] + pop {r4, pc} + + thumb_func_start MOD05_021EDED0 +MOD05_021EDED0: ; 0x021EDED0 + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + asr r2, r0, #4 + lsr r2, r2, #0x1b + add r2, r0, r2 + asr r7, r2, #5 + asr r2, r1, #4 + lsr r2, r2, #0x1b + add r2, r1, r2 + asr r6, r2, #5 + ldr r2, [sp, #0x18] + str r3, [sp] + ldr r4, [sp, #0x1c] + bl MOD05_021EEE08 + ldr r1, [sp, #0x18] + bl MOD05_021EF620 + add r1, r6, #0 + mul r1, r5 + add r1, r7, r1 + cmp r0, #3 + bhi _021EDFB6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EDF0A: ; jump table + .short _021EDF12 - _021EDF0A - 2 ; case 0 + .short _021EDF38 - _021EDF0A - 2 ; case 1 + .short _021EDF60 - _021EDF0A - 2 ; case 2 + .short _021EDF8A - _021EDF0A - 2 ; case 3 +_021EDF12: + sub r2, r1, r5 + str r1, [r4, #0xc] + sub r0, r2, #1 + str r0, [r4] + str r2, [r4, #4] + sub r0, r1, #1 + str r0, [r4, #8] + sub r0, r7, #1 + bpl _021EDF2C + mov r0, #0 + mvn r0, r0 + str r0, [r4] + str r0, [r4, #8] +_021EDF2C: + sub r0, r6, #1 + bpl _021EDFBA + mov r0, #0 + mvn r0, r0 + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_021EDF38: + str r1, [r4, #8] + sub r0, r1, r5 + str r0, [r4] + add r0, r0, #1 + str r0, [r4, #4] + add r0, r1, #1 + str r0, [r4, #0xc] + add r0, r7, #1 + cmp r0, r5 + blt _021EDF54 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #4] + str r0, [r4, #0xc] +_021EDF54: + sub r0, r6, #1 + bpl _021EDFBA + mov r0, #0 + mvn r0, r0 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021EDF60: + str r1, [r4, #4] + sub r0, r1, #1 + add r1, r1, r5 + str r0, [r4] + sub r0, r1, #1 + str r0, [r4, #8] + str r1, [r4, #0xc] + sub r0, r7, #1 + bpl _021EDF7A + mov r0, #0 + mvn r0, r0 + str r0, [r4] + str r0, [r4, #8] +_021EDF7A: + ldr r0, [sp] + add r1, r6, #1 + cmp r1, r0 + ble _021EDFBA + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_021EDF8A: + str r1, [r4] + add r0, r1, #1 + str r0, [r4, #4] + add r0, r1, r5 + str r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #0xc] + add r0, r7, #1 + cmp r0, r5 + blt _021EDFA6 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #4] + str r0, [r4, #0xc] +_021EDFA6: + ldr r0, [sp] + add r1, r6, #1 + cmp r1, r0 + ble _021EDFBA + mov r0, #0 + mvn r0, r0 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_021EDFB6: + bl ErrorHandling +_021EDFBA: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EDFBC +MOD05_021EDFBC: ; 0x021EDFBC + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r5, r0, #0 + sub r7, r6, #1 +_021EDFC4: + ldr r1, _021EE03C ; =0x0000086C + mov r0, #4 + bl FUN_02016998 + lsl r4, r6, #2 + add r1, r5, r4 + add r1, #0x90 + str r0, [r1] + add r0, r5, r4 + add r0, #0x90 + ldr r2, [r0] + ldr r0, _021EE040 ; =0x00000864 + mov r1, #0 + str r1, [r2, r0] + add r2, r5, r4 + add r2, #0x90 + ldr r3, [r2] + ldr r2, _021EE044 ; =0x00000854 + ldr r1, [r5] + add r0, r6, #0 + add r2, r3, r2 + bl MOD05_021F3C60 + add r2, r5, r4 + add r2, #0x90 + ldr r3, [r2] + ldr r2, _021EE048 ; =0x00000858 + ldr r1, [r5] + add r0, r6, #0 + add r2, r3, r2 + bl MOD05_021F3C68 + mov r0, #4 + bl MOD05_021E7C00 + add r1, r5, r4 + add r1, #0x90 + ldr r2, [r1] + ldr r1, _021EE04C ; =0x00000868 + str r0, [r2, r1] + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + mov r0, #0x86 + lsl r0, r0, #4 + str r7, [r1, r0] + add r1, r5, r4 + add r1, #0x90 + mov r2, #2 + ldr r1, [r1] + add r0, r7, #0 + lsl r2, r2, #0xa + bl MIi_CpuClearFast + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #4 + blo _021EDFC4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EE03C: .word 0x0000086C +_021EE040: .word 0x00000864 +_021EE044: .word 0x00000854 +_021EE048: .word 0x00000858 +_021EE04C: .word 0x00000868 + + thumb_func_start MOD05_021EE050 +MOD05_021EE050: ; 0x021EE050 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r5, r0, #0 + add r7, r6, #0 +_021EE058: + ldr r1, _021EE0B0 ; =0x0000086C + mov r0, #4 + bl FUN_02016998 + lsl r4, r6, #2 + add r1, r5, r4 + add r1, #0x90 + str r0, [r1] + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EE0B4 ; =0x00000864 + add r2, r5, r4 + str r7, [r1, r0] + add r2, #0x90 + ldr r3, [r2] + ldr r2, _021EE0B8 ; =0x00000854 + ldr r1, [r5] + add r0, r6, #0 + add r2, r3, r2 + bl MOD05_021F3C60 + mov r0, #4 + bl MOD05_021E7C00 + add r1, r5, r4 + add r1, #0x90 + ldr r2, [r1] + ldr r1, _021EE0BC ; =0x00000868 + str r0, [r2, r1] + add r0, r5, r4 + add r0, #0x90 + ldr r2, [r0] + mov r1, #0 + mov r0, #0x86 + mvn r1, r1 + lsl r0, r0, #4 + str r1, [r2, r0] + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #4 + blo _021EE058 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EE0B0: .word 0x0000086C +_021EE0B4: .word 0x00000864 +_021EE0B8: .word 0x00000854 +_021EE0BC: .word 0x00000868 + + thumb_func_start MOD05_021EE0C0 +MOD05_021EE0C0: ; 0x021EE0C0 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + cmp r6, #0 + beq _021EE0E6 + mov r0, #4 + mov r1, #0x10 + bl FUN_020169D8 + add r4, r0, #0 + add r0, r6, #0 + add r1, r7, #0 + mov r2, #0 + mov r3, #0x10 + str r4, [sp] + bl FUN_02006814 + b _021EE0FC +_021EE0E6: + bl ErrorHandling + mov r0, #0x10 + str r0, [sp] + mov r0, #0x43 + add r1, r7, #0 + mov r2, #4 + mov r3, #0 + bl FUN_02006584 + add r4, r0, #0 +_021EE0FC: + ldr r0, [r4] + str r0, [r5] + ldr r0, [r4, #4] + str r0, [r5, #0xc] + ldr r0, [r4, #8] + str r0, [r5, #4] + ldr r0, [r4, #0xc] + str r0, [r5, #8] + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EE114 +MOD05_021EE114: ; 0x021EE114 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + ldr r4, [sp, #0x40] + lsl r7, r0, #2 + add r0, r4, r7 + ldr r0, [r0, #0x18] + str r1, [sp, #0xc] + ldr r5, [sp, #0x3c] + cmp r0, #0 + blt _021EE1D0 + ldr r1, [sp, #0x38] + mul r1, r3 + cmp r0, r1 + bge _021EE1D0 + add r1, r2, #0 + bl FUN_02034660 + add r1, r0, #0 + ldr r0, _021EE1D4 ; =0x0000FFFF + cmp r1, r0 + beq _021EE1D0 + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r2, sp, #0x10 + bl MOD05_021EE0C0 + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0x10] + ldr r2, [r4, r7] + bl FUN_02006864 + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + ldr r3, _021EE1D8 ; =0x00000868 + str r0, [sp] + add r0, r5, #0 + ldr r6, [r4, r7] + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0xc] + ldr r3, [r6, r3] + bl MOD05_021E7CD8 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [sp, #0xc] + ldr r6, [r4, r7] + bl MOD05_021F4C74 + ldr r3, _021EE1DC ; =0x00000864 + str r0, [sp] + add r0, r6, r3 + add r2, r3, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #8] + add r0, r5, #0 + add r0, #0xf8 + sub r2, #0x64 + sub r3, #0x10 + ldr r0, [r0] + ldr r1, [sp, #0x14] + add r2, r6, r2 + add r3, r6, r3 + bl MOD05_021EFA00 + str r0, [r4, #8] + ldr r0, [r4, #0x14] + add r3, r4, #0 + add r0, r0, #1 + str r0, [r4, #0x14] + ldr r2, [r4, r7] + ldr r6, _021EE1E0 ; =0x00000858 + add r5, #0xf8 + add r0, r2, r6 + str r0, [sp] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #4] + ldr r0, [r5] + add r5, r6, #4 + ldr r1, [sp, #0x18] + ldr r2, [r2, r5] + add r3, #0x14 + bl MOD05_021F43E4 + str r0, [r4, #0xc] +_021EE1D0: + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EE1D4: .word 0x0000FFFF +_021EE1D8: .word 0x00000868 +_021EE1DC: .word 0x00000864 +_021EE1E0: .word 0x00000858 + + thumb_func_start MOD05_021EE1E4 +MOD05_021EE1E4: ; 0x021EE1E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x30 + str r1, [sp, #0xc] + add r1, r2, #0 + add r2, r3, #0 + ldr r3, _021EE294 ; =0x00000828 + lsl r7, r0, #2 + add r3, sp + ldr r4, [r3, #0x18] + ldr r5, [r3, #0x14] + add r0, r4, r7 + ldr r0, [r0, #0x18] + cmp r0, #0 + blt _021EE286 + ldr r3, [r3, #0x10] + mul r3, r2 + cmp r0, r3 + bge _021EE286 + bl FUN_02034660 + add r1, r0, #0 + ldr r0, _021EE298 ; =0x0000FFFF + cmp r1, r0 + beq _021EE286 + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r2, sp, #0x10 + bl MOD05_021EE0C0 + add r0, r5, #0 + add r0, #0xf8 + mov r1, #2 + ldr r0, [r0] + lsl r1, r1, #0xa + add r2, sp, #0x20 + bl FUN_02006864 + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + ldr r3, _021EE29C ; =0x00000868 + str r0, [sp] + add r0, r5, #0 + ldr r6, [r4, r7] + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0xc] + ldr r3, [r6, r3] + bl MOD05_021E7CD8 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r0, [sp, #0xc] + ldr r6, [r4, r7] + bl MOD05_021F4C74 + ldr r3, _021EE2A0 ; =0x00000864 + str r0, [sp] + add r0, r6, r3 + add r2, r3, #0 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0x10 + str r0, [sp, #8] + add r5, #0xf8 + sub r2, #0x64 + sub r3, #0x10 + ldr r0, [r5] + ldr r1, [sp, #0x14] + add r2, r6, r2 + add r3, r6, r3 + bl MOD05_021EFA00 + str r0, [r4, #8] +_021EE286: + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EE294: .word 0x00000828 +_021EE298: .word 0x0000FFFF +_021EE29C: .word 0x00000868 +_021EE2A0: .word 0x00000864 + + thumb_func_start MOD05_021EE2A4 +MOD05_021EE2A4: ; 0x021EE2A4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r1, #0 + str r0, [sp, #4] + str r2, [sp, #8] + ldr r7, [sp, #0x3c] + add r1, r0, #0 + bmi _021EE37A + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x34] + add r5, r2, #0 + mul r5, r1 + add r1, r0, #0 + cmp r1, r5 + bge _021EE37A + add r1, r3, #0 + bl FUN_02034660 + add r1, r0, #0 + ldr r0, _021EE380 ; =0x0000FFFF + cmp r1, r0 + beq _021EE37A + add r0, r7, #0 + add r0, #0xf8 + ldr r0, [r0] + add r2, sp, #0xc + bl MOD05_021EE0C0 + lsl r5, r4, #2 + add r4, r7, #0 + add r0, r7, #0 + add r4, #0x90 + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0xc] + ldr r2, [r4, r5] + bl FUN_02006864 + add r0, r7, #0 + add r0, #0xf0 + ldr r0, [r0] + ldr r3, _021EE384 ; =0x00000868 + str r0, [sp] + add r0, r7, #0 + ldr r6, [r4, r5] + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp, #0x18] + ldr r2, [sp, #8] + ldr r3, [r6, r3] + bl MOD05_021E7CD8 + ldr r6, [r4, r5] + ldr r0, [sp, #8] + bl MOD05_021F4C74 + str r0, [sp] + add r0, r7, #0 + mov r3, #2 + add r0, #0xf8 + lsl r3, r3, #0xa + add r2, r6, r3 + add r3, #0x54 + ldr r0, [r0] + ldr r1, [sp, #0x10] + add r3, r6, r3 + bl MOD05_021EFA40 + ldr r1, [sp, #0x38] + cmp r1, #1 + bne _021EE336 + bl MOD05_021DB5EC +_021EE336: + ldr r6, _021EE388 ; =0x00000864 + ldr r0, [r4, r5] + mov r1, #1 + str r1, [r0, r6] + add r2, r6, #0 + add r0, r7, #0 + add r0, #0xf8 + ldr r3, [r4, r5] + sub r2, #8 + sub r6, #0xc + ldr r2, [r3, r2] + ldr r0, [r0] + ldr r1, [sp, #0x14] + ldr r3, [r3, r6] + bl MOD05_021F4344 + mov r2, #0x86 + ldr r1, [r4, r5] + ldr r0, [sp, #4] + lsl r2, r2, #4 + str r0, [r1, r2] + add r0, r7, #0 + add r0, #0xfc + ldr r3, [r0] + cmp r3, #0 + beq _021EE37A + mov r0, #1 + lsl r0, r0, #8 + ldr r4, [r4, r5] + add r2, #8 + ldr r0, [r7, r0] + ldr r1, [sp, #4] + ldr r2, [r4, r2] + blx r3 +_021EE37A: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_021EE380: .word 0x0000FFFF +_021EE384: .word 0x00000868 +_021EE388: .word 0x00000864 + + thumb_func_start MOD05_021EE38C +MOD05_021EE38C: ; 0x021EE38C + push {r4, r5, r6, r7, lr} + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x2c + str r2, [sp, #8] + ldr r2, _021EE44C ; =0x00000820 + add r4, r1, #0 + add r2, sp + str r0, [sp, #4] + ldr r5, [r2, #0x1c] + add r1, r0, #0 + bmi _021EE43E + ldr r6, [r2, #0x10] + ldr r1, [r2, #0x14] + add r2, r6, #0 + mul r2, r1 + add r1, r0, #0 + cmp r1, r2 + bge _021EE43E + add r1, r3, #0 + bl FUN_02034660 + add r1, r0, #0 + ldr r0, _021EE450 ; =0x0000FFFF + cmp r1, r0 + beq _021EE43E + add r0, r5, #0 + add r0, #0xf8 + ldr r0, [r0] + add r2, sp, #0xc + bl MOD05_021EE0C0 + add r0, r5, #0 + add r0, #0xf8 + mov r1, #2 + ldr r0, [r0] + lsl r1, r1, #0xa + add r2, sp, #0x1c + bl FUN_02006864 + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + add r7, r5, #0 + str r0, [sp] + add r0, r5, #0 + add r0, #0xf8 + lsl r4, r4, #2 + add r7, #0x90 + ldr r6, [r7, r4] + ldr r3, _021EE454 ; =0x00000868 + ldr r0, [r0] + ldr r1, [sp, #0x18] + ldr r2, [sp, #8] + ldr r3, [r6, r3] + bl MOD05_021E7CD8 + ldr r0, [sp, #8] + ldr r6, [r7, r4] + bl MOD05_021F4C74 + mov r3, #2 + str r0, [sp] + add r5, #0xf8 + lsl r3, r3, #0xa + add r2, r6, r3 + add r3, #0x54 + ldr r0, [r5] + ldr r1, [sp, #0x10] + add r3, r6, r3 + bl MOD05_021EFA40 + ldr r1, _021EE44C ; =0x00000820 + add r1, sp + ldr r1, [r1, #0x18] + cmp r1, #1 + bne _021EE42E + bl MOD05_021DB5EC +_021EE42E: + ldr r1, [r7, r4] + ldr r0, _021EE458 ; =0x00000864 + mov r2, #1 + str r2, [r1, r0] + sub r1, r0, #4 + ldr r2, [r7, r4] + ldr r0, [sp, #4] + str r0, [r2, r1] +_021EE43E: + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_021EE44C: .word 0x00000820 +_021EE450: .word 0x0000FFFF +_021EE454: .word 0x00000868 +_021EE458: .word 0x00000864 + + thumb_func_start MOD05_021EE45C +MOD05_021EE45C: ; 0x021EE45C + ldr r1, [r0] + cmp r1, #0 + bne _021EE46C + ldr r0, [r0, #4] + cmp r0, #0 + bne _021EE46C + mov r0, #1 + bx lr +_021EE46C: + mov r0, #0 + bx lr + + thumb_func_start MOD05_021EE470 +MOD05_021EE470: ; 0x021EE470 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + str r3, [sp] + add r0, sp, #0x10 + add r7, r1, #0 + ldrb r1, [r0, #0x14] + mov r0, #0x30 + str r2, [sp, #8] + add r5, r1, #0 + mul r5, r0 + add r0, r4, #0 + str r0, [sp, #4] + add r0, #0x2c + str r0, [sp, #4] + ldr r0, [r0, r5] + cmp r0, #0 + beq _021EE498 + bl ErrorHandling +_021EE498: + ldr r0, [sp, #4] + mov r1, #1 + str r1, [r0, r5] + add r0, sp, #0x10 + add r5, r4, r5 + add r1, r5, #0 + ldrb r2, [r0, #0x18] + add r1, #0x30 + add r3, r4, #0 + strb r2, [r1] + add r2, r5, #0 + ldr r1, [sp, #8] + str r7, [r5, #0x1c] + str r1, [r5, #0x20] + ldr r1, [sp] + add r2, #0x24 + strb r1, [r2] + add r1, r5, #0 + ldrb r0, [r0, #0x10] + add r1, #0x25 + add r3, #0x90 + strb r0, [r1] + ldr r1, [sp] + mov r6, #0 + lsl r2, r1, #2 + ldr r1, [r3, r2] + str r1, [r5, #4] + lsl r1, r0, #2 + ldr r0, [r3, r1] + str r0, [r5, #8] + add r0, r5, #0 + add r0, #0x26 + strb r6, [r0] + add r0, r6, #0 + str r0, [r5, #0x28] + add r0, r4, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + bne _021EE4F0 + add r5, r4, #0 + add r5, #0xb4 + add r0, r6, #0 + str r0, [r5] +_021EE4F0: + ldr r0, [r3, r2] + mov r2, #0x86 + lsl r2, r2, #4 + str r7, [r0, r2] + ldr r1, [r3, r1] + ldr r0, [sp, #8] + str r0, [r1, r2] + add r0, r4, #0 + add r0, #0xa0 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xa0 + strb r1, [r0] + add r0, r4, #0 + add r0, #0xa1 + ldrb r0, [r0] + add r4, #0xa1 + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + strb r0, [r4] + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EE52C +MOD05_021EE52C: ; 0x021EE52C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r0, r5, #0 + add r0, #0xa2 + ldrb r1, [r0] + mov r0, #0x30 + add r4, r5, #0 + add r2, r5, #4 + mul r0, r1 + add r4, #0xcc + add r6, r2, r0 + ldr r0, [r4, #0x20] + cmp r0, #1 + bne _021EE572 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _021EE5D0 + ldr r0, [r4, #0x14] + ldr r1, [r0] + ldr r0, [r4, #0x10] + ldr r0, [r0] + cmp r1, r0 + ble _021EE560 + bl ErrorHandling +_021EE560: + ldr r0, [r4, #0x10] + ldr r1, [r0] + ldr r0, [r4, #0x14] + ldr r0, [r0] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0x10 + cmp r1, r0 + bge _021EE574 +_021EE572: + b _021EE6B0 +_021EE574: + ldr r1, [r4, #0xc] + add r2, sp, #0x10 + ldr r0, [r1] + ldr r1, [r1, #8] + add r3, sp, #0xc + bl MOD05_021EF4F8 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0xc] + add r2, r5, #0 + bl MOD05_021EF2AC + ldr r3, [r4, #0xc] + add r2, r4, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #8] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE5B2 + mov r0, #1 + bl FUN_020336A0 + cmp r0, #0 + bne _021EE692 +_021EE5B2: + ldr r0, [r4, #8] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE5C6 + bl ErrorHandling +_021EE5C6: + mov r0, #0 + str r0, [r4, #0x18] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + b _021EE6B0 +_021EE5D0: + ldr r2, [r4, #0xc] + ldr r3, [r4] + ldr r7, [r2] + cmp r3, r7 + beq _021EE5E8 + ldr r1, [r4, #8] + ldr r0, [r2, #8] + cmp r1, r0 + beq _021EE5E8 + bl ErrorHandling + b _021EE6B0 +_021EE5E8: + cmp r3, r7 + bne _021EE5F4 + ldr r1, [r4, #8] + ldr r0, [r2, #8] + cmp r1, r0 + beq _021EE6B0 +_021EE5F4: + mov r3, #1 + str r3, [r4, #0x18] + ldr r2, [r4, #0xc] + ldr r0, [r4] + ldr r1, [r2] + cmp r0, r1 + beq _021EE648 + cmp r0, r1 + ble _021EE612 + str r4, [r4, #0x10] + ldr r0, [r4, #0xc] + str r0, [r4, #0x14] + mov r0, #3 + strb r0, [r4, #0x1c] + b _021EE618 +_021EE612: + str r2, [r4, #0x10] + str r4, [r4, #0x14] + strb r3, [r4, #0x1c] +_021EE618: + ldr r0, [r4] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE632 + mov r0, #1 + bl FUN_020336A0 + cmp r0, #0 + bne _021EE692 +_021EE632: + ldr r0, [r4] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE6A8 + bl ErrorHandling + b _021EE6A8 +_021EE648: + add r1, r5, #0 + add r1, #0xd8 + add r0, r5, #0 + ldr r1, [r1] + add r0, #0xd4 + ldr r0, [r0] + ldr r1, [r1, #8] + cmp r0, r1 + ble _021EE66A + add r0, r4, #0 + add r0, #8 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + add r0, #8 + str r0, [r4, #0x14] + mov r0, #4 + b _021EE676 +_021EE66A: + add r2, #8 + add r0, r4, #0 + str r2, [r4, #0x10] + add r0, #8 + str r0, [r4, #0x14] + mov r0, #2 +_021EE676: + strb r0, [r4, #0x1c] + ldr r0, [r4, #8] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE694 + mov r0, #1 + bl FUN_020336A0 + cmp r0, #0 + beq _021EE694 +_021EE692: + b _021EE8C2 +_021EE694: + ldr r0, [r4, #8] + lsr r2, r0, #0x1f + lsl r1, r0, #0x11 + sub r1, r1, r2 + mov r0, #0x11 + ror r1, r0 + add r0, r2, r1 + beq _021EE6A8 + bl ErrorHandling +_021EE6A8: + ldrb r0, [r4, #0x1c] + add r1, r5, #0 + bl MOD05_021EF458 +_021EE6B0: + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + cmp r0, #3 + bls _021EE6BC + b _021EE818 +_021EE6BC: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EE6C8: ; jump table + .short _021EE6D0 - _021EE6C8 - 2 ; case 0 + .short _021EE726 - _021EE6C8 - 2 ; case 1 + .short _021EE818 - _021EE6C8 - 2 ; case 2 + .short _021EE804 - _021EE6C8 - 2 ; case 3 +_021EE6D0: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + add r1, r6, r0 + add r1, #0x20 + ldrb r1, [r1] + lsl r1, r1, #2 + add r1, r5, r1 + add r1, #0x80 + ldr r1, [r1] + cmp r1, #1 + beq _021EE710 + add r1, r5, #0 + add r1, #0xc4 + ldr r1, [r1] + add r4, r5, #0 + str r1, [sp] + str r5, [sp, #4] + str r6, [sp, #8] + add r4, #0xf4 + add r1, r5, #0 + add r2, r5, #0 + add r3, r5, #0 + ldr r4, [r4] + add r1, #0xb8 + add r2, #0xbc + add r3, #0xc0 + ldr r1, [r1] + ldr r2, [r2] + ldr r3, [r3] + ldr r4, [r4, #4] + blx r4 +_021EE710: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + add r6, #0x22 + mov r1, #1 + add r0, r0, #1 + strb r0, [r6] + add r0, r5, #0 + add r0, #0xb4 + str r1, [r0] + b _021EE818 +_021EE726: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + sub r0, r0, #1 + add r0, r6, r0 + add r0, #0x20 + ldrb r0, [r0] + lsl r0, r0, #2 + add r0, r5, r0 + add r0, #0x80 + ldr r0, [r0] + cmp r0, #1 + bne _021EE75E + add r0, r6, #0 + bl MOD05_021EDEAC + add r1, r6, #0 + add r1, #0x22 + ldrb r1, [r1] + mov r0, #0 + sub r1, r1, #1 + add r1, r6, r1 + add r1, #0x20 + ldrb r1, [r1] + lsl r1, r1, #2 + add r1, r5, r1 + add r1, #0x80 + str r0, [r1] +_021EE75E: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + cmp r0, #2 + bhi _021EE818 + add r0, r6, #0 + add r0, #0x10 + bl MOD05_021EE45C + cmp r0, #1 + bne _021EE818 + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + cmp r0, #2 + blo _021EE784 + mov r0, #1 + str r0, [r6, #0x24] + b _021EE78C +_021EE784: + add r0, r5, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] +_021EE78C: + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + sub r0, r0, #1 + lsl r0, r0, #2 + ldr r2, [r6, r0] + ldr r0, _021EE8C8 ; =0x00000864 + ldr r1, [r2, r0] + cmp r1, #1 + bne _021EE7C4 + sub r0, #0x10 + ldr r0, [r2, r0] + bl FUN_020BC13C + add r7, r0, #0 + ldrh r0, [r7, #0xe] + add r0, r7, r0 + ldr r4, [r0, #0xc] + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + bl MOD05_021F4CA8 + cmp r0, #1 + bne _021EE7C4 + add r0, r7, r4 + bl MOD05_021DB5EC +_021EE7C4: + add r0, r5, #0 + add r0, #0xfc + ldr r3, [r0] + cmp r3, #0 + beq _021EE818 + add r0, r6, #0 + add r0, #0x22 + ldrb r0, [r0] + mov r2, #0x86 + lsl r2, r2, #4 + sub r0, r0, #1 + lsl r0, r0, #2 + ldr r4, [r6, r0] + ldr r1, [r4, r2] + cmp r1, #0 + blt _021EE818 + add r0, r5, #0 + add r6, r5, #0 + add r0, #0xc0 + add r6, #0xc4 + ldr r0, [r0] + ldr r6, [r6] + mul r6, r0 + cmp r1, r6 + bge _021EE818 + mov r0, #1 + lsl r0, r0, #8 + add r2, #8 + ldr r0, [r5, r0] + ldr r2, [r4, r2] + blx r3 + b _021EE818 +_021EE804: + add r6, #0x10 + add r0, r6, #0 + bl MOD05_021EE45C + cmp r0, #1 + bne _021EE818 + add r0, r5, #0 + mov r1, #0 + add r0, #0xa0 + strb r1, [r0] +_021EE818: + add r0, r5, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + bne _021EE83A + add r0, r5, #0 + mov r1, #0 + add r0, #0xa2 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa1 + strb r1, [r0] + mov r0, #2 + add r5, #0xb4 + add sp, #0x14 + str r0, [r5] + pop {r4, r5, r6, r7, pc} +_021EE83A: + add r0, r5, #0 + bl MOD05_021EF0F0 + cmp r0, #1 + bne _021EE8C2 + add r0, r5, #0 + add r0, #0xa2 + ldrb r1, [r0] + mov r0, #0x30 + mov r2, #0 + mul r0, r1 + add r0, r5, r0 + str r2, [r0, #0x2c] + add r0, r5, #0 + bl MOD05_021EF100 + add r0, r5, #0 + add r0, #0xa0 + ldrb r0, [r0] + sub r1, r0, #1 + add r0, r5, #0 + add r0, #0xa0 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa2 + ldrb r0, [r0] + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r5, #0 + add r1, r2, r1 + add r0, #0xa2 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + beq _021EE890 + mov r1, #0 + b _021EE8A0 +_021EE890: + add r0, r5, #0 + mov r1, #0 + add r0, #0xa2 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa1 + strb r1, [r0] + mov r1, #2 +_021EE8A0: + add r0, r5, #0 + add r0, #0xb4 + str r1, [r0] + ldr r0, [r5, #0x6c] + cmp r0, #1 + bne _021EE8C2 + mov r0, #0 + str r0, [r5, #0x6c] + add r0, r5, #0 + add r0, #0x70 + ldrb r0, [r0] + add r1, r5, #0 + bl MOD05_021EF118 + add r0, r5, #0 + bl MOD05_021EF094 +_021EE8C2: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_021EE8C8: .word 0x00000864 + + thumb_func_start MOD05_021EE8CC +MOD05_021EE8CC: ; 0x021EE8CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r4, [sp, #0x34] + str r2, [sp, #0x10] + add r7, r0, #0 + ldr r0, [r4, #0x6c] + add r5, r3, #0 + str r1, [sp, #0xc] + ldr r6, [sp, #0x30] + cmp r0, #1 + bne _021EE8E6 + bl ErrorHandling +_021EE8E6: + add r0, r6, #0 + add r1, r4, #0 + add r2, sp, #0x14 + bl MOD05_021EEF9C + cmp r0, #1 + bne _021EE964 + add r1, sp, #0x14 + ldrb r1, [r1] + add r0, r4, #0 + bl MOD05_021EDE7C + add r0, r4, #0 + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #2 + blo _021EE948 + mov r0, #1 + str r0, [r4, #0x6c] + ldr r0, [sp, #0xc] + str r7, [r4, #0x74] + str r0, [r4, #0x78] + add r1, r4, #0 + ldr r0, [sp, #0x10] + add r1, #0x7c + strb r0, [r1] + add r0, r4, #0 + add r0, #0x7d + strb r5, [r0] + ldr r0, [sp, #0x10] + add r2, r4, #0 + add r2, #0x90 + lsl r1, r0, #2 + ldr r0, [r2, r1] + str r0, [r4, #0x64] + lsl r0, r5, #2 + ldr r3, [r2, r0] + str r3, [r4, #0x68] + add r4, #0x70 + strb r6, [r4] + ldr r3, [r2, r1] + mov r1, #0x86 + lsl r1, r1, #4 + str r7, [r3, r1] + ldr r2, [r2, r0] + ldr r0, [sp, #0xc] + add sp, #0x18 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} +_021EE948: + add r0, r4, #0 + str r5, [sp] + add r0, #0xa1 + ldrb r0, [r0] + ldr r2, [sp, #0xc] + add r1, r7, #0 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r3, [sp, #0x10] + add r0, r4, #0 + bl MOD05_021EE470 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_021EE964: + add r0, r4, #0 + str r5, [sp] + add r0, #0xa1 + ldrb r0, [r0] + ldr r2, [sp, #0xc] + add r1, r7, #0 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r3, [sp, #0x10] + add r0, r4, #0 + bl MOD05_021EE470 + cmp r0, #1 + beq _021EE984 + bl ErrorHandling +_021EE984: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EE988 +MOD05_021EE988: ; 0x021EE988 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r4, r6, #0 + lsl r5, r0, #2 + add r4, #0x90 + ldr r1, [r4, r5] + ldr r0, _021EE9CC ; =0x00000864 + mov r2, #0 + str r2, [r1, r0] + ldr r1, [r4, r5] + sub r0, #8 + ldr r0, [r1, r0] + bl MOD05_021F43CC + ldr r1, [r4, r5] + ldr r0, _021EE9D0 ; =0x00000868 + ldr r0, [r1, r0] + bl MOD05_021E7C1C + mov r0, #0 + mov r2, #0x86 + ldr r1, [r4, r5] + mvn r0, r0 + lsl r2, r2, #4 + str r0, [r1, r2] + ldr r1, [r4, r5] + sub r2, #0x60 + bl MIi_CpuClearFast + add r0, r6, r5 + mov r1, #1 + add r0, #0x80 + str r1, [r0] + pop {r4, r5, r6, pc} + .balign 4, 0 +_021EE9CC: .word 0x00000864 +_021EE9D0: .word 0x00000868 + + thumb_func_start MOD05_021EE9D4 +MOD05_021EE9D4: ; 0x021EE9D4 + push {r3, r4, r5, r6, r7, lr} + ldr r4, [sp, #0x18] + add r5, r1, #0 + add r1, r4, #0 + add r6, r0, #0 + add r7, r2, #0 + str r3, [sp] + bl MOD05_021EE988 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EE988 + add r4, #0x90 + lsl r1, r6, #2 + lsl r5, r5, #2 + lsl r2, r7, #2 + ldr r0, [r4, r1] + ldr r3, [r4, r5] + ldr r6, [r4, r2] + str r6, [r4, r1] + ldr r1, [sp] + lsl r6, r1, #2 + ldr r1, [r4, r6] + str r1, [r4, r5] + str r0, [r4, r2] + str r3, [r4, r6] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EEA0C +MOD05_021EEA0C: ; 0x021EEA0C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #8] + add r7, r0, #0 + ldr r0, [sp, #8] + add r6, r2, #0 + cmp r0, #4 + bls _021EEA1E + b _021EED32 +_021EEA1E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EEA2A: ; jump table + .short _021EED32 - _021EEA2A - 2 ; case 0 + .short _021EEBA4 - _021EEA2A - 2 ; case 1 + .short _021EEC80 - _021EEA2A - 2 ; case 2 + .short _021EEAD2 - _021EEA2A - 2 ; case 3 + .short _021EEA34 - _021EEA2A - 2 ; case 4 +_021EEA34: + mov r0, #2 + mov r1, #3 + mov r2, #0 + mov r3, #1 + str r6, [sp] + bl MOD05_021EE9D4 + add r0, r6, #0 + add r0, #0xad + ldrb r0, [r0] + cmp r0, #2 + bne _021EEA7E + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + mov r0, #1 + sub r5, r7, r2 + str r0, [sp, #0x10] + mov r0, #0 + sub r4, r5, #1 + str r0, [sp, #0xc] + cmp r5, #0 + bge _021EEA68 + sub r5, r0, #1 + add r4, r5, #0 + b _021EEAB4 +_021EEA68: + cmp r4, #0 + blt _021EEA78 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEAB4 +_021EEA78: + mov r4, #0 + mvn r4, r4 + b _021EEAB4 +_021EEA7E: + cmp r0, #3 + bne _021EEAB0 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + mov r0, #0 + sub r5, r7, r2 + str r0, [sp, #0x10] + mov r0, #1 + add r4, r5, #1 + str r0, [sp, #0xc] + cmp r5, #0 + bge _021EEA9E + sub r5, r0, #2 + add r4, r5, #0 + b _021EEAB4 +_021EEA9E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEAB4 + mov r4, #0 + mvn r4, r4 + b _021EEAB4 +_021EEAB0: + bl ErrorHandling +_021EEAB4: + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + ldr r0, [sp, #8] + lsl r2, r2, #0x18 + str r0, [sp] + lsl r3, r3, #0x18 + add r0, r5, #0 + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + str r6, [sp, #4] + bl MOD05_021EE8CC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EEAD2: + mov r0, #1 + mov r1, #3 + mov r2, #0 + mov r3, #2 + str r6, [sp] + bl MOD05_021EE9D4 + add r0, r6, #0 + add r0, #0xad + ldrb r0, [r0] + cmp r0, #1 + bne _021EEB30 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + sub r5, r7, #1 + sub r0, r7, r2 + sub r4, r0, #1 + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0xc] + cmp r5, #0 + blt _021EEB0E + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEB14 +_021EEB0E: + mov r5, #0 + mvn r5, r5 + add r4, r5, #0 +_021EEB14: + cmp r4, #0 + blt _021EEB2A + add r2, r6, #0 + add r2, #0xc0 + ldr r2, [r2] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE34 + cmp r0, #0 + bne _021EEB86 +_021EEB2A: + mov r4, #0 + mvn r4, r4 + b _021EEB86 +_021EEB30: + cmp r0, #3 + bne _021EEB82 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + sub r5, r7, #1 + add r0, r7, r2 + sub r4, r0, #1 + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0xc] + cmp r5, #0 + blt _021EEB58 + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEB5E +_021EEB58: + mov r5, #0 + mvn r5, r5 + add r4, r5, #0 +_021EEB5E: + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r2 + cmp r0, r4 + ble _021EEB7C + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE34 + cmp r0, #0 + bne _021EEB86 +_021EEB7C: + mov r4, #0 + mvn r4, r4 + b _021EEB86 +_021EEB82: + bl ErrorHandling +_021EEB86: + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + ldr r0, [sp, #8] + lsl r2, r2, #0x18 + str r0, [sp] + lsl r3, r3, #0x18 + add r0, r5, #0 + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + str r6, [sp, #4] + bl MOD05_021EE8CC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EEBA4: + mov r0, #0 + mov r1, #2 + mov r2, #1 + mov r3, #3 + str r6, [sp] + bl MOD05_021EE9D4 + add r0, r6, #0 + add r0, #0xad + ldrb r0, [r0] + cmp r0, #0 + bne _021EEC12 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + add r5, r7, #1 + sub r0, r7, r2 + add r4, r0, #1 + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r2 + cmp r0, r5 + ble _021EEBE8 + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEBEE +_021EEBE8: + mov r5, #0 + mvn r5, r5 + add r4, r5, #0 +_021EEBEE: + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r2 + cmp r0, r4 + ble _021EEC0C + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE34 + cmp r0, #0 + bne _021EEC62 +_021EEC0C: + mov r4, #0 + mvn r4, r4 + b _021EEC62 +_021EEC12: + cmp r0, #2 + bne _021EEC62 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + add r5, r7, #1 + add r0, r7, r2 + add r4, r0, #1 + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r2 + cmp r0, r5 + ble _021EEC42 + add r0, r5, #0 + add r1, r7, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EEC48 +_021EEC42: + mov r5, #0 + mvn r5, r5 + add r4, r5, #0 +_021EEC48: + cmp r4, #0 + blt _021EEC5E + add r2, r6, #0 + add r2, #0xc0 + ldr r2, [r2] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE34 + cmp r0, #0 + bne _021EEC62 +_021EEC5E: + mov r4, #0 + mvn r4, r4 +_021EEC62: + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + ldr r0, [sp, #8] + lsl r2, r2, #0x18 + str r0, [sp] + lsl r3, r3, #0x18 + add r0, r5, #0 + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + str r6, [sp, #4] + bl MOD05_021EE8CC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EEC80: + mov r0, #0 + mov r1, #1 + mov r2, #2 + mov r3, #3 + str r6, [sp] + bl MOD05_021EE9D4 + add r0, r6, #0 + add r0, #0xad + ldrb r0, [r0] + cmp r0, #0 + bne _021EECD0 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + mov r0, #3 + str r0, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r5, r7, r2 + mul r0, r2 + sub r4, r5, #1 + cmp r0, r5 + bgt _021EECBE + ldr r0, [sp, #0xc] + sub r5, r0, #3 + add r4, r5, #0 + b _021EED14 +_021EECBE: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EED14 + mov r4, #0 + mvn r4, r4 + b _021EED14 +_021EECD0: + cmp r0, #1 + bne _021EED10 + add r0, r6, #0 + add r0, #0xc0 + ldr r2, [r0] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, #3 + str r0, [sp, #0xc] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r5, r7, r2 + mul r0, r2 + add r4, r5, #1 + cmp r0, r5 + bgt _021EECFA + ldr r0, [sp, #0xc] + sub r5, r0, #4 + add r4, r5, #0 + b _021EED14 +_021EECFA: + cmp r0, r4 + ble _021EED0A + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EED14 +_021EED0A: + mov r4, #0 + mvn r4, r4 + b _021EED14 +_021EED10: + bl ErrorHandling +_021EED14: + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + ldr r0, [sp, #8] + lsl r2, r2, #0x18 + str r0, [sp] + lsl r3, r3, #0x18 + add r0, r5, #0 + add r1, r4, #0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + str r6, [sp, #4] + bl MOD05_021EE8CC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_021EED32: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EED3C +MOD05_021EED3C: ; 0x021EED3C + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r5, r1, #0 + add r4, r5, #0 + lsl r6, r0, #2 + mov r0, #0x86 + add r3, sp, #0x38 + mov r1, #0 + str r1, [r3] + str r1, [r3, #4] + str r2, [sp, #4] + add r2, r5, #0 + add r4, #0x90 + str r1, [r3, #8] + add r2, #0xbc + ldr r1, [r4, r6] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + ldr r2, [r2] + bl MOD05_021EF300 + ldr r1, [r4, r6] + ldr r0, _021EEDD4 ; =0x00000864 + ldr r0, [r1, r0] + cmp r0, #1 + bne _021EEDA6 + ldr r3, _021EEDD8 ; =0x021F8B14 + add r2, sp, #0x2c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _021EEDDC ; =0x021F8B20 + str r0, [r2] + add r2, sp, #8 + mov r7, #4 +_021EED88: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r7, r7, #1 + bne _021EED88 + ldr r0, [r3] + add r3, sp, #0x2c + str r0, [r2] + mov r0, #2 + ldr r1, [r4, r6] + lsl r0, r0, #0xa + add r0, r1, r0 + add r1, sp, #0x38 + add r2, sp, #8 + bl FUN_0201B26C +_021EEDA6: + ldr r4, [r4, r6] + ldr r0, _021EEDD4 ; =0x00000864 + ldr r0, [r4, r0] + cmp r0, #1 + bne _021EEDCE + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + bl MOD05_021F4CA8 + add r2, r0, #0 + ldr r0, _021EEDE0 ; =0x00000868 + add r5, #0xb8 + ldr r0, [r4, r0] + ldr r3, [sp, #4] + str r0, [sp] + ldr r1, [r5] + add r0, sp, #0x38 + bl MOD05_021E7DD8 +_021EEDCE: + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_021EEDD4: .word 0x00000864 +_021EEDD8: .word 0x021F8B14 +_021EEDDC: .word 0x021F8B20 +_021EEDE0: .word 0x00000868 + + thumb_func_start MOD05_021EEDE4 +MOD05_021EEDE4: ; 0x021EEDE4 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r1, #0 + add r6, r0, #0 + add r1, r7, #0 + bl _u32_div_f + add r4, r1, #0 + add r0, r6, #0 + add r1, r7, #0 + bl _u32_div_f + lsr r0, r0, #5 + add r1, r0, #0 + lsr r2, r4, #5 + mul r1, r5 + add r0, r2, r1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EEE08 +MOD05_021EEE08: ; 0x021EEE08 + mul r2, r1 + add r0, r0, r2 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EEE10 +MOD05_021EEE10: ; 0x021EEE10 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + add r5, r1, #0 + add r6, r0, #0 + add r1, r7, #0 + bl _u32_div_f + add r4, r1, #0 + add r0, r6, #0 + add r1, r7, #0 + bl _u32_div_f + lsr r0, r0, #5 + add r1, r0, #0 + lsr r2, r4, #5 + mul r1, r5 + add r0, r2, r1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EEE34 +MOD05_021EEE34: ; 0x021EEE34 + push {r3, lr} + cmp r0, #0 + bne _021EEE3E + mov r0, #3 + pop {r3, pc} +_021EEE3E: + cmp r0, #1 + bne _021EEE46 + mov r0, #2 + pop {r3, pc} +_021EEE46: + cmp r0, #2 + bne _021EEE4E + mov r0, #1 + pop {r3, pc} +_021EEE4E: + cmp r0, #3 + bne _021EEE56 + mov r0, #0 + pop {r3, pc} +_021EEE56: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EEE60 +MOD05_021EEE60: ; 0x021EEE60 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + cmp r0, #4 + bhi _021EEEC0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EEE76: ; jump table + .short _021EEEC0 - _021EEE76 - 2 ; case 0 + .short _021EEE80 - _021EEE76 - 2 ; case 1 + .short _021EEE96 - _021EEE76 - 2 ; case 2 + .short _021EEEA4 - _021EEE76 - 2 ; case 3 + .short _021EEEB8 - _021EEE76 - 2 ; case 4 +_021EEE80: + add r0, r4, #0 + add r1, r5, #0 + bl _s32_div_f + add r0, r1, #1 + cmp r0, r5 + blt _021EEE92 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021EEE92: + add r0, r4, #1 + pop {r3, r4, r5, pc} +_021EEE96: + lsl r1, r1, #5 + add r0, r4, r5 + mul r1, r5 + cmp r0, r1 + blt _021EEEC6 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021EEEA4: + add r0, r4, #0 + add r1, r5, #0 + bl _s32_div_f + sub r0, r1, #1 + bpl _021EEEB4 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021EEEB4: + sub r0, r4, #1 + pop {r3, r4, r5, pc} +_021EEEB8: + sub r0, r4, r5 + bpl _021EEEC6 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021EEEC0: + bl ErrorHandling + mov r0, #0 +_021EEEC6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021EEEC8 +MOD05_021EEEC8: ; 0x021EEEC8 + cmp r0, #4 + bhi _021EEF00 + add r2, r0, r0 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_021EEED8: ; jump table + .short _021EEF00 - _021EEED8 - 2 ; case 0 + .short _021EEEFA - _021EEED8 - 2 ; case 1 + .short _021EEEEA - _021EEED8 - 2 ; case 2 + .short _021EEEF2 - _021EEED8 - 2 ; case 3 + .short _021EEEE2 - _021EEED8 - 2 ; case 4 +_021EEEE2: + sub r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021EEEEA: + add r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021EEEF2: + sub r0, r1, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021EEEFA: + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 +_021EEF00: + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EEF04 +MOD05_021EEF04: ; 0x021EEF04 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + bl MOD05_021EEEC8 + cmp r5, r0 + bge _021EEF36 + sub r0, r0, r5 + cmp r0, #1 + bne _021EEF22 + ldrb r0, [r4] + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + b _021EEF62 +_021EEF22: + cmp r0, #2 + bne _021EEF30 + ldrb r0, [r4] + sub r0, r0, #2 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + b _021EEF62 +_021EEF30: + bl ErrorHandling + b _021EEF62 +_021EEF36: + cmp r5, r0 + ble _021EEF5E + sub r0, r5, r0 + cmp r0, #1 + bne _021EEF4A + ldrb r0, [r4] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + b _021EEF62 +_021EEF4A: + cmp r0, #2 + bne _021EEF58 + ldrb r0, [r4] + add r0, r0, #2 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + b _021EEF62 +_021EEF58: + bl ErrorHandling + b _021EEF62 +_021EEF5E: + bl ErrorHandling +_021EEF62: + strb r6, [r4] + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EEF68 +MOD05_021EEF68: ; 0x021EEF68 + push {r3, lr} + cmp r0, #4 + bhi _021EEF94 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EEF7A: ; jump table + .short _021EEF94 - _021EEF7A - 2 ; case 0 + .short _021EEF8C - _021EEF7A - 2 ; case 1 + .short _021EEF88 - _021EEF7A - 2 ; case 2 + .short _021EEF90 - _021EEF7A - 2 ; case 3 + .short _021EEF84 - _021EEF7A - 2 ; case 4 +_021EEF84: + mov r0, #2 + pop {r3, pc} +_021EEF88: + mov r0, #4 + pop {r3, pc} +_021EEF8C: + mov r0, #3 + pop {r3, pc} +_021EEF90: + mov r0, #1 + pop {r3, pc} +_021EEF94: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD05_021EEF9C +MOD05_021EEF9C: ; 0x021EEF9C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + add r7, r2, #0 + mov r4, #0 +_021EEFA6: + ldr r0, [r5, #0x2c] + cmp r0, #1 + bne _021EEFC2 + add r0, r6, #0 + bl MOD05_021EEF68 + add r1, r5, #0 + add r1, #0x30 + ldrb r1, [r1] + cmp r1, r0 + bne _021EEFC2 + strb r4, [r7] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021EEFC2: + add r4, r4, #1 + add r5, #0x30 + cmp r4, #2 + blt _021EEFA6 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EEFD0 +MOD05_021EEFD0: ; 0x021EEFD0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0xa1 + ldrb r1, [r0] + mov r0, #0x30 + add r4, r5, #0 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x2c] + add r4, #0x64 + cmp r0, #0 + beq _021EEFEC + bl ErrorHandling +_021EEFEC: + add r1, r5, #0 + add r1, #0xa1 + ldrb r2, [r1] + mov r1, #0x30 + mov r0, #1 + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + add r3, r5, #0 + str r0, [r2, #0x2c] + add r3, #0xa1 + ldrb r3, [r3] + ldrb r2, [r4, #0xc] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + add r3, #0x30 + strb r2, [r3] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldr r2, [r4, #0x10] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + str r2, [r3, #0x1c] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldr r2, [r4, #0x14] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + str r2, [r3, #0x20] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldrb r2, [r4, #0x18] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + add r3, #0x24 + strb r2, [r3] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldrb r2, [r4, #0x19] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + add r3, #0x25 + strb r2, [r3] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + ldr r2, [r4] + add r6, r3, #0 + mul r6, r1 + add r3, r5, r6 + str r2, [r3, #4] + add r2, r5, #0 + add r2, #0xa1 + ldrb r2, [r2] + ldr r4, [r4, #4] + add r3, r2, #0 + mul r3, r1 + add r2, r5, r3 + add r3, r5, #0 + str r4, [r2, #8] + add r3, #0xa1 + ldrb r3, [r3] + mov r2, #0 + add r4, r3, #0 + mul r4, r1 + add r3, r5, r4 + add r3, #0x26 + strb r2, [r3] + add r3, r5, #0 + add r3, #0xa1 + ldrb r3, [r3] + mul r1, r3 + add r1, r5, r1 + str r2, [r1, #0x28] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EF094 +MOD05_021EF094: ; 0x021EF094 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0xa0 + ldrb r0, [r0] + add r4, r5, #0 + add r4, #0x64 + cmp r0, #2 + blo _021EF0A8 + bl ErrorHandling +_021EF0A8: + add r0, r5, #0 + bl MOD05_021EEFD0 + cmp r0, #1 + beq _021EF0B6 + bl ErrorHandling +_021EF0B6: + mov r0, #0x86 + ldr r2, [r4, #0x10] + ldr r1, [r4] + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r2, [r4, #0x14] + ldr r1, [r4, #4] + str r2, [r1, r0] + add r0, r5, #0 + add r0, #0xa0 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0xa0 + strb r1, [r0] + add r0, r5, #0 + add r0, #0xa1 + ldrb r0, [r0] + add r5, #0xa1 + add r0, r0, #1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + strb r0, [r5] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF0F0 +MOD05_021EF0F0: ; 0x021EF0F0 + add r1, r0, #0 + add r1, #0xa2 + ldrb r2, [r1] + mov r1, #0x30 + mul r1, r2 + add r0, r0, r1 + ldr r0, [r0, #0x28] + bx lr + + thumb_func_start MOD05_021EF100 +MOD05_021EF100: ; 0x021EF100 + mov r3, #0 + add r2, r3, #0 +_021EF104: + lsl r1, r3, #2 + add r1, r0, r1 + add r1, #0x80 + str r2, [r1] + add r1, r3, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #4 + blo _021EF104 + bx lr + + thumb_func_start MOD05_021EF118 +MOD05_021EF118: ; 0x021EF118 + cmp r0, #4 + bhi _021EF168 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EF128: ; jump table + .short _021EF168 - _021EF128 - 2 ; case 0 + .short _021EF140 - _021EF128 - 2 ; case 1 + .short _021EF14E - _021EF128 - 2 ; case 2 + .short _021EF15C - _021EF128 - 2 ; case 3 + .short _021EF132 - _021EF128 - 2 ; case 4 +_021EF132: + add r0, r1, #0 + mov r2, #1 + add r0, #0x88 + str r2, [r0] + add r1, #0x8c + str r2, [r1] + bx lr +_021EF140: + add r0, r1, #0 + mov r2, #1 + add r0, #0x80 + str r2, [r0] + add r1, #0x88 + str r2, [r1] + bx lr +_021EF14E: + add r0, r1, #0 + mov r2, #1 + add r0, #0x80 + str r2, [r0] + add r1, #0x84 + str r2, [r1] + bx lr +_021EF15C: + add r0, r1, #0 + mov r2, #1 + add r0, #0x84 + str r2, [r0] + add r1, #0x8c + str r2, [r1] +_021EF168: + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF16C +MOD05_021EF16C: ; 0x021EF16C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r3, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD05_021EDFBC + add r2, r5, #0 + add r3, r5, #0 + str r4, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + add r2, #0xc0 + add r3, #0xc4 + ldr r2, [r2] + ldr r3, [r3] + add r0, r6, #0 + add r1, r7, #0 + bl MOD05_021EDED0 + mov r6, #0 + add r7, sp, #0x10 +_021EF19A: + lsl r4, r6, #2 + bl MOD05_021F4328 + add r1, r5, r4 + add r1, #0x90 + ldr r2, [r1] + ldr r1, _021EF1F8 ; =0x0000085C + str r0, [r2, r1] + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF1F8 ; =0x0000085C + ldr r0, [r1, r0] + bl MOD05_021F4454 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + bl MOD05_021F4CA8 + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + add r2, r5, #0 + str r1, [sp] + add r1, r5, #0 + add r1, #0xc4 + ldr r1, [r1] + add r3, r5, #0 + str r1, [sp, #4] + str r0, [sp, #8] + str r5, [sp, #0xc] + add r2, #0xb8 + add r3, #0xbc + ldr r0, [r7, r4] + ldr r2, [r2] + ldr r3, [r3] + add r1, r6, #0 + bl MOD05_021EE2A4 + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #4 + blo _021EF19A + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EF1F8: .word 0x0000085C + + thumb_func_start MOD05_021EF1FC +MOD05_021EF1FC: ; 0x021EF1FC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r3, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD05_021EE050 + add r2, r5, #0 + add r3, r5, #0 + str r4, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + add r2, #0xc0 + add r3, #0xc4 + ldr r2, [r2] + ldr r3, [r3] + add r0, r6, #0 + add r1, r7, #0 + bl MOD05_021EDED0 + mov r4, #0 + add r7, r4, #0 +_021EF22A: + lsl r6, r4, #2 + add r0, r5, r6 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF278 ; =0x0000085C + str r7, [r1, r0] + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + bl MOD05_021F4CA8 + add r1, r5, #0 + add r1, #0xc0 + ldr r1, [r1] + add r2, r5, #0 + str r1, [sp] + add r1, r5, #0 + add r1, #0xc4 + ldr r1, [r1] + add r3, r5, #0 + str r1, [sp, #4] + str r0, [sp, #8] + str r5, [sp, #0xc] + add r0, sp, #0x10 + add r2, #0xb8 + add r3, #0xbc + ldr r0, [r0, r6] + ldr r2, [r2] + ldr r3, [r3] + add r1, r4, #0 + bl MOD05_021EE38C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021EF22A + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EF278: .word 0x0000085C + + thumb_func_start MOD05_021EF27C +MOD05_021EF27C: ; 0x021EF27C + push {r4, lr} + add r1, r0, #0 + mov r3, #0 + add r1, #0xa2 + strb r3, [r1] + add r1, r0, #0 + add r1, #0xa1 + strb r3, [r1] + add r1, r0, #0 + add r1, #0xa0 + strb r3, [r1] + add r4, r0, #0 + add r2, r3, #0 + mov r1, #1 +_021EF298: + str r2, [r4, #0x2c] + str r1, [r4, #0x28] + add r3, r3, #1 + add r4, #0x30 + cmp r3, #2 + blt _021EF298 + bl MOD05_021EF100 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF2AC +MOD05_021EF2AC: ; 0x021EF2AC + push {r4, lr} + add r4, r2, #0 + add r2, #0xc8 + ldr r2, [r2] + bl MOD05_021EEE08 + add r1, r4, #0 + add r1, #0xa8 + str r0, [r1] + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0xc8 + ldr r0, [r0] + ldr r1, [r1] + bl MOD05_021EF620 + add r1, r4, #0 + add r1, #0xad + strb r0, [r1] + add r0, r4, #0 + add r0, #0xad + ldrb r0, [r0] + bl MOD05_021EEE34 + add r1, r4, #0 + add r1, #0xac + strb r0, [r1] + add r0, r4, #0 + add r1, r4, #0 + add r2, r4, #0 + add r0, #0xa8 + add r1, #0xc0 + add r2, #0xc8 + ldr r0, [r0] + ldr r1, [r1] + ldr r2, [r2] + bl MOD05_021EEE10 + add r4, #0xa4 + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD05_021EF300 +MOD05_021EF300: ; 0x021EF300 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + mov r2, #1 + add r5, r3, #0 + lsl r2, r2, #0x14 + str r2, [r5] + str r2, [r5, #8] + mov r2, #0 + add r4, r0, #0 + mvn r2, r2 + str r1, [sp, #4] + cmp r4, r2 + beq _021EF362 + bl _s32_div_f + lsl r0, r1, #0x10 + lsr r6, r0, #0x10 + ldr r1, [sp, #4] + add r0, r4, #0 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r7, #0 + bl FUN_020344FC + str r0, [sp, #8] + add r0, r7, #0 + bl FUN_02034574 + add r1, r0, #0 + ldr r0, [sp, #8] + add r2, r6, #0 + str r0, [sp] + add r0, r7, #0 + add r3, r4, #0 + bl FUN_02034578 + lsl r0, r0, #0xf + str r0, [r5, #4] + ldr r1, [r5] + lsl r0, r6, #0x15 + add r0, r1, r0 + str r0, [r5] + ldr r1, [r5, #8] + lsl r0, r4, #0x15 + add r0, r1, r0 + str r0, [r5, #8] +_021EF362: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF368 +MOD05_021EF368: ; 0x021EF368 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp] + mov r1, #0x41 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + str r2, [sp, #4] + add r6, r3, #0 + bl FUN_02016998 + mov r2, #0x41 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + cmp r6, #0 + bne _021EF39A + add r0, r4, #0 + ldr r1, _021EF42C ; =0x021F8B04 + add r0, #0xf4 + str r1, [r0] + mov r7, #1 + b _021EF3AE +_021EF39A: + cmp r6, #1 + bne _021EF3AA + add r0, r4, #0 + ldr r1, _021EF430 ; =0x021F8B0C + add r0, #0xf4 + str r1, [r0] + mov r7, #0 + b _021EF3AE +_021EF3AA: + bl ErrorHandling +_021EF3AE: + add r0, r7, #0 + bl MOD05_021F3BC0 + str r0, [r4] + add r1, r4, #0 + ldr r0, [sp] + add r1, #0xb8 + str r0, [r1] + add r0, r4, #0 + add r0, #0xbc + str r5, [r0] + add r0, r5, #0 + bl FUN_020344FC + add r1, r4, #0 + add r1, #0xc0 + str r0, [r1] + add r0, r5, #0 + bl FUN_0203450C + add r1, r4, #0 + add r1, #0xc4 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + lsl r1, r0, #5 + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + add r1, r4, #0 + ldr r0, [sp, #4] + add r1, #0xf0 + str r0, [r1] + add r0, r4, #0 + mov r1, #1 + add r0, #0xec + str r1, [r0] + add r0, r4, #0 + bl MOD05_021EF27C + add r0, r4, #0 + mov r1, #0 + add r0, #0xb0 + str r1, [r0] + add r0, r4, #0 + mov r1, #2 + add r0, #0xb4 + str r1, [r0] + mov r0, #0x43 + mov r1, #4 + bl FUN_02006670 + add r1, r4, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r4, #0 + mov r1, #0 + add r0, #0xfc + str r1, [r0] + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EF42C: .word 0x021F8B04 +_021EF430: .word 0x021F8B0C + + thumb_func_start MOD05_021EF434 +MOD05_021EF434: ; 0x021EF434 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r5, #0 + add r6, #0xf4 + add r3, r5, #0 + ldr r6, [r6] + add r3, #0xc8 + ldr r3, [r3] + ldr r6, [r6] + add r4, r1, #0 + add r7, r2, #0 + blx r6 + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD05_021EF2AC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021EF458 +MOD05_021EF458: ; 0x021EF458 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r2, r5, #0 + add r3, r5, #0 + add r1, #0xc4 + add r2, #0xc8 + add r3, #0xa8 + ldr r1, [r1] + ldr r2, [r2] + ldr r3, [r3] + add r6, r0, #0 + bl MOD05_021EEE60 + add r1, r5, #0 + add r2, r5, #0 + add r1, #0xc0 + add r2, #0xc8 + ldr r1, [r1] + ldr r2, [r2] + add r7, r0, #0 + bl MOD05_021EEDE4 + add r1, r5, #0 + add r1, #0xc8 + add r4, r0, #0 + ldr r1, [r1] + add r0, r7, #0 + bl MOD05_021EF620 + add r1, r5, #0 + add r1, #0xa4 + ldr r1, [r1] + cmp r1, r4 + bne _021EF4C0 + add r1, r5, #0 + add r1, #0xad + ldrb r1, [r1] + cmp r1, r0 + beq _021EF4C0 + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD05_021EEA0C + add r1, r5, #0 + add r1, #0xad + add r5, #0xac + ldrb r1, [r1] + add r0, r6, #0 + add r2, r5, #0 + bl MOD05_021EEF04 +_021EF4C0: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF4C4 +MOD05_021EF4C4: ; 0x021EF4C4 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r5, r0, #0 + add r6, r1, #0 + sub r7, r4, #1 +_021EF4CE: + lsl r0, r4, #2 + add r0, r5, r0 + add r0, #0x90 + ldr r1, [r0] + mov r0, #0x86 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, r7 + beq _021EF4EA + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD05_021EED3C +_021EF4EA: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021EF4CE + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF4F8 +MOD05_021EF4F8: ; 0x021EF4F8 + push {r3, r4} + asr r4, r0, #0xf + lsr r4, r4, #0x10 + add r4, r0, r4 + asr r0, r4, #0x10 + str r0, [r2] + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + str r0, [r3] + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF514 +MOD05_021EF514: ; 0x021EF514 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_020162FC + bl FUN_020AF6A4 + bl FUN_020AFA30 + mov r4, #0 + add r6, r5, #4 + mov r7, #0x30 +_021EF52A: + add r0, r4, #0 + mul r0, r7 + add r0, r6, r0 + bl MOD05_021EDEAC + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #2 + blo _021EF52A + mov r6, #0 + add r7, r6, #0 +_021EF542: + lsl r4, r6, #2 + add r0, r5, r4 + add r0, #0x90 + ldr r2, [r0] + ldr r0, _021EF59C ; =0x00000864 + mov r1, #0 + str r1, [r2, r0] + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF5A0 ; =0x0000085C + ldr r0, [r1, r0] + bl MOD05_021F43C0 + add r0, r5, r4 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF5A4 ; =0x00000868 + ldr r0, [r1, r0] + bl MOD05_021E7C14 + add r0, r5, r4 + add r0, #0x90 + ldr r0, [r0] + bl FUN_02016A18 + add r0, r5, r4 + add r0, #0x90 + str r7, [r0] + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #4 + blo _021EF542 + add r0, r5, #0 + mov r1, #3 + add r0, #0xb4 + str r1, [r0] + add r0, r5, #0 + mov r1, #1 + add r0, #0xb0 + str r1, [r0] + add r5, #0xec + str r7, [r5] + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021EF59C: .word 0x00000864 +_021EF5A0: .word 0x0000085C +_021EF5A4: .word 0x00000868 + + thumb_func_start MOD05_021EF5A8 +MOD05_021EF5A8: ; 0x021EF5A8 + push {r4, lr} + add r4, r0, #0 + add r0, #0xf8 + ldr r0, [r0] + bl FUN_020066F4 + ldr r0, [r4] + bl MOD05_021F3C30 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF5C4 +MOD05_021EF5C4: ; 0x021EF5C4 + add r1, r0, #0 + add r1, #0xb0 + ldr r1, [r1] + cmp r1, #1 + bne _021EF5DA + add r0, #0xa0 + ldrb r0, [r0] + cmp r0, #0 + bne _021EF5DA + mov r0, #1 + bx lr +_021EF5DA: + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF5E0 +MOD05_021EF5E0: ; 0x021EF5E0 + push {r4, r5} + add r5, r0, #0 + add r4, r1, #0 + add r2, r4, #0 + add r3, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0xcc + stmia r2!, {r0, r1} + ldr r0, [r3] + add r4, #0xd8 + str r0, [r2] + str r5, [r4] + pop {r4, r5} + bx lr + + thumb_func_start MOD05_021EF5FC +MOD05_021EF5FC: ; 0x021EF5FC + mov r1, #0 + add r0, #0xd8 + str r1, [r0] + bx lr + + thumb_func_start MOD05_021EF604 +MOD05_021EF604: ; 0x021EF604 + lsl r0, r0, #2 + add r0, r1, r0 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF614 ; =0x00000868 + ldr r0, [r1, r0] + str r0, [r2] + bx lr + .balign 4, 0 +_021EF614: .word 0x00000868 + + thumb_func_start MOD05_021EF618 +MOD05_021EF618: ; 0x021EF618 + add r0, #0xac + ldrb r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF620 +MOD05_021EF620: ; 0x021EF620 + push {r4, lr} + add r4, r0, #0 + bl _u32_div_f + lsr r2, r0, #0x1f + lsl r1, r0, #0x1b + sub r1, r1, r2 + mov r0, #0x1b + ror r1, r0 + mov r0, #0x1f + and r0, r4 + add r1, r2, r1 + cmp r0, #0x10 + bge _021EF648 + cmp r1, #0x10 + bge _021EF644 + mov r0, #0 + pop {r4, pc} +_021EF644: + mov r0, #2 + pop {r4, pc} +_021EF648: + cmp r1, #0x10 + bge _021EF650 + mov r0, #1 + pop {r4, pc} +_021EF650: + mov r0, #3 + pop {r4, pc} + + thumb_func_start MOD05_021EF654 +MOD05_021EF654: ; 0x021EF654 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + cmp r0, r5 + bne _021EF66A + add r4, #0xac + ldrb r0, [r4] + pop {r3, r4, r5, pc} +_021EF66A: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _021EF676 + bl ErrorHandling +_021EF676: + add r0, r4, #0 + add r0, #0xac + ldrb r1, [r0] + cmp r1, #3 + bls _021EF682 + b _021EF820 +_021EF682: + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EF68E: ; jump table + .short _021EF696 - _021EF68E - 2 ; case 0 + .short _021EF6F8 - _021EF68E - 2 ; case 1 + .short _021EF75C - _021EF68E - 2 ; case 2 + .short _021EF7BE - _021EF68E - 2 ; case 3 +_021EF696: + add r0, r4, #0 + add r0, #0xa4 + add r2, r4, #0 + ldr r0, [r0] + add r2, #0xc0 + ldr r2, [r2] + sub r3, r5, r0 + cmp r2, r3 + bne _021EF6B0 + add r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF6B0: + cmp r3, #1 + bne _021EF6CA + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + beq _021EF6CA + add r4, #0xac + ldrb r0, [r4] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF6CA: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa4 + add r1, #0xc0 + ldr r2, [r1] + ldr r0, [r0] + add r3, r2, #1 + sub r1, r5, r0 + cmp r3, r1 + bne _021EF6F4 + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EF6F4 + add r4, #0xac + ldrb r0, [r4] + add r0, r0, #3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF6F4: + mov r0, #4 + pop {r3, r4, r5, pc} +_021EF6F8: + add r0, r4, #0 + add r0, #0xa4 + add r2, r4, #0 + ldr r0, [r0] + add r2, #0xc0 + ldr r2, [r2] + sub r3, r5, r0 + cmp r2, r3 + bne _021EF712 + add r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF712: + sub r1, r0, r5 + cmp r1, #1 + bne _021EF72E + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + beq _021EF72E + add r4, #0xac + ldrb r0, [r4] + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF72E: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa4 + add r1, #0xc0 + ldr r2, [r1] + ldr r0, [r0] + sub r3, r2, #1 + sub r1, r5, r0 + cmp r3, r1 + bne _021EF758 + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EF758 + add r4, #0xac + ldrb r0, [r4] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF758: + mov r0, #4 + pop {r3, r4, r5, pc} +_021EF75C: + add r0, r4, #0 + add r0, #0xa4 + add r2, r4, #0 + ldr r0, [r0] + add r2, #0xc0 + ldr r2, [r2] + sub r3, r0, r5 + cmp r2, r3 + bne _021EF776 + sub r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF776: + sub r1, r2, #1 + cmp r1, r3 + bne _021EF792 + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EF792 + add r4, #0xac + ldrb r0, [r4] + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF792: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + sub r1, r5, r0 + cmp r1, #1 + bne _021EF7BA + add r2, r4, #0 + add r2, #0xc0 + ldr r2, [r2] + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + beq _021EF7BA + add r4, #0xac + ldrb r0, [r4] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF7BA: + mov r0, #4 + pop {r3, r4, r5, pc} +_021EF7BE: + add r0, r4, #0 + add r0, #0xa4 + add r2, r4, #0 + ldr r0, [r0] + add r2, #0xc0 + ldr r2, [r2] + sub r3, r0, r5 + cmp r2, r3 + bne _021EF7D8 + sub r0, r1, #2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF7D8: + add r1, r2, #1 + cmp r1, r3 + bne _021EF7F4 + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + bne _021EF7F4 + add r4, #0xac + ldrb r0, [r4] + sub r0, r0, #3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF7F4: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + sub r1, r0, r5 + cmp r1, #1 + bne _021EF81C + add r2, r4, #0 + add r2, #0xc0 + ldr r2, [r2] + add r1, r5, #0 + bl MOD05_021EDE58 + cmp r0, #0 + beq _021EF81C + add r4, #0xac + ldrb r0, [r4] + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_021EF81C: + mov r0, #4 + pop {r3, r4, r5, pc} +_021EF820: + mov r0, #4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021EF824 +MOD05_021EF824: ; 0x021EF824 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #4 + blo _021EF832 + bl ErrorHandling +_021EF832: + lsl r0, r5, #2 + add r0, r4, r0 + add r0, #0x90 + ldr r1, [r0] + mov r0, #0x86 + lsl r0, r0, #4 + ldr r0, [r1, r0] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF844 +MOD05_021EF844: ; 0x021EF844 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + asr r2, r6, #4 + add r5, r0, #0 + lsr r2, r2, #0x1b + add r2, r6, r2 + add r4, r1, #0 + add r0, #0xc0 + ldr r1, [r0] + asr r0, r4, #4 + lsr r0, r0, #0x1b + add r0, r4, r0 + asr r2, r2, #5 + str r3, [sp] + add r3, r2, #0 + asr r0, r0, #5 + mul r3, r1 + add r7, r0, r3 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r1 + cmp r7, r0 + blo _021EF882 + mov r0, #1 + bl FUN_020336A0 + cmp r0, #0 + beq _021EF882 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021EF882: + add r0, r5, #0 + add r0, #0xc0 + ldr r1, [r0] + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mul r0, r1 + cmp r7, r0 + blo _021EF898 + bl ErrorHandling +_021EF898: + add r0, r5, #0 + add r0, #0xc8 + ldr r1, [r0] + add r0, r6, #0 + mul r0, r1 + add r0, r4, r0 + bl MOD05_021EF620 + add r1, r0, #0 + add r0, r7, #0 + add r2, r5, #0 + bl MOD05_021EF654 + ldr r1, [sp] + cmp r1, #0 + beq _021EF8BA + strb r0, [r1] +_021EF8BA: + cmp r0, #3 + bls _021EF8C2 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021EF8C2: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EF8C8 +MOD05_021EF8C8: ; 0x021EF8C8 + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0x90 + ldr r1, [r0] + ldr r0, _021EF8D8 ; =0x0000085C + ldr r0, [r1, r0] + bx lr + nop +_021EF8D8: .word 0x0000085C + + thumb_func_start MOD05_021EF8DC +MOD05_021EF8DC: ; 0x021EF8DC + lsl r1, r1, #2 + add r0, r0, r1 + add r0, #0x90 + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF8E8 +MOD05_021EF8E8: ; 0x021EF8E8 + add r3, r0, #0 + add r3, #0xfc + str r1, [r3] + mov r1, #1 + lsl r1, r1, #8 + str r2, [r0, r1] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021EF8F8 +MOD05_021EF8F8: ; 0x021EF8F8 + push {r3, lr} + bl FUN_0201B6C8 + mov r1, #1 + str r1, [r0, #0x1c] + pop {r3, pc} + + thumb_func_start MOD05_021EF904 +MOD05_021EF904: ; 0x021EF904 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x1c] + cmp r0, #1 + bne _021EF914 + mov r0, #5 + strb r0, [r4, #0x14] +_021EF914: + ldrb r0, [r4, #0x14] + cmp r0, #5 + bhi _021EF9FE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021EF926: ; jump table + .short _021EF932 - _021EF926 - 2 ; case 0 + .short _021EF962 - _021EF926 - 2 ; case 1 + .short _021EF998 - _021EF926 - 2 ; case 2 + .short _021EF9B6 - _021EF926 - 2 ; case 3 + .short _021EF9FE - _021EF926 - 2 ; case 4 + .short _021EF9EC - _021EF926 - 2 ; case 5 +_021EF932: + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #0xe + ldr r5, [r4, #4] + lsl r0, r0, #0xc + cmp r5, r0 + bgt _021EF944 + mov r0, #2 + b _021EF948 +_021EF944: + add r5, r0, #0 + mov r0, #1 +_021EF948: + strb r0, [r4, #0x14] + ldr r2, [r4, #0xc] + ldr r0, [r4] + ldr r3, [r2] + ldr r2, [r4, #0x24] + add r1, r5, #0 + add r2, r3, r2 + bl FUN_02006864 + ldr r0, [r4, #0x24] + add r0, r0, r5 + str r0, [r4, #0x24] + pop {r4, r5, r6, pc} +_021EF962: + ldr r2, [r4, #0x24] + ldr r0, [r4, #4] + sub r5, r0, r2 + mov r0, #0xe + lsl r0, r0, #0xc + cmp r5, r0 + ble _021EF976 + add r5, r0, #0 + mov r6, #0 + b _021EF978 +_021EF976: + mov r6, #1 +_021EF978: + ldr r3, [r4, #0xc] + ldr r0, [r4] + ldr r3, [r3] + add r1, r5, #0 + add r2, r3, r2 + bl FUN_02006864 + cmp r6, #0 + beq _021EF990 + mov r0, #2 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_021EF990: + ldr r0, [r4, #0x24] + add r0, r0, r5 + str r0, [r4, #0x24] + pop {r4, r5, r6, pc} +_021EF998: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021EF9B0 + bl FUN_0201B254 + cmp r0, #1 + bne _021EF9B0 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r0, [r0] + bl FUN_0201B3A8 +_021EF9B0: + mov r0, #3 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_021EF9B6: + ldr r0, [r4, #0xc] + ldr r0, [r0] + bl FUN_020BC13C + add r5, r0, #0 + ldrb r0, [r5, #9] + cmp r0, #1 + beq _021EF9CA + bl ErrorHandling +_021EF9CA: + ldrh r0, [r5, #0xe] + add r0, r5, r0 + ldr r0, [r0, #0xc] + add r5, r5, r0 + bne _021EF9D8 + bl ErrorHandling +_021EF9D8: + ldr r0, [r4, #8] + add r1, r5, #0 + bl FUN_020B80B4 + ldr r0, [r4, #0x18] + mov r1, #1 + str r1, [r0] + mov r0, #5 + strb r0, [r4, #0x14] + pop {r4, r5, r6, pc} +_021EF9EC: + ldr r0, [r4, #0x20] + mov r1, #0 + str r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_021EF9FE: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021EFA00 +MOD05_021EFA00: ; 0x021EFA00 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #4 + + thumb_func_start MOD05_021EFA08 +MOD05_021EFA08: ; 0x021EFA08 + mov r1, #0x28 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_020169D8 + add r1, r0, #0 + str r5, [r1] + str r4, [r1, #4] + str r6, [r1, #8] + ldr r0, [sp, #0x18] + str r7, [r1, #0xc] + str r0, [r1, #0x10] + mov r2, #0 + ldr r0, [sp, #0x1c] + strb r2, [r1, #0x14] + str r0, [r1, #0x18] + str r2, [r0] + ldr r0, [sp, #0x20] + str r0, [r1, #0x20] + str r2, [r1, #0x1c] + ldr r0, _021EFA3C ; =MOD05_021EF904 + mov r2, #1 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_021EFA3C: .word MOD05_021EF904 + + thumb_func_start MOD05_021EFA40 +MOD05_021EFA40: ; 0x021EFA40 + push {r3, r4, r5, lr} + add r4, r3, #0 + add r5, r2, #0 + ldr r2, [r4] + bl FUN_02006864 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _021EFA6A + bl FUN_0201B254 + cmp r0, #1 + bne _021EFA6A + ldr r0, [r4] + ldr r1, [sp, #0x10] + bl FUN_0201B3A8 + cmp r0, #0 + bne _021EFA6A + bl ErrorHandling +_021EFA6A: + ldr r0, [r4] + bl FUN_020BC13C + ldrb r0, [r0, #9] + cmp r0, #1 + beq _021EFA7A + bl ErrorHandling +_021EFA7A: + ldr r0, [r4] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r4, r0, r1 + bne _021EFA8E + bl ErrorHandling +_021EFA8E: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020B80B4 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EFA9C +MOD05_021EFA9C: ; 0x021EFA9C + push {r3, lr} + ldr r0, [r0, #4] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _021EFAAA + bl FUN_022524DC +_021EFAAA: + pop {r3, pc} + + thumb_func_start MOD05_021EFAAC +MOD05_021EFAAC: ; 0x021EFAAC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_0204C1A8 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_020462AC + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204BEC8 + cmp r0, #0 + beq _021EFAF8 + add r0, r6, #0 + bl FUN_0205F1E4 + cmp r0, #0 + bne _021EFAF8 + ldr r0, _021EFB0C ; =0x00000014 + mov r1, #2 + bl FUN_02005FDC + mov r0, #1 + bl FUN_0200A03C + str r0, [sp] + ldr r1, [r5, #4] + ldr r2, [r5, #0xc] + ldr r3, [r5, #8] + add r0, r5, #0 + add r1, #0x14 + bl FUN_02252448 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_021EFAF8: + ldr r0, _021EFB10 ; =0x00000013 + mov r1, #2 + bl FUN_02005FDC + ldr r0, [r5, #8] + bl FUN_02252440 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021EFB0C: .word 0x00000014 +_021EFB10: .word 0x00000013 + + thumb_func_start MOD05_021EFB14 +MOD05_021EFB14: ; 0x021EFB14 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_0204C1A8 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_020462AC + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204BEC8 + cmp r0, #0 + beq _021EFB46 + add r0, r6, #0 + bl FUN_0205F1E4 + cmp r0, #0 + bne _021EFB46 + ldr r0, [r5, #4] + ldr r0, [r0, #0x14] + bl FUN_022524BC + pop {r4, r5, r6, pc} +_021EFB46: + ldr r0, [r5, #8] + bl FUN_022524F4 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EFB50 +MOD05_021EFB50: ; 0x021EFB50 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_0204C1A8 + add r4, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_020462AC + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204BEC8 + cmp r0, #0 + beq _021EFB94 + add r0, r6, #0 + bl FUN_0205F1E4 + cmp r0, #0 + bne _021EFB94 + ldr r0, [r5, #4] + ldr r0, [r0, #0x14] + bl FUN_022524D0 + cmp r0, #0 + beq _021EFBA8 + ldr r0, [r5, #4] + mov r1, #0 + str r1, [r0, #0x14] + ldr r0, _021EFBAC ; =0x00000014 + bl FUN_02005F60 + mov r0, #1 + pop {r4, r5, r6, pc} +_021EFB94: + ldr r0, [r5, #8] + bl FUN_02252504 + cmp r0, #0 + beq _021EFBA8 + ldr r0, _021EFBB0 ; =0x00000013 + bl FUN_02005F60 + mov r0, #1 + pop {r4, r5, r6, pc} +_021EFBA8: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021EFBAC: .word 0x00000014 +_021EFBB0: .word 0x00000013 + + thumb_func_start MOD05_021EFBB4 +MOD05_021EFBB4: ; 0x021EFBB4 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021EFBC8 ; =0x00000013 + mov r1, #2 + bl FUN_02005FDC + ldr r0, [r4, #8] + bl FUN_02252440 + pop {r4, pc} + .balign 4, 0 +_021EFBC8: .word 0x00000013 + + thumb_func_start MOD05_021EFBCC +MOD05_021EFBCC: ; 0x021EFBCC + ldr r3, _021EFBD4 ; =FUN_022524F4 + ldr r0, [r0, #8] + bx r3 + nop +_021EFBD4: .word FUN_022524F4 + 1 + + thumb_func_start MOD05_021EFBD8 +MOD05_021EFBD8: ; 0x021EFBD8 + push {r3, lr} + ldr r0, [r0, #8] + bl FUN_02252504 + cmp r0, #0 + beq _021EFBEE + ldr r0, _021EFBF4 ; =0x00000013 + bl FUN_02005F60 + mov r0, #1 + pop {r3, pc} +_021EFBEE: + mov r0, #0 + pop {r3, pc} + nop +_021EFBF4: .word 0x00000013 + + thumb_func_start MOD05_021EFBF8 +MOD05_021EFBF8: ; 0x021EFBF8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x34] + bl FUN_020286EC + mov r1, #0 + bl FUN_0202838C + add r1, r4, #0 + ldr r0, [r4, #0x34] + add r1, #0x4c + mov r2, #4 + bl FUN_020339B4 + cmp r0, #0 + bne _021EFC20 + add sp, #8 + mov r0, #1 + pop {r4, pc} +_021EFC20: + add r0, r4, #0 + mov r1, #0 + add r0, #0x8c + str r1, [r0] + ldr r0, [r4, #0x34] + bl LoadPlayerDataAddress + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + ldr r2, _021EFC6C ; =0x000001E2 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xa + bl FUN_0200CD68 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4, #0x30] + ldr r2, _021EFC70 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #1 + str r0, [r4, #0x48] + mov r0, #0 + add sp, #8 + pop {r4, pc} + nop +_021EFC6C: .word 0x000001E2 +_021EFC70: .word 0x000003D9 + + thumb_func_start MOD05_021EFC74 +MOD05_021EFC74: ; 0x021EFC74 + push {r3, r4, r5, r6, lr} + sub sp, #4 + mov r1, #0 + add r6, r0, #0 + mvn r1, r1 + add r0, #0x8c + str r1, [r0] + mov r4, #0 + bl FUN_02030F20 + cmp r0, #0 + ble _021EFCB0 + add r5, r6, #0 +_021EFC8E: + ldr r0, [r5, #0x4c] + cmp r0, #2 + bne _021EFCA4 + add r0, r6, #0 + add r0, #0x8c + str r4, [r0] + lsl r0, r4, #2 + mov r1, #0 + add r0, r6, r0 + str r1, [r0, #0x4c] + b _021EFCB0 +_021EFCA4: + add r5, r5, #4 + add r4, r4, #1 + bl FUN_02030F20 + cmp r4, r0 + blt _021EFC8E +_021EFCB0: + add r0, r6, #0 + add r0, #0x8c + ldr r1, [r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _021EFCC4 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021EFCC4: + ldr r0, [r6, #0x34] + bl FUN_0206F158 + ldr r1, _021EFD3C ; =0x000001B5 + mov r2, #1 + mov r3, #4 + bl FUN_0206EE50 + cmp r0, #1 + bne _021EFCFE + add r0, r6, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r6, #0x38] + mov r1, #0 + bl FUN_0200ABC0 + add r0, r6, #0 + mov r1, #0x21 + bl MOD05_021F01EC + mov r0, #2 + str r0, [r6, #0x48] + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021EFCFE: + ldr r0, [r6, #0x34] + bl FUN_020286EC + add r4, r0, #0 + mov r5, #0 +_021EFD08: + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0202842C + cmp r0, #0 + bne _021EFD2A + mov r0, #0 + add r1, r6, #0 + str r0, [sp] + add r1, #0x8c + ldr r0, [r6, #0x34] + ldr r1, [r1] + add r2, r5, #0 + mov r3, #4 + bl FUN_02033A70 + b _021EFD30 +_021EFD2A: + add r5, r5, #1 + cmp r5, #0x20 + blt _021EFD08 +_021EFD30: + mov r0, #1 + str r0, [r6, #0x48] + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021EFD3C: .word 0x000001B5 + + thumb_func_start MOD05_021EFD40 +MOD05_021EFD40: ; 0x021EFD40 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021EFD6C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0x30] + ldr r1, _021EFD74 ; =0x021F8B44 + ldr r0, [r0, #8] + ldr r2, _021EFD78 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x44] + mov r0, #3 + str r0, [r4, #0x48] +_021EFD6C: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021EFD74: .word 0x021F8B44 +_021EFD78: .word 0x000003D9 + + thumb_func_start MOD05_021EFD7C +MOD05_021EFD7C: ; 0x021EFD7C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + ldr r0, [r6, #0x44] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021EFD98 + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021EFD98: + cmp r0, #0 + bne _021EFDE4 + ldr r0, [r6, #0x34] + bl FUN_020286EC + add r5, r0, #0 + mov r4, #0 +_021EFDA6: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202842C + cmp r0, #0 + bne _021EFDC8 + mov r0, #0 + add r1, r6, #0 + str r0, [sp] + add r1, #0x8c + ldr r0, [r6, #0x34] + ldr r1, [r1] + add r2, r4, #0 + mov r3, #4 + bl FUN_02033A70 + b _021EFDCE +_021EFDC8: + add r4, r4, #1 + cmp r4, #0x20 + blt _021EFDA6 +_021EFDCE: + cmp r4, #0x20 + bne _021EFDE4 + add r0, r6, #0 + mov r1, #0x22 + bl MOD05_021F01EC + mov r0, #4 + str r0, [r6, #0x48] + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_021EFDE4: + mov r0, #1 + str r0, [r6, #0x48] + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021EFDF0 +MOD05_021EFDF0: ; 0x021EFDF0 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021EFE1C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0x30] + ldr r1, _021EFE24 ; =0x021F8B44 + ldr r0, [r0, #8] + ldr r2, _021EFE28 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x44] + mov r0, #5 + str r0, [r4, #0x48] +_021EFE1C: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021EFE24: .word 0x021F8B44 +_021EFE28: .word 0x000003D9 + + thumb_func_start MOD05_021EFE2C +MOD05_021EFE2C: ; 0x021EFE2C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x44] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021EFE44 + mov r0, #0 + pop {r4, pc} +_021EFE44: + cmp r0, #0 + bne _021EFE4C + mov r0, #8 + b _021EFE6A +_021EFE4C: + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r4, #0x38] + mov r1, #0 + bl FUN_0200ABC0 + add r0, r4, #0 + mov r1, #0x23 + bl MOD05_021F01EC + mov r0, #6 +_021EFE6A: + str r0, [r4, #0x48] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021EFE70 +MOD05_021EFE70: ; 0x021EFE70 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021EFE9C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0x30] + ldr r1, _021EFEA4 ; =0x021F8B44 + ldr r0, [r0, #8] + ldr r2, _021EFEA8 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x44] + mov r0, #7 + str r0, [r4, #0x48] +_021EFE9C: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021EFEA4: .word 0x021F8B44 +_021EFEA8: .word 0x000003D9 + + thumb_func_start MOD05_021EFEAC +MOD05_021EFEAC: ; 0x021EFEAC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x44] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021EFEC4 + mov r0, #0 + pop {r4, pc} +_021EFEC4: + cmp r0, #0 + bne _021EFECC + mov r0, #0xc + b _021EFED6 +_021EFECC: + add r0, r4, #0 + mov r1, #0x22 + bl MOD05_021F01EC + mov r0, #4 +_021EFED6: + str r0, [r4, #0x48] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021EFEDC +MOD05_021EFEDC: ; 0x021EFEDC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + ldr r0, [r5, #0x34] + bl FUN_020286EC + add r6, r0, #0 + bl FUN_02028448 + add r7, r0, #0 + add r0, r7, #1 + mov r1, #4 + bl FUN_02012838 + str r0, [r5] + mov r0, #1 + str r0, [sp] + mov r0, #0xc + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _021EFFB8 ; =0x000002A1 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x30] + add r1, #0x20 + ldr r0, [r0, #8] + mov r2, #3 + mov r3, #0x13 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _021EFFBC ; =0x000003D9 + add r0, #0x20 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r4, #0 +_021EFF2E: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202842C + cmp r0, #0 + beq _021EFF54 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_020283A4 + add r1, r0, #0 + ldr r0, [r5, #8] + bl FUN_02021E28 + ldr r0, [r5] + ldr r1, [r5, #8] + add r2, r4, #0 + bl FUN_020128A0 +_021EFF54: + add r4, r4, #1 + cmp r4, #0x20 + blt _021EFF2E + mov r2, #0xb + add r3, r2, #0 + ldr r0, [r5] + ldr r1, [r5, #0x3c] + sub r3, #0xd + bl FUN_02012880 + ldr r4, _021EFFC0 ; =0x021F8B4C + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r1, r7, #1 + add r0, sp, #0x14 + strh r1, [r0, #0x10] + mov r1, #5 + strh r1, [r0, #0x12] + ldr r0, [r5] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x20 + str r0, [sp, #0x20] + ldr r0, _021EFFC4 ; =MOD05_021F0304 + str r5, [sp, #0x30] + str r0, [sp, #0x18] + add r0, r2, #0 + add r2, r1, #0 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #4] + add r0, r5, #0 + add r0, #0x20 + bl FUN_020191D0 + mov r0, #9 + str r0, [r5, #0x48] + mov r0, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021EFFB8: .word 0x000002A1 +_021EFFBC: .word 0x000003D9 +_021EFFC0: .word 0x021F8B4C +_021EFFC4: .word MOD05_021F0304 + + thumb_func_start MOD05_021EFFC8 +MOD05_021EFFC8: ; 0x021EFFC8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + bl FUN_02001204 + add r4, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _021EFFE6 + add r0, r0, #1 + cmp r4, r0 + bne _021F000E + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021EFFE6: + ldr r0, _021F007C ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r5, #0x38] + mov r1, #0 + bl FUN_0200ABC0 + add r0, r5, #0 + mov r1, #0x23 + bl MOD05_021F01EC + mov r0, #6 + str r0, [r5, #0x48] + b _021F0056 +_021F000E: + ldr r0, _021F007C ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + add r0, #0x90 + str r4, [r0] + ldr r0, [r5, #0x34] + bl FUN_020286EC + add r7, r0, #0 + mov r0, #4 + bl FUN_02023928 + add r6, r0, #0 + add r0, r7, #0 + add r1, r4, #0 + bl FUN_020283A4 + add r1, r0, #0 + add r0, r6, #0 + bl FUN_0202395C + ldr r0, [r5, #0x38] + mov r1, #0 + add r2, r6, #0 + bl FUN_0200ABC0 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r1, #0x24 + bl MOD05_021F01EC + mov r0, #0xa + str r0, [r5, #0x48] +_021F0056: + add r0, r5, #0 + add r0, #0x20 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r5, #0 + add r0, #0x20 + bl FUN_02019178 + mov r1, #0 + ldr r0, [r5, #4] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r5] + bl FUN_02012870 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F007C: .word 0x000005DC + + thumb_func_start MOD05_021F0080 +MOD05_021F0080: ; 0x021F0080 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021F00AC + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0x30] + ldr r1, _021F00B4 ; =0x021F8B44 + ldr r0, [r0, #8] + ldr r2, _021F00B8 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x44] + mov r0, #0xb + str r0, [r4, #0x48] +_021F00AC: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + nop +_021F00B4: .word 0x021F8B44 +_021F00B8: .word 0x000003D9 + + thumb_func_start MOD05_021F00BC +MOD05_021F00BC: ; 0x021F00BC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x34] + bl FUN_020286EC + add r4, r0, #0 + ldr r0, [r5, #0x44] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _021F00DC + mov r0, #0 + pop {r3, r4, r5, pc} +_021F00DC: + cmp r0, #0 + bne _021F0104 + add r1, r5, #0 + add r1, #0x90 + ldr r1, [r1] + add r0, r4, #0 + bl FUN_02028468 + mov r0, #0 + add r1, r5, #0 + str r0, [sp] + add r1, #0x8c + ldr r0, [r5, #0x34] + ldr r1, [r1] + mov r2, #0x1f + mov r3, #4 + bl FUN_02033A70 + mov r0, #1 + b _021F0122 +_021F0104: + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r5, #0x38] + mov r1, #0 + bl FUN_0200ABC0 + add r0, r5, #0 + mov r1, #0x23 + bl MOD05_021F01EC + mov r0, #6 +_021F0122: + str r0, [r5, #0x48] + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0128 +MOD05_021F0128: ; 0x021F0128 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_0204652C + + thumb_func_start MOD05_021F0130 +MOD05_021F0130: ; 0x021F0130 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02046528 + ldr r0, [r4, #0x48] + cmp r0, #0xc + bhi _021F01E8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F014A: ; jump table + .short _021F0164 - _021F014A - 2 ; case 0 + .short _021F0174 - _021F014A - 2 ; case 1 + .short _021F0184 - _021F014A - 2 ; case 2 + .short _021F018C - _021F014A - 2 ; case 3 + .short _021F0194 - _021F014A - 2 ; case 4 + .short _021F019C - _021F014A - 2 ; case 5 + .short _021F01A4 - _021F014A - 2 ; case 6 + .short _021F01AC - _021F014A - 2 ; case 7 + .short _021F01B4 - _021F014A - 2 ; case 8 + .short _021F01BC - _021F014A - 2 ; case 9 + .short _021F01C4 - _021F014A - 2 ; case 10 + .short _021F01CC - _021F014A - 2 ; case 11 + .short _021F01D4 - _021F014A - 2 ; case 12 +_021F0164: + add r0, r4, #0 + bl MOD05_021EFBF8 + cmp r0, #0 + beq _021F01E8 + mov r0, #0xc + str r0, [r4, #0x48] + b _021F01E8 +_021F0174: + add r0, r4, #0 + bl MOD05_021EFC74 + cmp r0, #0 + beq _021F01E8 + mov r0, #0xc + str r0, [r4, #0x48] + b _021F01E8 +_021F0184: + add r0, r4, #0 + bl MOD05_021EFD40 + b _021F01E8 +_021F018C: + add r0, r4, #0 + bl MOD05_021EFD7C + b _021F01E8 +_021F0194: + add r0, r4, #0 + bl MOD05_021EFDF0 + b _021F01E8 +_021F019C: + add r0, r4, #0 + bl MOD05_021EFE2C + b _021F01E8 +_021F01A4: + add r0, r4, #0 + bl MOD05_021EFE70 + b _021F01E8 +_021F01AC: + add r0, r4, #0 + bl MOD05_021EFEAC + b _021F01E8 +_021F01B4: + add r0, r4, #0 + bl MOD05_021EFEDC + b _021F01E8 +_021F01BC: + add r0, r4, #0 + bl MOD05_021EFFC8 + b _021F01E8 +_021F01C4: + add r0, r4, #0 + bl MOD05_021F0080 + b _021F01E8 +_021F01CC: + add r0, r4, #0 + bl MOD05_021F00BC + b _021F01E8 +_021F01D4: + add r0, r4, #0 + bl MOD05_021F0290 + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_02037778 + mov r0, #1 + pop {r3, r4, r5, pc} +_021F01E8: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F01EC +MOD05_021F01EC: ; 0x021F01EC + push {r3, r4, r5, lr} + add r4, r0, #0 + add r0, #0x10 + add r5, r1, #0 + bl FUN_02019048 + cmp r0, #0 + beq _021F0204 + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019178 +_021F0204: + ldr r0, [r4, #0x3c] + ldr r2, [r4, #8] + add r1, r5, #0 + bl FUN_0200A8E0 + ldr r0, [r4, #0x38] + ldr r1, [r4, #0xc] + ldr r2, [r4, #8] + bl FUN_0200B7B8 + ldr r0, [r4, #0x30] + add r1, r4, #0 + ldr r0, [r0, #8] + add r1, #0x10 + mov r2, #3 + bl FUN_020545B8 + ldr r0, [r4, #0x30] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0 + add r0, r4, #0 + add r0, #0x10 + bl FUN_02054608 + ldr r0, [r4, #0x30] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0 + add r0, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x10 + mov r3, #1 + bl FUN_02054658 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0254 +MOD05_021F0254: ; 0x021F0254 + push {r4, lr} + mov r1, #0 + mov r2, #0x94 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x38] + ldr r2, _021F028C ; =0x00000251 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [r4, #0x3c] + mov r0, #0x6e + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0xc] + mov r0, #0x6e + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #8] + pop {r4, pc} + .balign 4, 0 +_021F028C: .word 0x00000251 + + thumb_func_start MOD05_021F0290 +MOD05_021F0290: ; 0x021F0290 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_0200A8B8 + ldr r0, [r4, #0x38] + bl FUN_0200AB18 + ldr r0, [r4, #0xc] + bl FUN_02021A20 + ldr r0, [r4, #8] + bl FUN_02021A20 + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019048 + cmp r0, #0 + beq _021F02C0 + add r4, #0x10 + add r0, r4, #0 + bl FUN_02019178 +_021F02C0: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F02C4 +MOD05_021F02C4: ; 0x021F02C4 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r5, [r6, #0x10] + mov r0, #0xb + mov r1, #0x94 + bl FUN_020169D8 + add r4, r0, #0 + bl MOD05_021F0254 + str r6, [r4, #0x30] + ldr r0, [r6, #0xc] + str r0, [r4, #0x34] + mov r0, #0 + str r0, [r4, #0x48] + cmp r5, #0 + bne _021F02F2 + ldr r1, _021F0300 ; =MOD05_021F0128 + add r0, r6, #0 + add r2, r4, #0 + bl FUN_020463CC + pop {r4, r5, r6, pc} +_021F02F2: + ldr r1, _021F0300 ; =MOD05_021F0128 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + pop {r4, r5, r6, pc} + nop +_021F0300: .word MOD05_021F0128 + + thumb_func_start MOD05_021F0304 +MOD05_021F0304: ; 0x021F0304 + push {r3, lr} + cmp r2, #0 + bne _021F0310 + ldr r0, _021F0314 ; =0x000005DC + bl FUN_020054C8 +_021F0310: + pop {r3, pc} + nop +_021F0314: .word 0x000005DC + + thumb_func_start MOD05_021F0318 +MOD05_021F0318: ; 0x021F0318 + push {r4, r5, r6, r7, lr} + sub sp, #0x6c + add r4, r3, #0 + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0 + str r0, [sp, #0x58] + ldr r1, [r4, #0x50] + add r0, sp, #0x60 + add r6, r2, #0 + bl FUN_0201F02C + ldr r3, _021F0434 ; =0x021F8B6C + add r2, sp, #0xc + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + cmp r6, #0x60 + str r0, [r2] + bhs _021F0352 + mov r1, #0x60 + sub r0, r1, r6 + lsl r0, r0, #0x18 + ldrh r2, [r4] + lsr r0, r0, #0x18 + mul r0, r2 + bl _s32_div_f + b _021F036C +_021F0352: + sub r6, #0x60 + lsl r0, r6, #0x18 + ldrh r1, [r4] + lsr r0, r0, #0x18 + mul r0, r1 + mov r1, #0x60 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + mov r0, #0 + mvn r0, r0 + mul r0, r1 +_021F036C: + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + cmp r5, #0x80 + bhs _021F038A + mov r2, #0x80 + sub r2, r2, r5 + lsl r2, r2, #0x18 + ldrh r0, [r4, #2] + lsr r2, r2, #0x18 + mul r2, r0 + asr r0, r2, #6 + lsr r0, r0, #0x19 + add r0, r2, r0 + lsl r0, r0, #9 + b _021F03A8 +_021F038A: + ldrh r2, [r4, #2] + sub r5, #0x80 + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + add r3, r2, #0 + mul r3, r0 + asr r0, r3, #6 + lsr r0, r0, #0x19 + add r0, r3, r0 + lsl r0, r0, #9 + lsr r2, r0, #0x10 + mov r0, #0 + mvn r0, r0 + mul r0, r2 + lsl r0, r0, #0x10 +_021F03A8: + lsr r5, r0, #0x10 + asr r0, r1, #4 + lsl r3, r0, #1 + lsl r1, r3, #1 + ldr r2, _021F0438 ; =0x020FFA38 + add r3, r3, #1 + lsl r3, r3, #1 + ldrsh r1, [r2, r1] + ldrsh r2, [r2, r3] + add r0, sp, #0x24 + bl MTX_RotX43_ + add r0, sp, #0xc + add r1, sp, #0x24 + add r2, sp, #0x18 + bl MTX_MultVec43 + asr r0, r5, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + ldr r3, _021F0438 ; =0x020FFA38 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0x24 + bl MTX_RotY43_ + add r0, sp, #0x18 + add r1, sp, #0x24 + add r2, r0, #0 + bl MTX_MultVec43 + add r0, sp, #0x18 + add r1, r4, #0 + add r1, #0x20 + add r2, r0, #0 + bl MTX_MultVec43 + add r0, r4, #0 + add r0, #0x10 + add r1, sp, #0x18 + bl VEC_DotProduct + add r1, r0, #0 + ldr r0, [r4, #0x1c] + bl FX_Div + neg r0, r0 + add r1, sp, #0x18 + add r2, r4, #4 + add r3, sp, #0 + bl VEC_MultAdd + ldr r1, [sp, #0x60] + ldr r0, [sp] + add r2, sp, #0x54 + add r0, r1, r0 + str r0, [sp, #0x54] + ldr r1, [sp, #0x68] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x5c] + ldmia r2!, {r0, r1} + stmia r7!, {r0, r1} + ldr r0, [r2] + str r0, [r7] + add sp, #0x6c + pop {r4, r5, r6, r7, pc} + nop +_021F0434: .word 0x021F8B6C +_021F0438: .word 0x020FFA38 + + thumb_func_start MOD05_021F043C +MOD05_021F043C: ; 0x021F043C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + mov r1, #0x60 + bl FUN_02016998 + add r1, r5, #0 + add r4, r0, #0 + bl MOD05_021F0454 + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0454 +MOD05_021F0454: ; 0x021F0454 + push {r4, r5, lr} + sub sp, #0x2c + add r5, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + bl FUN_0201F014 + add r0, r4, #0 + bl FUN_0201F008 + strh r0, [r5] + ldrh r0, [r5] + ldr r2, _021F04F0 ; =0x020FFA38 + asr r0, r0, #4 + lsl r1, r0, #1 + lsl r0, r1, #1 + add r1, r1, #1 + lsl r1, r1, #1 + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + bl FX_Div + lsl r0, r0, #2 + mov r1, #3 + bl _s32_div_f + bl FX_Atan + ldr r3, _021F04F4 ; =0x021F8B78 + strh r0, [r5, #2] + ldmia r3!, {r0, r1} + add r2, sp, #0x20 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r4, #0 + str r0, [r2] + add r0, sp, #0x14 + bl FUN_0201F03C + add r0, sp, #8 + add r1, r4, #0 + bl FUN_0201F02C + add r0, sp, #0x14 + add r1, sp, #8 + add r2, r5, #4 + bl VEC_Subtract + add r3, sp, #0x20 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r5, #4 + str r0, [r2] + add r0, sp, #0x20 + bl VEC_DotProduct + str r0, [r5, #0x1c] + add r0, sp, #0 + ldrh r0, [r0] + ldr r3, _021F04F0 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + add r0, r5, #0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, #0x20 + bl MTX_RotX43_ + str r4, [r5, #0x50] + add sp, #0x2c + pop {r4, r5, pc} + nop +_021F04F0: .word 0x020FFA38 +_021F04F4: .word 0x021F8B78 + + thumb_func_start MOD05_021F04F8 +MOD05_021F04F8: ; 0x021F04F8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F0512 + bne _021F0508 + bl ErrorHandling +_021F0508: + ldr r0, [r4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] +_021F0512: + pop {r4, pc} + + thumb_func_start MOD05_021F0514 +MOD05_021F0514: ; 0x021F0514 + push {r4, lr} + add r4, r0, #0 + bl FUN_02058458 + cmp r0, #0x97 + bgt _021F053E + bge _021F05B2 + cmp r0, #0x15 + bgt _021F052E + bge _021F059E + cmp r0, #0 + beq _021F059E + b _021F05BA +_021F052E: + cmp r0, #0x62 + bgt _021F05BA + cmp r0, #0x61 + blt _021F05BA + beq _021F059E + cmp r0, #0x62 + beq _021F059E + b _021F05BA +_021F053E: + cmp r0, #0xb0 + bgt _021F0554 + bge _021F059E + cmp r0, #0x99 + bgt _021F05BA + cmp r0, #0x98 + blt _021F05BA + beq _021F05B2 + cmp r0, #0x99 + beq _021F05B2 + b _021F05BA +_021F0554: + cmp r0, #0xb1 + bgt _021F055C + beq _021F059E + b _021F05BA +_021F055C: + sub r0, #0xb2 + cmp r0, #0x17 + bhi _021F05BA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F056E: ; jump table + .short _021F059E - _021F056E - 2 ; case 0 + .short _021F059E - _021F056E - 2 ; case 1 + .short _021F059E - _021F056E - 2 ; case 2 + .short _021F059E - _021F056E - 2 ; case 3 + .short _021F05BA - _021F056E - 2 ; case 4 + .short _021F05BA - _021F056E - 2 ; case 5 + .short _021F05BA - _021F056E - 2 ; case 6 + .short _021F05BA - _021F056E - 2 ; case 7 + .short _021F059E - _021F056E - 2 ; case 8 + .short _021F059E - _021F056E - 2 ; case 9 + .short _021F059E - _021F056E - 2 ; case 10 + .short _021F059E - _021F056E - 2 ; case 11 + .short _021F05BA - _021F056E - 2 ; case 12 + .short _021F05BA - _021F056E - 2 ; case 13 + .short _021F05BA - _021F056E - 2 ; case 14 + .short _021F05BA - _021F056E - 2 ; case 15 + .short _021F05BA - _021F056E - 2 ; case 16 + .short _021F05A8 - _021F056E - 2 ; case 17 + .short _021F059E - _021F056E - 2 ; case 18 + .short _021F059E - _021F056E - 2 ; case 19 + .short _021F059E - _021F056E - 2 ; case 20 + .short _021F059E - _021F056E - 2 ; case 21 + .short _021F059E - _021F056E - 2 ; case 22 + .short _021F059E - _021F056E - 2 ; case 23 +_021F059E: + add r0, r4, #0 + bl FUN_02058628 + ldr r0, [r0, #4] + pop {r4, pc} +_021F05A8: + add r0, r4, #0 + bl FUN_02058628 + ldr r0, [r0, #4] + pop {r4, pc} +_021F05B2: + add r0, r4, #0 + bl MOD05_021F1C24 + pop {r4, pc} +_021F05BA: + add r0, r4, #0 + bl FUN_02058628 + ldr r0, [r0, #8] + pop {r4, pc} + + thumb_func_start MOD05_021F05C4 +MOD05_021F05C4: ; 0x021F05C4 + push {r3, r4, r5, lr} + mov r1, #0x18 + add r5, r0, #0 + bl FUN_02058604 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + add r1, r4, #0 + strh r0, [r4] + add r0, r5, #0 + add r1, #8 + bl MOD05_021F1FC8 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F05EC + add r0, r5, #0 + bl FUN_020586A0 +_021F05EC: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F05F0 +MOD05_021F05F0: ; 0x021F05F0 + push {r4, lr} + add r4, r0, #0 + bl FUN_02058628 + add r1, r0, #0 + add r0, r4, #0 + add r1, #8 + bl MOD05_021F2060 + pop {r4, pc} + + thumb_func_start MOD05_021F0604 +MOD05_021F0604: ; 0x021F0604 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F061C + add r1, r4, #0 + add r1, #0xc + bl MOD05_021F20D8 +_021F061C: + add r4, #8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2060 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0634 +MOD05_021F0634: ; 0x021F0634 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0678 + ldr r0, [r4, #8] + cmp r0, #0 + bne _021F0658 + add r1, r4, #0 + add r0, r5, #0 + add r1, #8 + bl MOD05_021F1FC8 +_021F0658: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F0678 + add r1, r4, #0 + add r1, #0xc + bl MOD05_021F20F8 + ldr r1, [r4, #8] + add r0, r5, #0 + bl MOD05_021F2F48 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_021F0678: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F067C +MOD05_021F067C: ; 0x021F067C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + bl FUN_02058628 + ldr r7, [r0, #8] + add r0, r4, #0 + bl FUN_02058628 + str r0, [sp] + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F06E6 + cmp r7, #0 + beq _021F06E6 + add r0, r4, #0 + bl FUN_020584C4 + str r0, [sp, #4] + add r0, r4, #0 + bl FUN_0205854C + add r5, r0, #0 + cmp r5, #9 + blt _021F06B6 + bl ErrorHandling +_021F06B6: + lsl r6, r5, #2 + ldr r5, _021F06EC ; =0x021FC4B4 + ldr r2, [sp] + ldr r3, [sp, #4] + ldr r5, [r5, r6] + add r0, r4, #0 + add r1, r7, #0 + blx r5 + ldr r1, [sp, #4] + ldr r0, [sp] + strh r1, [r0] + add r0, r4, #0 + bl FUN_0205854C + ldr r1, [sp] + str r0, [r1, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F19A4 +_021F06E6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F06EC: .word 0x021FC4B4 + + thumb_func_start MOD05_021F06F0 +MOD05_021F06F0: ; 0x021F06F0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02058628 + add r5, r0, #0 + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F071A + ldr r5, [r5, #8] + cmp r5, #0 + beq _021F071A + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F19A4 +_021F071A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F071C +MOD05_021F071C: ; 0x021F071C + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02058628 + add r5, r0, #0 + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F075A + ldr r5, [r5, #8] + cmp r5, #0 + beq _021F075A + add r0, r4, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F074A + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F074A: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F19A4 +_021F075A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F075C +MOD05_021F075C: ; 0x021F075C + push {r4, lr} + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0780 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0786 +_021F0780: + add r0, r4, #0 + bl MOD05_021F194C +_021F0786: + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, pc} + + thumb_func_start MOD05_021F0790 +MOD05_021F0790: ; 0x021F0790 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F07B4 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F07B4: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F07C8 + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #0xa + bl FUN_0201F854 +_021F07C8: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F07CC +MOD05_021F07CC: ; 0x021F07CC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F07F0 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F07F0: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0804 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0804: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0808 +MOD05_021F0808: ; 0x021F0808 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F082C + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F082C: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0840 + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0840: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0844 +MOD05_021F0844: ; 0x021F0844 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0868 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F0868: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F087C + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xe + bl FUN_0201F854 +_021F087C: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0880 +MOD05_021F0880: ; 0x021F0880 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsh r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F08AC + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strh r0, [r4, #2] +_021F08AC: + ldr r0, [r4, #4] + cmp r0, #6 + beq _021F08B6 + mov r0, #0 + strh r0, [r4, #2] +_021F08B6: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F08FC + ldr r6, _021F0900 ; =0x021FC43C + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #2 + str r0, [r3] + ldrsh r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #2 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #2] + ldrsh r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F08FC + mov r0, #0 + strh r0, [r4, #2] +_021F08FC: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021F0900: .word 0x021FC43C + + thumb_func_start MOD05_021F0904 +MOD05_021F0904: ; 0x021F0904 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsh r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F0930 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strh r0, [r4, #2] +_021F0930: + ldr r0, [r4, #4] + cmp r0, #7 + beq _021F093A + mov r0, #0 + strh r0, [r4, #2] +_021F093A: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0978 + ldr r6, _021F097C ; =0x021FC42C + add r3, sp, #0 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #2 + ldrsh r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #2 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #2] + ldrsh r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F0978 + mov r0, #0 + strh r0, [r4, #2] +_021F0978: + add sp, #0x10 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F097C: .word 0x021FC42C + + thumb_func_start MOD05_021F0980 +MOD05_021F0980: ; 0x021F0980 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsh r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F09AC + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strh r0, [r4, #2] +_021F09AC: + ldr r0, [r4, #4] + cmp r0, #8 + beq _021F09B6 + mov r0, #0 + strh r0, [r4, #2] +_021F09B6: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F09FC + ldr r6, _021F0A00 ; =0x021FC494 + add r3, sp, #0 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #2 + ldrsh r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #2 + ldrsh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, #2] + ldrsh r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F09FC + mov r0, #0 + strh r0, [r4, #2] +_021F09FC: + add sp, #0x20 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F0A00: .word 0x021FC494 + + thumb_func_start MOD05_021F0A04 +MOD05_021F0A04: ; 0x021F0A04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + bl FUN_02058628 + ldr r7, [r0, #8] + add r0, r4, #0 + bl FUN_02058628 + str r0, [sp] + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0A6E + cmp r7, #0 + beq _021F0A6E + add r0, r4, #0 + + thumb_func_start MOD05_021F0A28 +MOD05_021F0A28: ; 0x021F0A28 + bl FUN_020584C4 + str r0, [sp, #4] + add r0, r4, #0 + bl FUN_0205854C + add r5, r0, #0 + cmp r5, #0xa + blt _021F0A3E + bl ErrorHandling +_021F0A3E: + lsl r6, r5, #2 + ldr r5, _021F0A74 ; =0x021FC528 + ldr r2, [sp] + ldr r3, [sp, #4] + ldr r5, [r5, r6] + add r0, r4, #0 + add r1, r7, #0 + blx r5 + ldr r1, [sp, #4] + ldr r0, [sp] + strh r1, [r0] + add r0, r4, #0 + bl FUN_0205854C + ldr r1, [sp] + str r0, [r1, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F19A4 +_021F0A6E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0A74: .word 0x021FC528 + + thumb_func_start MOD05_021F0A78 +MOD05_021F0A78: ; 0x021F0A78 + push {r4, lr} + mov r0, #0 + ldrsh r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + bne _021F0A8A + ldr r0, [r2, #4] + cmp r0, #9 + bne _021F0AA2 +_021F0A8A: + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0AA8 +_021F0AA2: + add r0, r4, #0 + bl MOD05_021F194C +_021F0AA8: + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0AB4 +MOD05_021F0AB4: ; 0x021F0AB4 + push {r4, lr} + ldr r0, [r2, #4] + add r4, r1, #0 + cmp r0, #9 + beq _021F0ACE + add r0, r4, #0 + mov r1, #4 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F0ACE: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0ADC +MOD05_021F0ADC: ; 0x021F0ADC + push {r3, r4, r5, lr} + mov r1, #0x14 + add r5, r0, #0 + bl FUN_02058604 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + strb r0, [r4] + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1c + sub r1, r1, r2 + mov r0, #0x1c + ror r1, r0 + add r0, r2, r1 + strb r0, [r4, #2] + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F1FC8 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0B14 + add r0, r5, #0 + bl FUN_020586A0 +_021F0B14: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0B18 +MOD05_021F0B18: ; 0x021F0B18 + push {r4, lr} + add r4, r0, #0 + bl FUN_02058628 + add r1, r0, #0 + add r0, r4, #0 + add r1, r1, #4 + bl MOD05_021F2060 + pop {r4, pc} + + thumb_func_start MOD05_021F0B2C +MOD05_021F0B2C: ; 0x021F0B2C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0B44 + add r1, r4, #0 + add r1, #8 + bl MOD05_021F20D8 +_021F0B44: + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F2060 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0B58 +MOD05_021F0B58: ; 0x021F0B58 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0B9A + ldr r0, [r4, #4] + cmp r0, #0 + bne _021F0B7A + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F1FC8 +_021F0B7A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0B9A + add r1, r4, #0 + add r1, #8 + bl MOD05_021F20F8 + ldr r1, [r4, #4] + add r0, r5, #0 + bl MOD05_021F2F48 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_021F0B9A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0B9C +MOD05_021F0B9C: ; 0x021F0B9C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r6, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0C26 + cmp r6, #0 + beq _021F0C26 + add r0, r5, #0 + bl FUN_020584C4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0205854C + mov r1, #2 + ldrsb r0, [r4, r1] + cmp r0, #0 + beq _021F0BE0 + sub r0, r0, #1 + strb r0, [r4, #2] + add r0, r6, #0 + mov r1, #0 + bl FUN_0201F854 + b _021F0C0C +_021F0BE0: + add r0, r6, #0 + lsl r1, r1, #0xb + bl FUN_0201F854 + mov r0, #1 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #1] + ldrsb r0, [r4, r0] + cmp r0, #0x20 + blt _021F0C0C + mov r0, #0 + strb r0, [r4, #1] + bl FUN_0201B9EC + lsr r1, r0, #0x1f + lsl r2, r0, #0x1c + sub r2, r2, r1 + mov r0, #0x1c + ror r2, r0 + add r0, r1, r2 + strb r0, [r4, #2] +_021F0C0C: + strb r7, [r4] + add r0, r5, #0 + bl FUN_0205854C + strb r0, [r4, #3] + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F19A4 +_021F0C26: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F0C28 +MOD05_021F0C28: ; 0x021F0C28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #8] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0CEA + cmp r4, #0 + beq _021F0CEA + add r0, r5, #0 + bl FUN_020584C4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0205854C + cmp r0, #0 + bne _021F0C9E + cmp r7, #1 + bls _021F0C66 + mov r0, #1 + str r0, [sp, #4] + b _021F0C6A +_021F0C66: + mov r0, #0 + str r0, [sp, #4] +_021F0C6A: + add r0, r4, #0 + bl FUN_0201F844 + ldr r1, [sp, #4] + cmp r1, r0 + bne _021F0C7C + ldr r0, [r6, #4] + cmp r0, #0 + bne _021F0C94 +_021F0C7C: + ldr r1, [sp, #4] + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 +_021F0C94: + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + b _021F0CD0 +_021F0C9E: + cmp r7, #1 + bls _021F0CA8 + mov r0, #1 + str r0, [sp] + b _021F0CAC +_021F0CA8: + mov r0, #0 + str r0, [sp] +_021F0CAC: + add r0, r4, #0 + bl FUN_0201F844 + ldr r1, [sp] + cmp r1, r0 + beq _021F0CC6 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F0CC6: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0CD0: + strh r7, [r6] + add r0, r5, #0 + bl FUN_0205854C + str r0, [r6, #4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F0CEA: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0CF0 +MOD05_021F0CF0: ; 0x021F0CF0 + push {r3, r4, r5, lr} + mov r1, #0x14 + add r5, r0, #0 + bl FUN_02058604 + add r4, r0, #0 + mov r0, #0 + mvn r0, r0 + strb r0, [r4] + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F1FC8 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0D16 + add r0, r5, #0 + bl FUN_020586A0 +_021F0D16: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0D18 +MOD05_021F0D18: ; 0x021F0D18 + push {r3, r4, lr} + sub sp, #0xc + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r4, r0, #0 + str r1, [r2, #8] + bl FUN_02058628 + add r1, r0, #0 + add r0, r4, #0 + add r1, r1, #4 + bl MOD05_021F2060 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B94 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0D44 +MOD05_021F0D44: ; 0x021F0D44 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0D5C + add r1, r4, #0 + add r1, #8 + bl MOD05_021F20D8 +_021F0D5C: + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F2060 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0D70 +MOD05_021F0D70: ; 0x021F0D70 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0DB2 + ldr r0, [r4, #4] + cmp r0, #0 + bne _021F0D92 + add r0, r5, #0 + add r1, r4, #4 + bl MOD05_021F1FC8 +_021F0D92: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F0DB2 + add r1, r4, #0 + add r1, #8 + bl MOD05_021F20F8 + ldr r1, [r4, #4] + add r0, r5, #0 + bl MOD05_021F2F48 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_021F0DB2: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F0DB4 +MOD05_021F0DB4: ; 0x021F0DB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + bl FUN_02058628 + ldr r7, [r0, #4] + add r0, r4, #0 + bl FUN_02058628 + str r0, [sp] + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F0E1E + cmp r7, #0 + beq _021F0E1E + add r0, r4, #0 + bl FUN_020584C4 + str r0, [sp, #4] + add r0, r4, #0 + bl FUN_0205854C + add r5, r0, #0 + cmp r5, #0xa + blt _021F0DEE + bl ErrorHandling +_021F0DEE: + lsl r6, r5, #2 + ldr r5, _021F0E24 ; =0x021FC500 + ldr r2, [sp] + ldr r3, [sp, #4] + ldr r5, [r5, r6] + add r0, r4, #0 + add r1, r7, #0 + blx r5 + ldr r1, [sp, #4] + ldr r0, [sp] + strb r1, [r0] + add r0, r4, #0 + bl FUN_0205854C + ldr r1, [sp] + strb r0, [r1, #2] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F19A4 +_021F0E1E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F0E24: .word 0x021FC500 + + thumb_func_start MOD05_021F0E28 +MOD05_021F0E28: ; 0x021F0E28 + push {r3, r4, r5, lr} + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F0E56 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + strb r1, [r4, #3] + pop {r3, r4, r5, pc} +_021F0E56: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F0E6C + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r4, #3] + pop {r3, r4, r5, pc} +_021F0E6C: + ldrb r0, [r4, #3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021F0E8E + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + strb r1, [r4, #3] + pop {r3, r4, r5, pc} +_021F0E8E: + add r0, r5, #0 + bl MOD05_021F194C + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0E98 +MOD05_021F0E98: ; 0x021F0E98 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F0EC0 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0EF6 +_021F0EC0: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F0ED6 + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r4, #3] + pop {r4, r5, r6, pc} +_021F0ED6: + ldrb r0, [r4, #3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021F0EF6 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 + ldrb r1, [r4, #3] + mov r0, #1 + bic r1, r0 + strb r1, [r4, #3] +_021F0EF6: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0F0A + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xa + bl FUN_0201F854 +_021F0F0A: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F0F0C +MOD05_021F0F0C: ; 0x021F0F0C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0F32 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0F48 +_021F0F32: + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #9 + bne _021F0F48 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F1980 +_021F0F48: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0F5C + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0F5C: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0F60 +MOD05_021F0F60: ; 0x021F0F60 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0F86 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0F9C +_021F0F86: + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #9 + bne _021F0F9C + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F1980 +_021F0F9C: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F0FB0 + mov r1, #2 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F0FB0: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F0FB4 +MOD05_021F0FB4: ; 0x021F0FB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F0FDA + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F0FF0 +_021F0FDA: + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #9 + bne _021F0FF0 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F1980 +_021F0FF0: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F1004 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xe + bl FUN_0201F854 +_021F1004: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1008 +MOD05_021F1008: ; 0x021F1008 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F1036 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strb r0, [r4, #1] + b _021F104C +_021F1036: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F104C + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 +_021F104C: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #6 + beq _021F1058 + mov r0, #0 + strb r0, [r4, #1] +_021F1058: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F109E + ldr r6, _021F10A4 ; =0x021FC458 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #1 + str r0, [r3] + ldrsb r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #1 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #1] + ldrsb r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F109E + mov r0, #0 + strb r0, [r4, #1] +_021F109E: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_021F10A4: .word 0x021FC458 + + thumb_func_start MOD05_021F10A8 +MOD05_021F10A8: ; 0x021F10A8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F10D6 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strb r0, [r4, #1] + b _021F10EC +_021F10D6: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F10EC + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 +_021F10EC: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #7 + beq _021F10F8 + mov r0, #0 + strb r0, [r4, #1] +_021F10F8: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F1136 + ldr r6, _021F113C ; =0x021FC3EC + add r3, sp, #0 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #1 + ldrsb r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #1 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #1] + ldrsb r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F1136 + mov r0, #0 + strb r0, [r4, #1] +_021F1136: + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_021F113C: .word 0x021FC3EC + + thumb_func_start MOD05_021F1140 +MOD05_021F1140: ; 0x021F1140 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r0, #0 + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + beq _021F116E + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + mov r0, #0 + strb r0, [r4, #1] + b _021F1184 +_021F116E: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #9 + bne _021F1184 + add r0, r3, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F1980 +_021F1184: + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #8 + beq _021F1190 + mov r0, #0 + strb r0, [r4, #1] +_021F1190: + add r0, r6, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F11D6 + ldr r6, _021F11DC ; =0x021FC474 + add r3, sp, #0 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + mov r1, #1 + ldrsb r1, [r4, r1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r2, r1] + bl FUN_0201F854 + mov r0, #1 + ldrsb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, #1] + ldrsb r0, [r4, r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + cmp r0, #0 + bne _021F11D6 + mov r0, #0 + strb r0, [r4, #1] +_021F11D6: + add sp, #0x20 + pop {r4, r5, r6, pc} + nop +_021F11DC: .word 0x021FC474 + + thumb_func_start MOD05_021F11E0 +MOD05_021F11E0: ; 0x021F11E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + beq _021F1206 + add r0, r3, #0 + bl MOD05_021F2FB8 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F121E +_021F1206: + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #9 + beq _021F121E + add r0, r3, #0 + bl MOD05_021F2FB8 + add r1, r0, #0 + add r0, r4, #0 + mov r2, #4 + bl MOD05_021F1958 +_021F121E: + add r0, r5, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F1232 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F1232: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F1234 +MOD05_021F1234: ; 0x021F1234 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + bl FUN_02058628 + ldr r0, [r0, #4] + str r0, [sp] + add r0, r7, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r7, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F12B6 + ldr r0, [sp] + cmp r0, #0 + beq _021F12B6 + add r0, r7, #0 + bl FUN_020584C4 + str r0, [sp, #8] + add r0, r7, #0 + bl FUN_0205854C + str r0, [sp, #4] + cmp r0, #0xc + blt _021F1272 + bl ErrorHandling +_021F1272: + mov r1, #2 + ldrsb r2, [r4, r1] + cmp r2, #0 + bne _021F128C + ldr r0, [sp, #4] + cmp r0, r2 + beq _021F128C + ldrb r0, [r4, #3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _021F128C + sub r0, r1, #3 + strb r0, [r4] +_021F128C: + ldr r5, [sp, #4] + ldr r1, [sp] + lsl r6, r5, #2 + ldr r5, _021F12BC ; =0x021FC4D8 + ldr r3, [sp, #8] + ldr r5, [r5, r6] + add r0, r7, #0 + add r2, r4, #0 + blx r5 + ldr r0, [sp, #8] + ldr r1, [sp] + strb r0, [r4] + ldr r0, [sp, #4] + strb r0, [r4, #2] + add r0, r7, #0 + bl MOD05_021F2F48 + ldr r1, [sp] + add r0, r7, #0 + bl MOD05_021F19A4 +_021F12B6: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021F12BC: .word 0x021FC4D8 + + thumb_func_start MOD05_021F12C0 +MOD05_021F12C0: ; 0x021F12C0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r3, #0 + add r4, r2, #0 + add r2, sp, #0 + ldr r3, _021F1348 ; =0x021FC3FC + add r5, r1, #0 + add r7, r2, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + lsl r0, r6, #2 + ldr r1, [r7, r0] + mov r0, #0 + ldrsb r0, [r4, r0] + cmp r6, r0 + beq _021F12FE + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + ldrb r1, [r4, #3] + mov r0, #1 + add sp, #0x10 + bic r1, r0 + strb r1, [r4, #3] + pop {r3, r4, r5, r6, r7, pc} +_021F12FE: + mov r2, #2 + ldrsb r0, [r4, r2] + cmp r0, #0 + beq _021F1316 + ldrb r1, [r4, #3] + mov r0, #1 + add sp, #0x10 + bic r1, r0 + mov r0, #1 + orr r0, r1 + strb r0, [r4, #3] + pop {r3, r4, r5, r6, r7, pc} +_021F1316: + ldrb r0, [r4, #3] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #1 + bne _021F133A + add r0, r5, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + ldrb r1, [r4, #3] + mov r0, #1 + add sp, #0x10 + bic r1, r0 + strb r1, [r4, #3] + pop {r3, r4, r5, r6, r7, pc} +_021F133A: + add r0, r5, #0 + lsl r1, r2, #0xb + bl FUN_0201F854 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F1348: .word 0x021FC3FC + + thumb_func_start MOD05_021F134C +MOD05_021F134C: ; 0x021F134C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, r3, #0 + add r5, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl MOD05_021F2FC4 + add r4, r0, #0 + mov r0, #0 + ldrsb r1, [r6, r0] + ldr r0, [sp] + cmp r0, r1 + bne _021F1370 + mov r0, #2 + ldrsb r0, [r6, r0] + cmp r0, #0 + beq _021F1382 +_021F1370: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F13B2 +_021F1382: + cmp r0, #0xa + beq _021F1398 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F13B2 +_021F1398: + add r0, r5, #0 + bl FUN_0201F844 + cmp r4, r0 + beq _021F13B2 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 +_021F13B2: + add r0, r7, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F13C6 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xa + bl FUN_0201F854 +_021F13C6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F13C8 +MOD05_021F13C8: ; 0x021F13C8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, r3, #0 + add r5, r1, #0 + add r6, r2, #0 + str r3, [sp] + bl MOD05_021F2FC4 + add r4, r0, #0 + mov r0, #0 + ldrsb r1, [r6, r0] + ldr r0, [sp] + cmp r0, r1 + beq _021F13F6 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F142A +_021F13F6: + mov r0, #2 + ldrsb r0, [r6, r0] + cmp r0, #0xb + beq _021F1410 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 + b _021F142A +_021F1410: + add r0, r5, #0 + bl FUN_0201F844 + cmp r4, r0 + beq _021F142A + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F890 +_021F142A: + add r0, r7, #0 + bl MOD05_021F1DFC + cmp r0, #0 + bne _021F143E + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F143E: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F1440 +MOD05_021F1440: ; 0x021F1440 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + bl FUN_02058628 + ldr r7, [r0, #4] + add r0, r4, #0 + bl FUN_02058628 + str r0, [sp] + cmp r7, #0 + beq _021F14B4 + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F14B4 + add r0, r4, #0 + bl FUN_020584C4 + str r0, [sp, #4] + add r0, r4, #0 + bl FUN_0205854C + add r5, r0, #0 + cmp r5, #4 + blt _021F147A + bl ErrorHandling +_021F147A: + lsl r6, r5, #2 + ldr r5, _021F14B8 ; =0x021FC40C + ldr r2, [sp] + ldr r3, [sp, #4] + ldr r5, [r5, r6] + add r0, r4, #0 + add r1, r7, #0 + blx r5 + ldr r2, [sp, #4] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F1658 + ldr r1, [sp, #4] + ldr r0, [sp] + strb r1, [r0] + add r0, r4, #0 + bl FUN_0205854C + ldr r1, [sp] + strb r0, [r1, #2] + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F2F48 + add r0, r4, #0 + add r1, r7, #0 + bl MOD05_021F19A4 +_021F14B4: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F14B8: .word 0x021FC40C + + thumb_func_start MOD05_021F14BC +MOD05_021F14BC: ; 0x021F14BC + push {r4, lr} + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + bne _021F14D0 + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _021F14E6 +_021F14D0: + ldr r1, _021F1508 ; =0x021FC41C + lsl r2, r3, #2 + ldr r1, [r1, r2] + add r0, r4, #0 + bl FUN_0201F830 + mov r1, #0xf + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F890 +_021F14E6: + add r0, r4, #0 + bl FUN_0201F8C0 + mov r1, #1 + lsl r1, r1, #0xc + sub r1, r0, r1 + bpl _021F14F6 + mov r1, #0 +_021F14F6: + add r0, r4, #0 + bl FUN_0201F890 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, pc} + nop +_021F1508: .word 0x021FC41C + + thumb_func_start MOD05_021F150C +MOD05_021F150C: ; 0x021F150C + push {r4, lr} + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + bne _021F1520 + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #1 + beq _021F1534 +_021F1520: + ldr r1, _021F1540 ; =0x021FC41C + lsl r2, r3, #2 + ldr r1, [r1, r2] + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F1534: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + pop {r4, pc} + .balign 4, 0 +_021F1540: .word 0x021FC41C + + thumb_func_start MOD05_021F1544 +MOD05_021F1544: ; 0x021F1544 + push {r3, r4, r5, lr} + add r4, r2, #0 + mov r0, #0 + ldrsb r0, [r4, r0] + add r5, r1, #0 + cmp r3, r0 + bne _021F155A + mov r0, #2 + ldrsb r0, [r4, r0] + cmp r0, #2 + beq _021F1578 +_021F155A: + ldr r1, _021F1604 ; =0x021FC41C + lsl r2, r3, #2 + ldr r1, [r1, r2] + add r0, r5, #0 + bl FUN_0201F830 + mov r1, #0xf + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0201F890 + ldrb r1, [r4, #3] + mov r0, #0xfe + bic r1, r0 + strb r1, [r4, #3] +_021F1578: + add r0, r5, #0 + bl FUN_0201F8C0 + add r1, r0, #0 + ldrb r0, [r4, #3] + lsl r2, r0, #0x18 + lsr r2, r2, #0x19 + beq _021F1592 + cmp r2, #1 + beq _021F15B4 + cmp r2, #2 + beq _021F15DA + b _021F15F4 +_021F1592: + mov r3, #1 + lsl r3, r3, #0xc + sub r1, r1, r3 + mov r3, #0xa + lsl r3, r3, #0xc + cmp r1, r3 + bgt _021F15F4 + add r2, r2, #1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + mov r3, #0xfe + lsl r2, r2, #0x19 + bic r0, r3 + lsr r2, r2, #0x18 + orr r0, r2 + strb r0, [r4, #3] + b _021F15F4 +_021F15B4: + mov r3, #1 + lsl r3, r3, #0xc + add r1, r1, r3 + mov r3, #0xf + lsl r3, r3, #0xc + cmp r1, r3 + blt _021F15F4 + add r2, r2, #1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + mov r3, #0xfe + lsl r2, r2, #0x19 + bic r0, r3 + lsr r2, r2, #0x18 + orr r0, r2 + strb r0, [r4, #3] + mov r0, #0 + strb r0, [r4, #1] + b _021F15F4 +_021F15DA: + mov r0, #1 + ldrsb r2, [r4, r0] + add r2, r2, #1 + strb r2, [r4, #1] + ldrsb r0, [r4, r0] + cmp r0, #0x1e + blt _021F15F4 + mov r0, #0 + strb r0, [r4, #1] + ldrb r2, [r4, #3] + mov r0, #0xfe + bic r2, r0 + strb r2, [r4, #3] +_021F15F4: + add r0, r5, #0 + bl FUN_0201F890 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F1604: .word 0x021FC41C + + thumb_func_start MOD05_021F1608 +MOD05_021F1608: ; 0x021F1608 + push {r4, lr} + mov r0, #0 + ldrsb r0, [r2, r0] + add r4, r1, #0 + cmp r3, r0 + bne _021F161C + mov r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #3 + beq _021F1632 +_021F161C: + ldr r1, _021F1654 ; =0x021FC41C + lsl r2, r3, #2 + ldr r1, [r1, r2] + add r0, r4, #0 + bl FUN_0201F830 + mov r1, #0xf + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F890 +_021F1632: + add r0, r4, #0 + bl FUN_0201F8C0 + mov r1, #1 + lsl r1, r1, #0xc + sub r1, r0, r1 + bpl _021F1642 + mov r1, #0 +_021F1642: + add r0, r4, #0 + bl FUN_0201F890 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, pc} + nop +_021F1654: .word 0x021FC41C + + thumb_func_start MOD05_021F1658 +MOD05_021F1658: ; 0x021F1658 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r2, #0 + add r2, sp, #0 + mov r0, #0 + str r0, [r2] + str r0, [r2, #4] + str r0, [r2, #8] + add r0, r1, #0 + bl FUN_0201F880 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r4, #3 + bhi _021F16BE + add r1, r4, r4 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021F1688: ; jump table + .short _021F16BE - _021F1688 - 2 ; case 0 + .short _021F1690 - _021F1688 - 2 ; case 1 + .short _021F169C - _021F1688 - 2 ; case 2 + .short _021F16AE - _021F1688 - 2 ; case 3 +_021F1690: + cmp r0, #0x18 + blt _021F16BE + mov r0, #6 + lsl r0, r0, #0xc + str r0, [sp, #8] + b _021F16BE +_021F169C: + cmp r0, #0x28 + bge _021F16A8 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp] + b _021F16BE +_021F16A8: + ldr r0, _021F16CC ; =0xFFFFB000 + str r0, [sp] + b _021F16BE +_021F16AE: + cmp r0, #0x38 + bge _021F16B8 + ldr r0, _021F16D0 ; =0xFFFFF000 + str r0, [sp] + b _021F16BE +_021F16B8: + mov r0, #5 + lsl r0, r0, #0xc + str r0, [sp] +_021F16BE: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B94 + add sp, #0xc + pop {r4, r5, pc} + nop +_021F16CC: .word 0xFFFFB000 +_021F16D0: .word 0xFFFFF000 + + thumb_func_start MOD05_021F16D4 +MOD05_021F16D4: ; 0x021F16D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1734 + cmp r4, #0 + beq _021F1734 + add r0, r5, #0 + bl FUN_020584C4 + add r7, r0, #0 + strb r7, [r6] + add r0, r5, #0 + bl FUN_0205854C + strb r0, [r6, #2] + add r0, r7, #0 + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F854 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F1734: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1738 +MOD05_021F1738: ; 0x021F1738 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F179C + cmp r4, #0 + beq _021F179C + add r0, r5, #0 + bl FUN_020584C4 + strb r0, [r6] + add r0, r5, #0 + bl FUN_0205854C + strb r0, [r6, #2] + add r0, r4, #0 + bl FUN_0201F844 + cmp r0, #0 + beq _021F1782 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F1782: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F179C: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F17A0 +MOD05_021F17A0: ; 0x021F17A0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1836 + cmp r4, #0 + beq _021F1836 + add r0, r5, #0 + bl FUN_020584C4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0205854C + cmp r0, #0 + bne _021F17F8 + add r0, r4, #0 + bl FUN_0201F844 + cmp r0, #1 + beq _021F17EC + add r0, r4, #0 + mov r1, #1 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F17EC: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + b _021F181C +_021F17F8: + add r0, r4, #0 + bl FUN_0201F844 + cmp r0, #0 + beq _021F1812 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F1812: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F181C: + strb r7, [r6] + add r0, r5, #0 + bl FUN_0205854C + strb r0, [r6, #2] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F1836: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F1838 +MOD05_021F1838: ; 0x021F1838 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F18A0 + cmp r4, #0 + beq _021F18A0 + add r0, r5, #0 + bl FUN_020584C4 + mov r1, #0 + ldrsb r1, [r6, r1] + add r7, r0, #0 + cmp r7, r1 + beq _021F187C + bl MOD05_021F2FAC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F187C: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 + add r0, r5, #0 + strb r7, [r6] + bl FUN_0205854C + strb r0, [r6, #2] +_021F18A0: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F18A4 +MOD05_021F18A4: ; 0x021F18A4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0, #4] + add r0, r5, #0 + bl FUN_02058628 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F191A + cmp r4, #0 + beq _021F191A + add r0, r5, #0 + bl FUN_020584C4 + str r0, [sp] + add r0, r5, #0 + bl FUN_0205854C + add r7, r0, #0 + mov r0, #2 + ldrsb r0, [r6, r0] + cmp r7, r0 + beq _021F18FA + cmp r7, #0 + bne _021F18EA + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F830 + b _021F18F2 +_021F18EA: + add r0, r4, #0 + mov r1, #1 + bl FUN_0201F830 +_021F18F2: + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 +_021F18FA: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [sp] + add r1, r4, #0 + strb r0, [r6] + add r0, r5, #0 + strb r7, [r6, #2] + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F19A4 +_021F191A: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F191C +MOD05_021F191C: ; 0x021F191C + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r4, r1, #0xc + add r0, r4, #0 + add r1, r6, #0 + bl _s32_div_f + sub r1, r4, r1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0201F890 + add r0, r5, #0 + mov r1, #0 + bl FUN_0201F854 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F194C +MOD05_021F194C: ; 0x021F194C + ldr r3, _021F1954 ; =MOD05_021F191C + mov r1, #8 + bx r3 + nop +_021F1954: .word MOD05_021F191C + + thumb_func_start MOD05_021F1958 +MOD05_021F1958: ; 0x021F1958 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r1, r2, #0 + bl MOD05_021F191C + add r0, r5, #0 + bl FUN_0201F8C0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0201F890 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1980 +MOD05_021F1980: ; 0x021F1980 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F194C + add r0, r5, #0 + bl FUN_0201F8C0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0201F830 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0201F890 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F19A4 +MOD05_021F19A4: ; 0x021F19A4 + push {r4, r5, r6, lr} + mov r4, #1 + add r6, r1, #0 + lsl r1, r4, #9 + add r5, r0, #0 + bl FUN_0205842C + cmp r0, #1 + bne _021F19B8 + mov r4, #0 +_021F19B8: + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #1 + bne _021F19D6 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #0 + bne _021F19D6 + mov r4, #0 +_021F19D6: + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl FUN_0201F80C + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F19E4 +MOD05_021F19E4: ; 0x021F19E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #4 + bl FUN_02058604 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0224A130 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F19FC +MOD05_021F19FC: ; 0x021F19FC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #4 + bl FUN_02058604 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0224A6B8 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1A14 +MOD05_021F1A14: ; 0x021F1A14 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #4 + bl FUN_02058604 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0224A8D4 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1A2C +MOD05_021F1A2C: ; 0x021F1A2C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r1, #4 + bl FUN_02058604 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0224AA40 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1A44 +MOD05_021F1A44: ; 0x021F1A44 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F1A48 +MOD05_021F1A48: ; 0x021F1A48 + push {r4, lr} + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1A5E + bl MOD05_021E4DE4 + mov r0, #0 + str r0, [r4] +_021F1A5E: + pop {r4, pc} + + thumb_func_start MOD05_021F1A60 +MOD05_021F1A60: ; 0x021F1A60 + push {r4, lr} + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1A76 + bl MOD05_021E4DE4 + mov r0, #0 + str r0, [r4] +_021F1A76: + pop {r4, pc} + + thumb_func_start MOD05_021F1A78 +MOD05_021F1A78: ; 0x021F1A78 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1A8C + bl ErrorHandling +_021F1A8C: + add r0, r5, #0 + bl FUN_0224A130 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1A98 +MOD05_021F1A98: ; 0x021F1A98 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1AAC + bl ErrorHandling +_021F1AAC: + add r0, r5, #0 + bl FUN_0224A6B8 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1AB8 +MOD05_021F1AB8: ; 0x021F1AB8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1ACC + bl ErrorHandling +_021F1ACC: + add r0, r5, #0 + bl FUN_0224A8D4 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1AD8 +MOD05_021F1AD8: ; 0x021F1AD8 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1AEC + bl ErrorHandling +_021F1AEC: + add r0, r5, #0 + bl FUN_0224AA40 + str r0, [r4] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1AF8 +MOD05_021F1AF8: ; 0x021F1AF8 + push {r4, lr} + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0224A6FC + mov r0, #0 + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD05_021F1B0C +MOD05_021F1B0C: ; 0x021F1B0C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD05_021F1C34 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058BB4 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1B2C +MOD05_021F1B2C: ; 0x021F1B2C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0] + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1B54 + cmp r4, #0 + beq _021F1B54 + add r0, r5, #0 + bl MOD05_021F1C48 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_0201F854 +_021F1B54: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1B58 +MOD05_021F1B58: ; 0x021F1B58 + ldr r3, _021F1B5C ; =MOD05_021F1CA4 + bx r3 + .balign 4, 0 +_021F1B5C: .word MOD05_021F1CA4 + + thumb_func_start MOD05_021F1B60 +MOD05_021F1B60: ; 0x021F1B60 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F1B76 + add r1, r4, #4 + bl MOD05_021F20D8 +_021F1B76: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2060 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1B8C +MOD05_021F1B8C: ; 0x021F1B8C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1BCC + ldr r0, [r4] + cmp r0, #0 + bne _021F1BAE + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F1FC8 +_021F1BAE: + ldr r0, [r4] + cmp r0, #0 + beq _021F1BCC + add r1, r4, #4 + bl MOD05_021F20F8 + ldr r1, [r4] + add r0, r5, #0 + bl MOD05_021F2F48 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_021F1BCC: + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1BD0 +MOD05_021F1BD0: ; 0x021F1BD0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD05_021F1C34 + mov r1, #0 + mov r0, #6 + lsl r0, r0, #0xe + str r0, [sp, #4] + str r1, [sp] + str r1, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058BB4 + add sp, #0xc + pop {r3, r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1BF4 +MOD05_021F1BF4: ; 0x021F1BF4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0] + add r0, r5, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F1C12 + cmp r4, #0 + beq _021F1C12 + add r0, r5, #0 + bl MOD05_021F1C48 +_021F1C12: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F1C14 +MOD05_021F1C14: ; 0x021F1C14 + ldr r3, _021F1C18 ; =MOD05_021F1CA4 + bx r3 + .balign 4, 0 +_021F1C18: .word MOD05_021F1CA4 + + thumb_func_start MOD05_021F1C1C +MOD05_021F1C1C: ; 0x021F1C1C + ldr r3, _021F1C20 ; =0x02058629 + bx r3 + .balign 4, 0 +_021F1C20: .word 0x02058629 + + thumb_func_start MOD05_021F1C24 +MOD05_021F1C24: ; 0x021F1C24 + push {r3, lr} + bl FUN_02058628 + bl MOD05_021F1C30 + pop {r3, pc} + + thumb_func_start MOD05_021F1C30 +MOD05_021F1C30: ; 0x021F1C30 + ldr r0, [r0] + bx lr + + thumb_func_start MOD05_021F1C34 +MOD05_021F1C34: ; 0x021F1C34 + push {r4, lr} + add r4, r0, #0 + mov r1, #0x10 + bl FUN_02058604 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F1FC8 + pop {r4, pc} + + thumb_func_start MOD05_021F1C48 +MOD05_021F1C48: ; 0x021F1C48 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02058628 + ldr r4, [r0] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2F48 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F1C64 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F1C64 +MOD05_021F1C64: ; 0x021F1C64 + push {r4, r5, r6, lr} + mov r4, #1 + add r6, r1, #0 + lsl r1, r4, #9 + add r5, r0, #0 + bl FUN_0205842C + cmp r0, #1 + bne _021F1C78 + mov r4, #0 +_021F1C78: + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #1 + bne _021F1C96 + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #0 + bne _021F1C96 + mov r4, #0 +_021F1C96: + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl FUN_0201F80C + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1CA4 +MOD05_021F1CA4: ; 0x021F1CA4 + push {r4, lr} + add r4, r0, #0 + bl FUN_02058628 + add r1, r0, #0 + add r0, r4, #0 + bl MOD05_021F2060 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1CB8 +MOD05_021F1CB8: ; 0x021F1CB8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + mov r1, #1 + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02058390 + cmp r0, #0 + beq _021F1CD2 + bl ErrorHandling +_021F1CD2: + add r0, r5, #0 + bl MOD05_021F1D68 + add r0, r5, #0 + bl FUN_02058368 + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0205839C + sub r0, r0, #1 + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_020583A0 + str r4, [sp] + str r6, [sp, #4] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + add r1, r5, #0 + str r7, [sp, #8] + bl MOD05_021F1F04 + add r0, r5, #0 + mov r1, #4 + bl MOD05_021F3780 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020583A4 + ldr r1, _021F1D28 ; =0x021F8B84 + add r0, r4, #0 + ldr r1, [r1] + bl MOD05_021F3810 + add r0, r5, #0 + mov r1, #1 + bl FUN_0205837C + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .balign 4, 0 +_021F1D28: .word 0x021F8B84 + + thumb_func_start MOD05_021F1D2C +MOD05_021F1D2C: ; 0x021F1D2C + push {r4, lr} + add r4, r0, #0 + bl FUN_020587E0 + cmp r0, #1 + beq _021F1D3C + bl ErrorHandling +_021F1D3C: + add r0, r4, #0 + bl FUN_020583A0 + bl MOD05_021F1F58 + add r0, r4, #0 + bl FUN_020583AC + bl MOD05_021F379C + add r0, r4, #0 + mov r1, #0 + bl FUN_020583A4 + add r0, r4, #0 + mov r1, #1 + bl FUN_02058384 + add r0, r4, #0 + bl MOD05_021F1D80 + pop {r4, pc} + + thumb_func_start MOD05_021F1D68 +MOD05_021F1D68: ; 0x021F1D68 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x51 + mov r1, #4 + bl FUN_02006670 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_020583F0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1D80 +MOD05_021F1D80: ; 0x021F1D80 + push {r3, lr} + bl FUN_020583F4 + bl FUN_020066F4 + pop {r3, pc} + + thumb_func_start MOD05_021F1D8C +MOD05_021F1D8C: ; 0x021F1D8C + push {r4, lr} + add r4, r0, #0 + bl FUN_02058578 + mov r1, #4 + bl FUN_02058390 + cmp r0, #0 + bne _021F1DC6 + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xe + bl FUN_02058424 + cmp r0, #0 + beq _021F1DC6 + add r0, r4, #0 + bl FUN_02058920 + cmp r0, #0 + beq _021F1DC0 + add r0, r4, #0 + bl FUN_02058AB4 + cmp r0, #0 + beq _021F1DC6 +_021F1DC0: + add r0, r4, #0 + bl FUN_020586A0 +_021F1DC6: + pop {r4, pc} + + thumb_func_start MOD05_021F1DC8 +MOD05_021F1DC8: ; 0x021F1DC8 + push {r3, lr} + bl FUN_02058458 + bl MOD05_021F1DD4 + pop {r3, pc} + + thumb_func_start MOD05_021F1DD4 +MOD05_021F1DD4: ; 0x021F1DD4 + push {r3, lr} + ldr r3, _021F1DF4 ; =0x021F9A9C + ldr r1, _021F1DF8 ; =0x0000FFFF +_021F1DDA: + ldr r2, [r3] + cmp r2, r0 + bne _021F1DE4 + add r0, r3, #0 + pop {r3, pc} +_021F1DE4: + add r3, #8 + ldr r2, [r3] + cmp r2, r1 + bne _021F1DDA + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .balign 4, 0 +_021F1DF4: .word 0x021F9A9C +_021F1DF8: .word 0x0000FFFF + + thumb_func_start MOD05_021F1DFC +MOD05_021F1DFC: ; 0x021F1DFC + push {r4, lr} + add r4, r0, #0 + bl FUN_02058920 + cmp r0, #1 + bne _021F1E16 + add r0, r4, #0 + bl FUN_02058AB4 + cmp r0, #0 + bne _021F1E16 + mov r0, #1 + pop {r4, pc} +_021F1E16: + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #8 + bl FUN_02058424 + cmp r0, #0 + beq _021F1E28 + mov r0, #1 + pop {r4, pc} +_021F1E28: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD05_021F1E2C +MOD05_021F1E2C: ; 0x021F1E2C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r2, #0 + bl FUN_020583F4 + add r1, r4, #0 + add r6, r0, #0 + bl FUN_020067D0 + add r1, r0, #0 + cmp r5, #1 + bne _021F1E4C + mov r0, #4 + bl FUN_02016998 + b _021F1E52 +_021F1E4C: + mov r0, #4 + bl FUN_020169D8 +_021F1E52: + add r5, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, r5, #0 + bl FUN_02006774 + add r0, r5, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1E64 +MOD05_021F1E64: ; 0x021F1E64 + push {r3, r4, r5, lr} + sub sp, #0x30 + add r4, r1, #0 + add r5, r0, #0 + add r1, sp, #0x24 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0x18 + bl FUN_02058B84 + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058BA4 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058BC4 + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x18] + ldr r2, [sp, #0xc] + add r0, r1, r0 + ldr r3, [sp] + add r0, r2, r0 + add r0, r3, r0 + str r0, [r4] + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x10] + add r0, r1, r0 + ldr r3, [sp, #4] + add r0, r2, r0 + add r0, r3, r0 + str r0, [r4, #4] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x14] + add r0, r1, r0 + ldr r3, [sp, #8] + add r0, r2, r0 + add r0, r3, r0 + str r0, [r4, #8] + add sp, #0x30 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1EC0 +MOD05_021F1EC0: ; 0x021F1EC0 + push {r4, lr} + add r4, r0, #0 + bl FUN_020584AC + add r0, r4, #0 + bl FUN_02058884 + cmp r0, #1 + bne _021F1ED8 + add r0, r4, #0 + bl FUN_020586A0 +_021F1ED8: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1EDC +MOD05_021F1EDC: ; 0x021F1EDC + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl FUN_0205889C + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1EF4 +MOD05_021F1EF4: ; 0x021F1EF4 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F1EF8 +MOD05_021F1EF8: ; 0x021F1EF8 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F1EFC +MOD05_021F1EFC: ; 0x021F1EFC + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F1F00 +MOD05_021F1F00: ; 0x021F1F00 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F1F04 +MOD05_021F1F04: ; 0x021F1F04 + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + mov r2, #0x41 + add r5, r0, #0 + lsl r2, r2, #2 + str r1, [r5, r2] + add r1, r4, #0 + bl MOD05_021F2E40 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0xa + bl MOD05_021F33B4 + mov r2, #4 + mov r1, #8 + ldr r0, [sp, #0x18] + str r2, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + add r3, r1, #0 + str r0, [sp, #8] + add r0, r5, #0 + bl MOD05_021F22E0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2160 + ldr r1, [sp, #0x20] + ldr r2, _021F1F50 ; =0x021F8B90 + ldr r3, _021F1F54 ; =0x021F8B88 + add r0, r5, #0 + bl MOD05_021F25A0 + add sp, #0xc + pop {r4, r5, pc} + .balign 4, 0 +_021F1F50: .word 0x021F8B90 +_021F1F54: .word 0x021F8B88 + + thumb_func_start MOD05_021F1F58 +MOD05_021F1F58: ; 0x021F1F58 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F3458 + add r0, r4, #0 + bl MOD05_021F21AC + add r0, r4, #0 + bl MOD05_021F2D48 + bl MOD05_021F2E68 + add r0, r4, #0 + bl MOD05_021F2368 + pop {r4, pc} + + thumb_func_start MOD05_021F1F78 +MOD05_021F1F78: ; 0x021F1F78 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov r1, #0 + add r6, r2, #0 + add r7, r0, #0 + str r1, [r5] + bl MOD05_021F2F3C + add r1, r6, #0 + str r0, [sp] + bl MOD05_021F28E8 + add r4, r0, #0 + bne _021F1FA2 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD05_021F211C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F1FA2: + sub r0, r4, #3 + cmp r0, #1 + bhi _021F1FB8 + ldr r0, [sp] + add r1, r7, #0 + add r2, r5, #0 + add r3, r6, #0 + bl MOD05_021F32BC + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F1FB8: + add r0, r7, #0 + add r1, r6, #0 + bl MOD05_021F1FE0 + str r0, [r5] + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1FC8 +MOD05_021F1FC8: ; 0x021F1FC8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02058458 + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F1F78 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F1FE0 +MOD05_021F1FE0: ; 0x021F1FE0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + bl MOD05_021F2F3C + add r4, r0, #0 + bl MOD05_021F2D48 + add r7, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2AC8 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F21CC + add r4, r0, #0 + bne _021F200C + bl ErrorHandling +_021F200C: + add r0, r6, #0 + add r1, sp, #0 + bl MOD05_021F1E64 + add r0, r7, #0 + add r1, r4, #0 + add r2, sp, #0 + bl MOD05_021F2E70 + add r4, r0, #0 + bne _021F2026 + bl ErrorHandling +_021F2026: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F202C +MOD05_021F202C: ; 0x021F202C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + add r6, r2, #0 + bl FUN_0201F744 + mov r0, #0 + str r0, [r4] + add r0, r5, #0 + bl FUN_02058578 + add r1, r5, #0 + add r2, r6, #0 + bl MOD05_021F2284 + cmp r0, #0 + bne _021F205C + add r0, r5, #0 + bl MOD05_021F2F3C + add r1, r6, #0 + bl MOD05_021F2240 +_021F205C: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2060 +MOD05_021F2060: ; 0x021F2060 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + bl MOD05_021F2150 + ldr r0, [r4] + cmp r0, #0 + beq _021F2092 + add r0, r5, #0 + bl FUN_02058458 + add r6, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F2088 + add r0, r5, #0 + bl FUN_0205C340 + add r6, r0, #0 +_021F2088: + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F202C +_021F2092: + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F2094 +MOD05_021F2094: ; 0x021F2094 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r4, r2, #0 + bl MOD05_021F2150 + ldr r0, [r5] + cmp r0, #0 + beq _021F20AE + bl FUN_0201F744 + mov r0, #0 + str r0, [r5] +_021F20AE: + ldr r0, _021F20D4 ; =0x0000FFFF + cmp r4, r0 + beq _021F20D2 + add r0, r6, #0 + bl FUN_02058578 + add r1, r6, #0 + add r2, r4, #0 + bl MOD05_021F2284 + cmp r0, #0 + bne _021F20D2 + add r0, r6, #0 + bl MOD05_021F2F3C + add r1, r4, #0 + bl MOD05_021F2240 +_021F20D2: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F20D4: .word 0x0000FFFF + + thumb_func_start MOD05_021F20D8 +MOD05_021F20D8: ; 0x021F20D8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0201F820 + str r0, [r4] + add r0, r5, #0 + bl FUN_0201F844 + strh r0, [r4, #6] + add r0, r5, #0 + bl FUN_0201F880 + str r0, [r4, #8] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F20F8 +MOD05_021F20F8: ; 0x021F20F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201F80C + ldrh r1, [r4, #6] + add r0, r5, #0 + bl FUN_0201F830 + ldr r1, [r4, #8] + add r0, r5, #0 + bl FUN_0201F86C + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F211C +MOD05_021F211C: ; 0x021F211C + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r6, r0, #0 + add r5, r1, #0 + bl MOD05_021F2F3C + add r1, r4, #0 + add r7, r0, #0 + bl MOD05_021F2460 + cmp r0, #0 + bne _021F2140 + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021F1FE0 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_021F2140: + add r0, r7, #0 + add r1, r6, #0 + add r2, r5, #0 + add r3, r4, #0 + bl MOD05_021F32BC + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2150 +MOD05_021F2150: ; 0x021F2150 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F2F3C + add r1, r4, #0 + bl MOD05_021F32F8 + pop {r4, pc} + + thumb_func_start MOD05_021F2160 +MOD05_021F2160: ; 0x021F2160 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x28 + add r7, r0, #0 + mov r0, #4 + mul r1, r6 + bl FUN_02016998 + add r4, r0, #0 + add r0, r7, #0 + add r0, #0xe4 + str r4, [r0] + cmp r4, #0 + bne _021F2180 + bl ErrorHandling +_021F2180: + mov r0, #4 + lsl r1, r6, #3 + bl FUN_02016998 + add r5, r0, #0 + add r7, #0xf4 + str r5, [r7] + cmp r5, #0 + bne _021F2196 + bl ErrorHandling +_021F2196: + ldr r0, _021F21A8 ; =0x0000FFFF +_021F2198: + str r0, [r5] + str r4, [r5, #4] + add r5, #8 + add r4, #0x28 + sub r6, r6, #1 + bne _021F2198 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F21A8: .word 0x0000FFFF + + thumb_func_start MOD05_021F21AC +MOD05_021F21AC: ; 0x021F21AC + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F2260 + add r1, r4, #0 + add r1, #0xe4 + ldr r1, [r1] + mov r0, #4 + bl FUN_02016A8C + add r4, #0xf4 + ldr r1, [r4] + mov r0, #4 + bl FUN_02016A8C + pop {r4, pc} + + thumb_func_start MOD05_021F21CC +MOD05_021F21CC: ; 0x021F21CC + push {r4, r5, r6, lr} + add r2, r0, #0 + add r2, #0xf4 + ldr r4, [r2] + ldr r2, [r0, #4] + add r6, r4, #0 + add r5, r2, #0 +_021F21DA: + ldr r3, [r6] + cmp r3, r1 + bne _021F21E4 + ldr r0, [r6, #4] + pop {r4, r5, r6, pc} +_021F21E4: + add r6, #8 + sub r5, r5, #1 + bne _021F21DA + ldr r3, _021F2208 ; =0x0000FFFF +_021F21EC: + ldr r5, [r4] + cmp r5, r3 + bne _021F21FE + str r1, [r4] + ldr r2, [r4, #4] + bl MOD05_021F2ED0 + ldr r0, [r4, #4] + pop {r4, r5, r6, pc} +_021F21FE: + add r4, #8 + sub r2, r2, #1 + bne _021F21EC + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F2208: .word 0x0000FFFF + + thumb_func_start MOD05_021F220C +MOD05_021F220C: ; 0x021F220C + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + bl FUN_020583A0 + add r1, r0, #0 + add r1, #0xf4 + ldr r2, [r1] + ldr r1, [r0, #4] +_021F221E: + ldr r0, [r2] + cmp r0, r5 + bne _021F2234 + ldr r3, [r2, #4] + mov r2, #5 +_021F2228: + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + sub r2, r2, #1 + bne _021F2228 + mov r0, #1 + pop {r3, r4, r5, pc} +_021F2234: + add r2, #8 + sub r1, r1, #1 + bne _021F221E + mov r0, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2240 +MOD05_021F2240: ; 0x021F2240 + add r2, r0, #0 + add r2, #0xf4 + ldr r3, [r2] + ldr r2, [r0, #4] +_021F2248: + ldr r0, [r3] + cmp r0, r1 + bne _021F2254 + ldr r0, _021F225C ; =0x0000FFFF + str r0, [r3] + bx lr +_021F2254: + add r3, #8 + sub r2, r2, #1 + bne _021F2248 + bx lr + .balign 4, 0 +_021F225C: .word 0x0000FFFF + + thumb_func_start MOD05_021F2260 +MOD05_021F2260: ; 0x021F2260 + push {r3, r4} + add r1, r0, #0 + add r1, #0xf4 + ldr r4, [r1] + ldr r1, _021F2280 ; =0x0000FFFF + ldr r3, [r0, #4] + add r0, r1, #0 +_021F226E: + ldr r2, [r4] + cmp r2, r0 + beq _021F2276 + str r1, [r4] +_021F2276: + add r4, #8 + sub r3, r3, #1 + bne _021F226E + pop {r3, r4} + bx lr + .balign 4, 0 +_021F2280: .word 0x0000FFFF + + thumb_func_start MOD05_021F2284 +MOD05_021F2284: ; 0x021F2284 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl FUN_02058368 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_020583BC + str r0, [sp] +_021F229A: + ldr r0, [sp] + cmp r0, r6 + beq _021F22CE + bl FUN_02058830 + cmp r0, #1 + bne _021F22CE + ldr r0, [sp] + bl FUN_02058458 + add r5, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F22C0 + ldr r0, [sp] + bl FUN_0205C340 + add r5, r0, #0 +_021F22C0: + ldr r0, _021F22DC ; =0x0000FFFF + cmp r5, r0 + beq _021F22CE + cmp r5, r7 + bne _021F22CE + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F22CE: + add r0, sp, #0 + bl FUN_020583D4 + sub r4, r4, #1 + bne _021F229A + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F22DC: .word 0x0000FFFF + + thumb_func_start MOD05_021F22E0 +MOD05_021F22E0: ; 0x021F22E0 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + mov r0, #4 + mov r1, #0x40 + lsl r2, r4, #0xc + add r3, r4, #0 + bl MOD05_021F5990 + add r1, r5, #0 + add r1, #0xf8 + str r0, [r1] + add r0, r5, #0 + bl MOD05_021F2614 + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F2D80 + add r0, r5, #0 + sub r1, r4, r6 + bl MOD05_021F2D88 + mov r0, #4 + mov r1, #0x41 + lsl r2, r7, #7 + add r3, r7, #0 + bl MOD05_021F5990 + add r1, r5, #0 + add r1, #0xfc + str r0, [r1] + add r0, r5, #0 + bl MOD05_021F2750 + ldr r1, [sp, #0x18] + add r0, r5, #0 + bl MOD05_021F2D90 + ldr r1, [sp, #0x18] + add r0, r5, #0 + sub r1, r7, r1 + bl MOD05_021F2D98 + ldr r0, [sp, #0x1c] + mov r1, #4 + bl FUN_02020E90 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D64 + add r0, r5, #0 + bl MOD05_021F288C + ldr r1, [sp, #0x20] + add r0, r5, #0 + bl MOD05_021F2DA0 + ldr r2, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r0, r5, #0 + sub r1, r2, r1 + bl MOD05_021F2DA8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F2368 +MOD05_021F2368: ; 0x021F2368 + push {r4, lr} + add r4, r0, #0 + add r0, #0xf8 + ldr r0, [r0] + bl MOD05_021F59EC + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + bl MOD05_021F59EC + add r0, r4, #0 + bl MOD05_021F2D6C + bl FUN_02020ED4 + pop {r4, pc} + .balign 4, 0 +_021F238C: + ldr r3, [r2] + cmp r3, r0 + bne _021F2396 + add r0, r2, #0 + bx lr +_021F2396: + add r2, #8 + ldr r3, [r2] + cmp r3, r1 + bne _021F238C + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F23A4 +MOD05_021F23A4: ; 0x021F23A4 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r4, r2, #0 + add r5, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + add r7, r3, #0 + bl MOD05_021F5AA4 + cmp r0, #1 + bne _021F23BE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F23BE: + ldr r2, [sp, #0x18] + add r0, r4, #0 + add r1, r7, #0 + bl _021F238C + add r7, r0, #0 + bne _021F23D0 + bl ErrorHandling +_021F23D0: + mov r0, #0x41 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_020583F4 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r3, [r7, #4] + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021F5AE4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F23F0 +MOD05_021F23F0: ; 0x021F23F0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0xf0 + add r4, r2, #0 + add r6, r1, #0 + ldr r0, [r0] + add r1, r4, #0 + add r7, r3, #0 + bl FUN_02020EF8 + cmp r0, #0 + bne _021F240C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F240C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F3084 + cmp r0, #0 + beq _021F241C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F241C: + ldr r1, _021F2448 ; =0x0000FFFF + add r0, r4, #0 + add r2, r7, #0 + bl _021F238C + add r2, r0, #0 + bne _021F242E + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021F242E: + ldr r2, [r2, #4] + add r0, r5, #0 + add r1, r4, #0 + add r3, r6, #0 + bl MOD05_021F2FD0 + cmp r0, #1 + bne _021F2442 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F2442: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F2448: .word 0x0000FFFF + + thumb_func_start MOD05_021F244C +MOD05_021F244C: ; 0x021F244C + push {r3, lr} + ldr r3, _021F245C ; =0x021FA0AC + add r2, r1, #0 + mov r1, #0 + bl MOD05_021F23F0 + pop {r3, pc} + nop +_021F245C: .word 0x021FA0AC + + thumb_func_start MOD05_021F2460 +MOD05_021F2460: ; 0x021F2460 + push {r3, lr} + ldr r3, _021F2470 ; =0x021FA0AC + add r2, r1, #0 + mov r1, #1 + bl MOD05_021F23F0 + pop {r3, pc} + nop +_021F2470: .word 0x021FA0AC + + thumb_func_start MOD05_021F2474 +MOD05_021F2474: ; 0x021F2474 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4] + ldr r0, _021F2494 ; =0x0000FFFF + cmp r1, r0 + beq _021F2492 + add r6, r0, #0 +_021F2484: + add r0, r5, #0 + bl MOD05_021F244C + add r4, r4, #4 + ldr r1, [r4] + cmp r1, r6 + bne _021F2484 +_021F2492: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F2494: .word 0x0000FFFF + + thumb_func_start MOD05_021F2498 +MOD05_021F2498: ; 0x021F2498 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D54 + ldr r0, _021F24C0 ; =0x021F9094 + add r1, r5, #0 + str r0, [sp] + add r1, #0xf8 + ldr r1, [r1] + ldr r3, _021F24C4 ; =0x0000FFFF + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021F23A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2628 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F24C0: .word 0x021F9094 +_021F24C4: .word 0x0000FFFF + + thumb_func_start MOD05_021F24C8 +MOD05_021F24C8: ; 0x021F24C8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D54 + ldr r0, _021F24F0 ; =0x021F9094 + add r1, r5, #0 + str r0, [sp] + add r1, #0xf8 + ldr r1, [r1] + ldr r3, _021F24F4 ; =0x0000FFFF + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021F23A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2670 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F24F0: .word 0x021F9094 +_021F24F4: .word 0x0000FFFF + + thumb_func_start MOD05_021F24F8 +MOD05_021F24F8: ; 0x021F24F8 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4] + ldr r0, _021F2518 ; =0x0000FFFF + cmp r1, r0 + beq _021F2516 + add r6, r0, #0 +_021F2508: + add r0, r5, #0 + bl MOD05_021F2498 + add r4, r4, #4 + ldr r1, [r4] + cmp r1, r6 + bne _021F2508 +_021F2516: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F2518: .word 0x0000FFFF + + thumb_func_start MOD05_021F251C +MOD05_021F251C: ; 0x021F251C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D5C + ldr r0, _021F2544 ; =0x021F90E4 + add r1, r5, #0 + str r0, [sp] + add r1, #0xfc + ldr r1, [r1] + ldr r3, _021F2548 ; =0x0000FFFF + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021F23A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2764 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F2544: .word 0x021F90E4 +_021F2548: .word 0x0000FFFF + + thumb_func_start MOD05_021F254C +MOD05_021F254C: ; 0x021F254C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D5C + ldr r0, _021F2574 ; =0x021F90E4 + add r1, r5, #0 + str r0, [sp] + add r1, #0xfc + ldr r1, [r1] + ldr r3, _021F2578 ; =0x0000FFFF + add r0, r5, #0 + add r2, r4, #0 + bl MOD05_021F23A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F27AC + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F2574: .word 0x021F90E4 +_021F2578: .word 0x0000FFFF + + thumb_func_start MOD05_021F257C +MOD05_021F257C: ; 0x021F257C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, [r4] + ldr r0, _021F259C ; =0x0000FFFF + cmp r1, r0 + beq _021F259A + add r6, r0, #0 +_021F258C: + add r0, r5, #0 + bl MOD05_021F251C + add r4, r4, #4 + ldr r1, [r4] + cmp r1, r6 + bne _021F258C +_021F259A: + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F259C: .word 0x0000FFFF + + thumb_func_start MOD05_021F25A0 +MOD05_021F25A0: ; 0x021F25A0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD05_021F2474 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F24F8 + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F257C + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F25C0: + stmia r0!, {r1} + sub r2, r2, #1 + bne _021F25C0 + bx lr + + thumb_func_start MOD05_021F25C8 +MOD05_021F25C8: ; 0x021F25C8 + push {r3, r4} +_021F25CA: + ldr r4, [r0] + cmp r4, r2 + bne _021F25D8 + str r1, [r0] + mov r0, #1 + pop {r3, r4} + bx lr +_021F25D8: + add r0, r0, #4 + sub r3, r3, #1 + bne _021F25CA + mov r0, #0 + pop {r3, r4} + bx lr +_021F25E4: + ldr r3, [r0] + cmp r3, r1 + bne _021F25EE + mov r0, #1 + bx lr +_021F25EE: + add r0, r0, #4 + sub r2, r2, #1 + bne _021F25E4 + mov r0, #0 + bx lr + + thumb_func_start MOD05_021F25F8 +MOD05_021F25F8: ; 0x021F25F8 + push {r3, r4} +_021F25FA: + ldr r4, [r0] + cmp r4, r1 + bne _021F2608 + str r2, [r0] + mov r0, #1 + pop {r3, r4} + bx lr +_021F2608: + add r0, r0, #4 + sub r3, r3, #1 + bne _021F25FA + mov r0, #0 + pop {r3, r4} + bx lr + + thumb_func_start MOD05_021F2614 +MOD05_021F2614: ; 0x021F2614 + push {r3, lr} + bl MOD05_021F2D78 + ldr r1, _021F2624 ; =0x0000FFFF + mov r2, #8 + bl _021F25C0 + pop {r3, pc} + .balign 4, 0 +_021F2624: .word 0x0000FFFF + + thumb_func_start MOD05_021F2628 +MOD05_021F2628: ; 0x021F2628 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D84 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D78 + ldr r2, _021F2650 ; =0x0000FFFF + add r1, r4, #0 + add r3, r6, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F264C + bl ErrorHandling +_021F264C: + pop {r4, r5, r6, pc} + nop +_021F2650: .word 0x0000FFFF + + thumb_func_start MOD05_021F2654 +MOD05_021F2654: ; 0x021F2654 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D84 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D78 + add r1, r4, #0 + add r2, r6, #0 + bl _021F25E4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F2670 +MOD05_021F2670: ; 0x021F2670 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D78 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D84 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D8C + add r3, r0, #0 + ldr r2, _021F26A0 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F269E + bl ErrorHandling +_021F269E: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F26A0: .word 0x0000FFFF + + thumb_func_start MOD05_021F26A4 +MOD05_021F26A4: ; 0x021F26A4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D78 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D84 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D8C + add r2, r0, #0 + add r0, r6, r4 + add r1, r7, #0 + bl _021F25E4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F26CC +MOD05_021F26CC: ; 0x021F26CC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D78 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D84 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D8C + add r3, r0, #0 + ldr r2, _021F26F4 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25F8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F26F4: .word 0x0000FFFF + + thumb_func_start MOD05_021F26F8 +MOD05_021F26F8: ; 0x021F26F8 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + add r0, r6, #0 + bl MOD05_021F2D54 + add r0, r6, #0 + bl MOD05_021F2D78 + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021F2D84 + lsl r0, r0, #2 + add r5, r4, r0 + add r0, r6, #0 + bl MOD05_021F2D8C + add r4, r0, #0 +_021F271E: + ldr r1, [r5] + ldr r0, _021F274C ; =0x0000FFFF + cmp r1, r0 + beq _021F2742 + add r0, r7, #0 + mov r2, #0 + bl MOD05_021F2B70 + cmp r0, #0 + bne _021F2742 + add r0, r6, #0 + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [r5] + bl MOD05_021F5A74 + ldr r0, _021F274C ; =0x0000FFFF + str r0, [r5] +_021F2742: + add r5, r5, #4 + sub r4, r4, #1 + bne _021F271E + pop {r3, r4, r5, r6, r7, pc} + nop +_021F274C: .word 0x0000FFFF + + thumb_func_start MOD05_021F2750 +MOD05_021F2750: ; 0x021F2750 + push {r3, lr} + bl MOD05_021F2D7C + ldr r1, _021F2760 ; =0x0000FFFF + mov r2, #8 + bl _021F25C0 + pop {r3, pc} + .balign 4, 0 +_021F2760: .word 0x0000FFFF + + thumb_func_start MOD05_021F2764 +MOD05_021F2764: ; 0x021F2764 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D94 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D7C + ldr r2, _021F278C ; =0x0000FFFF + add r1, r4, #0 + add r3, r6, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F2788 + bl ErrorHandling +_021F2788: + pop {r4, r5, r6, pc} + nop +_021F278C: .word 0x0000FFFF + + thumb_func_start MOD05_021F2790 +MOD05_021F2790: ; 0x021F2790 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2D94 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D7C + add r1, r4, #0 + add r2, r6, #0 + bl _021F25E4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F27AC +MOD05_021F27AC: ; 0x021F27AC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D7C + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D94 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D9C + add r3, r0, #0 + ldr r2, _021F27DC ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F27DA + bl ErrorHandling +_021F27DA: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F27DC: .word 0x0000FFFF + + thumb_func_start MOD05_021F27E0 +MOD05_021F27E0: ; 0x021F27E0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D7C + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D94 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D9C + add r2, r0, #0 + add r0, r6, r4 + add r1, r7, #0 + bl _021F25E4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2808 +MOD05_021F2808: ; 0x021F2808 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D7C + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D94 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2D9C + add r3, r0, #0 + ldr r2, _021F2830 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25F8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F2830: .word 0x0000FFFF + + thumb_func_start MOD05_021F2834 +MOD05_021F2834: ; 0x021F2834 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + add r7, r0, #0 + add r0, r6, #0 + bl MOD05_021F2D5C + add r0, r6, #0 + bl MOD05_021F2D7C + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021F2D94 + lsl r0, r0, #2 + add r5, r4, r0 + add r0, r6, #0 + bl MOD05_021F2D9C + add r4, r0, #0 +_021F285A: + ldr r1, [r5] + ldr r0, _021F2888 ; =0x0000FFFF + cmp r1, r0 + beq _021F287E + add r0, r7, #0 + mov r2, #0 + bl MOD05_021F2BF8 + cmp r0, #0 + bne _021F287E + add r0, r6, #0 + add r0, #0xfc + ldr r0, [r0] + ldr r1, [r5] + bl MOD05_021F5A74 + ldr r0, _021F2888 ; =0x0000FFFF + str r0, [r5] +_021F287E: + add r5, r5, #4 + sub r4, r4, #1 + bne _021F285A + pop {r3, r4, r5, r6, r7, pc} + nop +_021F2888: .word 0x0000FFFF + + thumb_func_start MOD05_021F288C +MOD05_021F288C: ; 0x021F288C + push {r3, lr} + bl MOD05_021F2D74 + ldr r1, _021F289C ; =0x0000FFFF + mov r2, #0x20 + bl _021F25C0 + pop {r3, pc} + .balign 4, 0 +_021F289C: .word 0x0000FFFF + + thumb_func_start MOD05_021F28A0 +MOD05_021F28A0: ; 0x021F28A0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2DA4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D74 + ldr r2, _021F28C8 ; =0x0000FFFF + add r1, r4, #0 + add r3, r6, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F28C4 + bl ErrorHandling +_021F28C4: + pop {r4, r5, r6, pc} + nop +_021F28C8: .word 0x0000FFFF + + thumb_func_start MOD05_021F28CC +MOD05_021F28CC: ; 0x021F28CC + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2DA4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D74 + add r1, r4, #0 + add r2, r6, #0 + bl _021F25E4 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F28E8 +MOD05_021F28E8: ; 0x021F28E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F28CC + cmp r0, #1 + bne _021F28FA + mov r0, #1 + pop {r3, r4, r5, pc} +_021F28FA: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F29E0 + cmp r0, #1 + bne _021F290A + mov r0, #2 + pop {r3, r4, r5, pc} +_021F290A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F3084 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2914 +MOD05_021F2914: ; 0x021F2914 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D74 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2DA4 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2DAC + add r3, r0, #0 + ldr r2, _021F2944 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25C8 + cmp r0, #0 + bne _021F2942 + bl ErrorHandling +_021F2942: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F2944: .word 0x0000FFFF + + thumb_func_start MOD05_021F2948 +MOD05_021F2948: ; 0x021F2948 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D74 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2DA4 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2DAC + add r3, r0, #0 + ldr r2, _021F2970 ; =0x0000FFFF + add r0, r6, r4 + add r1, r7, #0 + bl MOD05_021F25F8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F2970: .word 0x0000FFFF + + thumb_func_start MOD05_021F2974 +MOD05_021F2974: ; 0x021F2974 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + str r0, [sp] + add r0, r6, #0 + bl MOD05_021F2D6C + str r0, [sp, #4] + add r0, r6, #0 + bl MOD05_021F2D74 + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021F2DA4 + lsl r0, r0, #2 + add r5, r4, r0 + add r0, r6, #0 + bl MOD05_021F2DAC + add r7, r0, #0 +_021F299E: + ldr r4, [r5] + ldr r0, _021F29DC ; =0x0000FFFF + cmp r4, r0 + beq _021F29D0 + ldr r0, [sp] + add r1, r4, #0 + mov r2, #0 + bl MOD05_021F2B10 + cmp r0, #0 + bne _021F29D0 + ldr r0, [sp, #4] + add r1, r4, #0 + bl FUN_02020FF0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021F3050 + add r0, r6, #0 + add r1, r4, #0 + bl MOD05_021F3204 + ldr r0, _021F29DC ; =0x0000FFFF + str r0, [r5] +_021F29D0: + add r5, r5, #4 + sub r7, r7, #1 + bne _021F299E + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F29DC: .word 0x0000FFFF + + thumb_func_start MOD05_021F29E0 +MOD05_021F29E0: ; 0x021F29E0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + bl MOD05_021F2D74 + add r6, r0, #0 + add r0, r5, #0 + bl MOD05_021F2DA4 + lsl r4, r0, #2 + add r0, r5, #0 + bl MOD05_021F2DAC + add r2, r0, #0 + add r0, r6, r4 + add r1, r7, #0 + bl _021F25E4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2A08 +MOD05_021F2A08: ; 0x021F2A08 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F28CC + cmp r0, #1 + bne _021F2A1A + mov r0, #0 + pop {r3, r4, r5, pc} +_021F2A1A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F29E0 + cmp r0, #1 + bne _021F2A2A + mov r0, #1 + pop {r3, r4, r5, pc} +_021F2A2A: + mov r0, #2 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2A30 +MOD05_021F2A30: ; 0x021F2A30 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2654 + cmp r0, #1 + bne _021F2A42 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F2A42: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F26A4 + cmp r0, #1 + bne _021F2A52 + mov r0, #1 + pop {r3, r4, r5, pc} +_021F2A52: + mov r0, #2 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2A58 +MOD05_021F2A58: ; 0x021F2A58 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2790 + cmp r0, #1 + bne _021F2A6A + mov r0, #0 + pop {r3, r4, r5, pc} +_021F2A6A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F27E0 + cmp r0, #1 + bne _021F2A7A + mov r0, #1 + pop {r3, r4, r5, pc} +_021F2A7A: + mov r0, #2 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2A80 +MOD05_021F2A80: ; 0x021F2A80 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F28E8 + cmp r0, #0 + bne _021F2A96 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2460 +_021F2A96: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2A98 +MOD05_021F2A98: ; 0x021F2A98 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2A30 + cmp r0, #2 + bne _021F2AAE + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F24C8 +_021F2AAE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2AB0 +MOD05_021F2AB0: ; 0x021F2AB0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2A58 + cmp r0, #2 + bne _021F2AC6 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F254C +_021F2AC6: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2AC8 +MOD05_021F2AC8: ; 0x021F2AC8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD05_021F2DE8 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F2A98 + add r0, r4, #0 + bl MOD05_021F2DF4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F2AB0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2A80 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2AF4 +MOD05_021F2AF4: ; 0x021F2AF4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F26F8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2834 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2974 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2B10 +MOD05_021F2B10: ; 0x021F2B10 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0 + add r5, r2, #0 + str r1, [sp, #4] + str r1, [sp] + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + add r7, r0, #0 + bl FUN_020580F4 + cmp r0, #1 + bne _021F2B6A +_021F2B2E: + cmp r5, #0 + beq _021F2B38 + ldr r0, [sp] + cmp r5, r0 + beq _021F2B5A +_021F2B38: + ldr r0, [sp] + bl FUN_02058458 + add r4, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F2B50 + ldr r0, [sp] + bl FUN_0205C340 + add r4, r0, #0 +_021F2B50: + cmp r4, r6 + bne _021F2B5A + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F2B5A: + add r0, r7, #0 + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + bl FUN_020580F4 + cmp r0, #1 + beq _021F2B2E +_021F2B6A: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F2B70 +MOD05_021F2B70: ; 0x021F2B70 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0 + add r5, r2, #0 + str r1, [sp, #4] + str r1, [sp] + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + add r7, r0, #0 + bl FUN_020580F4 + cmp r0, #1 + bne _021F2BEE +_021F2B8E: + cmp r5, #0 + beq _021F2B98 + ldr r0, [sp] + cmp r5, r0 + beq _021F2BDE +_021F2B98: + ldr r0, [sp] + bl FUN_02058458 + add r4, r0, #0 + ldr r0, _021F2BF4 ; =0x0000FFFF + cmp r4, r0 + beq _021F2BDE + ldr r0, [sp] + bl MOD05_021F1DC8 + ldr r0, [r0, #4] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #1 + bne _021F2BDE + add r0, r4, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F2BC8 + ldr r0, [sp] + bl FUN_0205C340 + add r4, r0, #0 +_021F2BC8: + ldr r0, _021F2BF4 ; =0x0000FFFF + cmp r4, r0 + beq _021F2BDE + add r0, r4, #0 + bl MOD05_021F2DE8 + cmp r6, r0 + bne _021F2BDE + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F2BDE: + add r0, r7, #0 + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + bl FUN_020580F4 + cmp r0, #1 + beq _021F2B8E +_021F2BEE: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F2BF4: .word 0x0000FFFF + + thumb_func_start MOD05_021F2BF8 +MOD05_021F2BF8: ; 0x021F2BF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0 + add r5, r2, #0 + str r1, [sp, #4] + str r1, [sp] + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + add r7, r0, #0 + bl FUN_020580F4 + cmp r0, #1 + bne _021F2C74 +_021F2C16: + cmp r5, #0 + beq _021F2C20 + ldr r0, [sp] + cmp r0, r5 + beq _021F2C64 +_021F2C20: + ldr r0, _021F2C7C ; =0x0000FFFF + cmp r4, r0 + beq _021F2C64 + ldr r0, [sp] + bl MOD05_021F1DC8 + ldr r0, [r0, #4] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #1 + bne _021F2C64 + ldr r0, [sp] + bl FUN_02058458 + add r4, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _021F2C4E + ldr r0, [sp] + bl FUN_0205C340 + add r4, r0, #0 +_021F2C4E: + ldr r0, _021F2C7C ; =0x0000FFFF + cmp r4, r0 + beq _021F2C64 + add r0, r4, #0 + bl MOD05_021F2DF4 + cmp r6, r0 + bne _021F2C64 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F2C64: + add r0, r7, #0 + add r1, sp, #0 + add r2, sp, #4 + mov r3, #1 + bl FUN_020580F4 + cmp r0, #1 + beq _021F2C16 +_021F2C74: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F2C7C: .word 0x0000FFFF + + thumb_func_start MOD05_021F2C80 +MOD05_021F2C80: ; 0x021F2C80 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + add r7, r2, #0 + bl FUN_020583A0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD05_021F2DE8 + str r0, [sp] + ldr r1, [sp] + add r0, r4, #0 + bl MOD05_021F2A30 + cmp r0, #1 + bne _021F2CC6 + ldr r1, [sp] + add r0, r6, #0 + add r2, r7, #0 + bl MOD05_021F2B70 + cmp r0, #0 + bne _021F2CC6 + add r0, r4, #0 + add r0, #0xf8 + ldr r0, [r0] + ldr r1, [sp] + bl MOD05_021F5A74 + ldr r1, [sp] + add r0, r4, #0 + bl MOD05_021F26CC +_021F2CC6: + add r0, r5, #0 + bl MOD05_021F2DF4 + str r0, [sp, #4] + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD05_021F2A58 + cmp r0, #1 + bne _021F2CFC + ldr r1, [sp, #4] + add r0, r6, #0 + add r2, r7, #0 + bl MOD05_021F2BF8 + cmp r0, #0 + bne _021F2CFC + add r0, r4, #0 + add r0, #0xfc + ldr r0, [r0] + ldr r1, [sp, #4] + bl MOD05_021F5A74 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD05_021F2808 +_021F2CFC: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2A08 + cmp r0, #1 + bne _021F2D3A + add r0, r6, #0 + add r1, r5, #0 + add r2, r7, #0 + bl MOD05_021F2B10 + cmp r0, #0 + bne _021F2D3A + add r0, r4, #0 + bl MOD05_021F2D6C + add r1, r5, #0 + bl FUN_02020FF0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F2948 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F3050 + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F3204 +_021F2D3A: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2D40 +MOD05_021F2D40: ; 0x021F2D40 + add r0, #0xe0 + str r1, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D48 +MOD05_021F2D48: ; 0x021F2D48 + add r0, #0xe0 + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D50 +MOD05_021F2D50: ; 0x021F2D50 + str r1, [r0, #4] + bx lr + + thumb_func_start MOD05_021F2D54 +MOD05_021F2D54: ; 0x021F2D54 + add r0, #0xe8 + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D5C +MOD05_021F2D5C: ; 0x021F2D5C + add r0, #0xec + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D64 +MOD05_021F2D64: ; 0x021F2D64 + add r0, #0xf0 + str r1, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D6C +MOD05_021F2D6C: ; 0x021F2D6C + add r0, #0xf0 + ldr r0, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F2D74 +MOD05_021F2D74: ; 0x021F2D74 + add r0, #0x60 + bx lr + + thumb_func_start MOD05_021F2D78 +MOD05_021F2D78: ; 0x021F2D78 + add r0, #0x20 + bx lr + + thumb_func_start MOD05_021F2D7C +MOD05_021F2D7C: ; 0x021F2D7C + add r0, #0x40 + bx lr + + thumb_func_start MOD05_021F2D80 +MOD05_021F2D80: ; 0x021F2D80 + str r1, [r0, #8] + bx lr + + thumb_func_start MOD05_021F2D84 +MOD05_021F2D84: ; 0x021F2D84 + ldr r0, [r0, #8] + bx lr + + thumb_func_start MOD05_021F2D88 +MOD05_021F2D88: ; 0x021F2D88 + str r1, [r0, #0xc] + bx lr + + thumb_func_start MOD05_021F2D8C +MOD05_021F2D8C: ; 0x021F2D8C + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start MOD05_021F2D90 +MOD05_021F2D90: ; 0x021F2D90 + str r1, [r0, #0x10] + bx lr + + thumb_func_start MOD05_021F2D94 +MOD05_021F2D94: ; 0x021F2D94 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start MOD05_021F2D98 +MOD05_021F2D98: ; 0x021F2D98 + str r1, [r0, #0x14] + bx lr + + thumb_func_start MOD05_021F2D9C +MOD05_021F2D9C: ; 0x021F2D9C + ldr r0, [r0, #0x14] + bx lr + + thumb_func_start MOD05_021F2DA0 +MOD05_021F2DA0: ; 0x021F2DA0 + str r1, [r0, #0x18] + bx lr + + thumb_func_start MOD05_021F2DA4 +MOD05_021F2DA4: ; 0x021F2DA4 + ldr r0, [r0, #0x18] + bx lr + + thumb_func_start MOD05_021F2DA8 +MOD05_021F2DA8: ; 0x021F2DA8 + str r1, [r0, #0x1c] + bx lr + + thumb_func_start MOD05_021F2DAC +MOD05_021F2DAC: ; 0x021F2DAC + ldr r0, [r0, #0x1c] + bx lr + + thumb_func_start MOD05_021F2DB0 +MOD05_021F2DB0: ; 0x021F2DB0 + mov r3, #0x41 + lsl r3, r3, #2 + ldr r0, [r0, r3] + ldr r3, _021F2DBC ; =MOD05_021F1E2C + bx r3 + nop +_021F2DBC: .word MOD05_021F1E2C + + thumb_func_start MOD05_021F2DC0 +MOD05_021F2DC0: ; 0x021F2DC0 + push {r3, lr} + ldr r3, _021F2DE0 ; =0x021FAC6C + ldr r1, _021F2DE4 ; =0x0000FFFF +_021F2DC6: + ldr r2, [r3] + cmp r2, r0 + bne _021F2DD0 + add r0, r3, #0 + pop {r3, pc} +_021F2DD0: + add r3, #0x10 + ldr r2, [r3] + cmp r2, r1 + bne _021F2DC6 + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .balign 4, 0 +_021F2DE0: .word 0x021FAC6C +_021F2DE4: .word 0x0000FFFF + + thumb_func_start MOD05_021F2DE8 +MOD05_021F2DE8: ; 0x021F2DE8 + push {r3, lr} + bl MOD05_021F2DC0 + ldr r0, [r0, #4] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2DF4 +MOD05_021F2DF4: ; 0x021F2DF4 + push {r3, lr} + bl MOD05_021F2DC0 + ldr r0, [r0, #8] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2E00 +MOD05_021F2E00: ; 0x021F2E00 + push {r3, lr} + bl MOD05_021F2DC0 + ldr r0, [r0, #0xc] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2E0C +MOD05_021F2E0C: ; 0x021F2E0C + push {r3, lr} + cmp r1, #1 + bne _021F2E1C + mov r1, #1 + lsl r1, r1, #0x16 + bl FUN_02058410 + pop {r3, pc} +_021F2E1C: + mov r1, #1 + lsl r1, r1, #0x16 + bl FUN_02058418 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2E28 +MOD05_021F2E28: ; 0x021F2E28 + push {r3, lr} + mov r1, #1 + lsl r1, r1, #0x16 + bl FUN_02058424 + cmp r0, #0 + beq _021F2E3A + mov r0, #1 + pop {r3, pc} +_021F2E3A: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2E40 +MOD05_021F2E40: ; 0x021F2E40 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #4 + add r4, r1, #0 + str r0, [sp, #4] + add r0, sp, #0 + str r4, [sp] + bl FUN_0201F1B4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD05_021F2D40 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2D50 + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F2E68 +MOD05_021F2E68: ; 0x021F2E68 + ldr r3, _021F2E6C ; =0x0201F23D + bx r3 + .balign 4, 0 +_021F2E6C: .word 0x0201F23D + + thumb_func_start MOD05_021F2E70 +MOD05_021F2E70: ; 0x021F2E70 + push {r4, lr} + sub sp, #0x20 + str r0, [sp] + str r1, [sp, #4] + ldmia r2!, {r0, r1} + add r3, sp, #8 + stmia r3!, {r0, r1} + ldr r0, [r2] + add r2, sp, #0x14 + str r0, [r3] + ldr r3, _021F2ECC ; =0x021FC550 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, sp, #0 + bl FUN_0201F6E8 + add r4, r0, #0 + beq _021F2EC4 + mov r1, #0 + bl FUN_0201F80C + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F830 + add r0, r4, #0 + mov r1, #0 + bl FUN_0201F890 + add r0, r4, #0 + bl FUN_0201F8E0 + mov r1, #1 + bl FUN_020BB9F4 + add r0, r4, #0 + bl FUN_0201F8E0 + bl MOD05_021DB5EC +_021F2EC4: + add r0, r4, #0 + add sp, #0x20 + pop {r4, pc} + nop +_021F2ECC: .word 0x021FC550 + + thumb_func_start MOD05_021F2ED0 +MOD05_021F2ED0: ; 0x021F2ED0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + add r4, r2, #0 + bl MOD05_021F2DE8 + add r1, r0, #0 + add r0, r6, #0 + add r0, #0xf8 + ldr r0, [r0] + bl MOD05_021F5A90 + str r0, [r4] + add r0, r5, #0 + bl MOD05_021F2DF4 + add r1, r0, #0 + add r0, r6, #0 + add r0, #0xfc + ldr r0, [r0] + bl MOD05_021F5A90 + add r1, r4, #0 + add r1, #0xc + bl FUN_0202227C + add r0, r6, #0 + bl MOD05_021F2D6C + add r1, r5, #0 + bl FUN_02021050 + add r6, r0, #0 + bl FUN_020210AC + str r0, [r4, #4] + add r0, r6, #0 + bl FUN_020211AC + str r0, [r4, #0x1c] + add r0, r6, #0 + bl FUN_020211BC + str r0, [r4, #0x20] + add r0, r6, #0 + bl FUN_020211CC + str r0, [r4, #0x24] + add r0, r5, #0 + bl MOD05_021F2E00 + str r0, [r4, #8] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F2F3C +MOD05_021F2F3C: ; 0x021F2F3C + push {r3, lr} + bl FUN_02058578 + bl FUN_020583A0 + pop {r3, pc} + + thumb_func_start MOD05_021F2F48 +MOD05_021F2F48: ; 0x021F2F48 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl MOD05_021F1E64 + mov r0, #6 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_0201F7C8 + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD05_021F2F6C +MOD05_021F2F6C: ; 0x021F2F6C + push {r4, r5, r6, lr} + mov r4, #1 + add r6, r1, #0 + lsl r1, r4, #9 + add r5, r0, #0 + bl FUN_0205842C + cmp r0, #1 + bne _021F2F80 + mov r4, #0 +_021F2F80: + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #1 + bne _021F2F9E + mov r1, #2 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_0205842C + cmp r0, #0 + bne _021F2F9E + mov r4, #0 +_021F2F9E: + lsl r1, r4, #0x18 + add r0, r6, #0 + lsr r1, r1, #0x18 + bl FUN_0201F80C + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F2FAC +MOD05_021F2FAC: ; 0x021F2FAC + lsl r1, r0, #2 + ldr r0, _021F2FB4 ; =0x021FC55C + ldr r0, [r0, r1] + bx lr + .balign 4, 0 +_021F2FB4: .word 0x021FC55C + + thumb_func_start MOD05_021F2FB8 +MOD05_021F2FB8: ; 0x021F2FB8 + lsl r1, r0, #2 + ldr r0, _021F2FC0 ; =0x021FC56C + ldr r0, [r0, r1] + bx lr + .balign 4, 0 +_021F2FC0: .word 0x021FC56C + + thumb_func_start MOD05_021F2FC4 +MOD05_021F2FC4: ; 0x021F2FC4 + lsl r1, r0, #2 + ldr r0, _021F2FCC ; =0x021FC57C + ldr r0, [r0, r1] + bx lr + .balign 4, 0 +_021F2FCC: .word 0x021FC57C + + thumb_func_start MOD05_021F2FD0 +MOD05_021F2FD0: ; 0x021F2FD0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + ldr r4, [r5, r0] + mov r0, #4 + add r6, r1, #0 + ldrsh r1, [r4, r0] + mov r0, #2 + ldrsh r0, [r4, r0] + add r7, r2, #0 + str r3, [sp] + cmp r1, r0 + bge _021F2FFA + add r0, r5, #0 + add r0, #0xe0 + ldr r0, [r0] + bl FUN_0201F2C0 + cmp r0, #1 + bne _021F302C +_021F2FFA: + mov r2, #0 + ldrsh r3, [r4, r2] + ldr r0, [r4, #0xc] + cmp r3, #0 + ble _021F3024 +_021F3004: + ldr r1, [r0, #0xc] + cmp r1, #0 + bne _021F301C + add r5, #0xf0 + ldr r1, [r5] + str r1, [r0, #0xc] + ldr r1, [sp] + str r1, [r0, #8] + str r6, [r0, #4] + str r7, [r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F301C: + add r2, r2, #1 + add r0, #0x10 + cmp r2, r3 + blt _021F3004 +_021F3024: + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F302C: + add r0, r5, #0 + add r1, r7, #0 + mov r2, #0 + bl MOD05_021F2DB0 + add r2, r0, #0 + ldr r3, [sp] + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F317C + mov r0, #4 + ldrsh r0, [r4, r0] + add r0, r0, #1 + strh r0, [r4, #4] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3050 +MOD05_021F3050: ; 0x021F3050 + push {r3, r4} + mov r2, #1 + lsl r2, r2, #8 + ldr r0, [r0, r2] + mov r3, #0 + ldrsh r4, [r0, r3] + ldr r2, [r0, #0xc] + cmp r4, #0 + ble _021F307E +_021F3062: + ldr r0, [r2, #4] + cmp r0, r1 + bne _021F3076 + ldr r0, [r2, #0xc] + cmp r0, #0 + beq _021F3076 + mov r0, #0 + str r0, [r2, #0xc] + pop {r3, r4} + bx lr +_021F3076: + add r3, r3, #1 + add r2, #0x10 + cmp r3, r4 + blt _021F3062 +_021F307E: + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3084 +MOD05_021F3084: ; 0x021F3084 + push {r3, r4} + mov r2, #1 + lsl r2, r2, #8 + ldr r0, [r0, r2] + mov r3, #0 + ldrsh r4, [r0, r3] + ldr r2, [r0, #0xc] + cmp r4, #0 + ble _021F30BC +_021F3096: + ldr r0, [r2, #4] + cmp r0, r1 + bne _021F30B4 + ldr r0, [r2, #0xc] + cmp r0, #0 + beq _021F30B4 + ldr r0, [r2, #8] + cmp r0, #0 + bne _021F30AE + mov r0, #3 + pop {r3, r4} + bx lr +_021F30AE: + mov r0, #4 + pop {r3, r4} + bx lr +_021F30B4: + add r3, r3, #1 + add r2, #0x10 + cmp r3, r4 + blt _021F3096 +_021F30BC: + mov r0, #0 + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F30C4 +MOD05_021F30C4: ; 0x021F30C4 + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + mov r1, #1 + ldr r0, [sp] + lsl r1, r1, #8 + ldr r4, [r0, r1] + add r0, #0xe0 + ldr r0, [r0] + mov r6, #0 + ldr r5, [r4, #0xc] + bl FUN_0201F2C0 + cmp r0, #1 + beq _021F3178 + add r7, r4, #4 + b _021F310E +_021F30E4: + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _021F310A + ldr r0, [sp] + ldr r1, [r5] + mov r2, #0 + bl MOD05_021F2DB0 + add r2, r0, #0 + ldr r0, [sp] + ldr r1, [r5, #4] + ldr r3, [r5, #8] + bl MOD05_021F317C + mov r0, #0 + str r0, [r5, #0xc] + ldrsh r0, [r7, r0] + add r0, r0, #1 + strh r0, [r7] +_021F310A: + add r5, #0x10 + add r6, r6, #1 +_021F310E: + mov r0, #4 + ldrsh r1, [r4, r0] + mov r0, #2 + ldrsh r0, [r4, r0] + cmp r1, r0 + bge _021F3122 + mov r0, #0 + ldrsh r0, [r4, r0] + cmp r6, r0 + blt _021F30E4 +_021F3122: + mov r6, #0 + ldrsh r0, [r4, r6] + ldr r7, [r4, #0xc] + sub r1, r0, #1 + cmp r1, #0 + ble _021F3174 + add r5, r7, #0 +_021F3130: + ldr r1, [r5, #0xc] + cmp r1, #0 + bne _021F3166 + add r2, r6, #1 + cmp r2, r0 + bge _021F3166 + lsl r1, r2, #4 + add r3, r7, r1 +_021F3140: + ldr r1, [r3, #0xc] + cmp r1, #0 + beq _021F315E + lsl r0, r2, #4 + add r3, r7, r0 + mov ip, r3 + add r2, r5, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r1, #0 + mov r0, ip + str r1, [r0, #0xc] + b _021F3166 +_021F315E: + add r2, r2, #1 + add r3, #0x10 + cmp r2, r0 + blt _021F3140 +_021F3166: + mov r0, #0 + ldrsh r0, [r4, r0] + add r6, r6, #1 + add r5, #0x10 + sub r1, r0, #1 + cmp r6, r1 + blt _021F3130 +_021F3174: + mov r0, #0 + strh r0, [r4, #4] +_021F3178: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F317C +MOD05_021F317C: ; 0x021F317C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #4 + str r0, [sp] + add r0, r5, #0 + add r0, #0xf0 + add r4, r1, #0 + add r6, r3, #0 + add r1, r2, #0 + ldr r0, [r0] + add r2, r4, #0 + mov r3, #1 + bl FUN_02020F54 + cmp r0, #0 + bne _021F31A2 + bl ErrorHandling +_021F31A2: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F31C8 + cmp r6, #0 + bne _021F31BA + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F28A0 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_021F31BA: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F2914 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F31C8 +MOD05_021F31C8: ; 0x021F31C8 + push {r4, r5, r6, lr} + mov r3, #1 + lsl r3, r3, #8 + ldr r3, [r0, r3] + mov r5, #1 + ldr r4, [r3, #0x10] + mov r2, #0 + strh r5, [r3, #6] + ldrsh r6, [r3, r2] + cmp r6, #0 + ble _021F31FC +_021F31DE: + ldr r5, [r4, #8] + cmp r5, #0 + bne _021F31F4 + add r0, #0xf0 + ldr r0, [r0] + str r0, [r4, #8] + str r1, [r4, #4] + mov r0, #0 + str r0, [r4] + strh r0, [r3, #6] + pop {r4, r5, r6, pc} +_021F31F4: + add r2, r2, #1 + add r4, #0xc + cmp r2, r6 + blt _021F31DE +_021F31FC: + bl ErrorHandling + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3204 +MOD05_021F3204: ; 0x021F3204 + push {r4, r5} + mov r2, #1 + lsl r2, r2, #8 + ldr r2, [r0, r2] + mov r0, #1 + ldr r4, [r2, #0x10] + mov r3, #0 + strh r0, [r2, #6] + ldrsh r5, [r2, r3] + cmp r5, #0 + ble _021F3236 +_021F321A: + ldr r0, [r4, #8] + cmp r0, #0 + beq _021F322E + ldr r0, [r4, #4] + cmp r0, r1 + bne _021F322E + mov r0, #0 + str r0, [r4, #8] + str r0, [r4] + b _021F3236 +_021F322E: + add r3, r3, #1 + add r4, #0xc + cmp r3, r5 + blt _021F321A +_021F3236: + mov r0, #0 + strh r0, [r2, #6] + pop {r4, r5} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3240 +MOD05_021F3240: ; 0x021F3240 + push {r3, r4, r5, r6, r7, lr} + mov r0, #1 + lsl r0, r0, #8 + ldr r6, [r1, r0] + ldrh r0, [r6, #6] + cmp r0, #1 + beq _021F327A + mov r4, #0 + ldrsh r0, [r6, r4] + ldr r5, [r6, #0x10] + cmp r0, #0 + ble _021F327A + mov r7, #1 +_021F325A: + ldr r0, [r5] + cmp r0, #0 + bne _021F326E + ldr r0, [r5, #8] + cmp r0, #0 + beq _021F326E + ldr r1, [r5, #4] + bl FUN_020210F0 + str r7, [r5] +_021F326E: + mov r0, #0 + ldrsh r0, [r6, r0] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blt _021F325A +_021F327A: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F327C +MOD05_021F327C: ; 0x021F327C + push {r3, r4, r5, r6, r7, lr} + mov r0, #1 + lsl r0, r0, #8 + ldr r6, [r1, r0] + mov r4, #0 + ldr r5, [r6, #0x10] + mov r0, #1 + strh r0, [r6, #6] + ldrsh r0, [r6, r4] + cmp r0, #0 + ble _021F32B6 + add r7, r4, #0 +_021F3294: + ldr r0, [r5] + cmp r0, #1 + bne _021F32AA + ldr r0, [r5, #8] + cmp r0, #0 + beq _021F32AA + ldr r1, [r5, #4] + bl FUN_02021158 + str r7, [r5] + str r7, [r5, #8] +_021F32AA: + mov r0, #0 + ldrsh r0, [r6, r0] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blt _021F3294 +_021F32B6: + mov r0, #0 + strh r0, [r6, #6] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F32BC +MOD05_021F32BC: ; 0x021F32BC + push {r4, r5, r6, lr} + mov r5, #1 + lsl r5, r5, #8 + ldr r5, [r0, r5] + mov r4, #0 + ldrsh r6, [r5, r4] + ldr r0, [r5, #8] + cmp r6, #0 + ble _021F32F2 +_021F32CE: + ldr r5, [r0, #4] + cmp r5, #0 + bne _021F32EA + str r1, [r0, #4] + str r2, [r0, #8] + str r3, [r0] + ldr r0, [r0, #8] + mov r2, #0 + str r2, [r0] + add r0, r1, #0 + mov r1, #1 + bl MOD05_021F2E0C + pop {r4, r5, r6, pc} +_021F32EA: + add r4, r4, #1 + add r0, #0xc + cmp r4, r6 + blt _021F32CE +_021F32F2: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F32F8 +MOD05_021F32F8: ; 0x021F32F8 + push {r3, r4} + mov r2, #1 + lsl r2, r2, #8 + ldr r0, [r0, r2] + mov r3, #0 + ldrsh r4, [r0, r3] + ldr r2, [r0, #8] + cmp r4, #0 + ble _021F3322 +_021F330A: + ldr r0, [r2, #4] + cmp r0, r1 + bne _021F331A + mov r0, #0 + str r0, [r2, #4] + str r0, [r2, #8] + pop {r3, r4} + bx lr +_021F331A: + add r3, r3, #1 + add r2, #0xc + cmp r3, r4 + blt _021F330A +_021F3322: + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3328 +MOD05_021F3328: ; 0x021F3328 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + ldr r6, [r7, r0] + mov r4, #0 + ldrsh r0, [r6, r4] + ldr r5, [r6, #8] + cmp r0, #0 + ble _021F3356 +_021F333C: + ldr r0, [r5, #4] + cmp r0, #0 + beq _021F334A + add r0, r7, #0 + add r1, r5, #0 + bl MOD05_021F3364 +_021F334A: + mov r0, #0 + ldrsh r0, [r6, r0] + add r4, r4, #1 + add r5, #0xc + cmp r4, r0 + blt _021F333C +_021F3356: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F3358 +MOD05_021F3358: ; 0x021F3358 + ldr r3, _021F3360 ; =MOD05_021F3328 + add r0, r1, #0 + bx r3 + nop +_021F3360: .word MOD05_021F3328 + + thumb_func_start MOD05_021F3364 +MOD05_021F3364: ; 0x021F3364 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + bl MOD05_021F2A08 + cmp r0, #2 + beq _021F33B2 + ldr r0, [r4, #4] + ldr r1, [r4] + bl MOD05_021F1FE0 + ldr r1, [r4, #8] + str r0, [r1] + ldr r0, [r4, #8] + ldr r0, [r0] + cmp r0, #0 + bne _021F338A + bl ErrorHandling +_021F338A: + ldr r0, [r4, #4] + mov r1, #0 + bl MOD05_021F2E0C + mov r1, #2 + ldr r0, [r4, #4] + lsl r1, r1, #0x14 + bl FUN_0205842C + cmp r0, #1 + ldr r0, [r4, #4] + bne _021F33A8 + bl FUN_020586DC + b _021F33AC +_021F33A8: + bl FUN_020586A0 +_021F33AC: + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #8] +_021F33B2: + pop {r4, pc} + + thumb_func_start MOD05_021F33B4 +MOD05_021F33B4: ; 0x021F33B4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + add r5, r0, #0 + mov r0, #0xc + add r7, r6, #0 + mul r7, r0 + lsl r0, r6, #4 + lsl r1, r7, #1 + str r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #8] + add r0, #0x28 + str r0, [sp, #8] + ldr r1, [sp, #8] + mov r0, #4 + str r2, [sp] + bl FUN_02016998 + add r4, r0, #0 + bne _021F33E2 + bl ErrorHandling +_021F33E2: + ldr r2, [sp, #8] + add r0, r4, #0 + mov r1, #0 + bl Call_FillMemWithValue + ldr r0, [sp] + strh r6, [r4] + strh r0, [r4, #2] + add r0, r4, #0 + add r0, #0x28 + str r0, [r4, #8] + add r1, r0, r7 + ldr r0, [sp, #4] + str r1, [r4, #0xc] + add r0, r1, r0 + str r0, [r4, #0x10] + mov r0, #1 + lsl r0, r0, #8 + str r4, [r5, r0] + add r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0205839C + add r6, r0, #0 + ldr r0, _021F3448 ; =MOD05_021F30C4 + add r1, r5, #0 + add r2, r6, #1 + bl FUN_0200CA44 + str r0, [r4, #0x18] + ldr r0, _021F344C ; =MOD05_021F3358 + add r1, r5, #0 + add r2, r6, #2 + bl FUN_0200CA44 + str r0, [r4, #0x1c] + ldr r0, _021F3450 ; =MOD05_021F3240 + add r1, r5, #0 + mov r2, #0xff + bl FUN_0200CA60 + str r0, [r4, #0x20] + ldr r0, _021F3454 ; =MOD05_021F327C + add r1, r5, #0 + mov r2, #0xff + bl FUN_0200CA98 + str r0, [r4, #0x24] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_021F3448: .word MOD05_021F30C4 +_021F344C: .word MOD05_021F3358 +_021F3450: .word MOD05_021F3240 +_021F3454: .word MOD05_021F327C + + thumb_func_start MOD05_021F3458 +MOD05_021F3458: ; 0x021F3458 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #1 + lsl r0, r0, #8 + ldr r4, [r5, r0] + mov r0, #1 + strh r0, [r4, #6] + ldr r0, [r4, #0x18] + bl FUN_0200CAB4 + ldr r0, [r4, #0x1c] + bl FUN_0200CAB4 + ldr r0, [r4, #0x20] + bl FUN_0200CAB4 + ldr r0, [r4, #0x24] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + mov r1, #0 + lsl r0, r0, #8 + str r1, [r5, r0] + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3490 +MOD05_021F3490: ; 0x021F3490 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD05_021F2E28 + cmp r0, #1 + beq _021F34A8 + add r0, r5, #0 + bl MOD05_021F0514 + cmp r0, #0 + bne _021F34D2 +_021F34A8: + add r0, r5, #0 + bl FUN_02058458 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02058578 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_020576A8 + add r0, r7, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD05_021F2C80 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02057614 + pop {r3, r4, r5, r6, r7, pc} +_021F34D2: + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F34DC + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F34DC +MOD05_021F34DC: ; 0x021F34DC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r7, r0, #0 + str r1, [sp, #8] + bl MOD05_021F2F3C + str r0, [sp, #0x18] + bl MOD05_021F2D48 + str r0, [sp, #0x14] + add r0, r7, #0 + bl MOD05_021F0514 + str r0, [sp, #0x10] + mov r0, #4 + mov r1, #0x58 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x58 + add r5, r0, #0 + bl Call_FillMemWithValue + ldr r0, [sp, #8] + str r0, [r5] + add r0, r7, #0 + str r7, [r5, #0x50] + bl FUN_02058458 + add r6, r0, #0 + bl MOD05_021F2DE8 + ldr r4, _021F36C4 ; =0x021F9094 + ldr r2, _021F36C8 ; =0x0000FFFF +_021F3520: + ldr r1, [r4] + cmp r1, r0 + beq _021F352E + add r4, #8 + ldr r1, [r4] + cmp r1, r2 + bne _021F3520 +_021F352E: + ldr r0, _021F36C8 ; =0x0000FFFF + cmp r1, r0 + bne _021F3538 + bl ErrorHandling +_021F3538: + ldr r0, [sp, #0x18] + ldr r1, [r4, #4] + mov r2, #0 + bl MOD05_021F2DB0 + str r0, [r5, #8] + add r0, r6, #0 + bl MOD05_021F2DF4 + ldr r4, _021F36CC ; =0x021F90E4 + ldr r2, _021F36C8 ; =0x0000FFFF +_021F354E: + ldr r1, [r4] + cmp r1, r0 + beq _021F355C + add r4, #8 + ldr r1, [r4] + cmp r1, r2 + bne _021F354E +_021F355C: + ldr r0, _021F36C8 ; =0x0000FFFF + cmp r1, r0 + bne _021F3566 + bl ErrorHandling +_021F3566: + ldr r0, [sp, #0x18] + ldr r1, [r4, #4] + mov r2, #0 + bl MOD05_021F2DB0 + add r1, r5, #0 + add r1, #0x14 + str r0, [r5, #0xc] + bl FUN_0202227C + ldr r4, _021F36D0 ; =0x021FA0AC + ldr r0, _021F36C8 ; =0x0000FFFF +_021F357E: + ldr r1, [r4] + cmp r1, r6 + beq _021F358C + add r4, #8 + ldr r1, [r4] + cmp r1, r0 + bne _021F357E +_021F358C: + ldr r0, _021F36C8 ; =0x0000FFFF + cmp r1, r0 + bne _021F3596 + bl ErrorHandling +_021F3596: + ldr r0, [sp, #0x18] + ldr r1, [r4, #4] + mov r2, #0 + bl MOD05_021F2DB0 + str r0, [r5, #0x10] + bl FUN_020BC0FC + add r4, r0, #0 + add r0, r6, #0 + bl MOD05_021F2E00 + add r3, r0, #0 + add r0, r5, #0 + add r0, #0x14 + str r0, [sp] + add r0, r5, #0 + ldr r1, [r5, #8] + add r0, #0x28 + add r2, r4, #0 + bl FUN_0201F7A4 + ldr r0, [sp, #0x10] + bl FUN_0201F7E0 + add r3, r0, #0 + add r2, sp, #0x28 + ldmia r3!, {r0, r1} + add r4, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r5, #0 + str r0, [r2] + ldr r0, [sp, #0x14] + add r1, #0x28 + add r2, r4, #0 + bl MOD05_021F2E70 + str r0, [r5, #0x24] + cmp r0, #0 + bne _021F35EC + bl ErrorHandling +_021F35EC: + ldr r0, [sp, #0x10] + bl FUN_0201F844 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F830 + ldr r0, [sp, #0x10] + bl FUN_0201F8C0 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F890 + ldr r0, [sp, #0x10] + bl FUN_0201F880 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F86C + ldr r0, [r5, #0x24] + mov r1, #0 + bl FUN_0201F854 + ldr r0, [r5, #0x24] + mov r1, #1 + bl FUN_0201F80C + ldr r0, [r5, #0x24] + bl FUN_0201F8F0 + add r0, r7, #0 + bl FUN_02058A9C + cmp r0, #1 + bne _021F367A + add r0, r7, #0 + mov r1, #2 + bl FUN_0205829C + str r0, [sp, #0xc] + add r0, r7, #0 + mov r1, #1 + bl FUN_02059C90 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r4, #0 + bl FUN_02054AF0 + cmp r0, #0 + bne _021F3658 + mov r4, #1 +_021F3658: + add r0, r7, #0 + add r1, sp, #0x1c + bl FUN_02058B5C + add r0, r7, #0 + bl MOD05_021E4C24 + ldr r1, [sp, #0xc] + str r4, [sp] + str r1, [sp, #4] + add r1, r5, #0 + ldr r2, [r5, #0x24] + add r1, #0x28 + add r3, sp, #0x1c + bl FUN_02249B7C + str r0, [r5, #0x54] +_021F367A: + add r0, r7, #0 + bl FUN_020576A8 + mov r1, #0x41 + ldr r0, [sp, #0x18] + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, r6, #0 + add r2, r7, #0 + bl MOD05_021F2C80 + ldr r1, [sp, #8] + add r0, r7, #0 + bl FUN_02057614 + mov r1, #0x41 + ldr r0, [sp, #0x18] + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl FUN_0205839C + ldr r0, _021F36D4 ; =MOD05_021F36D8 + add r1, r5, #0 + mov r2, #0xff + bl FUN_0200CA98 + add r4, r0, #0 + bne _021F36B6 + bl ErrorHandling +_021F36B6: + add r0, r4, #0 + add r1, r5, #0 + bl MOD05_021F36D8 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_021F36C4: .word 0x021F9094 +_021F36C8: .word 0x0000FFFF +_021F36CC: .word 0x021F90E4 +_021F36D0: .word 0x021FA0AC +_021F36D4: .word MOD05_021F36D8 + + thumb_func_start MOD05_021F36D8 +MOD05_021F36D8: ; 0x021F36D8 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #4] + ldr r4, [r5, #0x50] + cmp r0, #0 + beq _021F36EC + cmp r0, #1 + beq _021F3744 + pop {r4, r5, r6, pc} +_021F36EC: + add r0, r4, #0 + bl FUN_02058830 + cmp r0, #0 + beq _021F3700 + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #0 + bne _021F3730 +_021F3700: + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _021F370A + bl FUN_02064520 +_021F370A: + ldr r0, [r5, #0x24] + bl FUN_0201F744 + ldr r0, [r5, #8] + bl FUN_02016A18 + ldr r0, [r5, #0xc] + bl FUN_02016A18 + ldr r0, [r5, #0x10] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} +_021F3730: + add r0, r4, #0 + bl FUN_02058458 + ldr r1, [r5] + cmp r1, r0 + beq _021F377C + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] + pop {r4, r5, r6, pc} +_021F3744: + add r0, r4, #0 + bl MOD05_021F2E28 + cmp r0, #0 + bne _021F377C + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _021F3758 + bl FUN_02064520 +_021F3758: + ldr r0, [r5, #0x24] + bl FUN_0201F744 + ldr r0, [r5, #8] + bl FUN_02016A18 + ldr r0, [r5, #0xc] + bl FUN_02016A18 + ldr r0, [r5, #0x10] + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 +_021F377C: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3780 +MOD05_021F3780: ; 0x021F3780 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + bl MOD05_021F37AC + add r4, r0, #0 + str r6, [r4] + str r5, [r4, #8] + bl MOD05_021F37DC + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F379C +MOD05_021F379C: ; 0x021F379C + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F37E0 + add r0, r4, #0 + bl MOD05_021F37D0 + pop {r4, pc} + + thumb_func_start MOD05_021F37AC +MOD05_021F37AC: ; 0x021F37AC + push {r4, lr} + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0 + bne _021F37BC + bl ErrorHandling +_021F37BC: + add r2, r4, #0 + mov r1, #0x10 + mov r0, #0 +_021F37C2: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _021F37C2 + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F37D0 +MOD05_021F37D0: ; 0x021F37D0 + ldr r3, _021F37D8 ; =0x02016A8D + add r1, r0, #0 + ldr r0, [r1] + bx r3 + .balign 4, 0 +_021F37D8: .word 0x02016A8D + + thumb_func_start MOD05_021F37DC +MOD05_021F37DC: ; 0x021F37DC + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F37E0 +MOD05_021F37E0: ; 0x021F37E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + cmp r0, #0 + beq _021F380E + ldr r4, [r5, #0xc] + cmp r4, #0 + beq _021F380E +_021F37F0: + ldr r0, [r4, #0x5c] + cmp r0, #0 + beq _021F37FC + add r0, r4, #0 + bl MOD05_021F383C +_021F37FC: + ldr r0, [r5, #4] + add r4, #0x60 + sub r0, r0, #1 + str r0, [r5, #4] + bne _021F37F0 + ldr r0, [r5] + ldr r1, [r5, #0xc] + bl FUN_02016A8C +_021F380E: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F3810 +MOD05_021F3810: ; 0x021F3810 + push {r3, r4, r5, lr} + add r4, r0, #0 + str r1, [r4, #4] + mov r0, #0x60 + add r5, r1, #0 + mul r5, r0 + ldr r0, [r4] + add r1, r5, #0 + bl FUN_02016998 + str r0, [r4, #0xc] + cmp r0, #0 + bne _021F382E + bl ErrorHandling +_021F382E: + ldr r0, [r4, #0xc] + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F383C +MOD05_021F383C: ; 0x021F383C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x5c] + bl FUN_02016A18 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x60 + bl Call_FillMemWithValue + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3854 +MOD05_021F3854: ; 0x021F3854 + mov r0, #0 + str r0, [r2] + str r0, [r2, #4] + bx lr + + thumb_func_start MOD05_021F385C +MOD05_021F385C: ; 0x021F385C + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3860 +MOD05_021F3860: ; 0x021F3860 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + ldr r0, [r5, #0x38] + add r4, r2, #0 + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r7, r0, #0 + ldr r0, [r4] + cmp r0, r6 + bne _021F3882 + ldr r0, [r4, #4] + cmp r0, r7 + beq _021F38B4 +_021F3882: + str r6, [r4] + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + str r7, [r4, #4] + bl FUN_0204A6E0 + add r4, r0, #0 + bl FUN_02054A18 + cmp r0, #0 + beq _021F389E + mov r2, #0 + b _021F38AA +_021F389E: + add r0, r4, #0 + bl FUN_02054A0C + cmp r0, #0 + beq _021F38B4 + mov r2, #1 +_021F38AA: + add r0, r6, #0 + add r1, r7, #0 + add r3, r5, #0 + bl MOD05_021DAFA8 +_021F38B4: + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F38B8 +MOD05_021F38B8: ; 0x021F38B8 + ldr r0, [r0, #4] + ldr r3, _021F38C4 ; =MOD05_021D8024 + ldr r0, [r0, #4] + ldr r1, _021F38C8 ; =0x021FC58C + bx r3 + nop +_021F38C4: .word MOD05_021D8024 +_021F38C8: .word 0x021FC58C + + thumb_func_start MOD05_021F38CC +MOD05_021F38CC: ; 0x021F38CC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r1, #0 + add r2, r1, #0 + add r5, r0, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0 + mov r1, #0x46 + mov r2, #0 + bl FUN_020671BC + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #0x47 + mov r2, #0 + bl FUN_020671BC + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0x48 + mov r2, #0 + bl FUN_020671BC + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x49 + mov r2, #0 + bl FUN_020671BC + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + add r0, r5, #0 + mov r1, #0x4a + mov r2, #0 + bl FUN_020671BC + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0 + mov r1, #0x4b + mov r2, #0 + bl FUN_020671BC + mov r1, #0xf + and r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + eor r0, r6 + asr r1, r4, #8 + mul r0, r7 + eor r0, r1 + lsl r1, r4, #0x18 + lsr r3, r1, #0x18 + lsl r0, r0, #0x10 + ldr r2, [sp, #4] + ldr r1, [sp] + lsr r0, r0, #0x10 + eor r2, r1 + ldr r1, [sp, #8] + mul r2, r1 + add r1, r3, #0 + eor r1, r2 + lsl r1, r1, #0x10 + lsr r1, r1, #8 + add r0, r0, r1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F3978 +MOD05_021F3978: ; 0x021F3978 + ldr r2, _021F399C ; =0x021FC5A4 + mov r3, #1 +_021F397C: + lsl r1, r3, #3 + add r1, r2, r1 + ldrh r1, [r1, #4] + cmp r0, r1 + bhs _021F398E + sub r0, r3, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_021F398E: + add r1, r3, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0xf + blo _021F397C + add r0, r3, #0 + bx lr + .balign 4, 0 +_021F399C: .word 0x021FC5A4 + + thumb_func_start MOD05_021F39A0 +MOD05_021F39A0: ; 0x021F39A0 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r0, #4 + add r5, r1, #0 + bl FUN_02087A6C + add r4, r0, #0 + bl FUN_02087A84 + add r0, r4, #0 + mov r1, #0 + mov r2, #4 + bl FUN_02087A98 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_02087B58 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02087B0C + add r0, r5, #0 + bl MOD05_021F3978 + lsl r4, r0, #3 + ldr r0, _021F3A0C ; =0x021FC5A8 + ldr r2, _021F3A10 ; =0x021FC5A6 + ldrh r0, [r0, r4] + ldrh r2, [r2, r4] + asr r1, r5, #0x1f + mov r3, #0 + sub r0, r5, r0 + sbc r1, r3 + bl _ll_udiv + add r2, r0, #0 + add r0, r6, #0 + ldr r6, _021F3A14 ; =0x021FC5A4 + add r3, r1, #0 + mov r5, #0 + ldrh r4, [r6, r4] + add r1, r5, #0 + add r2, r4, r2 + adc r5, r3 + add r3, r5, #0 + bl _ll_mul + mov r2, #0xa + mov r3, #0 + bl _ll_udiv + pop {r4, r5, r6, pc} + nop +_021F3A0C: .word 0x021FC5A8 +_021F3A10: .word 0x021FC5A6 +_021F3A14: .word 0x021FC5A4 + + thumb_func_start MOD05_021F3A18 +MOD05_021F3A18: ; 0x021F3A18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r5, r1, #0 + bl FUN_0206BB1C + add r1, r5, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + str r0, [sp] + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [sp] + bl MOD05_021F38CC + add r1, sp, #4 + strh r0, [r1, #2] + ldrh r1, [r1, #2] + add r0, r5, #0 + bl MOD05_021F39A0 + add r6, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F3E8 + add r1, sp, #4 + strh r0, [r1] + ldrh r1, [r1] + add r0, r5, #0 + bl MOD05_021F39A0 + add r7, r0, #0 + mov r0, #0xfa + lsl r0, r0, #2 + mul r0, r6 + mov r1, #0xfe + bl _u32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _u32_div_f + add r5, r0, #0 + mov r0, #0xfa + lsl r0, r0, #2 + mul r0, r7 + mov r1, #0xfe + bl _u32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _u32_div_f + cmp r5, r0 + bne _021F3A9A + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3A9A: + cmp r5, r0 + bls _021F3AAE + ldr r2, [sp] + add r0, r4, #0 + add r1, r6, #0 + bl FUN_020619C0 + add sp, #8 + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_021F3AAE: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F3AB4 +MOD05_021F3AB4: ; 0x021F3AB4 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r5, r1, #0 + bl FUN_0206BB1C + add r1, r5, #0 + bl FUN_0206B9B0 + bl MOD05_021F38CC + add r1, sp, #0 + strh r0, [r1] + ldr r0, [r4, #0xc] + bl FUN_020462AC + add r1, sp, #0 + ldrh r1, [r1] + bl FUN_0205F3F8 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3AE0 +MOD05_021F3AE0: ; 0x021F3AE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + mov r1, #0xf + add r7, r2, #0 + add r4, r3, #0 + bl FUN_02039438 + add r1, sp, #0x10 + add r5, r0, #0 + ldrh r1, [r1, #0x10] + add r0, r4, #0 + bl MOD05_021F39A0 + mov r1, #0xfa + lsl r1, r1, #2 + mul r1, r0 + add r0, r1, #0 + mov r1, #0xfe + bl _u32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _u32_div_f + mov r1, #0xa + add r4, r0, #0 + bl _u32_div_f + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5] + add r1, r6, #0 + mov r3, #3 + bl FUN_0200AD38 + add r0, r4, #0 + mov r1, #0xa + bl _u32_div_f + mov r0, #0 + add r2, r1, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + ldr r0, [r5] + add r1, r7, #0 + bl FUN_0200AD38 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F3B4C +MOD05_021F3B4C: ; 0x021F3B4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_020462AC + bl FUN_0205F3E8 + add r1, sp, #4 + strh r0, [r1] + ldrh r0, [r1] + add r1, r4, #0 + add r2, r6, #0 + str r0, [sp] + add r0, r5, #0 + add r3, r7, #0 + bl MOD05_021F3AE0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3B7C +MOD05_021F3B7C: ; 0x021F3B7C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + str r2, [sp, #4] + ldr r0, [r5, #0xc] + add r4, r3, #0 + add r7, r1, #0 + bl FUN_0206BB1C + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r6, #0 + bl MOD05_021F38CC + add r1, sp, #8 + strh r0, [r1] + ldrh r0, [r1] + add r1, r7, #0 + add r3, r4, #0 + str r0, [sp] + ldr r2, [sp, #4] + add r0, r5, #0 + bl MOD05_021F3AE0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F3BC0 +MOD05_021F3BC0: ; 0x021F3BC0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r0, #4 + mov r1, #0x20 + bl FUN_02016998 + add r5, r0, #0 + mov r4, #0 +_021F3BD0: + mov r1, #0xf + lsl r1, r1, #0xc + add r2, r4, #0 + mul r2, r1 + ldr r1, _021F3C2C ; =0x021FD684 + lsl r0, r4, #2 + add r1, r1, r2 + add r6, r5, r0 + str r1, [r5, r0] + ldr r0, [r5, r0] + cmp r0, #0 + bne _021F3BEC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3BEC: + cmp r7, #0 + beq _021F3C0A + mov r1, #9 + mov r0, #4 + lsl r1, r1, #0xc + bl FUN_02016998 + str r0, [r6, #0x10] + cmp r0, #0 + bne _021F3C04 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3C04: + mov r2, #9 + lsl r2, r2, #0xc + b _021F3C10 +_021F3C0A: + mov r0, #0 + str r0, [r6, #0x10] + add r2, r0, #0 +_021F3C10: + mov r1, #0xf + add r0, r4, #0 + lsl r1, r1, #0xc + add r3, r5, #0 + bl MOD05_021F3C74 + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021F3BD0 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F3C2C: .word 0x021FD684 + + thumb_func_start MOD05_021F3C30 +MOD05_021F3C30: ; 0x021F3C30 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r6, r0, #0 + add r7, r4, #0 +_021F3C38: + lsl r0, r4, #2 + add r5, r6, r0 + str r7, [r6, r0] + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _021F3C4C + bl FUN_02016A18 + mov r0, #0 + str r0, [r5, #0x10] +_021F3C4C: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _021F3C38 + add r0, r6, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3C60 +MOD05_021F3C60: ; 0x021F3C60 + lsl r0, r0, #2 + ldr r0, [r1, r0] + str r0, [r2] + bx lr + + thumb_func_start MOD05_021F3C68 +MOD05_021F3C68: ; 0x021F3C68 + lsl r0, r0, #2 + add r0, r1, r0 + ldr r0, [r0, #0x10] + str r0, [r2] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3C74 +MOD05_021F3C74: ; 0x021F3C74 + push {r3, r4, r5, r6, r7, lr} + add r5, r3, #0 + lsl r4, r0, #2 + add r6, r1, #0 + add r7, r2, #0 + ldr r0, [r5, r4] + mov r1, #0 + add r2, r6, #0 + bl MI_CpuFill8 + add r0, r5, r4 + ldr r0, [r0, #0x10] + mov r1, #0 + add r2, r7, #0 + bl MI_CpuFill8 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F3C98 +MOD05_021F3C98: ; 0x021F3C98 + push {r4, r5, r6, r7} + add r4, r0, #0 + add r3, r2, #0 + mov r5, #0xc + add r2, r1, #0 + ldr r0, [r4, #4] + mul r2, r5 + ldrh r0, [r0, r2] + ldr r6, [r4, #0x10] + add r1, r0, #0 + mul r1, r5 + add r7, r6, r1 + ldmia r7!, {r0, r1} + add r6, r3, #0 + stmia r6!, {r0, r1} + ldr r0, [r7] + str r0, [r6] + ldr r1, [r4, #4] + ldr r0, [r4, #0x10] + add r1, r1, r2 + ldrh r1, [r1, #2] + add r6, r1, #0 + mul r6, r5 + add r7, r0, r6 + add r6, r3, #0 + ldmia r7!, {r0, r1} + add r6, #0xc + stmia r6!, {r0, r1} + ldr r0, [r7] + add r3, #0x18 + str r0, [r6] + ldr r1, [r4, #4] + ldr r0, [r4, #0x10] + add r1, r1, r2 + ldrh r1, [r1, #4] + add r2, r1, #0 + mul r2, r5 + add r2, r0, r2 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + pop {r4, r5, r6, r7} + bx lr + + thumb_func_start MOD05_021F3CF0 +MOD05_021F3CF0: ; 0x021F3CF0 + push {r4, r5} + ldr r3, [r0, #0x14] + ldr r5, [r0, #4] + mov r0, #0xc + add r4, r1, #0 + mul r4, r0 + add r1, r5, r4 + ldrh r1, [r1, #6] + mul r0, r1 + add r3, r3, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + pop {r4, r5} + bx lr + + thumb_func_start MOD05_021F3D10 +MOD05_021F3D10: ; 0x021F3D10 + mov r3, #0 + add r2, r3, #0 + sub r1, r3, #1 +_021F3D16: + str r2, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + add r3, r3, #1 + add r0, #0xc + cmp r3, #0xa + blt _021F3D16 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3D28 +MOD05_021F3D28: ; 0x021F3D28 + push {r4, r5, r6, r7} + add r4, r0, #0 + add r0, r2, #0 + mov ip, r3 + cmp r1, #0 + bne _021F3D3A + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_021F3D3A: + cmp r1, #1 + bne _021F3D4A + mov r1, #0 + mov r0, ip + strh r1, [r0] + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_021F3D4A: + sub r5, r1, #1 + lsr r1, r5, #0x1f + add r1, r5, r1 + mov r3, #0 + asr r6, r1, #1 + mov r7, #0xa +_021F3D56: + add r1, r6, #0 + mul r1, r7 + add r2, r4, r1 + ldrh r1, [r2, #4] + ldrh r2, [r2, #2] + lsl r1, r1, #0x10 + orr r1, r2 + cmp r1, r0 + ble _021F3D84 + sub r1, r5, #1 + cmp r1, r3 + ble _021F3D7A + add r2, r3, r6 + lsr r1, r2, #0x1f + add r1, r2, r1 + add r5, r6, #0 + asr r6, r1, #1 + b _021F3D56 +_021F3D7A: + mov r0, ip + strh r6, [r0] + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_021F3D84: + add r1, r3, #1 + cmp r1, r5 + bge _021F3D96 + add r2, r6, r5 + lsr r1, r2, #0x1f + add r1, r2, r1 + add r3, r6, #0 + asr r6, r1, #1 + b _021F3D56 +_021F3D96: + add r1, r6, #1 + mov r0, ip + strh r1, [r0] + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F3DA4 +MOD05_021F3DA4: ; 0x021F3DA4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x110 + str r0, [sp, #0x20] + ldr r0, [sp, #0x128] + add r4, r3, #0 + str r0, [sp, #0x128] + ldr r0, [r4, #0x1c] + add r6, r1, #0 + add r7, r2, #0 + cmp r0, #0 + bne _021F3DC0 + add sp, #0x110 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3DC0: + mov r5, #0 + add r0, sp, #0x98 + str r6, [sp, #0x68] + str r5, [sp, #0x6c] + str r7, [sp, #0x70] + bl MOD05_021F3D10 + ldr r1, [r4] + ldr r0, [r1, #4] + sub r0, r6, r0 + bpl _021F3DD8 + add r0, r5, #0 +_021F3DD8: + ldr r2, [r1, #8] + sub r7, r7, r2 + bpl _021F3DE0 + mov r7, #0 +_021F3DE0: + ldr r1, [r1, #0x14] + bl FX_Div + ldr r1, [r4] + asr r6, r0, #0xc + ldrh r0, [r1] + cmp r6, r0 + blo _021F3DF2 + sub r6, r0, #1 +_021F3DF2: + ldr r1, [r1, #0x18] + add r0, r7, #0 + bl FX_Div + asr r1, r0, #0xc + ldr r0, [r4] + ldrh r0, [r0, #2] + cmp r1, r0 + blo _021F3E06 + sub r1, r0, #1 +_021F3E06: + mul r0, r1 + add r0, r6, r0 + lsl r2, r0, #2 + ldr r1, [r4, #8] + ldr r0, [r4, #0xc] + add r3, r1, r2 + ldrh r6, [r3, #2] + ldrh r1, [r1, r2] + lsl r3, r6, #2 + add r3, r6, r3 + lsl r3, r3, #1 + add r6, r0, r3 + ldr r0, [sp, #0x70] + add r3, sp, #0x58 + str r0, [sp, #0x28] + ldr r2, [sp, #0x28] + add r0, r6, #0 + bl MOD05_021F3D28 + cmp r0, #0 + bne _021F3E36 + add sp, #0x110 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021F3E36: + add r0, sp, #0x58 + ldrh r1, [r0] + lsl r0, r1, #2 + add r1, r1, r0 + lsl r0, r1, #1 + ldrh r0, [r6, r0] + str r0, [sp, #0x44] + add r0, r1, #4 + lsl r0, r0, #1 + add r1, r1, #3 + ldrh r0, [r6, r0] + lsl r1, r1, #1 + ldrh r1, [r6, r1] + lsl r0, r0, #0x10 + orr r1, r0 + mov r0, #0 + str r0, [sp, #0x48] + ldr r0, [sp, #0x44] + cmp r0, #0 + bls _021F3F50 + add r0, sp, #0x98 + str r0, [sp, #0x40] + lsl r0, r1, #1 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x28] + asr r0, r0, #0x1f + str r0, [sp, #0x38] + ldr r0, [sp, #0x68] + str r0, [sp, #0x2c] + asr r0, r0, #0x1f + str r0, [sp, #0x30] + mov r0, sp + str r0, [sp, #0x4c] + sub r0, r0, #4 + str r0, [sp, #0x4c] +_021F3E7C: + ldr r0, [sp, #0x48] + ldr r2, [r4, #0x18] + lsl r1, r0, #1 + ldr r0, [sp, #0x3c] + add r0, r0, r2 + ldrh r7, [r1, r0] + add r0, r4, #0 + add r2, sp, #0x74 + add r1, r7, #0 + bl MOD05_021F3C98 + mov r0, #0 + add r3, sp, #0x80 + str r0, [sp, #0x78] + str r0, [sp, #0x84] + str r0, [sp, #0x90] + ldmia r3!, {r0, r1} + add r2, sp, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #0x8c + str r0, [r2] + ldmia r3!, {r0, r1} + add r2, sp, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #0x74 + str r0, [r2] + ldr r2, [sp, #0x4c] + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add r6, sp, #0x68 + str r0, [r2] + ldr r0, [sp, #0x4c] + ldr r3, [r0] + ldmia r6!, {r0, r1, r2} + bl FUN_0201C878 + cmp r0, #1 + bne _021F3F40 + add r0, r4, #0 + add r1, r7, #0 + add r2, sp, #0x5c + bl MOD05_021F3CF0 + ldr r0, [sp, #0x5c] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + asr r1, r0, #0x1f + bl _ll_mul + str r0, [sp, #0x50] + ldr r0, [sp, #0x64] + add r6, r1, #0 + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x38] + asr r1, r0, #0x1f + bl _ll_mul + mov ip, r0 + mov r2, #0xc + ldr r0, [r4, #4] + mul r2, r7 + add r0, r0, r2 + mov r2, #2 + ldr r3, [sp, #0x50] + lsl r2, r2, #0xa + add r3, r3, r2 + ldr r2, _021F3FDC ; =0x00000000 + ldr r0, [r0, #8] + adc r6, r2 + lsl r2, r6, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + mov r2, #2 + lsl r2, r2, #0xa + mov r6, ip + add r2, r6, r2 + ldr r6, _021F3FDC ; =0x00000000 + adc r1, r6 + lsl r1, r1, #0x14 + lsr r2, r2, #0xc + orr r2, r1 + add r1, r3, r2 + add r0, r0, r1 + ldr r1, [sp, #0x60] + neg r0, r0 + bl FX_Div + ldr r1, [sp, #0x40] + add r5, r5, #1 + str r0, [r1] + add r0, r1, #0 + add r0, #0xc + str r0, [sp, #0x40] + cmp r5, #0xa + bge _021F3F50 +_021F3F40: + ldr r0, [sp, #0x48] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + str r1, [sp, #0x48] + ldr r0, [sp, #0x44] + cmp r1, r0 + blo _021F3E7C +_021F3F50: + cmp r5, #1 + ble _021F3FB8 + mov r0, #0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x98] + bl FUN_0201C7A8 + add r4, r0, #0 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x98] + bl FUN_0201C7A0 + sub r6, r4, r0 + mov r4, #1 + cmp r5, #1 + ble _021F3FA4 +_021F3F72: + mov r0, #0xc + add r7, r4, #0 + mul r7, r0 + add r1, sp, #0x98 + ldr r0, [sp, #0x20] + ldr r1, [r1, r7] + bl FUN_0201C7A8 + add r1, sp, #0x98 + str r0, [sp, #0x54] + ldr r0, [sp, #0x20] + ldr r1, [r1, r7] + bl FUN_0201C7A0 + ldr r1, [sp, #0x54] + sub r0, r1, r0 + cmp r6, r0 + ble _021F3F9A + add r6, r0, #0 + str r4, [sp, #0x24] +_021F3F9A: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r5 + blt _021F3F72 +_021F3FA4: + ldr r0, [sp, #0x24] + mov r1, #0xc + mul r1, r0 + add r0, sp, #0x98 + ldr r1, [r0, r1] + ldr r0, [sp, #0x128] + add sp, #0x110 + str r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3FB8: + bne _021F3FC6 + ldr r1, [sp, #0x98] + ldr r0, [sp, #0x128] + add sp, #0x110 + str r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3FC6: + cmp r5, #0 + beq _021F3FD6 + ldr r1, [sp, #0x98] + ldr r0, [sp, #0x128] + add sp, #0x110 + str r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F3FD6: + mov r0, #0 + add sp, #0x110 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F3FDC: .word 0x00000000 + + thumb_func_start MOD05_021F3FE0 +MOD05_021F3FE0: ; 0x021F3FE0 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + mov r0, #0 + mov r2, #0x1c + add r4, r1, #0 + bl MIi_CpuClear32 + add r0, r5, #0 + mov r1, #8 + add r2, sp, #0 + bl FUN_02006864 + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl FUN_02006864 + add r0, r5, #0 + mov r1, #2 + add r2, r4, #0 + bl FUN_02006864 + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl FUN_02006864 + add r0, r5, #0 + mov r1, #2 + add r2, r4, #4 + bl FUN_02006864 + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl FUN_02006864 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #2 + add r2, #8 + bl FUN_02006864 + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl FUN_02006864 + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl FUN_02006864 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #2 + add r2, #0xc + bl FUN_02006864 + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl FUN_02006864 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #2 + add r2, #0x18 + bl FUN_02006864 + add r0, r5, #0 + mov r1, #2 + add r2, sp, #0 + bl FUN_02006864 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #4 + add r2, #0x14 + bl FUN_02006864 + add r4, #0x10 + add r0, r5, #0 + mov r1, #4 + add r2, r4, #0 + bl FUN_02006864 + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F4094 +MOD05_021F4094: ; 0x021F4094 + push {r4, r5, r6, lr} + ldr r4, [r2] + mov r3, #0 + str r4, [r1, #0x10] + ldr r5, [r0] + mov r4, #0xc + mul r4, r5 + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F40B8 + add r3, r3, r4 +_021F40B8: + ldr r4, [r2] + add r4, r4, r3 + str r4, [r1, #0x14] + ldr r5, [r0, #4] + mov r4, #0xc + mul r4, r5 + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F40DA + add r3, r3, r4 +_021F40DA: + ldr r4, [r2] + add r4, r4, r3 + str r4, [r1, #4] + ldr r5, [r0, #8] + mov r4, #0xc + mul r4, r5 + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F40FC + add r3, r3, r4 +_021F40FC: + ldr r4, [r2] + add r4, r4, r3 + add r3, #0x1c + str r4, [r1] + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F4118 + add r3, r3, r4 +_021F4118: + ldr r4, [r2] + add r4, r4, r3 + str r4, [r1, #8] + ldr r4, [r0, #0xc] + lsl r4, r4, #2 + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F4138 + add r3, r3, r4 +_021F4138: + ldr r4, [r2] + add r4, r4, r3 + str r4, [r1, #0xc] + ldr r4, [r0, #0x14] + add r3, r3, r4 + lsr r6, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r6 + mov r4, #0x1e + ror r5, r4 + add r4, r6, r5 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + beq _021F4156 + add r3, r3, r4 +_021F4156: + ldr r2, [r2] + add r2, r2, r3 + str r2, [r1, #0x18] + ldr r0, [r0, #0x10] + add r3, r3, r0 + lsr r2, r3, #0x1f + lsl r1, r3, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _021F4174 + add r3, r3, r0 +_021F4174: + mov r0, #9 + lsl r0, r0, #0xc + cmp r3, r0 + ble _021F4180 + bl ErrorHandling +_021F4180: + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4184 +MOD05_021F4184: ; 0x021F4184 + ldr r3, _021F4190 ; =0x02006865 + add r2, r1, #0 + mov r1, #0x1c + ldr r2, [r2] + bx r3 + nop +_021F4190: .word 0x02006865 + + thumb_func_start MOD05_021F4194 +MOD05_021F4194: ; 0x021F4194 + ldr r2, [r2] + add r3, r1, #0 + mov r1, #0xc + mul r1, r2 + ldr r2, [r3, #0x10] + ldr r3, _021F41A4 ; =0x02006865 + bx r3 + nop +_021F41A4: .word 0x02006865 + + thumb_func_start MOD05_021F41A8 +MOD05_021F41A8: ; 0x021F41A8 + ldr r2, [r2, #4] + add r3, r1, #0 + mov r1, #0xc + mul r1, r2 + ldr r2, [r3, #0x14] + ldr r3, _021F41B8 ; =0x02006865 + bx r3 + nop +_021F41B8: .word 0x02006865 + + thumb_func_start MOD05_021F41BC +MOD05_021F41BC: ; 0x021F41BC + ldr r2, [r2, #8] + add r3, r1, #0 + mov r1, #0xc + mul r1, r2 + ldr r2, [r3, #4] + ldr r3, _021F41CC ; =0x02006865 + bx r3 + nop +_021F41CC: .word 0x02006865 + + thumb_func_start MOD05_021F41D0 +MOD05_021F41D0: ; 0x021F41D0 + add r3, r1, #0 + ldr r1, [r2, #0xc] + ldr r2, [r3, #8] + ldr r3, _021F41DC ; =0x02006865 + lsl r1, r1, #2 + bx r3 + .balign 4, 0 +_021F41DC: .word 0x02006865 + + thumb_func_start MOD05_021F41E0 +MOD05_021F41E0: ; 0x021F41E0 + add r3, r1, #0 + ldr r1, [r2, #0x14] + ldr r2, [r3, #0xc] + ldr r3, _021F41EC ; =0x02006865 + bx r3 + nop +_021F41EC: .word 0x02006865 + + thumb_func_start MOD05_021F41F0 +MOD05_021F41F0: ; 0x021F41F0 + add r3, r1, #0 + ldr r1, [r2, #0x10] + ldr r2, [r3, #0x18] + ldr r3, _021F41FC ; =0x02006865 + bx r3 + nop +_021F41FC: .word 0x02006865 + + thumb_func_start MOD05_021F4200 +MOD05_021F4200: ; 0x021F4200 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r1, #0xa0 + ldr r1, [r1] + add r5, r0, #0 + cmp r1, #1 + bne _021F4216 + add r1, r4, #0 + mov r2, #2 + add r1, #0x6c + strb r2, [r1] +_021F4216: + add r1, r4, #0 + add r1, #0x6c + ldrb r1, [r1] + cmp r1, #0 + beq _021F422A + cmp r1, #1 + beq _021F425E + cmp r1, #2 + beq _021F42EA + b _021F4302 +_021F422A: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #0 + beq _021F423A + mov r0, #0 + b _021F4302 +_021F423A: + add r0, r4, #0 + add r0, #0xa8 + add r1, r4, #0 + ldr r0, [r0] + add r1, #0x4c + bl MOD05_021F3FE0 + add r1, r4, #0 + add r1, #0x9c + add r0, r4, #0 + add r2, r4, #0 + ldr r1, [r1] + add r0, #0x4c + add r2, #0x98 + bl MOD05_021F4094 + mov r0, #1 + b _021F4302 +_021F425E: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + ldr r0, [r0] + ldr r1, [r1] + bl MOD05_021F4184 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F4194 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41A8 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41BC + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41D0 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41E0 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0xa8 + add r1, #0x9c + add r2, r4, #0 + ldr r0, [r0] + ldr r1, [r1] + add r2, #0x4c + bl MOD05_021F41F0 + mov r0, #1 + b _021F4302 +_021F42EA: + add r0, r4, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r1, #0 + str r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} +_021F4302: + cmp r0, #1 + bne _021F4326 + add r0, r4, #0 + add r0, #0x6c + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x6c + strb r1, [r0] + add r0, r4, #0 + add r0, #0x6c + ldrb r0, [r0] + cmp r0, #2 + bne _021F4326 + add r4, #0x9c + ldr r0, [r4] + mov r1, #1 + str r1, [r0, #0x1c] +_021F4326: + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F4328 +MOD05_021F4328: ; 0x021F4328 + push {r3, lr} + mov r0, #4 + mov r1, #0x20 + bl FUN_02016998 + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0x14] + str r1, [r0, #4] + str r1, [r0] + str r1, [r0, #8] + str r1, [r0, #0xc] + str r1, [r0, #0x18] + pop {r3, pc} + + thumb_func_start MOD05_021F4344 +MOD05_021F4344: ; 0x021F4344 + push {r0, r1, r2, r3} + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #4 + mov r1, #0x1c + add r4, r2, #0 + bl FUN_020169D8 + add r6, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F3FE0 + add r0, r6, #0 + add r1, r4, #0 + add r2, sp, #0x1c + bl MOD05_021F4094 + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F4184 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F4194 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41A8 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41BC + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41D0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41E0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD05_021F41F0 + add r0, r6, #0 + bl FUN_02016A18 + mov r0, #1 + str r0, [r4, #0x1c] + pop {r4, r5, r6} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4, 0 + + thumb_func_start MOD05_021F43C0 +MOD05_021F43C0: ; 0x021F43C0 + push {r3, lr} + cmp r0, #0 + beq _021F43CA + bl FUN_02016A18 +_021F43CA: + pop {r3, pc} + + thumb_func_start MOD05_021F43CC +MOD05_021F43CC: ; 0x021F43CC + cmp r0, #0 + beq _021F43E2 + mov r1, #0 + str r1, [r0, #0x1c] + str r1, [r0, #0x10] + str r1, [r0, #0x14] + str r1, [r0, #4] + str r1, [r0] + str r1, [r0, #8] + str r1, [r0, #0xc] + str r1, [r0, #0x18] +_021F43E2: + bx lr + + thumb_func_start MOD05_021F43E4 +MOD05_021F43E4: ; 0x021F43E4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #4 + mov r1, #0xb4 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_020169D8 + add r1, r0, #0 + add r2, r1, #0 + mov r0, #0 + add r2, #0x6c + strb r0, [r2] + add r2, r1, #0 + add r2, #0xa8 + str r5, [r2] + add r2, r1, #0 + add r2, #0xac + str r4, [r2] + add r2, r1, #0 + add r2, #0x9c + str r6, [r2] + add r2, r1, #0 + add r2, #0xa4 + str r7, [r2] + add r2, r1, #0 + add r2, #0xa0 + str r0, [r2] + str r0, [r1, #0x68] + str r0, [r1, #0x48] + ldr r0, [sp, #0x18] + ldr r2, [r0] + add r0, r1, #0 + add r0, #0x98 + str r2, [r0] + add r0, r1, #0 + ldr r2, [sp, #0x1c] + add r0, #0xb0 + str r2, [r0] + ldr r0, _021F4440 ; =MOD05_021F4200 + mov r2, #1 + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_021F4440: .word MOD05_021F4200 + + thumb_func_start MOD05_021F4444 +MOD05_021F4444: ; 0x021F4444 + push {r3, lr} + bl FUN_0201B6C8 + mov r1, #1 + add r0, #0xa0 + str r1, [r0] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4454 +MOD05_021F4454: ; 0x021F4454 + mov r1, #0 + str r1, [r0, #0x1c] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F445C +MOD05_021F445C: ; 0x021F445C + push {r4, r5} + ldr r3, [r2, #0x14] + cmp r3, #0 + bne _021F446A + mov r0, #0 + pop {r4, r5} + bx lr +_021F446A: + ldr r5, [r2] + ldr r3, [r2, #8] + ldr r4, [r2, #4] + ldr r2, [r2, #0xc] + add r3, r5, r3 + add r2, r4, r2 + sub r3, r3, #1 + sub r2, r2, #1 + cmp r5, r0 + bgt _021F4490 + cmp r0, r3 + bgt _021F4490 + cmp r4, r1 + bgt _021F4490 + cmp r1, r2 + bgt _021F4490 + mov r0, #1 + pop {r4, r5} + bx lr +_021F4490: + mov r0, #0 + pop {r4, r5} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F4498 +MOD05_021F4498: ; 0x021F4498 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #8 + bl FUN_02016998 + mov r1, #0x18 + add r4, r0, #0 + add r0, r6, #0 + mul r1, r5 + bl FUN_02016998 + str r0, [r4, #4] + mov r6, #0 + str r5, [r4] + cmp r5, #0 + bls _021F44D4 + add r0, r6, #0 + mov r1, #0x18 +_021F44C0: + add r2, r6, #0 + ldr r3, [r4, #4] + mul r2, r1 + add r2, r3, r2 + str r0, [r2, #0x14] + add r2, r6, #1 + lsl r2, r2, #0x18 + lsr r6, r2, #0x18 + cmp r6, r5 + blo _021F44C0 +_021F44D4: + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F44D8 +MOD05_021F44D8: ; 0x021F44D8 + push {r4, r5} + ldr r5, [sp, #0x10] + mov r4, #0x18 + mul r4, r0 + ldr r0, [r5, #4] + str r1, [r0, r4] + ldr r0, [r5, #4] + ldr r1, [sp, #8] + add r0, r0, r4 + str r2, [r0, #4] + ldr r0, [r5, #4] + add r0, r0, r4 + str r3, [r0, #8] + ldr r0, [r5, #4] + add r0, r0, r4 + str r1, [r0, #0xc] + ldr r0, [r5, #4] + ldr r1, [sp, #0xc] + add r0, r0, r4 + str r1, [r0, #0x10] + ldr r0, [r5, #4] + mov r1, #1 + add r0, r0, r4 + str r1, [r0, #0x14] + pop {r4, r5} + bx lr + + thumb_func_start MOD05_021F450C +MOD05_021F450C: ; 0x021F450C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4520 +MOD05_021F4520: ; 0x021F4520 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + str r3, [sp] + cmp r3, #0 + bne _021F4532 + bl ErrorHandling +_021F4532: + ldr r0, [r5] + mov r4, #0 + cmp r0, #0 + ble _021F4562 +_021F453A: + mov r3, #0x18 + ldr r2, [r5, #4] + mul r3, r4 + add r0, r6, #0 + add r1, r7, #0 + add r2, r2, r3 + bl MOD05_021F445C + cmp r0, #0 + beq _021F4556 + ldr r0, [sp] + strb r4, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F4556: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [r5] + cmp r4, r0 + blt _021F453A +_021F4562: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4568 +MOD05_021F4568: ; 0x021F4568 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r5, r0 + blt _021F4578 + bl ErrorHandling +_021F4578: + mov r0, #0x18 + add r6, r5, #0 + mul r6, r0 + ldr r0, [r4, #4] + add r0, r0, r6 + ldr r0, [r0, #0x14] + cmp r0, #0 + bne _021F458C + bl ErrorHandling +_021F458C: + ldr r0, [r4, #4] + add r0, r0, r6 + ldr r0, [r0, #0x10] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F4594 +MOD05_021F4594: ; 0x021F4594 + push {r4, r5, r6, lr} + add r6, r2, #0 + add r5, r0, #0 + ldr r0, [r6] + add r4, r1, #0 + cmp r5, r0 + blt _021F45A6 + bl ErrorHandling +_021F45A6: + mov r0, #0x18 + ldr r1, [r6, #4] + mul r0, r5 + add r0, r1, r0 + str r4, [r0, #0x10] + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F45B4 +MOD05_021F45B4: ; 0x021F45B4 + push {r4, lr} + mov r1, #0x1c + bl FUN_02016998 + add r4, r0, #0 + bl MOD05_021F4650 + add r0, r4, #0 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F45C8 +MOD05_021F45C8: ; 0x021F45C8 + push {r4, lr} + add r4, r0, #0 + beq _021F45E4 + ldr r1, [r4] + cmp r1, #1 + bne _021F45D8 + bl MOD05_021F4608 +_021F45D8: + add r0, r4, #0 + bl MOD05_021F4650 + add r0, r4, #0 + bl FUN_02016A18 +_021F45E4: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F45E8 +MOD05_021F45E8: ; 0x021F45E8 + push {r4, lr} + add r4, r0, #0 + ldr r0, _021F4604 ; =MOD05_021F4688 + add r1, r4, #0 + bl FUN_02015F34 + cmp r0, #1 + beq _021F45FC + bl ErrorHandling +_021F45FC: + mov r0, #1 + str r0, [r4] + pop {r4, pc} + nop +_021F4604: .word MOD05_021F4688 + + thumb_func_start MOD05_021F4608 +MOD05_021F4608: ; 0x021F4608 + push {r4, lr} + add r4, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F34 + cmp r0, #1 + beq _021F461C + bl ErrorHandling +_021F461C: + mov r0, #0 + str r0, [r4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4624 +MOD05_021F4624: ; 0x021F4624 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r2, #0 + bl MOD05_021F46A8 + add r4, r0, #0 + bne _021F4636 + bl ErrorHandling +_021F4636: + cmp r4, #0 + beq _021F4642 + str r6, [r4, #4] + str r5, [r4, #8] + mov r0, #1 + str r0, [r4] +_021F4642: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4648 +MOD05_021F4648: ; 0x021F4648 + ldr r3, _021F464C ; =MOD05_021F4678 + bx r3 + .balign 4, 0 +_021F464C: .word MOD05_021F4678 + + thumb_func_start MOD05_021F4650 +MOD05_021F4650: ; 0x021F4650 + push {r3, r4, r5, lr} + add r3, r0, #0 + mov r2, #0x1c + mov r1, #0 +_021F4658: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _021F4658 + mov r4, #0 + str r4, [r0] + add r5, r0, #4 +_021F4666: + add r0, r5, #0 + bl MOD05_021F4678 + add r4, r4, #1 + add r5, #0xc + cmp r4, #2 + blt _021F4666 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4678 +MOD05_021F4678: ; 0x021F4678 + mov r2, #0 + ldr r1, _021F4684 ; =MOD05_021F46A4 + str r2, [r0] + str r1, [r0, #8] + str r2, [r0, #4] + bx lr + .balign 4, 0 +_021F4684: .word MOD05_021F46A4 + + thumb_func_start MOD05_021F4688 +MOD05_021F4688: ; 0x021F4688 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #4 +_021F4690: + ldr r1, [r5, #8] + ldr r2, [r5, #0xc] + add r0, r4, #0 + blx r2 + add r6, r6, #1 + add r5, #0xc + add r4, #0xc + cmp r6, #2 + blt _021F4690 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F46A4 +MOD05_021F46A4: ; 0x021F46A4 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F46A8 +MOD05_021F46A8: ; 0x021F46A8 + mov r2, #0 + add r3, r0, #0 +_021F46AC: + ldr r1, [r3, #4] + cmp r1, #0 + bne _021F46BC + add r1, r0, #4 + mov r0, #0xc + mul r0, r2 + add r0, r1, r0 + bx lr +_021F46BC: + add r2, r2, #1 + add r3, #0xc + cmp r2, #2 + blt _021F46AC + mov r0, #0 + bx lr + + thumb_func_start MOD05_021F46C8 +MOD05_021F46C8: ; 0x021F46C8 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0xca + lsl r1, r1, #2 + add r6, r0, #0 + bl FUN_02016998 + mov r2, #0xca + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r2, #0x63 + mov r0, #0 + add r1, r4, #0 + lsl r2, r2, #2 + str r0, [r4] + add r0, r6, #0 + add r1, #0xc + add r2, r4, r2 + bl FUN_02012944 + mov r1, #0xc3 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #4 + str r5, [r4, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F4704 +MOD05_021F4704: ; 0x021F4704 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #1 + bne _021F4712 + bl MOD05_021F491C +_021F4712: + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02012974 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD05_021F4724 +MOD05_021F4724: ; 0x021F4724 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F4732 + bl ErrorHandling +_021F4732: + mov r0, #0x31 + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, _021F47A4 ; =MOD05_021F48CC + add r2, r4, #0 + bl MOD05_021F4624 + mov r2, #0xc5 + lsl r2, r2, #2 + str r0, [r4, r2] + ldr r0, _021F47A8 ; =MOD05_021F47B4 + add r1, r4, #0 + add r2, #0xec + bl FUN_0200CA44 + mov r2, #0xc7 + lsl r2, r2, #2 + str r0, [r4, r2] + ldr r0, _021F47AC ; =MOD05_021F48BC + add r1, r4, #0 + add r2, #0xe4 + bl FUN_0200CA60 + mov r2, #0x32 + lsl r2, r2, #4 + str r0, [r4, r2] + ldr r0, _021F47B0 ; =MOD05_021F48F0 + add r1, r4, #0 + add r2, #0xe0 + bl FUN_0200CA60 + mov r1, #0xc9 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r2, #6 + add r0, #0xc + mov r1, #0 + lsl r2, r2, #6 + bl Call_FillMemWithValue + mov r2, #0x63 + lsl r2, r2, #2 + add r0, r4, r2 + mov r1, #0 + sub r2, #0xc + bl Call_FillMemWithValue + mov r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + mov r0, #0x61 + lsl r0, r0, #4 + bl FUN_020054C8 + pop {r4, pc} + .balign 4, 0 +_021F47A4: .word MOD05_021F48CC +_021F47A8: .word MOD05_021F47B4 +_021F47AC: .word MOD05_021F48BC +_021F47B0: .word MOD05_021F48F0 + + thumb_func_start MOD05_021F47B4 +MOD05_021F47B4: ; 0x021F47B4 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #8] + cmp r0, #3 + bhi _021F483C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021F47CA: ; jump table + .short _021F47D2 - _021F47CA - 2 ; case 0 + .short _021F47DE - _021F47CA - 2 ; case 1 + .short _021F480A - _021F47CA - 2 ; case 2 + .short _021F4830 - _021F47CA - 2 ; case 3 +_021F47D2: + mov r0, #3 + str r0, [r4, #4] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, pc} +_021F47DE: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02012988 + ldr r1, [r4, #4] + mov r2, #3 + sub r1, r2, r1 + bl MOD05_021F4878 + ldr r0, [r4, #4] + cmp r0, #0 + bgt _021F483C + mov r0, #3 + str r0, [r4, #4] + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, pc} +_021F480A: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02012988 + ldr r1, [r4, #4] + mov r2, #3 + bl MOD05_021F4878 + ldr r0, [r4, #4] + cmp r0, #0 + bgt _021F483C + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r4, pc} +_021F4830: + add r0, r4, #0 + bl MOD05_021F491C + mov r0, #0 + bl G3X_SetHOffset +_021F483C: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4840 +MOD05_021F4840: ; 0x021F4840 + push {r4, lr} + ldr r1, _021F4870 ; =0x04000006 + ldrh r4, [r1] + mov r1, #0xc3 + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl FUN_0201299C + cmp r4, #0xc0 + bge _021F486E + add r3, r4, #1 + cmp r3, #0xc0 + blt _021F485C + sub r3, #0xc0 +_021F485C: + ldr r1, _021F4874 ; =0x04000004 + ldrh r2, [r1] + mov r1, #2 + tst r1, r2 + beq _021F486E + lsl r1, r3, #1 + ldrh r0, [r0, r1] + bl G3X_SetHOffset +_021F486E: + pop {r4, pc} + .balign 4, 0 +_021F4870: .word 0x04000006 +_021F4874: .word 0x04000004 + + thumb_func_start MOD05_021F4878 +MOD05_021F4878: ; 0x021F4878 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + lsl r0, r1, #1 + add r0, r1, r0 + add r1, r2, #0 + mov r4, #1 + bl _s32_div_f + neg r1, r0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + lsl r0, r0, #0x10 + mov r6, #0 + str r1, [sp] + lsr r7, r0, #0x10 +_021F4896: + add r0, r6, #0 + mov r1, #0xa + bl _s32_div_f + cmp r1, #0 + bne _021F48A6 + mov r0, #1 + eor r4, r0 +_021F48A6: + cmp r4, #0 + beq _021F48AE + strh r7, [r5] + b _021F48B2 +_021F48AE: + ldr r0, [sp] + strh r0, [r5] +_021F48B2: + add r6, r6, #1 + add r5, r5, #2 + cmp r6, #0xc0 + blt _021F4896 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F48BC +MOD05_021F48BC: ; 0x021F48BC + mov r2, #0xc6 + ldr r3, _021F48C8 ; =0x020C7A04 + mov r0, #0 + lsl r2, r2, #2 + str r0, [r1, r2] + bx r3 + .balign 4, 0 +_021F48C8: .word 0x020C7A04 + + thumb_func_start MOD05_021F48CC +MOD05_021F48CC: ; 0x021F48CC + ldr r3, _021F48D4 ; =MOD05_021F48D8 + add r0, r1, #0 + bx r3 + nop +_021F48D4: .word MOD05_021F48D8 + + thumb_func_start MOD05_021F48D8 +MOD05_021F48D8: ; 0x021F48D8 + push {r3, lr} + ldr r1, [r0] + cmp r1, #1 + bne _021F48EE + mov r1, #0xc6 + lsl r1, r1, #2 + ldr r1, [r0, r1] + cmp r1, #1 + bne _021F48EE + bl MOD05_021F4840 +_021F48EE: + pop {r3, pc} + + thumb_func_start MOD05_021F48F0 +MOD05_021F48F0: ; 0x021F48F0 + ldr r3, _021F48F8 ; =MOD05_021F48FC + add r0, r1, #0 + bx r3 + nop +_021F48F8: .word MOD05_021F48FC + + thumb_func_start MOD05_021F48FC +MOD05_021F48FC: ; 0x021F48FC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #1 + bne _021F4918 + mov r0, #0xc3 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_020129B4 + mov r0, #0xc6 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] +_021F4918: + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F491C +MOD05_021F491C: ; 0x021F491C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xc5 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD05_021F4648 + mov r0, #0xc5 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, #8 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r0, #0xc7 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r0, #0x32 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r0, #0xc9 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + str r1, [r4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4968 +MOD05_021F4968: ; 0x021F4968 + ldr r2, [r1, #0x14] + ldr r3, _021F4974 ; =0x02016B45 + add r1, r1, r2 + sub r1, r1, r0 + bx r3 + nop +_021F4974: .word 0x02016B45 + + thumb_func_start MOD05_021F4978 +MOD05_021F4978: ; 0x021F4978 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x23 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #6 + bl FUN_02016998 + add r4, r0, #0 + mov r0, #4 + mov r1, #0x10 + bl FUN_020169D8 + ldr r1, _021F49A8 ; =0x000008B8 + mov r2, #0 + str r0, [r4, r1] + ldr r0, [r4, r1] + str r5, [r0] + ldr r0, [r4, r1] + str r6, [r0, #4] + ldr r0, [r4, r1] + str r2, [r0, #0xc] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F49A8: .word 0x000008B8 + + thumb_func_start MOD05_021F49AC +MOD05_021F49AC: ; 0x021F49AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x110 + add r5, r0, #0 + ldr r0, _021F4B9C ; =0x000008B8 + mov r1, #0x2a + ldr r7, [r5, r0] + sub r0, #8 + ldr r2, [r7] + add r0, r5, r0 + bl LoadFromNARC + mov r1, #0x8b + lsl r1, r1, #4 + ldrh r1, [r5, r1] + mov r0, #0x2b + mov r2, #4 + bl LoadFromNarc_2 + ldr r1, _021F4BA0 ; =0x000008BC + str r0, [r5, r1] + ldr r0, [r5, r1] + ldrh r1, [r0] + ldr r0, _021F4BA4 ; =0x00000226 + strh r1, [r7, #8] + cmp r1, r0 + blo _021F49E4 + bl ErrorHandling +_021F49E4: + ldr r1, _021F4BA8 ; =0x000008A4 + mov r0, #0 + str r0, [r5, r1] + add r1, #0xe + ldrh r1, [r5, r1] + mov r0, #0x2c + mov r2, #4 + bl LoadFromNarc_2 + ldr r1, _021F4BAC ; =0x0000089C + mov r2, #4 + str r0, [r5, r1] + add r1, #0x14 + ldrh r1, [r5, r1] + mov r0, #0x47 + bl LoadFromNarc_2 + mov r1, #0x8a + lsl r1, r1, #4 + str r0, [r5, r1] + sub r0, r1, #4 + ldr r0, [r5, r0] + bl FUN_020BC0FC + ldr r1, _021F4BA8 ; =0x000008A4 + str r0, [r5, r1] + ldrh r0, [r7, #8] + cmp r0, #0 + beq _021F4A2C + sub r0, r1, #4 + ldr r0, [r5, r0] + bl FUN_020BC0FC + ldr r1, _021F4BB0 ; =0x000008A8 + str r0, [r5, r1] + b _021F4A32 +_021F4A2C: + mov r2, #0 + add r0, r1, #4 + str r2, [r5, r0] +_021F4A32: + ldr r0, _021F4BA8 ; =0x000008A4 + ldr r0, [r5, r0] + bl FUN_0201B3C4 + cmp r0, #0 + bne _021F4A42 + bl ErrorHandling +_021F4A42: + ldr r1, _021F4BAC ; =0x0000089C + ldr r0, [r5, r1] + add r1, #8 + ldr r1, [r5, r1] + bl MOD05_021F4968 + ldr r0, _021F4BB0 ; =0x000008A8 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021F4A70 + bl FUN_0201B3C4 + cmp r0, #0 + bne _021F4A62 + bl ErrorHandling +_021F4A62: + mov r1, #0x8a + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, #8 + ldr r1, [r5, r1] + bl MOD05_021F4968 +_021F4A70: + mov r2, #0 + ldr r0, _021F4BA4 ; =0x00000226 + add r3, r5, #0 + add r1, r2, #0 +_021F4A78: + add r2, r2, #1 + str r1, [r3, #4] + add r3, r3, #4 + cmp r2, r0 + blt _021F4A78 + ldr r0, _021F4BB4 ; =0x000008AC + str r1, [r5, r0] + mov r0, #0x28 + mov r1, #4 + bl FUN_02006670 + str r0, [sp, #0xc] + ldr r0, [r7, #4] + bl MOD05_021DA220 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldrh r0, [r7, #8] + cmp r0, #0 + ble _021F4B10 + ldr r0, [sp, #8] + str r0, [sp] +_021F4AA6: + ldr r0, _021F4BA0 ; =0x000008BC + ldr r1, [r5, r0] + ldr r0, [sp] + add r0, r1, r0 + ldrh r6, [r0, #2] + lsl r0, r6, #2 + add r4, r5, r0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F4ABE + bl ErrorHandling +_021F4ABE: + ldr r0, [sp, #0xc] + add r1, r6, #0 + mov r2, #4 + bl FUN_02006704 + str r0, [r4, #4] + ldr r0, [sp, #4] + cmp r6, r0 + bge _021F4AEC + ldr r0, [r4, #4] + bl FUN_020BC13C + add r1, r0, #0 + ldrh r2, [r1, #0xe] + ldr r3, [r7, #4] + add r0, r6, #0 + add r2, r1, r2 + ldr r2, [r2, #0xc] + add r1, r1, r2 + ldr r2, _021F4BB0 ; =0x000008A8 + ldr r2, [r5, r2] + bl MOD05_021D9CEC +_021F4AEC: + ldr r1, _021F4BB0 ; =0x000008A8 + ldr r0, [r4, #4] + ldr r1, [r5, r1] + bl FUN_0201B3A8 + cmp r0, #0 + bne _021F4AFE + bl ErrorHandling +_021F4AFE: + ldr r0, [sp] + ldrh r1, [r7, #8] + add r0, r0, #2 + str r0, [sp] + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, r1 + blt _021F4AA6 +_021F4B10: + ldr r0, [r5, #4] + cmp r0, #0 + bne _021F4B46 + ldr r0, [sp, #0xc] + mov r1, #0 + mov r2, #4 + bl FUN_02006704 + str r0, [r5, #4] + bl FUN_020BC0FC + add r4, r0, #0 + beq _021F4B46 + bl FUN_0201B3C4 + cmp r0, #0 + bne _021F4B36 + bl ErrorHandling +_021F4B36: + ldr r0, [r5, #4] + add r1, r4, #0 + bl FUN_0201B3A8 + cmp r0, #0 + bne _021F4B46 + bl ErrorHandling +_021F4B46: + ldr r0, [sp, #0xc] + bl FUN_020066F4 + ldr r2, _021F4BB8 ; =0x04000060 + ldr r0, _021F4BBC ; =0xFFFFCFFF + ldrh r1, [r2] + and r1, r0 + mov r0, #0x20 + orr r0, r1 + strh r0, [r2] + ldr r0, _021F4BC0 ; =0x000008B6 + ldrh r0, [r5, r0] + cmp r0, #0 + bne _021F4B6A + ldr r0, _021F4BC4 ; =0x021FC624 + bl G3X_SetEdgeColorTable + b _021F4B70 +_021F4B6A: + ldr r0, _021F4BC8 ; =0x021FC634 + bl G3X_SetEdgeColorTable +_021F4B70: + bl MOD05_021DB900 + ldr r1, _021F4BB4 ; =0x000008AC + str r0, [r5, r1] + ldr r1, _021F4BCC ; =0x021FD648 + add r0, sp, #0x10 + bl sprintf + ldr r1, _021F4BB4 ; =0x000008AC + add r0, sp, #0x10 + ldr r1, [r5, r1] + bl MOD05_021DB918 + ldr r0, _021F4B9C ; =0x000008B8 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, _021F4B9C ; =0x000008B8 + mov r1, #0 + str r1, [r5, r0] + add sp, #0x110 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 +_021F4B9C: .word 0x000008B8 +_021F4BA0: .word 0x000008BC +_021F4BA4: .word 0x00000226 +_021F4BA8: .word 0x000008A4 +_021F4BAC: .word 0x0000089C +_021F4BB0: .word 0x000008A8 +_021F4BB4: .word 0x000008AC +_021F4BB8: .word 0x04000060 +_021F4BBC: .word 0xFFFFCFFF +_021F4BC0: .word 0x000008B6 +_021F4BC4: .word 0x021FC624 +_021F4BC8: .word 0x021FC634 +_021F4BCC: .word 0x021FD648 + + thumb_func_start MOD05_021F4BD0 +MOD05_021F4BD0: ; 0x021F4BD0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bne _021F4BDC + bl ErrorHandling +_021F4BDC: + add r2, r4, #4 + lsl r1, r5, #2 + ldr r0, [r2, r1] + cmp r0, #0 + bne _021F4BF4 + ldr r0, [r4, #4] + cmp r0, #0 + bne _021F4BF0 + bl ErrorHandling +_021F4BF0: + add r0, r4, #4 + pop {r3, r4, r5, pc} +_021F4BF4: + add r0, r2, r1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F4BF8 +MOD05_021F4BF8: ; 0x021F4BF8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r1, [r5] + ldr r0, _021F4C64 ; =0x000008AC + ldr r0, [r1, r0] + cmp r0, #0 + beq _021F4C0A + bl MOD05_021DB9BC +_021F4C0A: + mov r6, #0 + ldr r7, _021F4C68 ; =0x00000226 + add r4, r6, #0 +_021F4C10: + ldr r0, [r5] + add r0, r0, r4 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021F4C1E + bl FUN_02016A18 +_021F4C1E: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, r7 + blt _021F4C10 + ldr r1, [r5] + ldr r0, _021F4C6C ; =0x000008BC + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, [r5] + ldr r0, _021F4C70 ; =0x0000089C + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, [r5] + ldr r0, _021F4C70 ; =0x0000089C + mov r2, #0 + str r2, [r1, r0] + ldr r1, [r5] + add r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02016A18 + mov r0, #0x8a + ldr r1, [r5] + mov r2, #0 + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r0, [r5] + bl FUN_02016A18 + mov r0, #0 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + nop +_021F4C64: .word 0x000008AC +_021F4C68: .word 0x00000226 +_021F4C6C: .word 0x000008BC +_021F4C70: .word 0x0000089C + + thumb_func_start MOD05_021F4C74 +MOD05_021F4C74: ; 0x021F4C74 + push {r4, lr} + add r4, r0, #0 + bne _021F4C7E + bl ErrorHandling +_021F4C7E: + ldr r0, _021F4C84 ; =0x000008A4 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4, 0 +_021F4C84: .word 0x000008A4 + + thumb_func_start MOD05_021F4C88 +MOD05_021F4C88: ; 0x021F4C88 + push {r4, lr} + add r4, r0, #0 + bne _021F4C92 + bl ErrorHandling +_021F4C92: + ldr r0, _021F4C98 ; =0x000008A8 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4, 0 +_021F4C98: .word 0x000008A8 + + thumb_func_start MOD05_021F4C9C +MOD05_021F4C9C: ; 0x021F4C9C + ldr r1, _021F4CA4 ; =0x000008AC + ldr r0, [r0, r1] + bx lr + nop +_021F4CA4: .word 0x000008AC + + thumb_func_start MOD05_021F4CA8 +MOD05_021F4CA8: ; 0x021F4CA8 + ldr r1, _021F4CB8 ; =0x000008B6 + ldrh r0, [r0, r1] + cmp r0, #0 + beq _021F4CB4 + mov r0, #1 + bx lr +_021F4CB4: + mov r0, #0 + bx lr + .balign 4, 0 +_021F4CB8: .word 0x000008B6 + + thumb_func_start MOD05_021F4CBC +MOD05_021F4CBC: ; 0x021F4CBC + ldr r1, _021F4CD0 ; =0x000008B6 + ldrh r0, [r0, r1] + cmp r0, #0 + bne _021F4CC8 + mov r0, #1 + b _021F4CCA +_021F4CC8: + mov r0, #0 +_021F4CCA: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .balign 4, 0 +_021F4CD0: .word 0x000008B6 + + thumb_func_start MOD05_021F4CD4 +MOD05_021F4CD4: ; 0x021F4CD4 + ldr r2, _021F4CE0 ; =0x000008BC + ldr r2, [r0, r2] + lsl r0, r1, #1 + ldrh r0, [r2, r0] + bx lr + nop +_021F4CE0: .word 0x000008BC + + thumb_func_start MOD05_021F4CE4 +MOD05_021F4CE4: ; 0x021F4CE4 + lsl r1, r1, #2 + add r0, r0, r1 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021F4CF2 + mov r0, #1 + bx lr +_021F4CF2: + mov r0, #0 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F4CF8 +MOD05_021F4CF8: ; 0x021F4CF8 + push {r4, lr} + mov r0, #4 + mov r1, #0xfc + bl FUN_02016998 + mov r4, #0 + add r2, r4, #0 +_021F4D06: + lsl r1, r4, #3 + add r3, r0, r1 + strb r2, [r0, r1] + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + str r2, [r3, #4] + cmp r4, #0x15 + blo _021F4D06 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4D1C +MOD05_021F4D1C: ; 0x021F4D1C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016A18 + mov r0, #0 + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD05_021F4D2C +MOD05_021F4D2C: ; 0x021F4D2C + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r5, r0, #0 + ldr r0, _021F4D7C ; =0x000007D8 + str r0, [r1] + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + cmp r0, #0 + bne _021F4D76 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, sp, #0xc + mov r2, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, r6, #0 + sub r3, r2, #1 + bl FUN_0204A840 + add r0, r5, #0 + mov r1, #0x1a + add r2, sp, #0xc + mov r3, #0 + bl FUN_0204A8C4 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} +_021F4D76: + mov r0, #0 + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + .balign 4, 0 +_021F4D7C: .word 0x000007D8 + + thumb_func_start MOD05_021F4D80 +MOD05_021F4D80: ; 0x021F4D80 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r5, r0, #0 + cmp r5, #0x15 + bne _021F4D96 + bl ErrorHandling +_021F4D96: + ldr r0, [r4, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0202A9C8 + add r4, r0, #0 + ldr r0, [r4] + bl MOD05_021F5120 + cmp r0, #0 + beq _021F4DB8 + mov r0, #3 + pop {r3, r4, r5, pc} +_021F4DB8: + ldr r0, [r4] + cmp r0, #0 + beq _021F4DC2 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F4DC2: + mov r0, #1 + pop {r3, r4, r5, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4DC8 +MOD05_021F4DC8: ; 0x021F4DC8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r5, r0, #0 + cmp r5, #0x15 + bne _021F4DDE + bl ErrorHandling +_021F4DDE: + ldr r0, [r6, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + str r0, [sp] + ldr r1, [sp] + add r0, r5, #0 + bl FUN_0202A9C8 + add r4, r0, #0 + mov r0, #0x5a + lsl r0, r0, #4 + str r0, [r4] + ldr r0, [r6, #0xc] + bl FUN_020238F4 + bl FUN_020239BC + add r1, r5, #0 + bl MOD05_021F5138 + add r7, r0, #0 + ldr r0, [sp] + bl FUN_0202A9C0 + cmp r5, r0 + bne _021F4E42 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0x64 + blo _021F4E2E + bl ErrorHandling +_021F4E2E: + cmp r6, #0x5a + bhs _021F4E42 + add r0, r4, #4 + bl MOD05_021F4F44 + ldrb r0, [r4, #6] + bl MOD05_021F4FAC + strb r0, [r4, #7] + pop {r3, r4, r5, r6, r7, pc} +_021F4E42: + add r0, r7, #0 + add r1, r4, #6 + bl MOD05_021F4EE4 + ldrb r0, [r4, #6] + cmp r0, #0 + beq _021F4E60 + add r0, r4, #4 + bl MOD05_021F4F44 + ldrb r0, [r4, #6] + bl MOD05_021F4F98 + strb r0, [r4, #5] + b _021F4E68 +_021F4E60: + mov r0, #0 + strb r0, [r4, #5] + strb r0, [r4, #4] + str r0, [r4] +_021F4E68: + ldrb r0, [r4, #6] + bl MOD05_021F4FAC + strb r0, [r4, #7] + ldr r1, [sp] + add r0, r5, #0 + bl FUN_0202A9C4 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F4E7C +MOD05_021F4E7C: ; 0x021F4E7C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r4, r0, #0 + cmp r4, #0x15 + bne _021F4E94 + bl ErrorHandling +_021F4E94: + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + lsl r4, r4, #3 + add r0, r0, r4 + ldr r0, [r0, #4] + cmp r0, #0 + beq _021F4EE0 + ldr r0, [r5, #0x24] + bl MOD05_021EF618 + ldr r1, [r5, #0x24] + add r2, sp, #0 + bl MOD05_021EF604 + ldr r0, [sp] + mov r1, #0x1a + bl MOD05_021E7ED8 + add r6, r0, #0 + bl MOD05_021E7EC8 + add r1, r0, #0 + cmp r6, #0 + beq _021F4ED6 + add r3, r5, #0 + add r3, #0xa4 + ldr r3, [r3] + ldr r0, [r5, #0x4c] + ldrb r3, [r3, r4] + mov r2, #0x1a + bl MOD05_021D9FB4 +_021F4ED6: + add r5, #0xa4 + ldr r0, [r5] + mov r1, #0 + add r0, r0, r4 + str r1, [r0, #4] +_021F4EE0: + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021F4EE4 +MOD05_021F4EE4: ; 0x021F4EE4 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _021F4F02 + bl ErrorHandling +_021F4F02: + cmp r6, #0 + beq _021F4F2A + cmp r4, #1 + bge _021F4F10 + mov r0, #3 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F10: + cmp r4, #0xa + bge _021F4F1A + mov r0, #0 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F1A: + cmp r4, #0x1e + bge _021F4F24 + mov r0, #1 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F24: + mov r0, #2 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F2A: + cmp r4, #0xa + bge _021F4F34 + mov r0, #0 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F34: + cmp r4, #0x1e + bge _021F4F3E + mov r0, #2 + strb r0, [r5] + pop {r4, r5, r6, pc} +_021F4F3E: + mov r0, #1 + strb r0, [r5] + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F4F44 +MOD05_021F4F44: ; 0x021F4F44 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _021F4F60 + bl ErrorHandling +_021F4F60: + cmp r5, #5 + bge _021F4F6A + mov r0, #5 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F6A: + cmp r5, #0xa + bge _021F4F74 + mov r0, #4 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F74: + cmp r5, #0x14 + bge _021F4F7E + mov r0, #3 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F7E: + cmp r5, #0x28 + bge _021F4F88 + mov r0, #2 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F88: + cmp r5, #0x3c + bge _021F4F92 + mov r0, #1 + strb r0, [r4] + pop {r3, r4, r5, pc} +_021F4F92: + mov r0, #0 + strb r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F4F98 +MOD05_021F4F98: ; 0x021F4F98 + cmp r0, #3 + bne _021F4FA0 + mov r0, #2 + bx lr +_021F4FA0: + cmp r0, #2 + bne _021F4FA8 + mov r0, #1 + bx lr +_021F4FA8: + mov r0, #0 + bx lr + + thumb_func_start MOD05_021F4FAC +MOD05_021F4FAC: ; 0x021F4FAC + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _021F4FC8 + bl ErrorHandling +_021F4FC8: + cmp r4, #3 + bne _021F4FE8 + cmp r5, #5 + bge _021F4FD4 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F4FD4: + cmp r5, #6 + bge _021F4FDC + mov r0, #1 + pop {r3, r4, r5, pc} +_021F4FDC: + cmp r5, #7 + bge _021F4FE4 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F4FE4: + mov r0, #3 + pop {r3, r4, r5, pc} +_021F4FE8: + cmp r4, #2 + bne _021F5008 + cmp r5, #0x4b + bge _021F4FF4 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F4FF4: + cmp r5, #0x5f + bge _021F4FFC + mov r0, #1 + pop {r3, r4, r5, pc} +_021F4FFC: + cmp r5, #0x60 + bge _021F5004 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5004: + mov r0, #3 + pop {r3, r4, r5, pc} +_021F5008: + cmp r4, #1 + bne _021F5028 + cmp r5, #0x13 + bge _021F5014 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F5014: + cmp r5, #0x4f + bge _021F501C + mov r0, #1 + pop {r3, r4, r5, pc} +_021F501C: + cmp r5, #0x63 + bge _021F5024 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5024: + mov r0, #3 + pop {r3, r4, r5, pc} +_021F5028: + cmp r5, #1 + bge _021F5030 + mov r0, #2 + pop {r3, r4, r5, pc} +_021F5030: + cmp r5, #0x13 + bge _021F5038 + mov r0, #1 + pop {r3, r4, r5, pc} +_021F5038: + cmp r5, #0x63 + bge _021F5040 + mov r0, #0 + pop {r3, r4, r5, pc} +_021F5040: + mov r0, #3 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F5044 +MOD05_021F5044: ; 0x021F5044 + mov r2, #1 + cmp r0, #3 + bne _021F5050 + mov r0, #2 + strb r0, [r1] + b _021F5064 +_021F5050: + cmp r0, #2 + bne _021F5058 + strb r2, [r1] + b _021F5064 +_021F5058: + cmp r0, #1 + bne _021F5062 + mov r0, #0 + strb r0, [r1] + b _021F5064 +_021F5062: + mov r2, #0 +_021F5064: + add r0, r2, #0 + bx lr + + thumb_func_start MOD05_021F5068 +MOD05_021F5068: ; 0x021F5068 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5, #0x28] + add r7, r1, #0 + add r1, r2, #0 + bl FUN_02034554 + bl MOD05_021F50FC + add r4, r0, #0 + cmp r4, #0x15 + beq _021F50F8 + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0202A9C8 + add r6, r0, #0 + ldr r0, [r6] + bl MOD05_021F5120 + cmp r0, #0 + beq _021F50F8 + ldrb r0, [r6, #7] + add r1, sp, #4 + bl MOD05_021F5044 + add r6, r0, #0 + beq _021F50F8 + add r0, r7, #0 + mov r1, #0x1a + bl MOD05_021E7ED8 + cmp r0, #0 + beq _021F50F8 + bl MOD05_021E7EC8 + add r3, r5, #0 + add r7, r0, #0 + add r3, #0xa4 + ldr r3, [r3] + lsl r4, r4, #3 + ldrb r3, [r3, r4] + ldr r0, [r5, #0x4c] + add r1, r7, #0 + mov r2, #0x1a + bl MOD05_021D9FB4 + add r1, sp, #4 + add r2, r5, #0 + add r2, #0xa4 + ldrb r0, [r1] + ldr r2, [r2] + add r3, r7, #0 + strb r0, [r2, r4] + add r0, r5, #0 + add r0, #0xa4 + ldr r0, [r0] + mov r2, #1 + add r0, r0, r4 + str r6, [r0, #4] + ldr r0, [r5, #0x4c] + str r0, [sp] + ldrb r1, [r1] + mov r0, #0x1a + bl MOD05_021D9DC0 +_021F50F8: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F50FC +MOD05_021F50FC: ; 0x021F50FC + ldr r2, _021F511C ; =0x021FC650 + mov r3, #0 +_021F5100: + lsl r1, r3, #2 + ldr r1, [r2, r1] + cmp r0, r1 + bne _021F510C + add r0, r3, #0 + bx lr +_021F510C: + add r1, r3, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0x15 + blo _021F5100 + add r0, r3, #0 + bx lr + nop +_021F511C: .word 0x021FC650 + + thumb_func_start MOD05_021F5120 +MOD05_021F5120: ; 0x021F5120 + cmp r0, #0 + ble _021F512E + ldr r1, _021F5134 ; =0x00000438 + cmp r0, r1 + bgt _021F512E + mov r0, #1 + bx lr +_021F512E: + mov r0, #0 + bx lr + nop +_021F5134: .word 0x00000438 + + thumb_func_start MOD05_021F5138 +MOD05_021F5138: ; 0x021F5138 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + lsr r2, r0, #0x18 + add r1, sp, #0 + strb r2, [r1] + lsr r2, r0, #0x10 + strb r2, [r1, #1] + lsr r2, r0, #8 + strb r2, [r1, #2] + strb r0, [r1, #3] + ldrb r0, [r1] + mov r1, #0x15 + bl _s32_div_f + add r0, sp, #0 + strb r1, [r0] + ldrb r0, [r0, #1] + mov r1, #0x15 + bl _s32_div_f + add r0, sp, #0 + strb r1, [r0, #1] + ldrb r0, [r0, #2] + mov r1, #0x15 + bl _s32_div_f + add r0, sp, #0 + strb r1, [r0, #2] + ldrb r0, [r0, #3] + mov r1, #0x15 + bl _s32_div_f + add r0, sp, #0 + strb r1, [r0, #3] + mov r0, #0 + mov r3, #1 + add r1, sp, #0 + add r2, r0, #0 +_021F5184: + add r5, r2, #0 + cmp r3, #0 + bls _021F51A8 +_021F518A: + ldrb r7, [r1, r5] + ldrb r6, [r1, r3] + cmp r7, r6 + bne _021F519E + add r6, r6, #1 + strb r6, [r1, r3] + ldrb r6, [r1, r3] + cmp r6, #0x15 + blo _021F519E + strb r0, [r1, r3] +_021F519E: + add r5, r5, #1 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + cmp r5, r3 + blo _021F518A +_021F51A8: + add r3, r3, #1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + cmp r3, #4 + blo _021F5184 + mov r2, #0 + add r1, sp, #0 +_021F51B6: + ldrb r0, [r1, r2] + cmp r4, r0 + bne _021F51C0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021F51C0: + add r0, r2, #1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r2, #4 + blo _021F51B6 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F51D0 +MOD05_021F51D0: ; 0x021F51D0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r5, r0, #0 + cmp r5, #0x15 + bne _021F51E6 + bl ErrorHandling +_021F51E6: + ldr r0, [r4, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0202A9C8 + add r4, r0, #0 + ldrb r1, [r4, #5] + mov r0, #0x6a + lsl r2, r1, #2 + ldr r1, _021F5218 ; =0x021FC644 + ldr r1, [r1, r2] + mov r2, #4 + bl FUN_02006528 + ldrb r1, [r4, #4] + lsl r1, r1, #2 + ldr r4, [r0, r1] + bl FUN_02016A18 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .balign 4, 0 +_021F5218: .word 0x021FC644 + + thumb_func_start MOD05_021F521C +MOD05_021F521C: ; 0x021F521C + push {r3, lr} + add r3, r1, #0 + bmi _021F522A + add r1, r2, #0 + add r2, r3, #0 + bl MOD05_021F5068 +_021F522A: + pop {r3, pc} + + thumb_func_start MOD05_021F522C +MOD05_021F522C: ; 0x021F522C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl MOD05_021F50FC + add r4, r0, #0 + cmp r4, #0x15 + bne _021F5242 + bl ErrorHandling +_021F5242: + add r0, r5, #0 + add r0, #0xa4 + ldr r1, [r0] + lsl r0, r4, #3 + mov r2, #0 + add r0, r1, r0 + str r2, [r0, #4] + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9BC + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0202A9C8 + mov r1, #0 + str r1, [r0] + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F5268 +MOD05_021F5268: ; 0x021F5268 + push {r3, r4, r5, lr} + mov r5, #0 + add r4, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + str r5, [sp] + add r2, r5, #0 + bl FUN_02006C98 + str r0, [r4] + bl FUN_020BC13C + str r0, [r4, #4] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #8] + ldr r0, [r4] + bl FUN_020BC0FC + str r0, [r4, #0xc] + cmp r0, #0 + beq _021F52A4 + mov r2, #1 + ldr r0, _021F52A8 ; =MOD05_021F52AC + add r1, r4, #0 + lsl r2, r2, #0xa + bl FUN_0200CA98 +_021F52A4: + pop {r3, r4, r5, pc} + nop +_021F52A8: .word MOD05_021F52AC + + thumb_func_start MOD05_021F52AC +MOD05_021F52AC: ; 0x021F52AC + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0201B3C4 + ldr r0, [r4] + ldr r1, [r4, #0xc] + bl FUN_0201B3A8 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F52C8 +MOD05_021F52C8: ; 0x021F52C8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _021F52F8 + add r1, sp, #4 + add r2, sp, #0 + bl FUN_020B7CF0 + ldr r1, _021F5314 ; =0x021064BC + ldr r0, [sp, #4] + ldr r1, [r1] + blx r1 + ldr r1, _021F5314 ; =0x021064BC + ldr r0, [sp] + ldr r1, [r1] + blx r1 + ldr r0, [r4, #0xc] + bl FUN_020B7C58 + ldr r1, _021F5318 ; =0x021064C4 + ldr r1, [r1] + blx r1 +_021F52F8: + ldr r0, [r4] + cmp r0, #0 + beq _021F5302 + bl FUN_02016A18 +_021F5302: + mov r1, #0x10 + mov r0, #0 +_021F5306: + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + bne _021F5306 + add sp, #8 + pop {r4, pc} + nop +_021F5314: .word 0x021064BC +_021F5318: .word 0x021064C4 + + thumb_func_start MOD05_021F531C +MOD05_021F531C: ; 0x021F531C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + mov r6, #0 + add r1, r3, #0 + add r5, r0, #0 + add r0, r2, #0 + ldr r3, [sp, #0x18] + add r2, r6, #0 + str r6, [sp] + bl FUN_02006C98 + add r2, r0, #0 + ldr r3, [sp, #0x1c] + add r0, r5, #0 + add r1, r4, #0 + bl MOD05_021F54EC + add r0, r6, #0 + str r0, [r5, #0x10] + add sp, #4 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD05_021F5348 +MOD05_021F5348: ; 0x021F5348 + push {r4, lr} + add r4, r0, #0 + bl MOD05_021F54EC + mov r0, #1 + str r0, [r4, #0x10] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5358 +MOD05_021F5358: ; 0x021F5358 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F5376 + add r0, r1, #0 + ldr r1, [r4, #8] + bl thunk_FUN_020ae84c + ldr r0, [r4, #0x10] + cmp r0, #0 + bne _021F5376 + ldr r0, [r4] + bl FUN_02016A18 +_021F5376: + mov r1, #0x14 + mov r0, #0 +_021F537A: + strb r0, [r4] + add r4, r4, #1 + sub r1, r1, #1 + bne _021F537A + pop {r4, pc} + + thumb_func_start MOD05_021F5384 +MOD05_021F5384: ; 0x021F5384 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + ldr r0, [r0, #8] + ldrh r0, [r0, #4] + lsl r2, r0, #0xc + cmp r1, #0 + ble _021F53A2 + ldr r0, [r4, #0xc] + add r0, r0, r1 + add r1, r2, #0 + bl _s32_div_f + str r1, [r4, #0xc] + b _021F53B4 +_021F53A2: + ldr r0, [r4, #0xc] + add r3, r4, #0 + add r3, #0xc + add r0, r0, r1 + str r0, [r4, #0xc] + bpl _021F53B4 + ldr r0, [r3] + add r0, r0, r2 + str r0, [r3] +_021F53B4: + ldr r1, [r4, #0xc] + ldr r0, [r4, #8] + str r1, [r0] + pop {r4, pc} + + thumb_func_start MOD05_021F53BC +MOD05_021F53BC: ; 0x021F53BC + push {r3, r4} + ldr r2, [r0, #8] + ldr r3, [r0, #0xc] + ldr r2, [r2, #8] + ldrh r2, [r2, #4] + lsl r4, r2, #0xc + mov r2, #0 + cmp r1, #0 + ble _021F53DE + add r1, r3, r1 + cmp r1, r4 + bge _021F53D8 + str r1, [r0, #0xc] + b _021F53EA +_021F53D8: + str r4, [r0, #0xc] + mov r2, #1 + b _021F53EA +_021F53DE: + add r1, r3, r1 + bmi _021F53E6 + str r1, [r0, #0xc] + b _021F53EA +_021F53E6: + str r2, [r0, #0xc] + mov r2, #1 +_021F53EA: + ldr r1, [r0, #0xc] + ldr r0, [r0, #8] + str r1, [r0] + add r0, r2, #0 + pop {r3, r4} + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F53F8 +MOD05_021F53F8: ; 0x021F53F8 + str r1, [r0, #0xc] + ldr r0, [r0, #8] + str r1, [r0] + bx lr + + thumb_func_start MOD05_021F5400 +MOD05_021F5400: ; 0x021F5400 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0 + mov r2, #0x78 + add r4, r0, #0 + bl Call_FillMemWithValue + ldr r1, [r5, #8] + add r0, r4, #0 + bl FUN_020B80B4 + mov r0, #1 + str r0, [r4, #0x6c] + lsl r0, r0, #0xc + str r0, [r4, #0x60] + str r0, [r4, #0x64] + str r0, [r4, #0x68] + pop {r3, r4, r5, pc} + + thumb_func_start MOD05_021F5424 +MOD05_021F5424: ; 0x021F5424 + ldr r3, _021F542C ; =0x020B7EFC + ldr r1, [r1, #8] + bx r3 + nop +_021F542C: .word 0x020B7EFC + + thumb_func_start MOD05_021F5430 +MOD05_021F5430: ; 0x021F5430 + push {r4, lr} + sub sp, #0x48 + add r4, r0, #0 + ldr r0, [r4, #0x6c] + cmp r0, #0 + beq _021F54C4 + add r0, sp, #0x24 + bl MTX_Identity33_ + add r0, r4, #0 + add r0, #0x70 + ldrh r0, [r0] + ldr r3, _021F54C8 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0 + bl MTX_RotX33_ + add r1, sp, #0x24 + add r0, sp, #0 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x74 + ldrh r0, [r0] + ldr r3, _021F54C8 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0 + bl MTX_RotZ33_ + add r1, sp, #0x24 + add r0, sp, #0 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x72 + ldrh r0, [r0] + ldr r3, _021F54C8 ; =0x020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0 + bl MTX_RotY33_ + add r1, sp, #0x24 + add r0, sp, #0 + add r2, r1, #0 + bl MTX_Concat33 + add r1, r4, #0 + add r0, r4, #0 + add r4, #0x60 + add r1, #0x54 + add r2, sp, #0x24 + add r3, r4, #0 + bl FUN_0201B26C +_021F54C4: + add sp, #0x48 + pop {r4, pc} + .balign 4, 0 +_021F54C8: .word 0x020FFA38 + + thumb_func_start MOD05_021F54CC +MOD05_021F54CC: ; 0x021F54CC + str r1, [r0, #0x6c] + bx lr + + thumb_func_start MOD05_021F54D0 +MOD05_021F54D0: ; 0x021F54D0 + str r1, [r0, #0x54] + str r2, [r0, #0x58] + str r3, [r0, #0x5c] + bx lr + + thumb_func_start MOD05_021F54D8 +MOD05_021F54D8: ; 0x021F54D8 + str r1, [r0, #0x60] + str r2, [r0, #0x64] + str r3, [r0, #0x68] + bx lr + + thumb_func_start MOD05_021F54E0 +MOD05_021F54E0: ; 0x021F54E0 + lsl r2, r2, #1 + add r0, r0, r2 + add r0, #0x70 + strh r1, [r0] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F54EC +MOD05_021F54EC: ; 0x021F54EC + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + str r2, [r5] + add r0, r2, #0 + mov r1, #0 + add r6, r3, #0 + bl FUN_020BC4C8 + str r0, [r5, #4] + ldr r1, [r5, #4] + ldr r2, [r4, #8] + add r0, r6, #0 + bl FUN_020BB8D0 + str r0, [r5, #8] + ldr r1, [r5, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + bl FUN_020B8110 + pop {r4, r5, r6, pc} + + thumb_func_start MOD05_021F5518 +MOD05_021F5518: ; 0x021F5518 + push {r3, r4, lr} + sub sp, #4 + ldr r0, [r1, #8] + add r4, r2, #0 + bl MOD05_021F5608 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xa + mov r3, #0x13 + bl MOD05_021F5660 + mov r3, #0 + str r3, [r4, #0x14] + mov r0, #0x10 + str r0, [sp] + ldr r0, _021F555C ; =0x04000050 + mov r1, #4 + mov r2, #0x29 + bl G2x_SetBlendAlpha_ + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, _021F5560 ; =0x00000648 + bl FUN_020054C8 + add sp, #4 + pop {r3, r4, pc} + .balign 4, 0 +_021F555C: .word 0x04000050 +_021F5560: .word 0x00000648 + + thumb_func_start MOD05_021F5564 +MOD05_021F5564: ; 0x021F5564 + push {r3, r4, lr} + sub sp, #4 + ldr r0, [r1, #8] + add r4, r2, #0 + bl MOD05_021F5608 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + mov r3, #0xf + bl MOD05_021F5660 + mov r0, #0 + str r0, [r4, #0x14] + mov r0, #6 + str r0, [sp] + ldr r0, _021F5594 ; =0x04000050 + mov r1, #4 + mov r2, #0x21 + mov r3, #0xa + bl G2x_SetBlendAlpha_ + add sp, #4 + pop {r3, r4, pc} + .balign 4, 0 +_021F5594: .word 0x04000050 + + thumb_func_start MOD05_021F5598 +MOD05_021F5598: ; 0x021F5598 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F559C +MOD05_021F559C: ; 0x021F559C + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x14] + cmp r0, #1 + beq _021F55C2 + add r0, r4, #0 + bl MOD05_021F5670 + cmp r0, #0 + beq _021F55B4 + mov r0, #1 + str r0, [r4, #0x14] +_021F55B4: + ldr r1, [r4] + mov r0, #0x10 + sub r0, r0, r1 + lsl r0, r0, #8 + orr r1, r0 + ldr r0, _021F55C4 ; =0x04000052 + strh r1, [r0] +_021F55C2: + pop {r4, pc} + .balign 4, 0 +_021F55C4: .word 0x04000052 + + thumb_func_start MOD05_021F55C8 +MOD05_021F55C8: ; 0x021F55C8 + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F55CC +MOD05_021F55CC: ; 0x021F55CC + ldr r0, [r0, #4] + ldr r3, _021F55D8 ; =MOD05_021D8024 + ldr r0, [r0, #4] + ldr r1, _021F55DC ; =0x021FC6C0 + bx r3 + nop +_021F55D8: .word MOD05_021D8024 +_021F55DC: .word 0x021FC6C0 + + thumb_func_start MOD05_021F55E0 +MOD05_021F55E0: ; 0x021F55E0 + ldr r3, _021F55E4 ; =MOD05_021D80A4 + bx r3 + .balign 4, 0 +_021F55E4: .word MOD05_021D80A4 + + thumb_func_start MOD05_021F55E8 +MOD05_021F55E8: ; 0x021F55E8 + push {r3, lr} + bl MOD05_021D80E4 + ldr r0, [r0, #0x14] + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F55F4 +MOD05_021F55F4: ; 0x021F55F4 + ldr r0, [r0, #4] + ldr r3, _021F5600 ; =MOD05_021D8024 + ldr r0, [r0, #4] + ldr r1, _021F5604 ; =0x021FC6A8 + bx r3 + nop +_021F5600: .word MOD05_021D8024 +_021F5604: .word 0x021FC6A8 + + thumb_func_start MOD05_021F5608 +MOD05_021F5608: ; 0x021F5608 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r1, _021F5658 ; =0x00005D5F + add r5, r0, #0 + add r0, sp, #4 + strh r1, [r0] + mov r0, #2 + add r1, sp, #4 + add r2, r0, #0 + mov r3, #0xc2 + bl FUN_02017FB4 + mov r0, #4 + mov r1, #0x20 + bl FUN_02016998 + mov r1, #0x11 + mov r2, #0x20 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #1 + str r0, [sp] + add r0, r5, #0 + mov r1, #2 + add r2, r4, #0 + mov r3, #0x20 + bl FUN_02017E14 + add r0, r4, #0 + bl FUN_02016A18 + ldr r2, _021F565C ; =0x00006001 + add r0, r5, #0 + mov r1, #2 + bl FUN_02018768 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_021F5658: .word 0x00005D5F +_021F565C: .word 0x00006001 + + thumb_func_start MOD05_021F5660 +MOD05_021F5660: ; 0x021F5660 + 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_021F5670 +MOD05_021F5670: ; 0x021F5670 + 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 _021F5696 + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} +_021F5696: + str r1, [r4, #0xc] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD05_021F569C +MOD05_021F569C: ; 0x021F569C + ldr r3, _021F56A4 ; =0x02017FE5 + mov r0, #2 + mov r1, #0 + bx r3 + .balign 4, 0 +_021F56A4: .word 0x02017FE5 + + thumb_func_start MOD05_021F56A8 +MOD05_021F56A8: ; 0x021F56A8 + ldr r3, _021F56B0 ; =0x02017FE5 + mov r0, #2 + ldr r1, _021F56B4 ; =0x00007FFF + bx r3 + .balign 4, 0 +_021F56B0: .word 0x02017FE5 +_021F56B4: .word 0x00007FFF + + thumb_func_start MOD05_021F56B8 +MOD05_021F56B8: ; 0x021F56B8 + push {r4, lr} + sub sp, #8 + ldr r1, _021F5710 ; =0x00007FFF + add r4, r0, #0 + add r0, sp, #4 + strh r1, [r0] + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + ldr r1, _021F5714 ; =0x0400000C + mov r0, #3 + ldrh r2, [r1] + mov r3, #0xc4 + bic r2, r0 + mov r0, #3 + orr r0, r2 + strh r0, [r1] + mov r0, #2 + add r1, sp, #4 + add r2, r0, #0 + bl FUN_02017FB4 + mov r1, #2 + str r1, [sp] + ldr r0, [r4, #8] + add r2, r1, #0 + mov r3, #1 + bl FUN_02017F48 + ldr r0, [r4, #8] + ldr r2, _021F5718 ; =0x00006002 + mov r1, #2 + bl FUN_02018768 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD05_021F569C + add sp, #8 + pop {r4, pc} + .balign 4, 0 +_021F5710: .word 0x00007FFF +_021F5714: .word 0x0400000C +_021F5718: .word 0x00006002 + + thumb_func_start MOD05_021F571C +MOD05_021F571C: ; 0x021F571C + push {r4, lr} + sub sp, #8 + ldr r1, _021F5774 ; =0x00007FFF + add r4, r0, #0 + add r0, sp, #4 + strh r1, [r0] + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + ldr r1, _021F5778 ; =0x0400000E + mov r0, #3 + ldrh r2, [r1] + mov r3, #0xc4 + bic r2, r0 + mov r0, #3 + orr r2, r0 + strh r2, [r1] + add r1, sp, #4 + mov r2, #2 + bl FUN_02017FB4 + mov r2, #2 + str r2, [sp] + ldr r0, [r4, #8] + mov r1, #3 + mov r3, #1 + bl FUN_02017F48 + ldr r0, [r4, #8] + ldr r2, _021F577C ; =0x00006002 + mov r1, #3 + bl FUN_02018768 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + add r0, r4, #0 + bl MOD05_021F569C + add sp, #8 + pop {r4, pc} + nop +_021F5774: .word 0x00007FFF +_021F5778: .word 0x0400000E +_021F577C: .word 0x00006002 + + thumb_func_start MOD05_021F5780 +MOD05_021F5780: ; 0x021F5780 + push {r3, lr} + ldr r0, [r0, #4] + ldr r0, [r0, #0xc] + bl MOD05_021DC1D0 + ldr r3, _021F57A4 ; =0x021FC6A4 + mov r2, #0 +_021F578E: + ldr r1, [r3] + cmp r0, r1 + bne _021F5798 + mov r0, #1 + pop {r3, pc} +_021F5798: + add r2, r2, #1 + add r3, r3, #4 + cmp r2, #1 + blt _021F578E + mov r0, #0 + pop {r3, pc} + .balign 4, 0 +_021F57A4: .word 0x021FC6A4 + + thumb_func_start MOD05_021F57A8 +MOD05_021F57A8: ; 0x021F57A8 + push {r3, lr} + ldr r0, [r0, #4] + ldr r0, [r0, #0xc] + bl MOD05_021DC1D0 + ldr r3, _021F57CC ; =0x021FC6D8 + mov r2, #0 +_021F57B6: + ldr r1, [r3] + cmp r0, r1 + bne _021F57C0 + mov r0, #0 + pop {r3, pc} +_021F57C0: + add r2, r2, #1 + add r3, r3, #4 + cmp r2, #0x10 + blt _021F57B6 + mov r0, #1 + pop {r3, pc} + .balign 4, 0 +_021F57CC: .word 0x021FC6D8 + + thumb_func_start MOD05_021F57D0 +MOD05_021F57D0: ; 0x021F57D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021F57E2 + bl MOD05_021F55E0 + mov r0, #0 + str r0, [r4] +_021F57E2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F57EC +MOD05_021F57EC: ; 0x021F57EC + mov r0, #0xc + bx lr + + thumb_func_start MOD05_021F57F0 +MOD05_021F57F0: ; 0x021F57F0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrh r1, [r4, #8] + cmp r1, #9 + bls _021F580A + b _021F597C +_021F580A: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021F5816: ; jump table + .short _021F582A - _021F5816 - 2 ; case 0 + .short _021F5856 - _021F5816 - 2 ; case 1 + .short _021F5872 - _021F5816 - 2 ; case 2 + .short _021F5888 - _021F5816 - 2 ; case 3 + .short _021F58DA - _021F5816 - 2 ; case 4 + .short _021F58EE - _021F5816 - 2 ; case 5 + .short _021F5914 - _021F5816 - 2 ; case 6 + .short _021F5936 - _021F5816 - 2 ; case 7 + .short _021F5956 - _021F5816 - 2 ; case 8 + .short _021F5968 - _021F5816 - 2 ; case 9 +_021F582A: + add r0, r5, #0 + bl MOD05_021F57A8 + cmp r0, #1 + bne _021F584C + mov r0, #1 + strh r0, [r4, #8] + add r0, r5, #0 + bl MOD05_021F5780 + str r0, [r4, #4] + cmp r0, #0 + beq _021F587C + add r0, r5, #0 + bl MOD05_021F56A8 + b _021F5980 +_021F584C: + mov r0, #7 + strh r0, [r4, #8] + mov r0, #0x14 + strh r0, [r4, #0xa] + b _021F5980 +_021F5856: + add r0, r5, #0 + bl MOD05_021F55CC + str r0, [r4] + mov r0, #2 + mov r1, #0 + strh r0, [r4, #8] + bl FUN_020178BC + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + b _021F5980 +_021F5872: + ldr r0, [r4] + bl MOD05_021F55E8 + cmp r0, #0 + bne _021F587E +_021F587C: + b _021F5980 +_021F587E: + mov r0, #0x16 + strh r0, [r4, #0xa] + mov r0, #3 + strh r0, [r4, #8] + b _021F5980 +_021F5888: + mov r0, #0xa + ldrsh r0, [r4, r0] + sub r0, r0, #1 + strh r0, [r4, #0xa] + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl FUN_020347D8 + cmp r0, #0 + beq _021F58D4 + mov r0, #0xa + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _021F5980 + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0204A6E0 + add r1, r0, #0 + add r0, r5, #0 + bl FUN_0223CDB8 + cmp r0, #0 + beq _021F58CE + mov r0, #6 + strh r0, [r4, #8] + b _021F5980 +_021F58CE: + mov r0, #4 + strh r0, [r4, #8] + b _021F5980 +_021F58D4: + mov r0, #4 + strh r0, [r4, #8] + b _021F5980 +_021F58DA: + ldr r0, [r4] + bl MOD05_021F55E0 + add r0, r5, #0 + bl MOD05_021F55F4 + str r0, [r4] + mov r0, #5 + strh r0, [r4, #8] + b _021F5980 +_021F58EE: + ldr r0, [r4] + bl MOD05_021F55E8 + cmp r0, #0 + beq _021F5980 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + ldr r0, _021F5984 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + mov r0, #2 + mov r1, #3 + bl FUN_020178BC + mov r0, #8 + strh r0, [r4, #8] + b _021F5980 +_021F5914: + bl MOD05_021F57D0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F5924 + add r0, r5, #0 + bl MOD05_021F571C +_021F5924: + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0223BE70 + cmp r0, #0 + bne _021F5980 + bl ErrorHandling + b _021F5980 +_021F5936: + mov r0, #0xa + ldrsh r1, [r4, r0] + sub r1, r1, #1 + strh r1, [r4, #0xa] + ldrsh r0, [r4, r0] + cmp r0, #0 + bge _021F5980 + mov r2, #0 + ldr r1, _021F5988 ; =0x000007ED + add r0, r6, #0 + add r3, r2, #0 + bl FUN_02038CD8 + mov r0, #9 + strh r0, [r4, #8] + b _021F5980 +_021F5956: + mov r2, #0 + ldr r1, _021F598C ; =0x000007EC + add r0, r6, #0 + add r3, r2, #0 + bl FUN_02038CD8 + mov r0, #9 + strh r0, [r4, #8] + b _021F5980 +_021F5968: + bl MOD05_021F57D0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021F5978 + add r0, r5, #0 + bl MOD05_021F56B8 +_021F5978: + mov r0, #1 + pop {r4, r5, r6, pc} +_021F597C: + bl ErrorHandling +_021F5980: + mov r0, #0 + pop {r4, r5, r6, pc} + .balign 4, 0 +_021F5984: .word 0x04000050 +_021F5988: .word 0x000007ED +_021F598C: .word 0x000007EC + + thumb_func_start MOD05_021F5990 +MOD05_021F5990: ; 0x021F5990 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r2, #0 + lsl r2, r3, #3 + add r6, r5, r2 + add r6, #0x18 + str r2, [sp, #8] + add r2, r6, #0 + str r0, [sp] + add r7, r1, #0 + str r3, [sp, #4] + bl FUN_0201681C + cmp r0, #1 + beq _021F59B2 + bl ErrorHandling +_021F59B2: + sub r5, r6, r5 + add r0, r7, #0 + add r1, r5, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _021F59C4 + bl ErrorHandling +_021F59C4: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + ldr r0, [sp] + str r0, [r4] + ldr r0, [sp, #4] + str r7, [r4, #4] + str r0, [r4, #8] + ldr r0, [sp, #8] + str r6, [r4, #0xc] + str r0, [r4, #0x10] + add r0, r4, #0 + add r0, #0x18 + str r0, [r4, #0x14] + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F59EC +MOD05_021F59EC: ; 0x021F59EC + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r4, [r6, #8] + ldr r5, [r6, #0x14] + cmp r4, #0 + beq _021F5A0E +_021F59F8: + ldr r0, [r5] + cmp r0, #0 + beq _021F5A06 + ldr r1, [r5, #4] + add r0, r6, #0 + bl MOD05_021F5A74 +_021F5A06: + sub r4, r4, #1 + add r5, #8 + cmp r4, #0 + bne _021F59F8 +_021F5A0E: + ldr r4, [r6, #4] + add r0, r6, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_020168D0 + pop {r4, r5, r6, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5A20 +MOD05_021F5A20: ; 0x021F5A20 + ldr r3, _021F5A24 ; =MOD05_021F5B14 + bx r3 + .balign 4, 0 +_021F5A24: .word MOD05_021F5B14 + + thumb_func_start MOD05_021F5A28 +MOD05_021F5A28: ; 0x021F5A28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD05_021F5B5C + str r0, [sp] + cmp r0, #0 + bne _021F5A40 + bl ErrorHandling +_021F5A40: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD05_021F5B14 + add r5, r0, #0 + ldr r0, [sp] + add r1, r4, #0 + add r2, r5, #0 + bl MOD05_021F5B8C + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5A5C +MOD05_021F5A5C: ; 0x021F5A5C + push {r4, lr} + add r4, r1, #0 + bl MOD05_021F5B74 + cmp r0, #0 + beq _021F5A6C + bl MOD05_021F5B94 +_021F5A6C: + add r0, r4, #0 + bl MOD05_021F5B34 + pop {r4, pc} + + thumb_func_start MOD05_021F5A74 +MOD05_021F5A74: ; 0x021F5A74 + push {r4, lr} + bl MOD05_021F5B3C + add r4, r0, #0 + bne _021F5A82 + bl ErrorHandling +_021F5A82: + ldr r0, [r4] + bl MOD05_021F5B34 + add r0, r4, #0 + bl MOD05_021F5B94 + pop {r4, pc} + + thumb_func_start MOD05_021F5A90 +MOD05_021F5A90: ; 0x021F5A90 + push {r4, lr} + bl MOD05_021F5B3C + add r4, r0, #0 + bne _021F5A9E + bl ErrorHandling +_021F5A9E: + ldr r0, [r4] + pop {r4, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5AA4 +MOD05_021F5AA4: ; 0x021F5AA4 + push {r3, lr} + bl MOD05_021F5B3C + cmp r0, #0 + beq _021F5AB2 + mov r0, #1 + pop {r3, pc} +_021F5AB2: + mov r0, #0 + pop {r3, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5AB8 +MOD05_021F5AB8: ; 0x021F5AB8 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r0, #0 + add r7, r3, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020067D0 + add r1, r0, #0 + add r0, r6, #0 + add r2, r7, #0 + bl MOD05_021F5A20 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02006774 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD05_021F5AE4 +MOD05_021F5AE4: ; 0x021F5AE4 + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r5, r0, #0 + add r7, r3, #0 + add r6, r1, #0 + add r0, r4, #0 + add r1, r7, #0 + bl FUN_020067D0 + add r2, r0, #0 + ldr r3, [sp, #0x18] + add r0, r5, #0 + add r1, r6, #0 + bl MOD05_021F5A28 + add r5, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl FUN_02006774 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .balign 4, 0 + + thumb_func_start MOD05_021F5B14 +MOD05_021F5B14: ; 0x021F5B14 + push {r4, lr} + cmp r2, #0 + ldr r0, [r0, #4] + bne _021F5B22 + bl FUN_02016998 + b _021F5B26 +_021F5B22: + bl FUN_020169D8 +_021F5B26: + add r4, r0, #0 + cmp r4, #0 + bne _021F5B30 + bl ErrorHandling +_021F5B30: + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD05_021F5B34 +MOD05_021F5B34: ; 0x021F5B34 + ldr r3, _021F5B38 ; =0x02016A19 + bx r3 + .balign 4, 0 +_021F5B38: .word 0x02016A19 + + thumb_func_start MOD05_021F5B3C +MOD05_021F5B3C: ; 0x021F5B3C + ldr r3, [r0, #8] + ldr r0, [r0, #0x14] + cmp r3, #0 + beq _021F5B56 +_021F5B44: + ldr r2, [r0] + cmp r2, #0 + beq _021F5B50 + ldr r2, [r0, #4] + cmp r2, r1 + beq _021F5B58 +_021F5B50: + add r0, #8 + sub r3, r3, #1 + bne _021F5B44 +_021F5B56: + mov r0, #0 +_021F5B58: + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F5B5C +MOD05_021F5B5C: ; 0x021F5B5C + ldr r2, [r0, #8] + ldr r0, [r0, #0x14] + cmp r2, #0 + beq _021F5B70 +_021F5B64: + ldr r1, [r0] + cmp r1, #0 + beq _021F5B72 + add r0, #8 + sub r2, r2, #1 + bne _021F5B64 +_021F5B70: + mov r0, #0 +_021F5B72: + bx lr + + thumb_func_start MOD05_021F5B74 +MOD05_021F5B74: ; 0x021F5B74 + ldr r3, [r0, #8] + ldr r0, [r0, #0x14] + cmp r3, #0 + beq _021F5B88 +_021F5B7C: + ldr r2, [r0] + cmp r2, r1 + beq _021F5B8A + add r0, #8 + sub r3, r3, #1 + bne _021F5B7C +_021F5B88: + mov r0, #0 +_021F5B8A: + bx lr + + thumb_func_start MOD05_021F5B8C +MOD05_021F5B8C: ; 0x021F5B8C + str r2, [r0] + str r1, [r0, #4] + bx lr + .balign 4, 0 + + thumb_func_start MOD05_021F5B94 +MOD05_021F5B94: ; 0x021F5B94 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + bx lr + + thumb_func_start MOD05_021F5B9C +MOD05_021F5B9C: ; 0x021F5B9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_02050DF0 + add r7, r0, #0 + beq _021F5C40 + bl FUN_0223E2C4 + add r6, r0, #0 + bl FUN_0223E2DC + lsl r1, r6, #0x15 + lsl r0, r0, #0x15 + mov r4, #0 + str r1, [sp, #0xc] + str r0, [sp, #8] +_021F5BC0: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_020267C4 + add r6, r0, #0 + bl FUN_0204CA80 + str r0, [sp, #0x10] + add r0, r6, #0 + bl FUN_0204CA90 + str r0, [sp, #0x14] + cmp r6, #0 + beq _021F5C3A + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02026810 + str r0, [sp, #0x18] + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02026840 + mov r2, #1 + ldr r1, [sp, #0x18] + lsl r2, r2, #0xc + str r2, [sp, #0x20] + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + ldr r2, [sp, #0xc] + str r1, [sp, #0x1c] + add r1, r1, r2 + ldr r2, [sp, #8] + str r0, [sp, #0x24] + add r0, r0, r2 + ldr r2, [sp, #0x10] + str r1, [sp, #0x1c] + lsl r2, r2, #0xf + add r1, r1, r2 + str r1, [sp, #0x1c] + ldr r1, [sp, #0x14] + str r0, [sp, #0x24] + lsl r1, r1, #0xf + add r0, r0, r1 + str r0, [sp, #0x24] + ldr r0, [r5, #0x2c] + add r1, r6, #0 + bl MOD05_021F4CD4 + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x4c] + add r3, sp, #0x1c + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + bl MOD05_021E7FBC +_021F5C3A: + add r4, r4, #1 + cmp r4, #0x20 + blt _021F5BC0 +_021F5C40: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + + .section .data + ; 0x021F5C44 + .incbin "baserom.nds", 0x163B64, 0x7A3C + + .section .bss + ; 0x021FD680 + .space 0x3C020 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s new file mode 100644 index 00000000..cccb02ee --- /dev/null +++ b/arm9/modules/06/asm/module_06.s @@ -0,0 +1,298 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD06_022396A0 +MOD06_022396A0: ; 0x022396A0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r5, #4 + add r4, r2, #0 + add r6, r3, #0 + str r1, [r5] + bl FUN_0223972C + mov r0, #0 + str r0, [r5, #0x38] + str r4, [r5, #0x30] + str r6, [r5, #0x34] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start FUN_022396BC +FUN_022396BC: ; 0x022396BC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x38] + cmp r1, #5 + bhi _02239712 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022396D2: ; jump table + .short _022396DE - _022396D2 - 2 ; case 0 + .short _022396EA - _022396D2 - 2 ; case 1 + .short _02239712 - _022396D2 - 2 ; case 2 + .short _022396FC - _022396D2 - 2 ; case 3 + .short _02239708 - _022396D2 - 2 ; case 4 + .short _02239712 - _022396D2 - 2 ; case 5 +_022396DE: + bl FUN_022397F4 + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] + pop {r4, pc} +_022396EA: + ldr r0, [r4, #0x30] + ldr r1, [r4, #0x34] + bl FUN_0223987C + str r0, [r4, #0x2c] + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] + pop {r4, pc} +_022396FC: + bl FUN_022398A8 + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] + pop {r4, pc} +_02239708: + bl FUN_02239808 + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] +_02239712: + pop {r4, pc} + + thumb_func_start FUN_02239714 +FUN_02239714: ; 0x02239714 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + cmp r0, #2 + beq _02239722 + bl ErrorHandling +_02239722: + mov r0, #3 + str r0, [r4, #0x38] + pop {r4, pc} + + thumb_func_start FUN_02239728 +FUN_02239728: ; 0x02239728 + ldr r0, [r0, #0x38] + bx lr + + thumb_func_start FUN_0223972C +FUN_0223972C: ; 0x0223972C + push {r4, lr} + add r4, r0, #0 + bl GX_GetBankForBGExtPltt_2 + str r0, [r4] + bl GX_GetBankForBGExtPltt + str r0, [r4, #4] + bl GX_GetBankForSubBGExtPltt_2 + str r0, [r4, #8] + bl GX_GetBankForSubBGExtPltt + str r0, [r4, #0xc] + bl GX_GetBankForOBJ + str r0, [r4, #0x10] + bl GX_GetBankForOBJExtPltt + str r0, [r4, #0x14] + bl GX_GetBankForSubOBJ + str r0, [r4, #0x18] + bl GX_GetBankForSubOBJExtPltt + str r0, [r4, #0x1c] + bl FUN_020C5D8C + str r0, [r4, #0x20] + bl GX_GetBankForTexPltt + str r0, [r4, #0x24] + pop {r4, pc} + .align 2, 0 + + thumb_func_start FUN_02239770 +FUN_02239770: ; 0x02239770 + push {r4, lr} + sub sp, #0x28 + ldr r4, _0223978C ; =0x0224F1F4 + add r3, sp, #0 + mov r2, #5 +_0223977A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223977A + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_0223978C: .word 0x0224F1F4 + + thumb_func_start FUN_02239790 +FUN_02239790: ; 0x02239790 + push {r4, r5, lr} + sub sp, #0x2c + ldr r5, _022397EC ; =0x0224F180 + add r3, sp, #0x1c + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r5, _022397F0 ; =0x0224F1D8 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + add sp, #0x2c + pop {r4, r5, pc} + nop +_022397EC: .word 0x0224F180 +_022397F0: .word 0x0224F1D8 + + thumb_func_start FUN_022397F4 +FUN_022397F4: ; 0x022397F4 + ldr r3, _02239800 ; =FUN_0200CA98 + mov r2, #1 + add r1, r0, #0 + ldr r0, _02239804 ; =FUN_0223981C + lsl r2, r2, #0xa + bx r3 + .align 2, 0 +_02239800: .word FUN_0200CA98 +_02239804: .word FUN_0223981C + + thumb_func_start FUN_02239808 +FUN_02239808: ; 0x02239808 + ldr r3, _02239814 ; =FUN_0200CA98 + mov r2, #1 + add r1, r0, #0 + ldr r0, _02239818 ; =FUN_02239840 + lsl r2, r2, #0xa + bx r3 + .align 2, 0 +_02239814: .word FUN_0200CA98 +_02239818: .word FUN_02239840 + + thumb_func_start FUN_0223981C +FUN_0223981C: ; 0x0223981C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl FUN_02239770 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_02239864 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_02239790 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start FUN_02239840 +FUN_02239840: ; 0x02239840 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #4 + bl FUN_0201E66C + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_02239864 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_0223986C + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start FUN_02239864 +FUN_02239864: ; 0x02239864 + ldr r3, _02239868 ; =FUN_021D7A28 + bx r3 + .align 2, 0 +_02239868: .word FUN_021D7A28 + 1 ; TODO: disassemble the module that defines this + + thumb_func_start FUN_0223986C +FUN_0223986C: ; 0x0223986C + push {r3, lr} + bl FUN_021D7A20 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + pop {r3, pc} + + thumb_func_start FUN_0223987C +FUN_0223987C: ; 0x0223987C + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + ldr r6, _022398A4 ; =0x0224F21C + add r3, r0, #0 + add r2, r1, #0 + add r5, sp, #0 + mov r4, #5 +_0223988A: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r4, r4, #1 + bne _0223988A + ldr r0, [r6] + str r0, [r5] + add r0, sp, #0 + str r3, [sp, #0x20] + str r2, [sp, #0x24] + bl FUN_021E8648 + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022398A4: .word 0x0224F21C + + thumb_func_start FUN_022398A8 +FUN_022398A8: ; 0x022398A8 + ldr r3, _022398B4 ; =FUN_0200CA98 + mov r2, #1 + add r1, r0, #0 + ldr r0, _022398B8 ; =0x022398BD + lsl r2, r2, #0xa + bx r3 + .align 2, 0 +_022398B4: .word FUN_0200CA98 +_022398B8: .word 0x022398BD + + .section .data + ; 0x022398BC + .incbin "baserom.nds", 0x16b81c, 0x18b64 + + .section .bss + ; 0x02252420 + .space 0x20 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index c8a8097a..ab1bb25b 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -501,6 +501,43 @@ FUN_02213B08 = 0x02213B08; FUN_02213D80 = 0x02213D80; FUN_02213DBC = 0x02213DBC; FUN_02213E24 = 0x02213E24; +FUN_021D7A20 = 0x021D7A20; +FUN_021D7A28 = 0x021D7A28; +FUN_021E8648 = 0x021E8648; +FUN_0223BA04 = 0x0223BA04; +FUN_0223BE70 = 0x0223BE70; +FUN_0223C08C = 0x0223C08C; +FUN_0223CDB8 = 0x0223CDB8; +FUN_0223D8F4 = 0x0223D8F4; +FUN_0223DC98 = 0x0223DC98; +FUN_0223DCB4 = 0x0223DCB4; +FUN_0223DCD0 = 0x0223DCD0; +FUN_0223E2C4 = 0x0223E2C4; +FUN_0223E2DC = 0x0223E2DC; +FUN_02242404 = 0x02242404; +FUN_022426AC = 0x022426AC; +FUN_02249B7C = 0x02249B7C; +FUN_0224A130 = 0x0224A130; +FUN_0224A6B8 = 0x0224A6B8; +FUN_0224A6FC = 0x0224A6FC; +FUN_0224A8D4 = 0x0224A8D4; +FUN_0224AA40 = 0x0224AA40; +FUN_0224ADF8 = 0x0224ADF8; +FUN_0224AEE8 = 0x0224AEE8; +FUN_0224AF68 = 0x0224AF68; +FUN_0224ED94 = 0x0224ED94; +FUN_0224EDA8 = 0x0224EDA8; +FUN_0224F0BC = 0x0224F0BC; +FUN_0224F0D0 = 0x0224F0D0; +FUN_02252440 = 0x02252440; +FUN_02252448 = 0x02252448; +FUN_022524BC = 0x022524BC; +FUN_022524D0 = 0x022524D0; +FUN_022524DC = 0x022524DC; +FUN_022524F4 = 0x022524F4; +FUN_02252504 = 0x02252504; +FUN_02254A68 = 0x02254A68; +FUN_02254AB8 = 0x02254AB8; // ??? SDK_MAIN_ARENA_LO = 0x0225FFA0; |